ENGINEERING PORTFOLIO

From the machine to the model.

Selected Work
21 projects · scroll

Project 01 · Applied AI · Local LLM

Cadence: structured intelligence from earnings calls.

A local-first AI tool that turns an unstructured earnings call into a structured, queryable dashboard in about a minute.

Premise: earnings calls are dense and slow to read at scale, and cloud AI raises privacy and cost questions for market-sensitive text.

A local large language model runs the transcript through schema-constrained decoding and feeds a Streamlit dashboard, entirely on-device. Built end to end in Python, so the transcript never leaves the machine and each run costs nothing.

StackPython · OllamaLocal LLMSchema-constrained output

Project 02 · Applied AI · ML Foundations

Machine Learning from Scratch: the math, by coding it.

Implementing core machine-learning algorithms from first principles, from the perceptron to neural networks and clustering.

Premise: calling a library is easy; understanding why it works means building the algorithm yourself.

An ECE421 sequence implementing a perceptron and linear regression, a neural network from scratch and then in PyTorch with a CNN, and k-means and a Gaussian mixture model, validated on real datasets.

StackPython · PyTorchNeural nets · CNNk-means · GMM

Project 03 · Applied AI · Knowledge-Based Agents

Wumpus World: reasoning under uncertainty.

A from-scratch simulator and a logic-driven agent that reasons from percepts to find the gold and survive.

Premise: an agent in a partly hidden world has to infer what it cannot see, turning local clues into safe moves.

I built the classic AI testbed in Python, a cave of pits and a Wumpus with full percepts, actions, and scoring, then a knowledge-tracking agent that infers hazards from breeze and stench cues and chooses its actions, benchmarked against a naive agent. About 800 lines, sole-authored.

StackPython · AIKnowledge-based agentSole author

Project 04 · Data · Machine Learning

Credit Default Risk Model: rank the risk, set the policy.

An end-to-end machine-learning model that predicts default probability and turns it into a lending decision.

Premise: a lender approves on a policy, not a probability, so the hard part is the cutoff and what it costs.

A gradient-boosting model on the German Credit data reaches about 0.80 AUC, checked against a logistic baseline, with calibration and a threshold that traces the approval-versus-risk trade-off. A responsible-AI layer then audits approval-rate fairness across protected groups with fairlearn (disparate impact, equalized odds) and shows a bias-mitigation trade-off with a model card. Built in Python, scikit-learn, and fairlearn.

StackPython · scikit-learnGradient boosting · CalibrationResponsible AI · fairlearn

Project 05 · Data · Quality & Anomaly Detection

Market Data Health Monitor: catch the bad feed first.

A Python tool that ingests a markets feed, runs data-correctness checks, and flags abnormal behavior before it reaches a model.

Premise: research and trading run on clean data, and the most expensive failures start as a quiet bad feed: a gap, a stale value, or a price that should never have printed.

It runs calendar, duplicate, validity, staleness, and freshness checks, then rolling z-score anomaly detection on returns and volume, and returns a per-feed verdict on whether to hold downstream models. A companion PySpark pipeline validates and models the feed into a star-schema DuckDB warehouse with per-feed data-quality SLAs. Built in Python, pandas, PySpark, and DuckDB.

StackPython · pandasPySpark · DuckDB · Star schemaAnomaly detection · SLAs

Project 06 · Data · Quantitative Finance

Has the Value Premium Decayed? A retrospective on HML.

A research note on the Fama-French value factor, asking how strong the premium has been across history and how much should carry into forward expectations.

Premise: treating an in-sample factor mean as a forecast is a classic error, and this note is built to expose that gap.

Using monthly Fama-French factors from the Ken French Data Library, it estimates the full-sample premium with Newey-West standard errors, tracks stability across subperiods and a 10-year rolling window, measures the value-winter drawdown directly, and closes on an honest forward read instead of a point forecast. Built in Python and statsmodels.

StackPython · statsmodelsNewey-West · RegimesFactor research

Project 07 · Robotics · Autonomous Systems

Autonomous Maze Rover: find your place, then move.

An Arduino rover that localizes itself in an unknown maze and delivers a block to a target zone, with CAD and control code I worked on.

Premise: a mobile robot has to know where it is before it can act, and the hard part is turning noisy sensor readings into a position and a plan.

