AppForce1: news and info for iOS app developers

Josh Holtz, maintainer of FastLane.tools and creator of AnOtterRSS and Indie Dev Monday

January 21, 2021 Jeroen Leenarts
AppForce1: news and info for iOS app developers
Josh Holtz, maintainer of FastLane.tools and creator of AnOtterRSS and Indie Dev Monday
AppForce1: news and info for iOS app developers +
Help us continue making great content for listeners everywhere.
Starting at $3/month
Support
Show Notes Transcript Chapter Markers

Most people know Josh as the maintainer of Fastlane tools. But there is a lot more to him. Indie Dev Monday and ConnectKit for example. Recently he became a dad, and this is his first speaking engagement since.

Runway
Put your mobile releases on autopilot and keep the whole team in sync throughout. More info on runway.team

Lead Software Developer 
Learn best practices for being a great lead software developer.

Practical Combine by Donny Wals
Buy Donny’ book on combine and support my podcast. Now that’s a great deal.

Disclaimer: This post contains affiliate links. If you make a purchase, I may receive a commission at no extra cost to you.

Support the show

Rate me on Apple Podcasts.

Send feedback on SpeakPipe
Or contact me on Mastodon: https://hachyderm.io/@appforce1

Support my podcast with a monthly subscription, it really helps.

My book: Being a Lead Software Developer

Jeroen Leenarts:

Welcome to another special episode of my podcast. I'm sitting here with Josh Holtz. And most people will know him from his work of Fastlane tools. But there's a lot of other things that he also works on. And probably also a lot of things that we don't know about him. First of all, the most important thing right now is congratulations on your son. Thank you very much. How are you hanging in there, George?

Josh Holtz:

I'm doing I'm doing good. I mean, I'm, I'm awake right now. I've learned to get a little bit of less sleep and sleep when I can. It's kind of been a pretty drastic change. But it's super fun so far. Totally worth it.

Jeroen Leenarts:

So this is your first public appearance that you did after the birth or?

Josh Holtz:

Yes, this is actually the first time I'm also at my home office in over a month, I've been sat in this chair since beginning of December. So it's a little bit foreign and also a mess.

Jeroen Leenarts:

Not probably not as messy as things will get when when your son gets older.

Josh Holtz:

I guess this is this is so true.

Jeroen Leenarts:

So um, yeah, just Congratulations again. And how are things in the US where you live?

Josh Holtz:

Um, I've been trying to ignore a lot of stuff that's been going on, especially politically, because it's, it's all a mess right now. But we have snow outside. And I like snow. So that's nice.

Jeroen Leenarts:

That's really cool, actually. So yeah, I know what you're referring to let's, let's hope that January passes by really quickly, and then onwards to better and more relaxing things politically.

Josh Holtz:

I sure hope so. So,

Jeroen Leenarts:

um, just to get things started, people know you from Fastlane tools, most likely. But I think it's actually an interesting story, how you actually wound up at Fastlane tools as as the lead on that project. So can you tell a little bit about that how you actually got started on Fastlane tools. And once we did that, we'll dive a little bit deeper in your history before Fastlane tools as well.

Josh Holtz:

Yeah, sounds good. So I started a software consulting firm, with a few friends after school that have been like fall of 2011. I took I took a corporate enterprise job after I graduated in May of 2011. And I stayed there for exactly like two months, I absolutely hated it. Like I was actually did like no programming the entire time there. And I'm like, this isn't this is not fun. So I wanted to go into freelancing on my own. And I was interested in mobile at the time, any sort of platform, I didn't really care. And then a few of my friends also didn't like their corporate jobs. So they also wanted out. So we started the consulting firm, I was the first time or the first person full time, because I quit my job really quickly. And when I got full of work, another guy did work at night. And then when he was too full at night, he joined full time, I mean, kind of like cascaded into five of us being full time, within about nine months. And we did all our different kind of software consulting stuff. I was mainly mobile, but we kind of took whatever work we could get at the time, front end, web, back end, whatever came in a lot of Ruby back end, I don't even know what kind of front end we did the time when we might have done like CoffeeScript stuff that isn't really done much these days anymore.

Jeroen Leenarts:

JavaScript changes every week, right? I haven't touched it much

Josh Holtz:

in like the past three or four years, but I can't keep up. It's, it's insane. So I was mainly doing mobile. And we had quite a few small clients at the time. And a lot of my, a lot of my time was actually getting spent on building releasing app store stuff across Android iOS, like I was probably managing, like for mobile apps and then or for clients, different platforms. And like my full time job was just releasing stuff, which felt insane. And then I wasn't super active on Twitter, but I luckily came across a tweet from orda about Felix, who was doing something like cool, it was like it wasn't very specific what he was doing. And I was like, okay, like I kind of interested in like, new things happening. And then it turns out it was exactly the the tools I needed to help what I was doing at work. So I ended up I think my my first fast line pull requests were actually into snapshot for taking screenshots. And the PRS that I made. Felix liked it a lot of like, descriptions screenshots explaining what was happening and invited to be on the core team in January of 2015. Which that's when Fastlane was still owned fully by Felix. And each tool was a separate gem, which kind of was a disaster to maintain. But that was like forever ago. So I started using Fastlane a lot in for our client work. And then it turned out that clients actually wanted like their CI stuff done. So I started doing consulting for CI stuff, I became doing less mobile building and more like scripting and, and that kind of stuff. So that was, that was fun. Like, I actually got me to contribute more, since I was doing a lot of that pretty much full time. And then, so I was pretty active as a core contributor for three, three ish years, but I wasn't, I wasn't like, super at the top. And then in 2008 2017, to 2018, there was another fast and related project that wasn't like Fastlane proper, that Felix was working on. And he needed somebody to actually main chain it or maintain the core part. So he brought me on as lead maintainer of Fastlane, and beginning of 2018. And at that time, I was still doing consulting, so I was a lead maintainer, pretty much like mornings, nights and weekends, while doing consulting during the day. So it became became a lot of work. But it was something that I thoroughly enjoyed, since like, this is like my ideal project, to, to do. And then let's see where so that was 2018. I was doing that for two years, kind of on the side morning nights. And then luckily, I was able to get funded to work on Fastlane, full time as of July of 2020, which was this past year. And that has been like a dream come true. So I gained a lot more free time, a lot more brain space. And I got a lot more done, I think in those six months than what I did in that in the previous two years. So that's kind of my Fastlane story, right there.

Jeroen Leenarts:

You mentioned that you you started the consultant thing, like after two months of corporate work. And but what did you do before that because you didn't computer science education or something? Yeah. So

Josh Holtz:

I, I went to school for software engineering at the Milwaukee School of Engineering. And that whole time I actually had a corporate internship. So I was pretty familiar with the corporate world. And I, I ended up taking the my, my post grad job was like a completely different kind of corporate field. It was, I was actually, I took a job that was more like low level programming, it was for monitors, or displays that were going into military aircraft, and where my internship was more like high level Java web services. And I was like, I want to try something completely new. I'm young. Let's try it. Well, the job I took for the low level programming, they end up switching teams on me. And I ended up going on to a team for the Blackhawk helicopter that was in a four year testing phase. So I, I was just like checking boxes, testing monitors, pushing things to see if things worked. And I'm like, I'm, I'm over this. So like, I probably could have changed teams, but like I already had a bad taste in my mouth. So I'm like, I'm out. But then before college, I also in high school, I took three years of programming classes there to visual basic five, I think, HTML, JavaScript, and then two years of Java. Before starting consulting, I had about seven years programming experience, or so

Jeroen Leenarts:

you did some extra courses during your college education. But what got you interested into computers and programming.

Josh Holtz:

So my dad is actually a computer programmer. He's been a computer programmer for 35 years now. And I actually didn't know much about it when growing up. It didn't really interest me at all, I was more interested in like, for a while, like arts, graphic design kind of stuff. Accounting. My mom did accounting on her own when I was probably like 10 to 14 and actually helped her out with some accounting stuff. And things made sense. Um, like, maybe I'll do that. But my high school offered a programming class and my dad was like, you know, just try it see how it is try something new. And like day one of the class I'm like, this is this is it like things just things just clicked and made sense? It was fun. I I just knew like that was what I wanted to do.

Jeroen Leenarts:

