Josh Holtz profile image

Josh Holtz

Hudson’s dad 👨‍🍼 Partner at @RokkinCat 💼 Lead maintainer of @FastlaneTools 🚀 @IndieDevMonday & @ConnectKitApp & @AnOtterRSS 🙋‍♂️ Opinions are mine (he/him)

Twitter Site

How and when did you get into programming? And into iOS?

Hello! 😊 I got started back with development back in 2004 during my sophomore year of high school. I needed to pick some elective classes to fill my schedule and I found out my school offered some programming courses. My dad went to college for computer science and has been working as a programmer analyst for 35 years now and my mom is a CPA [certified public accountant]. I ended up picking both a computer programming course and an accounting course for my electives to learn more about what my parents actually did. The computer programming course was obviously my favorite 😉

I knew after the first day of class that this was what I wanted to do with the rest of my life. I came out of high school with three years of programming experience - one semester of Visual Basic, one semester of HTML/JavaScript/CSS, two years of Java. Outside of school I also spent time learning PHP with MySQL while using an Ubuntu desktop as my main machine. I went to college for software engineering where in classes we continued to use Java but outside of class I did more programming on my own.

I saw some of my classmates getting iPhones and I was really intrigued but I couldn't afford a Mac or an iPhone. I ended up falling in love with Android in my junior year of college. I didn't have a phone when I first started learning it but I made apps for the emulator. A year or so later I was still hooked on mobile development but wanted to learn iOS. So in my senior year in 2011 I saved up for an 11" MacBook Air so I could learn iOS and release my own apps 🥳

That's quite a journey. Do you remember what was learning ObjC like in the beginning? Was it easy transition from Java and other languages?

I loooooovvveeeddd learning Objective-C. It was definitely not easy though. I had an iOS 4 or iOS 5 book that I tried to learn from but I didn't have much luck. I learned a lot better from looking at example projects people hosted on GitHub. I read through a lot of the code but I also pulled down the projects to run and make my own changes as practice. Objective-C looked a lot like some alien code from Star Trek at first but it slowly grew on me. The best part was writing Objective-C in Xcode. Autocomplete and build times were so much quicker than my Java experiences in Eclipse 🙃

What was your first app? Did you put it into App Store?

My first app was actually an Android app. It was called "Auto SMS" and it was an away message for your phone. You could set a message that would automatically respond to people that texted you. I used this for when I was driving or at work. But my first iOS app was an app called "Dinogram" 😁 It was an app where you could put some of my hand drawn dinosaurs onto a photo and then share it. It was a simple concept but I learned a lot about layouts, gesture, image manipulation, and the release process for the App Store. I'm actually thinking of reviving "Dinogram" this year 😉

Josh Holtz's dinosaur drawing 1

Here is my favorite:

Josh Holtz's dinosaur drawing 2

Cool stuff! Dinogram sounds nice 😃 I am curious, did you miss some of the freedom that Android provided when you moved to iOS? For example "Auto SMS" for iOS is a non-starter.

I absolutely did miss some of the freedoms that Android offered when I first switched from being an Android developer to an iOS developer. A lot of my app ideas were based on the abilities that Android allowed but iOS did not. But I did fall in love with iOS and the Apple ecosystem over time which made me forget about being an Android developer 😛 It was a bit of a weird transition but what solidified it for me was when I also moved from an Android phone user to an iPhone user. It made me really respect Apple’s decision. I felt much more secure as an iPhone user knowing that apps could not get all of my personal data on my phone like any Android app could. I have not looked back since then ☺️

You started contributing to fastlane in 2015. How did you initially find this project? Was this your first open-source contribution?

I found fastlane from following Felix Krause (@krausefx) on Twitter which I found from this tweet by Orta (@orta). I followed Orta because of CocoaPods (I think) so I trusted his opinion about Felix 😜 I was instantly intrigued when Felix announced fastlane and all of its tools. I was managing a lot of mobile apps at work (both iOS and Android) and a majority of my time was spent on building and releasing. My first PR was into snapshot (which is the tool for automatically taking screenshots) . I ran into issues with needing the tool to have more permissions when initially trying it out. I had a few years of Ruby experience under my belt so I felt like I would take a stab at fixing the issue. After my second PR I got asked by Felix to join the core contributor team and the rest is history 🥰

This was not my first open source contribution. I actually don’t remember what my first open source contribution was 😩 I would say that this was my biggest open source contribution at the time. But I did maintain an Android client for Sentry which I created in 2013. I had experience with people submitting pull requests to my project so I think that helped me make good pull requests into other projects 🙂

Wow, that is really cool entry into working on fastlane. When you joined the core, were you thinking about working on fastlane for many years to come?

I was super interested in both using fastlane and working on fastlane into the future. The first few years while being a core contributor really focused on implementing fastlane in my own projects and in other people’s projects. I had a quite a few consulting gigs that were strictly fastlane focused. I still contributed to fastlane when I found things that needed fixed or changed but this gave me great perspective on what it’s like to use fastlane as a user before taking on the greater role of being lead maintainer.

