Shipping side projects in 2-2-2 Easy Steps - Jordi Bruin

Shipping side projects in 2-2-2 Easy Steps - Jordi Bruin
===

[00:00:00] Jordi Bruin: It's just oftentimes new APIs spark new ideas. Yeah. And then it's just a really easy form for me to get inspiration. Right. Because I can look, I can look at the release notes between iOS see, oh, these new APIs are added. What can I do with them? Yeah. Um, what does it make easier than before? Welcome to the

[00:00:18] Antoine van der Lee: very first episode of the Going Indie Podcast.

I'm excited to kick things off with a special guest and close friend, Jordi Bruijn. Jordi has been an Indie developer for years, with several successful apps under his belt. What's fascinating is how differently he works from me. In this episode, we dive into his unique approach to managing and updating multiple apps, his creative process for new ideas, and how he can go from concept to app in just two hours.

Enjoy this episode. Welcome, Joeri. Hey, Ton. Good afternoon. Morning. Good morning. Going in the interview. How are you doing?

[00:00:57] Jordi Bruin: I'm doing pretty good. Had a good sleep. Um, it's nice to see you again. So I'm looking forward to talking with you about whatever.

[00:01:04] Antoine van der Lee: Yeah. Getting to finally know you and your background, isn't it?

[00:01:07] Jordi Bruin: Yeah. Not just as a friend, but as an indie developer. Yeah.

[00:01:10] Antoine van der Lee: Because we go way back. Yeah.

[00:01:12] Jordi Bruin: Yeah. 10 years or something at this point. Is it 10 years already? Maybe even more, yeah.

[00:01:16] Antoine van der Lee: Okay, well, not everybody knows you. So maybe you want to start with a short introduction about yourself.

[00:01:21] Jordi Bruin: Yeah, sure. So, um, I'm Jordy, Jordy Bruun.

Um, I'm 36 year old from Amsterdam in the Netherlands and I'm an independent developer for Apple platforms. So, for about three years now, I've been fully independent, making my own apps. Um, things like Mac Whisper, PosturePal, Navi, MacGPT. like 20, 30 different ones over the last few years, a lot of small ones, some bigger ones.

Um, and yeah, I just like to make useful things for people that solve problems in a simple way. And you and I, we know each other already for about, I think, 10 or 11 years at this point.

[00:01:55] Antoine van der Lee: And

[00:01:56] Jordi Bruin: we used to work together at this digital agency. And then after a few years you left to, uh, to go to other places. Um, And I stuck around a little bit longer, but then we stayed friends afterwards.

So,

[00:02:05] Antoine van der Lee: yeah, it's pretty wild how we distracted from each other and then eventually came back to each other. Um, I have so many questions for you today, not just to let others get to know you. But I think I might not even know everything about you yet. So I want to dive into a lot of things. First of all, you do, you do a lot of things.

You have many different apps. Um, but what I find interesting is that back in the days at the agency, I think we, we, we, we had a tropical Tuesday where we did something in the evening. On the, on the Tuesday, we tried to build some stuff.

[00:02:40] Jordi Bruin: Yeah. So just to clarify, We were working Monday to Friday and every Tuesday there was an option to have dinner at the office and people could just work on whatever they wanted.

So you had developers working on design stuff, developers making video games, designers learning how to code. Um, so it was very like a learning ground for people. Yeah,

[00:02:56] Antoine van der Lee: exactly. And here it comes. Like you weren't a developer. Now we're sitting here now. We were talking about indie developers. Yeah, yeah,

[00:03:04] Jordi Bruin: yeah.

[00:03:05] Antoine van der Lee: How did that go? Like, how did you transition yourself into like becoming a developer?

[00:03:09] Jordi Bruin: So I remember, I think the first year when I was working there, I was an industry analyst, intern. Um, and I wanted to come up with the solution for, uh, picking dates with friends. So if you have, um, a group chat and you want to pick a date for when you're going to go to a festival or something.

And I figured, okay, it should just be a link you click. And then just a poll you, you vote on, you don't have to fill in your name or your email address. Doesn't really matter. And then you go back to WhatsApp again, like the integration there. Um, so I think that was my first, like, Sort of project that I made and I couldn't develop it then.

So I was working with another person at the agency who was doing it. Um, and I think I just got really interested in like solving problems with like just, okay, what's the simplest solution? Just click on a link and then just tap on the dates and then you go back again. Um, But back then I couldn't develop it myself, so someone else made it.

I was always interested in it, because I was always the designer that would say, Oh, but why doesn't it take two hours? I found the solution here on Stack Overflow to the developer. So I was the annoying designer there. Even though I wasn't really a designer, I guess I was just, I was doing a lot of things.

Did you do that with me

[00:04:15] Antoine van der Lee: as well?

[00:04:16] Jordi Bruin: You were similar to me, I think, where you were like, Just quickly trying to find solutions and not necessarily taking the best path for maybe the most architecturally sound part because you just wanted to make stuff as well. Um, and then I think I was 2016 or 17 when Swift came out.

I, Basically took that, that existing project for an app called Lulu, which became like this date picker thing. Um, I opened two Xcode screens, one was objective C and the other one was new project in Swift. And I basically just started file by file, just line by line, trying to recreate it in Swift, just to understand it by doing, because I was, I knew what I was working towards.

Like, I wanted to make something that worked like this and it looked like this. So I think that was a really, That was the transition point where I really started to actually do development and start like learning how these things work and how I can manipulate stuff. Um, but I was always interested in it.

So I was trying to use tools like Quartz Composer, which was sort of a visual prototyping thing before that. So really trying to make more interactive things, but Yeah, it wasn't until then that I really started to, um, I remember when the Apple Watch was announced, we were watching it at the office, and I remember telling Tim, who was a developer friend of ours, Ah, before this comes out, you really need to teach me how to develop for this, because I thought it was so cool.

And so that was 2015, I think, and so it was after 2015.

[00:05:35] Antoine van der Lee: Yeah, it's pretty long ago, isn't it? But I think what makes it interesting for you, like, If you're able to teach yourself development, you already have such a baggage of knowledge about concepting or designing and stuff. You create a really powerful package, isn't it?

Like, like, do you see that as a huge benefit for yourself now?

[00:05:55] Jordi Bruin: Yeah, but I think it's also because the last 10, 15 years, I think mostly last 10 years, it's become so much easier to make complicated things because there's really good APIs now that take care of a lot of stuff. Whereas in the past, if you wanted to make a simple, utility app or something, you would have needed to know everything, make everything from scratch.

And now it's very easy for me, especially a few years ago when I was really trying to do more of my own projects as an indie developer, where I would just look at an API and I see, okay, what does this API do? Oh, hey, now I can make this, I can make a nice package around this, or I can make a nice combination of this API with this API without me knowing anything about motion sensors in an air pod.

Or without me knowing anything about animation, because with SwiftUI animations became easier with these core motion APIs, it became easier to get the data from, from an AirPod, for example. So just being able to utilize those APIs made it possible for me without all this technical backgrounds to still make something, because it's, it's more like, I wouldn't call it plug and play, like you're kind of gluing stuff together, um, but then doing it in a way that it really adds value by bringing those two together and not just a technical demo of it.

[00:07:01] Antoine van der Lee: Yeah. From, from concept or. ID to something really tangible is the, it's way short and yeah, yeah, yeah, yeah, exactly. So the validation path is much quicker too.

[00:07:11] Jordi Bruin: Yeah. And it takes less investment. Like, I guess we'll get to that later, but what I try to do with a lot of my things is just, okay, what's the simplest thing I can do to fix this.

And that's usually just for me. Like it's very ugly, but it, it solves the problem. And then it's very easy to see, okay, how should this work? What can I do to improve it? Or maybe already like, all right, it already works now. And then you can just live with it for a few weeks without having to put in a lot of time and investment and then feel like, oh, now I have to keep going.

Cause I spent so much time on it already. Um, so I think a lot of trial and error, especially at the start. I think that's also why I was making a lot of different apps the last few years. You can just try stuff and some stuff becomes useful and some stuff you just end up using maybe later, a year later in another project.

[00:07:51] Antoine van der Lee: Yeah. The way of working, how you work and how I work are quite different. Uh, we'll get back to that a little later. Um, so you transitioned to going indie in 2009. So

