Happy Monday, everyone!

We made it to Issue #92! Thank you to everyone who read last week’s issue ❤️

Author
Chris Wu - @museumshuffle

Today’s Spotlighted Indie Devs

📆 Today I’m featuring Emin Grbo and Tim Oliver.

Emin is the creator of Accessibility Assistant, spendersson, and StorkUI. Emin is a talented designer turned iOS developer. By day he works for TIDAL and by night he is working on multiple indie apps and trying to achieve the title of “World’s Fastest iOS Developer”, which is currently held by a developer that is from the Netherlands. You can find his apps and blog at his website. He’s also the creator of the SwiftUI Views website. He’s also given talks for organizations such as Women Who Code.

Tim is the creator of iComics. If you’ve followed the iOS community for any length of time then you’ve probably seen Tim before. He speaks at conferences throughout the world (in English and Japanese!). He’s been developing his indie app, iComics, since the iPhone 3G days. He’s very active in the open source community and maintains a blog. On top of all that he streams gaming and coding videos. I’ve been a huge fan of his and what I love about him is that he always has a smile on his face along with an enthusiasm and kindness that can’t be faked.

👉 Please make sure to follow them or support them anyway you can! 😇 I’m excited to share their indie dev stories.

Indie Devs

Emin Grbo

Oslo, Norway

iOS Developer at TIDAL

Tim Oliver

Tokyo, Japan

iOS Software Engineer at Instagram


Emin Grbo

Q&A

1) What is your name? Where do you live?

Hi! My name is Emin Grbo, and i live in Oslo, Norway. I moved here from Kragujevac, Serbia.

2) Introduce yourself. Education? Background? Main job? Interests outside of tech? Interests inside of tech?

Oh well, pull up a chair, Chris, because I have stories to tell. But I do not want to write a novella here or spend too much of anyone’s time. So let me try and pull this out in several points, and if you or anyone else is interested in specifics, feel free to reach out 🙌

So:

  • After high school had no idea what to do. I never was interested in education in general or had a direction in my life.
  • I found one college that has no math (I am very good at it and at the same time despise it), so I went there. It’s called Singidunum, and the specific program was “Business Informatics.”
  • it was expensive, but my dad was just fast-forwarded to early retirement and, as luck would have it, increased his income by a fair amount, enabling me to go there. (but only just)
  • 1 year in, that extra income disappeared, and we were at a point where it wasn’t too expensive for me to go there unless we figured something out.
  • I knew my parents could get in debt, so I got to workin’, getting any job that I could find and only going to college to attend exams.
  • after a few odd jobs, I became a Flash Developer, focusing on animation
  • 1 year later, I snagged a job in DDB(marketing agency), moving to print and billboard design
  • 2 years later, I was fired due to The big economic crisis
  • I started freelance design, where I was able to make x3 times my monthly salary (ch-ching)
  • I did this until 2018 when I started learning iOS development.
  • In 2019 got a job in a company in Serbia called Telego
  • 2020 got a job in TIDAL just as Corona was getting started.
  • In 2020 moved to Oslo and started interacting online
  • I met an awesome group of iOS people, one of them being a delusional person thinking 🐯 would beat 🐮 in the Black&White game, but other than that, awesome guy.
  • That same awesome guy asked me to be interviewed for this newsletter.
  • You are reading this

3) Have you ever considered yourself an indie developer?

Actually no! I had no idea that this was the path I was moving towards. I react to my feelings and surroundings and see where the path takes me. Now, however, I see a VERY clear path and a goal that I aim to achieve. And that is to become an indie developer, making my own apps and games.

4) What got you started/interested in creating your own applications outside of your “normal” job?

That was what motivated me to start coding in the first place. I had the design skills but not the ability to make them work. I have had a desire to create since early in my childhood, where I was either making things out of clay or chopping some wood with an ax. But imagining words and characters was something that always brought joy to me.

5) How do you balance your time between friends/family, work, hobbies, and indie dev?