fastlane is open source tool but since 2017 it is also owned by Google. Can you briefly describe how this works? It is mostly the funding so you can maintain it full time or is there maybe any sort of like creative control over the tool?

Yeah yeah, so fastlane was previously owned by Twitter who owned Fabric. Fabric was a bunch of developer tools that Twitter was working on. Google acquired Fabric in 2017 which means they also acquired fastlane. Fabric got shutdown inside of Google and replaced with Firebase. fastlane interacts with Firebase but doesn’t belong under the Firebase family. fastlane is currently a standalone product within Google. Felix asked me if I wanted to become the lead maintainer in 2018 (which I was super super excited about) but I was not able to work for Google (since I own a consulting company with employees). We had to get a bit creative but I was able to get partial funding from the beginning of 2018 to the beginning of 2020 and then full-time funding starting mid 2020 😊

And I pretty much have full creative control 🙃 I say “pretty much” because a lot of the features that fastlane implements come from the community. Apple and Google might add new features to iOS and Android or new APIs or new cross platform tools like Flutter and we want fastlane to adapt to these. So at the end of the day I’m the final say of what gets added and released into fastlane but not all the ideas are mine 😇 I’m really here to help the community make their jobs easier. I’m here to support the developers who really make this community great.

Thanks for the recap. I had no idea that Twitter acquired fastlane previously..

When watching your fastlane presentation for CocoaHeadsNL I was quite surprised, when you mentioned in the intro that you have a stutter and a fear of public speaking. I think that requires a lot of courage. What was the reasoning behind sharing this with the audience?

Thanks! So... I haven’t always been very open about my stutter. I was ashamed of it and embarrassed by it for a lot of years. A lot of people can be really mean about it 🤷‍♂️ It took me a lot of years to realize that it isn’t anything that I should be ashamed about. And instead of hiding it, I should embrace it. Here is a blog post of where I officially opened up about it.

I realized while writing that blog post that my stutter has actually helped shape who I am today. I’m pretty honest on the internet with who I am so... that is just one of the reasons I like to mention it in my presentations 😊 I would like other people with stutters (or other disabilities) to know that it doesn’t have to stop them from doing what they want. Many times I’ve thought about just being a developer that hides in a cubical pushing bits around silently so that I didn’t have to face my stutter. But I knew that I could be more than that so I stepped way about of my comfort zone to start a consulting business, regularly talk with clients, go to networking events, and now present at meetups and conferences. It’s always scary but it’s also fun 😉

Another reason that I throw this up in my slides is it actually helps take some of the anxiety way (which causes my stutter to show more frequently and with higher intensity). There is a big fear of stuttering while talking to someone and stuttering when they aren’t expecting it. Seeing their confused or concerned faces just makes it worse for me 😅 Mentioning I have a stutter cuts out a lot of that worry! I can then continue on with the presentation with just a normal about of fear 😛

TL;DR - Part selfishness to decrease my anxiety. Part awareness and motivation for others with speech disabilities.

Thanks so much for sharing this!

You have quite a lot side projects, one of the bigger ones is Otter RSS. You mentioned previously that the initial prototype was done quite quickly. Is there something that you expected to be way harder when starting the project? Or vice versa, something that you thought be very easy that turned out to be tricky?

Oh my goodness... Something that was both easier and harder than I expected as syncing Core Data over CloudKit 😩 The main goal of An Otter RSS was to sync RSS feed read status over iCloud. I wanted to see keep track of where I was with all of my RSS feeds between my iPhone, iPad, and Mac. This was my first time trying to sync Core Data over CloudKit so I went with the Xcode default project that setup Core Data with NSPersistentCloudKitContainer.

It was surprisingly “easy” to get working (after making sure my app had all the right capabilities setup). I think I got my iPhone and iPad syncing in about 30 minutes. However... I kind of regret using NSPersistentCloudKitContainer now 😭

You get a lot for free which is super great but... you lose a lot of control. I have no idea when records are uploading or downloading (which is needed to make the UI/UX better). I’m running into issues with record duplication and things just not syncing that would be easier to solve if I decided to manually sync with CloudKit. I’ve talked to a few other developers about this and it seems to really be an issue with NSPersistentCloudKitContainer itself 🙃

Going with NSPersistentCloudKitContainer was great at first since An Otter RSS was made just for me. And it would have been fine if I kept it that way 😅 But I ended up releasing it since people seemed to love the app 🥰 So now one of my future tasks is to drop NSPersistentCloudKitContainer and move over to a manual approach but that requires a lot of work and a migration 🤷‍♂️

I haven't worked with it yet but I assumed it is going to be a go-to solution for next app where I need iCloud sync. So thanks, might have to think it through a bit more.

I am curious what does your toolkit for building websites (like Indie Dev Monday, Otter RSS site and others) look like? Ruby on Rails?

All of my websites and blogs are static sites generated by Jekyll  😊 I’ve been using Jekyll for my personal website for many years now. Jekyll is built with Ruby but you don’t really need to know Ruby to use it. Everything is just markdown, HTML, JavaScript, and CSS. GitHub Pages is actually powered by Jekyll so there are no hosting costs for it which makes it the perfect solution for me and my side projects 🥳