A four-person MIE444 build. The rover turns its sensor readings into a front-right-back-left signature, matches that to a stored maze map, then runs a breadth-first search to the loading zone, where a servo gripper picks up and delivers the block. I worked on the mechanical CAD and the localization and obstacle-avoidance code.

StackArduino · C++CAD · SensorsLocalization · BFS

Project 08 · Mechatronics · Embedded Systems

Automated Chess Gantry: a digital move becomes motion.

A three-axis gantry that executes online chess moves by gripping and relocating pieces, including captures.

Premise: turning a digital move into precise physical motion means coordinating steppers, a gripper, and homing without ever losing position.

An MIE438 embedded-systems design. An Arduino on a CNC shield drives three NEMA 17 steppers and a servo gripper over a serial link, with limit-switch homing and acceleration-controlled motion in firmware. A design-and-firmware deliverable backed by a costed bill of materials.

StackArduino · AccelStepperSteppers · ServoEmbedded firmware

Project 09 · Mechatronics · Analog Electronics

Oscilloscope Input Stage: from op-amp to fabricable board.

The analog front-end of an entry-level oscilloscope probe, taken from op-amp design through a manufacturable PCB.

Premise: measurement hardware lives or dies on its front-end, which shifts a wide bipolar input into a clean, safe range a converter can read.

An MIE346 two-part design. It compares op-amp architectures, settles on a TL084 topology with selectable attenuation and AC/DC coupling verified by simulation, then becomes a through-hole PCB in EAGLE with a full bill of materials and Gerber files.

StackAnalog · TL084EAGLE · PCBSimulation

Project 10 · Robotics · Control Systems

Control Systems Lab Series: from model to stable plant.

Four feedback-control labs, from equations of motion to stabilizing a real unstable plant.

Premise: a controller is only as good as the model under it, and the proof is whether the real system settles where you predicted.

An MIE404 sequence across a quarter-car suspension, power-grid voltage, an airfoil, and magnetic levitation. Each lab derives a transfer function, designs a PI or PID controller, and validates it in Simulink and MATLAB, with the airfoil PID matching its analytical rise time and overshoot within about 1%.

StackMATLAB · SimulinkPID · PI controlTransfer functions

Project 11 · Machine Design · CAD

4-Axis CNC Milling Machine: every drawing, justified.

A concept-to-CAD design of a four-axis desktop CNC mill, with all of the engineering drawings authored by me.

Premise: a machine design is a chain of trade-offs, which mechanism to use and what it costs, all justified on paper before anything is cut.

An MIE243 design taking a CNC mill from market research and specifications through weighted concept selection and mechanism trade studies, across two CAD iterations, to a final four-axis machine. I authored the full assembly and all four sub-assembly drawings.

StackSolidWorks · CADMachine designEngineering drawings

Project 12 · Machine Design · Manufacturing

Caster Assembly Automation: a line for tiny parts.

A flexible automated assembly line to mass-produce two-inch chair casters from sub-inch parts.

Premise: assembling parts under 25 mm at volume is a fixturing and orientation problem before it is a robotics one.

An MIE221 manufacturing design. A rotary index table orients the bolts, transfer lines feed the washers, a programmable positioner drives the nuts, and an indexed conveyor places the wheels, all backed by a SolidWorks model with exploded views.

StackSolidWorks · CADAssembly automationManufacturing

Project 13 · Thermofluids · Experimental

Thermodynamics Lab Series: theory against the bench.

Instrumented labs validating gas-law and energy-balance theory against measured data on a two-tank rig.

Premise: theory is only as good as the bench, so these labs put thermodynamic laws against measured pressure and temperature.

An MIE210 sequence on a two-tank pressurized-air rig: ideal-gas path-independence, the first law with PID-controlled heaters, and open and transient systems with throttling and heat loss, each reduced from measured time-series and compared to theory.

StackThermodynamicsData acquisitionTheory vs experiment

Project 14 · Thermofluids · Fluid Mechanics

Open-Channel Flow: where the jump dissipates energy.

A flume experiment verifying the Bernoulli equation and characterizing a hydraulic jump.

Premise: open-channel flow is where clean theory meets friction and turbulence, and a jump that dissipates energy fast.

An MIE312 flume lab measuring flow over a sluice gate and a submerged sill, deriving downstream velocity from Bernoulli within about 0.15 m/s of measured, then classifying a hydraulic jump by its Froude number with a head-loss estimate and a discussion of error sources.

StackFluid mechanicsBernoulli · FroudeFlume testing