Very very carefully 😅 I was reading a but about time management and try to make sure I do a bit of everything each day. That way, nothing REALLY suffers a lot, but at the same time, you keep moving forward and progressing. Family is always a priority, and I try to have weekends reserved for that and some quality time every day. I find joy in the little things we do together each day 🙌

Not gonna lie. It is hard!

6) When I heard about your goal to release 5 apps on April 1 it didn’t even cross my mind that you were serious. What made you want to take on this huge task? Do you sleep? If so, as someone who accomplished this with a full time job, marriage, and small child can you give us some insight into your time management skills?

Hehehe thank you Chris! It was tricky that’s for sure. Most of those apps were half-way done, and I decided to challenge myself and try wrap them all up in a month, otherwise that time I spent on them unti then would have been for nothing!

As for the HOW, I just focused on planning a lot. I had 2 hrs per day, and tried the do the most important features first, reaching the MVP stage as fast as I can, and not striving for 100% completion or perfection. It goes without saying I had loads of support from my wife in this 🙌

7) You recently gave a presentation about how an egg timer got you so much traction in the job market. For those that didn’t see your talk can you tell us about this? I’m sure that there are beginners who think you have to have a huge, complicated app to get noticed by potential employers.

Oh yeah, I am so proud of my egg-timer app! My initial idea was to create “anything” really, but then I remembered the saying, “there is no such thing as bad marketing.” So, I figured if I created an eye-catching and a bit over-the-top egg timer app, I would stand out in the marketplace a lot more. And it worked like a charm! It also allowed me to put a lot of concepts developers should know about into practice. So really, it was a clear win-win. Highly recommended for anyone starting the job hunt 👍

8) Accessibility Assistant - This looks like it will be so handy for helping developers better support accessibility. Can you tell us what it does? BTW, the app icon is chef’s kiss!

Thank you so much! I had so much fun creating that icon, and the community helped a ton there — another bonus of building in public. I made the app to help developers understand how their views would be read by people who use voiceOver. I always forget which property is read first and in what order, so with this app, by checking off a few boxes and inputting some text, you can generate a voiceOver result and make sure the view “reads” well, along with looking good 👌

9) spendersson - This is an interesting budgeting app in that it can be just for tracking a day’s spending if you want. Can you go into more detail?

Yes! When I moved to Oslo, the first thing that hit me is, “what are these new moneys?” 😅 I had no concept of value and price. Even though I could convert it to a currency I am more familiar with, it made no sense, as prices and standards differ a LOT! That is when I realized I needed an app that could just help me manage any amount of monthly income, no matter the currency, and inform me how much I could spend per day and still save a pre-determined amount of money. I use this app daily. I cannot describe how much it helps me to manage my budget.

10) StorkUI - I love that this app not only gives you beautiful UI elements, but shows you the code that created them. It’s a great learning opportunity along with being a helpful tool. What’s the significance of the name and what kind of views are you planning on adding in the future?

Ah, the name 😂 It was originally called “ SwiftUI Views, “ but Apple had issues with that, so I renamed it to something I found mildly funny. Stork is an ultimate “bringer of babies” in many cultures, and these views are, in a sense, babies. Initial ideas of what a view can look like, and it is up to you to shape it to how it can work for you :)

The main idea for the app is to have a library of moderately tricky views that can either inspire you or allow you to bootstrap an app prototype in the shortest amount of time.

You will notice that many of the apps I make are made to speed up development, as time is a commodity for myself and many other devs in similar situations.

11) You appear to be gearing up to challenge Jordi Bruin for the title of fastest app developer. Can you give us a sneak peek into what you have coming up? I know owler will be in beta soon.

Oh you are too kind 🙏 Jordi is not only producing apps fast, but they are so good and polished, it feels like he has been working on them for ages 😂 Owler, as you mentioned will be in beta soon, and it is a Twitter helper app specifically aimed at people that….you guessed it! Don’t have time! 😅 It is a product I am making for myself and just hope there are enough people out there that would use it as well and find some value in it.

