About
Michael Lynch is an independent software developer, technical writer, and blogger. He graduated with a degree in Computer Science from Columbia University and worked as a software engineer at Microsoft and Google, as well as a security consultant at NCC Group.
In 2018, he left Google to become an indie bootstrapped founder. He created TinyPilot, an open-source hardware KVM-over-IP device, growing the business over four years before successfully selling the company. He is also the author of Refactoring English: Effective Writing for Software Engineers.
Since leaving big tech, he has maintained an open, transparent monthly retrospective series on his website mtlynch.io, publishing in-depth articles on bootstrapping products, code review best practices, cybersecurity, and software craftsmanship.
You can also find Michael Lynch on:
- Website: https://mtlynch.io
- Twitter: @deliberatecoder
- GitHub: mtlynch
- Bluesky: @mtlynch.io
- Mastodon: m.mtlynch.io/@michael
- YouTube: https://www.youtube.com/@mtlynch
- Email: [email protected]
Articles
- Refactoring English: Month 20
- Refactoring English: Month 19
- Refactoring English: Month 18
- Refactoring English: Month 17
- Refactoring English: Month 16
- Claude Code Found a Linux Vulnerability Hidden for 23 Years
- Refactoring English: Month 15
- Refactoring English: Month 14
- Eversource EV Rebate Program Exposed Massachusetts Customer Data
- My Eighth Year as a Bootstrapped Founder
- Refactoring English: Month 13
- Refactoring English: Month 12
- My First Impressions of MeshCore Off-Grid Messaging
- Add a VLAN to OPNsense in Just 26 Clicks Across 6 Screens
- Refactoring English: Month 11
- Hold Off on Litestream 0.5.0
- Read My Blog With JavaScript
- Refactoring English: Month 10
- List of 2x-resolution xkcd Cartoons
- Get xkcd Cartoons at 2x Resolution
- I Once Appeared in The Old New Thing
- Refactoring English: Month 9
- Give Your Spouse the Gift of a Couple's Email Domain
- Flash an AirGradient ONE from the Command Line
- Refactoring English: Month 8
- Migrating a ZFS pool from RAIDZ1 to RAIDZ2
- Refactoring English: Month 7
- goHardDrive Leaked Personal Data for Thousands of Customers
- My First Impressions of Gleam
- A Simple Example of Calling an Elixir Library from Gleam
- Refactoring English: Month 6
- Which New Language Should I Learn for Web Development?
- Notes from Simon Willison's Interview on Software Misadventures
- Refactoring English: Month 5
- My $6k Advance as a Self-Published Technical Author
- Don't Marry Your Podcasting Platform: Host Your Own Podcast Feed
- Refactoring English: Month 4
- My Book's Pre-Sale Just Barely Succeeded
- No Longer My Favorite Git Commit
- Refactoring English: Month 3
- Never Pay the First Bill by Marshall Allen
- My Zig Configuration for VS Code
- Refactoring English: Month 2
- Install NixOS on a Free Oracle Cloud VM
- My Seventh Year as a Bootstrapped Founder
- The Cline AI Assistant is Mesmerizing
- How to Resolve Local Hostnames in OPNSense
- Increase Your Reply Rate on Cold Emails to Me
- Overcoming Gotchas in Samsung Secure Erase
- Refactoring English: Month 1
- if got, want: A Simple Way to Write Better Go Tests
- The Case for Open Borders by John Washington
- Paternity Leave: Month 4
- My Feedback about Hello Base
- Run a Simple Go Web Service on NixOS
- Paternity Leave: Month 3
- Delete the Timestamps from your Static Blog
- Creating a Nix Workflow to Fuzz netconsd
- Lessons from my First Exit
- Takeaways from Charles Marohn's "Escaping the Housing Trap"
- An Unsuccessful Experiment with Nemotron
- Using Nix to Fuzz Test a PDF Parser (Part Two)
- Using Nix to Fuzz Test a PDF Parser (Part One)
- Massachusetts Residents Can Sue Online Merchants for Spam
- Paternity Leave: Month 2
- Paternity Leave: Month 1
- I'm Still Confused About Base
- Noah Bragg's First Stoke Fire Livestream
- Educational Products: Month 2
- GUIs are Antisocial
- Want to Buy Is It Keto?
- Educational Products: Month 1
- Configure a Git Shell Prompt Under Nix
- Reset Month
- Join My Six-Week Blogging Course
- Reset Month
- I Sold TinyPilot, My First Successful Business
- Hiring: Freelance Blog Cartoonist
- Experimenting with Lllama 3 via Ollama
- TinyPilot: Month 45
- Building My First Homelab Server Rack
- Why does an extraneous build step make my Zig app 10x faster?
- TinyPilot: Month 44
- TinyPilot: Month 43
- My Sixth Year as a Bootstrapped Founder
- Strong Towns
- ArchiveBox is Super Cool
- How to Republish or Adapt this Content
- TinyPilot: Month 42
- Use a Nix Flake without Adding it to Git
- Using Zig to Unit Test a C Application
- Using Zig to Call C Code: Strings
- TinyPilot: Month 41
- Rough Experiments with Llamafile and LLaVA 1.5
- A Simple Example of Calling a C Library from Zig
- TinyPilot: Month 40
- Installing Jellyfin on TrueNAS Core
- TinyPilot: Month 39
- Per-Project Development Environments with Nix
- Running NixOS on Proxmox
- TinyPilot: Month 38
- Import from a URL in Nix
- Aardvark'd: The Fog Creek Documentary, 18 Years Later
- TinyPilot: Month 37
- Installing NixOS on Raspberry Pi 4
- Failed Attempts to Install NixOS on the Raspberry Pi 4
- TinyPilot: Month 36
- Debugging VLANs on my TP-Link Managed Switch
- My First Impressions of Nix
- TinyPilot: Month 35
- Takeaways from Cory Zue's May 2023 Livecoding Session
- Deploying Syncthing on a Fly.io Cloud Server
- TinyPilot: Month 34
- Questions to ask a potential 3PL vendor
- TinyPilot: Month 33
- Designing the Ideal Bootstrapped Business
- TinyPilot: Month 32
- TinyPilot: Month 31
- My Fifth Year as a Bootstrapped Founder
- TinyPilot: Month 30
- Go Programming Blueprints by Mat Ryer
- TinyPilot: Month 29
- TinyPilot: Month 28
- On Migrating from Cypress to Playwright
- TinyPilot: Month 27
- Should I Invest in iBonds?
- TinyPilot: Month 26
- A Survey of Applicant Tracking Systems for Bootstrapped Businesses
- Fixing Memory Exhaustion Bugs in My Golang Web App
- TinyPilot: Month 25
- Back Up Encrypted ZFS Data without Unlocking It
- I Regret My $46k Website Redesign
- TinyPilot: Month 24
- TinyPilot: Month 23
- Building a Budget Homelab NAS Server (2022 Edition)
- TinyPilot: Month 22
- TinyPilot: Month 21
- TinyPilot: Month 20
- TinyPilot: Month 19
- My Fourth Year as a Bootstrapped Founder
- TinyPilot: Month 18
- TinyPilot: Month 17
- TinyPilot: Month 16
- Badass: Making Users Awesome by Kathy Sierra
- TinyPilot: Month 15
- TinyPilot: Month 14
- How to Stop Worrying and Start Living by Dale Carnegie
- TinyPilot: Month 13
- TinyPilot: Month 12
- The Goal by Eliyahu M. Goldratt
- TinyPilot: Month 11
- TinyPilot: Month 10
- How Litestream Eliminated My Database Server for $0.03/month
- TinyPilot: Month 9
- Shoe Dog by Phil Knight
- Guidelines for Freelance Developers Working with Me
- TinyPilot: Month 8
- TinyPilot: Month 7
- My Third Year as a Solo Developer
- TinyPilot: Month 6
- How to Be an Antiracist by Ibram X. Kendi
- TinyPilot: Month 5
- How to Make Your Code Reviewer Fall in Love with You
- Bowling Alone by Robert D. Putnam
- TinyPilot: Month 4
- TinyPilot: Month 3
- Building a Homelab VM Server (2020 Edition)
- TinyPilot: Month 2
- Traction by Gabriel Weinberg and Justin Mares
- How I Collected a Debt from an Unscrupulous Merchant
- TinyPilot: Month 1
- The Seven Habits of Highly Effective People by Stephen R. Covey
- TinyPilot: Build a KVM Over IP for Under $100
- Is It Keto: Month 13
- Key Mime Pi: Turn Your Raspberry Pi into a Remote Keyboard
- The Making of Prince of Persia by Jordan Mechner
- Is It Keto: Month 12
- My Eight-Year Quest to Digitize 45 Videotapes (Part Two)
- My Eight-Year Quest to Digitize 45 Videotapes (Part One)
- Editing and Sharing Home Videos with MediaGoblin
- Nonviolent Communication by Marshall B. Rosenberg, Ph.D.
- Is It Keto: Month 11
- Update: Stripe's Response Regarding User Tracking
- Stripe is Silently Recording Your Movements On its Customers' Websites
- An Unexpected Reset Month
- WanderJest: Month 2
- WanderJest: Month 1
- My Second Year as a Solo Developer
- Pursuing a Business I'll Love
- A Simple Pre-Rendered Web App Using Vue + Nuxt
- Outliers by Malcolm Gladwell
- I'm Probably Procrastinating
- Eliminating Distractions from Social Media, Email, and StackOverflow
- Is It Keto - Month 10
- Notes from PyGotham 2019
- Is It Keto - Month 9
- Hiring Content Writers: Part Two - Creating a Detailed Job Description
- Hiring Content Writers: Part Three - Screening Candidates
- Hiring Content Writers: Part One - Finding Writers
- Hiring Content Writers: Part Four - Working with Writers
- Hiring Content Writers: Part Five - Terminating Writers
- Hiring Content Writers: A Guide for Small Businesses
- Is It Keto - Month 8
- The Dumbest Task I Ever Outsourced
- What Got Done - Month 3
- The Mom Test by Rob Fitzpatrick
- What Got Done - Month 2
- Staying Motivated by Sending Status Updates to Nobody
- What Got Done - Month 1
- How to Grow Quickly and Never Turn a Profit
- Chaos Monkeys by Antonio García Martínez
- Recovery Month
- End-to-End Testing Web Apps: The Painless Way
- Notes from PyTexas 2019
- Is It Keto: Month 7
- Is It Keto: Month 6
- Is It Keto: Month 5
- My First Year as a Solo Developer
- Is It Keto: Month 4
- What I Learned About Upwork from a Bumbling Scammer
- Retrofitting Apps for Cloud Storage with Zero Code Changes
- Is It Keto: Month 3
- Start Small, Stay Small by Rob Walling
- Why Good Developers Write Bad Unit Tests
- How I Tricked Myself into Shipping Too Late
- Fooled by Randomness by Nassim Nicholas Taleb
- Deep Work by Cal Newport
- Resurrecting a Dead Library: Part Three - Rehabilitation
- Zestful: Month 5
- Resurrecting a Dead Library: Part Two - Stabilization
- Happy City by Charles Montgomery
- Resurrecting a Dead Library: Part One - Resuscitation
- Zestful: Month 4
- What I've Been Doing Since Quitting My Job
- A Follow-Up and Space Duck
- Why I Quit Google to Work for Myself
- How to Hire a Cartoonist to Make Your Blog Less Boring
- KetoHub Update: Month 3
- The Perils of Outsourcing Your MVP
- KetoHub: Month 2
- Sia-Minio Integration Postmortem
- How to Do Code Reviews Like a Human (Part Two)
- How to Do Code Reviews Like a Human (Part One)
- Create Your Own Low-Cost Cloud Storage App with Sia and Nextcloud
- How I Hired a Freelance Editor for My Blog
- GreenPiThumb: A Raspberry Pi Gardening Bot
- How I Stole Your Siacoin
- A Beginner's Guide to Mining Siacoin
- Building a Homelab VM Server
- Adventures in Outsourcing: Cooking with TaskRabbit
- Automated Prosper Investing with ProsperBot
- Testing Ansible Web App Roles with Selenium
- Automatically Deploying ClipBucket with Ansible
- Running Sia on a Synology NAS via Docker