From c6163ade96a3f05a9b03f188512eadae4d8f697f Mon Sep 17 00:00:00 2001 From: Michael Lynch Date: Thu, 9 Jan 2025 16:27:09 -0500 Subject: [PATCH 01/34] Add Year 7 review --- content/posts/solo-developer-year-7/index.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 content/posts/solo-developer-year-7/index.md diff --git a/content/posts/solo-developer-year-7/index.md b/content/posts/solo-developer-year-7/index.md new file mode 100644 index 00000000..0a17f417 --- /dev/null +++ b/content/posts/solo-developer-year-7/index.md @@ -0,0 +1,18 @@ +--- +title: "My Seventh Year as a Bootstrapped Founder" +date: 2025-02-01 +--- + +## I sold my company + +I kind of milked the story for all it's worth. I wrote about everything leading up to it as well as all the lessons I learned. And I went on some podcasts to talk about it more. + +## Grading last year's goals + +Last year, I set [three high-level goals](/solo-developer-year-6/#goals-for-year-seven) that I wanted to achieve during the year. Here's how I did against those goals: + +### Manage TinyPilot on 20 hours per week + +### Publish a course or book + +### Write software for ten working hours per week From 903b7d06478f79094f31f4e1c3b205f134b2e65d Mon Sep 17 00:00:00 2001 From: Michael Lynch Date: Fri, 10 Jan 2025 10:56:12 -0500 Subject: [PATCH 02/34] work in progress --- content/posts/solo-developer-year-7/index.md | 32 ++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/content/posts/solo-developer-year-7/index.md b/content/posts/solo-developer-year-7/index.md index 0a17f417..e098d9d6 100644 --- a/content/posts/solo-developer-year-7/index.md +++ b/content/posts/solo-developer-year-7/index.md @@ -1,12 +1,38 @@ --- title: "My Seventh Year as a Bootstrapped Founder" date: 2025-02-01 +tags: + - annual review --- ## I sold my company I kind of milked the story for all it's worth. I wrote about everything leading up to it as well as all the lessons I learned. And I went on some podcasts to talk about it more. +I'm still incredibly grateful for how it worked out. I don't + +## I became a new parent + +## I learned cool technologies + +### Nix + +The technology that's had the biggest impact on my work the last year is Nix. I like it so much that I started using NixOS as my only OS for both personal and work computing. This is after 30 years of mainly working from a Windows desktop. + +The main feature of Nix I love is dev shells. You can create a custom environment + +I create dev shells for all of my projects now. Whenever I'm contributing to an open-source project I don't maintain, I create my own private dev shell with all the project's dependencies. + +A lot of people shy away from Nix because it's so complicated and difficult to learn, but what too few people realize is that you can use a lot of powerful features even if you're a dummy like me and understand about 2% of Nix. Once you see + +The community is a mess. I wish there was a more centralized leadership board that could unite the community, but there isn't. + +### htmx + +### Zig + +### hongfuzz + ## Grading last year's goals Last year, I set [three high-level goals](/solo-developer-year-6/#goals-for-year-seven) that I wanted to achieve during the year. Here's how I did against those goals: @@ -16,3 +42,9 @@ Last year, I set [three high-level goals](/solo-developer-year-6/#goals-for-year ### Publish a course or book ### Write software for ten working hours per week + +## Goals for next year + +### Learn a new programming language + +A lot of the people who I like are excited about Elixir and Phoenix, so I'm curious to try those. From 599a3a7da72c6d4704e9f08fe37b7eb73d31089f Mon Sep 17 00:00:00 2001 From: Michael Lynch Date: Fri, 10 Jan 2025 11:26:25 -0500 Subject: [PATCH 03/34] work in progress --- content/posts/solo-developer-year-7/index.md | 45 +++++++++++++++++--- 1 file changed, 40 insertions(+), 5 deletions(-) diff --git a/content/posts/solo-developer-year-7/index.md b/content/posts/solo-developer-year-7/index.md index e098d9d6..541a4594 100644 --- a/content/posts/solo-developer-year-7/index.md +++ b/content/posts/solo-developer-year-7/index.md @@ -5,40 +5,75 @@ tags: - annual review --- +Six years ago, I [quit my job as a developer at Google](/why-i-quit-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, I created a device called [TinyPilot](https://tinypilotkvm.com). It allowed users to control their computers remotely. The product quickly caught on, and it's been my main focus ever since. + +I sold the company this past year for $598k. + +In this post, I'll share what I've learned about being a bootstrapped founder from my seventh year doing it. + ## I sold my company I kind of milked the story for all it's worth. I wrote about everything leading up to it as well as all the lessons I learned. And I went on some podcasts to talk about it more. -I'm still incredibly grateful for how it worked out. I don't +I'm still incredibly grateful for how it worked out. Five of the six employees are still there. I've been happy with the direction of the company. ## I became a new parent +## I worked on educational products + +Hour for hour, it's the highest return on investment thing I've done since leaving Google + ## I learned cool technologies ### Nix -The technology that's had the biggest impact on my work the last year is Nix. I like it so much that I started using NixOS as my only OS for both personal and work computing. This is after 30 years of mainly working from a Windows desktop. +The technology that's had the biggest impact on my work the last year is Nix. I like it so much that I started using NixOS as my only OS for both personal and work computing. This is after 30 years of mainly working from a Windows desktop. It has completely replaced Ansible, which I used heavily for six years. -The main feature of Nix I love is dev shells. You can create a custom environment +The main feature of Nix I love is [dev shells](/notes/nix-dev-environment/). They allow you to create a custom environment for each of your projects. -I create dev shells for all of my projects now. Whenever I'm contributing to an open-source project I don't maintain, I create my own private dev shell with all the project's dependencies. +I create dev shells for all of my projects now. Whenever I'm contributing to an open-source project I don't maintain, I create [my own private dev shell](/notes/use-nix-flake-without-git/) with all the project's dependencies. -A lot of people shy away from Nix because it's so complicated and difficult to learn, but what too few people realize is that you can use a lot of powerful features even if you're a dummy like me and understand about 2% of Nix. Once you see +A lot of people shy away from Nix because it's so complicated and difficult to learn, but what too few people realize is that you can use a lot of powerful features even if you're a dummy like me and understand about 2% of Nix. Once you see how to create a dev shell, you can mainly just tweak it without understanding much. + +But also, this year, I finally abandoned my Windows desktop after 30 years of Windows being my primary desktop OS, and I'm now running NixOS. I love it, and I only miss a few things about Windows. The community is a mess. I wish there was a more centralized leadership board that could unite the community, but there isn't. ### htmx +I'd seen people talking about htmx for the past several years, and I never got it. + ### Zig +I'd been interested in Zig ever since I listened to Andrew Kelly on the XX podcast XX years ago. + +The thing that kept me from learning Zig was that my fun coding is mainly around projects I want to use, and most of the project ideas I have are web apps. + +I still have fun coding in Zig. If I was sent to live on a desert island for a year with a laptop but no Internet, the project I'd want to work on is taking an open-source rebuild of some computer game I played in the 90s (e.g. open AoE, open command and conquer) and porting all the disgusting C++ code to elegant Zig. + ### hongfuzz +I wish I had time to do more fuzzing tutorials with Nix because I feel like the world is sleeping on Nix as a fuzzing tool. + ## Grading last year's goals Last year, I set [three high-level goals](/solo-developer-year-6/#goals-for-year-seven) that I wanted to achieve during the year. Here's how I did against those goals: ### Manage TinyPilot on 20 hours per week +- **Result**: Reduced management to 20 hours per week +- **Grade**: A + +I sold the company in April, so I only managed TinyPilot for a small amount of the year, but I finally did achieve my goal of managing on just 20 hours per week. That had been a repeated goal for the previous XX years. + +The thing that finally made it work was that I had no choice. Due dilligence and managing the sale of the company took up 15-20 hours per week by itself, so I just didn't have the spare hours to do what I had been doing before. + +The other unexpected consequence of selling was that the new CEO didn't have a programming background, so a lot of my focus in my last few months as CEO was identifying workflows that depended on the CEO making technical decisions and finding ways to empower the employees to do the heavy technical lifting. For example, I felt like I was just doing a few bits of our release process, but when I finally wrote it all out for the new CEO, I realized most of the steps were still on me. + ### Publish a course or book ### Write software for ten working hours per week From 48be5544dbb8dd390496cda88704df68bb6b2e1f Mon Sep 17 00:00:00 2001 From: Michael Lynch Date: Mon, 13 Jan 2025 07:07:42 -0500 Subject: [PATCH 04/34] work in progress --- content/posts/solo-developer-year-7/index.md | 24 ++++++++++++++++---- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/content/posts/solo-developer-year-7/index.md b/content/posts/solo-developer-year-7/index.md index 541a4594..1e06ee02 100644 --- a/content/posts/solo-developer-year-7/index.md +++ b/content/posts/solo-developer-year-7/index.md @@ -7,15 +7,27 @@ tags: Six years ago, I [quit my job as a developer at Google](/why-i-quit-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. +Every year, I post an update about how life is going as a bootstrapped software founder and what went well and poorly in the past year. -Halfway through my third year, I created a device called [TinyPilot](https://tinypilotkvm.com). It allowed users to control their computers remotely. The product quickly caught on, and it's been my main focus ever since. +## I sold my company -I sold the company this past year for $598k. +The defining feature of my professional life last year was that I sold TinyPilot, the company I founded in 2020. -In this post, I'll share what I've learned about being a bootstrapped founder from my seventh year doing it. +TinyPilot was the first profitable business I started after quitting my job in 2018. It followed a lot of flops. -## I sold my company +The product was a device that let users control their computers remotely. I built the prototype with a $35 Raspberry Pi mini computer and blogged about it, then suddenly dozens of people were willing to pay $100-200 on kits to build their own. + +For the next four years, I continued improving the product. I moved from kits to pre-made devices. I hired a team to help me with development, support + +For the first few years, all of my products flopped. I couldn't figure out how to build something customers wanted to pay for. + +Halfway through my third year, I created a device called [TinyPilot](https://tinypilotkvm.com) that let users to control their computers remotely. Suddenly, customers were excited to buy what I had built, so I focused on that for the next four years. I built a company around it that I grew to seven people and $1M in annual revenue. + +Last year, I sold the company this past year for $598k. + +Selling my company was the defining feature of my professional life for the last year, but it was only two months in. + +In this post, I'll share what I've learned about being a bootstrapped founder from my seventh year doing it. I kind of milked the story for all it's worth. I wrote about everything leading up to it as well as all the lessons I learned. And I went on some podcasts to talk about it more. @@ -23,6 +35,8 @@ I'm still incredibly grateful for how it worked out. Five of the six employees a ## I became a new parent +In August, my wife and I welcomed our first child. It's been the happiest time of my life. + ## I worked on educational products Hour for hour, it's the highest return on investment thing I've done since leaving Google From 16160a3d9fbc0922f2858889129d6c61feadf0e9 Mon Sep 17 00:00:00 2001 From: Michael Lynch Date: Mon, 13 Jan 2025 07:41:42 -0500 Subject: [PATCH 05/34] work in progress --- content/posts/solo-developer-year-7/index.md | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/content/posts/solo-developer-year-7/index.md b/content/posts/solo-developer-year-7/index.md index 1e06ee02..c419fe16 100644 --- a/content/posts/solo-developer-year-7/index.md +++ b/content/posts/solo-developer-year-7/index.md @@ -15,21 +15,11 @@ The defining feature of my professional life last year was that I sold TinyPilot TinyPilot was the first profitable business I started after quitting my job in 2018. It followed a lot of flops. -The product was a device that let users control their computers remotely. I built the prototype with a $35 Raspberry Pi mini computer and blogged about it, then suddenly dozens of people were willing to pay $100-200 on kits to build their own. +The TinyPilot product was a device that let users control their computers remotely. I built the prototype with a $35 Raspberry Pi mini computer and blogged about it, then suddenly dozens of people were willing to pay me $100-200 for kits to build their own. -For the next four years, I continued improving the product. I moved from kits to pre-made devices. I hired a team to help me with development, support +For the next four years, I continued improving the product. I moved from kits to pre-made devices. I hired a team to help me with hardware, software, support, and logistics, eventually growing to $1M/year in revenue. -For the first few years, all of my products flopped. I couldn't figure out how to build something customers wanted to pay for. - -Halfway through my third year, I created a device called [TinyPilot](https://tinypilotkvm.com) that let users to control their computers remotely. Suddenly, customers were excited to buy what I had built, so I focused on that for the next four years. I built a company around it that I grew to seven people and $1M in annual revenue. - -Last year, I sold the company this past year for $598k. - -Selling my company was the defining feature of my professional life for the last year, but it was only two months in. - -In this post, I'll share what I've learned about being a bootstrapped founder from my seventh year doing it. - -I kind of milked the story for all it's worth. I wrote about everything leading up to it as well as all the lessons I learned. And I went on some podcasts to talk about it more. +In 2024, I sold the company for $598k. My wife and I wanted to start a family, and I knew that being the sole manager at a seven-person company wasn't how I wanted my work to be when we had a baby. I found a buyer whose vision for the company aligned with what I wanted it to be, and we completed the sale in April 2024. I'm still incredibly grateful for how it worked out. Five of the six employees are still there. I've been happy with the direction of the company. From ebfff7c2a78c508412c61c85213dbe153f77286f Mon Sep 17 00:00:00 2001 From: Michael Lynch Date: Mon, 13 Jan 2025 09:35:14 -0500 Subject: [PATCH 06/34] work in progress --- content/posts/solo-developer-year-7/index.md | 36 ++++++++++++++++++-- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/content/posts/solo-developer-year-7/index.md b/content/posts/solo-developer-year-7/index.md index c419fe16..52cfdb46 100644 --- a/content/posts/solo-developer-year-7/index.md +++ b/content/posts/solo-developer-year-7/index.md @@ -21,21 +21,51 @@ For the next four years, I continued improving the product. I moved from kits to In 2024, I sold the company for $598k. My wife and I wanted to start a family, and I knew that being the sole manager at a seven-person company wasn't how I wanted my work to be when we had a baby. I found a buyer whose vision for the company aligned with what I wanted it to be, and we completed the sale in April 2024. -I'm still incredibly grateful for how it worked out. Five of the six employees are still there. I've been happy with the direction of the company. +I already wrote and podcasted a lot about the sale and the lessons I learned, so I won't rehash it, but in short, I'm still very grateful for how everything worked out. ## I became a new parent In August, my wife and I welcomed our first child. It's been the happiest time of my life. +It confirmed my belief that I wanted to move on from TinyPilot before the baby arrived. + +As an indie founder, my schedule is incredibly flexible. Especially now that I work by myself. So having a baby is one of those things where I think, "How do people with regular jobs manage this?" + +I had no professional responsibilities, tons of friends and family support nearby, and + +It's also one of those things + ## I worked on educational products -Hour for hour, it's the highest return on investment thing I've done since leaving Google +After TinyPilot, I had to decide what to do next. + +In 2021, I released a short video course about blogging for technial audiences. It only made $XXk that year, but it's made $XXk total, making it the highest return on investment project I've ever done. + +Educational products also work well with a young baby because I can work on it at my own pace. There are no servers to keep online or users waiting on me for support issues. + +So, over the summer, I taught a live version of my blogging course. The course went okay, but the dominant feedback from students was that they wanted to learn more about writing technique and less about platforms to share your writing. + +After my son was born, it became harder to record videos in my office, so I switched to writing a book. My plan is to publish it chapter by chapter and iterate on the material based on reader feedback. ## I learned cool technologies +When I was running TinyPilot, I didn't have a lot of time for technical work, which was a bummer because I still love writing software. + +I've always loved programming, but I've never found it as exciting as I have in the last year. I'm awed by the amazing software that's available now for free, and I'm only able to experiment with a tiny fraction of it. + ### Nix -The technology that's had the biggest impact on my work the last year is Nix. I like it so much that I started using NixOS as my only OS for both personal and work computing. This is after 30 years of mainly working from a Windows desktop. It has completely replaced Ansible, which I used heavily for six years. +The technology that's had the biggest impact on my work the last year is Nix and NixOS. + +I like Nix so much that I use it in every programming project, and now all of my personal and work computers run NixOS after + +If you're curious about Nix, a low-risk, high-reward way to use it is to manage dev shells. + +You probably switch between multiple projects that have different dependencies. Maybe you have a project A that depends on Node.js XX and Python 2.7. And you have another project B that depends on Node.js XX and Python 3.XX. You don't want to do anything to the Node and Python installations in Project A that will mess up Project B, and vice-versa. There are version managers and virtual environments, but they're tech specific. Nix dev shells let you manage all the dependencies for a project so that when you're working in project A, the environment only sees Python 2.7 and Node.js XX no matter what happens in project B. + +Read that post. Hopefully, you see that you don't have to understand much about Nix to + +started using NixOS as my only OS for both personal and work computing. This is after 30 years of mainly working from a Windows desktop. It has completely replaced Ansible, which I used heavily for six years. The main feature of Nix I love is [dev shells](/notes/nix-dev-environment/). They allow you to create a custom environment for each of your projects. From 2253e5bffc8e374a5c3954d824944c6e21e26179 Mon Sep 17 00:00:00 2001 From: Michael Lynch Date: Mon, 13 Jan 2025 09:36:56 -0500 Subject: [PATCH 07/34] work in progress --- content/posts/solo-developer-year-7/index.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/content/posts/solo-developer-year-7/index.md b/content/posts/solo-developer-year-7/index.md index 52cfdb46..4a72e62e 100644 --- a/content/posts/solo-developer-year-7/index.md +++ b/content/posts/solo-developer-year-7/index.md @@ -63,9 +63,7 @@ If you're curious about Nix, a low-risk, high-reward way to use it is to manage You probably switch between multiple projects that have different dependencies. Maybe you have a project A that depends on Node.js XX and Python 2.7. And you have another project B that depends on Node.js XX and Python 3.XX. You don't want to do anything to the Node and Python installations in Project A that will mess up Project B, and vice-versa. There are version managers and virtual environments, but they're tech specific. Nix dev shells let you manage all the dependencies for a project so that when you're working in project A, the environment only sees Python 2.7 and Node.js XX no matter what happens in project B. -Read that post. Hopefully, you see that you don't have to understand much about Nix to - -started using NixOS as my only OS for both personal and work computing. This is after 30 years of mainly working from a Windows desktop. It has completely replaced Ansible, which I used heavily for six years. +Read that post. Hopefully, you see that you don't have to understand much about Nix to get a working setup. And even if you're working in a repository you share with other people, you can still privately use Nix dev shells without commiting anything Nix-related to the project's source repo. The main feature of Nix I love is [dev shells](/notes/nix-dev-environment/). They allow you to create a custom environment for each of your projects. @@ -79,7 +77,7 @@ The community is a mess. I wish there was a more centralized leadership board th ### htmx -I'd seen people talking about htmx for the past several years, and I never got it. +I'd seen people talking about htmx for the past several years, and I never got it. I finally had a long plane ride, so I started reading the free ebook _Hypermedia Systems_, written by the authors of htmx. ### Zig From 57c9951b378a3d7330bdd602036563ade8c2cf2e Mon Sep 17 00:00:00 2001 From: Michael Lynch Date: Mon, 13 Jan 2025 10:16:58 -0500 Subject: [PATCH 08/34] work in progress --- content/posts/solo-developer-year-7/index.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/content/posts/solo-developer-year-7/index.md b/content/posts/solo-developer-year-7/index.md index 4a72e62e..a83a9fb0 100644 --- a/content/posts/solo-developer-year-7/index.md +++ b/content/posts/solo-developer-year-7/index.md @@ -108,10 +108,22 @@ The other unexpected consequence of selling was that the new CEO didn't have a p ### Publish a course or book +- **Result**: Taught a live course, but didn't publish a course or book. +- **Grade**: C + ### Write software for ten working hours per week +- **Result**: I write software for 10-20 hours per week. +- **Grade**: A + +This goal was more about freeing up time as a manager at TinyPilot, but this has worked out. I'm writing code a lot and enjoying it. + ## Goals for next year +### Earn $50k in profit + ### Learn a new programming language A lot of the people who I like are excited about Elixir and Phoenix, so I'm curious to try those. + +### Goal 3 From 251a6c30eb5a2c3d0d024b187ec222037203d97b Mon Sep 17 00:00:00 2001 From: Michael Lynch Date: Tue, 14 Jan 2025 07:54:21 -0500 Subject: [PATCH 09/34] work in progress --- content/posts/solo-developer-year-7/index.md | 28 +++++++++++++------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/content/posts/solo-developer-year-7/index.md b/content/posts/solo-developer-year-7/index.md index a83a9fb0..339c7629 100644 --- a/content/posts/solo-developer-year-7/index.md +++ b/content/posts/solo-developer-year-7/index.md @@ -5,19 +5,17 @@ tags: - annual review --- -Six years ago, I [quit my job as a developer at Google](/why-i-quit-google/) to create my own bootstrapped software company. +Seven years ago, I [quit my job as a developer at Google](/why-i-quit-google/) to create my own bootstrapped software company. Every year, I post an update about how life is going as a bootstrapped software founder and what went well and poorly in the past year. ## I sold my company -The defining feature of my professional life last year was that I sold TinyPilot, the company I founded in 2020. +The defining feature of my professional year was that I sold TinyPilot, the company I founded in 2020. -TinyPilot was the first profitable business I started after quitting my job in 2018. It followed a lot of flops. +The TinyPilot product is a device that lets users control their computers remotely. I built the prototype with a $35 Raspberry Pi mini computer and blogged about it. Suddenly, dozens of people were willing to pay me $100-200 for kits to build their own. -The TinyPilot product was a device that let users control their computers remotely. I built the prototype with a $35 Raspberry Pi mini computer and blogged about it, then suddenly dozens of people were willing to pay me $100-200 for kits to build their own. - -For the next four years, I continued improving the product. I moved from kits to pre-made devices. I hired a team to help me with hardware, software, support, and logistics, eventually growing to $1M/year in revenue. +For the next four years, I continued improving the product. I moved from unassembled kits to pre-made devices. I hired a team to help me with hardware, software, support, and logistics, eventually growing the company to $1M/year in revenue. In 2024, I sold the company for $598k. My wife and I wanted to start a family, and I knew that being the sole manager at a seven-person company wasn't how I wanted my work to be when we had a baby. I found a buyer whose vision for the company aligned with what I wanted it to be, and we completed the sale in April 2024. @@ -57,7 +55,7 @@ I've always loved programming, but I've never found it as exciting as I have in The technology that's had the biggest impact on my work the last year is Nix and NixOS. -I like Nix so much that I use it in every programming project, and now all of my personal and work computers run NixOS after +I've been adopting Nix little by little, but I like it so much that I use it in every programming project, and now all of my personal and work computers run NixOS. If you're curious about Nix, a low-risk, high-reward way to use it is to manage dev shells. @@ -77,15 +75,25 @@ The community is a mess. I wish there was a more centralized leadership board th ### htmx -I'd seen people talking about htmx for the past several years, and I never got it. I finally had a long plane ride, so I started reading the free ebook _Hypermedia Systems_, written by the authors of htmx. +I'd seen people talking about htmx for the past several years, but the concept never clicked for me. "The flagship feature is that you can make the HTML `