Today I Learned
Short snippets of knowledge that my future self will find useful. Borrowed from Simon Willison’s TIL concept. Check out the blog for longer form writing.
macOS Launch Agents have a minimal PATH. Here’s how to stop playing whack-a-mole every time you add a new tool.
Getting Caddy and Tailscale to serve multiple local apps on reboot without thinking about it.
I made a warm, earthy theme for Zed. It took exactly a month to get merged.
Serving a local HTML file over your tailnet with Caddy, Tailscale, and a macOS LaunchAgent.
I wrote an agent skill so Claude Code can use CalcMark for calculations. Then I asked Claude what was hard, and it taught me a few things about building tools for agents.
Using Caddy as a web server for a local file system.
Using a slightly nicer
curlA reminder to keep Github Actions simple and as free of logic as possible.
I spun up a couple of projects to explore two separate topics: how to implement a basic MCP server; how to use NumPy for numerical computations.
Cross-compiling Go code to WebAssembly (WASM) is really powerful.
It also produces massive files to download.
So how can we shrink this down?
Using git worktrees for the first time in local development requires some new muscle memory.
I really wanted a tiny little version of Jupyter notebooks but for personal calculations that can also
have Markdown in them. So I started chatting with my buddy, Claude, who gave me an inflated sense …
I decided to vibe code, truly putting Anthropic’s Claude CLI in the driver’s seat. It was instructive!
In which I finally read some docs on what a JavaScript module is and how it made my Hugo shortcodes self contained.
I’m running Ollama on a Macbook so shifting the default location that Ollama downloads massive models to is a necessity. It’s just one environment setting away.
How I integrated D2 diagram rendering into my Hugo blog with a custom Go script
I want to set up an exit node on my Mac Mini using Tailscale. That way I can watch movies from anywhere and print stuff without being at home.
How to interpret the numbers used to describe LLMs.
Dependency free markdown server
Working with Pi-hole and a bit of
sed.Using the GitHub CLI to make authenticated and authorized download from a private repo.
Starting some micro-donations to open source developers. And a font.
Learning a few bits about SQLite that are worth noting.
Writing Markdown using VS Code
Data engineering audiocast, plus Python photos
Using
direnv to automatically handle environment variables.Using GitLFS for the first time.
Using Google Sheets for event planning
In which type coercion and JavaScript magic bite me in the…date math.
Using Python to work with addresses and Open Street Map networks.
Simon Wardley figured out how to make maps that support strategy by balancing user-facing visibility and technical evolution from innovation to commodity.
Trying svelte-kit and Tailwind CSS
ICU for Python head-scratcher solved
Getting Python running on fresh Linux
Default git branch name and Python formatting
PM and Eng leadership
PNG squishing and static sites on GCS
Learning about Pangeo and friends
From GCP to Terraform