The Most Expensive Email in Your Inbox

More sales only treads water if you can’t hold on to the customers you already have. I’m working with an independent insurance agency right now, and their real growth problem isn’t acquisition. It’s retention. Renewals compound. Lose the customer and that stream just stops. They spent real time and money winning that person. Losing them to a forgotten email is the expensive kind of churn - the kind where nobody decided to lose them. ...

October 5, 2026 · 3 min · 541 words · Gordon Burgett

Transformational Leadership: The Antidote to AI Fear

The AI revolution is bringing out the extremes in both camps. I’ve seen it play out personally at work. Fear and giddy excitement are present in equal portion, driving employees’ daily decisions around AI adoption. Both reactions are dangerous for different reasons, but I want to focus on fear in this post for one simple reason: fear is what slams the door shut on AI adoption. AI usage mandates won’t fix fear. Your employees will stop at compliance; what you need is transformation. Replacing uncooperative employees doesn’t fix it either; the fear becomes infectious, spreading through the rest of the organization. CEOs aren’t immune to the fear either. The saying I have heard from our own CEO this year is “every day you’re late to AI is 2 days you fall behind”. ...

September 15, 2026 · 8 min · 1605 words · Gordon Burgett

Theory Building with AI

What is the act of programming? My team and I went back to first principles earlier this year. And I went back to the old masters: Brooks, Naur, Djikstra. I was seeking to re-learn the essence of Software Engineering from those who had thought about the problem in the beginning. If the act of programming is no longer typing symbols into computer code, then what is it? I think Naur has a great definition in his paper, “Programming as Theory Building”. ...

September 10, 2026 · 7 min · 1413 words · Gordon Burgett

Scrum is Broken

Scrum is broken. I thought I knew what Agile looked like. 2-week sprints, story points, daily standups. I ran that cadence at my last job. But something changed with Opus 4.7. Now, once we’ve groomed the cards and defined the sprint, everything is done within a day. Doesn’t matter how many cards we throw into a sprint, we just fire up more parallel agents. ...

June 24, 2026 · 7 min · 1305 words · Gordon Burgett

Pushing Claude Code Further with Spec Driven Development

The Problem I’m Trying to Solve I’ve been coding with AI agents for as long as they’ve been generally available, and I keep running into the same bottleneck: me. Every time Claude generates code, I need to review it. Every time it completes a feature, I need to verify it actually works. Every time it runs tests, I need to check if the failures are real bugs or hallucinations. I’m the human in the loop, and I’m slowing everything down. ...

March 20, 2026 · 11 min · 2201 words · Gordon Burgett

Building Alice, an Empowering AI Agent

What does it look like to build AI agents that actually empower people’s lives, not just “augment” them? For HealthShare Technology Solutions, I wanted to build an AI agent that non-technical users can actually use to take the hassle out of their health care cost sharing plan. In this post I’ll describe the guiding principles and design decisions that made Alice not just possible, but empowering to everyday users. The guiding principles I used in building Alice come down to four key words: ...

March 18, 2026 · 9 min · 1905 words · Gordon Burgett

Building an Unstructured Data Import

Sometimes the hardest thing to figure out is not “how” to best apply a new technology, but “when not” to apply it. Nowhere has this been more true than with AI. With the rush to stick the AI brand on every project, software engineers are being pressured to “just throw more AI” at the problem and hope it works. In my hourly contracting on Neighbor Solutions, I’ve been asked to build a data import pipeline for community resources. To give a bit of context, one core function of the Neighbor Solutions app is to help users who have a heart for our unhoused neighbors to guide them towards helpful resources in their community. These can be food banks, shelters, warming stations, and many more. The major technical difficulty here is getting accurate data into the system in an automated way. Many times, lists of these resources are in poorly formatted PDFs or screenshots of webpages. There is very little consistency here, so some amount of natural language processing is required. ...

November 16, 2024 · 5 min · 912 words · Gordon Burgett

Implementing Licensing & Permissions in a React Redux app

In the process of building out the VoirDire App for our client, we ran into an interesting problem. How do we enforce licensing requirements in a cross-cutting way, without tediously identifying every area in the UI where the user might take an action that they were not allowed to take? The client’s licensing requirements were: On the free plan, a user can have 1 trial, up to 20 jurors, and up to 20 stored questions. With a standard license ($30), up to trials, 100 jurors, and 100 stored questions. An unlimited license ($50) removes all limitations. Since we are using Redux to handle application state, calculating the remaining jurors, trials, etc. in the license can be done with a selector. The selector accepts the entire redux state and the user’s current license key, then calculates whether they are over or under the limit. ...

October 20, 2024 · 2 min · 305 words · Gordon Burgett

Thoughts on Cursor

As AI tools continue to reshape software development, I’ve been particularly impressed with Cursor, an AI-powered code editor that has transformed my daily workflow. After several months of use, I want to share my experiences and observations about why this tool has become indispensable in my development process. The most striking impact of Cursor has been the dramatic increase in my productivity - I estimate it has doubled my coding speed. The secret sauce that Cursor has nailed is the UX around applying suggested edits back to my codebase. The experience feels natural, almost like dictating your thoughts to a junior developer who then implements the code exactly as you envision it. ...

September 20, 2024 · 4 min · 813 words · Gordon Burgett

Feeling Like I'm at Hogwarts

I spent some time this week playing with Typescript 2.8’s new features for modeling various complex types. The new syntax that I wanted to play with was the conditional type syntax, 1 T extends U ? X : Y This syntax allows you to express some really crazy type relationships! Some of the most interesting ones have been pre-defined in the Typescript standard lib: Exclude<T, U> – Exclude from T those types that are assignable to U. Extract<T, U> – Extract from T those types that are assignable to U. I wanted to see if I could use these to model the way we’ve been working with return values from Contentful’s Content Delivery API. ...

May 20, 2018 · 9 min · 1712 words · Gordon Burgett