AppForce1: news and info for iOS app developers
AppForce1: news and info for iOS app developers
Shaun Donnelly, developer turned manager turned developer with Indie apps on the side.
Shaun took me up on a request on Mastodon to come on my podcast.
We had a great conversation about how he ventured into management as a software developer. We also talk about how he got into software and iOS app development. Shaun took the React route. Start with web development, get started with React, progress into React native and then making the leap into native app development.
Ray Wenderlich, now called Kodeco was instrumental in learning about iOS app development.
You can get in touch with Shaun through Mastodon or his website.
- https://mstdn.social/@shaundon
- Nice UX Design Newsletter
- https://codakuma.com/
- Links to his apps are on his website too.
Some of the podcasts we mentioned in the episode:
- Under the Radar Podcast
- It's Always Sunny in Philadelphia Podcast Episodes – The Always Sunny Podcast
- 99% Invisible
- Everything Everywhere Daily Podcast
- Accidental Tech Podcast
- Swift by Sundell
Adam's conference https://swiftleeds.co.uk/
Big shoutout to Dave Verwer and the Curated platform.
Stream makes it easy for you to seamlessly integrate real-time experiences into your application. Check out their Swift tutorial to learn how you can get started adding video or in-app messaging to your apps!
Lead Software Developer
Learn best practices for being a great lead software developer.
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
Hi, and welcome to another special disinfo Podcast. I'm sitting here with Sean Donnelly, originally from Manchester, but he now lives in London. And the interesting bits about Sean is that he has had a formal education. And then he ventured out into the job market, but he's also doing some things on the side. So Shawn, how are you doing today?
Shaun Donnelly:I'm really good. Thanks, Howie.
Jeroen Leenarts:So how did you end up on my podcast? Actually,
Shaun Donnelly:I think I saw a post on record to Sunday on Mastodon, and you were looking for guests, I believe. And I think I replied, and I was like, Well, I'm, I can't remember exactly why I started with something self deprecating. And then you said like, no, it's fine. You can come on. So
Jeroen Leenarts:it is it is interesting, because I always get into the situation that people they have an interest in being on the podcast, but then it is like, Yeah, but I'm just like an average person. I just do my normal thing. And it's not exciting to anyone. But I think it's it's the opposite. Because people each have their own stories, their own experience. And I think whatever you do, you can always learn from it. Because yes, we have two big names. You know that Tim Condon and today that is from the area that you grew up in, but that they started somewhere as well. Right?
Shaun Donnelly:Yeah, absolutely. This is actually the first time I've ever been on a podcast. So yeah, I'm quite excited.
Jeroen Leenarts:Dads. It's easy. It's just you talking to microphone and don't? Yeah, we can always add it afterwards. Right. Yeah. So, Manchester, and what education University of Manchester? You told me
Shaun Donnelly:Yeah, so I went to University of Manchester. I actually started out studying chemistry. It turned out I was very, very bad at studying chemistry, and I failed my first year. And then I did the resets, in the summer holidays, also failed those. And then luckily, the School of Computer Science volunteered to take me
Jeroen Leenarts:it doesn't sound like you were like, into computers from a young age then
Shaun Donnelly:I kind of was I think the thing was like, when I was in school, there was no like computer science available then. So we did it. But it was like Excel and PowerPoint and stuff. So the main reason I ended up doing chemistry University was just because I liked it in school. And then in hindsight, that was a mistake. And I really like I've always liked computers. I'm very happy that I ended up studying computer science, but I wish I'd have done that in the beginning.
Jeroen Leenarts:Yeah, during my secondary education, I always liked the chemistry lab and physics lab. Yeah, because you could, you know, you could burn stuff and sometimes even blow stuff up, which was great. One time, we actually had a teacher that destroyed this, this chemistry cabinet that's in the back of the room, you know, for hazardous experiments. He basically burned a hole in the bottom of the thing a while, so I don't know what he did. But it ended up with liquid metal at the bottom. So that wasn't good. Gosh. So um, but University of Manchester, you enrolled into computer science. But what was your prior exposure to computers than before that computer games or maybe some hobby programming or what it was?
Shaun Donnelly:Like little bits, nothing, nothing major, really, like I wouldn't say anything as much as programming. I think I played around with like, front page and stuff like that when I was around like 11. And I think Visual Basic, and that kind of thing. But nothing really. I was always like, into computers. And I was making websites in on like Microsoft published in 97. But you know, it was all just drag and drop. There was no programming involved.
Jeroen Leenarts:So no, no right clicking on webpages and view source at that time. No,
Shaun Donnelly:I was very curious as a child, to be honest. I mean, I enjoyed playing on the PlayStation. But that was sort of the extent of it.
Jeroen Leenarts:Yeah, well, yeah. At some point, you do get curious how those things are created. Yeah. And then you got into a computer science program and did really like kick off from the start, like some sort of age that you were feeling that you were scratching the back then or what was it for you?
Shaun Donnelly:Yeah, I really liked it's kind of like what you've described, like just kind of seeing the plumbing of how everything works. The first language we deal with Java, and oh, boy. It's a nice starter language, like it's fairly easy to get going with. And then yeah, like, you know, the first few programs you made were very basic. But then, yeah, I really enjoyed that. And then I just went from there, basically,
Jeroen Leenarts:I can imagine because I always tend to think that swift as the language is really making the same motions in the direction that is developing as, as Java back in the day, because I'm one of those people that I think I got started with Java, one point something that's still still web browser. Applets was still a thing. Yeah. So that was like, kind of traumatizing. But anyway, so you graduated in 2013? If I'm correct, not 1102 1011. Yeah, and or got your start at a at a job right out of university. So what was the deal there? Well, what did you What do you what do you start with your new career?
Shaun Donnelly:Yes. So it was a small company. So it's down in London. So I moved to London for the job, that they're called IC, UK. And they, I think at the time I joined, there were 11 of us. So it's very small, we were just all in one room. And they were an Internet service provider. And they did like web hosting and domain names and things like that. And it was kind of a nice job in the sense that like, the job itself wasn't the best. But it was a really good way of like finding out what I liked. Because in such a small company, you just get to do a bit of everything. And that's where I found that my favorite bit was like the kind of UI UX front end, all that sort of stuff. And it was also there was no like, well, there were web frameworks then. But they weren't as widely used as they are today. Like, react was still a few years away. Angular was just about on the horizon. So everything was just hacked together with jQuery and things like that.
Jeroen Leenarts:Yeah, too many JavaScript dependencies was already a thing back then.
Shaun Donnelly:I think it was Yeah, but there was no NPM yet.
Jeroen Leenarts:No, yeah. To download half its internet manually, right? Yeah. Yeah. So but, um, so yeah, I got interested in front end development. But that's mostly web front end development, right,
Shaun Donnelly:web front end. So I did actually make an app for the iPhone at this time, which I've never really, like publicized much, because I've always been an Apple fanboy. And I always loved the idea of having an app. But to be honest, like, I just couldn't wrap my head around Objective C and UIHC. It. But I did make an app, it was very, very basic. So it was, it was called spectral. And it's no longer available on the App Store. But all it did, it was a single text box, and it would take a hex color, and it would convert it to an RGB color code. And I don't think they ever released anything other than 1.0. And my mom still has it on her phone. But I think it's the only person in existence, he still has a
Jeroen Leenarts:dedicated end user. So yeah, I've got this mom as well. She always likes everything I've published. So but um, but at some point, you you also you like progressing in your career, you let some front end development, you did some more front end development. But at some point, you also got interested in doing something on the side. So but how did that develop? Because you have your job. And at some point, you want to do something on your own? How do you combine the two things? Because it's a lot of work, actually.
Shaun Donnelly:Yeah, not? Well, to be honest. So I mean, in the case of spectral, it very quickly became abandoned, where, and I guess we'll probably talk more about my other apps a bit later on. But I constantly struggle with trying to find time to balance the two and yeah, like, I think there's a sort of thing around hustle culture at the moment where like, it almost feels like every single one of your hobbies has to be monetized. And obviously, that's what I'm doing. But I try not to be a bit too toxic about it. I still want to have fun, you know,
Jeroen Leenarts:you immediately touched upon an interesting thing. That's the monetization thing. Yeah. But was it something that you when you started with your Indie products? Was it something that you that you aimed for to get something that was monetizable? Or was more like, Okay, I've got something I've developed and progressed to such an extent. Now, there's something I can maybe monetize, or what's the what's the game plan there for you?
Shaun Donnelly:Yeah, it was definitely the latter. So I just made them for fun, basically. And then I continued doing them, and then people liked them. And then it kind of became a thing where I was like, maybe there's a way I can make a bit of money from this. Yeah. But to be honest, I didn't even want to in the beginning, because I I was quite intimidated by all of like, the tax forms on the App Store connect and things like that. And I just didn't want to have to get involved with those.
Jeroen Leenarts:Yeah. Yeah. But is it like, at some point, is it also a part that you don't want to monetize on something? Because then you actually have paying end users? And they might have some expectations on what you're delivering? Or is that a factor as well?
Shaun Donnelly:Absolutely. Like, there's a reason why most of my apps don't really have any external dependencies, because I don't want ever get to a point where like, I can never fully switch off or take a holiday. Because, you know, I'm constantly worrying about what if Server X goes down? So yeah, most of my things were on client side.
Jeroen Leenarts:So nothing, nothing, cloud hosted nothing back, and maybe some cloud came in. And not even that.
Shaun Donnelly:Not even that the closest thing I have is my app. Taylor's version has some Cloudflare web workers, but they're, they're very, very fault tolerant, and they're used for like a really tiny bit of the app. So that's it.
Jeroen Leenarts:Yeah, you want to be able to sleep at night. Right. Exactly. So but so yeah, you got started with like, in the iOS development, it's quite recently relatively in your career. Yeah, like 2020. That's, is that like started pandemic time even.
Shaun Donnelly:Yeah, it's not a coincidence. The timing it was it was April 2020. You know, we're all stuck in sides and I thought I'll finally learn Swift UI. And well, Swift UI was quite new at the time. But yeah, and some tax forms are right. Yeah. Eventually the tax forms came along.
Jeroen Leenarts:Yeah. So but But where did you pick up iOS development? And because it's not something that you just decided to open up Xcode and then say, Okay, I'm gonna write an app. There's a process involved to actually get you to that stage.
Shaun Donnelly:Yeah, I'd been doing a little bit at my job when I was at Skyscanner. But it wasn't real iOS development. It was React Native, but it was, you know, close enough that I got to run the simulators in Xcode, and things like that. So it kind of opened that door a little bit. And then it was actually do you know, the website, re Wendell ich.com, I think they've just rebranded to go Deco. That's kind of a name. That's it. I followed the Swift UI tutorial on there. And it was to make a it's a slider. And then you have these, it gives you a number like 34. And you have to try and drag the slider to the number 44. And super basic, but it was a really good way of kind of learning the fundamentals.
Jeroen Leenarts:Now, it's interesting because off the cuff, you just it's a side note that you actually mentioned there. Because it's interesting that to hear that you. You did web development, probably at some point, the React became a thing. And then at Skyscanner, you got to develop with React Native. So you actually take the web stack to a mobile device and actually develop apps with it. And that was sort of like your entryway, or at least some exposure to native mobile app development. And that allows you to grow into a position that you will like, okay, let's let's look at the native side of things and see how that works for me.
Shaun Donnelly:Yeah, absolutely. So the thing I was working on at the time at Skyscanner was the design system. I'll give a shout out even though I don't work there anymore. It's it's open source. So it's Skyscanner Dot Design, if anybody wants to check it out. It's called backpack and the design system when I joined, it was just for web browsers React components. And then over the course of the next few years, we expanded it to React Native then proper native, like UI kit, iOS, and Android. And I didn't ever do the UI Kit stuff myself, because it was around the time I was switching from being an individual contributor to a manager. But I was quite heavily involved in the React Native side.
Jeroen Leenarts:Yeah. So manager Ephraim. So yeah. How did that happen?
Shaun Donnelly:Basically, it was very simple. So I, I got promoted to senior software engineer in give us the beginning of 2019. And the career ladder at Skyscanner said once you get to that level, you can sort of switch to the parallel managers track if you'd like. And I just thought that sounds fun. I'll give it a go. And was it fun or not? Well, I've recently switched away back to being an independent, individual contributors. So maybe that answered the question for you. But I did it for a few years. So
Jeroen Leenarts:it's sufficiently different that? Yeah, it does take you away from the real technical work, I guess you you still have some exposure to technical things. But I can imagine that if you really enjoy the role of being an icy individual contributor, that you then do miss something if you if you switch to like, managing people, and instead of code,
Shaun Donnelly:yeah, and there were a lot of really good parts of management. I did enjoy. And you know, I've read them. Charity majors has got this thing about the IC manager pendulum. Maybe the pendulum will swing back for me Sunday, but right now, I feel like I want to spend more time on technical problems.
Jeroen Leenarts:Yeah. So was it a conscious decision to move out of sky Skyscanner into another company duffel? To actually get back to the coding again? Or was it due to external factors as well?
Shaun Donnelly:Yeah, it was external factors. So I actually only switched back to not being a manager a couple of months ago. So I joined duffel as a manager, and I was managing there until October last year. And, yeah, I really liked the travel space. So I was really happy to join duffel because I decided to leave Skyscanner, and it took a long time to find another role and yet Skyscanner was was really good. But I wanted to try somewhere else. And I was happy to stay in travel.
Jeroen Leenarts:Yeah, because you stuck around Skyscanner relatively long in your career, right? So I think it's like four years or so.
Shaun Donnelly:Yeah. Which, you know, in tech terms is a lifetime. average tenure in tech tends to be two years in length.
Jeroen Leenarts:I worked at my first job for nine years. Wow. It was consulting, though. So I got like new projects every six months, every two years by logging on the client. But yeah, that sounds good. I've seen a lot of Java code back in the day. So So you switch back from being a manager to being an IC, within the same company, which is interesting, because you didn't use a job change to actually or actually a employer change to actually switch your career path. So how was the process because I imagined that you were working at duffel doing your managerial things. And that at some point, you were like, Yeah, I just wanted to like write code again, please. Is that possible? Or What do they have that in their? In their policies that you can do that? Or what's the process?
Shaun Donnelly:Yeah, it's pretty much how you described. So duffles, quite a small company. I think, right now we have, I want to say about 60 people. And, to their credit, they were incredibly accommodating. So I'm I went and spoke to my manager, who's he's the CEO of the company, his name's Norberto, and I basically said to what you just said, like, um, I think I'd like to switch back and do some more technical things. And, you know, gave a few other reasons. And then it took a few months for it to happen, because it's not the sort of thing where you can just flick a switch and have that happen. And yeah, you know, I was happy to wait. And eventually, there was a company reorg in October last year, so they coincided it with that.
Jeroen Leenarts:And was it like, difficult getting back in to the technology again? So getting up to speed with coding again, what what's it like, because you have not been coding like, day in day out for for a couple years. By that time, you may be in the evenings on the side, you know, you're in the apps, but there's something that must have been like a bit of a challenge there.
Shaun Donnelly:Yeah, a little bit. It wasn't too bad, though. I always kind of had, I kept, I kept coding a little bit at duffel. So even when I wasn't coding directly, I was always reviewing like a lot of pull requests and things like that. So I had an idea of like, the architecture of our products. But then the best thing is, so I'm not allowed to say what it is. But I started working on new products. So brand new code base, didn't need to worry about any technical debt. And that product is launching on Wednesday. So by the time this goes out, I probably can't talk about it. But that's not ready yet.
Jeroen Leenarts:Well, I will make sure to update the link to that product in the show notes once you give me the go ahead to actually put it in the show notes. So just like add to the drama and the intrigue of this podcast episode a little bit. So but then you switch back to software development within duffel again, and but just to explain a bit duffel isn't a travel space, but what did they do as a company? General? Yeah,
Shaun Donnelly:so I'm supposed to have like a one sentence description for this, but I don't. I guess the quickest way is like, it's like Stripe. It's like Stripe, but for travel. So we are the kind of middleman that powers a lot of travel infrastructure. Right now. We just do flights. So. So my old company was Skyscanner. And imagine if you wanted to start your own, like a competitor to Skyscanner. Or maybe if you just wanted to have flights as like a sideline to the podcast, you could use duffel to like abstract away all the difficult parts of selling flights, like it's a, it's very surprising. Like, what I've learned is the airline industry is just an industry made up of edge cases. Every airline does everything differently. So we account for all of those things for you.
Jeroen Leenarts:So it's sort of like a Data Broker partner for travel itineraries like flights. Yeah, pretty much. Yeah. And then of course, we need API and reporting, and you pay a monthly subscription. And then you have like, great data to work with.
Shaun Donnelly:Yeah, that's right. So you get access to like, all sorts of stuff for us. And cool. We also offer like UI components as well, which is something that my team works on. So if you wanted to do like things like seat selection, or quite complicated UX patterns, you can use ours and then you don't have to build that yourself.
Jeroen Leenarts:Yeah. Because how many I don't know how many seat layouts there are in airplanes. I think just about as many airplanes there are in the world for passengers. But it's a lot. And and then there's also all kinds of pricing tiers going on. And yeah, so if like, you have to like not incapacitated to be even allowed in certain seats. I think it's an exit
Shaun Donnelly:row. Yeah. And I think it's Etihad. Or it might be Qatar but there's one airline, they have a type of seat that's just for Falcons. And for people who are transporting birds, and there's all sorts of things. Yeah, that's
Jeroen Leenarts:cool. So but so that's, that's like a little bit of an overview of you, from your studies to your job right now. And that you actually made two big switches in your career not only employees but also from IC to management and then from management back to IC the management still engineering management's have still very technically focused. Yeah. Any words of wisdom that you have for people that are like in a similar position that they're like, yeah, how do I go left to go right? So what what what some considerations they should think about according to your experience,
Shaun Donnelly:um, I think I would say when you become a manager, you should be aware that your time isn't necessarily your own. So like, sometimes people will need you short notice and, you know, you need to drop everything and help them and that's okay, though. Like, I'm not I don't mean it as a negative. It's just something to be aware of. Like if you're hoping to have a quiet day or getting your head down. That can happen but also, free things will just drop in your lap at once. I'm, I find it's also really rewarding in a way that coding isn't necessarily like there was somebody I managed at Skyscanner who joined us as an intern. And then he ended up. He was a senior software engineer by the time I left, and it was so great to see him grow and you know, be able to help him do that.
Jeroen Leenarts:Yeah, it's about like, about people that you get to work with. Right?
Shaun Donnelly:Yeah, definitely.
Jeroen Leenarts:Cool. At some point, you also got into in the app development, that's something we casually mentioned already, like, startup grown up. Probably had some extra time on your hand back then. Yeah, exactly. But you were probably already doing some coding with iOS by that time, because that's in the middle of your stint at at Skyscanner, where you got your exposure to app development through React Native. And then you started dabbling with, with native iOS development, thanks to the material by Ray Wonderlic, now called CodeTwo. But But how did you get like an idea for for a product or was more like something that you needed for yourself? And then at some point, you came to the conclusion, hey, this is actually something other people might like as well.
Shaun Donnelly:Yeah, it was kind of like that. So there was two reasons that I went with some, my personal best is a workout tracking app. And the reason I did that is two reasons. One was the only reason we were allowed to leave the house, except for like, going to the supermarket was exercise. So I was had quite a good exercise routine in spring 2020. And so it was natural that, you know, I wanted a way to track those. The second part was that I really didn't want to have to have a back end to deal with. And I thought, well, HealthKit is already on iOS. And it's basically like a back end that's made for you, you know, there's API calls into it, you can read and write from it. So it was just kind of a perfect combination of those two things.
Jeroen Leenarts:So what does personal best do as an app and it tracks your workouts? But personal best? That seems to? Like it does indicate something in the sense of? Well, yeah, personal best, right is like about self improving your workout results or your timing, or what is it about?
Shaun Donnelly:Yeah, kind of, I think a little bit, it's been a bit unfocused, up until now. And I do intend to address that. But it started out as showing you your top three workouts. So it would say these are your top three distances. So that's where the name came from. Since I've evolved it, it still does have that functionality. But it's kind of evolved into more of a general purpose Workout Tracking now. So it can do things like interesting stuff, like you know, show you a map of where you went or show you like charts of your heart rate zones. But it can also do sort of silica things like, it can tell you how far you've run in terms of like, distance to the moon and things like that.
Jeroen Leenarts:But it is something that it has a lot of similarities with what what health kits or the health app itself can provide. So what does it add on top of that, because that's probably the unique selling point of the product that actually allows you to have an interest of people in the app, right?
Shaun Donnelly:Yeah, that's it, like the health app is really good for what it does. But it's inherently limited. And I think Apple's thing is, they tend to favor the 8020 thing quite heavily. So there's certain advanced functionality that they probably won't touch, they really just want to do the stuff that's good enough 80% of people. And that's where personal best comes in. So I try and take that data and turn it into like useful information. And there is some overlap with the health app there. But I want to go a little bit deeper, and adjust things like that. And then there's things like widgets as well that the health app doesn't have.
Jeroen Leenarts:Yeah, just making the because that's what I noticed with the health app. There's like, a ton of information in there. But just getting to it and actually discovering what's even available in there. It's like such a hassle. Yeah, so but and also you add a lot of achievements, I think with personal bests, right.
Shaun Donnelly:Yeah, I had an achievements feature. So I had a really good time coming up with like puns for all the names of the achievements. That was around a year ago that I released that feature.
Jeroen Leenarts:And it is personal bests, just a side project for the fun of it, or is it also something that that? Well, it, it doesn't pay your income, but it's a nice side income, or is it not monetized?
Shaun Donnelly:It is monetized. So currently, it has a an in app purchase for a recurring subscription that I call personal best Pro. So there's a monthly and annual or lifetime purchase option. And there's also the requisite tip jar that every indie indie developer has,
Jeroen Leenarts:but is it like a baseline version and then a premium feature set or is it?
Shaun Donnelly:Yeah, that's right. So I don't want it to be too limiting for anybody that doesn't pay for personal best pro because I don't want to put people off. So the data you get is limited without the pro version, but it's still enough to be useful.
Jeroen Leenarts:Now. That's probably Like, you can look further back with the premium version and you can get some more visualizations, right?
Shaun Donnelly:Yeah, so the basic version has like the last seven days, the last 30 days, and then pro you get like 90 365 this month this year in all time. And then there's also extra data as well.
Jeroen Leenarts:Cool. So but so that was something that was developed because of a personal, personal, it's really because she wants to track your own workouts. And is that the case for all your other apps that you created as well? Because you have three apps on your website right now. And the other ones are called Taylor's version and health drop.
Shaun Donnelly:Yeah, so health drop isn't really one that I do much marketing with. It's, it's basically a utility app that I use for personal bests. So all it does is it allows you to create workouts programmatically. So if you need some, some like test data, you can just do that rather than going and getting them. I've actually since built some functionality into personal bests that way, you can export one of your workouts as JSON and then re import it. So I don't really use health drop anymore, but I may do something more if it's Sunday. Taylor's version was definitely about scratching an itch, though. So yeah, I'm, I'm a very big Taylor Swift Fan, or Swifty, as we call it. And so in, I think, 2021, she started releasing them, she recorded her first six albums, it's a whole thing, you can look it up online base, essentially, because she wants to own her masters. And as a good fan, I wanted to switch all my playlists on Spotify over to only use the new recorded versions.
Jeroen Leenarts:Because then she gets, then she gets just this tiny fraction of a cent more, you have to listen to her songs. Right, exactly.
Shaun Donnelly:And she clearly needs more money. So. So I decided to, it would have taken me 10 minutes to do that across my playlists. But I decided to spend six weeks making an app to do it instead.
Jeroen Leenarts:Yeah, and it does have like, a lot of appreciation within the Swifties. Community.
Shaun Donnelly:And it's added a little bit yeah, like, to be honest, not as much as, as I'd have liked to. I was really hoping I would have got some of these articles about, you know, look at this silly thing that somebody built that I didn't really get anything like that. But I kind of made it as a passion project. So it's okay. Yeah,
Jeroen Leenarts:just to upgrade your own albums, and you felt like, yeah, I can do this with a whole bunch of code, and spend even more time on it while doing it, but then be able to redo it over and over again, which I would never do, of course, but do you ever did you ever consider like not listening to Taylor Swift through Spotify? or other means or not?
Shaun Donnelly:No, not really. Like I've been using Spotify since it first came out. So I don't think I can ever move
Jeroen Leenarts:now. Yeah, once once you're like entranced. You can't go anymore. Yeah.
Shaun Donnelly:So I tried Apple Music When it very first launched in 2015. And I downloaded a lot of music onto my iPads. I went on holiday to Thailand, and then a week into the holiday without any internet. It deleted all the music. So it was like,
Jeroen Leenarts:a good experience. Yeah,
Shaun Donnelly:I've never gone back since then. Yeah.
Jeroen Leenarts:Yeah. So um, so you have like, three apps that you have publicly available? One is doing quite nicely, I guess the personal bests? Yeah, the health drop is more of a utility. That's, well, it's useful, but that's about it. Yeah. And the Taylor's version is that also has an in app subscription, or like, a tip jar, or what is it?
Shaun Donnelly:Yeah, it has a one time in app purchase. So the idea is, it will scan all the playlists for you, and it will show you like, what songs need replacing, but to actually do the replacement, then you need to pay. I think it's 299. For the pro version. To be honest, it hasn't had a huge amount of sales, but I also haven't marketed it.
Jeroen Leenarts:Yeah. Yeah. But what's interesting there is that you are integrating with the Spotify API, right? Yeah. Is the good APR. No.
Shaun Donnelly:It's pretty good. I found it a little bit difficult to use until I found a really good swift library that somebody had already put together for it. But yeah, it's decent. The thing I found a bit troubling, not traveling a bit challenging was they need to approve you to use your use their API. And they have quite a lot of rules around it. So not only do you have to go through appstore approval, you have to go through Spotify as approval. And the rules are things like you can't use a corner radius. And anytime you show album art from Spotify, you have to just have square corners, which didn't really fit in with my UI, but had to do it. Okay, and anywhere that you show content from Spotify, you also have to have a button that will open the content in the Spotify app. Okay, which to be fair that's quite nice. So um, you know, I had to integrate all of this but yeah, it took a while to get approved.
Jeroen Leenarts:So but they do give good feedback on on what you need to change.
Shaun Donnelly:They give diplomatic way of putting it is it's slightly better than appstore connects feedback.
Jeroen Leenarts:Yeah. That's it's not sure if that's a politically correct response. But yeah, I can imagine that it is sometimes quite terse, what you get back as a response on, on a review that you've requested? Yeah, it can be. So but, again, this is an app that has sort of a back end, but not something that you control or something that you have to get up for in the middle of the night. Probably on purpose as well. Yeah. So is that something instead of is that pattern that you consider that you will keep on doing for the foreseeable future? Or what's your what's your, what are your are these there?
Shaun Donnelly:Yeah, as much as possible, I want to do that. So like, I have some ideas for personal best, that would involve server side stuff. But I'll always make sure to build things in a very fault tolerant way. So for example, I've had an idea for a feature where you could see your workout stats compared to everybody who uses the app. So rather than just saying that was your third fastest run of all time, it could say that was the third fastest out of you know, these 1000s of people. But I would do it in a very sort of progressive enhancement way. So that if it didn't work, if the server went down for some reason, then, you know, nothing's gonna break, you just won't see that bit of data.
Jeroen Leenarts:And what are some mechanisms that you could use to do this progressive enhancement of your visualization?
Shaun Donnelly:I mean, I think I would just hide that bit of UI selectively. I have an example of where I've put it into practices. So in Taylor's version, there's that there needs to be a database of what these pre recorded songs are. So it knows like when to recommend them for you. And because Taylor Swift likes to surprise release albums, I didn't want to be reliant on an app update. Because then by the time it goes throughout review, you know, people might have, I might have missed the boat. So I have an online database that I can update, it's just a JSON file. And when the app launches, it attempts to contact this Cloudflare URL and pull it down. But if it's not there, then it has a locally stored one that's baked into the app. So it's okay, if it's not there.
Jeroen Leenarts:And this is the mechanism that if it's if it's able to download the JSON file successfully, it caches that copy locally, and shadows the baked information. That's right. Yeah, yeah. So even if you then at a later stage have a half updated list, you still have like, relatively recent data in your app bundle available. Yeah. Can you show? Yeah, because I imagined that that's just a mapping between what her old recording is and what her new remastered version is that she owns. Right? Yeah,
Shaun Donnelly:that's literally it. So yeah, it's just anytime it sees this Spotify URI, it replaces it with this other Spotify URI?
Jeroen Leenarts:And is this data that's like shared online? Or is it something you have to like, dig for yourself in the Spotify app?
Shaun Donnelly:Yeah. So I have to go into Spotify, get every new track, right click get the link and then pull out the Spotify have these like custom URLs? I have to call that
Jeroen Leenarts:out? How many tracks this you remastered by now?
Shaun Donnelly:So she's released two albums, plus a few singles? So probably around 35 tracks? That's not not too
Jeroen Leenarts:bad. Yeah. So but but do you have any stats on how many users actually do these conversions on the Spotify library? And also how much of their library you're updating with, with this process?
Shaun Donnelly:I don't actually like, um, I mean, I could find that data by looking at my API usage. But I'm quite averse to collecting data that I don't need. And I've never decided to look at that. So I've just never done it.
Jeroen Leenarts:Yeah, it's the it's the model of like, huge data should be treated like toxic waste, you you'd rather not have it right.
Shaun Donnelly:Exactly. Yeah. Cool.
Jeroen Leenarts:So what are your plans for your next project? Or are you still like working on improving these three apps? Or what? What are your What are your thoughts there? Yeah, so
Shaun Donnelly:Taylor's version is effectively finished. So I will update it every time the music comes out. And you know, if like things change in iOS, but for all intents and purposes, it's done. I did look at adding support for Apple Music. And that's my number one request. But it's quite technically difficult because Apple music doesn't allow you to delete songs from playlists via their API, which is kind of a functionality that I need. So I decided to shelve that. On personal best, I think, to be honest, that will never be finished. Because its health is just such a big area, there's so many things I could do. My dream is for it to become like, almost like a virtual personal trainer, where, right now it presents all this data to you, but it doesn't really tell you what to do next. And I'd love for it to be able to like push you a little bit more and things like that.
Jeroen Leenarts:But that sounds like you have some big plans there for your Indie products, but you also have a day job. So how do you balance your time between the two?
Shaun Donnelly:quite poorly. So yeah, it's something I've always struggled with. So like I mentioned before with like hustle culture and things like that, I think I very quickly got into a point in 2020, where anytime I wasn't working on my apps, I had this like guilt at the back of my mind. I mean, I was also raised Catholic, so I always feel guilty about something. But
Jeroen Leenarts:I, that's a bit of an in joke there, I think. But yeah, I understand.
Shaun Donnelly:And then yeah, so I'm trying to be a bit more balanced with it. One thing that has really helped is I've recently stopped working Mondays. So I now have an extra day a week to spend on this stuff. So like, I have an Xcode window just off to the side of the screen here. And that's what I've been doing today. But yeah, I also just try not to feel bad if I if I want to take a break if I want to watch a film or something. And I'll just do that instead.
Jeroen Leenarts:So where you're able to, like, take today less of your day job, because of the income that you were already getting from your products or what what was the thought process there because to a lot of people working a day less has some significant financial implications as well. So there must be a plan in place. Otherwise, it's like Wild West cowboy behavior that will only hurt you in the end, right?
Shaun Donnelly:Yeah. So my goal is for me to be able to do what you've described, and like, make up the last income from my apps. But I'm nowhere near that yet. Like I wrote something on my blog at the end of 2022, which had like how much I made last year. And you can see, it's, it's like it didn't even pay for my new laptop that I bought last year. So it's nice to have in like there. Yeah. So the reason, the way I've been able to do it is my work have been really accommodating. And they're allowing me to do a six month trial of working what we call compressed hours. So I still work the same number of hours, but I do it in four days now instead of five, which I'm only about a month and a half into the trial. So, you know, it may not continue once the trial ends have to see how they think it's gone. But that's what I'm doing at the moment.
Jeroen Leenarts:So that's like, what what is it nine hour days or 10 hour days that you're making nowadays? And also, you're still working 40 hours?
Shaun Donnelly:Yeah, I am quite tired. And you know, I'm figuring out how it's all good.
Jeroen Leenarts:Yeah, yeah. But about this hustle culture. You mentioned that a couple times. Yeah. Let's just define it a little bit. So So what is hustle culture, according to your definition?
Shaun Donnelly:Well, I think you see things like, it's a bit difficult to just have a hobby. And I think there's a sort of a societal pressure almost to turn it into something. So it's like, oh, okay, you enjoy going bouldering on the weekend, have you thought about making an Instagram about or your bouldering exploits? And then maybe you can get sponsored. And obviously, I'm exaggerating a little bit, but I think there is an element of that that can creep in. So I'm trying not to succumb to that too much.
Jeroen Leenarts:But it's it's something that is more prevalent in software development circles you think?
Shaun Donnelly:Possibly. I mean, that's the circle that I'm in. I don't know about other circles.
Jeroen Leenarts:It's an interesting topic, because I've been doing this podcast, also since 2028. Yeah, go figure. And I have a sponsor runway dot team at the moment. Yeah. And it's not a big sponsorship, but it does allow me to, you know, cover the expenses of running the podcast. And occasionally, you know, buy some new gear or replace something that is like, a worn out. But, yeah, it's to me, that's like, fine. It's like, it helps with keeping going so to speak. So that not to know that you're okay, your direct expenses are covered. But it's not, it's not a replacement of income. For me, it's just that sometimes you have a bit of luck, you have like a big sponsorship, and you do something specific to a specific brand. And then it's like a one time nice windfall that you get but but nothing, nothing life changing. Really. Yeah, absolutely. And but sometimes you hear these people that they they create an app, and they're wildly successful. But I do think that's that that's the typical outlier bias that that you're facing there as well. It's like you hear the big success stories. And of course, it's great to dream about those things. But how likely is it that that somebody is able to just come up with an app or the code, it's in its evening hours and then have like, Well, life changing amounts of income all of a sudden for a year long and then be able to, like buy a house and not be in debt with a mortgage anymore for the rest of your life? Right?
Shaun Donnelly:Yeah, absolutely. Like, I think you've really touched on something there. Like when you see things from the outside, it's so easy to assume that these things have come easily to people. But you know, sometimes it happens like look at Flappy Bird. But mostly most of the time that's not the case. Like if you look at David Smith, who he makes widgets and if I Quite a lot of other apps, widget Smith was like wildly successful. You know, it was number one on the app store for a while. And it's done really well. But like, I also know that I don't know him personally. But I've seen his work. And like, I know that there's a very, very long road that got him there. And it wasn't just an overnight success. It was years in the making together.
Jeroen Leenarts:Yeah. Because he's, he's, he's like one of these people that has like, an insane amount of app products available in the store even and yeah, like, sleep tracking apps and step counting apps and all kinds of other things. And some of them they're successful, some. And he's also very adamant about like, Okay, if something is not working, if there's no financial gain, to be had there anymore, he'll just end the product. And that's fine. Because, yeah, he his, his, his way of working is really to to have a livelihood through his app business. And for some reason he was able to, to achieve that. But he took some time getting there, I think. But I do think he also makes a nice side income with podcasting nowadays as well.
Shaun Donnelly:Yeah. Like, I've mostly heard about this stuff, because I listened to under the radar. Get all of their stories directly.
Jeroen Leenarts:I watched it again, like in like under 30 minutes, or was it 20 minutes? Well, how long is the are those episodes?
Shaun Donnelly:Every episode was not longer than 30 minutes until they did the live one for WWDC, which was like 44 minutes.
Jeroen Leenarts:Yeah. And then since then, it's like most of the time, the 30 minutes. But it's a podcast that is very interesting to to listen to, if you're in to iOS development, especially if you're into iOS in the app development. Yeah. Because you get to hear some insights about the about app development from David Smith. And Marco Arment, who creates the overcast podcast player, he does have some infrastructure that he needs to maintain.
Shaun Donnelly:Yeah, because he's, I listened to ATP as well, his other podcast. And I know that Linode is quite a frequent sponsor on there. And he usually mentions that he uses them. I imagine his infrastructure costs are quite high.
Jeroen Leenarts:Yeah, I think he mentioned it somewhere. It's like a couple of grants. Each each month, really, I think, yeah. Oh, well. But yeah, that's also one of these apps that's like wildly successful, just with like, large subscriber bases, which is great. I'm gonna grab it to his podcast player as well. Yeah, I
Shaun Donnelly:use it every day. It's great. Yeah, I don't want to
Jeroen Leenarts:look at the stats of how many hours is saved with the speed improvements features in the app.
Shaun Donnelly:So I actually looked at mine yesterday is 106 hours for me.
Jeroen Leenarts:Oh, that's not too bad. I should, I should look up what I got, actually. Okay, I found the the overcast, SmartSpeed statistic in my overcast app as well. SmartSpeed has saved you an extra 496 hours beyond speed adjustments alone.
Shaun Donnelly:Wow, that's like three weeks.
Jeroen Leenarts:I listened to too many podcasts. So, but talking about podcasts. What are some podcasts that you like listening to? Because we mentioned under the radar? You mentioned ATP? Or is there another specific podcast that you really like? And please don't mention my podcast?
Shaun Donnelly:Yeah, I won't mention yours. And oh, I've got overcast over my ear. So yeah, I listened to ATP every week. I've been listening to that since the beginning. I've got I'm currently adding to the Last of Us podcasts. They've done a companion. I don't know if you've come across off menu before. This is not an app development podcast. It's just a very funny podcast with two British comedians. The talk show with John Gruber. I don't listen to every episode. Swift bison dials a big one. under the radar. There's It's Always Sunny in Philadelphia podcast as well. But I don't have that many because I just find I don't. I tend to listen to music a lot. Like, obviously a lot of Taylor Swift. So I don't have that much time for listening to podcasts outside of that. So I only have about what was that about six or seven?
Jeroen Leenarts:Yeah. Yeah, I really like 99%, invisible ATP, of course, jackpot by Brett anwil. And then I have a lot of security related podcasts for some reason. Okay. But what I really like is everything everywhere daily. And that's like, a daily Apple Daily episode is like 1011 minutes long. And it's about some random facts in the world. And like, for instance, recently, he had like a podcast about the cult of reason. Okay, the Super Bowl, vitamin D, the Spruce Goose. And what else? The worst year in history, the Teapot Dome scandal. So it's all about volcanoes. It's like totally random things. And it's like if you look at the title, so like, why would I be interested in interested in this? But every single time no know how silly the topic. It's always fun and it's like a 10 minute lesson and that's what I really like. It's like you just learned something that you wouldn't have come across otherwise.
Shaun Donnelly:Yeah. That sounds good in 10 minutes is great, like when you're just on the bus or something.
Jeroen Leenarts:Exactly. And especially with SmartSpeed, and some speed boosts, it's like even shorter. Okay, Shawn, I noticed that we're already coming up to 45 minutes. Is there anything anything specific we still need to cover? Before we start wrapping up our conversation,
Shaun Donnelly:I think we've covered most things. I did release a newsletter as well, which I only did the first issue about four days ago. So not many people have seen it yet. But so it's called nice UX design. And the URL is nice UX Dot Design. And the reason I started it was, so there was a Tumblr blog that I used to really like called Little Big details. And they would post like these nice little details that you would see in people's UX and things like that. And unfortunately, it sort of disappeared. It's still online, but it's not been updated in years. And I was thinking to myself a few months ago that I really missed it. And then I thought, Well, why don't I just sort of bring it back myself. And I thought I would do it as a newsletter. I registered the domain name back in August, I think last year, never did anything with it. And then the other day, I was just thinking to myself, if I don't like announce this thing, then I'll never feel the pressure to actually do anything with it. So I, I went on Twitter, and I said, I'm making this and then here's the signup form. And then I sort of felt like, Okay, well, now I need to follow through. So it goes out every other Friday, as of Friday, just gone.
Jeroen Leenarts:So how many subscribers by now?
Shaun Donnelly:Currently, I have 50. So that's, that's pretty good. Actually. Is that good? I've never done a newsletter before. Yeah, but
Jeroen Leenarts:just in like a week's time. Just have 50 people. That's, that's definitely more than your close family at least.
Shaun Donnelly:Yeah, I mean, because I can see all of the email addresses as well that people sign up with and like, there's some interesting domain names there as well, like, you know, from companies and things, which is quite good.
Jeroen Leenarts:Yeah. And it shows what, like, just sharing some things on social media can do. Yeah, cuz, yeah. And you're using a nice platform as well. I know this curated. That's, that's what they for were from the iOS dev weekly, at some point created. I think he's still using that. But he has some sort of super customized version of curated that he's using, I think, yeah. So
Shaun Donnelly:what actually happened was, I thought, I really like iOS dev weekly, I'll see what's powering that. And I found this platform curated as a result of that. And I signed up for it. And then I had a question about it. And I messaged Dave, and I don't really know, Dave, I've emailed a couple of times, I messaged him, like Wednesday, last week, and said, Hey, I've noticed using curated, could you tell me about this thing? Maybe? And he said, Yeah, I made curate it. And I was like, oh,
Jeroen Leenarts:yeah, but it's with Dave. He's like, super nice if you ever get to speak with him in person, or even just through one of his online platforms, because he's also worked on the, on the Swift package index. And yeah, he's just super nice. And it's just Anytime he's he's really busy. But if he comes across your message, and he has some time, you get like a decent answer that is, like, much more elaborate than you would actually even expect. And considering the time constraints he has to work with. Yeah, so shout out to Dave because I love his newsletter, by the way. Yeah, I've
Shaun Donnelly:been a subscriber for much longer than I've been an iOS developer. Yeah, he sent me a really nice email on Friday as well to say that he liked the newsletter. So that was really nice to hear.
Jeroen Leenarts:Okay, so definitely going to link that one from the shownotes, nice UX Dot Design. And how do you get the links that you put in your newsletter? Do you have some sort of RSS process going on? Or
Shaun Donnelly:I just have a huge Trello board? Yeah, and I just if I notice something that I like, or I occasionally include details that are not so nice as well. So I just I have a list of a nice thing in the list for not nice things.
Jeroen Leenarts:Yeah, those are those are those like, fun for like the final thing on your newsletter sock. Okay, this is something not so nice. Maybe? Yeah. All right. Well, what we'll do is we'll make sure that everything is linked from the show notes. So that's nice UX Dot Design. Also your, your websites, go to kuma.com.com. And everything that we talked about, you can find on on Sean's website. And once this new thing has been launched, make sure to also give me a ping about that. Because then I can include that as well as a link in the show notes. And, yeah, where can people find you online?
Shaun Donnelly:And, of course, yeah, so I am on Twitter, but I think like a lot of people I'm not really using it anymore for reasons that I won't go into, but I think everybody knows. So I'm primarily on Mastodon now. So I'm, I'm at Shawn Don. So that's SHA u n d o n at MSC d n dot social. Yeah.
Jeroen Leenarts:Let's link that one as well from the show notes. Right.
Shaun Donnelly:Yeah. You can also email me as well, like, you know, I love hearing from other developers and people who use my app. as well,
Jeroen Leenarts:yeah. And especially if they have some questions about how in the app development is working for you. I think you're just what is it called nowadays? I think they call it posts nowadays on Mastodon as well. But you're just one message away on those social platforms as
Shaun Donnelly:well. Yeah, definitely. Cool.
Jeroen Leenarts:Well, Shawn, thanks for your time. And maybe we ran into each other on a conference or something, and was definitely nice talking to you. And learning a little bit about your backgrounds and the things that you did as a software developer.
Shaun Donnelly:Yeah. Thank you so much for having me. I've never actually been to an iOS conference. I would love to attend on some time.
Jeroen Leenarts:I know there's a nice one in Leeds this year. But by Adam, I was
Shaun Donnelly:gonna go last year, but I didn't have enough time off to use for work. So
Jeroen Leenarts:I was there last year. I'll have to go this year. Yeah. I'm not sure yet. If I can go there this year, but we'll see. Yeah,
Shaun Donnelly:I mean, my parents live 30 miles away from Leeds, so I have no reason not to go.
Jeroen Leenarts:And no excuses anymore. Yeah. All right. Talk to you later.
Shaun Donnelly:Cool. Thank you.