And you had a proud that at that point, right? I did. I did. Yeah. So yeah, I can imagine that. Not everybody gets into programming like because at eight years old, they are already like, messing away with bash scripts or a lot of people that are interviewed were actually with Commodore and Amiga OS but that's yeah a little bit before your time.

Josh Holtz:

I think that is all before my time. Yeah, I did. I did visual basic five, which I don't even think that thing anymore.

Jeroen Leenarts:

Now it's got got replaced by official basic dotnet I think

Josh Holtz:

yeah. Yeah, I don't think I even touch that one at all ever.

Jeroen Leenarts:

Let's see Fastlane tools, you're able to work on that full time. Because you, is it a sponsorship? Or is it like a project contribution? How did that happen? Actually,

Josh Holtz:

Google owns fastline. And I'm currently being funded through them. I'm not a Google employee. But they they sponsored my work full time.

Jeroen Leenarts:

That's really cool. Yeah. And what are your plans for Fastlane in the, in the first half of this year,

Josh Holtz:

who so probably catch up on prs. It's been a pretty busy December, I've been super active because I've been away for a few weeks. But I'm trying to catch back up on PRs issues. And then finish off some of the last tools that are needed for the App Store connect migration. There's two major tools that are still left that need to get migrate over to the new API. That would be produce, which is the one that creates the app, the developer portal and the App Store. And then PEM, which does a lot of the like push cert stuff. So I think those are the major tools they need to get converted over yet. And there's always things that need love. For for this past year, it really hasn't been any like major new features. Besides migration. It's just been kind of catching up on all the things. Faslane kind of lives in a weird space. It's an integration tool. So there's always things that change that always need adopting. So even if I have plans, things usually like pop up into the top of the queue pretty quickly. But we will be supporting Ruby 2.7. Soon, even though it's been out for a while, that hasn't been high, highest in the queue. And then Ruby 3.0, was announced in Christmas Day. So there should be support coming for that as well. And then we don't really have a good plan for like Fastlane 3.0, yet, but we do want to make some sort of big, big change, new change coming up soon since we have been investing 2.0 for a while, I don't know what 3.0 is yet, probably needs some time to think about where we can take things. But being full time for the past six months, it's kind of helped catch up to where we can maybe start thinking about like, changes to the actual like core itself that can prove it for a three Oh, release.

Jeroen Leenarts:

So and you mentioned already the the App Store connect API. So if you compare the current situation of the App Store connect API with what was available previously. Any thoughts on that?

Josh Holtz:

Oh, it's so good. I'm so happy about it. I was I was at the WWDC in 2018, where the App Store connect API was announced. And I wasn't really expecting it. And I think I probably cried when it was announced, because I'm like this is this is like the thing we need. Trying to find all the private API's and understand them and like adopt them all the time. is very time consuming. So having like an official API that will stay consistent, that has information on it, like that's ideal, I knew was going to be a very slow change, because there's a lot of API's that needed to get written for Fastlane to fully adopt it. And the first year 2018, we couldn't really change much. There was very, it was very little what was offered that would have actually been replaced, like maybe like 3% of API calls. So it wasn't really worth 2019 There was a bit more released. So we started changing over some tools like pilot, because the testflight API was announced for it. And that that helped quite a bit. And then this past past year, they announced pretty much almost all the API's that we needed. So I think we're probably at like 90% of the API's are migrated over to the official app store connect API. Which, which is nice because the official app store connect API does not need two factor auth, which causes a huge headache for C eyes. So and I believe in February, all accounts are required to have two FA now. So having the App Store connect API available is gonna make it a lot easier for everyone who's using it on a CI.

Jeroen Leenarts:

Okay. Yeah, of course, it's now that you you can configure the App Store connect API by just extracting a key from the from the connectors,

Josh Holtz:

rack. Yep. Yep, it feels it feels a lot more secure. We never stored any of the Apple ID information, but it still always felt weird as a user and During that, because it is kind of your personal private account. So having something that is a little bit more secure and revocable feels a lot better from from our standpoint.

Jeroen Leenarts:

And are you the only person who is fully tasked with maintaining Fastlane tools? And is the rest of the contributions by volunteers? You're also a volunteer, of course, but you have some income from it.

Josh Holtz:

