My Experience
What I've been up to for 12 years
September 2023 - Present
Software Consultant
Source AlliesPartner with client teams to design and ship enterprise applications on the cloud, spanning application code, infrastructure, and delivery pipelines. Much of the work is coaching teams toward test driven development, smaller iterations, and tooling that makes delivery predictable.
Client Projects
December 2025 - Present
Global agricultural equipment manufacturer
Capturing metrics on how their technology is actually used in the field, then surfacing them to product teams and dealers so they can step in with a customer or make a call on where the roadmap goes next. Pipelines aggregate the raw utilization data, and a federated graph serves it out to the teams and tools downstream.
When I showed up, testing meant a run in our Databricks runtime against huge production datasets, requiring hours of waiting to verify a single change. I pushed for local test driven development and established the data factory pattern that enabled it, so pipeline logic could be split into modular units and unit tested against small, readable inputs in seconds. My team ran with it. I made the same case for inner source packaging, to move away from copy pasting between repos. Both have since spread to other data product teams.
All of this shows up in how fast we can deliver a new dataset, and how often it arrives without surprises. What holds us up now sits upstream of us, in product requirements and source data rather than in our own code or execution.
- Python
- Spark
- Databricks
- GraphQL
- Netflix DGS
- Apollo Federation
- Spring
- Kubernetes
- AWS
- Datadog
September 2024 - December 2025
Multinational crop nutrition and agricultural retail provider
Worked in a data product ecosystem dealing in geospatial field data ("field" as in the kind with dirt). Our services held the source of truth for field boundaries and acted as the hub between their platform and the other ag tech companies it exchanges data with. Most of my time went into the architecture around that, event driven data products with a GraphQL API in front.
Also paired closely with the team building the customer facing map interface, where a grower sees their own fields alongside yields and application rates.
- AWS
- GraphQL
- Kafka
- SQS
- PostgreSQL
- GeoJSON
- CloudFormation
- React
June 2024 - September 2024
Global automotive OEM components manufacturer
Two applications for different parts of the business. The first let project managers follow a product from an identified industry need through to handoff to manufacturing. The second was a search tool for their OEM parts catalog, which meant letting internal salespeople filter fasteners the way their customers actually ask for them, by things like thread length, diameter, flange width, and a long list of other descriptors.
- React
- GraphQL
- PostgreSQL
- Azure
- Bicep
August 2023 - June 2024
Plant breeding and nursery company
Built the central hub for their contract royalty management, a GraphQL API that was both the source of truth for financial agreements and the integration point between their third party SaaS and CRM tooling.
I stood up the admin interface on top of it as well, so their finance team had a direct way to see and correct the data every other system was reading.
- C#
- .NET
- HotChocolate
- GraphQL
- PostgreSQL
- Azure
- Bicep
- React
June 2022 - January 2023
Software Engineer
Gravity LegalImproved payment processing software for law firms and legal tech companies. Built out end-to-end test coverage and led integration testing through an overhaul of the payment flow.
- React
- Node.js
- TypeScript
- TypeORM
- MySQL
- AWS
August 2020 - June 2022
Software Engineer
Principal Financial GroupBuilt customer-facing experiences on the Enterprise Experience Enablement team, including the home page, messaging, and user profile. Led the integration of a new customer segment following an acquisition, coordinating across many teams.
- JavaEE
- JSP
- WebSphere
- DB2
- Python
- Flask
- API Gateway
- AWS
January 2020 - July 2020
Software Scientist
Ames Laboratory, Department of EnergyContributed to CMakePP, an open-source project for building cross-platform C and C++ build systems for computational chemistry. Extended the CMakePP language and wrote its documentation.
- CMake
- GNU Make
- Sphinx
- Linux
May 2018 - August 2019
Software Engineering Intern
Herzog TechnologiesWorked across three projects: a LiDAR-based application for railroad clearance analysis, a technical lead role on an in-house compensation management tool, and the migration of a proprietary desktop railroad data validation tool to the web.
- Python
- Tornado
- Angular
- SQLAlchemy
- Bootstrap
- Docker
- C#
- WPF
June 2014 - January 2018
Software Engineering Intern
Collins AerospacePart of the team behind an automated testing system for radio hardware, translating feedback from test engineers into new features and fixes that shortened their test cycles.
- JavaFX
- Python
- Tornado
- Angular
How I Work
What I think a team needs to excel
A few things I believe are load-bearing if a team is going to excel over the long term.
- 01
Fast feedback loops
I would rather be wrong in an hour than right in a month.
Test driven development is the cornerstone of this mindset. Tests written after implementation tend to describe whatever the code already does, while tests written first describe what it is supposed to do and code quality reflects that: smaller units, cleaner modules, and (of course) truly testable code.
I push my team to work closely and frequently with those upstream and downstream of us (customers, or teams we are partnering with). There are always unknown unknowns, I prefer to find them early rather than a week before a deadline.
Lastly, I believe in investing time in ceremonies to build and maintain a durable and healthy team: chartering a team early so we understand how each of us actually works + holding quality retros so that the real problems get acknowledged and resolved.
- 02
Self-organizing teams
The people closest to the work know how to be most effective.
In my experience, teams trusted to organize themselves and set their own direction consistently outperform teams waiting to be told. Direction should arrive in the form of stakeholder needs, not a Jira ticket.
That trust is not a reward for maturity, it is how maturity develops. A team never given the responsibility to make the decision never learns to make it well.
- 03
Sustainable delivery
Engineers are the counterweight to the pull toward deliver, deliver, deliver.
Product's instinct to ship is healthy and necessary. Left unchecked it borrows against a system's future, because technical debt is often invisible in any single deliverable. Engineers should spot these costs, and making them visible to leadership is part of the job.
The goal is that the team delivers reliably for years rather than impressing stakeholders one quarter and fighting fires the next.
Of course, technical debt is unavoidable. The question is whether it is taken on deliberately and paid down, or accumulated unintentionally and discovered later.
Me Outside of Work
Spoiler: it's mostly gravel biking
I charge up my mental batteries by depleting my glycogen stores. Sometimes I bring my camera along.
Word to the wise: be careful bringing up bike tires around me. I have opinions.