254: New and Different
00:00:00
◼
►
Welcome to Under the Radar, a show about independent iOS app development.
00:00:03
◼
►
I'm Marco Arment.
00:00:04
◼
►
And I'm David Smith.
00:00:06
◼
►
Under the Radar is usually not longer than 30 minutes, so let's get started.
00:00:09
◼
►
So congratulations.
00:00:13
◼
►
This is going to be a bit of a weird one because I have made a new app and I'm asking you all
00:00:21
◼
►
not to go find it.
00:00:24
◼
►
Please don't use it.
00:00:25
◼
►
Please don't go searching for it.
00:00:28
◼
►
If you search, you can find it, but please don't because this is an app that is made
00:00:32
◼
►
for about 15 people who live around me.
00:00:38
◼
►
And the reason I made it, I talked last time about just kind of unblocking my mental block
00:00:46
◼
►
and my developer depression by doing a new fun little project.
00:00:50
◼
►
And I did it and it's out there and it's being used by about three people so far and I hope
00:00:54
◼
►
to get about 15 more over the coming weeks.
00:00:58
◼
►
And all it is is an app for people who live on Fire Island who have driving permits in
00:01:04
◼
►
the winter to share reports about beach conditions because it matters when you're driving here.
00:01:10
◼
►
You kind of want to know, like, is the beach passable today or whatever.
00:01:13
◼
►
And it's a very, very specialized thing.
00:01:15
◼
►
And I thought it was interesting to talk about, not because I want anyone to find it because
00:01:19
◼
►
I really don't, really please don't, but because it taught me a bunch of new things and I think
00:01:26
◼
►
there's value there as discussed last time.
00:01:29
◼
►
And also, I thought it was interesting because it is very different from everything else
00:01:35
◼
►
that I have done on iOS so far.
00:01:37
◼
►
It's like extremely different in so many ways.
00:01:41
◼
►
And so first of all, I think it's worth clarifying who are these people that want this app.
00:01:49
◼
►
And it's mostly, again, it's a very small group.
00:01:54
◼
►
The maximum number of people who even can have a driving permit here is something like
00:02:00
◼
►
And it's mostly older people who have been here for a long time or it's contractors who
00:02:06
◼
►
come on and work here during the day in the winter building houses or fixing things up
00:02:10
◼
►
or whatever.
00:02:11
◼
►
And so this is not a technical audience for the most part.
00:02:16
◼
►
It is an older audience for the most part and it is, I mean, not even all iPhone owners.
00:02:21
◼
►
There's a lot of Android people, which I'm not serving at all, frankly, because I don't
00:02:26
◼
►
I don't want to learn just for this, just for 12 people.
00:02:30
◼
►
So anyway, that gives context on what this is.
00:02:34
◼
►
Now the other thing is I have a feature that uses background location and I've mapped out
00:02:40
◼
►
map segments to say, "All right, these are the two main routes people take."
00:02:44
◼
►
And I have route segments and I have geofences at different points throughout them so the
00:02:48
◼
►
app can be woken up in the background and can record automatically whether you're driving
00:02:53
◼
►
on one of the two known route segments and how fast you're able to do it.
00:02:58
◼
►
And then it reports to the server in some super privacy-sensitive, anonymous way with
00:03:04
◼
►
the identifiers that change every 24 hours, like that, "Hey, somebody was able to drive
00:03:08
◼
►
at this speed on this segment of the route at this time."
00:03:12
◼
►
And then it reports to other people with green lines on the map, like, "This route's known
00:03:17
◼
►
to be good right now."
00:03:19
◼
►
And so that's the basis of the app.
00:03:21
◼
►
And there's also things where you can add user reports and comments and everything about,
00:03:24
◼
►
"Hey, the beach is foggy today," or whatever.
00:03:27
◼
►
And this is what the app needs to be for this very small group of people.
00:03:31
◼
►
This is all it needs to be.
00:03:33
◼
►
And it's going to have very, very high value to very few people.
00:03:37
◼
►
Now, the dynamics of appealing to this group, this is so different from Overcast.
00:03:44
◼
►
So first of all, every user matters.
00:03:48
◼
►
Every installation matters because it's such a small, targeted group that I can't have
00:03:54
◼
►
– like, one of the things I did was I maintained iOS 15 compatibility.
00:03:58
◼
►
So even though it's a brand new app, after 16 is out, but I know that some of these people
00:04:03
◼
►
are going to be on older iPhones and iOS 15 is therefore required.
00:04:07
◼
►
And sure enough, I have, I believe, two or three people using it right now who aren't
00:04:13
◼
►
At least one of them I know is on iOS 15 because I helped her install it on her phone.
00:04:17
◼
►
And there was a weird bug with, like, SwiftUI, like, presentation dismissal.
00:04:20
◼
►
I'm like, "That's weird.
00:04:23
◼
►
Is something different?"
00:04:24
◼
►
And I looked.
00:04:25
◼
►
Let me check.
00:04:26
◼
►
Is this on iOS 15?
00:04:27
◼
►
I went and go check.
00:04:28
◼
►
Yup, this is iOS 15.
00:04:30
◼
►
And then I knew I had to go submit an update.
00:04:31
◼
►
And the other thing is that this is kind of a small social network app in the sense that
00:04:36
◼
►
there's a strong network effect.
00:04:37
◼
►
If you are the only person using it, it is not useful to you.
00:04:41
◼
►
We need people using it.
00:04:42
◼
►
And so in addition to having to make sure that I get, like, a few key people on this
00:04:47
◼
►
who, like, drive a lot and everything, I also need to make sure I'm not spreading the word
00:04:52
◼
►
about it within this community too early.
00:04:55
◼
►
Because if I tell everyone up front, "Hey, everyone, go use this right now," and everyone
00:05:01
◼
►
rushes in and tries to use it on day one and sees there's no data there, they will all
00:05:06
◼
►
bounce out and never go back to it.
00:05:09
◼
►
So all these considerations, like, "How do I stage this out?"
00:05:11
◼
►
But it's the same considerations you'd have when building, like, a really big social app,
00:05:17
◼
►
but on a tiny, tiny scale.
00:05:19
◼
►
And it's been this really fun exercise.
00:05:22
◼
►
And again, like, the way I designed the app, you know, it's all SwiftUI, all modern Swift
00:05:28
◼
►
using a lot of Swift async stuff.
00:05:30
◼
►
But, you know, I've never used core location in a meaningful way.
00:05:33
◼
►
I've never used background location and all the permissions therein.
00:05:38
◼
►
Notification permission, like, you know, all this stuff, like, that I either have never
00:05:42
◼
►
used or used very lightly or used very differently in the apps I've made so far.
00:05:47
◼
►
And it's—I use a photo picker.
00:05:49
◼
►
I use the camera picker.
00:05:52
◼
►
All these different, you know, different capabilities that I need for this one app that I've just
00:05:58
◼
►
never used before.
00:06:00
◼
►
And I have—it's been so fun.
00:06:03
◼
►
And it's been, like—it's kind of like, you know, when—if you're into fitness,
00:06:08
◼
►
if you do a workout and you work out some muscle that you've never used before and
00:06:13
◼
►
you're insanely sore for three days afterwards in some weird spot in your body.
00:06:17
◼
►
It's like, "Wow, I have inner thighs?"
00:06:19
◼
►
You know, like, there's, you know, weird things that, you know, most people don't
00:06:23
◼
►
exercise very well.
00:06:24
◼
►
Like, "Oh, my hip flexor is sore.
00:06:26
◼
►
I didn't know I had that until yesterday."
00:06:29
◼
►
It's kind of like that for iOS developers.
00:06:31
◼
►
And I've really enjoyed this process even though, you know, it's not—again, it's
00:06:36
◼
►
not going to be something, "Oh, I use Swift charts even because I made a tied graph?"
00:06:40
◼
►
Like, it's just—I've used so many things in this that either are new that I haven't
00:06:45
◼
►
had a chance to use yet, like some of the Swift async stuff and a lot of Swift UI, or
00:06:50
◼
►
that I've just never had a use for.
00:06:52
◼
►
And like the process of staging it out to people and like the whole reason I had to
00:06:56
◼
►
get it in the app store.
00:06:58
◼
►
The whole reason to do that, this group, because every installation counts, I knew TestFlight
00:07:06
◼
►
was a no-go.
00:07:08
◼
►
Because I thought like, you know, if I give this to a couple of beta testers, they put
00:07:12
◼
►
it on their phone.
00:07:14
◼
►
And these are like people who I want to be using it, you know, driving every day, giving
00:07:17
◼
►
good data to the app.
00:07:19
◼
►
What if the build expires?
00:07:20
◼
►
What if the, you know, like—or what if they replace their phone and restore their phone?
00:07:25
◼
►
Like how hard is it going to be to ever get them to install it again?
00:07:29
◼
►
How hard—you know, it's going to be a mess.
00:07:31
◼
►
And like, you know, I can't deal with that.
00:07:34
◼
►
So I just need to get it just in the app store.
00:07:37
◼
►
And then, you know, just do my best to test it.
00:07:40
◼
►
Sure enough, I had a couple of bugs.
00:07:42
◼
►
I submitted an update, fixed them.
00:07:43
◼
►
I still have more bugs.
00:07:44
◼
►
I'm going to fix them soon too.
00:07:46
◼
►
And it's been so much fun.
00:07:50
◼
►
And it's been a massive distraction but in a really good way because, you know, I've
00:07:55
◼
►
used, you know, from high level things, you know, the APIs I was just talking about, to
00:08:00
◼
►
low level things that I hadn't used before.
00:08:02
◼
►
Like I hadn't used Swift coding, like encodable/decodable.
00:08:06
◼
►
I hadn't used that, like the JSON serialization stuff built in now to the language of the
00:08:10
◼
►
coding keys, enum, and all that stuff.
00:08:11
◼
►
Like there's been so much advancement in that area in the last few years.
00:08:16
◼
►
And now I'm thinking like, you know, I can actually really use this with Overcast and
00:08:21
◼
►
with my other stuff.
00:08:22
◼
►
And, you know, as I'm thinking about how to transition Overcast over to CloudKit for
00:08:26
◼
►
user data and, you know, how to architecturally do that at the low levels, like I'm learning
00:08:32
◼
►
so much stuff.
00:08:34
◼
►
All the async stuff, wow, is the async stuff good.
00:08:39
◼
►
And I still only have a very basic understanding of it but it's really good.
00:08:43
◼
►
The main actor stuff, using SwiftUI for a non-trivial thing here.
00:08:47
◼
►
You know, I mean, well, it's trivial but, you know, I'm using SwiftUI for also like
00:08:52
◼
►
all the permission screens and I didn't use it for the map.
00:08:56
◼
►
I wrapped the map in, you know, the view representable stuff because I didn't know until after I
00:09:02
◼
►
had done all the work that there is a SwiftUI map control now.
00:09:05
◼
►
>> No, you want to wrap it still.
00:09:07
◼
►
Just put your mind at ease.
00:09:09
◼
►
It's not ready yet.
00:09:10
◼
►
>> Okay, thanks.
00:09:11
◼
►
That's good to know.
00:09:12
◼
►
And even the map kit, you know, UI kit map is pretty basic.
00:09:16
◼
►
It doesn't offer a lot of control so that's good to know.
00:09:18
◼
►
But yeah, that's the only bit of UI kit in the app that I've explicitly coded.
00:09:23
◼
►
The rest is SwiftUI.
00:09:25
◼
►
And it is--I've learned so much.
00:09:29
◼
►
I've done so much more SwiftUI now than I ever have before.
00:09:32
◼
►
Mixing SwiftUI with the Swift async stuff is also really fun and I've--my skills have
00:09:40
◼
►
leveled up so much in all these new APIs and new technologies way more than they ever would
00:09:46
◼
►
have just trying to maintain overcast like at a regular pace.
00:09:51
◼
►
And so this has been not only incredibly helpful to a very small number of people in my community,
00:09:57
◼
►
myself included, but also it's just been immensely valuable in my coding, you know, both in skill
00:10:04
◼
►
development and in, you know, mood improvement and motivation and--what's the--anyway.
00:10:10
◼
►
>> I mean, yeah, I think the reality is it is as someone who has talked to--
00:10:18
◼
►
>> Inertia, that's what I was thinking of.
00:10:22
◼
►
>> It's early.
00:10:24
◼
►
But as someone who has been talking to you every two weeks for, I don't know, for years,
00:10:28
◼
►
but more specifically than it'll be like the last several months, it is--there is a tangible
00:10:34
◼
►
change in the way you are talking about your work as a result of this project that is meaningful
00:10:40
◼
►
and awesome, that is really just cool to hear that, you know, you were working on overcast
00:10:47
◼
►
previously but I didn't get a--you know, you very rarely got the vibe that you were excited
00:10:51
◼
►
about it, that things were going awesome, that you were learning, that you felt like
00:10:54
◼
►
you were, like, using your ability as a developer in a way that is, like, awesome and tangible
00:11:00
◼
►
and, you know, to its greatest degree, that has been missing.
00:11:04
◼
►
And sometimes it does.
00:11:05
◼
►
We talked about this last week.
00:11:06
◼
►
Sometimes it's there, sometimes it's not, but it's really kind of a bummer when it's
00:11:10
◼
►
missing and it's really cool to hear that you found a way to unlock that.
00:11:15
◼
►
And whether it's an app that's used by 15 people or if it's an app that's used by no
00:11:19
◼
►
people, like, that doesn't--that is far less important in many ways than getting that process
00:11:25
◼
►
flowing again, getting--you know, enriching yourself and your ability to make things and
00:11:31
◼
►
to enjoy that process, to get out of the funk and, like, get back on the road and be able
00:11:36
◼
►
to do things.
00:11:37
◼
►
And I think that is so exciting, just--both--just, you know, as a friend of yours, to hear that
00:11:43
◼
►
is just super cool and I love it and it's exciting.
00:11:47
◼
►
And I think, you know, professionally, I think it's also just really cool as well that you
00:11:51
◼
►
found a way to get there and, you know, it's really, I think, one of the challenges of
00:11:57
◼
►
something like Overcast being as sort of established as it is.
00:12:03
◼
►
You know, it reminds me if I--if, you know, if you were working at Apple, say, like, we
00:12:09
◼
►
hear these stories of these developers where it's this tricky thing that after a certain,
00:12:12
◼
►
you know, the people who originally made whatever the big fancy new thing is, at some point
00:12:16
◼
►
get tired and sort of stuck maintaining it and retention becomes really difficult.
00:12:23
◼
►
Or you have to invent new projects, you have to make big things for them to, you know,
00:12:26
◼
►
new exciting projects for them to work on because if you're a, you know, a sharp smart
00:12:31
◼
►
developer, you want to be learning, you want to be solving interesting problems, you want
00:12:34
◼
►
to be solving new problems.
00:12:35
◼
►
Even if they're not like these big earth-changing things, like, you now know how to do maps,
00:12:40
◼
►
you know, how to do locations and do stuff that isn't, you know, audio and RSS parsing,
00:12:45
◼
►
which is like the crux of Overcast.
00:12:47
◼
►
These are new things.
00:12:49
◼
►
And new just fundamentally is exciting and is interesting and is great.
00:12:53
◼
►
I mean, this is, you know, my--in some places, like, my whole development story is being
00:12:59
◼
►
maybe too far down this road where I just am constantly making new things.
00:13:04
◼
►
And I've gotten a little bit out of that, you know, early in my career.
00:13:06
◼
►
I would just keep--I kept making--you know, I'd make like 10 apps, 20 apps a year, and
00:13:11
◼
►
it got a little out of hand.
00:13:13
◼
►
But, you know, I've settled down a bit, but now I just like, you know, I'm building apps
00:13:16
◼
►
inside of other apps instead, which, you know, is a different approach.
00:13:22
◼
►
It's the next logical progression.
00:13:25
◼
►
That's like how I'm solving this problem is it's like I'm just going to build new tools
00:13:28
◼
►
for Widgetsmith or, you know, these types of things where I'm going down directions that
00:13:33
◼
►
aren't necessarily core to the primary experience but make it exciting, interesting, help me
00:13:38
◼
►
learn, give me an opportunity to try something, et cetera.
00:13:41
◼
►
And it's just really cool that you found that thing.
00:13:44
◼
►
And I'm excited to see what this now means for Overcast.
00:13:49
◼
►
That you know, there is--from my own experience, I know that there is--there's never wasted
00:13:54
◼
►
learning maybe is a good way to say it.
00:13:56
◼
►
Like the learning that you have from this is going to find a home in your main projects,
00:14:02
◼
►
in your--in any work you do in the future, you now have rather, you know, as before you
00:14:06
◼
►
may have only had, you know, like the old thing where I'd say if all you have is a hammer,
00:14:11
◼
►
everything's--everything's a nail.
00:14:12
◼
►
It's like now you have both a hammer and a screwdriver.
00:14:15
◼
►
And so now you can choose which is the better solution for this.
00:14:18
◼
►
Try, you know, stick with the Swift Async stuff or should I go or just keep with what
00:14:22
◼
►
I'm doing with, you know, Grand Central Dispatch or whatever it is.
00:14:25
◼
►
Like you have choices and those choices are sort of powerful in terms of what it allows
00:14:32
◼
►
And so like that's just cool.
00:14:33
◼
►
And that's such a fun place to find yourself.
00:14:37
◼
►
And I think it's--one of those things that I can sometimes hear, you know, sort of diminishing
00:14:41
◼
►
that's like, "Oh, it's only for 15 people."
00:14:43
◼
►
It's like that is--and from my perspective, maybe it's for you, someone who's driving
00:14:48
◼
►
it, that's the part that's, you know, there's 15 people who you want on it.
00:14:52
◼
►
But it's like for me, it's like if no one used this, well, that would be disappointing
00:14:55
◼
►
in some ways.
00:14:56
◼
►
It would still be super exciting that you went through that process of file a new project,
00:15:00
◼
►
submit to the App Store, went through the whole thing from beginning to end and had
00:15:04
◼
►
success and like I love success.
00:15:07
◼
►
>> NICK WALSH.
00:15:09
◼
►
That's a good--yeah.
00:15:11
◼
►
Like and it's--and you know, and so much because I hit file a new project so infrequently and
00:15:17
◼
►
because I submit them to the App Store even less frequently, like there are just parts
00:15:21
◼
►
of the process that I had either totally forgotten about or that have changed since I last did
00:15:27
◼
►
it because it was so many years ago and that you don't have to do.
00:15:31
◼
►
The process of submitting a new app to the App Store, you're no stranger to it.
00:15:35
◼
►
But you know, because I hadn't done it really in years, you know, I was amazed how many
00:15:41
◼
►
steps there now are to do it.
00:15:43
◼
►
You have to cover things like the whole privacy checklist.
00:15:46
◼
►
I had to, in my case, make a video to show app review how different parts of my app worked
00:15:52
◼
►
because they couldn't test certain location-based things that require you to be here or that
00:15:59
◼
►
are only useful if you're here.
00:16:01
◼
►
And there are so many little tricks and gotchas and metadata and you know, pricing and availability.
00:16:08
◼
►
Like there's so--the privacy policy, the privacy survey, so much of that stuff you have to
00:16:14
◼
►
And I think largely that's a good thing.
00:16:15
◼
►
You know, most of those are there for good reasons.
00:16:19
◼
►
But it was quite a process.
00:16:21
◼
►
I was also--I was very pleasantly surprised.
00:16:23
◼
►
You know, Overcast started, I think it was--back then it was still the Shoemaker era of the
00:16:32
◼
►
App Store with that person who was running it who I think was probably not very good
00:16:37
◼
►
for developers.
00:16:39
◼
►
And that was back when review times were still like, you know, three to seven days.
00:16:46
◼
►
And you know, over time that shrunk down to--for Overcast to about a day.
00:16:52
◼
►
And--but meanwhile Overcast has a watch app, an iPad app, a widget and CarPlay.
00:16:58
◼
►
And so there's all these different extensions and especially CarPlay that has to be tested.
00:17:02
◼
►
And I would imagine that gets some scrutiny.
00:17:04
◼
►
There's in-app purchase.
00:17:05
◼
►
There's an auto renewing subscription for in-app purchase.
00:17:07
◼
►
So Overcast updates, you know, they take about a day maybe to get through, maybe 36 hours
00:17:11
◼
►
to get through app review.
00:17:13
◼
►
And this app--I did a bug--you know, the first one I had to give the video that took a bit
00:17:19
◼
►
But I did a bug fix update and it took--I literally--I submitted to the App Store and
00:17:24
◼
►
I took a dog walk and I came back and it had been approved within 15 minutes.
00:17:29
◼
►
It's amazing.
00:17:30
◼
►
And so it's like, oh, this is what it's like to have a new app that doesn't do that much,
00:17:37
◼
►
that has no purchases, no money anywhere.
00:17:42
◼
►
So that I was very pleased to see like, wow, like I thought Overcast was getting approved
00:17:47
◼
►
quickly by being 36 hours and this is approved in less than 36 minutes.
00:17:53
◼
►
That's pretty good.
00:17:56
◼
►
So yeah, I'm--this has been a wonderful project.
00:18:00
◼
►
You know, if you're looking for something new, we are brought to you this week by Volley
00:18:06
◼
►
Volley Games is now hiring a lead iOS developer.
00:18:09
◼
►
Volley makes the most popular games on Amazon Alexa and Google Home.
00:18:13
◼
►
Now they're bringing their award-winning voice-controlled gaming to iOS.
00:18:17
◼
►
Top Volley Games include The Price is Right, Jeopardy, and Song Quiz, a name-that-too music
00:18:21
◼
►
tribute game with millions of users.
00:18:24
◼
►
This is where you come in.
00:18:25
◼
►
Volley is hiring a lead developer to bring its top games to iOS.
00:18:29
◼
►
Are you a creative and knowledgeable developer who wants to work on something new, different,
00:18:32
◼
►
and challenging?
00:18:33
◼
►
Hey, that sounds familiar.
00:18:34
◼
►
Have you ever thought about voice-controlled games on your phone?
00:18:38
◼
►
Volley's iOS app is built in Swift and takes advantage of cutting-edge technologies, including
00:18:42
◼
►
real-time speech recognition, video chat, and a cross-platform model layer.
00:18:46
◼
►
They're also adding ARKit features soon for even more fun live gameplay with your friends.
00:18:52
◼
►
Volley offers top-tier compensation, benefits, and unlimited in-office Super Smash Brothers.
00:18:58
◼
►
This lead iOS developer role can be based out of their San Francisco office or hybrid
00:19:03
◼
►
So essentially, wherever you're based, this role could work for you.
00:19:06
◼
►
So if you're interested in working on the cutting edge of voice interfaces and gaming
00:19:09
◼
►
on iOS, please apply now at volleygames.com/radar.
00:19:15
◼
►
That's Volley, V-O-L-L-E-Y, games.com/radar.
00:19:20
◼
►
As Volley's newest lead iOS developer, you'll be working on games with millions of users
00:19:23
◼
►
on day one and building the software and tools to bring them to millions more.
00:19:28
◼
►
Go there now, volleygames.com/radar, to learn more about becoming Volley's lead iOS game
00:19:34
◼
►
Thanks to Volley Games for their support of this show and Relay FM.
00:19:36
◼
►
Yeah, and it's, I think, oh yeah, so it's like starting something new is so important,
00:19:45
◼
►
Maybe it's trying to think of like where to sort of wrap the, or make your experience,
00:19:50
◼
►
which is so wonderful and so encouraging, to make it more generalizable.
00:19:54
◼
►
And I think, I'm just so stuck on the value of new, of trying something that's different
00:20:02
◼
►
than what you've done before, finding a way to do it, a time to do it.
00:20:06
◼
►
You know, it's like the importance of having a side project if you work a nine to five,
00:20:11
◼
►
that it could be a useful thing that is just, you know, there is something, just time and
00:20:16
◼
►
time again I have found, that expanding your ability in ways that are slightly uncomfortable
00:20:22
◼
►
to start but become comfortable as you do them is such an important part in having a
00:20:28
◼
►
sort of a long, meaningful career in development.
00:20:31
◼
►
I'm sure there are some people who enjoy just being an expert at one thing and being,
00:20:36
◼
►
you know, it's like you could imagine the sort of canonical, like the COBOL developer
00:20:40
◼
►
who's been working on some big financial mainframe for their entire career and that's
00:20:44
◼
►
what they do, they're an expert and they're super kind of like in there and they know
00:20:49
◼
►
what they're doing.
00:20:51
◼
►
If that's you, you know, rock out.
00:20:52
◼
►
It's very unlikely you're a listener down to the radar, I would say.
00:20:56
◼
►
If you're someone who wants to make things, who is excited about being independent or
00:21:01
◼
►
about, you know, sort of just the creative side of software development, find something,
00:21:06
◼
►
always be finding something new to make.
00:21:08
◼
►
If you feel like you're doing the same thing over and over again, I think it's such an
00:21:13
◼
►
important thing to take a step back and say, "What is something that I would be excited
00:21:18
◼
►
What is something that would be cool to do?"
00:21:21
◼
►
Whether it has an audience like your thing where even if it's a small audience, there
00:21:25
◼
►
is some audience, some community, something that you care about, or even if it isn't,
00:21:30
◼
►
like, just something new.
00:21:32
◼
►
I've written many apps that never got shipped.
00:21:34
◼
►
Some of them I use, some of them I don't.
00:21:36
◼
►
Some of them are just things to explore.
00:21:39
◼
►
Some of them are ideas I have that you go halfway down and you realize it's a bad idea,
00:21:44
◼
►
but the process of getting from zero to bad idea is sometimes just as instructive as from
00:21:48
◼
►
getting from zero to good idea.
00:21:51
◼
►
Like find something to do because inevitably that journey, it will make you better on your
00:21:57
◼
►
next journey.
00:21:58
◼
►
It's like you're just kind of continuing to, I almost think of when you're playing an RPG
00:22:03
◼
►
or something like that, where you're in a game where it's like, as you add experience points
00:22:09
◼
►
and increase your equipment and all of the capabilities of your character, that's you
00:22:14
◼
►
just in real life.
00:22:18
◼
►
If you just stay in the home zone of the game and never go out on adventures, you'll never
00:22:24
◼
►
You'll never find new equipment.
00:22:26
◼
►
You'll never find new experience points.
00:22:27
◼
►
You'll never learn new skills, etc.
00:22:29
◼
►
That is true in the game, but it's also very true in life.
00:22:34
◼
►
I feel like it's so easy to, if you are, really, my position with Overcast is very fortunate.
00:22:42
◼
►
I'm very fortunate to have this app that is my main business and income that has sustained
00:22:49
◼
►
itself for all these years.
00:22:51
◼
►
I made it in 2014.
00:22:53
◼
►
So it's been a while.
00:22:55
◼
►
It's been eight years going.
00:22:59
◼
►
Because I've been doing this, and it basically provides infinite work, anytime I want to
00:23:06
◼
►
spend programming, there is something that I should be doing or could be doing for Overcast
00:23:10
◼
►
that would be beneficial for it.
00:23:13
◼
►
It can absorb an infinite amount of work and time.
00:23:17
◼
►
Because of that, and it's justified.
00:23:22
◼
►
It makes good enough money that it's justified, and I feel like I should be doing that.
00:23:25
◼
►
In fact, I feel anti-motivated, demotivated to do anything else.
00:23:30
◼
►
Because any time I'm spending doing anything else, I'm feeling like I really should be
00:23:33
◼
►
working on Overcast instead.
00:23:35
◼
►
But it's so easy if you're in that pattern, which again, it's a fortunate position to
00:23:39
◼
►
be in in general, it's so easy to get stuck and to then never explore anything new.
00:23:44
◼
►
To never look at any APIs that aren't relevant to your app.
00:23:49
◼
►
But to mainly stay in large code-based maintenance mode and not new, clean start mode.
00:23:57
◼
►
And as we talked about the last couple episodes, that can be really a rut that you get stuck
00:24:03
◼
►
And it's very hard to get out of that.
00:24:06
◼
►
And when you do have some kind of side idea or side project, that can be so, so valuable
00:24:13
◼
►
in not only professional development, but in just keeping your interest and keeping
00:24:18
◼
►
those juices flowing.
00:24:19
◼
►
And that's what I found with this.
00:24:21
◼
►
And even though, again, please don't go find it, because it's not going to be useful to
00:24:26
◼
►
And if everybody goes and pokes around, it will be bad.
00:24:27
◼
►
So please don't do that.
00:24:28
◼
►
But this is not about this app.
00:24:31
◼
►
This is about, it's really great to have side projects and to try new things.
00:24:37
◼
►
And it really does help tremendously.
00:24:41
◼
►
And now, I'm going back to Overcast now with just a huge amount of inertia and motivation
00:24:48
◼
►
and a huge list of ideas on how to take it forward, how to deal with this massive legacy
00:24:54
◼
►
code base, what directions to go.
00:24:57
◼
►
And I'm also now just way better at things like SwiftUI.
00:25:04
◼
►
It's very hard for me to experiment much with SwiftUI and Overcast, because not only is
00:25:09
◼
►
it a giant established code base that has almost no SwiftUI anywhere in it, but it's
00:25:14
◼
►
also much higher stakes that if I mess something up, that's going to be seen by way more people.
00:25:19
◼
►
And it could even get bad press or bad user reviews on my main app that matters a lot
00:25:26
◼
►
And so the stakes are too high there to do a lot of experimentation.
00:25:30
◼
►
Whereas when I'm doing side projects or things just for me or little exercises, I can do
00:25:37
◼
►
whatever I want and the stakes are much lower.
00:25:40
◼
►
And I can use that as a place to safely learn outside of the spotlight and outside of user
00:25:45
◼
►
reviews that matter.
00:25:47
◼
►
And I can just learn and experiment and try different directions.
00:25:52
◼
►
And I can have embarrassing bugs.
00:25:55
◼
►
And I can just quietly fix them and not have to deal with it, not have to deal with the
00:26:00
◼
►
fallout from lots and lots of people.
00:26:03
◼
►
So that's also very good.
00:26:06
◼
►
And again, it's a fortunate place to be and where you have that many people looking
00:26:08
◼
►
at your work, but it's important to keep that balance.
00:26:13
◼
►
And even if you work for a company, you probably have the same issues of you have much higher
00:26:19
◼
►
stakes with your apps.
00:26:22
◼
►
It makes it hard to experiment and hard to try new things.
00:26:26
◼
►
And I think it speaks a lot to, I know in our last episode we were talking a lot about
00:26:31
◼
►
the self-care mental health aspect of this.
00:26:33
◼
►
And I think that lowering of stakes is such an important part, I think, in having a well-structured
00:26:44
◼
►
self-view in terms of yourself as a developer.
00:26:47
◼
►
That if everything you do is super high stakes, super dangerous, has that sense of stress
00:26:54
◼
►
and danger, that is fundamentally going to wear on you.
00:26:58
◼
►
It's going to sap the joy and excitement and passion from your work, and it's adding
00:27:08
◼
►
It's like if every time I walked down the stairs in my house, there was no handrail,
00:27:13
◼
►
and so suddenly it's a little bit dangerous, a little bit scary.
00:27:16
◼
►
It's like, "I'm not going to spend as much time going up and down the stairs."
00:27:20
◼
►
And I think there's a similar aspect that it just slowly wears on you, and then at some
00:27:25
◼
►
point you realize, "Wow, I am stuck."
00:27:28
◼
►
That's the experience that I have had many times.
00:27:32
◼
►
Especially when I found when, as my apps had some amount of traction, and suddenly you
00:27:37
◼
►
start to think of each of the downloads as a person, and you think about if those people
00:27:42
◼
►
were in an arena, and I was standing in the middle, and I was about to give each of those
00:27:46
◼
►
people something.
00:27:48
◼
►
In some ways that's what's happening when I'm shipping an app update, and it's like
00:27:52
◼
►
I'm handing this thing out to thousands of people, and I hope it works.
00:27:57
◼
►
That could create this stress that is not nice, and probably best not to think about
00:28:02
◼
►
in a lot of ways.
00:28:03
◼
►
And so I think there is definitely something about finding ways to have low-stakes work
00:28:09
◼
►
to improve yourself and to balance out a bit of the self-care and taking care of yourself
00:28:15
◼
►
so that you can have opportunities to do the work that you enjoy.
00:28:20
◼
►
The reason that both of us, I think, got into development is because we enjoy it.
00:28:24
◼
►
I'm fortunate to have some skill and aptitude in it, but it is certainly something that
00:28:30
◼
►
I can enjoy, and that there are parts of it that are actually things that I enjoy doing,
00:28:35
◼
►
that I'm not sad that I'm a developer.
00:28:38
◼
►
But that's certainly not the case all the time.
00:28:40
◼
►
And I think if I'm not careful, that can become the case most of the time, that I'm
00:28:44
◼
►
not enjoying it.
00:28:45
◼
►
But if I take the appropriate steps as I'm going, I'm able to find that hole.
00:28:49
◼
►
I'm just so glad you found it, and it's very cool.
00:28:52
◼
►
I love the app.
00:28:54
◼
►
I went and looked for it.
00:28:56
◼
►
I think I have permission, even though, if I'm honest, I've never been to Fire Island.
00:29:01
◼
►
But I have it there, and I'll, of course, make sure that I'll rate and review, give
00:29:04
◼
►
it five stars, just because I know it's awesome.
00:29:10
◼
►
And thanks to everyone else out there.
00:29:13
◼
►
We've talked a little bit about these motivation challenges and self-care needs for developers
00:29:18
◼
►
over the last couple of weeks, and we've heard from a few people in great support of
00:29:24
◼
►
And so I wanted to thank everyone out there as well for knowing that you aren't alone
00:29:28
◼
►
and for telling us that we aren't alone.
00:29:29
◼
►
So thank you for that.
00:29:31
◼
►
And yeah, thanks for listening, everybody, and we'll talk to you in two weeks.
00:29:35
◼
►
[BLANK_AUDIO]