As for the sneak peak. Well…I was not fully ready to share anything, but the app I am working on after Owler will be an app that is very near and dead to my heart and that I plan to work on for years to come if everything goes right. It is an app that will help people take a breather and stop…to bring them back to the time where playing a game was not a rushed experience but something you enjoyed and fully immersed yourself into.

Imagine starting a game, putting on your favourite headphones and closing your eyes. I know, right? And allowing the game to narate and bring you into the world where you can escape and have fun at.

It will not have notifications, leaderboards and similar. It will be a game that is there for you when you need it, to relax but to have fun as well. Oh man, I just cannot WAIT to dig into it 🙌

12) What’s been the hardest part of being an indie dev? What the most fun part of being an indie dev?

Hardest, marketing. Marketing is not HARD perse, but something none of us really enjoys. I started to enjoy some parts of it but still have difficulties in general.

The most fun: BUILDING THINGS! When I start an app, I feel goosebumps all over while setting up the architecture and seeing the app come to life. The feeling is out of this world.

13) Is there anything else you’d like to tell the indie dev community about you?

I can be way too energetic in a good or a bad way, and I want people to know this is who I really am 😅

If I say that I am really excited about your app, you better believe I REALLY am! I rarely “just say things” 😅

14) Do you have any other indie devs that readers should follow / lookout for?

Oh wow, I know so many that I feel listing a few would instantly feel bad as I might forget to mention someone.

But I think I have to mention someone who has skyrocketed recently: @FloWritesCode. App he made few weeks back, LaunchBuddy, is crazy usefull and it has been such a lifesaver for me 🙌

Also, and this is shameless “family-self-promo”, my wife joined this amazing iOS community just a few days ago and I am over the moon. I and cannot wait to see what will she be making once she gets her hands on SwiftUI. A lot of apps I make are at least 50% better because her opinion is ruthless but fair 😅 @TigrrSwift My opinion might be too subjective there as you might imagine.


Tim Oliver

Q&A

1) What is your name? Where do you live?

My name’s Tim Oliver (Some people call me Tom as well). I’m originally from Perth in Western Australia, but I currently live in Tokyo in Japan.

2) Introduce yourself. Education? Background? Main job? Interests outside of tech? Interests inside of tech?

G’day! I originally studied a Bachelor of Science in Digital Media in 2004. The degree was an interesting fusion of both computer science (including programming and systems design) and multimedia (things like color theory in Adobe Photoshop, and animation in Adobe Flash) which ended up coming very much in handy in my work as an iOS developer down the line. I originally worked as a web developer out of university and became a full-time iOS developer in 2013. Since then, I’ve worked at a variety of tech companies, most notably at Realm in San Francisco, and Drivemode and Instagram in Tokyo.

Outside of work, I also sell an iOS app named iComics, I talk at conferences and meetups, and I publish a lot of open source software on my GitHub account.Outside of tech, my hobbies are playing video games online with friends (I sometimes stream on Twitch), eat spicy food (A lot of my Instagram photos are of me dying from spicy food!) and I enjoy singing (It’s not a huge part, but I have a singing credit in a Japanese anime production!)

3) Have you ever considered yourself an indie developer?

I always find the definition of an “indie” to be really broad, so I never know how to answer this! Maybe not as my full-time profession, but I’ve been selling my own apps developed in my free time on the App Store since 2009, so I’d certainly say I’m a “part-time indie enthusiast”.

4) What got you started/interested in creating your own applications outside of your “normal” job?

