AppForce1: news and info for iOS app developers

Mustafa Yusuf, creator of Tasks app

July 15, 2021 Jeroen Leenarts
AppForce1: news and info for iOS app developers
Mustafa Yusuf, creator of Tasks app
AppForce1: news and info for iOS app developers +
Help us continue making great content for listeners everywhere.
Starting at $3/month
Support
Show Notes Transcript

You might have seen Mustafa's app on Twitter. It is called Tasks. By his own admission, not the most SEO friendly name. But it is a great app using Apple's frameworks top to bottom. Learn about Mustafa's story thoughts launching and living his indie developer lifestyle.

More information about Mustafa:

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

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

Support the show

Rate me on Apple Podcasts.

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

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

My book: Being a Lead Software Developer

Jeroen Leenarts:

Hi, and welcome to another special edition of my podcast. I'm sitting here with Mustafa Yousef, you might know him from his indie product called tasks. And we'll dig into the story of behind that product and also the story behind Mustafar how we got started with software development. And we'll just see where we'll end up. Most of our How are you doing today?

Mustafa Yusuf:

I'm really well, it's it's just a pleasure being on the show, I followed some of the guests who I've known for a while and you know, I admire and respect. So it's glad to be on.

Jeroen Leenarts:

So, where in the world are you situated?

Mustafa Yusuf:

Most of? I'm situated in Mumbai, India. Yeah. And yeah, that's where I've been and I currently am.

Jeroen Leenarts:

So is it something that you, you always lift in Mumbai, or AI from other parts of India or?

Mustafa Yusuf:

So I've, I've studied all over India, because I have been accused of coding school. So that was one part of it. But I then as soon as I passed out of college, I went to Bangalore to pursue, you know, to work at as a software developer, because Bangalore is like the Silicon Valley of India. And during the lockdowns during the pandemic, a lot of things happen. So I shifted back home to Mumbai, where my parents and my family is, and since then, I have left Bangalore, and now completely in Mumbai.

Jeroen Leenarts:

Okay, so how long have you been doing software development in some capacity for a living?

Mustafa Yusuf:

So I officially graduated in 2018. So it's been just three years now. So I guess I've been doing software development professionally for three years, but I've been coding since the age of 14, just, it started off with drawing patterns. And you know, like, drawing that pyramid in with Java. So Java, and then moved up. And you know, went to C, C++ did some Visual Basic. And as I wanted to learn iOS app development, but I saw Objective C, I closed my book as they I can't do this. And then swift came out. So that's when I officially started and use the language for more than just, you know, making simple algorithms or printing out weird patterns.

Jeroen Leenarts:

So you mentioned that you were 14 year olds, when you got started with something computer related. Do you still remember the first computer you got your hands on?

Mustafa Yusuf:

Well, I made the first computer we had was a Sony VAIO at home. It was a decent series. But that was not mine to use. Absolutely. And I didn't use it much programming. But it was just the school computer that I use. So since I was at boarding school, during that time, so then we had a computer lab, which we would go to. So there was the school computer that I learned primarily on.

Jeroen Leenarts:

So And why were you in boarding school, actually, because you mentioned that you traveled all over India, for your education due to the boarding school, I

Mustafa Yusuf:

guess my parents, I guess they wanted a break. No, I'm just kidding. So basically, my parents, they were always keen on sending me in boarding school so that I can learn the military routine of you know, and get more discipline. Plus, I have a two three other siblings. So it was a good mix. And my grandparents also always wanted their kid to go to boarding school, it was just a nice experience to have. And I personally loved it. It was a very good change. I used to go I used to, you know, stay with friends sort of things that everyone used to say together. And personally, I learned a lot, a lot of my manners behaviors, you know, and making me an offer person just came from boarding school. So I guess that's what they wanted as well, where you know, some salary is taken off them.

Jeroen Leenarts:

So you mentioned there was a lot of discipline in boarding school. Was it needed when you were like a young boy?

Mustafa Yusuf:

Well, I was the kind of kid that would require it. I was extremely mischievious. So definitely for me, and it was actually really required for me, I'd say, I was a tough one to you know, get a hold of so yeah.

Jeroen Leenarts:

So yeah, I can I can imagine that your parents were very convinced that the boarding school was the best fit for you for your personality. And it seems that it's something that is quite normal in your your family. And if it's well supported, it's just actually I've had a great experience. And two grandparents were happy so what more could you wish Right?

Mustafa Yusuf:

Absolutely. And after me my sisters went to boarding school and then my brothers and my whole family all my brothers and sisters they all Winter boarding school after me

Jeroen Leenarts:

and ra ra all of them as, as happy with the end result as you are or

Mustafa Yusuf:

all of us are really happy. We were really pissed when we had to come back out of boarding school. In fact, I left boarding school two years to study in Mumbai with my family, and then it just didn't happen. So I did call it again somewhere else and shift it out.

Jeroen Leenarts:

Hey, Mom, Hey, Dad shipped me off to a boarding school, please. Absolutely. Awesome, man. So yeah, then. So you did your education's and you started professionally in 2018? Where did you study?

Mustafa Yusuf:

I studied in we it? It's, well, our institute of technology. It's a private university in the south of India. Yeah. So I pursued my Bachelor of Technology over there in computing, Computer Sciences.

Jeroen Leenarts:

Okay. And when you were graduated, then you went to not Mumbai, but to bank Bangalore, did you say? Yes, that is? Because Bangalore is pretty much the tech hub of India. And what was your experience there?

Mustafa Yusuf:

So it was it was really nice place because every time I would get in an Uber or something, everyone was an engineer one way or the other. So it was, and we had this uber pooling. So I used to take those in Bangalore initially. And I used to meet so many people who were experienced developers, you just get a chance to talk, it was just so easy to meet people in network, as opposed to in a city, any any other city in India, you wouldn't get that kind of, you know, way to network with people. And there are a lot of tech meetups in Bangalore, there are a lot of events happening around, you know, for software developers. So that was a really good part. And it was so much fun. Because there was something actively for me to do there, besides, you know, just go to a job and come back home and eat and sleep. Right? Yeah. So Bangor was an absolutely beautiful place where I think I grew personally a lot and you know, gained a lot of good connections. And most of them do, which I keep till date.

Jeroen Leenarts:

Okay. And so it sounds like you did a salary job initially. Is that correct? Yes. And what made you decide to somewhat like venture out on your own and create a product.

Mustafa Yusuf:

So my, my go like, initially, to start off, right, I had to get some experience hands on. And the way I did is initially, four months prior to college ending or like five months, I got an internship. So our last semester, we could do it as an internship. So that's essentially what I did. I interned at a company called Najmi, which had won the Google App of the Year in 20. of 2017, I guess. So they didn't have an iOS app, they wanted someone to come in and build it. I told them, trust me, I'll build it for you. It was a lot of promises. And finally, they took a bet on me. I helped them build their app out. I worked there for a year and few months, after which I transitioned to another job. But, yeah, to answer your question, right, the reason why I went out to build my own product is because I always wanted to build a product out. In college, I had an app of my own, which I built out for the students in the college. So it was the first product ever built out. And I enjoyed making that app so much. So it was basically it was great all your data from the college GS website, and displayed natively in an app, right. And we had a team of team one team wrote the, you know, the backend, which would act like a relay between the website and scraping the data and, you know, storing it so that we didn't have to go through the CAPTCHA over and over again, and hit limits, and displaying it natively in the app. And like, students loved it, you know, as opposed to going into, you know, the colleges website and having to see their marks and everything. And the cool thing is, since we were scraping everyone's data, right, we could actually show who scored the highest in the class, lowest in the class, if you were in the average bracket, or what would your predicted grade be based on the classes performance? So there were so many things that we could do. And we all enjoyed it. And I think the whole I was the iOS developer, we had an Android developer and we had three back end developers, right. Just making this and it was just such a joyful experience that I thought that you know, making products is personally what I want to do and probably build my own product which should up as opposed to impacting, if you call it students impact a great audience.

Jeroen Leenarts:

And what happened to this product?

Mustafa Yusuf:

It was so it's Still was in college till I was there, I could maintain it. But then the college kept changing their UI or you know, everything. So scraping wouldn't essentially work. And then the team stopped maintaining it. But while we were in college, we reached the education category rank 13. And that's when I was blown away by something is just targeting such a small audience, you could actually hit the charts and rankings. So that was something so crazy to see, cuz I could have only dreamed of achieving that back then. And I got over, you know, 500 reviews and ratings from students, some being extremely good, some being extremely, like, you know, annoyed, why is this all working? Although it never worked on the college's website, as well, right. So but it was a fascinating experience all together.

Jeroen Leenarts:

And then if you show you were working at at a paid position, and then at some point, you've come to the conclusion that you would like to venture out on your own. So what was your process? Because I reckon you didn't have a product yet, when you made up your mind to go on your own. So what was your process in getting started there.

Mustafa Yusuf:

So after taking the first job, I left that and transitioned into a second job, actually, that company was assigning Z. And the reason I had to switch out is the first job, I was a single developer, not really learning how to collaborate or work in a team. So assign is he was an excellent place for me to grow and, you know, be mentored by people, like exceptional people in the industry. Plus, they have their app is extremely successful. So I learned a lot about, you know, how legacy systems work in place, and how, you know, a code base evolves in like, the nine or 10 years No, at the life of the company. And that was an extremely, extremely positive part of my career where I actually learned a lot of good and bad practices, and, you know, a mix of all the things. And I had excellent mentorship through, like, from all the people at the company. And while I was there, I built out my first India app, you know, and which did not do well. And then when the second one, I launched it, and ended well, I, you know, respectfully, you know, gave my notice letter, that I would be leaving the company in order to pursue this full time. That's how my transition went from, you know, being an employee to, you know, going into indie full time.

