Building infrastructurefor finance
CS Graduate student at Northeastern. Studying distributed systems and low-latency markets, working toward the front-office engineering that powers a trading desk.
Previously: SWE Co-op at Morgan Stanley, working on fixed income portfolio & trading infrastructure.
I build the unglamorous systems that move money around at scale.
Most of my work is the cloud and backend infrastructure behind the trade — order books, message buses, settlement pipelines. The parts where latency and correctness both matter, and a wrong number costs real money.
I'm most interested in the boundary between distributed systems and financial markets: how exchanges stay deterministic under chaos, how risk gets computed in real time, why event-sourced ledgers tend to win over time.
The stack behind
the things I build
Four projects that taught me the most. Each one solved a specific technical problem — picked over many because the constraint was interesting, not the surface area.
Limit Order Book
A matching engine fronted by a FIX 4.4 gateway. Sustains ~40k orders per second and replays any session deterministically off its Kafka event log.
Yield Curve Visualizer
Real-time treasury curve dashboard fed by Treasury Direct auction results. Bootstraps zero-coupon curves and animates the term structure as rates shift intraday.
Payments Reconciler
Ledger reconciliation service that matched 14M daily transactions against three external providers. Camel routes normalize each provider's format before the match; state lands in DynamoDB. Cut manual reconciliation from 6h to 4 minutes.
Backtest Sandbox
Event-driven backtesting framework for equity strategies. Replays tick data through pluggable strategy modules; outputs PnL, drawdown, Sharpe. The whole replay cluster stands up from Terraform, so a run is one command.
A counterparty lookup that traders had given up on.
My co-op project at Morgan Stanley. Counterparty lookups were taking 40 to 60 seconds because five active accounts were monopolizing the DynamoDB partitions. Three changes to the live table dropped that to 130 milliseconds. The historical workload moved off Dynamo entirely.


Counterparty lookups took a minute. The table looked fine.
PMs waited 40 to 60 seconds per counterparty to pull tax-harvest swap candidates. Aggregate DynamoDB metrics looked healthy, so nothing flagged the real cause. Counterparty was effectively the partition key, and five active accounts saturated their partitions while the rest of the table sat idle.
Two storage tiers. Live and historical stopped fighting.
Kept DynamoDB for the live intraday path: resharded on a synthetic partition key, normalized to one record per CUSIP — 2M writes a day collapsed to 60K — and added targeted GSIs for the queries the layout missed. Moved historical analytics off Dynamo entirely: Parquet on S3, partitioned by date, cataloged in Glue, read by Athena.
Nothing downstream could switch on the same day.
Other teams read this through an API and re-point on their own release schedules, so the cutover could not be a single switch. Both tables took writes for 30 days while reads moved consumer by consumer, and the old endpoint stayed up behind them the whole time.
The market doesn't close for a schema change.
Running 365GB as a single job means any failure restarts from zero. Glue handled the transform, Lambda dispatched one date partition at a time, and a control table tracked each partition — pending, in flight, done. Deterministic keys made a re-run overwrite rather than duplicate, so a failed partition cost one partition.

300× faster reads. 33× fewer writes. Throttling gone.
Counterparty fetch went from 40-60 seconds to 130 milliseconds — a 300× speedup. Daily write volume dropped from 2 million records to 60 thousand after normalization. Historical queries that used to take minutes now return in under 5 seconds cold, around 25 milliseconds hot, with zero load on the live trading path.
A short trail. More signal in the work above than in titles, but here's the shape.
Software Engineer Co-op
Jul 2025 — Jan 2026Designed and maintained real-time fixed income market offers data service infrastructure for the buy-side desk, building FIX ingestion and Kafka streaming pipelines into DynamoDB alongside AWS archival ETL workflows.
Senior Software Engineer
Feb 2023 — Jun 2024Led the engineering team for an enterprise-grade distributed computing platform, orchestrating heavy AI/ML and advanced workloads across heterogeneous cloud environments. Architected and shipped a foundational Function-as-a-Service (FaaS) capability, allowing data scientists to instantly deploy Python functions as live, auto-scaling microservice APIs.
Software Engineer
May 2021 — Jan 2023Led an on-premises engagement for a Houston, TX-based energy infrastructure solutions provider, driving efforts to scale and modernize their software platform. Built customizable, cross-platform, and responsive web applications optimized for mobile and desktop using ReactJS, Electron, NodeJS, and .NET Core, backed by SQL Server and SQLite databases.
Associate Software Engineer
Nov 2020 — Apr 2021Built REST APIs using MVC architecture and SQL Server databases while developing foundational web development skills across HTML5, CSS3, JavaScript, C#, and the .NET Framework.
The paper trail. Two degrees, one continent change, and a steady pull toward software.
Master of Science in Computer Software Engineering
Graduate coursework across systems, data, and the web — building the foundation under the work above.
- Web Design
- Database Management
- Java — Object-Oriented Programming
- Program Structures & Algorithms
- Network Structures & Cloud Computing
Bachelor of Technology in Aerospace Engineering
Where the pull toward aerodynamics and aviation started. Project work focused on optimizing F1 car's inverted front wing for turbulent wake flow and ground effect — tuning the geometry to generate downforce for increased traction.
Let'stalk.
Looking for a full-time role starting January 2027. Open to chatting about trading infrastructure, exchanges, or anywhere systems meet markets.