Yeah, so I'm the only full time on it. There is another guy at Google, who is my manager, I guess, is what you would call him. He does more of like the Google liaison. This between me and them. And then everybody else, yeah, is a volunteer.

Jeroen Leenarts:

But, but looking at your work on Fastlane tools, you probably learned, like, a lot of detail about the App Store connect API.

Josh Holtz:

Oh, yeah, I, I know, I know, probably way too much. Sometimes I feel like,

Jeroen Leenarts:

but yeah, when did the idea for the Connect kit app, pop in your mind?

Josh Holtz:

Ah, so So Connect kit. So I've been a fan of the App Store connect API for what, like, two, two years now. Like, it's it's so fun to use. And it came out of really just wanting to understand how iOS shortcuts work. I, I've never, up until this past year, I knew shortcuts were a thing in iOS. And I couldn't figure out a good use case personally on how I wanted to use them. So I was like, Well, I guess that the best way for me to figure out how I personally want to use, like shortcuts in different apps is to actually make an app that has shortcuts in it. What can I make that like is a nice understanding for me how to like work through shortcuts. And it turns out that like I was like, well, the App Store type API is something that I already know. So I don't need to like learn a new domain, I can just use that. And then I put a proof of concept together one night, and I'm like, Oh, this is actually like, kind of useful. And it was just kind of born out of an experimentation of me wanting to learn how to do shortcuts.

Jeroen Leenarts:

And how's the app been been doing thus far?

Josh Holtz:

It's been doing pretty good, I think better than what I expected. It's it's a super niche app, I guess. Like, it's for developers, but iOS developers, but iOS developers that have access to an app store connect API, who also loves shortcuts and automation. So like, it's a very, like, small subset of people, I think, who actually like want to use it or need to use it. But I'm pretty happy with with the result. So far, I mean, couple 1000 downloads, I think I have, like 3000. I didn't, I don't think I don't think I expected that that many. Since it is, it's probably not the best use case for the App Store connect API. But there are like a few fun things that you can do with it. But I'm still working on adding more different shortcuts to it. To make things easier, so like, right now you there are, there's a shortcut that's like a generic HTTP request to one. Or if you read the App Store type API docs, you can do any request you want. But that requires reading the docs quite a bit. But we have actions for like viewing all all apps, getting finance reports, I'm going to create an action that actually likes that, that submits an app to the App Store, select which one, which IPA you want to use. So kind of like what Fast Lane kind of groups together, I'm going to create a few of those specialty ones to make automation easier on users. So they don't have to know as much about the API, but can still use it.

Jeroen Leenarts:

And what are typical things that you hear people are doing with the Connect app.

Josh Holtz:

A lot of people I think are using the finance and sales reports, and then displaying that in charts, or I don't know what else you do with it. But I mean, I don't really have too many sales. So I don't really have too many use cases for myself on that. But that is something that you can do. I think people are using it for testing for test flight too. I do have a sample shortcut in there that you can add user to a test flight group. And you can either enter an email address in a text field or select from a contact. So it actually makes adding in like a one off tester really easy. And I think probably either I think probably like this, the sales, the sales reports, finance reports. And the test flight stuff is probably the things that are going to get used the most. But yeah, you can you can submit a build with it. If you want, you can select a build. I found a pretty good use case for submitting a build. I would test my test flight build on my phone. And then once I'm happy with it, I just run a shortcut to submit the app

Jeroen Leenarts:

It takes the latest upload for a specific version and then pushes it into review completely or just select it in the

Josh Holtz:

it, it might shortcut selects the latest binary. And then and then submits that for review. I already had the change log added in there from my, from my upload script. But I'm thinking of adding a change log shortcut action in there too, so that I can update the change log if I want from that action, which might be a pain if it's a really big change log to type on my phone. But at least I have an option to do that too.

Jeroen Leenarts:

But connected is not the only thing that you that you work on. Because I also know that you do in the Deaf Monday. That's a newsletter if I'm correct, right?

Josh Holtz:

Correct. Yes, I started that one and June of 2020, I think.

Jeroen Leenarts:

And why did you start a newsletter?

Josh Holtz:

I was talking with him. I think it was in May, I was talking with Charlie Chapman and Christian Seelig. I don't know how we got on this topic, but they were both doing something. And I think it was like Monday, July, June 20 22nd, or something like that. It was Christian's birthday. And each year for Apollo, he does like a special like, Animal Rescue donation kind of thing. So he was like, preparing for that. And then Charlie Chaplin was releasing dark noise 2.0 On the same day. So it was a really fun day on Twitter, because there was so much action from both of both of their big events. And I tweeted out, I was like, I want this, like, indie dev excitement, every week. And like, 10 minutes after I tweet that I'm like, Well, I mean, I guess I could actually make that happen by like, featuring a new developer every week, them their app, their story. And I, in in the next 24 hours, I quickly created the site newsletter, and all that stuff, because I knew if I didn't do it in those 24 hours, I probably would not have actually committed to it. So I got, I got, I got everything up and ready by Wednesday. And I found my first two developers who thankfully answered my questions, I think within 48 hours, so that I could have it for the next for the next week. And that's kind of how kind of how it started, was just from an exciting day on Twitter, about indie developers, and kind of continuing that on through the rest of the year.

Jeroen Leenarts:

So and how's the newsletter been doing? As far as it is being read?

Josh Holtz:

Yeah. So the, the, the actual like newsletter, email subscribers is, I think less than what, what I thought was going to happen or it's growing at a smaller rate. But the Twitter following is actually growing a lot more. And the thing I don't actually know how to manage it, or to see is RSS subscriptions. Because I don't, I don't know how people can see like, who's subscribing from there. But there actually is a pretty good following on on Twitter, I probably could be marketing the email portion of the newsletter a lot more. But that's not not really my specialty. So part of my goal of of this year is to try and grow the email portion a little bit more. But also, the newsletter might be harder to read an email versus on web, because it is kind of kind of a long newsletter. So I don't know what what medium people prefer to read it in. I prefer to read it on the web. But I think between all three of those, it seems like it's growing pretty well. And I've, I've had a lot of fun doing it, which is the most important part. I've met a lot of cool people. And I had a year in review blog post that was published last Monday. And over, over those last few months, I've interviewed 39 developers from 19 countries, which is kind of crazy to think about. And my my goal for this year is to try and get more country representation than I have right now. It turns out that a lot of indies are from Europe, at least the ones that I am networked with some trying to grow, grow my network outside of Europe, even though Europe is super cool. So I have I have some that are lined up from Africa right now. I think I got a Mexico one lined up. Just trying to try to get more diverse throughout 2021.

Jeroen Leenarts:

It's actually interesting goal for 2021 Because I remember that you also had a goal for yourself for 2025

Josh Holtz:

Next. Yes, my goal for 2020 was to do conference speaking if that's the one you're talking about. Yeah.

Jeroen Leenarts:

So how did that work out for you?

Josh Holtz:

I mean, I didn't leave my house in 2020. So that that kind of made that a little bit hard. I did have a few conferences lined up. But I mean, everything kind of got postponed or cancelled because of pandemic. But I don't know if any Monday would really have been a thing. If, if, if the pandemic wasn't here, because my goal probably would have been more like outside of Twitter and more on speaking in real world. But going into, I guess, whenever it's safe for us to leave the house again and meet up in real life, I still want to accomplish that, that that same. Same kind of code of speaking.

Jeroen Leenarts:

Yeah. So and but why did you put yourself up to the task of doing a lot of conference talks in 2020? Because I know you had a very personal goal to actually do that.

Josh Holtz:

Yes. So I've had a stutter, since I think since like, first grade, at least, that's as early as I can remember it. And a lot of people don't actually know I, I have one, I don't have the worst kind of stutter that's out there. So I'm thankful for that. I can be fluid most of the time. It does really show itself when I I don't have like different options of words to speak. So example is saying my name is really hard for me. Because I don't really have another name for myself. So introductions are hard ordering food is hard. Sometimes.

Jeroen Leenarts:

It's the very specifically that if you have a couple of synonyms for a word, that it's easier for you then write a single words, that's actually describe what you want to say. Correct? Yeah,

Josh Holtz:

yeah. Cuz like, the more the more, the more I fail on a word, the, the more I fail on a word. So like, it just kind of snowballs. And I'm pretty sure a majority of it is a mental thing. I mean, I don't actually know how it works. But I've, I've tried to deal with the best I can. And kind of like use it to be more of like, a strength than anything. Because I have a, I have a hard time always saying what I want, I try and listen more to what others have to say. So that I kind of try and use it to my advantage in that sense. But speaking at conferences is a is a little different. Because I I mean, I think when most people prepare for a conference talk, they actually like plan out exactly word for what they're gonna say. And I don't I kind of I kind of wing all the talks that I've done so far. Because it ends up being a bit better I, I do I do plan out like what each slide is going to be. But I don't actually think about what what words I'm going to say because that just kind of ruins things for me. But I have realized that if I tell people I do have a stutter in the beginning of my talk. So which is usually like slide three, I end up having a little bit better luck being more fluent. Just because people like know what to expect. versus me just kind of like stuttering are nowhere and then then being confused.

Jeroen Leenarts:

It's interesting how you can actually come to grips with with Yeah, something that is hard for you. And then yeah, being able to just make it the strength of your personality, actually, which is really cool, I must say. So yeah, you were of course unable to do the full goal for all of 2020. Yes. But how many talks were you able to pull off in, in the last year?

Josh Holtz:

So I did quite a few virtually the Koko heads Netherlands was the first one, which was I think, I think that was April. And now when I did a demo of fastline. Hard to say sometimes. So that one, that one was super fun, because I gave myself a 40 minute time limit of implementing it from nothing to App Store. And I want to say it was pretty successful. I think I only had like one issue during that. During that were I think them messed up or something. I think that was at meetup that would have been something else where something messed up but end up being successful. I think what the video has like 7000 views at the moment.

Jeroen Leenarts:

I think it's doing good actually. Yeah.

Josh Holtz:

Which is pretty crazy to think about. That was my first one and I did another talk at a Koko heads meetup for Sydney. That one I recorded ahead of time because of major timezone differences. And that one was on App Store connect API. And then I did quite a few pods. I did three different podcasts as well throughout the year. Which the first one was really scary because it is all all speaking But they've gotten, I think they've gotten progressively easier. But also, still a little spooky at times,

Jeroen Leenarts:

I can imagine. Because if it's not your natural strength, then everything is scary. But if it's like, correct like this, there's not much you can do to prepare Actually, no, no, no, no. And that's also the I cannot imagine because I don't have a stutter myself. But I can imagine that it is, it can be very annoying, because you're perfectly prepared, you know what you want to say. And then I just stuff just doesn't come out. And you need to really force that word up. Because, for instance, Fastlane, that's just a product name. And because it's a product name, there is no other name for it. So yeah, yeah, I have to say that once I have to say words, yeah. It's Are there any books or resources that you think that people should really be aware of? Or that you think you should definitely read or listen or whatever consume that?

Josh Holtz:

I've been trying to read Danny's practical combine. And he is just released practical core data. I think that was officially released today. The whole thing. So I've, those are probably ones that I would recommend. I can't say that I've fully read either of them yet, because my time has been a little bit busy the past month. But those resources seem pretty great. And really useful for most apps these days.

Jeroen Leenarts:

Yeah, yeah. Make sure to link those from the show notes as well. Are there any other places online that people can learn about you or read stuff that you publish?

Josh Holtz:

I got so Josh, he holds on Twitter. Josh, he holds on GitHub, if you'd like to look through my GitHub activity. I don't know people actually do that. Josh, he holds on Instagram, which I occasionally post cat photos, dog photos, baby photos, rock climbing photos, that's not not super active these days on Instagram, but they're there. And then Josh Holt's dot com, where I have my blog, which I'm trying to somewhat be more active on, but that's not my top priority.

Jeroen Leenarts:

But everything, but everything else you are online is linked from Josh volts.com or

Josh Holtz:

correct, yes. Yep. And I think everything is also linked from my Twitter bio.

Jeroen Leenarts:

Josh, thanks for your time.

Josh Holtz:

And thanks for having me.

Jeroen Leenarts:

It's been fun. I will talk to you hopefully sometime in person in the in the new year. And so hope so. Yeah. Thank you for your time.

Josh Holtz:

Thank you very much.

Fastlane.tools and history
Fastlane.tools sponsorship and future
ConnectKit
Indie Dev Monday
Presenting goal in 2020
Books or resources?
Outro