Posts

Claude Code Found a Linux Vulnerability Hidden for 23 Years
April 3, 2026
Claude Code has gotten extremely good at finding security vulnerabilities, and this is only the beginning.

Eversource EV Rebate Program Exposed Massachusetts Customer Data
February 9, 2026
I recently claimed a rebate for an EV charger, only to discover that Eversource, my power supplier, was publicly exposing personal information of customers who applied.

My Eighth Year as a Bootstrapped Founder
February 3, 2026
In year 8, I discovered it takes longer than I think to write a book, found alignment with my business, and regained my love for life as an indie founder.

My First Impressions of MeshCore Off-Grid Messaging
December 2, 2025
Using low-cost radio hardware to keep texting when there's no phone or Internet service.

I Once Appeared in The Old New Thing
September 15, 2025
I'm a pretty humble guy, so most people aren't aware of this extremely impressive fact about me: Raymond Chen once mentioned me on his classic Windows blog, The Old New Thing.

Give Your Spouse the Gift of a Couple's Email Domain
August 26, 2025
The brilliant relationship tip you won't find anywhere else.

Migrating a ZFS pool from RAIDZ1 to RAIDZ2
July 23, 2025
How to migrate from RAIDZ1 to RAIDZ2 without a spare ZFS server or a boatload of extra disks.

goHardDrive Leaked Personal Data for Thousands of Customers
July 2, 2025
How goHardDrive exposed tens of thousands of customer records to anyone with a web browser.

My $6k Advance as a Self-Published Technical Author
April 25, 2025
I just received $5,947 in advance sales for my first technical book, even though it's only 25% complete, and I'm self-publishing it.

My Book's Pre-Sale Just Barely Succeeded
March 31, 2025


My Seventh Year as a Bootstrapped Founder
February 3, 2025
It's now been seven years since I quit my job at Google to become an indie founder. In the past year, I sold my company, started a family, and learned several new technologies.

if got, want: A Simple Way to Write Better Go Tests
January 8, 2025


Using Nix to Fuzz Test a PDF Parser (Part One)
October 23, 2024

Using Nix to Fuzz Test a PDF Parser (Part Two)
October 23, 2024

I Sold TinyPilot, My First Successful Business
May 29, 2024
Four years after starting TinyPilot from scratch, I've sold the company and handed complete control over to a new owner.

Building My First Homelab Server Rack
April 5, 2024
What I learned building a rack for my home server infrastructure.


My Sixth Year as a Bootstrapped Founder
February 16, 2024
Six years ago, I quit my job as a developer at Google to create my own self-funded software business. This is a review of my last year and what I've learned so far about bootstrapping software businesses.

Aardvark'd: The Fog Creek Documentary, 18 Years Later
September 8, 2023
Not many people remember this 2005 documentary featured early interviews with Paul Graham, Aaron Swartz, Alexis Ohanian, and Steve Huffman.

Installing NixOS on Raspberry Pi 4
July 18, 2023
A beginner-friendly tutorial for installing NixOS on a Raspberry Pi 4.

Deploying Syncthing on a Fly.io Cloud Server
May 29, 2023
How to deploy Syncthing on a Fly.io cloud VM and configure it using built-in tools.

My Fifth Year as a Bootstrapped Founder
February 10, 2023
Five years ago today, I quit my job as a developer at Google to create my own self-funded software business. This is a review of my last year and what I've learned so far about bootstrapping software businesses.

Back Up Encrypted ZFS Data without Unlocking It
July 29, 2022
How to create backup files of encrypted ZFS datasets that you can securely replicate anywhere.


Building a Budget Homelab NAS Server (2022 Edition)
May 23, 2022
How I chose parts, built, and configured my first custom home storage server.

My Fourth Year as a Bootstrapped Founder
February 1, 2022
Four years ago today, I quit my job as a developer at Google to create my own self-funded software business. This is a review of my fourth year and what I've learned so far about bootstrapping software businesses.

How Litestream Eliminated My Database Server for $0.03/month
April 29, 2021
I've always hated maintaining database servers. Litestream offers a simple alternative without sacrificing reliability or security.

Guidelines for Freelance Developers Working with Me
March 12, 2021
I provide this document when advertising dev jobs, and I pay freelancers to read it when they begin working with me.

My Third Year as a Solo Developer
February 1, 2021
Today is the third anniversary of me quitting my job at Google to build my own software business. I posted updates at the end of my first and second years, so it's time for another update.

How to Make Your Code Reviewer Fall in Love with You
December 2, 2020
Best practices for code review when you're the author.

Building a Homelab VM Server (2020 Edition)
October 6, 2020
I built a home server to host my development VMs and went a bit overboard.

How I Collected a Debt from an Unscrupulous Merchant
August 13, 2020
Within two emails, a merchant went from blatant dismissal to full payment, and I owe it to The Organized Professional Method.

TinyPilot: Build a KVM Over IP for Under $100
July 23, 2020
Using only a Raspberry Pi and an $11 video capture dongle, you can create your own KVM over IP device, allowing you to send keyboard input to a remote computer and capture its display.

Key Mime Pi: Turn Your Raspberry Pi into a Remote Keyboard
June 11, 2020
Using the Pi as a USB gadget, I can impersonate a keyboard and make it type whatever I want through the web browser.