Jeroen Leenarts:

So you mentioned the first product that you created, and that didn't succeed. And then another product, and both of those you created in the evening hours after work.

Mustafa Yusuf:

Absolutely, yeah, that is, right. So how

Jeroen Leenarts:

intense was that, because I know, in India, that working hours are quite a lot. And also then doing work in the evening, after work hours, that's, that must have been long days, I guess.

Mustafa Yusuf:

It was definitely thrilling is like he spent eight hours at work. And then he spent like three hours at commuting because of traffic. And it is a big chunk of your day. So I don't know about this, the rest of the world normally, you know, sleeps at the proper timing and all of this, I have an exercise that for a very, very, very long time. Like, for example, while we're recording this, right, this is 12:30am in the morning, and this would seem like a weird time for someone but for me, I stay awake, mostly like throughout the night, and I go to sleep at six in the morning. It's something very weird, but working I, I usually stay awake for like 18 to 18 hours a day, sometimes at least 14 minimum. I can't sleep for too long. So getting getting work out like when I don't see if and when I'm coding is when I'm like, I enjoy myself and I love coding at night. Because there's no distraction. There's no phone ringing. That was before I joined Twitter, which is all spread out across the world. So now even at night, I have distractions. But back then, I was not so involved in the global community. So nice, really quiet, very productive, and I could just accomplish everything I wanted.

Jeroen Leenarts:

So and then at some point, you created your second product, which is called tasks if I'm correct. That is and and you came to the point that you were able to make the decision to to hand in your notice at your then employer. Was it done already that tasks was able to to pay your bills or was it on its way to be able to do that for you?

Mustafa Yusuf:

So like in the like being an indie developer in India is much simpler because we have very low cost of living right I don't need to be earning$10,000 a month, you know, in order to pay my bills. So via like something, if you just make, you know, a $2,000 a month or something, you can actually pay your bills off very comfortably. And I didn't have very high expenses, my expenses were really on the download. So as soon as it launched, the launch went, so well, it gave me a runway for, you know, two to three months. So I decided that if not now, then when, right? It was just my, like, the rocket was about to leave, and it had a very good start. But in order to nurture the intellect, or to make sure that it reaches, you know, the final destination, I had to get out and work on it. Otherwise, it could have just, you know, faded off that and not picked on as much as I wanted to. So that was the reason I decided, you know, what, this is the best time for me to do it. I've had a good launch, but to ensure that it goes good, and sustains and, you know, works out throughout the year, and the years to come, would be for me to step down and focus on it properly.

Jeroen Leenarts:

Okay. And how long ago did you launch tasks?

Mustafa Yusuf:

Exactly a year ago, so the first of June 2020.

Jeroen Leenarts:

Okay, and how well, shall we say, How's the rocket flying at the moment,

Mustafa Yusuf:

it's doing really, really well. It's not doing extremely well, it's doing really well for me to you know, stay in of it, and, you know, have it pay my bills and everything. And so that's the really well part. And there is so much potential for it to actually, you know, get a boosted or sort of, and, you know, go a very long way. So, I've learned so much in the last year, right, I learned how to take up customer support, Do this, do that, and you know, understand what users want. Finally, I think that was the key part, to building a product where you don't build a product for yourself, you initially build it for yourself, right? And then you incorporate user feedback. And you know, you, you know, you bring it to the product. And the past year was a very rockier, I had a kid and everything. So it was not that much focus on the app set of things. I did get out massive updates. But this year, I think this is going to be the yo but I actually bring in more updates, which you know, stronger updates, which would make a bigger impact, and then also push into marketing and all of those things, which I've been just procrastinating on.

Jeroen Leenarts:

So I'm just to get things bright and clear on what you're working on. Can you describe a little bit what tasks is and what platforms it is available on?

Mustafa Yusuf:

Yes, so tasks is an iOS, iPad, iOS and Mac OS app. And it's basically I used to work at the company. And I used to use JIRA. And I personally love JIRA. And while I was making my first indie app, right, I just tried to find out the best way that I could make it and planet. And I resorted to pen and paper, I could not really use software and JIRA was quite expensive, and not really for your own task management. And then I went on to, you know, multiple Slack channels to ask people, you know, what's the best task manager that you're like, and everyone had a suggestion, and everyone had complaints about their own suggestion. I was like, Whoa, there's something weird here. And I personally love how JIRA was just, you know, drag and drop for me, since all I did was drag and drop, it was so easy, but setting up the actual JIRA project is apparently, you know, very difficult thing to do. And people hate that part. I was like, why not make the setup easy. Bring in a native app, because people love native app over, you know, our over electron apps or over anything that doesn't look native, says like, let's bring a native app and you know, bring in Super ease of use, and bring in a lot of customizations. But that's only if you really want it, if you don't want it, the app works without the customization, right? And club it all in and just help me do my tasks every day because I don't have tasks which are to do and done. I think that's a very traditional way of how it's done. You know, you have a task, you check it and it's done. It works for me like it's to do and then you take it up and then next release and then test it and then done and then it's released, right? Like I had, you know, weird statuses and then some features we, you know, partially completed and then there was something to be done like, there were just so many to say this is the normal traditional Task Managers didn't work for me. And the ones that probably could work for me I didn't like the UI of it as much or I found it too intimidating to start off with And that's just how tasks came to be.