[00:08:03] Jordi Bruin: I, I left the agency in 2019, then did some freelancing, then COVID came and some projects I was working on got put on pause. So then I started doing more of my own stuff.

I had made this app called Susie, which was sort of a, an allergy scanner. So you would scan labels and would highlight words that you cannot have. Yeah. Made it for a girlfriend at the time and then decide, okay, COVID came, all right, let me just work on this and release it for more people. So that got really nice response, but.

Yeah, it was not paying the bills yet. Uh, so I kept doing some freelance work for clients until I think March 2021. And then I decided, okay, I'm just going to stop my clients and just focus on my own stuff, maybe take a hit in, in income, but work on something that's more fun. So, so you

[00:08:49] Antoine van der Lee: took quite a risk there.

[00:08:52] Jordi Bruin: I had saved some money, but it was not, it was not a large amount. I think I probably saved maybe six months of salary or something. And I think also when I left the agency to do. my own stuff. There was also sort of a risk there where I just noticed that how Over time I was doing more like presentations for clients, more looking at the bigger projects and not really building as much.

And I was, I really missed doing that stuff cause that's what gave me energy I noticed. So I did not have like this big plan of like, okay, now I'm going to go freelance and now I'm going to go do more programming or something. Cause when I went to go freelance, I still wasn't like a real developer or something.

But my first freelance project was React Native app. Um, so I had to learn React Native in a few months. And it was also sort of like, all right, let's just see, I want to do something else. I can always try to find another job again. Um, even though I don't think I would have wanted to go to a different, like a regular job in, in that, in that area.

Um, but I just noticed how, especially with client work towards the end, it was like very stressful. It was like, like weird timing where like a lot of different times working, um, stress being put on from deadlines from the client. And then you end up putting a lot of effort into someone else's vision just because yeah, they're the one paying your bills and they're, they're the one that's, uh, yeah, that will pay your bills again next month or you need to convince them to keep paying the bills or like to keep, keep you on.

And I just realized like, I would love to work more on my own stuff because I could see some, there was some growth already happening there. It was working a little bit. Yeah. Um, So I could see the potential, I guess. Um,

[00:10:33] Antoine van der Lee: you wanted to fulfill your own like creativity and yeah. And

[00:10:38] Jordi Bruin: especially towards the end of like early, early 2021, there was definitely also some stress stuff that was coming from, from the client work.

So I figured, okay, yeah, that's not really, That's not where I want to be. Yeah. Um, and it was, I think at that point it was maybe bringing in a thousand per month or something, perhaps. So it was, it was income. It was covering the rent, I guess. Um, although yeah, yeah, probably.

[00:10:59] Antoine van der Lee: Because draw the picture, right?

You're, you're alone renting in Amsterdam. Yeah. So the only bill you really had was like your deposit. Yeah. Like

[00:11:06] Jordi Bruin: 750 rent per month or something. Um, And then I had saved some money and in theory I could still do some, maybe some side jobs for clients on the side for one or two days if I would have wanted to.

Um, but yeah, I was not spending a lot of money as well. So the only expenses I was doing was a new Mac book every now and then a new iPhone, um, go for dinner and stuff, that kind of stuff. But, um, yeah, it definitely helps that it was not, uh, a five, six, 7, 000 Euro bill every month.

[00:11:38] Antoine van der Lee: Yeah. And did you see like a short term potential?

Like, okay, I'll go full indie now. I'm pretty sure like the thousand that I earn now a month will like double in half a year because I cannot spend full time on it. Or

[00:11:50] Jordi Bruin: I don't think I made that decision in that conscious way. Okay. Um, I think it was more like, ah, it will happen. Right. You're

[00:12:00] Antoine van der Lee: trusting yourself.

[00:12:01] Jordi Bruin: Well, I'm not really sure. Trust more in naivety. I think it's like, okay, well it will probably work or at least I'm just going to try it. So I think because I had saved, I think I'm trying to think how much I'd save them, maybe like 20 or something. Okay. So that would have in theory been able to cover, cover a lot for years.

It all depends on how much you spend. Right. Yeah. Um, And I think it was also that, um, it, it was just, it, it didn't feel like a huge risk and I could always, yeah, try to do something else again if it, if it really didn't work. So there was never that point of like, all right, it needs to work now. And if it's not going to work now, I'm in trouble.

And if it would have gotten to that point, I would have probably had to make decisions about that. But way before I got to that point, it started doing better. And, and yeah.

[00:12:54] Antoine van der Lee: Yeah. Yeah. Because what, what really kicked off for you after that period, you decided to go independent, you start working on your, your own existing projects, did you start something new right away?

Like how did that took off?

[00:13:06] Jordi Bruin: So In 2021, I started working more full time on, on just some different apps I was making. I think it was mostly on Susie, the allergy thing then, um, some small projects here and there. I'm not really sure I remember, but what I really remember is at the end of 2021, the, um, the new MacBook came out, uh, the first one with the notch.

I remember getting it. And then. I think it was even before it came out. Like people didn't like that, that notch. Yeah. The black bar in the middle on the top. Yeah. So, um, so I thought, ah, how hard can it be? Let me just try to make a simple app that just hides the notch. So it basically puts a black wallpaper behind the menu bar.

And I remember it was actually, I kind of like, well, not, not burned out cause it was just one day, but I worked until like 4am that night when it came out, um, trying to get this to work and then released it for free. And I was sick for three days after I think it was this weird stress thing where I was like, Oh, I need, I need to be the first one to release it didn't make any sense because it was not like there was, I was in competition with anyone.

It's just like, but I felt like, Oh, I want to, I found this solution for this problem. I know everyone's talking about it. Yeah. I want to be the one that made that thing that people then talk about. And I remember it was like 3am or something. And for some reason I had a code signing issue. Like I had to notarize it.

And then I was talking to Josh Holtz, uh, who I didn't really know back then, but over iMessage and he was helping me like debug what was going on. It was one of the weirdest errors I've ever gotten. And I think it was also the first time I was doing notarization stuff for macOS. I'd not hadn't really done macOS apps a lot.

Yeah, and that that kind of got picked up by some press. And, um, I mean, it was a free app and people could choose to pay. So I don't think it made that much money then or now. Um, but it was this showcase of like, Hey, I can just make small utility apps for the Mac that are fun to make. And there's, you have a lot of flexibility on the Mac.

You can, you can. tweak more, you can do more stuff, stuff that's not, um, within the guidelines of what an iOS app, for example, looks like. So then I kind of got used to this idea of like, Oh, I can make apps for the Mac. So I think then in the two months after that, I made like three, four, five different little utility apps for the Mac.

I found out how to make a menu bar app. I found out how to call like terminal commands and stuff. And then all of a sudden there were all these new things I could Yeah. very quickly, uh, in, uh, a day, two days or something. Yeah. Um, and they would kind of build on top of the thing I made before. Yeah. Right.

Right. So copy paste. Yeah, you could definitely copy paste a lot. And, but also just, um, you get into this flow of like, Oh, if I can make this with the menu bar, then I can also make this. Oh, but if I can make this, Oh, then I can make this, Oh, this API exists. Oh, maybe I can make this. So then. I sort of learned all these, these little tools for macOS to make like fun, useful utilities.

And what I ended up doing was just, yeah, releasing them all for free on Gumroad, which is like this, this digital distribution thing. So you would notarize the app. You wouldn't have app review very quick to do updates, uh, put them for free and people could choose to donate. And, and some people would pay for stuff, which was nice.

It was small amounts, but it was like, Oh, yeah, Now people are actually using the stuff I'm making and you get this feedback, um, it inspires people. You are able to share more knowledge because not a lot of people at the time were doing macOS stuff.

[00:16:33] Antoine van der Lee: Yeah.

[00:16:33] Jordi Bruin: Especially with SwiftUI. So

[00:16:35] Antoine van der Lee: quite surprising, actually.

Yeah.

[00:16:36] Jordi Bruin: Yeah.

[00:16:37] Antoine van der Lee: Yeah.

[00:16:38] Jordi Bruin: So, and I think that's, that's when it really started like rolling. This episode is

[00:16:42] Antoine van der Lee: sponsored by SuperWall, the leading platform for in app paywalls. SuperWall makes it easy to create, test and optimize paywalls. All without app updates or writing a single line of code. With real time insights, A B testing, you can quickly discover what works best and boost your app's revenue.

