My Writing

Notes from the build

Everything I have learned the expensive way: Flutter in production, backend layouts that survive a rewrite, real-time systems, and what changes when you start leading a team instead of only shipping for it.

07 Oct 2026 · 16 min

Google ADK, drawn out: how agent systems actually work

Give an AI agent one real job and it becomes a team. Here is every piece of Google's Agent Development Kit that makes that work, each one run for real.

Abstract cover: a coordinator node fanning out to three scouts that meet at a join, a loop back from a budget check, and an approval gate before booking

03 Oct 2026 · 15 min

LangGraph: what happens to your workflow when the server dies

We killed a real process in the middle of charging a card. With LangGraph's default setting the restart began from step one; with one flag it resumed at the charge. Either way, the charge ran twice. Here is the whole runtime: state, edges, reducers, checkpoints, interrupts, durability, parallel work, and what to ship.

Abstract cover: four workflow steps with a save marker under each, the third step struck by a crash and a second worker resuming it

30 Sep 2026 · 14 min

LangChain from zero: build your first AI agent, and make it safe to ship

An agent is a model, your functions, and a loop. Here are the eight building blocks of a LangChain 1.x agent, every one run for real, plus the three numbers that decide whether it is safe in production: 5,000 calls, 109k tokens, and one spoofed user.

Abstract cover: an agent core looping between a model and three tools, one wire glowing

22 Sep 2026 · 12 min

Where Jev actually goes in a system you already run

TypeSafe's System One model returns typed decisions with calibrated probabilities in under half a second. Six places to put it next to the LLM you already pay for — plus the confidence formula nobody explains, and where it breaks.

Abstract cover: a message entering a three-slot decision card that fans out into three routes, one glowing

08 Sep 2026 · 9 min

From 114 audio files to a YouTube playlist: building a Quran waveform video pipeline

How I turned a folder of recitation MP3s into 114 calm, waveform-lit videos with Pillow, ffmpeg and a few hundred lines of bash — and what broke along the way.

Abstract cover: an audio file becoming a layered waveform inside a lens shape, ending in a play button

12 Aug 2026 · 7 min

Why I still choose Flutter for production fintech

Four money apps in, the arguments against Flutter have mostly aged out — and the ones that remain are about platform channels, not the framework.

Abstract cover: one code shape casting two identical phone silhouettes

28 Jul 2026 · 6 min

The FastAPI service layout I use on every new project

Routers, services, repositories and one settings module — the folder structure that survived five products and three teams.

Abstract cover: three stacked layers with a request line passing through, in the site's dark palette

09 Jul 2026 · 5 min

Leading engineering without leaving the codebase

What changed when I became a CTO, what I got wrong about delegation, and the review habits that kept me useful to my team.

Abstract cover: a week grid with protected morning blocks highlighted in the accent colour

21 Jun 2026 · 7 min

Shipping an AI companion: what RAG got right, and where it lied

Building Riri taught me that retrieval quality is a product problem long before it's a vector-database problem.

Abstract cover: scattered document fragments converging into a single glowing conversation line

02 Jun 2026 · 6 min

Multi-tenant from day one: lessons from an eCommerce SaaS

Shared schema, tenant column, row-level policies — and the three migrations that would have been impossible six months later.

Abstract cover: many small storefront shapes sharing one foundation slab, one highlighted

14 May 2026 · 5 min

Agora, jitter buffers and the 3 a.m. call-quality bug

A week of debugging voice calls on rural 3G, and why the fix was in our reconnection logic rather than the SDK.

Abstract cover: an audio waveform breaking into scattered packets and reassembling

27 Apr 2026 · 5 min

Four Postgres indexes that fixed a 135,000-candidate search

Trigram, partial, composite and covering — how a recruitment platform's slowest screen became its fastest.

Abstract cover: a tall stack of rows narrowing into a sharp indexed point

05 Apr 2026 · 6 min

Hiring your first three engineers

What I look for when there is no senior bench to hide behind, and why my take-home test is a paid, scoped, real ticket.

Abstract cover: three seats around a small table, one glowing, suggesting a founding team

Before you go

Build things that outlive the sprint.

The stack will keep changing — the framework you love today is tomorrow's legacy migration. What survives is the discipline: ship small, measure honestly, write the code you'd want to inherit, and mentor the person coming up behind you. Somewhere out there it's 2 a.m. and someone needs your software to just work. Build for them.