The Build Log

Notes on the things I actually run and build.

A flat illustration of a magnifying glass over a scattered field of document and envelope icons, a few related ones glowing teal and linked by thin lines, in navy and teal
Building with AI

Searching my notes and email by meaning, on my own hardware

Keyword search only works when you remember the words, and half the time I don't. So I built search by meaning over close to 20,000 notes and 127,000 emails: local embeddings on plain CPU, a nightly incremental reindex, and a retrieve-then-reason answer mode.

Daniel  ·  Jul 12, 2026  ·  5 min read
A flat illustration of a friendly robot at a keyboard beside a server stack, with a translucent shield and a red stop-hand fencing it off from a dangerous command, in navy and teal
Building with AI

How I let an AI agent run commands on my box without fear it wipes it

Letting an AI agent actually run commands on your own server is powerful and a little terrifying. The two layers I built so a lazy musing never turns into a delete: an instruction layer that reads intent and asks first, and a hard block list the model cannot talk its way past.

Daniel  ·  Jul 10, 2026  ·  3 min read
A towering stack of books and papers on a hand truck facing a tiny glowing mail slot in a dark wall, one lit envelope passing through, in navy and teal
Building with AI

The 200KB of memory Claude Code never actually saw

My assistant's loader was pushing 219KB of memory into every message, and the model was getting the first 2KB of it. Where the rest actually went, the index that was quietly truncating on top, and the fix that keeps an index in hand and pulls chapters on demand.

Daniel  ·  Jul 1, 2026  ·  5 min read
A flat illustration of an artist's easel holding a canvas with simple geometric shapes, a painter's palette on a stool beside it, in navy and teal
Building with AI

How I make the illustrations on this blog

Every post here has a header image and they all share one look. The small system that keeps the set consistent: a fixed style block in every prompt, flat over photoreal, a palette locked word for word, and me picking the one that fits next to the rest.

Daniel  ·  Jun 26, 2026  ·  3 min read
A flat illustration of a server stack with a shield in front, linked by teal lines to several comment bubbles, in navy and teal
How I run things

Self-hosting my blog comments with Remark42

I wanted comments without handing a third party my readers and their words. So the comments here run on Remark42, self-hosted: one small binary, anonymous commenting, no tracking, and a comment database kept where a redeploy can never wipe it.

Daniel  ·  Jun 24, 2026  ·  3 min read
A flat illustration of a phone showing a single alert dot next to a line chart, on a navy background
How I run things

My homelab only pings me when something actually changes

Monitoring that messages you every run becomes wallpaper, and then you miss the one alert that mattered. My homelab watcher runs every half hour but only pings on a transition: one alert when something breaks, one all-clear when it recovers, and a silence I can actually trust.

Daniel  ·  Jun 20, 2026  ·  3 min read
A monumental 2009-era smartphone standing like a monolith on a dark plain, its screen glowing with a golden torch, a tiny figure at its base
Products

The citizenship test, in your pocket: my 2009 App Store apps

Six months into the App Store's existence I shipped a bilingual U.S. citizenship test app that hit number one in Guatemala, and a privacy-first browser with password-protected profiles. Objective-C, AdMob, and the two business models of 2009, tested the hard way.

Daniel  ·  Jun 16, 2026  ·  4 min read
Illustration of documents and chat bubbles flowing into a searchable index
Building with AI

A lighter QMD alternative for a homelab (no GPU required)

OpenClaw ships QMD, an embeddings-and-reranker vector memory, as the default. For a homelab it's overkill. Here's the lighter setup I run instead: a concept index plus a small CPU embedding model, no GPU.

Daniel  ·  Jun 12, 2026  ·  4 min read
A flat illustration of a home server inside a circular self-repair arrow loop with a check mark, under a crescent moon and stars, in navy and teal
How I run things

A homelab that heals itself at 4am

Things break quietly at 2am and you find out at 9. So every day at 4am a plain, deterministic job checks every system on the box, safely restarts what has fallen over, and leaves me one message about the rest.

Daniel  ·  May 28, 2026  ·  3 min read
A flat illustration of a glowing teal brain wired into gears, a pipeline, and a database, on a deep navy background
Building with AI

The more reasoning I handed the AI, the more it made up

Building Claude skills to migrate a backlog of legacy .NET apps, the model kept drifting and inventing things once the reasoning got heavy. What fixed it: move the deterministic work out of the model, into Python scripts and SQL, and let it only orchestrate the parts that need real judgment.

Daniel  ·  May 20, 2026  ·  6 min read
A flat illustration of an org chart of small robot agents with a cost meter and a stack of coins, in navy and teal
Building with AI

Why I scaled my company of AI agents down to one