SuperWall offers hundreds of paywall templates and supports Kotlin, Flutter, React Native and Swift. Trusted by top apps, SuperWall lets you focus on building features while they handle paywall optimization. Ready to unlock your app's potential? Get started today at superwall. com.

I found it quite, quite interesting. You're saying on one hand, like I want it to be the first one, which already tells you that there's a reason for you to do that. And then eventually it gets picked up by the press as well. Do you think that that's really like a connection there?

[00:17:40] Jordi Bruin: Yeah. Yeah. So, so like one of the things I, was doing then especially was just looking at new APIs and stuff that's only possible in that moment.

For example, because there's a new MacBook or because there's whatever. Yeah. Um, because if you're then making something, even if it's something small, I think like people are just trying to see, okay, what can this new technology do? What can this new software do? Press likes writing about stuff that's new.

That's, that's interesting. That's, so it's much harder. For example, if you take an API from, 20 years ago, like the map kit or something, you can of course do really cool stuff with map kit. You can build stuff on top of it. You can make super interactive stuff. Yeah. But people have seen maps a thousand times.

It's not new anymore. No. So if there would now of a sudden be, um, okay, this is a bad example. If there would be space kit or something where apple maps out all the stars in the sky or something, then all of a sudden you start from scratch again and you can, you can make new stuff that you just point at stars and you can do stuff.

Yeah. Um, and then people. You can make a very simple space app.

[00:18:38] Antoine van der Lee: People want to read about it. So yeah, Journalists want to write about it. Exactly. You kind of like. Target that audience. Yeah.

[00:18:44] Jordi Bruin: And it's not like I'm then thinking, Oh, okay, this app is going to be, Oh, this is going to get a lot of press or something.

That's not the incentive for making an app.

[00:18:51] Antoine van der Lee: No, but it sounds like that in a way. Well, there is just

[00:18:55] Jordi Bruin: like, I think it's more like I'm interested in the new technology. I'm interested to see what's possible now and how a new API works and what it makes possible. And then as a side result, it, it's by definition is also interesting for people to read about.

So it's easier to get people to download it, people to try it out.

[00:19:11] Antoine van der Lee: But you, you wouldn't. I've built it. If you knew it was not interesting for anyone.

[00:19:17] Jordi Bruin: Um, Well, I would do it. Well, if I think yeah, if I think the like, it's not that I just look at new APIs and only do stuff with new APIs. No, it's just oftentimes new APIs spark new ideas.

And then it's just a really easy form for me to get inspiration because I can look, I can look at the release notes between I was 18 C. Oh, these new APIs are added. What can I do with them? Um, what does it make easier than before?

[00:19:43] Antoine van der Lee: It's, it's a way to, in a simple way, simple manner, find something that's probably filling a gap.

Yeah. Yeah. Because that API

[00:19:51] Jordi Bruin: was made for a reason as well. Right. And so then. And

[00:19:54] Antoine van der Lee: not enough.

[00:19:54] Jordi Bruin: Nobody's using it yet because it's new. Exactly. And maybe you could do it before, but it would take. 50, 000 lines of code and now it's map item, view, whatever. Right. So that also makes it easier for me as a, not necessarily like a technical, technical person.

I mean, I, I know my way around tech, like tech stuff, but I wouldn't necessarily be the right person to implement some clustering API in a map kit, even a map view or something. But if there's a toggle that says cluster, Yeah. Yeah. I can do that. Yeah. And then I can choose. Okay. Now, now I can make an app where it's clustered.

Oh, okay. Yeah. The experience would be nicer. Oh, then I can do this and this and this. And

[00:20:34] Antoine van der Lee: it's pretty, pretty powerful, right? Like you really know your own skills and you really tried to stay close to what you, what you know, what you can and make the most out of that by, by doing that.

[00:20:43] Jordi Bruin: But that, that took some time though, because especially at the start when I was just learning how to program, um, I was trying to do all these super ambitious things.

And um, I think the first project that I worked on very long that I never released was Session. I think maybe you still remember that. So I really wanted to make this thing where you could listen to music together.

[00:21:01] Antoine van der Lee: Now I remember you spent a lot of time on that.

[00:21:03] Jordi Bruin: I think probably like a year or something, maybe even more.

And it

[00:21:06] Antoine van der Lee: took really long for you to ship it.

[00:21:07] Jordi Bruin: I'd never shipped it. And it was like it was working at some point, but I kept on adding new stuff and never really, because it was really hard to think, okay, when is it good enough? When is it, when is it right? So it was an app to listen to music together. So we could be someone different place.

We would both have Apple music. We would listen to the same song and it would basically use Firebase to, uh, Say, okay, Antoine is now at timestamp 24. Yeah, yeah, yeah. And then it would sit, send that to me. And then I would also be listening at timestamp 24

[00:21:35] Antoine van der Lee: and this, this is years ago. Before share play.

Before, yeah. It was like 20 18, 20 17 or something like that. Yeah,

[00:21:40] Jordi Bruin: yeah, yeah. And um, first of all, that involves like front end that involves a backend. So I had to learn Firebase. Yeah. Back then was like the real time, time database thing, which was super useful and I learned a lot there. But. Then I ended up spending so much time on like what I think I changed the UI five times.

Um, I was not really using it with people. I was just like, it was all these unfinished things. Like there was 10 things I had to finish and they were all at 70%. So it kind of worked in the demo and it was nice to see some things and then spend another week doing some animations instead of like finishing it and trying to think of a business model and all that stuff.

Yeah. Um, And so there I was, I was doing way too, like I was learning push notifications. I was using, I was making an iMessage app for, for the app. I was doing like these animations and, uh, chat. I built a whole chat thing and stuff in there. And then.

[00:22:33] Antoine van der Lee: All things you don't really need before going shipping.

[00:22:35] Jordi Bruin: No, but that was like, I was also trying to figure out, okay, what do I need to be making? And, and I had these ideas of, oh, the app needs to do all these things. Yeah. Instead of just saying, okay, Let's just release something but there, the big thing is there, it's an app that would need multiple people to have it.

Yeah. So that's is very complicated thing where it's out of your control if people actually use it. Yeah. And so I think then I also learned, okay, I should be making apps that even if I'm not. I'm the only one using it, or if there's one person downloading it, that it's useful for them. Right. Um, because then it's very clear.

Okay. I make this thing that solves this problem. Yeah. So it's, it's more of a utilitarian approach rather than this, this ambitious creative endeavor or something. Yeah. But it's, it's much easier for me. Like, okay, is this app solving this problem? Yeah. If the answer is yes, then it's useful and it can be ugly.

It's fine. It solves a problem. It can have room for improvement. It's fine. It's already solving something because that's the first thing I tried to check. Um, so I think that kind of helped. I needed that year, year and a half of doing too much to figure out that that wasn't doesn't work for me and then that I should be doing less.

[00:23:36] Antoine van der Lee: Right. It is interesting though, because you also created Navi, which is a Apple design or finalist application, which was not useful if you were using it on your own, right? Like you needed somebody else there too. So in a way,

[00:23:52] Jordi Bruin: yeah. Okay. But so, so there was a, a period, so there was a period where I was doing a lot Mm-Hmm.

then learned to do list less and then maybe start doing more again. Yeah. I think Navi in a way is also not that complicated, but we can get to the details in a bit. But there was a, a hackathon in 2018, I think I just moved to Amsterdam. Mm-Hmm. . And it was a 24 hour hackathon. Yeah. So the idea is within 24 hours you have to make something.

Mm-Hmm. . And then I made a. Um, my Apple watch had just broken, so I, I was using that for, um, for running, but it broke. So I couldn't track my runs anymore. Just like how long my runs were. So I thought, Oh, I want a map gate app where I can just draw on the map, the route I took and it tells me how many kilometers.

Draw your run. Draw run. Yeah. Uh, yeah. Literally draw your run, which is the name. Draw run. And so. Um, uh, I think I spent the night before the hackathon started. I spent like 30 minutes. Okay. Can I, can I do this? Is it like possible? Very hackily got it to work. And then spent that one day, it was a Saturday. I went into the office in Amsterdam.

Um, worked on it, released it the same night, uh, and it was like an app to draw and it looked really nice. It had some nice animation. It did like one small thing, which was like the drawing the dots and then some animation to show. And that was super useful. It won one of the prices for the hackathon, like 250 or something.