Jeroen Leenarts:

Okay, and how is it to actually developed across three different platforms within the Apple ecosystem? How much of the code base are you able to share between the three platforms?

Mustafa Yusuf:

It's surprisingly, it's 100%. Like, honestly, I have no Mac specific views, I have no i iOS or iPad or specific views. It's all 100% shared. And the reason I can do that is because all my everything is programmed, medically done, even the views, and all of those things, so that if I have a view, like a project sell, right, it looks different on the Mac, it looks different on the phone. And I just have to shift constraints around. So shifting constraints when done programming is so much easier, where I can just put a hashtag if def, you know, if target environment is Mac catalyst, you know, just assign it, you know, have the stack be a vertical stack. And if it's, you know, an compact or regular device, then do you know, have it in this manner? So that was a like, although I guess you can do that with storyboard. But I'm not sure to what extent you can do it because I have some cells that look completely different. And it's just such an easy thing to do. And yeah, 100% code sharing across all platforms,

Jeroen Leenarts:

and and what are your thoughts on something like swift UI, then? Because by the sounds of it, you're still using UI kit?

Mustafa Yusuf:

Kit? Yeah, I did not. So I did start with UI kit, very little app kit, like, but it's the app is like, 80%, UI kit and then 20% Swift UI. And I have used a lot of Swift UI in some of the freelance projects that I've been doing. Yeah. Swift UI is incredibly, incredibly easy. Like the amount of time it takes to complete a screen. And you know, the amount of time it takes to do any basic thing, like, you know, fetching records from Core Data and displaying it on the cell. And, you know, performing operations on like, that is so simple, because you just have tried to simple, you know, Fetch Results. And then you get the request, you get the results after you pass the request. And things become really simple. But I don't like the core funk the core, I really call it the core elements of Swift UI app, like the navigation view, which also behaves as a split view, right? Although good, I don't think I would like to have, you know, a lot more control over that. If I want to switch between a two to three column layout, I cannot do it without any weird hack. So there are a few API's that I do find missing in Swift UI. So I can't do a pure swift UI app. But as far as I can go, right. Any static screen just makes no sense to do it in UI kit. Having a complex form doesn't make sense and doing it in UI kit, right? Because swift UI makes that so much simpler and so much easier. Because and, I guess, any static screen and tasks, any settings related screen, and any screens that come from it, right? All of that is done in Swift UI, whereas the core, the core screens of the app, which is the combat screen, that is done in UI kit,

Jeroen Leenarts:

so you're using catalyst to bring the UI Kit code base to the Mac, right? Correct. So And was it? Was it a good process? Is it something that you would recommend for maybe a next product or whatever you're doing or to a client on a few contracts that you might still do next to your in the app?

Mustafa Yusuf:

So definitely, I'd recommend the catalyst route, it's just first like, I would have never built a Mac out of without it. Like, there was no way I was gonna be like, Hey, today, let's sit on App kit. And you know, like, Let's build this build this app all over, you know, and because I wouldn't be able to reuse components or anything, I probably have to copy paste code and make everything UI into ns. Right. And that's something I probably didn't want to go that route. And without catalyst, I wouldn't have become a Mac developer. I don't even know if it's, you become a Mac developer once you check that box? I

Jeroen Leenarts:

wouldn't it depends on your definition, right? Yeah.

Mustafa Yusuf:

And I guess Twitter, just check the box. And they were a Mac app.

Jeroen Leenarts:

So um, but considering that you're you got started on the Apple ecosystem with iOS apps, which UI kit? How hard was it to like, get enough knowledge on catalyst and the Mapquest related things to that? How hard was it to actually make this addition to an existing code base that it was actually able to perform on On the back and actually be a good citizen on the platform.

Mustafa Yusuf:

So that that was something that was so tricky at the start, right, I had to figure out how to get a toolbar working, because those are still competence from upcut, which are exposed to us. And then users, you know, they started asking for services, which is a thing of, you know, a part of Mac, or part of the Mac platform. And to get those things, you know, up and running, I had to, you know, get in a little bit into learning app kit. And the thing is, it's not, it's not something that a lot of tutorials about it exist. So it's kind of, you either have to go into, you know, figuring it out yourself. And since you can't access aapka API's, you know, while being a cancer, but you can also, like, you know, if you think Steve has an article he wrote on it by he has an app cut glue, where you create a plugin, so they talk to each other, but they don't really know you're talking to an advocate class. So learn these API's and these things, it was a little harder because not enough blogs or enough articles about it, because we all rely on, you know, having content answered on Stack Overflow, right? Or having a Paul Hudson blog about it already. So that was a little tricky. But it was all in all, the process was really fun. It was exciting, because to see an app on the Mac, right? That's something that I didn't think of, and it happened. So I guess all in all, it was a very, it was a smooth process, because I had zero dependencies. So I have no dependencies, except for you know, revenue cat, which is my favorite dependency in the whole world.