I was a web developer with aspirations of becoming a professional game developer when the iPhone 3G, the first iPhone launched in Australia, came out in 2008. At the time, the prospect of what this device was capable of was absolutely magical! A small computer in your pocket with permanent internet access! I was so intrigued that I gave up my Motorola Razr phone to swap to an iPhone 3G, and bought an iPhone developer’s book (The iOS Developer’s Cookbook by Erica Sadun) and started learning how to develop iOS apps on my own. Certainly I felt that my background between web development and game development lined up extremely well with the disciplines of making apps for the iPhone. My first app was a really basic one, but the feeling I had when I made my first dollar on the App Store from it was absolutely amazing, and the feeling never goes away! And I still love doing it to this day.

5) How do you balance your time between friends/family, work, hobbies, and indie dev?

It’s really hard. Certainly when your day job is also writing iOS code, I don’t want to fall into a habit where I’m writing code all day AND all night. So I usually try and keep the habit of spending the time after work during the week relaxing. Whether that’s playing video games or hanging out with friends, just something I can do to properly recharge. And then on the weekends, I can spend a nice solid chunk of time working on my projects during the day, and still hang with friends in the evening. Certainly working like this means my projects go pretty slowly, but as long as I feel like I’m making progress, one step at a time, I’m happy about it.

6) Before we talk about indie development I have to know the story of how you ended up in Japan. By the way, congrats on your new job at Instagram!

Haha thanks so much Chris! I still can’t believe I made it to Instagram! It still hasn’t sunk in yet! Japan’s a really interesting story. My family has a pretty long history with it. We moved to Japan in the mid-nineties due to Dad’s work, and we fell in love with the place right away. I always wanted to try and work in Japan since then, but for the most part, the circumstances never really lined up. While I was working for Realm in San Francisco in 2017, one of my old friends from Japan came to visit one of the offices for his startup in the Bay Area. At that time, he invited me to apply to the Japan office for the same startup, and I was really tempted. In a rather ironic bit of timing, Realm went through a bit of a re-org right after that, and myself and a few of my teammates were unfortunately laid off in the process. Not really wanting to go back to working in Australia just yet, I decided to try and interview with that Japan startup, and they ended up making a really compelling offer to come and join them in Japan. I relocated to Japan in 2018 and have been here since.

Having worked in Australia, the US and Japan, I really like Japan as an “upcoming” Silicon Valley country in tech. While not as established as California, there’s a really strong tech startup community here, and (before the pandemic at least) there are so many opportunities for meeting new people and learning new things. Japan is also an incredibly nice place to live in terms of the food and convenience, and for me personally, it’s in the same time zone as Australia, so my friends/family in Australia feel a lot closer than they did from the US.

7) I know that you’ve been developing apps since the iPhone 3G and I see that the history for iComics on the App Store goes back ten years. What’s your favorite “Back in my day we had to walk uphill through snow to get to school!” story now looking back at how different app development is now?

Haha! Hoo-boy. There’s lots. Probably the biggest “back in my day” was that before iOS 5 came out, it was necessary for all developers to manage their own memory in their apps. This usually meant calling ‘[object retain]’ and ‘[object release]’ a lot, and if you didn’t balance those calls properly, you’d either leak memory or the app would crash. Sometimes trying to track down why an object that was passed through multiple method calls was getting released too early and crashing the app could take hours. When Apple released Automatic Reference Counting in 2011 (Which was apparently a precursor to the memory management in Swift!), it was truly the biggest collective sigh of relief I’d ever heard.

Some of the smaller, but still major things were the introduction of a lot of the APIs we take for granted these days. For example, UICollectionView and Auto Layout came out in 2012, and iCloud Drive and CloudKit sync came out in 2014. Comparing iOS development in 2022 to how it was in 2009 is a complete night and day difference. Apple has taken really good care of us and has provided us with so many new technologies, and new and easier ways to make apps now. It’s never been easier or more accessible for newcomers to join, and to start building apps right away!

8) In researching the features of iComics I saw you implementing features that were difficult, but still things I would expect from a comics app (displaying extremely high-res comic book pages shrunk to fit tiny iOS device screens, dual page support, etc). But a feature such as changing pages with a PS4 controller is something I would never expect. How do you go about deciding what features to add to iComics?

