When Gen AI is thinking

When gen AI is “thinking,” it’s deciding which part of its knowledge to search more carefully. Like a librarian checking a specific shelf instead of running around grabbing random books.

Two years ago we called this prompt engineering. We told the chatbot where to look. Now it figures that out itself. That’s the main difference.

The thinking lets it course-correct too. It can start at one shelf, realize that’s wrong, and move to another. With prompt engineering we had to guess right the first time.​​​​​​​​​​​​​​​​

The new GeoCities era

The current AI boom feels like the late 90s, reminiscent of the GeoCities era when anyone with Notepad and a few lines of HTML could create history. Now everyone’s building tools using AI in their spare time. That was a crazy time to be alive, and this is similar.

Infrastructure from experiments

Infrastructure doesn’t need to be planned. It can emerge from experiments when keeping them around costs nothing.

I pay $5 a month for Cloudflare Workers. That gives me room for hundreds of microservices. So when I build something, I just add another one.

Right now I’m building LLM-specific microservices. One for Claude, one for OpenAI, one for each model I use. Could I build one service that handles all of them? Sure. But that gets complex. Separate services means separate simplicity.

No roadmap. No grand design. Just solving problems and keeping the solutions around.​​​​​​​​​​​​​​​​

Perception gap

Even though your company doesn’t think AI will improve your work and doesn’t invest in it, others might expect that you’re on top of it. Otherwise they might choose other companies that can prove it works for them.

It’s about keeping you relevant.​​​​​​​​​​​​​​​​

Longevity in code

Someday in a distant future people will complain that your code is the reason they are in this mess.

Watching is not practicing

Understanding someone else’s work is not the same as being able to do the work yourself. Watching is not practicing.

Loosing the friction

Becoming engineering manager and later CTO meant becoming a worse developer.

Not because I forgot how to code. Because I stopped feeling the friction.

I used to know when the build took too long. When a dependency broke randomly. When the deploy process made you hold your breath.

Now I have to ask people to describe pain I no longer experience.

You get promoted away from the thing that made you good at your job.

You lose the direct feedback loop. The thing that told you what actually mattered.

It’s a different kind of work. Sometimes I miss just feeling it myself.​​​​​​​​​​​​​​​​

Never break the chain

January was supposed to be one month. A writing experiment. Post something every day and see what happens.

Then February came. Then March. Now it’s almost November.

I lowered the bar to make it sustainable. The streak itself became the higher bar. Never break the chain.

I’m not just protecting the chain. The chain protects me.

Every day I’m scanning for something worth capturing. A feeling. An observation. A pattern I haven’t noticed before.

The daily practice forces me to keep looking.

The commitment isn’t to writing anymore. It’s to staying receptive.​​​​​​​​​​​​​​​​

Small errors compound

Fly from Stockholm to New York with a 1% leftward lean. No corrections. You’ll miss Manhattan by over 100 kilometers.

This is AI-assisted development without a clear destination.

Each generated function that’s “close enough” creates a small deviation. The AI suggests Axios when you use Fetch. It abstracts the user model differently than your auth system. It handles errors with try-catch instead of your Result types.

Twenty iterations later, your codebase has drifted into unfamiliar territory.

The drift is subtle. Each suggestion seems reasonable. The AI solves the immediate problem. The code works.

Working code aimed at the wrong target is still failure.

A flight plan isn’t just knowing you want to reach New York. It’s knowing your route, your waypoints, your altitude. In code, that means architecture decisions, patterns, constraints. All defined before you start.

Just like pilots check waypoints, you need architectural checkpoints. Regular moments to ask: Is this still the system I intended to build?

Moving faster in the wrong direction just means arriving at the wrong destination sooner.​​​​​​​​​​​​​​​​