My Eight-Year Quest to Digitize 45 Videotapes (Part Two)
May 26, 2020
How I used MediaGoblin and Google Cloud Storage to create a private media server for less than $1/month.

My Eight-Year Quest to Digitize 45 Videotapes (Part One)
May 26, 2020
My journey to create a YouTube of memories from my family's old home videos.

Update: Stripe's Response Regarding User Tracking
April 30, 2020
Stripe has made several significant, positive changes to its user tracking and privacy policies in the last week.

Stripe is Silently Recording Your Movements On its Customers' Websites
April 21, 2020
An investigation into how Stripe tracks your users and what you can do to prevent it

My Second Year as a Solo Developer
January 31, 2020
Two years ago, I quit my developer job at Google to build my own software business. A year later, I posted an update about my finances, happiness, and lessons learned. Today marks the end of my second full year, so it's time for another update.

A Simple Pre-Rendered Web App Using Vue + Nuxt
December 19, 2019
The easiest way to improve social sharing and SEO for a single-page app.

Eliminating Distractions from Social Media, Email, and StackOverflow
November 11, 2019
Simple techniques for managing your apps instead of allowing them to manage you.

Hiring Content Writers: A Guide for Small Businesses
September 30, 2019
A complete walkthrough of how I find freelance writers, screen them, and train them to work with me.

The Dumbest Task I Ever Outsourced
August 13, 2019
I derive immense satisfaction from outsourcing my chores, even when it causes me to pay $96 to clean a $39 keyboard.

Staying Motivated by Sending Status Updates to Nobody
June 25, 2019
Writing short entries in a plain textbox bolstered my motivation and miraculously made status meetings interesting.


End-to-End Testing Web Apps: The Painless Way
May 1, 2019
Create an end-to-end test for your web app in under 30 minutes (no software installation required).

My First Year as a Solo Developer
February 1, 2019
Exactly one year ago, I quit my job at Google, so it's time to reflect on how the decision has affected my finances, lifestyle, and happiness.

What I Learned About Upwork from a Bumbling Scammer
December 27, 2018
How I solved the mystery of the worst scammer I've ever encountered.

Retrofitting Apps for Cloud Storage with Zero Code Changes
December 4, 2018
An exercise in integrating Docker, Google Cloud Storage, and the gcsfuse utility.

Why Good Developers Write Bad Unit Tests
November 9, 2018
The standard techniques of good development can lead you astray if you don't adjust them for unit tests.

How I Tricked Myself into Shipping Too Late
September 11, 2018
I've heard dozens of stories of founders failing because they shipped too late. It seemed like an easy fate to avoid until I made the same mistake.

Resurrecting a Dead Library: Part Three - Rehabilitation
August 20, 2018
How I used safe techniques to refactor a legacy codebase and minimize the risk of regressions

Resurrecting a Dead Library: Part Two - Stabilization
August 6, 2018
Using Docker to get a legacy library under test in continuous integration

Resurrecting a Dead Library: Part One - Resuscitation
July 24, 2018
The story of how I got an old library up and running again and used it to build a new business

What I've Been Doing Since Quitting My Job
May 29, 2018
An update on my progress since going off to work on my own.

Why I Quit Google to Work for Myself
February 28, 2018
For the past four years, I've worked as a software developer at Google. On February 1st, I quit. It was because they refused to buy me a Christmas present.

How to Hire a Cartoonist to Make Your Blog Less Boring
January 19, 2018
With no idea what I was doing, I hired a cartoonist to illustrate my blog. The results were surprisingly positive.

KetoHub Update: Month 3
January 9, 2018
I'm building a website. Here’s what was good, bad, and learnable about it last month.

The Perils of Outsourcing Your MVP
December 6, 2017
A few months ago, I had a brilliant idea for a website. Then, I had an even brillianter idea: build the website, but outsource all the work.

Sia-Minio Integration Postmortem
December 1, 2017
An analysis of how Nebulous Labs can improve its bounty program for Sia

How to Do Code Reviews Like a Human (Part Two)
November 9, 2017
The worst code review of my life and how you can avoid a similar fate.

How to Do Code Reviews Like a Human (Part One)
October 12, 2017
Lately, I’ve been reading articles about best practices for code reviews. I notice that these articles focus on finding bugs to the exclusion of almost every...

Create Your Own Low-Cost Cloud Storage App with Sia and Nextcloud
August 6, 2017
In today’s post, I’m going to show you how to set up your own cloud storage web app, similar to Dropbox or Google Drive, but with substantially lower costs.

How I Hired a Freelance Editor for My Blog
July 25, 2017
It's surprisingly easy to hire a blog editor, and it provides tremendous value.

GreenPiThumb: A Raspberry Pi Gardening Bot
June 27, 2017
Using the Raspberry Pi to water plants automatically




Adventures in Outsourcing: Cooking with TaskRabbit
January 11, 2017
Hiring a personal chef on the cheap


Testing Ansible Web App Roles with Selenium
September 25, 2016
A way to perform strong tests on Ansible web app roles


Running Sia on a Synology NAS via Docker
May 30, 2016
A walkthrough for setting up Sia in Docker in Synology DSM