Project 15 · Thermofluids · Heat Transfer

Heat and Mass Transfer: keeping electronics cool.

Convection labs and a finned heat-sink design, framed around keeping electronics and batteries cool.

Premise: every chip and battery is a thermal problem, and the design question is how much heat a given sink can move before the part overheats.

An MIE313 set of labs measuring natural and forced convection on a heated block, modeling two-dimensional board heat-spreading with a finite-difference grid, and sizing a finned aluminum heat sink to hold an EV battery pack below 60 C in an Energy2D simulation.

StackHeat transferPython · FDMEnergy2D

Project 16 · Biomechanics · Modeling and Testing

Fibrotic Myometrium Biomechanics: modeling labor forces.

Modeling how fibroids change the uterine muscle's ability to generate labor forces, where I co-led testing and modeling.

Premise: soft tissue is viscoelastic, so its mechanical behavior needs both physical testing and a model that captures time-dependence.

An MIE439 project. The team built gelatin-PVA phantoms matched to healthy and fibroid stiffness and tensile-tested them, then adapted a spring-dashpot rheological model solved symbolically in MATLAB. I co-led the mechanical testing and the mathematical-model development.

StackBiomechanicsMATLAB · RheologyTissue phantoms

Project 17 · Bioengineering · Image Analysis

Proteoglycans and Aortic Failure: measure it, then relate it.

A MATLAB image-analysis pipeline relating proteoglycan content to the mechanical failure of aortic-wall tissue.

Premise: you cannot relate biology to mechanics without first measuring it, here by quantifying proteoglycans across whole-slide tissue scans.

My MIE498 undergraduate thesis in the Simmons Lab. I wrote a MATLAB pipeline that tiles whole-slide pathology scans, isolates the stained pixels, and quantifies proteoglycan area and pooling, then related those measures to delamination strength and energy loss.

StackMATLAB · Image analysisBioengineeringUndergraduate thesis

Project 18 · Bioengineering · Signals

Physiological Control: breathing, the heart, and the signal.

A Simulink model of how breathing drives heart rate, validated against real ECG recordings.

Premise: the body runs on feedback loops, and respiratory sinus arrhythmia is one you can both model and measure.

A BME331 lab modeling respiratory sinus arrhythmia in Simulink, then analyzing recorded ECGs: annotating the P-Q-R-S-T complex, quantifying heart-rate variability, reconstructing a lead by Einthoven's law, and estimating the heart's electrical axis.

StackSimulink · MATLABECG · SignalsControl systems

Project 19 · Bioengineering · Assays

Protein and DNA Assays: measuring the unknown.

Absorbance and fluorescence assays used to back out protein and DNA concentrations from a mixed sample.

Premise: before you can engineer with a sample you have to quantify what is in it, even when protein and DNA signals overlap.

A BME440 lab combining UV absorbance with the more sensitive BCA protein assay and a SYBR Green DNA assay. Dilution series of the standards and the unknown were read on a plate reader, with standard curves near an R-squared of 0.999 interpolating the result.

StackBCA · SYBR GreenPlate readerStandard curves

Project 20 · Sustainability · Thermofluids

Water as Refrigerant: cooling without the climate cost.

A capstone designing a water-refrigerant (R718) air-conditioning system for cleantech client Enersion.

Premise: most air conditioning runs on high global-warming refrigerants, and using water as the refrigerant cuts that to near zero, if the cycle can be made to work.

An MIE491 capstone for Enersion Inc. The team reviewed refrigeration cycles and ran the thermodynamic calculations to select components for a single-stage water-refrigerant system, reaching 310 W of cooling at a theory-to-actual performance gap the report is candid about. I contributed design sections and several of the figures.

StackThermofluids · HVACSustainability · R718Cleantech capstone

Project 21 · Sustainability · Life-Cycle Assessment

Faux versus Real Leather: an LCA for Tesla.

A life-cycle assessment advising Tesla on polyurethane faux leather versus bovine leather for cabin interiors.

Premise: sustainable material choice is rarely obvious, so it needs a full life-cycle accounting rather than a gut call.

An MIE315 consultant's report running a process-based LCA in OpenLCA with the TRACI method, alongside financial and societal analyses. Faux leather came out ahead on the environmental and societal axes, with a net present value of savings around $11 billion, so the report recommends it.

StackLCA · OpenLCADesign for EnvironmentTRACI
Contact

Open to engineering and product conversations.