Read the transcript
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.