Issue #129 - Bruno Rocha
Happy Monday, everyone!
We made it to Issue #129! Thank you to everyone who read last week’s issue ❤️
Deep Dish Swift is a brand new conference being held in Chicago April 30th to May 2nd in 2023. The conference aims to bring togethe Swift and iOS developers of all experience levels and backgrounds in an inclusive environment to share knowledge and experience from a diverse set of speakers. The first day is focused on indie development and and the next two are focused on Swift and iOS!
Today’s Spotlighted Indie Devs
📆 Today I’m featuring Bruno Rocha.
👉 Please make sure to follow them or support them anyway you can! 😇 I’m excited to share their indie dev stories.
iOS Developer at Spotify and creator of Burnout Buddy
1) What is your name? Where do you live?
Hi! I’m Bruno Rocha. I’m originally from Brazil, but am currently living in Sweden.
2) Introduce yourself. Education? Background? Main job? Interests outside of tech? Interests inside of tech?
I’m an iOS dev currently working at Spotify, but most people in the iOS community know me as the writer behind SwiftRocks, a blog I have been running for several years in my free time writing content about the innards of the Swift Compiler and other advanced-ish iOS content.
I originally started my programming career as a game developer back in 2012. I was always very interested in entrepreneurship, and as a kid who loved video games and tech it was natural for me to pursue making my own. I spent around 3 years making a series of simple mobile games with my friends from college, but eventually moved away from it in favor of developing “regular” software for job stability reasons (the game industry in general is brutal, especially if you’re developing your own stuff).
My first contact with iOS was around 2015 through an official education program that Apple runs in Brazil. I was accepted to join the program because of my previous game dev experience and was so fascinated by the whole Apple ecosystem that I never looked back. I’ve since worked at some of the largest startups in Brazil, and at the beginning of 2020 I moved to Sweden to work at Spotify. But I never gave up on wanting to write my own software, and in the middle of 2022 I felt that my life was stable enough to start pursuing that again in my free time.
3) Have you ever considered yourself an indie developer?
I always sympathized with indie development, but I never referred to myself as such because I still have a main job which I still consider to be my top priority. Many solo devs leave their jobs to pursue their passion, but that’s a risk I’m not willing to take at the moment.
4) What got you started/interested in creating your own applications outside of your “normal” job?
The main reason I became interested in entrepreneurship (and programming in general) is that I was deeply interested in being able to say that I created something that improved other people’s lives.
You can sort of achieve this with a regular job, but it’s not the same thing. I’ve worked on many great features in the startups I’ve worked for, but few were the times where I developed something that I 100% agreed with. When you work for others you’re following someone else’s vision; you can create great things, but they will rarely be your things. This is especially true in larger companies where bureaucracy and inefficiency are rampant.
But when you work for yourself, you have complete freedom to envision and develop something you truly believe in. I was drawn to that from a very early age after seeing how much of my childhood happiness could be attributed to the vision and dedication of my favorite game developers and decided I wanted to do the same for others.
5) How do you balance your time between friends/family, work, hobbies, and indie dev?
I was honestly never good at this, which is coincidentally part of the reason why I created Burnout Buddy. I always valued work above all else, and it was only recently that I realized I made a mistake as I started developing serious stress/anxiety issues as a result.
The way I’m balancing this today is by setting strict boundaries between my main work, my indie/community work, and just living life. It’s easy to set a boundary between your main job and your indie work, but I had this constant issue where I would spend almost all of my nights working and pretty much never relax and enjoy life. I’ve improved this by creating a habit of working in a more “alternating” day-on-day-off fashion where I try to make sure to not work too many nights in a row at the same time that I make sure I’m getting a healthy amount of time outside my apartment and having fun with friends.
6) Burnout Buddy - I was out on family leave when you launched Burnout Buddy so I just recently found out about it and I’m kind of in love with it I could never find the iOS Screen Time capabilities useful until now with Burnout Buddy! When did you start working on Burnout Buddy and where did you get the idea for it?
What prompted me to create Burnout Buddy was that I had this terrible habit of being a workaholic and working long hours (for my main job, not necessarily indie work) for literally no reason. I would constantly check Slack late in the night and hop into Xcode on weekends to work on unfinished tasks not because there was some serious urgent thing that needed to be done, but simply because I was addicted to work.
I didn’t initially see much harm in it because I genuinely love programming, so for me this was just a weird way of expressing my passion. The problem was that by the point I realized I was essentially slowly getting myself killed I no longer had the self-control to stop it; I would audibly say “why am I doing this?” and still continue doing it.
I needed something to forcefully stop me, so sometime around mid 2022 I ended up creating a simple macOS tool that observed the native “user is opening app” notification and automatically closed said app if it was a work app and if I was not supposed to be working. I released it to the public as a free app and was surprised to see how many people were reaching out to say that they had similar problems. It even ended up in Product Hunt’s newsletter, which for me was mindblowing!
I then realized that Burnout Buddy could help not just with my specific work issue, but really any bad habit that involved using a device (like being addicted to social media). This led me to push small updates to make the tool more customizable to each person’s individual needs, and in October 2022 I released a version for iOS that was so much stronger than the macOS one that it ended up becoming the main product.
7) Burnout Buddy - I had absolutely no idea that anything like Burnout Buddy could be built with the Screen Time APIs. I thought Burnout Buddy would be enabled like a proxy and intercepting web traffic to determine what to block But I think I saw that these were new in iOS 16? How does this API work? What capabilities does it give developers and what kind of privacy does it offer?
Due to all the sandboxing restrictions in iOS, “app blocking” was indeed something that iOS apps historically could only do by either installing third-party VPNs or MDM profiles on your device, but Apple has recently added APIs that allow you to natively block content on your phone. It was originally introduced to be used as a parental control mechanism, but iOS 16 expanded this to also include “self-control” blocking for the purposes of fighting addiction.
The API works by having you request a new “Family Controls” permission from the user that grants you the ability to present them with a view controller listing all of their installed apps and recently accessed websites. When the user selects content in that view controller, a delegate method is called providing anonymous tokens representing the selected content. You can then pass these tokens to the new ManagedSettings framework, which is what does the actual app blocking. The privacy here comes from the fact that the app doesn’t actually know what the user has installed on their phone, as you simply ask for content and get a bunch of random IDs back.
One interesting thing you might notice when using Burnout Buddy is that you don’t need to have it open at all in order for the blocking to work; you can quite simply never open it again and it will still work. This is also a feature of the new Screen Time APIs (Device Activity Extensions).
8) Burnout Buddy - The “Starter Schemas” that Burnout Buddy offers are really nice. I honestly had no idea how I was going to configure Burnout Buddy but I found a nice “30 Minute Watchlist” that I wanted to use for things like TikTok and Instagram No real question but have this for making this almost no work for me to configure!
I’m happy to know it was useful to you! One fun thing about being a solo dev is that you don’t have the privilege of having a real UX specialist analyze the app and tell you which features to provide and how to display them, so I’m happy I got at least something right!
9) Burnout Buddy - What was the most fun part of building Burnout Buddy? What was the hardest part?
I think both the most fun and the hardest part was that it’s made 100% with SwiftUI. I’ve found SwiftUI to generally be fun to use, but it can be very frustrating to use when a view’s logic is particularly complicated. I’ve lost way too many hours debugging bizarre rendering issues.
10) Burnout Buddy - How much of an impact has Burnout Buddy made on your life? I’m assuming you created it as a way to help you Do you feel your mental health and other aspects of your life have improved?
Despite creating this app to control how much I worked, what truly changed my life was using it to control how much I used social media. After successfully using the app to force myself to work less, I realized that the true source of my stress and anxiety was the unfathomable amount of time I was wasting on crap like Reddit and Twitter. Using the app to create a combination between a daily usage limit and a hard schedule made me so less anxious in life that it surpassed my original motivation for creating it and became the main marketing strategy for the app.
This is why one of the main pieces of “startup advice” out there is to only solve problems that you personally have. The reason I was able to create something so effective is because I myself was the product’s target audience.
11) Burnout Buddy - What’s next?! Do you have any future features that you can share with us?
I’m always trying to come up with new/smarter blocking mechanisms, but two things that I particularly want to do is to develop an insights feature that shows you how much time you have saved by using the app and to allow the current iOS version to be installed in M1 Macbooks. The issue with the latter is that Screen Time doesn’t exist at all for macOS, but I’m hoping that Apple will introduce it in the near future.
12) What’s been the hardest part of being an indie dev? What is the most fun part of being an indie dev?
In my case of being a solo dev, the worst part is definitely how overwhelming it is to have to do everything by yourself. The premise of having full control over a product can be enticing to some, but it’s extremely challenging. I have to constantly do things that I’m not particularly interested in (like marketing and design), and the simple fact of being solo already greatly constrains how far I can take a project. And that’s assuming that I will actually have time to work on it, as I also have a full-time job to worry about.
On the fun side, It’s fantastic to have the freedom to do what you want without having to sync with others, and it greatly warms my heart when someone sends me an e-mail thanking me for having created something that helped them.
13) Is there anything else you’d like to tell the indie dev community about you?
I’m happy to be able to share my story with you, and I hope you enjoyed reading it!
14) Do you have any other indie devs that readers should follow / lookout for?
Some of my favorite accounts are:
Christian Selig (https://twitter.com/ChristianSelig) - Used to work at Apple and now creates awesome stuff. I use Apollo pretty much every day and I think his content on Twitter is pretty good.
Pedro Carrasco (https://twitter.com/pedrommcarrasco) - A lot of what I’m doing for Burnout Buddy was inspired by what Pedro has done for his Pokedex app (Dex).
Eric Turner (https://twitter.com/_etdev) - Not iOS related, but Eric is a great example of a solo founder who has created a highly profitable business.
Newly Released and Updated Indie Apps
There were no newly released and newly updated apps submitted from this past week! If you would like to possibly see your app in this list, please submit your app to the look at me form 👀
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 😜