Um, to put it out for free, I think, or a little bit, a little bit of money, but yeah. Um, and it got used and it was like, Oh, Hey, I solved my own problem. It's useful, useful for other people. All right, let me just put it out there. So I think that was sort of the first approach where I really did this small thing.

Yeah. And then with Navi later, so Navi basically used Shareplay to, um, that also, yeah, that also came from a hackathon actually. So there was another hackathon a year later where it was another single day one, I think. And then I found this new API, which would let you. Um, use text to speech in a phone call on your phone.

There was like this API mixed with telephony uplink where you can send text to speech into a phone call. So I can call you with my iPhone and then my phone can talk for me. So I figured, Oh, maybe I can make an app for people who have trouble speaking that they can just type and then have a conversation.

I was using Swift UI at the time already. So it was simple list views and some buttons that would call APIs. Um, And then I got some requests from people like, Oh, it would be nice if I can get transcriptions for what the other person is saying. And that wasn't technically possible due to privacy. And then Apple announced Shareplay, which.

Then I thought, Oh, maybe I can record the transcription on the user side and then over SharePlay, send it to the other side and kind of trick the system into having subtitles. And while that requires, of course, like more people to use it. The idea is still like, all right, let me just come up with a solution, like, uh, get the transcription, send it over to SharePlay and then display it on the other side.

Um, Yeah. So I don't think I would necessarily call it like this super complex thing that was super reliant on people. And it was also not like, Oh, now I'm going to make this app that I'm going to work, spend the next five years on. It's like, Oh, it would be cool to solve this problem and, and learn about SharePlay in the process.

So yeah, it was not like this big endeavor of, okay, I'm going to make, make, make, make This super complicated multi user app. It was more like, Oh, I don't have to take care of the back end. Apple does that with SharePlay. I don't have to take care of the transcription. Apple does that with the speech framework.

Uh, I just have to look into the picture in picture API and make that look nice and, and make it easily accessible for people. So. I didn't have to do all the complicated stuff, but I could still make something that was more complex in, in use case.

[00:27:31] Antoine van der Lee: Yeah. Yeah. Yeah. Yeah. And this, this, this, this was quite groundbreaking app, isn't it?

So fast forward now, Apple natively supports it themselves, right? Like it got kind of replaced. And, but it was also, um, this, this is quite an interesting story as well, right? Like, because you, you got nominated for the Apple design award. Um, but in the same week, they kind of like announced that the app was broken.

[00:27:56] Jordi Bruin: So, um, In April 2022, I found out I was a nominee for the Apple design award for that year. Then there was the ceremony during WWDC of that year, but that was the same day when iOS 16, I think, or 17, 16 was announced. I was 16 broke the functionality of the app. So it was using the microphone in the background and that API was not returning the microphone anymore, which it wasn't supposed to do in the first place, I think, because I found like a way to still get it.

So maybe, yeah, of course, like they don't do that with bad intent because they just have reasons for privacy and stuff. Um, so yeah, it was a bit strange to, uh, to be on that stage, but then also know that my app is going to stop working in two months.

[00:28:41] Antoine van der Lee: It's, yeah, it's, it's pretty wild as well, because you know, like, it's such a nice way to get your app in front of so many people, they could potentially start using it.

But, you know, like it kind of.

[00:28:51] Jordi Bruin: Yeah. So what I then did is I removed some in app subscriptions for like, for, for years, so people can only subscribe for a month after that, because I didn't want them to subscribe and then it would stop working. So there was some small stuff there, but, but like I said, like Navi at that time was, it was mostly just a, a challenging, fun project to work on.

Um, it was not like bringing in like. The most money or something was not that I was relying on this. So I think that also helps like having different things to focus on makes it easier. Like if one thing for some reason goes away or if you lose interest in something or it gets replaced by something from Apple, it's fine.

Yeah.

[00:29:29] Antoine van der Lee: Yeah. And I think this is a nice segue because we spoke about many of your apps already, but I think we barely touched 50 percent of all your apps. Uh, and that's, that's something I want to talk about as well, because We are so different. Um, in, in my course, actually, I recommend my students to focus on a single project.

Maybe use like a new idea. Yeah, well, maybe, maybe use a, use a new project for a new feature to build to still have that feeling of starting something new while you still contribute to that main project. Basically creating a focus and, and, and not giving up too quickly to make the most out of that.

project as long as you see the potential, but if I look at you and I think you did several talks about this at conferences as well, your methodology, um, you actually have a course about it, if I recall correctly. Yeah.

[00:30:15] Jordi Bruin: I haven't done too much on it, but yeah. Okay. Um, but, but

[00:30:20] Antoine van der Lee: yeah, you, you call it the two, two, two methodology, isn't it?

[00:30:24] Jordi Bruin: Yeah, it just, it wasn't like this big thought out plan. Um, at some point I just realized, ah, there's a system to my thing. Yeah. Two, two, two, basically two hours, two days, two weeks. Um, and I don't know, people kind of seem to resonate with it. So I figured, okay, maybe I can make that more of a term and explain it a bit more in detail.

Yeah. Um, because what I was realizing is that what I would often do is, I have an idea and I would very quickly just try to make something work. So it was find a new API, try to see if I can this API to do this one thing I'm trying to get it to do, or this combination of APIs to do a certain thing. So in practice, that would mean me just making a new project, copy and code from eight different places.

Maybe taking some code from a sample repository from get hub.

[00:31:12] Antoine van der Lee: Not a difference between you and I.

[00:31:14] Jordi Bruin: Yeah, just one big file like a five line content view dot swift maybe

[00:31:20] Antoine van der Lee: comments committed code.

[00:31:23] Jordi Bruin: Like

comment out some code instead of like having a different brand. So now just comment out the different brands Very easily enable again later. Maybe you need to go back to that because you're at this point. Just trying to learn what this API does. So. Like try to skip all the niceness because you're just trying to see if it works.

And I realized that was usually like a few hours that I would spend on it. So I ended up going on two hours. So basically make, take two hours to see if you can make this thing work. Kind of a validation. Well, not even valid. Just like, Because validation always seems to prove that you have to prove something.

This is more like getting it to work.

[00:32:00] Antoine van der Lee: Yeah, validation if you can build it. Um, yeah, yeah. Validation, yeah. Not in the sense of like validating where the users want it. Yeah, yeah. Just

[00:32:08] Jordi Bruin: validating if it's possible. If it's possible. That's like the two hours or if this thing what you're trying to make, is it possible?

Yeah. It's super ugly. It's hard coded. You would have like hard coded strings, hard coded API values maybe. But it doesn't matter because it's, it's just to show on your phone or your Mac. It does this thing. I'm trying to, you don't

[00:32:26] Antoine van der Lee: write any tests at this point.

[00:32:28] Jordi Bruin: I don't write any tests at any point. Um, then you have this thing that works.

And then what I would do is spend two days to make it more flexible so that I could share it with friends so that you could use it with your setup or you could change your name or it would work on your Mac and not just hard coded on mine. Um, it's still ugly. It's still. Unpolished because I'm sharing it with people that can see through those bugginess.

Um, I'm sharing with people that I don't want to give them too much of like, Oh, this is how it should work. I want them to also be able to give feedback on like, Oh, I don't understand why this flow would work like this, or, Oh, it would be nice if it goes like this. Because if you, especially at the start, if you polish it too much and put it too much in, in a frame, then people also find it harder to give feedback on the overall idea because you've already, Like molded the idea in a way so that that version is super rough still, but it, it would work for someone else, not just for me.

So I have like two hours is possible two days. Is it usable? Yeah. So is it also useful for other people? Um, and then I would spend two weeks to release it. And basically say, okay, what are the features and the functionality of those, the two day version? Don't add anything more. Don't try to add more complicated features on top.

Now just take that core thing. Cause I already showed that it was useful for me and my friends could also use it, uh, and then just release it. So that gives this very nice. Two week window sort of to build out something and really get it out there without giving you space to, to do too much or without giving you room to get distracted by adding more features because you have to sort of hard deadline.

And of course it can be two, two weeks and two days. It doesn't really matter, but it's just to give you yourself some sort of reason not to add more stuff and just to ship it. Because usually once you ship that two week version, and then it's out there, then it's very easy to then add a feature again and add another feature because then you have a foundation already.

