- One word. Five meanings.
- An agent spends tokens to call an API with a token.
- A token is a small thing that stands in for something else.
writing
2026
-
· 6 min One word. Five meanings. Token: One Word, Five Meanings -
· 3 min A fresh Mac collects apps fast. The macOS Apps I Actually Keep - A fresh Mac collects apps fast.
- These five are the ones still there a month later.
- Itsycal is the one I put back first: a small icon in the menu bar, and that is the whole reason it stays.
-
· 6 min The status line is the one piece of UI I look at every few seconds, all day. A Claude Code Status Line That Tells Me When I'll Run Out - The status line is the one piece of UI I look at every few seconds, all day.
- So I stopped treating it as a place for a model name and a branch, and made it answer the questions I actually have while I work.
- Is the context about to compact?
-
· 4 min A plain terminal, made fast and good-looking. Installing Oh My Zsh on Linux and macOS - A plain terminal, made fast and good-looking.
- Zsh + Oh My Zsh, on Linux and macOS.
- And the two plugins I install on every machine.
-
· 4 min I build AI agents for a living, and the single most useful thing I’ve done for them is stop giving them big interfaces. CLI-first AI Agents: Why I Build Small Tools Instead of MCP Servers - I build AI agents for a living, and the single most useful thing I’ve done for them is stop giving them big interfaces.
- No SDKs.
- No sprawling APIs.
-
· 19 min An AI agent that runs all day should not run as you. Building a Hardened Linux Environment for Your OpenClaw AI Agent - An AI agent that runs all day should not run as you.
- Its own Linux user. Its own network rules. Its own secrets.
- A home lab server, set up step by step.
-
· 6 min You built a CLI. Creating Your First Homebrew Tap: A Complete Guide - You built a CLI.
- Now make it one line to install: brew install.
- A tap is just a repository. Seven steps.
2025
-
· 1 min “Think about your events as internal APIs.” Spark from NDC Oslo: Events as Internal APIs - “Think about your events as internal APIs.”
- James Eastham, NDC Oslo.
- Clear contracts. An owner. Documentation. No breaking changes without coordination.
-
· 1 min NASA's ten rules for safety-critical code, and ThePrimeagen reading them out loud. Link Sparks: The Power of Ten - Rules for Developing Safety Critical Code - NASA's ten rules for safety-critical code, and ThePrimeagen reading them out loud.
- Simple control flow, bounded loops, no surprises.
-
· 2 min Syncing Obsidian vaults with Git works great until machine-specific files create conflicts or you accidentally commit sensitive notes. Obsidian + GitHub: Safe .gitignore Setup - Syncing Obsidian vaults with Git works great until machine-specific files create conflicts or you accidentally commit sensitive notes.
- This guide gives you two battle-tested .gitignore configurations and a safety checklist to avoid common pitfalls.
- Quick take: Use the Strict setup to eliminate config conflicts entirely.
-
· 3 min A submodule is a pointer to one commit in another repository. Managing Git Submodules: A Quick Guide - A submodule is a pointer to one commit in another repository.
- Their code in your project, without merging it into yours.
- Set up, update and manage, with a Neovim config as the example.
2024
-
· 9 min Neovim is Vim with the parts that aged badly replaced: Lua instead of Vimscript, a language server client built in, and syntax trees instead of regular expressions. Getting Started with Neovim: From Install to LazyVim - Neovim is Vim with the parts that aged badly replaced: Lua instead of Vimscript, a language server client built in, and syntax trees instead of regular expressions.
- It is still the editor that opens in a terminal in a tenth of a second and does not need a mouse.
- This is how I set it up on a new machine.
-
· 1 min One GitHub list. Link Sparks: Essential Knowledge for Programmers - One GitHub list.
- Algorithms, memory, security, clean code.
- The things every programmer should know.
-
· 3 min One environment per project. Getting Started with Python Environments - One environment per project.
- No version conflicts. A clean global Python.
- conda or venv, and which to use when.
-
· 3 min The server is out of disk. How to Check and Clean Up Disk Space on Linux Servers (Ubuntu) - The server is out of disk.
- df tells you how full. du tells you where.
- Then clean up.
-
· 2 min You upgraded the volume on Hetzner. How to Resize a Filesystem on Hetzner Cloud VM - You upgraded the volume on Hetzner.
- The extra space isn’t there.
- The filesystem has to be resized. Three steps.
-
· 2 min A symlink points at a file from somewhere else. Link Up Your Life: Symlinks in Linux and Windows - A symlink points at a file from somewhere else.
- No duplicates.
- ln -s on Linux. mklink on Windows.
2020
-
· 1 min New machine. Old SSH keys. Add Private SSH Key(s) - New machine. Old SSH keys.
- Copy the key, fix the permissions, add it to the agent.
- Four steps.
2019
-
· 1 min The most basic git commands. Basic git commands - The most basic git commands.
- init, add, status, commit, push, pull, clone, branch.
- A cheatsheet, nothing more.
2017
-
· 2 min Ten Linux commands to start with. Linux Commands - Ten Linux commands to start with.
- Then three worth saving: what is listening on a port, which PID is running, and searching inside files.