Your codebase is the real prompt

A fresh AI agent often has to rebuild context. Here's how clear module boundaries and fast feedback make coding agents easier to guide, with a Spring Boot example.

Read

Why keyset pagination beats OFFSET

OFFSET pagination slows down as you page deeper. I benchmarked OFFSET and keyset pagination on 5 million rows in PostgreSQL: why OFFSET degrades, why keyset stays fast, the tiebreaker mistake that silently skips rows, and when OFFSET is still fine.

Read

Am I Using My Ego, or Is It Using Me?

The quickest way to your own downfall is to stop examining yourself and start believing you're better than you are. A journal entry for me, and for my sons.

Read

Learning to Enjoy Your Own Company

Learning to be alone, not lonely, is one of the best things you can do for yourself. It builds self-reliance, quiet confidence, and a clearer sense of who you actually are.

Read

The Line I Say to Myself

One sentence I repeat to myself keeps difficult people from running my day. Here's how a mantra works as a filter.

Read

How to Ship 16 Languages Without Finishing Any of Them

I needed to localize an app into a lot of languages without it turning into a months-long slog. The trick wasn't finishing each language, it was leaning on i18next's per-key fallback so a barely-translated language ships the same day and fills in over time.

Read

Why I Switched from Ghostty to cmux

A few months ago I wrote about loving Ghostty. Then I started running several Claude agents at once and outgrew a single terminal. cmux is where I landed, and it's built on Ghostty.

Read

How my Chrome extension syncs without lag or lost data

WeekTab is a Chrome extension that syncs tasks to Supabase. These are the four small layers that keep typing instant, keep offline edits safe, and stop a fresh install from hiding your data.

Read

Stop Flutter build numbers from colliding across dev, staging, and prod

Why the build number in pubspec.yaml stops working once you have separate dev, staging, and prod apps in the stores, and a small git-tag system that fixes it.

Read

Keeping a Personal Technology Radar

A simple backlog for the technologies I want to learn next.

Read

The One Question That Quietly Improved My Life

A simple question I ask myself in every moment to choose the best next action and live with less regret.

Read

I Won't Be Commanded, I Won't Be Controlled

A song that keeps reminding me to be loyal to my own voice. Why authenticity is the precondition for speaking freely.

Read

Imagine Losing It, Then Look Again

Imagining the worst sounds pessimistic. For me, it's the practice that keeps me grateful for what I still have.

Read

Twenty Minutes a Day for Technical Breadth

A small daily habit that quietly widens my technical map.

Read

Why Technical Breadth Matters More Than Ever

In the age of generative AI, depth is cheap. Breadth is the new leverage.

Read

How to Migrate a Git Repository Without Admin Access

No admin rights on the original repo? Here's how to migrate it manually using clone and mirror, plus validation steps.

Read

What Epictetus Taught Me About Letting Go

Some people suffer twice. Once while doing the work, and again while worrying about the result. Here's what Epictetus taught me about focusing on what I can control.

Read

In the Loop or On the Loop? How I Think About Using AI to Code

The short answer: don't abandon the keyboard, but don't refuse the copilot either. The sweet spot is knowing when to drive and when to delegate.

Read

Don't Sweat the Small Stuff - I Disagree

Everyone says to let the little things go. I think that's wrong - here's why the small stuff is actually the big stuff in disguise.

Read
Developer Tools

Why I Use Ghostty as My Terminal on macOS

After a month with Ghostty, I'm not going back to iTerm2. Here's why, plus my full config.

Read

How to Run a GPU Job on GCP Cloud Batch from Code

How to submit a Cloud Batch GPU job programmatically, with GCS volume mounts and environment variables.

Read

Hard Things Build Character

Finishing 500km over Christmas week taught me more about focus and self-control than I expected.

Read

Uploading Large Videos in Flutter: Surviving Background Kills on iOS and Android

How we solved large video uploads that kept dying when users switched apps.

Read
Productivity

Why I Switched from Wispr Flow to VoiceInk

A one-time purchase, local processing, and flexible model options made the switch easy.

Read