Experience
Fourteen years across three employers, with tech leadership at each one.
Cellares
Staff Software Engineer, tech lead
Genomic Health / Exact Sciences
Senior Software Engineer (after consulting there)
Magenic Technologies
Associate Developer → Senior Consultant
Hutchinson Technology
Engineering Intern, Machine Vision
Cellares · Staff Software Engineer · May 2020 – Aug 2026
Automated cell-therapy manufacturing, GMP-regulated. Six years across three eras: the manufacturing web platform, the instrument-control software, then applied AI.
- Built the evaluation harness for an AI-assisted quality system on my own: golden datasets from real historical deviations, retrieval metrics, LLM-as-judge scoring and CI quality gates.
- Ran ten controlled retrieval experiments that took the system from landing the right procedure in the top 20 about 3 times in 10 to about 8 in 10, and dropped five changes that measured worse.
- Drove the unsafe AI recommendations I'd seen, the ones that closed or cancelled a real quality event, from 3 to 0 across 201 test cases.
- Largest contributor to the new quality-management application (40% of pull requests) in Next.js, React and PostgreSQL.
- Built and deployed an internal AI tool that drafts work items and test cases grounded in the product wiki and API specs, adopted by the team for day-to-day work.
- Founding engineer and top contributor (#1 of 28) on the protocol-authoring application for the manufacturing instrument.
- Formal tech lead from 2023 to 2026 for a team of about three engineers and two QA, with near-daily office hours, release scope planning and release-candidate sign-off.
- Designed and built the real-time telemetry pipeline (RabbitMQ to a throttled publisher to SignalR).
- Took protocol simulation from spike to shipped feature; a 200-step protocol simulates in about 8 ms.
- Led the .NET 8 and Angular upgrade across three repositories in nine days.
- Wrote the first commit on the process-definition service and built the Process Designer end to end.
- Built the admin application and the 21 CFR Part 11 audit trail UI, then pulled it out into a reusable Angular library.
Genomic Health / Exact Sciences · Senior Software Engineer · Aug 2019 – May 2020
Consulted there through Magenic starting in early 2019, then joined full time.
- Led a team of junior engineers building the Angular application that ran clinical approvals for cancer diagnostic products entering new regulatory markets.
- Set the team's coding standards and reviewed code before check-in.
- Worked with product owners and quality engineers to settle requirements and feasibility; also worked on backend services in Java and Spring Boot.
Magenic Technologies · Associate Developer → Senior Consultant · Feb 2012 – Jul 2019
A Microsoft-focused consultancy. Promoted four times, and moved from Minneapolis to the Bay Area along the way.
- Embedded with enterprise clients in payments, insurance, audit and tax, financial services, travel and entertainment, owning a workstream from requirements to production in C#, ASP.NET MVC, Web API, Angular and SQL Server.
- Development lead on several engagements: ran sprints and daily Scrums with offshore teams and closed requirements with product owners.
- Helped interview new developers and mentored new hires.
- 2014 Consultant of the Year (Magenic Delivery Center); Q2 2018 Consultant of the Quarter (San Francisco).
Applied AI
RAG end to end, evaluation harnesses, LLM-as-judge, golden datasets, retrieval metrics (recall, MRR, NDCG), RAGAS, Claude (tool use, structured output, MCP), pgvector, CI quality gates
Frontend
Angular (through v20), TypeScript, RxJS, NgRx, React 19, Next.js 16, Tailwind
Backend
C# and ASP.NET Core, Entity Framework Core, Python, FastAPI, Node.js, Java and Spring Boot
Data and messaging
PostgreSQL, SQL Server, RabbitMQ, SignalR, Redis
Cloud and delivery
Azure, Docker, Azure DevOps Pipelines, SonarQube, OpenTelemetry
Domain
GMP manufacturing, 21 CFR Part 11, quality management, deviation and CAPA workflows
- Measure before believing. Whether it's an AI change or a refactor, I want a number or a byte-for-byte comparison, not a feeling.
- Write down the rejections. A change that measured worse and got dropped is a result, and it saves the next person from trying it again.
- Ship the whole thing. When I build a feature I usually ship its backend half, its deployment config and its user guide in the same stretch of work.
- Start new things. I've written the first or second commit on several of the systems I worked on, and I like the early, unstructured part of a project.
- Make other engineers faster. Office hours, code review, coding standards and release planning have been part of the job at every company I've worked for.