Dev Log: 2026-07-14
TL;DR Fast-forwarded two Laravel apps off an old in-house skeleton — in layers, not one heroic merge. Added a security-header middleware and a retenti…
Tech news from the best sources
TL;DR Fast-forwarded two Laravel apps off an old in-house skeleton — in layers, not one heroic merge. Added a security-header middleware and a retenti…
TL;DR A job dispatched once , at row-creation time, has a silent failure mode: if that dispatch is lost, the row sits pending forever — and never appe…
Munchausen makes one absolute promise: same seed, same data, forever, on any machine. A persona is "generated once," which raises a question that soun…
The Problem Sports scoring sounds simple. One team scores a point, the number goes up, everyone sees it. But when you build it as a web application th…
If you are running an event-driven architecture with message queues like Kafka, you already know the drill, scalability is awesome, but network partit…
The cohesion paper series is now published in full — five papers that build a chain from the concept of cohesion to the Independent Variation Principl…
Every bank, insurer, and government system running on a mainframe today is sitting on COBOL that nobody wants to touch and nobody can afford to leave …
The Object-Relational Mismatch Most development takes place in object-oriented programming (OOP) languages, which leads to a common criticism of the S…
Introduction So imagine you are focused on your cappuccino-frappuccino doing something very important on you win laptop and then have a cringe attack …
Many enterprise AI governance discussions start with frameworks. Frameworks are useful. They help organizations define principles, roles, controls and…
I was testing a faceless Shorts pipeline when a job reached the end without producing a video I wanted to publish. The incidents and measurements here…
✓ Human-authored analysis; AI used for formatting and proofreading. Scott Piper published a twenty-year retrospective on cloud security research in Ma…
Most MVPs do not fail because the first version is too small. They fail because the first version is not focused enough. A real MVP is not just a redu…
I've shipped three Buttons to production. The web one lives in your JS bundle. The iOS one is a SwiftUI view. The Android one is a Compose composable.…
Changing the model for a running AI task is not a settings update. It is a distributed operation: read current task -> prepare credentials/config -…
This article was originally published on my blog . Vibe Engineering: Solving Small Cross-Cutting Concerns I've been enamored by AI technologies far be…
Teams make dozens of architectural decisions every month but document almost none of them. The rest dissolve into Slack threads, hallway conversations…
Disclosure up front: I build agentproto , whose knowledge and operator primitives are the back half of this piece. The problem in the first half stand…
Disclosure up front: I build agentproto , whose spec registry (the AIPs) is the last third of this piece. The problem in the first half stands on its …
In the fast-moving world of cryptocurrency, market data changes every second — prices fluctuate, trades execute, and volumes shift continuously. Captu…
For a long time, backend engineering has been divided into two camps: Relational databases (SQL) for rigid, structured tables, and Document stores (No…
For the last two decades, software engineering has followed a predictable formula: build a database, write an API, and build a massive, complex fronte…
I didn’t set out to diagnose hyperscalers. I wasn’t doing a grand industry analysis. I wasn’t mapping global architecture. I wasn’t trying to understa…
Model migrations and dramatic agent speedups are recurring headlines. A single “2.2x faster” number cannot tell you whether your production workflow i…
MCP is one of the most talked-about ideas in AI right now. If you read enough posts, it starts to sound like MCP is the missing piece that makes agent…
For years, I built WordPress websites the traditional way. Install a theme. Add a few plugins. Customize where needed. It worked... until the projects…