For a few months I ran close to twenty AI agents on my homelab, a chief of staff, a CTO, an SRE and more. Then I scaled the whole thing back to a single Claude Code agent. The token meter, the reliability tax, and the overhead of managing the managers.

Daniel  ·  May 9, 2026  ·  3 min read
A towering monolith shaped like a 1990s application window standing on a dark plain, a glowing river of RTF documents pouring out of it, with Visual Basic lettering in the artwork, in navy and teal
Products

InfoStore: the file-per-note app I wrote in the 90s and never released

A Visual Basic app from 1998: folder tree on the left, rich text editor on the right, every note its own RTF file on disk. The file-per-note design Obsidian later made standard, running on Windows 95, and what keeping it in a drawer taught me.

Daniel  ·  May 6, 2026  ·  4 min read
A flat illustration of a chat reply stopped at a glowing teal barrier before it reaches a phone, in navy and teal
Building with AI

I stopped asking Claude Code not to use em dashes and wrote a hook

Prompt rules and memory are suggestions, and a long run drifts back to the em dash no matter what the file says. So I moved that one rule out of memory and into a PreToolUse hook: a shell script that checks every Telegram reply and blocks the send if a banned character gets through.

Daniel  ·  May 3, 2026  ·  6 min read
Illustration of a phone with a chat window connected to a home server stack
Building with AI

How I run my homelab from my phone

I run Claude Code on my home server and reach it over Telegram, so my homelab has a chat window now. The standing jobs, the two watchers I lean on, and what I learned running too many agents at once.

Daniel  ·  Apr 28, 2026  ·  5 min read
A flat illustration of an application window standing on its own with its command panel glowing, while a pair of scissors cuts the cable that used to tie it to a small external module
Products

Cutting the dependency I should have cut sooner (TerminalNexus 2.11)

The early versions leaned on Windows Terminal being installed, so install step one was the first place things broke. 2.11 ships its own terminal engine instead, and owning the terminal is what made the rest possible: scheduled output panels, shell conversion, a variables manager, and per-provider AI keys.

Daniel  ·  Mar 23, 2026  ·  3 min read
The voice assistant page: an animated AI face with a Local and OpenAI toggle, a pop-out button, and a microphone control
Building with AI

A full-duplex voice assistant in the browser, over WebSockets

I gave my homelab dashboard a real hands-free voice over a hand-rolled WebSocket. Local Whisper and Kokoro, voice activity detection, an animated face, an iPhone pop-out, and the one thing that wore me down in the end.

Daniel  ·  Mar 5, 2026  ·  5 min read
A flat illustration of a robot inspecting a server rack with a magnifying glass, next to a board of ticket cards, in navy and teal
Building with AI

An SRE agent that files its own tickets every morning

One of my AI agents was an SRE, a site reliability engineer. Every morning it scanned the homelab, wrote up what looked off, and filed tickets, but never touched the controls. Why read-only triage with a human approving beats handing an agent the keys at 6:30am.

Daniel  ·  Feb 18, 2026  ·  3 min read
A red lobster, the OpenClaw mascot, over a glowing teal circuit network on a deep navy background
Building with AI

I ran a whole company of lobster agents on my Linux homelab

A chief of staff, a CTO, an SRE, a developer, a QA, even a voice agent, all passing tickets across kanban boards while I sat at the top. How it was wired, what's inside a card, and where it slowly tied itself in knots.

Daniel  ·  Feb 11, 2026  ·  8 min read
A flat illustration of a vertical menu of command buttons beside a terminal window, with a cursor clicking one of the menu items, in navy and teal
Products

I got tired of memorizing Git commands, so I made them a menu

Git is the tool I use every day and the one I have re-Googled the most. So in TerminalNexus I made the commands I actually reach for a menu and a right-click: real Git underneath, plus AI commit messages written from the diff and a pre-commit scan that catches secrets before they land.

Daniel  ·  Sep 22, 2025  ·  3 min read
A current note card in front, with faded earlier versions of it stacked back along a commit timeline, and a curved arrow looping from an old version back to the present one
How I run things

I keep my notes under version control, so a bad edit is never permanent

My notes are the second brain I run this homelab on, so I treat them like code. The whole vault is a Git repo that commits and pushes itself every few hours: full history, one-command rollback, and a separate snapshot layer underneath.

Daniel  ·  Jan 20, 2025  ·  3 min read
Illustration of a monitoring dashboard with graphs and gauges
How I run things

How I monitor my homelab and prod servers with Grafana

A small Grafana stack for the home server, the one security decision I reversed when I pulled Tailscale off a public VM, and how I keep six months of history from vanishing if a disk dies.

Daniel  ·  Sep 15, 2024  ·  6 min read
A road to a server blocked by a barrier, with a second path curving around it through a DNS cloud to reach the server's padlock shield
How I run things