Jeroen Leenarts:

So I'm so only revenue kept is a third party dependency on your product. Yes. And that and that's obviously just to make sure that you don't mess up the store kit into

Mustafa Yusuf:

integration mess that up? Because I'm because I know I will.

Jeroen Leenarts:

Yeah. So and what do you use as a sinking mechanism? On the back ends? i My guess would be that it would be cloudkit by Apple? And is it then also stored in core data? Or do you do the cloud record syncing manually?

Mustafa Yusuf:

I do it manually. I do store my records in core data. But I don't opt in for the default syncing. The default syncing is rather dumb, it works for you? No. I mean, it's a very good thing that they brought it in, because it kick starts a lot of developers moving to Core Data, because they get the free sync, and, you know, services like realm already offer them. So it's just competing with that. It's, it's, I guess, it's a decent sync, you know, for simple entities, anything that gets conflicts, you know, anything that gets a little complex, and could result in conflicts, right? It doesn't do that good. A job is the past week, right? Or the past month, I've had developers reaching out to me saying, Hey, are you using NS persistent cloudkit container? Cares? If you are, it just doesn't work for me users reporting is not syncing. And what should I do, and they restart the app, the unsynced changes, obviously, get lost, and then syncing resumes with the data that's already been synced to cloudkit. So it's not the most stable thing out there. And I would recommend writing your own syncing mechanism, because it's not that hard. If it was, you know, a really hard task, I would advise against it, but writing some boilerplate code in order to get the syncing right, I guess it's, it's a good practice. So you have more control.

Jeroen Leenarts:

So and how do you? How do you translate the core data entities into the cloudkit records? Because I know, by the way that the Core Data framework is set up, you can't really use a core data entity class directly as as a base for a cloud kit record. So how do you how do you get around that? How do you make sure that this, these two big API's within the apple system actually are able to like be connected?

Mustafa Yusuf:

So I do have on every NS managed object I have as CK record as a function, so it passes it and gives me a CK record, which is nothing but a dictionary, right? The CK record is nothing but a dictionary where it can take the key has to be a string, and the value can be you know, one of the multiple things it could be a CK asset, which is anything that is data, and then you have your vertical relationships. So it's called a seeker reference. So you know, that would be your core data relationships, like a one to many or anything like that. So I've translated that model like, there are two routes which we will go right there either. You know, there's one way you could make everything that's in Core Data, take it make it into a quotable entity or an intermediate wrap around And you encode that as data, right? And dump it to cloudkit. Essentially, that way, you know, it's, you don't have to worry as you scale. And the other way is you actually put in the values into cloudkit into a seek record, which is, you know, direct mapping of what is their ENCODE data? So the reason I went with the direct mapping and not, you know, wrapping up in a codable structure and encoding it, is because I wanted final, what do you call it finer control over you know, something like notifications. So, if tomorrow, someone changes the task to complete it, right, I want to be able to say, whenever the value is changed to completed, you know, trigger a push notification to, you know, the person that's assigned to, and cloudkit offers a, like, beautiful way that, you know, you can create notifications, and subscribe to changes either silently or, you know, be notified about it. So having that fine control. That's why I have these, I haven't wrapped it up in a data and pushed it, but there are some parts, which, you know, I will never query on. So those things are definitely wrapped up, as, you know, into a data object and just dumped onto cloudkit.

Jeroen Leenarts:

Yeah. And you mentioned something interesting there, because you're using Cloud kits, and you are able to share data with other people. So you're not only using the private container of an individual, but you're using the public container, correct?

Mustafa Yusuf:

A shared container, so the private database and the shared database, okay.

Jeroen Leenarts:

And it's one of the reasons that the sharing of projects is on a paid tier within your product. Because if you're using a shared container, then the data usage is on you as a developer, right? And not on the iCloud account of the end user.

Mustafa Yusuf:

I think when you get into the shared container, it's neither it's like, it's I don't think it's on me. Okay. But even if it was on me, right, I don't know a single person in the world I've encountered yet, who's told me I've hit the, you know, Bay deer of cloud kit. I really want to know if anyone listening to this has ever reached, you know, the limit. Where is the limit kills? I have never encountered it. And I can't private database, there's absolutely no limits.

Jeroen Leenarts:

Yeah, it's database. And private database. It is basically the the iCloud tier that the end user is using. So it's like the few the few dollars or few euros that somebody pays each month. So and something that I find interesting to hear from you as well is we we are recording this, like pretty close after WWDC. And one of the announcements that were made during WWDC 2021, will have the most impact on your product roadmap for the future? Or is that something you'd like to keep to yourself?