Haha! Yeah, that’s usually not the first kind of feature you’d imagine people are asking for in a comic reader is it! In that particular case, it was because I was so excited for the controller support coming to iOS that I wanted to try it out. At the start of 2019, Apple had announced Apple Arcade, and I was really skeptical about how that service would be a good experience while there weren’t that many controllers compatible with Apple TV. I was in the audience at WWDC19 when Tim Cook announced on stage that tvOS 13 would introduce PS4 and Xbox controller support, and I had to scoop my jaw off the ground in surprise! And so, when iOS 13 launched, mainly just as an excuse to try out the new game controller framework, I decided to add it to iComics as a bit of an easter egg.

One thing I really like to use iComics for is a basis for becoming a better iOS developer; it gives me context and direction for studying new APIs and learning how to optimize applications for performance in iOS. And this is knowledge that ended up being directly applicable in a lot of my interviews and especially Realm and Instagram! 

When choosing the next features to build, I’ve compiled a list of all of the features users have asked for over the years, but there are certainly a few select features that the majority of users contacting me have asked me for. Dual page support (and by extension, having better scaled image quality at smaller sizes) is probably the number 1 requested feature, which is why I’m focusing on it. But at the same time, there are a lot of smaller “quick win” features, or even commonly reported bugs that don’t take as much time and research to implement/fix, and so I liked to try and add those as well whenever I can too.

But certainly like most products, the best thing to do to learn about what you should add next is to let the users tell you. 🙂

9) You’re working on completely rewriting iComics. What are some of the new features of iComics 2 you’re most excited about and what restrictions are you the most happy to ditch?

I sure am! Since I launched version 1 of iComics in 2012, both the hardware, and iOS itself have evolved to a massive degree. A lot of the assumptions I made when I first built it (Like the amount of memory and cores the hardware has, and how files should be organized on disk) have changed, and a LOT of the APIs I built over the years now have official Apple-supported equivalents. Also, Swift became a thing in the middle of all of that as well! I feel like the app has clearly hit the point that if I tried to change all of those foundational assumptions, and refactor it to use the new native Apple APIs, not to mention start converting the app to Swift, doing that would take longer than just rewriting it from scratch!

The main thing I’m really excited about for iComics 2 is being able to apply all of the knowledge I’ve learned over the last 10 years to build a clean, high quality product with a modern architecture (hopefully!). Things like double page spread are things I expect to have by default, but with a fresh start, I can also add things like proper file system support, which would enable things like iCloud Drive sync, and maybe even Mac Catalyst support. I’m also excited to try and make this my first official public app in Swift (But I’m going to recycle a few Objective-C components as CocoaPods!) and see how much less code it needs than what was required in iComics 1.

10) I can’t properly describe to you how much I enjoyed your talk “Integrating SwiftUI with UIKit and Back Again” at Swift Heroes Digital 2020. I used iOS development as a daily escape from the craziness of the world that year and I vividly remember how much your sense of humor in that talk made me genuinely happy when I really needed that. In your presentation you were obviously excited about SwiftUI but had some reservations about its limitations. Has your opinion changed now that iOS 15 is out and what features are you hoping for with iOS 16?

Aww, thanks Chris! It means the world to me to know that one of my presentations was valuable to you like that! Yeah! Since that presentation, I spent all of 2021 building a 100% SwiftUI app for Drivemode, so I have a few more opinions now haha. 

I actually encountered two big pitfalls in SwiftUI that have made me a bit more conservative about using it. The first one was when I had finished building a UI screen that was using a SwiftUI “List” to reorder items with a very custom looking UI. Unfortunately, iOS 15 introduced a regression where the UI component completely stopped working. The only way I was able to solve it in the end was to re-implement the whole component as a UITableView component wrapped in SwiftUI. The second one was when the product team decided to change their mind on the design of another UI screen and wanted to insert a very complex UI component into it, which ended up being something none of us knew how to do. And so again, we ended up writing a UIKit component wrapped in SwiftUI to solve it, but in both of these cases, we ended up losing all of the advantages of SwiftUI in the process.