How I get a wildcard SSL cert when my ISP blocks port 80

My home ISP blocks port 80, which breaks the usual Let's Encrypt HTTP-01 challenge. The DNS-01 path I use instead: a wildcard cert, no inbound port, and renewals I never touch.

Daniel  ·  Apr 25, 2024  ·  4 min read
A home server connected to a phone, tablet, laptop, and storage by teal lines, on a navy background
How I run things

How my homelab started

It began because I could not get to my own notes. From OneNote lock-in to Trilium, a too-slow Raspberry Pi, an old laptop turned Linux server, everything in Docker, and finally closing every open port with Tailscale.

Daniel  ·  Apr 22, 2024  ·  5 min read
A slim panel of command buttons feeding a command into a terminal window with tabs
Products

Before it was TerminalNexus, it was CommandGit

It started in 2012 as a GUI to coax my coworkers off Subversion and onto Git. The framework slog, the serverless detour, the breakthrough that made it work with any CLI, and how it grew into TerminalNexus.

Daniel  ·  Apr 16, 2024  ·  6 min read
A frozen cloud function wired to a desktop app stuck on a loading spinner, with a steady always-on server glowing to the side
Products

How serverless almost killed my app

I put the license check for CommandGit, now TerminalNexus, on a serverless function at app startup. A 30-second cold start turned the launch into a spinner. Why scale-to-zero is scale-to-cold, and the boring box that fixed it.

Daniel  ·  Apr 13, 2024  ·  4 min read
A flat illustration of a single glowing teal button with two paths branching out, one to a git commit node and one to a ticket card, on a deep navy background
Products

One button to commit and update the Jira ticket

Finish a change, then switch to the browser to update the Jira ticket and paste in what changed. Every commit. So I put it on one TerminalNexus button: capture the ticket and message, commit with the key, and comment on the issue with the changed files. The script included.

Daniel  ·  Aug 2, 2023  ·  3 min read
A flat illustration of a code window with a glowing teal orb of light radiating into the lines of code, on a deep navy background
Products

I put GPT-3 into TerminalNexus in early 2023

In January 2023, before the chat models, I wired GPT-3 into TerminalNexus: explain a command in plain language, turn a description into a command, and a usage quota underneath. What building against the completions API felt like that early.

Daniel  ·  Jan 10, 2023  ·  3 min read
A flat illustration of a code window with a glowing teal note card pinned to one line of a command, on a deep navy background
Products

Notes on every command, so I'd remember why I added it

By 2019 I had a few hundred saved commands and kept forgetting why I wrote each one. So I added notes: a line on every command and project, written in the moment, for the version of me who comes back months later with no idea.

Daniel  ·  Jul 15, 2019  ·  3 min read
Two monumental database towers, one navy and one teal, facing each other across a dark chasm, joined by beams of light that flare red where the data differs, with a tiny figure at a desk on the bridge between them
Products

Universal Explorer: the database toolbox I shipped in 2013

Before TerminalNexus there was a C++ app that replicated data between any two ODBC databases, diffed table schemas across Oracle, SQL Server and Access, and browsed Oracle without DBA rights. Built from 2003 to 2013, one driver quirk at a time.

Daniel  ·  Jun 4, 2019  ·  4 min read
A cathedral-sized wall of glowing switches towering into the dark, with one tiny person at a 1990s computer desk reaching up to flip a single switch, in navy and teal
Products

Startup Manager: the free 1998 utility that made it into PC World

Windows 95 machines got slower the longer you owned them, and the culprits hid in win.ini and six registry keys. I wrote a free C++ utility that listed everything launching at startup and gave each entry a checkbox. PC World put it in the May 1998 print issue.

Daniel  ·  May 14, 2019  ·  5 min read
A giant floppy disk standing like a monolith in a dark wine cellar between rows of barrels, a tiny figure raising a glowing wine bottle toward it, in navy and teal
Products

The wine database: my first real app, 1995

Before the freeware there was a wine price list. Visual Basic 4, an Access database over DAO, Crystal Reports for the printed list a distributor lives by, and a Backup button that recommended a floppy disk. My first real app, and the start of a database habit.

Daniel  ·  Apr 24, 2019  ·  3 min read
A dark cathedral-like hall of card catalog cabinets with thousands of tiny labeled drawers, a glowing teal river flowing out of one open drawer past a lone figure at a 1990s computer desk, in navy and teal
Products

FastView: my first Windows program, and the long file names I didn't wait for

Started February 1993, and the proof is hard-coded in the source. A catalog and viewer for text files on Windows 3.1 that hung 255-character names on 8.3 filenames, two and a half years before Windows 95 made that normal. Borland C++, OWL, and tooltips built by hand.

Daniel  ·  Apr 10, 2019  ·  6 min read

More posts as I build. Check back soon.