Blog

The Latest from Our Team

    Person typing on a backlit laptop keyboard in a dark, blue-tinged setting, suggesting cybersecurity activity

    Two Branches and Boring Deploys: A Simpler Take on GitFlow

    by 

    |

    |  

    in

    Branching is one of those topics that can start a fight in a team chat. Some developers love GitFlow. Some developers hate it. Both camps are usually right, because they are arguing about different things. On our projects, we want to move quickly without giving up stability. Full classic GitFlow, with release branches, hotfix branches,…

    Read more…

    Person typing on a silver laptop displaying code, with another laptop nearby in a bright office.

    Running OpenAI’s Codex CLI Locally with Ollama

    by 

    |

    |  

    in ,

    I like knowing what’s happening on my machine. When I use a tool, I want to understand what it’s doing, where my code is going, and what I’m paying for. That’s why I spent some time getting OpenAI’s Codex CLI running locally through Ollama, and I think you should try it too. Codex CLI is OpenAI’s…

    Read more…

    Long-exposure street scene showing colorful light trails from moving cars at a busy intersection at night, conveying speed and urban motion.

    Building a Really Snappy Offline-First Flow with TanStack Query

    by 

    |

    |  

    in

    A common issue with modern software is the network call. This can be a problem in two ways. First, these calls can be slow, creating a mediocre user experience. The second problem is that these calls can fail when we are having network problems. So I thought, can we run our UI off an offline…

    Read more…

    Magnifying glass held over binary code (0s and 1s) on a screen, symbolizing data inspection or analysis.

    How to Spot Bad Code (Even If You Don’t Write Any)

    by 

    |

    |  

    in

    You don’t need to know a programming language to tell when code is in rough shape. A lot of “bad code” looks bad in ways anyone can see — the same way you can tell a kitchen is messy without being a chef. You might encounter this more often than you expect. A vendor submits…

    Read more…

    Five wooden cubes sit along a white line of connected squares, culminating in a cluster of four yellow cubes—symbolizing growth or progression toward a goal.

    Deploying Containers to Azure App Services

    by 

    |

    |  

    in

    I’ve been running a project on an Azure App Service for a while now, and I’ve landed on a setup I’m pretty happy with: a single Docker container that bundles the Angular frontend, NestJS API, and Caddy as the web server. The whole thing builds in GitHub Actions, pushes to Azure Container Registry (ACR), and…

    Read more…

    Person standing at a glass-walled balcony, holding a mug, overlooking a lit city skyline; tablet, notebook, and glasses on a desk in the foreground.

    Policies Don’t Lead

    by 

    |

    |  

    in ,

    Over the past year, we’ve spent a lot of time helping organizations figure out what AI actually means for their business. We’ve also been doing the same work ourselves inside Don’t Panic Labs. Along the way, something has become increasingly obvious to me. Almost everyone starts in the same place. Someone asks Legal to draft…

    Read more…

    Laptop on a white table in a data center, screen displaying code, with yellow Ethernet cables on both sides.

    It’s Just Config

    by 

    |

    |  

    in

    Friday, 4:47 PM. An engineer opens a pull request on a billing service. One file changed. One line changed. The reviewer is already in their coat. “LGTM — it’s just config.” The PR merges at 4:58. By Monday morning, the team will have charged 3,800 customers two to four times each, refunded $2.3 million, and…

    Read more…

    Infographic timeline showing AI evolution from 2017 to Now, with an LLM circle and speech bubbles illustrating plain language inputs.

    The Interface Is Dissolving

    by 

    |

    |  

    in ,

    For twenty years, the job was the same. A person points, clicks, types, and navigates to a result, and we design every step of that path. Software waits. The human is the engine. Agents break that. When software can understand what you want and act on its own to get there, the interface stops being…

    Read more…

    Person typing on a laptop with translucent holographic icons and a large checkmark, symbolizing verification and approvals.

    Quality Isn’t Tested In, It’s Layered In

    by 

    |

    |  

    in

    We once delivered a project in six weeks. It felt fast. The demo landed, the client was happy, and we walked out of the room feeling like heroes. Then we spent the next six weeks stabilizing it. I think about that project a lot, because it taught me something that no estimate ever shows you:…

    Read more…

    Group of people collaborating around a table, pointing at documents and a laptop on the desk.

    Building with the GitHub Copilot SDK, Part 8: Sketch-First UI Design

    by 

    |

    |  

    in ,

    In Part 7, I walked through the UX Design Tool we built into What is Done — one that spins up a full Angular + PrimeNG app in about 10 seconds. That tool is great when you need a working skeleton fast. But sometimes you don’t need a full framework. Sometimes you just want to…

    Read more…