Seven years ago, I built my first home server. It made my software development work faster and more enjoyable, so I’ve gotten more into the home server scene. I built a custom storage server, another development server, and a dedicated firewall. At some point, my wife gently obse … | Continue reading
For the past few months, I’ve been curious about two technologies: the Zig programming language and Ethereum cryptocurrency. To learn more about both, I’ve been using Zig to write a bytecode interpreter for the Ethereum Virtual Machine. Zig is a great language for performance opt … | Continue reading
Six years ago, I quit my job as a developer at Google to create my own bootstrapped software company. For the first few years, all of my businesses flopped. The best of them earned a few hundred dollars per month in revenue, but none were profitable. Halfway through my third year … | Continue reading
In 2005, Joel Spolsky’s software company, Fog Creek, filmed a documentary about their summer internship program. The film is called Aardvark’d: 12 Weeks with Geeks, and it follows four college interns as they design, implement, and launch a completely new software product. That’s … | Continue reading
Nix is a tool that allows you to define your software environment from code. Nix has several components to it, and one of the most interesting to me is NixOS, which lets you use Nix tooling to define your entire OS configuration using plaintext files. I only recently started expe … | Continue reading
I recently discovered Syncthing, an open-source tool for syncing files across multiple machines. Setting up Syncthing on my personal devices was easy, but I went on an interesting journey deploying it to a cloud server. Why run Syncthing in the cloud? Syncthing synchronizes files … | Continue reading
Five years ago, I quit my job as a developer at Google to create my own bootstrapped software company. For the first few years, all of my businesses flopped. None of them earned more than a few hundred dollars per month in revenue, and they all had negative profits. Halfway throu … | Continue reading
Cypress is an open-source tool for testing web applications end-to-end. I first saw Gleb Bahmutov demo Cypress at a 2018 web dev meetup in New York, and I was blown away.I’ve been using Cypress since I saw it demoed at a dev meetup in 2018.Before discovering Cypress, I … | Continue reading
Using profiling tools and debugging techniques to improve performance of PicoShare. | Continue reading
I recently built my first home TrueNAS server. I use it to store the bulk of my personal and work data, so I’ve been learning how to make the most of TrueNAS and its filesystem, ZFS. Today, I want to tell you about backing up encrypted data. My homelab TrueNAS server One of the n … | Continue reading
The eight-month redesign is finally complete! | Continue reading
How I chose parts, built, and configured my first custom home storage server. | Continue reading
Four years ago, I quit my job as a developer at Google to create my own self-funded software company. For the first few years, all of my businesses flopped. They all operated at a loss, and none of them earned more than a few hundred dollars per month in revenue. Halfway through … | Continue reading
A lesson in Sia wallet seed safety | Continue reading
How do I increase TinyPilot's profit margins? | Continue reading
Here’s a riddle. My web app keeps all of its data in a SQL database. I can spontaneously tear it down, deploy the code to a different hosting platform, and the app will still serve all the same data. Running my app in production costs $0.03 per month. How is this possible? That’s … | Continue reading
I provide this document when advertising dev jobs, and I pay freelancers to read it when they begin working with me. | Continue reading
My growth streak had to end somewhere. | Continue reading
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. | Continue reading
I'm safe and healthy, but my businesses have taken a tumble. | Continue reading
Best practices for code review when you're the author. | Continue reading
My journey to create a YouTube of memories from my family's old home videos. | Continue reading
I built a home server to host my development VMs and went a bit overboard. | Continue reading
Within two emails, a merchant went from blatant dismissal to full payment, and I owe it to The Organized Professional Method. | Continue reading
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. | Continue reading
Using the Pi as a USB gadget, I can impersonate a keyboard and make it type whatever I want through the web browser. | Continue reading
My journey to create a YouTube of memories from my family's old home videos. | Continue reading
In part one, I described my arduous journey to capture my old home movies in digital format and divide them into individual scenes. After processing all the clips, I wanted the experience of exploring them to be as simple as looking up clips on YouTube. Because these videos are m … | Continue reading
Stripe has made several significant, positive changes to its user tracking and privacy policies in the last week. | Continue reading
An investigation into how Stripe tracks your users and what you can do to prevent it | Continue reading
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. | Continue reading
Two of my businesses had record-setting months, and I'm finally building the app I've always wanted. | Continue reading
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. | Continue reading
In this post, I’ll show you how to pre-render pages using Vue and Nuxt. This method combines the convenient development experience of Vue without forfeiting critical features like social sharing or search engine optimization. This tutorial assumes no experience with Vue or Nuxt. … | Continue reading
Simple techniques for managing your apps instead of allowing them to manage you. | Continue reading
A complete walkthrough of how I find freelance writers, screen them, and train them to work with me. | Continue reading
I derive immense satisfaction from outsourcing my chores, even when it causes me to pay $96 to clean a $39 keyboard. | Continue reading
Writing short entries in a plain textbox bolstered my motivation and miraculously made status meetings interesting. | Continue reading
A eulogy for my failed online business. | Continue reading
Create an end-to-end test for your web app in under 30 minutes (no software installation required). | Continue reading
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… | Continue reading
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. | Continue reading
How I solved the mystery of the worst scammer I’ve ever encountered. | Continue reading
An exercise in integrating Docker, Google Cloud Storage, and the gcsfuse utility. | Continue reading
The standard techniques of good development can lead you astray if you don’t adjust them for unit tests. | Continue reading
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. | Continue reading
How I used safe techniques to refactor a legacy codebase and minimize the risk of regressions | Continue reading
Investing in lifelong writing skills paid dividends immediately. | Continue reading