You spend another day and you have another feature and it's, it's, it's better than it was before. You need to

[00:34:33] Antoine van der Lee: really prioritize, right? Like,

[00:34:36] Jordi Bruin: well, not even because you already prioritize in that first two hours by like, all right, I'm just trying to get this thing to work. Okay. Uh, And everything else is like, there's no priority beyond that because that's the thing.

Right. So you really look at, okay, what's the thing I'm solving? Okay, that's solved. I'm not only going to make that look, work nicer. So make the experience to use that thing more easy. Right. But all the other things you can do afterwards, but after it's already been launched. People use it. So worst case, you already had to make some money from it because maybe people find it valuable.

Yeah, best case. Well, that's not the worst case. Yeah, I mean, worst case, you just get people to use it and you get, you get feedback and you get bugs and you don't have to find those bugs yourself or you find bugs in situations that you never thought of before. So There's a bunch of advantages to the system, I think for me, so that that's one.

The other big one that worked for me a lot is that I had a lot of space to try out new stuff. I would take maybe two hours on something or maybe two days on something. And then after those two days, I was like, okay, it's not useful. My friends can't use it or yeah, it's not that valuable. But I still wrote that code and I still have that project.

And what would happen oftentimes is I made something and then four months later, when I'm making something else, I could then just take that two days of work from the other project, copy it. And then in two minutes, I would have all that functionality in my new thing. So it would make it easier to make more out of those first two hours in future projects.

[00:36:03] Antoine van der Lee: Right. So you, your two hours now are much more effective than the two hours a few years back. You can leverage your knowledge and all the code that you wrote before, right?

[00:36:12] Jordi Bruin: Yeah. So. For one project, I, I found out I could call terminal commands from, from the Mac. Um, so Alpha Center was this long list of terminal commands that Apple has for doing, for example, a speed test.

So I found out how to call that. And then from that point on, I had all the code for running any terminal commands. So if I wanted to make a small app that would wrap a terminal command, I could just take the code. Um, change the line that says what, what command to run, what shell command to run, And it will work.

So then it's like two minutes to make a new app. So, um, yeah, especially at the start. I, I was really iterating on, okay, I built this year, oh, now I can make this thing very easily. So sort of making my own API sort of making my own, um, technologies to expand upon. Yeah. So a lot of the projects I made either started from something I didn't finish for a different project.

And then it also gives you very quickly some, some experience with a new framework. Yeah. Like it makes it much easier to talk about the limitations of MapKit if you worked with it for two days, you kind of have an idea of like how much it would take to make something else in the future because you have some experience with it without having to commit weeks to making like a full blown out map, map app with all the functionality that's not related to the map.

[00:37:30] Antoine van der Lee: Yeah. And this is quite contrary to the, to the story you told before about session, right? Like where, where he spent so much time and. I think the feedback loop that you get right away, like, like even after the two hours, the feedback loop for yourself, but eventually when we're talking about two weeks, and I mean, in your case, two weeks full time potentially, right?

[00:37:51] Jordi Bruin: Yeah, but the idea is not, well, the idea of the two weeks is not that you spent like two full time weeks on it. It's more the time period of two weeks, right? Because if. If you spend like two months on that little bit of time, then you kind of lose the momentum of like, I'm building something new. I'm getting it out there.

I'm getting feedback. Yeah. So it's more that the time window needs to be two hours as in like one afternoon, one evening, two days of like two more days where you spend time on it, tweak it a little bit. Yeah. It can also be a few hours spread across those, but it's more like you want to keep this momentum going where you started something on Monday and that's the Sunday afterwards when you release it, just because then It's top of mind, and you're still in that code, in that API, in that particular problem you're trying to solve.

So not to stretch that out too long, because then you lose motivation, or I would lose motivation, or you get stuck on new ideas, or you forget what you're trying to solve.

[00:38:46] Antoine van der Lee: It's a two edged sword, in a way, right? Like, you release something And if it works out, you get positive feedback, you start earning money, you start getting feedback, you start getting new ideas, inspiration.

Um, I think I even remember, I'm not sure, was it the rating, the reviews app where you released like seven new updates within a week? Um, I think that was for bakery. Was it bakery? Yeah. Because that really started to, you know, roll and give you feedback along the way, right?

[00:39:15] Jordi Bruin: Yeah. Yeah. Yeah. So bakery was an, is an app to quickly make, um, placeholder app icons.

So on your Xcode, if you don't have an app icon, yeah, you would just have the white little thing.

[00:39:27] Antoine van der Lee: The ugly white thing. Yeah.

[00:39:28] Jordi Bruin: So this was like, Oh, in the morning at a coffee place at 11, I was like, okay, can I just make a macOS app where I choose a background color and an emoji, and then I can drag that onto Xcode and then it creates all the app icons.

So that was two hours of me trying to see, okay. Well, I can make an image with a background color and an icon, and then I need to convert that image into all the different named files in different sizes. Also not complicated. It's like taking an NS image and just scaling it into different things. So that was the problem I was trying to solve.

And then what made it nice was that you could just drag it and directly, you know, you can Drop it onto Xcode. So that was the problem to solve. And in the morning I put a video on Twitter, like, Hey, is anyone, would it just be useful got a lot of likes. And that same night it was launched on the app store.

Then the next morning I woke up, some people tried to use it. And then all the images were twice the size. So they were. Two X of the two X. Uh, so it didn't work. I don't know how I didn't find that at the start. It was like this scale parameter that you had to do. Um, so it didn't update for that, but then over time also got like, Oh, it would be nice if you can use emoji or, uh, uh, it doesn't work for this case.

Oh, can you also add macOS support? So there were a lot of these small things that I wanted to add. I could have probably also added them before releasing just by. By spreading it to people and then getting feedback. But by making sort of the users part of that, that process, they are more likely to be open to bugs because they know it's still in progress.

Yep. Um, they might even give you solutions like, Oh, check out this code. Hey, you should use this. So, so it kind of takes it away from like having to do everything yourself to. Hey, I'm, I'm solving, trying to solve a problem for you. Yeah. Uh, here's my first attempt. Yeah. Is there anything wrong? Let me know.

And I can solve it. And I think having that openness, it makes it nice, especially in our community, because people are very open to helping each other.

[00:41:23] Antoine van der Lee: Yeah. Yeah. This is a developer tool, right? So that, that is a little bit, that definitely helps.

[00:41:27] Jordi Bruin: Um, but also just like having, um, openly sharing what you're making and then asking for feedback and then doing the same for other people, like giving them feedback, like, Oh, I think you should trade, try this API or, Oh, here's a piece of code.

Cause so often, like, I don't care. I would share like 95 percent of all the code I've written, happily share it with anyone because it's like, yeah, it's 200 lines of code. Maybe I spend a few hours on it at some point, but the, the, the benefit of me sharing that with someone. And then in the future, maybe that person also helping me out with something.

It just happened so many times that. A small developer with 50 followers was working on a specific API more than I was. And they gave me a suggestion and then that helped me make something else. And so I, I really believe in that, in that open sharing of, um, of information and knowledge. And I think sharing the feedback, is part of that as well.

So even if someone is not a developer, they can still give good feedback that I can then take. And so then you still learn from each other in that way. So yeah. And I think I did like seven updates that week because it's like, Oh, someone gave a suggestion, let me fix it. New update. I'm not trying to make it like, I'm not trying to make it this, this big update every time.

Cause yeah, the faster you can get something out, the more feedback you can get on the new thing.

[00:42:43] Antoine van der Lee: Yeah. Yeah. Yeah. Make, make sense. Yeah. It's super interesting. And I think you have proven. Many times that this methodology, at least for you, works out great and you prevent yourself from Going deep into a rabbit hole without knowing like, is this really going to turn out?

Which I think for, for, you know, developers out there that don't have an app yet, this would be a great way to get started and build up knowledge and quickly validate before going deep into it. Yeah. Um, What I wonder as well, you also have MacWhisperer, MacWhisperer is, um, well, you can explain what the app does in a bit.

Um, you actually have somebody working on it as well. That's quite an app that went from small to, to, to big. Um, and it also requires you to focus more on a single app for a longer period of time. In theory, the methodology that you just described, you could use for new features as well, right? Like, do you, do you do that as well?