So, while I am definitely still excited about SwiftUI, I think I’ve become a lot more pragmatic about when and where I should use it. I think its biggest limitation is that you can’t extend the standard Apple SwiftUI components. For example, if I could have been able to tweak the “List” component myself, I wouldn’t have had to reimplement a custom component in place. Additionally, for projects where I don’t have creative control (which will most likely be the norm at most companies), I need to remain wary that the stakeholders might require a feature that may be tricky, or maybe even downright impossible in SwiftUI without heavily relying on UIKit.

That all being said though, I still plan to use SwiftUI in iComics 2! There were tons upon tons of little auxiliary view controllers in iComics 1 (mainly in-app settings) that took hours upon hours to implement by hand, and if I could have written them in SwiftUI, it would have been an absolute godsend. SwiftUI’s biggest strength is the sheer amount of time it lets you save, but conversely, you need to be wary that it can sometimes break down if you try and implement a UI that deviates too far from what Apple is assuming you will do. Like I said at Swift Heroes in 2020, I think it’s still a good idea to try and aim to use SwiftUI first, but then fall back to UIKit if you realise it won’t work for the requirements you need. Again, the main thing you should be here is pragmatic about what will be the best experience for the user, with the time and resources you have on hand.

All this having been said, the legendary Paul Hudson made a really good point at iOS Conf SG this year. He reminded us that Apple released SwiftUI really early in its lifetime so they could start collecting real-world user feedback and learn how to improve it for our needs over time. As far as new technology platforms go, SwiftUI is still very new, and has a lot of room to grow. I can’t wait to see what new improvements Apple will add to it in iOS 16 this year!

11) You’ve been an active contributor to open source projects. What are some iOS ones you would suggest people check out and what suggestions would you have for people interested in contributing to open source projects?

There’s an absolutely amazing list on GitHub of a large number of repos and app projects for iOS that you can spend hours going through. I’m also compiling a list of all of the main libraries I’m planning to use in iComics 2 that I’m still adding to over time. And certainly some of my most favourite libraries are IGListKitPINCacheGPUImage and Fastlane.

For anyone interested in contributing to open source, I say welcome! The great thing about open source is just how easy and accessible it is. If there’s a component you want but no one’s made it yet, doing it yourself and open sourcing it is a fantastic way to contribute to the community (This is what I originally did for 

12) What’s been the hardest part of being an indie dev? What is the most fun part of being an indie dev?

Certainly the hardest part is you have to do everything, including things like running the business portion of the app, marketing if need be, as well as providing user support. It can sometimes be very hard work, but it is very rewarding nonetheless.

Certainly the most fun part is getting to meet new people directly due to your app. And when a user tells you they really enjoy using your app, it makes the whole endeavour totally worth it.

13) Is there anything else you’d like to tell the indie dev community about you?

Feel free to follow me on Twitter at @TimOliverAU. I’m happy to answer any questions you might have over there!

14) Do you have any other indie devs that readers should follow / lookout for?

Certainly I highly recommend following Vincent Pradeilles at @v_pradeilles on Twitter! Vincent provides a huge wealth of extremely useful knowledge about Swift and iOS development, and also runs @ios_memes which is one of my most favorite iOS-based accounts on Twitter!

Newly Released and Updated Indie Apps

Here are some newly released and newly updated apps 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 👀

Pi-hole Remote Updated
Version 2.19 is here! It brings a new 'Remove & Edit' action for list entries for super quick editing, Top Allowed/Blocked/Clients make it to Apple Watch, a nifty way to remind you if you disabled blocking, and more. Enjoy!
v1.19 brings a completely new design for block- & allowlists, ability to remove filters, search for clients, UI improvements, and more. If you care about privacy and hate ads/trackers, try AdGuard Home and AdGuard Home Remote for free!

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 😜