Mustafa Yusuf:

Oh, no, it's definitely the large widgets for iPad like that. I'm just kidding. But I think the main takeaway, like the best thing that I take away from this, within DC is I can actually make an Mac app which is really, really refined with the new aps that they provided. And keyboard, keyboard support, right? This these were parts, which were kind of a pain and focusing like using a keyboard natively is for any task manager, if you want to 100% use your keyboard, you don't really want to, you know, go through and use your trackpad always to navigate things because ah, no, no, you bigger screen, right? It's harder to do that. So I think keyboard supports and you know, focus views and make, being able to navigate better is one key thing that I take away for tasks. Aside from that, there are like a lot of improvements here and there. Share play as much as I like it, there's not anything I can do about it. It's just if a person wants to see someone else's task screen, they might as well just share their screen as opposed to you know, yeah, initiating a share play.

Jeroen Leenarts:

So, yeah, and what about T, the whole handoff base dragging and dropping that we're doing between different platforms. Did you see the demo?

Mustafa Yusuf:

Yes, that that was, I think it was Universal. Universal control, is that it? It was absolutely amazing, because I do it every single day of my life, right? I copy an image on my iPad, and I based it on my Mac. So it kind of breaks my flow when I have to open it I have to you know, screenshot it, I have to then select the Share button and then you know, copy and then wait for a second or two and then it comes to the Mac. If I could just take my cursor all the way down to the iPad, just drag that image and drop in my Mac right? That would be something amazing. And this is something I wanted to try a task suppose drag and drop to All right, you can pick up from one camp and then drop it on to the other, or you can, you know, drag it and drop it across multiple statuses. So if I were to drag it ask for my Mac, would the UI drag items still, you know, be dropped on my iPad while consisting containing the local object? So like, it's, it's definitely exciting. I don't think a lot of people would have one project on the iPad and the other on the Mac. But having that drag and drop support is going to be really cool. Like,

Jeroen Leenarts:

I have to say, I reckon that if you does tasks, support multiple windows or not, yes, so yeah, then you would on one platform, of course, be able to drag between different windows. And if the if adding the universe control feature on top of that wouldn't be too much hassle, then who knows, it might be a new feature to your product. So what is in store for people using tasks for the time being, so you have a subscription based model, and also one lifetime paid? There are a lot of people opting for the lifetime tier, or is it mostly subscriptions that people are purchasing.

Mustafa Yusuf:

So it's definitely like it fluctuates from time to time, I think overall, it's settled down to 65%, subscribing, 35% purchasing the one time which is, but if there's any press launch, like, for example, if there's an article going on, you'll see a sudden, sudden surge in lifetime purchases. But otherwise, on a normal day, you know, subscribe, subscribers are higher than the lifetime. But when you run a discount, right, if I were to give like, you know, a discount on the subscription, as well as on the lifetime, people, rather than just purchase the lifetime at a discounted rate,

Jeroen Leenarts:

and which purse, which customers, of course, any customer, someone you love to have using your product, but what's better for you as an indie developer, a subscription or a lifetime purchase.

Mustafa Yusuf:

So to start off, the lifetime purchase was amazing, because it was like someone paying me three years advance, you know, and fueling the growth. So you know, I didn't have to really worry about every other month. So it was a very good. It's like a very good Kickstarter campaign, right, the early backers have come in, and they're supporting me on my journey. So even though that they won't give me recurring revenue year on year, right, they initially supported the journey. And you know, they took a leap of faith in the app. So obviously, I'll continue to support them for life. And going forward, it might not make as much sense to have the lifetime option. So it might be removed from the app, and you know, just continue to do it as a subscription model. And I currently just have a yearly model, but I am trying to, you know, incorporate a monthly model, where you can try it out for you know, as much of a period as you like, without even having to commit for long term. So it reduces your risk,

Jeroen Leenarts:

I can imagine, because what I'm seeing it because I've had other indie developers on my podcast before is that they really, they really love the subscription model, once they have like enough subscribers really. So that has like a really a sustained income being generated by the product. And it also shifts the way that I think about a feature roadmap. So because if you have like paying subscribers, and you have to keep people who are subscribers happy for the longer duration, you use, tend to develop different features, then, if you need to make like a half year or yearly, big feature splash every, every time again, again, and again and again. So what is it like for you is it's because you mentioned that you have like, a little bit over half of your customers, our subscribers? Is it like a slow growing stream of revenue for you, and it's something that has, if you look at things, something that has the potential to be a very much long term engagement for you?

Mustafa Yusuf:

Yes, so like, every month, I keep seeing the subscribers number. In fact, every day I see the number keep growing, right? And there's nothing like it. It's it's just enjoy to watch. And I want to reach a certain MMR I think I've reached 2000, I want to go up and you know, reach a higher MRR. And the thing is the lifetime. The lifetime users don't count in, right. They don't count in the EMR. And that's the monthly recurring revenue, right. And once the lifetime users, what they do is they essentially give me extra runway and the subscribers essentially give me a long term promise, right? So it's a very good mix of the both right now. Going forward. I'd obviously want to have more subscribers as opposed to, you know, having more lifetime users? Yeah. And maybe even some of them just migrate. I highly doubt it, but find a compelling reason to have them migrate.

Jeroen Leenarts:

Yeah, who knows? So let's see. So you got started with iOS development right after university? If I'm correct? Yes. Would. And if I'm remembering correctly, there was a little bit of a, of a stroke of luck for you, because you you landed a position that had this opportunity for you? And but did you do any prior development on iOS before that? Or was it something that you picked up then in there? Or was it already an interest with you?

Mustafa Yusuf:

So I picked it off in the second year of my college, like towards the end of the first year?

Jeroen Leenarts:

Product, yet the product during your education? Indeed, yes. So but But what made you get started with iOS development? Yeah, what made you get started with iOS development, really.

Mustafa Yusuf:

I see the iPhone was such a premium gadget back then. And it was really, really attractive, right? Everyone wanted an iPhone. And I remember my dad, gifting my mom an iPhone really early on, right. And that was like a magical device for us. And if they had, you know, a fun games, and all of those things, and I was just so excited, we'd all just, you know, wait to play on that phone and my mom with restricted time on it. And, yeah, so when I went into college thinking, you know, what should I do? My parents posed the question to me, right? That, like, you're going to go away for years, like, you're not going to be disturbing it for four years. So what do you essentially going to do in college? As a coffee? I'll study, obviously, I'll study my ass off. And they're like, that's fine. You have to do that either way, right? What are you going to do to stand out among the other students, because you need to not just be a person coming out of college having a Bachelor of Technology because, you know, a lack of students every year or like 100,000 students, every year come out with that, right? So what would you do to set, you know, set yourself, you know, aside from the crowd, and I actually sat on it. And I thought about it, you know, what are the different ways that I could do what I love? That is coding, right? And I remember downloading that week, right? It was a week of trying to figure out what I want to do. Week is a very short duration, but I just don't know, I just had a week, I didn't have much time, because college was starting out in a week. So I, you know, thought about the different ways one was web development. Right. And that was exciting at the time, I really enjoyed it, then the other one was Android. And the third one was iOS, right? As a kid, I just knew these three options. I didn't know there were so many other things that I could do. And I downloaded Android Eclipse at the time, right? That was the guy who was before, you know, Android Studio came in. And I opened that on Sony wire, right? The teaser model. And it was just so scary. I just couldn't. They were buttons everywhere. I felt like Gooding can be this difficult cannon, right? And then I went on, you know, I was like, Okay, let me just try. Maybe it's easier, right? So I spend two days trying to figure out seeing YouTube videos, tutorials and how, you know, people code and Eclipse and nothing, and I knew Java. So it was not something that was new to me, right. And I just couldn't get the hang of it. It was just hard. And then like, you know, in the recommendations, there was Xcode. And Xcode just looks so simple, as opposed to eclipse look like at that time, right? And I was like, you know, what, iOS app development sounds really good. I didn't like it was very easy jumping between programming languages, right? It's very easy to get one from the other. But

Jeroen Leenarts:

as long as it's not Objective C, right.

Mustafa Yusuf:

As long as it's not objective C Exactly. Like I could learn any programming language. But that, because it was intimidating for me, there was just too many brackets. And, you know, I just didn't know what went were, and concepts like delegates. And, you know, and all these things are really new and Objective C looks scary to start off with. But now that I've I have actually learned it. Not I wouldn't say I'm a professional, I can read and write it. You know, I can read it very well. I can write it average, I guess. But yeah, the fact that then I just, you know, randomly do i Well, maybe I want to do is after government right? I probably want to do that because the iPhone look like a really beautiful thing. The app store was good, you know, platform. It still is I suppose. But yeah, the App Store was a crazy place where there were a lot of apps coming in games coming in. And it was starting to grow like very well and it was a niche I knew like Android was like, there were a lot of Android developers coming out every year, but not so many iOS developers, at least in India. Right? Yeah. And it was not focused. I was like, in four years of time, this would still be something you know, that will be that would help me a lot. And my mom was like the show, I was like, Yeah, this is completely what I'm going to do. I'm confident about this. And then they got me my first ever laptop, which would be a MacBook Air back in 2014. Model. And, wow, that was the best device I've ever held in my life. And I think, till date, probably my absolute favorite laptop like there was just so thin, and so beautiful. And I went to college, first year of college, I wasted my time. Like, as I suppose most students do in college, I studied, well, I got my grades well, and I told my parents, you know, like, Hey, these are my grades, extremely good. And they were like, Yeah, but what happened to that promise of yours as a key I am absolutely going to do that I had opened earlier in that year, you know, a book to learn Objective C, but I just couldn't. So it was that book. And then swift came out later that year, and as a shining. It was, it was really hard getting along. Because no tutorials, no blogs, no one knows what Swift is, right? Everyone is learning. And I'm learning. And that was a that was a guess, an advantage. Because the world was at a level, right? No one knew object and no one knew swift and how it works. Like, I mean, it was a different thing of the C, Objective C developers could transition into it much easier than I could. But it was something completely new. And it made things look, you know, readable. Like, the table view became a lot more readable. It became easy to use. I have pathetic code written and I have those projects from back in 2014. And I opened them from time to time just to see what an idiot I was, right?

