Reading List

The most recent articles from a list of feeds I subscribe to.

Lessons from my First Exit

In April of this year, I sold TinyPilot, the bootstrapped hardware company I founded and ran for four years.

I wrote a post in May that told the story of the sale, but I’d like to share more about the practical lessons I learned from the experience.

In this post, I’m sharing what went well, what I want to improve in the future, and what surprised me about selling my business.

Table of contents

Details of the sale

  • Sale price: $598,000 (2.4x annual earnings)
  • Broker commission: $88,900
  • Legal fees: $18,297
  • My profit from the sale: $490,803
  • Payment terms: Full cash payment at closing (no earnout, no seller financing)
  • Seller obligations: 30 days of free consulting (max of 80 hours total)
  • Lifetime profit from business (including final sale): $920k over four years

What I’m glad I did

Invested heavily in documentation

Before I started my first business six years ago, I read the book Built to Sell by John Warrilow. It encourages founders to build businesses that run smoothly without the founder actively managing day-to-day activities. An effective company should have a set of well-defined processes and a team that knows how to execute them.

Takeaways from Charles Marohn's "Escaping the Housing Trap"

Last week, I stumbled upon a reddit post announcing that the author, Charles Marohn, was giving a free talk near my town the next morning. Marohn is the author of Strong Towns, one of my favorite books of the last few years. So, my wife and I attended the talk and enjoyed it.

The talk is based on ideas from Marohn’s new book, Escaping the Housing Trap, which I haven’t read yet, so these notes are from memory.

An Unsuccessful Experiment with Nemotron

A few weeks ago, NVIDIA released Nemotron, a large language model that they derived from Meta’s Llama 3.1 70B.

NVIDIA claimed at release that Nemotron outperformed GPT-4o and Claude 3.5 Sonnet on certain benchmarks. That was exciting news, as my experience with self-hostable AI models is that they trail commercial models by about a year in terms of accuracy and quality.

I decided to test out Nemotron with a few simple coding tasks to see how it compared to commercial models like Claude 3.5 Sonnet.

Using Nix to Fuzz Test a PDF Parser (Part One)

Fuzz testing is a technique for automatically uncovering bugs in software. The problem is that it’s a pain to set up. Read any fuzz testing tutorial, and the first task is an hour of building tools from source and chasing down dependencies upon dependencies.

I recently found that Nix eliminates a lot of the gruntwork from fuzz testing. I created a Nix configuration that kicks off a fuzz testing workflow with a single command. The only dependencies are Nix and git.

Using Nix to Fuzz Test a PDF Parser (Part Two)

This is the second half of a post about using Nix to automate a fuzz testing workflow.

At this point, I can run honggfuzz against pdftotext, but it takes a bit of manual effort to get things started. I promised in part one that I’d get all of the installation and fuzzing down to a single command.

Downloading tricky PDFs

In my ad-hoc fuzzing, I manually downloaded a PDF from the IRS website. I’ll start by automating that step.