The Queue Is Full: What I'm Building Next with Local-First AI

I have a text file with 26 tool ideas on it. That number keeps growing. And for the first time, that feels like a good thing. For most of this series, I’ve been writing about what happens when you vibe code a bunch of tools and let the architecture emerge. The copy-paste period. The shared library extraction. The Makefile that almost didn’t survive. This post is about what comes after. The infrastructure is in place. Starting a new tool is cheap now. So the question changes from “can I build this?” to “what’s worth building next?” ...

May 26, 2026 · 6 min · Jamal Hansen

Gemini Forgot Its Plan. I Kept the Makefile.

I was in the middle of the shared library extraction when I ran out of Claude tokens. Six repos deep, changes half-committed, migration plan half-finished. This was not ideal timing. So I opened Gemini CLI and handed it the plan. What followed was messy, instructive, and produced one idea that was better than anything I’d come up with on my own. Running Out of Tokens at the Worst Possible Moment Context windows and token budgets are real constraints when you’re vibe-coding, especially across multiple repositories. A six-repo migration with shared dependencies, coordinated test suites, and a consolidation plan burns through tokens quickly. This was also before I slimmed down the context I sent with every prompt. ...

May 23, 2026 · 6 min · Jamal Hansen
A bookshelf in a library

I Extracted a Shared Library and Got 400 Tests I Didn't Ask For

Last time I argued that you can’t design your way to a good abstraction. You have to earn it through repetition. Here’s what that actually looked like. I had six Python projects, each containing its own version of the same four files: A provider abstraction for talking to LLMs CLI argument helpers Obsidian utilities for reading and writing notes A testing module for stubbing out model calls I knew that I wasn’t sharing code between the tools and that each would have similar needs. But it wasn’t my priority to fix, so I let it happen. And the code accumulated, one project at a time, each one re-creating a variation on the same logic. Like a lazy developer, copy-pasting code from another repository and tweaking it to fit. ...

April 10, 2026 · 8 min · Jamal Hansen
A geometric black and white pattern

Copy and Paste Long Enough and the Architecture Appears

Ever find yourself writing the same code in a different repo? I have. What did you do about it? Maybe your first reaction is to reach for an existing library to do the work for you? Or perhaps you start thinking about the DRY principle and how you need to start optimizing and combining your code. I’m up to 16 different repositories, each containing a tool that I’ve vibe-coded with some help from Claude Code and/or Gemini. Things like: ...

March 27, 2026 · 6 min · Jamal Hansen
AWS Card Clash - Gen AI Battles

AWS Card Clash - Gen AI Battles

Today I joined the AWS Card Clash: Gen AI Battles | S1 E1 | Model Access Showdown on LinkedIn. This session demoed the AWS Card Clash learning game available on AWS SkillBuilder. The session was hosted by Curtis Morton, Jason Cuddy, and Brittany Wolfrom. AWS Card Clash is a fun and engaging card game that pits two players against each other to complete architecture diagrams. Some of the things that I liked about this as a learning activity are: ...

May 7, 2025 · 2 min · Jamal Hansen