Jeroen Leenarts:

Yeah, grab some, grab some snacks, and just have a laugh.

Mustafa Yusuf:

I know. I've done so many stupid things that I'm so glad I did them. But, and I learned out of it. And yeah, yes, that's how I got into iser, it was completely by chance, I took a chance, you know, hey, maybe this is what I want to do. And it just worked out for me. And ever since then I never looked back. Once I started with Swift, and you know, building my first app out there, I never thought I want to do something else. I never thought you know what, this is kind of boring. Let me go to web development. Or let me try Android development. I just couldn't. And I loved the Xcode ID.

Jeroen Leenarts:

I got started with iOS development when it was like, I was three or four I think it was. So I wrote Objective C for years. And I loved it. Because it was it was a lot of typing. And of course, code completion helps a lot. But then being able to read it back, that was amazing, just like these long message syntax that you had in Objective C, it was just like reading a poem to me sometimes. You mentioned something different. That was very interesting, because you mentioned that you had a bit of a wild year, actually, and that you was correct in hearing that you became a father or,

Mustafa Yusuf:

Oh, yes, I did become a father. During the pandemic, I think it was the best time to become a father also. So it wasn't planned for the pandemic, it happened before the pandemic, and then the kid came out during so it was really nice, planned, like it came out to it executed very well

Jeroen Leenarts:

executed. That's a nice way of putting it. So, but how is it to be like, depends on your income from a product that you create, and being responsible for, I reckon, a large part of the income of the family and that there's like a young child involved that you also want to make sure that he or he or she has a good life. So how is that for you? Actually,

Mustafa Yusuf:

it's it's really daunting at times, right? And I do tasks full time, but although like, in spite of that I do some contracting on the side, is I do have the free time, it's not like tasks takes up all my time. Because even if I wanted to, it just couldn't because I like I think any developers, we finish our work a lot more faster. We don't have processes in places if we don't have to, you know, consult this person, get the designs from this person, just code and go code and go and, like in the past me 24 releases. Right. And you like it's more than a lot of companies out there in the world do. Yeah, so like I do some contracting slash freelancing on the side, right. And it, it provides, you know, it does, like tasks covers my expenses. So like, and then there's the contracting income, which comes in which supports you know, like, in case things go wrong, right. There's always something to back up to, and I think it's important, like shouldn't be in a bubble, you know, and all of a sudden One day you realize it. So I try to make the most of my time. And in spite and actually like freelancing and contracting is so much fun. Because the ones that I have is relatively like people run out, you know, use Swift UI and production and all of these things. And I think all my contracting currently so called swift UI. And it's Yeah,

Jeroen Leenarts:

and these these contracts are those like, locally in, in Mumbai, or in India, or they like, on the internet International,

Mustafa Yusuf:

on the internet International. Like, I think I got all my contracts via Twitter, just people reaching out. And you know, I think the more you put yourself out there, the more people actually want, you know, do they see your work, and they are comfortable working with you. So like, Twitter has been the best hiring platform. I don't know what LinkedIn is.

Jeroen Leenarts:

It's horrible. Did I said about that? Okay, well, with that, I would say, because we're creeping up on the on the hour already. It's, it's been a fun conversation. And it's very interesting to see that even though you have like a short, professional career that you finish it out on your own. So quickly, because it just added or something made you feel that that was the best fit for you and your personality. And by the sounds of things you're getting by good enough to be able to keep on doing this. And I'd say most of all, thank you so much for your time, and it's it's a pleasure talking to you.

Mustafa Yusuf:

It was a pleasure being on the show and talking to you.

Jeroen Leenarts:

And where can people find you online?

Mustafa Yusuf:

I think Twitter would be the best place to find me. And I guess that's it. Don't find me anywhere else. It's just it was so easy to use. And it's one place you know,

Jeroen Leenarts:

okay, let's, I'll make sure to link it up in the show notes. What's your Twitter handle?

Mustafa Yusuf:

It's Mufasa from Lanting YCS Mufasa yc.

Jeroen Leenarts:

Okay, so I'll make sure to link it up from the show notes so that people can't miss it. Again, Western Western thanks for your time and talk to you again in the future.

Mustafa Yusuf:

Yes, likewise, have a wonderful week.