Issue #53 - Sindre Sorhus and One Year Anniversary
Happy Monday, everyone!
We made it to Issue #53! Thank you to everyone who read last week’s issue ❤️
This is a special week for Indie Dev Monday! It has been one year since my first issue 🎊
I can’t believe I’ve written a newsletter every week for an entire year 😅 Indie Dev Monday is like nothing anything else I’ve ever created. I didn’t know many indie developers when I started this. I knew almost nothing about the indie developer community. I’ve never felt qualified to write. But I love learning. I love networking. I love a challenge.
I didn’t have any expectations for Indie Dev Monday. I didn’t know what I was creating. I didn’t have any goals. But I kept with it. I found an amazing community. A community that always wants everyone to succeed. I found new indie developers. Developers that I follow and interact with daily. Some of these developers are now my best friends 😁
Indie Dev Monday started as a little side project. I wanted to learn about the indie developer community and test my writing skills. Indie Dev Monday turned into something more. I didn’t expect it to be some people’s favorite newsletter. I didn’t expect it to be the reason people look forward to Mondays. But every time I get told this from subscribers it brings a tear to my eye 🥲 I love knowing that Indie Dev Monday can bring a little joy into what’s been a pretty dark year. Indie Dev Monday has been one of the things that personally helped me get through the long pandemic year.
I wanted to do something big for the one year anniversary. The featured indie developers needed to be celebrated one more time. I can’t thank them enough for answering all of my questions.
So here it is…
One Year Anniversary Celebration
Order shirts at 👉 indiedevmonday.com/merch
More details at 👉 indiedevmonday.com/one-year-anniversary
Today’s Spotlighted Indie Devs
📆 Today I’m featuring Sindre Sorhus.
👉 Please make sure to follow them or support them anyway you can! 😇 I’m excited to share their indie dev stories.
Indie Devs
Sindre Sorhus
Q&A
1) What is your name? Where do you live?
My name is Sindre Sorhus. I live in Bangkok, Thailand.
2) Introduce yourself. Education? Background? Main job? Interests outside of tech? Interests inside of tech?
I grew up in Norway and later moved to Thailand because life is too short to be cold all the time 🥶. I had wanted to make macOS apps since I got my first Mac, but Objective-C never clicked with me. I tried and failed multiple times. I managed to make a couple of simple iOS apps in Objective-C, but I never enjoyed it. The day Swift was released was the day I became a Mac developer. I immediately started working on a simple app while learning, which is my Battery Indicator app. Swift is now my favorite language. Outside of programming, I enjoy photography and passion fruit.
3) Have you ever considered yourself an indie developer?
Yes, I consider myself an indie developer today, but it was a long journey to get there.
4) What got you started/interested in creating your own applications outside of your “normal” job?
When I got my first Mac, I used these incredibly polished apps from great developers like Panic (Coda) and Cultured Code (Things), and thought to myself, “one day I’m gonna make an app on that level.”. That’s my motivation. I want to make apps that “wow” past me. I’m slowly getting there.
5) How do you balance your time between friends/family, work, hobbies, and indie dev?
I try to prioritize family over programming, but it’s sometimes hard to take a break when working on an exciting idea. Too many ideas and not enough time!
6) Open Source - You create and maintain so many apps and repos but before I dive into that I want to talk about open source 🙂 I think it’s so incredible that you make 100% of your living off of open source! I’m a huge believer that this route should be easier and made possible as a career for more developers. What got you first interested in open source? And when did you realize that you could turn it into a full time job?
I am indeed very fortunate that I am able to work on open source full-time. I believe this is a turning point, and that in the near future, it will be a lot more common to go down this route.
I have always liked building things, starting at a young age with LEGO. I tinkered with simple websites since I was 10, but I didn’t learn programming properly until my twenties. I worked in the Norwegian military for a while as a programmer and photographer. I was stationed in a fairly remote place and I didn’t have a lot of friends, which meant a lot of free time in the evenings. I built stuff, but mostly just for myself. That’s when I discovered the world of open source. GitHub was a recent thing then and had quickly made open source a lot more approachable. For a while, I was mostly just an observer, starring repos and opening issues. One day, I discovered this project called TodoMVC, and I decided to contribute to it. It was a good experience, so I did it more, and sometime later, I was invited to be a maintainer. With the experience of running a large open source project, I got the courage to publish my own projects on GitHub, and that’s how it all started. This was 10 years ago and I still love open source!
One day in 2014, I had the realization that I was too comfortable and needed a change, so the next day, I quit my office job and bought a one-way ticket to Southeast Asia with the plan to travel while doing open source. Four years later, I was still doing open source full-time, but I was slowly running out of savings, and considered getting a real job. Luckily, I discovered Patreon. I launched a Patreon campaign, and some months later, I was fully funded by the community, and I still am.
7) Open Source - You got a handful of apps and also maintain a some iOS repos and 1,000+ npm packages if I understand that correctly 🤯 What is the story behind supporting all those npm package? How do you determine what you want to work on each day or week?
JavaScript famously has a very minimal standard library. When I got into Node.js 10 years ago, there were a lot of missing pieces, and I kinda got hooked on filling in those missing pieces in the form of packages. Many of these packages are pretty much done now, except for minor maintenance, so most of my time is spent on a small subset. It is a ton of work though. On average, I spend at least a normal work day just on open source, and then I do app development in-between.
8) Plash - OMG I didn’t know you were behind this app! I was looking at all of your macOS apps and saw I already had this installed at one point 😛 I was using Plash to show my Google Calendar as my wallpaper. What was the inspiration behind creating Plash? What were some of the coolest uses of Plash that you’ve seen?
I maintain this popular Node.js package called wallpaper which lets you change the system wallpaper cross-platform. I had gotten many requests to support dynamic wallpapers, which was not possible as the package only deals with static images. Last year, I was stuck in Taiwan because of Covid and needed a project, and that’s when the idea of Plash was born. People have done a lot of cool things with it. The only limitation is people’s creativity. My favorite is when people make their own custom dashboard (Example). Some other cool use-cases: see out a random window anywhere in the world, time zones, and photo of the day.
9) System Color Picker - I love love love this app! I get a little frustrated when needing to get a color sample and every app has a slightly different picker. Being able to quickly pick up System Color Picker with a quick shortcut is 🔥 What is your process for creating and releasing new apps like System Color Picker? Do you try to pick apps that would make good open source projects? Or do you try to just solve problems that you run into in your daily workflows?
The original plan was to simply wrap the built-in color picker as an app without any extra functionality. However, the App Store reviewers did not accept this, because according to them, the app duplicated built-in macOS functionality. I then gave up on the idea. Some months later, I was reminded about it again and decided to give it another try. I added some extra functionality, made a lot of arguments for why it should be accepted, and resubmitted it. It got rejected. This went on for a while. I think it got rejected at least 5 times before it was eventually approved. It just goes to show that persistence is key.
Most of my apps came out of trying to solve my own problems. The easiest way to build great apps is to be your own customer.
10) Dato - Dato is super slick. I’ve been legit looking for everything Dato has to offer. I needed a quick way to look at my calendar events and also show UTC time in the menu bar 😇 I noticed that most of your apps are free but Dato is pay upfront. I love this decision! Just curious what were the thoughts behind making Dato a paid app versus your others being free?
That’s nice to hear! Dato is my passion project and the app I have spent the most time on. Behind its simple facade, there is a lot of functionality and code complexity. For example, even something as seemingly minor as showing how often an event repeats (Example: “Repeats Every 2 Months”) has quite the complex logic to properly build the sentences for all the different repeat permutations. That code is about a thousand lines with over hundred unit tests.
I don’t have a consistent rule for when to charge. I’m also conflicted about it. Part of me wants to just give away all my apps for free so that everyone can benefit from them, but the other part of me wants to one day be able to fully sustain myself on app income. I just like making stuff and I don’t care much about money.
11) Open Source - I often get asked this question and I struggle to come up with answer so maybe you have one 🙂 What advice do you have for anybody wanting to start with open source? Where is the best place to start or learn from?
Don’t wait for someone to tell you how to start. Just do it. Open source has almost no barrier except for the mental one in your head. It’s indeed scary to put your code out there to be judged, but you quickly get over that. The experience and friends you make along the way makes it all worth it. The best place to start contributing is a project you already use. Let’s say you use a certain Swift package in your day job, start by contributing documentation improvements to that package, then some bug fixes, and soon enough, you’re putting out your own Swift packages. If you have any specific questions, my Twitter DM is open.
12) What’s been the hardest part of being an indie dev? What the most fun part of being an indie dev?
The hardest part for me is marketing and support. Marketing is a chore and support takes a lot of time. My most favorite part is the freedom. The freedom to work when I want and on what I want. I also enjoy going through my apps after WWDC to see how they can take advantage of new APIs, capabilities, and Swift features.
13) Is there anything else you’d like to tell the indie dev community about you?
My sister has a cute Samoyed.
14) Do you have any other indie devs that readers should follow / lookout for?
- Guilherme Rambo - @_inside
- Luke Oslizlo - @lukaszmtw
- Oskar Groth -@oskargroth
- Morten Just - @mortenjust
- Vadim Demedes - @vadimdemedes
Thank you to everybody who made it to this footer! You either spent the time to read or took the effort to scroll 😊
Make sure to visit https://indiedevmonday.com/subscribe to get an email of future issues!
And go to Twitter and give @IndieDevMonday a follow… or multiple follows if you manage more than one Twitter account 😜