Is it something that you apply to existing apps?

[00:43:44] Jordi Bruin: Yeah. So Mac Whisper is, um, a transcription app on the Mac that, uh, uses OpenAI's Whisper, um, transcription model to, um, to do high quality transcription. That started as a, Oh, let me try to make a transcription app for myself because I wanted to make a course and I didn't want to type.

So it's like, Oh, and at that point, like no one had still made it after four months. I figured, okay, how hard can it be? And I found like, some framework and got it to work in an hour or something just by implementing a framework and then building from there. Um, a lot of people used it and now it's, it's by far the biggest app I've made.

So it turns into a, okay, now this thing is making a lot of money. So then you want to keep working on this because it's, there's always something that can be improved and people are paying for it. So it, the incentives change a bit there or not just a bit, the incentives there. Um, so then it becomes two things like, all right, how do I still Continue working on new stuff.

And how do I fit that in? With this pressure of like, I have this big project to work on. So I think you can kind of compare that to having a normal job and then you want to do something on the side, like, but the normal job takes priority and takes for good reason. Um, but then also within the app itself, I try to still use the two to two, but in a different way, like you're saying, where it would be like, ah, I would love to make this feature.

Let me see what the simplest version of that could look like. So right now, for example, I'm working on live captions. So you can basically transcribe anything that's being said on the Mac. Yeah. So it's like, okay, let me just open a window, run this transcription engine and just show this text there. Yeah.

So that's the two hour version. Um, got that to work last week. It works, but there's already like I'm running into stuff already. Some stuff doesn't work perfectly, but then by iterating on that thing, it makes it a lot easier to, um, then you have something tangible to, to try out this feature with. And I have a group of beta testers in a, in an iMessage group, um, like a pretty core group of users.

So then I can very quickly send them a. a version of the app with that particular thing. Yeah. Hey, it's out there. Please give it a try. Keep it very simple for the first version. Like don't over, don't over, um, over promise what it does. Don't over commit to the features. Just like start with something small and then yeah, it will probably be released.

I don't know, like maybe in a week or two weeks, because we have to do some adjustments to the bigger thing. Um, But then by just putting it out there and just putting a beta label on it, for example, uh, or just by saying like, Hey, it's, it's free for now. And we'll only make it a page feature later when it's more polished.

It takes away all the pressure. Uh, we can get feedback from people who actually use it in different scenarios that we haven't imagined. Um, it's fun for me to make as well. When I'm not, not trying to think of like, how does this fit in the whole app? Yeah. Like for now it's. It's an NS window that's just at the bottom of my main app file.

So that file is like, I don't know, 1500 lines or something. I could have probably made a nice file and everything for it. But at the start, I'm just trying to get it to work. Like just, okay, let me just see if I can open this window, run this transcription engine there and get it to display. How well does it perform?

How fast is it? So you can already learn all these things before you think about how the code should work. And worst case, you have to refactor your code a few times. Every time you refactor it, you get better at it. So it becomes nicer. You can think of like, all right, what's the most efficient way to do your code and to, to get it right from the start.

But yeah, I just see it as part of the process of making something that you will have to refactor it three times.

[00:47:20] Antoine van der Lee: First, make it work, then make it shine.

[00:47:21] Jordi Bruin: Yeah. But also like, you can look at all your code every two years and you can probably refactor everything because everything's easier. So I just see it as like, Oh, I start a new project, learn something new there.

Then when I look at my old project, I see this piece of code. Oh, I now know how to make it nicer. Yeah. Okay, I'll just do that. Like, I don't see that as some sort of wasted time or something. Right. Yeah. Um, because I remember with, with Lulu, with that date picker from way back. Yeah. When I was learning Git, I was rewriting it into Swift 4 or something.

Uh, I spent like a night on it because I was at the project already refactoring it. And basically I made the whole app from scratch because I wanted to make it nicer with SwiftUI. And then, uh, I wanted to commit to Git and I made a mistake and in the end the whole project was gone and I did not have any backup and this was like 12 a.

m. But because I just spent six hours doing it and going through, I was able to recreate the app again in two hours. So I spent till 2 a. m. just basically recreating it again. So. There was sort of a process learning, like, Oh, now I can do it faster. Now I can do it faster. Now I can do it faster. So I don't really see refactoring as like this big problem.

And I don't really care because yeah, worst case you just make it a little bit nicer and especially now with AI, um, it's also very easy just to, to give it your code and to say, uh, split this up into different functions, add, add, add comments there and everything. So I think if you really want, you can. You can very easily put that in as part of your process to, to refactor after and spend 30 minutes to put it in the right file after you get it to work.

[00:48:55] Antoine van der Lee: Yeah, because this is something I wanted to talk about, right? Like, um, I'm not sure how many apps you currently still actively maintain and update, right? You, you, you build a lot of apps, but maybe some of those are just out there and you don't really touch anymore because, you know, like two to two, you're working as a team.

Um, what, what is your strategy on, uh, Keeping those those apps up to date, say, for example, a new OS version comes out, you need to do something there. And we talk a lot about copy pasting, which, which is your process, which helps you, which, you know, brings you in your flow and it works out great. Um, but the downside there is probably that you have a

[00:49:30] Jordi Bruin: duplicate code in a lot of places.

Yeah. And, and

[00:49:32] Antoine van der Lee: you just mentioned refactoring. So the, the, the, you copy paste, but you improve it with your new knowledge and well, say that you are five apps further. Um, That first version, well, you don't want to look at it anymore, right? Like what is your process in keeping the apps that are working out great up to date?

[00:49:52] Jordi Bruin: Yeah. So there's a lot of apps I have, but a lot of those apps do one thing. So they're really focused on one particular use case, which makes it so that they don't break as easily just because there's not that many moving parts. Whenever I make a new app, I always target just the latest OS. So. You kind of give, again, kind of give myself some, some leeway there, and it probably won't break.

Yep. The next release or the second release after, uh, I tried to just build on top of Apple's defaults. UI default APIs. I don't try to do complicated architecture or things that, that can break over time more easily. Yeah. Uh, I don't have a lot of like custom code stuff for the UI. Um, so there's some things there that help me make sure it keeps working.

Then. Because they're small and focused. It's, it's very easy to like, if something breaks, it's probably the one thing that the app does, right? So then it's okay. Dig into that one thing and solve it. So you don't really have to spend a lot of time trying to figure out, okay, what part is this, what, what edge case, but that's for the small apps, right?

And so, and for the apps that are a bit bigger, there are. It happens more often. It doesn't happen that often that I have this big process for it. If I find out it breaks, it's like for example with Vivid, which is this it makes the brightness of your Mac brighter. Um, we found this crash on the Mac Studio and I have a Mac Studio but I don't use Vivid on it because it's indoors.

And we're trying to figure out like what the crash was and it was related to this thing we added where we check the internal battery if you're like on low power modes, but a Mac studio doesn't have that have battery, right? So it crashes in that particular case for that user that has that feature enabled, which I would never have enabled on my Mac studio.

Um, so in that case, you have to dig into it a bit and then find it. But there's not like this big system where it's like, I'm constantly checking on if there's a new release, I'm going to check all my apps if they work. No, if it doesn't work, my users will let me know. Um, also because there's so many different things to work on.

It's fine if I don't look at one thing for a few months, because if no one's complaining, it's probably, it's probably fine. If it works, it works. Yeah. And there might be like small quality improvements I could do, or there might be some regressions over time. Yeah. So that's sort of a, that's sort of a compromise I do.

But again, because most of them are free or very cheap, I don't feel like there's this big pressure of like, Oh, it needs to keep working perfectly. And if someone reports something, I'm happy to, to solve it if, if I can find the time for it, of course, uh, or if I can't find the time and they did pay for it, I'll just refund them saying like, Hey, sorry, I don't have time for this right now.

So I think I try to do a lot of things to take away stress for myself and to take away pressure because I noticed those things were like, when you do something just because you feel like you have to, it takes away a lot of the energy and joy of, of making things. Yeah. Um, so I'd rather give back someone their 10 that they paid six months ago so that I don't have this guilty feeling of, oh, yeah, this app doesn't work anymore.

Um, yeah, so there's just some things I put there to make sure I don't worry about that stuff too much. Um,