Whats the coolest or surprising thing(s) you learned with Indie Dev Monday?

I think just how passionate and how big the indie developer community actually is! I had no insight going into this. I knew of a few indie apps and developers but nothing even close to what I discovered. There are soooo many amazing devs and apps that I’ve discovered and featured. A lot of them now also feel like close internet friends 🥰 I thought I would have a hard time finding developers to feature but that isn’t the case. I don’t have enough time to feature everyone I want to feature 😛 It’s just been really cool finding and supporting this community. The App Store would not be as nearly good as it is without all of our amazing indie developers ❤️

"I don’t have enough time to feature everyone I want to feature 😛" - yea same here.

I noticed you are using ConvertKit to send Indie Dev Monday newsletter out. Are you have with this service? Would you recommend it to other people creating newsletters?

ConvertKit is soooooo good! I’ve use a lot of email sending services in the past when I did backend development so I went SendGrid at first. They had this new marketing platform for newsletters. I thought it was going to be great but... it was not. Designing the email was probably the best part of my experience as they allowed for a lot of customizations but that was pretty much it. Only half of the emails I sent off in the first few newsletters actually got received and the pricing was just way way too high. A friend referred me to ConvertKit and... I was converted right away 😛

The feature set ConvertKit offered was exactly what I needed and nothing more. The email designer was much more simple which made me a little iffy at first but I ended up liking the cleaner look. The thing that got me the most though was their support. It took SendGrid a week or more to get back to me about my emails not getting sent out. ConvertKit has gotten back to me in under 3 hours every time. I’d be happy to give out ConvertKit referrals to anybody that wants one 😉 I’m a very happy customer.

You certainly sound like a ... true convert 😜

Ha! I certainly am 😉

You have a magic wand... and can change one thing about iOS development. What?

Can I change two things? 😇

The first (and most important) would be making iOS (and macOS) development more accessible to everyone. I started out with Android development because I could do so without buying a new computer. My first Android days were done on an ASUS Netbook 😬 It ran okay but it worked! I eventually saved up to buy a MacBook Air once I was 300% certain that I wanted to go down the iOS route. I really want there to be an easier way for people to experience iOS development without needing to buy that MacBook. I know its a deep wish but allowing some sort of development on Linux or Windows would be great 😁

The second (and more selfish) kind of goes along with my first one. I want to be able to do iOS development on my iPad 😈 I know this is a meme and people will think I’m crazy for actually wanting this but I want this. I do a 99% of my fastlane maintenance and development from my iPad Pro. I’m SSHed into my Mac mini to do the development but I just LOVE the feel of working from my iPad. There are many reasons why I love working on my iPad but the main reasons are portability and staying focused with being forced to only have one app open at a time. I think it would be super dope if I could do some iOS (or even macOS development) directly on this device. 🤞 WWDC21 🤞

Yea the accessibility of Apple platforms development is an issue and you are not the first to raise it in these chats..

To step away from fastlane, side projects.. What do you do to relax?

Ha, I didn’t know that the accessibility wish was such a common one 🙃

And oh man, the things I do to relax are so much different than they were a few years ago! Before having a baby and a pandemic, I would like to go rock climbing and play video games. I used to play a lot of Heroes of the Storm (Blizzard’s MOBA) and Minecraft. I don’t have much time for video games and I don’t want to risk going to my climbing gym without having the vaccine.

I really just enjoy spending time with my family (wife, baby, cat, and dog) to relax 😊 I do home workouts to relax since we can’t go to a gym. We also go on a lot of walks now that its not winter anymore! There are also a lot of car rides because it makes the baby happy so I guess we can count that as relaxing 😛 Those trips are mainly to Target or a coffee shop.

I dooooo get my second vaccine in mid-April so I’m hoping to be able to sneak away to the climbing gym once those antibodies sink in 💪

Great! Thanks so much for taking the time and sharing a ton of great stuff! Do you want to give someone or something a shoutout?

Thanks for having me! I had a lot of fun doing this 😊

I first want to give a shoutout to my wife, @krenzel22. She is my biggest inspiration and I know I wouldn’t be where I am today without her ❤ Oh, and shoutout to baby Hudson even though I know he can’t read yet 🥰

I need to give a shoutout to my business partners at RokkinCat. Jason Stiebs (@peregrine) and Nick Gartmann (@nickgartmann) have not only been my business partners and friends for the past 10 years but they are pretty much family. I could not have asked for better people to learn from and run a business with.

I’d also like to give a shoutout to Felix Krause (@KrauseFx), Stefan Natchev (@snatchev), and Josh Liebowitz (@taquitos) for all the work they’ve done to set up me for success as fastlane’s lead maintainer 🚀

And an extra shoutout to the rest of the fastlane core contributor team and everybody else who has contributed to fastlane! It’s the best community and I’m so proud to be a part of it.

Okay, please stop me 😇 I have like a million more people I could shoutout too

Thanks again for this opportunity! I feel like I’ve made a new friend having this chat with you 🤗

Other chats

All chats