Skip to content
Jonathan Throne

About me

Hey, I’m Jonathan. I live in Davis, California. I write software for a living, I run long distances on trails, and I brew way too much coffee. This blog is a mix of all three.

The work

On the software side, I’m a senior software engineer at UltraSignup. I love the overlap there. I spend my weekends signing up for trail races and my weekdays building the platform people sign up on.

Most of my work is modernization. We have an ASP.NET WebForms application that has been running for a long time with real customers depending on it every day, and we are moving it piece by piece toward a cloud-native product suite. Node.js services on AWS Lambda, a React front end, and authentication moved out to a managed identity provider. I’ve learned the new stack is honestly not the hard part. The hard part is keeping the legacy system healthy while you build its replacement, and that has meant a lot of refactoring, fixing scaling issues, and being patient.

A big part of my job has been improving how we work, not just what we build. Making code review a normal daily habit. Getting the team onto Git with a real branching and review workflow. Automated pipelines in GitHub Actions. AWS infrastructure written as code in OpenTofu. One-click deployments for the legacy app, database schema migrations included. None of this stuff shows up as a feature, but it changes everything about how confident a team feels when they ship.

Then there’s AI. I’ll be honest, I didn’t come to it as a believer. I was reluctant, and part of me still is. I’ve watched the hype swing between “this changes everything” and “this is all garbage,” and I’ve felt the pull of both sides. What changed my mind was actually using it seriously instead of arguing about it. These days I’m building software factory workflows with Claude and GitHub Copilot agents, and the interesting work isn’t the tools themselves, it’s finding the balance. Where do the guardrails go? What still demands a human? How do you move faster without quietly letting quality slip? One thing I’m still figuring out is how to do code review well when the pull request was AI assisted. When an agent can generate a big diff in minutes, how do you give real human input without either drowning in review or just rubber stamping everything? I don’t have it all figured out, and a lot of what I write here about AI will be me working that out in public.

Before UltraSignup I spent several years in fintech. I co-authored an event-sourcing architecture that became the foundation for a company’s entire workflow from customer submission to funding. I worked on a banking core API and led development of a virtual card feature that let customers rotate or destroy card numbers to reduce fraud. Before that I worked in real estate tech, health insurance, a state contract, and GPU test triage.

Running (and the health story underneath it)

Then there’s running, and the health story underneath it. At 23 I was diagnosed with familial adenomatous polyposis (F.A.P.), a genetic disorder, and at 24 I went through two invasive corrective surgeries. It took me a while to find my way back from that, but in my early thirties I turned my life around and became active again the way I had been in my early adulthood, and running long on trails is where that landed. I’ve finished four 100-milers: Rio Del Lago in 2021, Tahoe Rim Trail in 2022, Canyons in 2023, and in 2024 I made it 90 miles at Western States before timing out. That DNF was one of the most painful experiences of my athletic life, and I’m determined to go back and get that buckle one day. I’ve also run Lake Sonoma 50 twice, plus a few self-supported dirtbag long-distance efforts that never made it onto a results page. In 2023 my health history caught up with me again and I went through another major abdominal surgery, followed by the long, slow process of building back, which taught me more about training and about myself than any good season ever did. I write about all of it here. Race reports, recovery, training blocks, and the mental side of setting big goals and falling short of them.

Coffee

And coffee. I brew espresso and filter both, with an espresso machine, multiple grinders, and a rotation of brewers including a V60, Origami, Clever, AeroPress, and Pulsar. Filter brewing and espresso technique are where I’m going deep right now, dialing things in and chasing a tasty cup. My latte art is still very much beginner level, and I’m okay with that. I get really into origin and process too, so expect posts digging into things like what washed processed actually means versus natural, whether co-ferments are a good thing for coffee enjoyers or a step too far, or why I keep coming back to a washed SL9 from Peru. Sometimes those will sit right next to a post about Lambda cold starts or a race that fell apart at mile 70.

The cats

Rounding out the household are my two cats: Tiger Lily and a newly adopted kitten named Sage. They contribute nothing to the blog except cute cat pics scattered into posts, which honestly might be the best content here.

I’m not going to split any of this into separate blogs. It’s all the same person. Thanks for reading.