[00:53:13] Antoine van der Lee: makes sense. And I think what is especially smart, right, like Apple has kind of like the responsibility to keep things working with updates in a way, um, sometimes they break of course, but as long as you stay close to their.

their APIs to the native APIs in a way, right? Like you already make a pretty great step forward in maintenance. Yeah.

[00:53:35] Jordi Bruin: And of course, like sometimes I try to do stuff with private APIs or, or non traditional ways. So there's more risk there. Of course. Um, but even there, if you just try to do one little thing with that API, it's probably going to keep working in that way.

Right.

[00:53:51] Antoine van der Lee: Makes sense. Um, we have a lot to discuss in there. That's super, super fun, but I do want to shift gears a little bit and also go back a little bit as well. We, um, so remember the Notch app that you spoke about? Um, you also told us that it got picked up by journalists and you wanted to build it quickly.

Um, and it has something to do with audience, right? Like, but I think back in the days. You weren't as known or as visible as you are today, at least in the Swift and Apple community. Um, so, but, but you still were able to get picked up by, by journalists. And if we fast forward to today, all those different apps that you distributed to go via Gumroad, uh, result in your personal audience, which you can basically just use.

Um, you, you throw a new app against it. And if 1%. Kind of like installs that app. You already build up a nice install base in a way, right? Like, um, so in, in the beginning, what do you think was, was key in getting picked up by, by the journalists? And, um, and then later, like how does your audience that you build up right now helps you today?

[00:54:58] Jordi Bruin: Yeah. So back when I was just starting out, I did not have a system for getting picked up. Um, It was a lot of posting on Reddit, posting on Twitter, uh, but not in a structured way. I found out with Susie with the allergy app that I would find a community, for example, people with peanut allergies, big group of people, very dedicated community.

Hey, I made an app that helps, hopefully helps you with your peanut allergies. It detects any products you cannot have. So. I think the lesson there was like, try to find where the people are that use your app, that use your, have your problem, um, and present it to them and then ask for that feedback. So that, that really helped a lot at the start with Susie.

I remember like one post in the vegan subreddit, uh, led to 5, 000 upvotes or something. And, uh, I don't know, a thousand new downloads. Yeah. So there was a system there that I found that worked, but It also, it's a system that quite requires quite some time and some effort. Um, especially cause I wanted to then engage with everyone with all the comments, because that, that, that's where you get the, um, the goodwill.

And that's where you get the people that actually want to help you make that better. So you need to put that effort into it, but that can take time. Um, then I had a period where I was making a lot of press kits. So, um, I used this thing called impress kit, impresskit. net, where you can very quickly make. a press kit with photos and with like an overview of the information about your app.

Yeah. And then it's easier to share it to journalists. So I think I remember talking to some journalists back then and they were saying like, okay, if you just basically give a good press list, a press kit with maybe some quotes and some, some, some things that explain what, why the app is beneficial and some good photos or screenshots without a frame around it, for example, so they can easily use it with their workflow.

It, it makes it so much easier for them to write about your app. And. Especially at the start, I would reach out to journalists and not get anything. And I would think like, Oh, there's all these big ones I need to email. And then you just wouldn't hear anything back. Um, yeah, but also like, yeah, they probably get this all the time.

So I figured not a big deal. So then a different strategy was just to, to share it on Twitter more, like just share what I'm making, make a nice little video or screenshot of this particular feature that I thought was cool. Uh, and then share that to the journalists on Twitter, in a DM or something just to, to.

Lower the barrier of like, Hey, is this interesting for you? Here's more information. Let me know. I'll send you a promo code. So I had this, this system. I thought, well, okay, I'm making something new and then I'm going to make a press kit and everything. I think in the end, it doesn't really matter too much because if you make a good tweet that shows what the app does and it shows it really cool in a few lines that that will probably get picked up just as well, um,

[00:57:55] Antoine van der Lee: And then it gets approved on social media based on likes and retweets.

Yeah.

[00:57:59] Jordi Bruin: And then they're more likely to write about it. But what I see as well, like if you get picked up by Nine to five Mac or Mm-Hmm. one of the other big Apple websites. You get a nice bump of new users. Yeah. Um, and it, it helps with the credibility of the app. Of course. Mm-Hmm. . But it's not a sustainable thing 'cause unless you get picked up with every update.

Yeah, yeah. That, yeah. And that, that's not likely to happen. 'cause they don't wanna write about every update 'cause it's not interesting for the users. Yeah. So. It was kind of unexpected, but one of the benefits of releasing all these Mac apps for free with the option to donate. But I would say 98 percent of people don't pay for the ones that are free.

Um, I would still get their email address and I would still be able to send them a message about anything new I'm adding. So put a little note, like, Hey, that's

[00:58:45] Antoine van der Lee: smart.

[00:58:46] Jordi Bruin: Uh, and that was also not like this big thought out plan, but I just noticed I'm making utilities for people for the Mac that make their experience nicer.

So the next utility I make might also be useful for you and the next one as well. So by, by sort of making a certain category of apps, It's also not spammy for people because it's, again, they're often going to be free. So they, there's no downside for them to try it. You give them something. Yeah. I give them something.

And it's not like, Hey, here's a free up for you to try. It's like, Hey, I made something new. If you have this problem, maybe it's useful for you. Um, again, you can choose to pay for it if you want. If not, it's also totally fine. Yeah. And so that kind of created this nice, little loop where, especially because Mac GPT, which was this app or is this app, but when it wasn't, it's an app that, um, opens chat GPT in your menu bar was, Like I took an existing project within 30 minutes, made ChatGPT, MacGPT, almost didn't release it.

And then in one month it got 5, 000 in donations for an app that was just free. Like people didn't have to pay, but because it was so useful for people, people paid. But that was free, I think for a good nine months or something. People would still pay for it. So it would still bring in nice money every day as well.

But it also got a lot of free downloads. So I think now my, my email database. It's like 350, 000 or something. So just think

[01:00:11] Antoine van der Lee: about the cost per acquisition, right? Like,

[01:00:13] Jordi Bruin: yeah, I don't really look at it as, but yeah, you could probably,

[01:00:17] Antoine van der Lee: well, I mean, if you, if you want to get so many email addresses via like, I don't know, uh, Google ads or, or Twitter ads or, you know, like the traditional way, the users, they, they get an app for free.

It doesn't feel for them. Like I'm subscribing to something or, you know, get, get this free guide.

[01:00:35] Jordi Bruin: No, in

[01:00:36] Antoine van der Lee: your email address here and you get it in your inbox, you know for sure, like, okay, they do this just to get my email address. But in your case, it feels like. you're creating a win win situation. You give them something.

Yeah. They are paying with their email address, you could say, but yeah, they get a lot of value. I sometimes feel a

[01:00:53] Jordi Bruin: bit weird about that. Like, Hey, you, you downloaded this one thing. Yeah. Do you not also want to know about everything else? Yeah. But because I feel they're all so close to the thing that you're doing.

people got, yeah, there's usually some interest there. Um, I also try to open a remail like, Hey, you're already here. You downloaded one of my apps before, uh, yeah. And the emails are very small. Like, uh, Emmanuel who makes cart pointers, he, especially when I was making my first emails, they were maybe this big.

And then I remember very clearly, he said, Okay. It needs to be this much, like remove this, this, this, just because people don't have time to read those emails. And it's like, Hey, it's me, Jordy. I made a new app for you. Cause I had this problem. Try it out. And here's a discount code if you want to pay for it, because, uh, because you downloaded a different one.

Yeah. And so I mean, I, I should, or could probably be sending a lot more emails with that. I don't use it like that much. I'm not that good at this whole conversion thing. or acquisition thing. Um, but it's nice now that every time when I send out a big email, yeah, if I make something new, the chance of someone trying it as a result is pretty big.

Yeah. Yeah. So then I, so then I don't really have this, this, um, dependency on, Oh, does it get picked up or will it get go viral on whatever? And yeah, of course, sometimes I think, okay, it would be nice to be able to do the tick tock videos and get viral, but Yeah.

[01:02:19] Antoine van der Lee: But there, there, there you are dependent in a way, right?

And now you have your own audience to talk to, which in a way, you know, as well a bit. And

[01:02:27] Jordi Bruin: like, it can probably be nicer, but this is a nice thing. Like if I, if I make nice things. more people will download them and then as a result, it should be easy. So I like that feedback loop, but yeah, there's, there's, I'm not definitely not the expert on getting your apps out the most or getting the most attention or press for it or making the nicest videos because there's a lot of stuff I should be doing a lot better there, but you have to kind of choose where you want to focus your time.

[01:02:50] Antoine van der Lee: There's many different ways of building an audience. There's many different So, you know, like if you build a recipe app, you might want to be on Instagram. But if you're building a developer tool app, there's no way you get this size of an audience on Instagram. Right. So I think you need to pick what works best for your case.

But what I find super fascinating is I never thought about, you know, releasing something for free or, you know, the classic guides and such. But Yeah. Absolutely. Like benefiting from the code bases that you've built, create a simple utility. Um, I think many would always think in money terms, like, how can I make money off it?

And, um, it kind of like opens up. My mind a bit like you don't always have to ask money for it. You can also build like a goodwill and, and, and an audience by giving something away for free, which still aligns with the audience that you have in front of you. So I think that that is a, that is an amazing takeaway, um, which is super inspiring.

[01:03:48] Jordi Bruin: Yeah. And, and also like, let's say you're building something big, like you have a big app that does, for example, with Mac whisper, it does transcription, but it does a lot of things for that. I've also thought like there's, there's small features in Mac whisper that I could probably release as separate apps.

that only do that particular thing and maybe make those free, for example, and then say like, Hey, you want to use all the features, use this one. Um, and those things don't take a lot of time. You can just take up, take some parts of your app, um, and release it as sort of freebies. Like for example, you would rocket sim.

There's probably some features in rocket sim that you could like strip out where it just does one thing, like the URL thing, where you open your URLs or the deep link stuff. There's whole apps that just do that. You could take that out as a small thing and like offer it as, um, Yeah. And then just put that as a free utility for people that just want that particular thing.

Yeah. And hopefully maybe they'll, they'll upgrade to RocketSim because this brings some benefit. Yeah. Yeah, absolutely.

[01:04:45] Antoine van der Lee: I want to stop this episode now and go building. Yeah. Yeah. No, but I seriously want to, want to round up a bit. We discussed a lot already and I think we can continue talking for hours. Um, but I believe there, there, there's many people.

listening to this and being jealous. Maybe both of us, we were both independent. We're living, living our dream in a way. And I kind of like want to give them something to inspire them. Like, what, what would you give them as a, as a, as a tip? How can they go in the, and I, I realized this is a very big, broad question, but maybe, maybe you can give them some inspiration, um, that, that can help them.

[01:05:22] Jordi Bruin: Okay. Um, so I think going Indie has a lot of aspects. Like one aspect is like not having anyone. that you're responsible to and that can tell you what to do. Uh, it's also working on what you like. It's making your own money. It's depending, choosing your own times and everything. So there's a lot of different aspects about it that are nice.

And I don't think you need to have all of those to really feel the benefits of it. Um, So for example, just working on something that you like without even releasing it, for example, just like I have a hobby. Let me just build something for that hobby, just for myself. Maybe you don't even have to have to have this ambition of releasing it and getting it right and making all your money from it, but just the joy of like solving your own problems and just programming your own thing.

Yeah. You don't have any intention of shipping that can already be super, super, um, motivating, can be super, um, enjoyable just by itself. So while that's not like going indie completely, it takes an aspect of what it takes to become indie, but takes away the pressure of, I need to find an audience. I need to find, do marketing.

I need to make money from it. I need to quit my job. Um, but you still feel some nice things. Uh, same as with choosing your own times, maybe. In your current position or your current job, you can find some way to structure it more nicely so that you have more control of your day. So maybe you get up early in the morning, do some, some hours of work for your, for your boss, uh, then so that you have maybe more time around lunch to enjoy the outside more or go for a walk with your partner or whatever you like to do.

So there's different aspects that from the indie life that you can take into your normal life as well, I think, without having to commit to all these things. Um, but my, my biggest, guide I think for how to go indie eventually would be just to make it a recurring thing in your life to work on something that you like and some of your own stuff.

So, I know for example, you were doing this thing where every day you would spend 20 minutes doing something for, for RocketSim or some of your own projects. Um, so it doesn't have to be this huge time commitment. It just has to be a commitment to yourself, a recurring thing, a recurring commitment there where you make building your own stuff part of your part of your life.

Right. Um, so. I would recommend people just try to find something that they like doing. Yeah. That's related to themselves. Yeah. Uh, and, and find some time to just to work on that and say, okay, every Saturday I'm going to spend two hours in the morning just working on that thing. That's just my Saturday activity.

So you don't go to the gym or you don't go to the beach. Yeah. No, on Saturday I have two hours where I'm working on that thing.

[01:08:06] Antoine van der Lee: Progressively moving forward towards the goal of going indie.

[01:08:09] Jordi Bruin: Yeah, but it could also be that you find out like, okay, I don't like building this own thing or I'm really bad at it or I find it very hard to, to actually make something that's good enough.

And then you know, like, all right, what should you be advancing before you try to take that step? But you already get a lot of knowledge about what it takes from yourself and like what, what, what you like or don't like about it. Yeah. Um, But especially at the start, just try not to make, put pressure on, on it, that it needs to go somewhere or that it needs to become this one thing.

Um, like don't make it your goal to, I need to make a hundred euro dollars in recurring revenue, uh, by the end of this month. No, it's just like, okay, I, I just want to get this app out. That's my goal. Or I want this app to pay for my developer membership this year. So it's like a 99, it needs to make 99 in a year.

Or I 200 people to download it, or I want to get 10 emails in support, or I want to get five bucks or something, which is more practical and more attainable without having these big, ambitious goals.

[01:09:10] Antoine van der Lee: Yeah. Because

[01:09:12] Jordi Bruin: if you get five buck reports from people, that means there's five people that are committed to this thing.

So that, that gives you a lot already of like, Oh, Apparently it's useful for people. People want to make it better. Um, and then you learn so much already about, okay, how do I deal with feature requests? Which ones do I make? Which ones do I don't? How do I learn to do bug reports? How do I fix, fix issues for people?

Um, and I noticed that those things are, those are part of the journey, but like those are actually really fun things when, when you talk to people about the app you're making, that's so much more rewarding than getting 5 for a subscription that someone will churn out the next month or something. Um, Or it could be someone that tells you their story of how they use your app.

So

[01:09:53] Antoine van der Lee: learn and build experience and then

[01:09:55] Jordi Bruin: yeah, I'm just trying to say like the end goal shouldn't always be that you're trying to make money from this or that it needs to become this thing that replaces everything else in your life in terms of your work career. Yeah. Because you can get so much out of the other hundred parts of.

the independent lifestyle, the making your own thing. So I think it's much more about creating something that you want to have be in the world. Yeah. And then, um, see how it goes from there.

[01:10:17] Antoine van der Lee: Nice. That's great. Well, thanks a lot for, uh, for joining me here today. Of course. Um, if people want to follow you, where can they find you?

[01:10:23] Jordi Bruin: Yeah. So I'm most active on Twitter, uh, twitter. com slash or x. com slash Geordie Bruin, J O R D I B R U I N. Although the last few weeks I've been thinking, uh, it's getting. pretty bad there. I'm not sure I'm going to change to a different social network because I, I don't like social networks that much too, to be honest.

So yeah, people can follow me there. Um, I have a course about this two to two method where I show examples of how I take a big idea and like, what, how do I decide what is the two hour version of that? So, and I show code examples where I've like course where I live, make those apps and just talk about how you can choose to make the design nicer.

Like what kind of. Things you can do if you're not a designer by trade, for example. Yep. Um, that it's linked somewhere on my Twitter, so, uh, yeah, just send me a message about that.

[01:11:13] Antoine van der Lee: I will link to this all of course. Perfect. In the description. Um,

[01:11:16] Jordi Bruin: and yeah, my Gumroad, which is where I share most of my Mac apps, but just find it on Twitter, that's probably easiest.

[01:11:23] Antoine van der Lee: Alright, awesome. Well, thanks a lot for today. Yeah. Super inspiring. Thanks. I know what to do. Helping him now. And uh,

[01:11:28] Jordi Bruin: nice. See you soon. Yeah, see you soon.

Shipping side projects in 2-2-2 Easy Steps - Jordi Bruin
Broadcast by