Under the Radar

257: Working in Public


00:00:00   Welcome to Under the Radar, a show about independent iOS app development.

00:00:04   I'm Marco Arment.

00:00:05   And I'm David Smith. Under the Radar is usually not longer than 30 minutes, so let's get started.

00:00:10   So Dave, you and I are both much more in public this past week than we usually are, even for podcasters, which is saying a lot.

00:00:18   Yeah, yeah, no, and usually I would say we're relatively quiet.

00:00:22   Which is a couple of quiet, independent engineers, just heads down on our desk by ourselves doing our work, and not so much this last week.

00:00:30   Yeah, so you have been doing this design notes diary series of blog posts on your site,

00:00:37   and it's all about all the different design decisions that you're facing and trying and different experiments you're doing with Podometer++, and that's really cool.

00:00:46   And then I've been, I just released my new database layer as open source, and again, disclaimer here, nobody should use this yet.

00:00:56   It's super, super early, and it might change in very large ways, so don't build anything against this yet.

00:01:00   But anyway, so I just released my open source thing called Blackbird, which is basically my take on a SQLite layer for Swift.

00:01:07   And so we've both been kind of in public in ways that we normally aren't, you know, both as just people in general usually aren't this public about their work,

00:01:16   and then I think there's also a layer here that you and I work alone, and most people never see these processes.

00:01:26   Most people never see the code we write, and most people don't see the design iterations we go through while we're building things,

00:01:32   and the different considerations and experiments we do, and how we arrive at the final setup or the final features or the final designs.

00:01:41   Almost all of this work is usually behind the scenes and only exists in our heads and our computers.

00:01:47   And so I think it's really interesting that we've both, coincidentally at the same time, gone public with parts of our work that are usually private when you're an independent developer.

00:01:58   Yeah, yeah. And I don't know exactly why. I'm sure it's not a pure coincidence, but there's definitely something to why we both started doing it.

00:02:06   But for me, it's been really interesting to, yeah, there is something different when you're making something with an expectation that someone else will look at it.

00:02:18   Just fundamentally. It's the kind of way that if you have a boss or a coworker or someone, and you expect someone else is going to look at something.

00:02:29   Or even, I mean, it's like the way you tidy up your house before guests come over.

00:02:33   Oh yeah.

00:02:35   You just behave differently if you expect that someone else is going to see what it is that you're doing, what you're working on, whatever that is.

00:02:44   And for me, and for what I've started to design notes, it was this interesting thought of, part of it got started with all of the drama that I have no interest in getting into on the show, but about Twitter and where that's going.

00:02:55   And a lot of the community that I have there, and for the last 13 years, it's been essentially my office workplace.

00:03:05   That's where I would interact with, talk to, and be with my coworkers, for lack of a better word, even though they're not really my coworkers in a traditional sense.

00:03:14   And then that all started feeling like it was going away, or who knows what the uncertainty there made me really start to think, what is this, what value, what purpose is this community doing to me?

00:03:27   And there's certainly a part of it that is the human connection part of that, that is helpful and interesting and somewhat unreplaceable.

00:03:36   You can't just pretend, I can't create a person and actually pretend that they're real.

00:03:41   But I was realizing that a lot of the benefit I get from posting things on Twitter or talking about things is there is something in capturing something, writing it down, condensing notions, ideas, things that I have.

00:03:56   In the case of Twitter, it was turning a vague idea into 280 characters that clarifies and crystallizes and improves that idea for myself.

00:04:07   And especially both because someone else is going to see it, so there's a certain amount of ego or whatever, of ego is into that and making sure that it's a good, thoughtful, clearly thought through idea.

00:04:19   And then some of it is just through that process. And it was just interesting, I was like, you know, I think I'd be really curious to see if I could get a lot of that same value by writing down what it is I'm doing during the day.

00:04:33   It doesn't take that much extra time because I'm doing it anyway. I'm not sitting down to write a blog post. I'm just happening to take notes, essentially, while I work and doing it in a structured way.

00:04:42   And I'm about a week into it and it's been really interesting to do this with the expectation that I, like the only reason I publish it is because if I don't publish it, then I don't have that external accountability and slight pressure.

00:04:55   But it's not really for an audience. Like if people read these, that's great. Like, sure, I hope maybe it's useful, maybe it's interesting. I have no idea.

00:05:04   But my own value I get from making it public, by making it something that I put into it, has been really interesting because I'm thinking through design ideas and having a record of them as I go.

00:05:15   And so far, it's been really cool. And it's just, who knows, it's experimental, but it reminds me of the concept of like rubber duck debugging, where you have put a rubber duck on your desk and you explain the problem you're having when you're debugging something to the rubber duck in the process of having to explain it.

00:05:32   It's a real thing. It's like a whole Wikipedia page and everything.

00:05:35   I've never heard of this.

00:05:36   There's a Wikipedia page and everything for this rubber duck debugging. But it's the concept that, I think it was from like one of the old like pragmatic programmers books.

00:05:43   But anyway, it's that concept that if you have to explain something, you will very often find issues with it or problems with it that are hard to capture if you're just looking at the problem and, you know, just sort of going through it in kind of that more direct way.

00:05:57   It's because you have to come at it from another direction. And so it's essentially I'm rubber duck debugging my design process by talking through all the things that I'm doing and why I'm doing them.

00:06:06   And then, you know, I come back and look at it like, huh, that's interesting.

00:06:09   And I'm, you know, it's just it's been a very interesting process of trying to engage a different part of my brain that an indie usually doesn't get to because I just am quietly in my room doing my work.

00:06:21   And I feel like it's been so far, it's been interesting to see the things that I'm missing out as a result.

00:06:26   That's really interesting. Yeah. I mean, because, you know, obviously, you know, I think one way to to broaden the rubber duck idea is like, you know, you I've always heard that one of the best ways to make sure you understand something is try to teach it to somebody else.

00:06:39   Because teaching really requires you to know way more of something than than you might initially think if you haven't tried it.

00:06:47   And if there's any like gaps or hand waviness about your knowledge that usually comes up if you try to teach someone else, especially if they start asking questions, you're like, I actually don't know why we do it that way or whatever, or I'm not sure why it works that way.

00:07:02   So, yeah, so I think overall, like, you know, one of the biggest challenges of any development is that you don't have that water cooler, you don't have that, you know, the lunch with your co workers, you can casually discuss things, and you don't usually have people working on your code with you or looking at your code.

00:07:21   And so it can be, you know, not only is it like, you know, kind of personally, a difficult thing, sometimes you can just feel alone, which that's, that's its own issue right there. And that's, that's a major issue. And usually, you know, you have to have some kind of outlet for that, whether that's, you know, online social network stuff, or, you know, private private chat groups, or different, like, you know, local groups of, you know, whether it's a co working space, or, you know, some kind of, you know, local developers, you know, group kind of thing like that, you know, some cities have that kind of stuff.

00:07:50   Some cities have that kind of stuff.

00:07:52   So that can solve a lot of the social angle,

00:07:55   but a lot of the coding angle, or looking at your code,

00:07:59   or having other people evaluate it or suggest it

00:08:03   or point out ways you can do things better,

00:08:05   that's something that's really hard to get

00:08:07   as an indie in general.

00:08:09   And there's a lot of value when you work in a group,

00:08:12   on a team or in a big company, there's a lot of value

00:08:15   in some of the overhead that comes with that,

00:08:18   whether it's code review or other people performing QA

00:08:23   on your code for you, or test processes,

00:08:26   different strategies, pair programming,

00:08:29   there's all sorts of ways where basically other people

00:08:32   can have input and can perform QA in some way on your code,

00:08:37   and vice versa, and you can see their code

00:08:39   and you can learn from other people's code.

00:08:41   And in the indie world, your only options for that

00:08:46   in the indie world usually are open source,

00:08:50   or I guess there's, maybe there's other stuff

00:08:52   I'm not thinking of, but that's for the most part,

00:08:54   you get a lot of that from open source.

00:08:56   And the value of open source stuff is partially

00:08:59   that if you need to do something real quick

00:09:01   and you can find a library to do it,

00:09:03   well there you have an option to do it.

00:09:05   That's probably most of the value,

00:09:06   but to me a huge part of the value in open source

00:09:09   is seeing how other people solve similar problems

00:09:12   that I face, because that's what I don't have

00:09:15   by not working on a team.

00:09:16   I can't look at other people's code and say,

00:09:18   oh that's a good idea, I should be doing things that way,

00:09:21   or wow, I never would have thought about that technique

00:09:24   or that pattern, or even like wow,

00:09:27   I didn't even know about that API existing,

00:09:30   there's a lot of that when I see other people's code.

00:09:32   And so I don't usually get a lot of that,

00:09:36   and so for me, my development, as much as I love it,

00:09:40   it does feel very lonely, and I love a lot about that,

00:09:45   but that is a factor that, it's hard to get past that

00:09:49   sometimes, where you feel like, well, here I am,

00:09:52   I'm facing this problem and I'm totally alone in it,

00:09:54   and if I can't figure it out,

00:09:56   it's just not gonna get solved.

00:09:58   Or I'm gonna try it my one way,

00:10:02   and that's gonna be how it goes,

00:10:04   because no one's gonna see it

00:10:06   and no one's gonna tell me otherwise,

00:10:07   and so I hope I'm doing this a good way that will work

00:10:11   and doesn't have any massive pitfalls I'm not aware of.

00:10:14   So with open source stuff, that's kind of flipped

00:10:16   on its head, and part of the reason why

00:10:19   I wanted to do Blackbird as open source

00:10:23   is in part because it's replacing FC model,

00:10:26   which is my really old Objective-C version

00:10:28   of the same kind of idea, a SQLite model layer,

00:10:31   and I'm fully aware, there's lots of things that do this,

00:10:34   I don't need to write my own libraries,

00:10:36   there's lots of libraries that do the same thing,

00:10:38   I like writing my own libraries,

00:10:40   because then I know how everything works

00:10:42   and it makes me a better programmer.

00:10:44   So, and I can customize them to be exactly what I need

00:10:47   and prioritize exactly what I wanna prioritize.

00:10:51   But anyway, so FC model was open source,

00:10:54   and it never had that many users,

00:10:55   I mean, I think I would be surprised

00:10:58   if there's more than 10 apps that ever shipped

00:11:00   that used FC model, it's a very small number of users.

00:11:04   However, that small number of users that it had

00:11:08   was actually valuable to me, because I actually did get

00:11:11   a couple of nice bug fix contributions

00:11:15   and little enhancement requests from people over the years,

00:11:19   and again, it's a very small number,

00:11:21   maybe, probably fewer than 10 total

00:11:24   of even any kind of contribution or bug report,

00:11:27   but those were valuable to me.

00:11:29   And so I wanted to do the same thing with Blackbird

00:11:32   in part to get the value to me,

00:11:34   and in part to try to help other people,

00:11:37   to say, okay, look, I don't know

00:11:39   if this is gonna be helpful to people,

00:11:40   I don't know if I'm doing anything in a novel way,

00:11:42   I didn't actually look at most of the other

00:11:44   Swift or SQLite Swift wrappers,

00:11:48   I didn't really look at them,

00:11:49   I looked at a couple to find out,

00:11:51   how do you do codable compliance and stuff like that,

00:11:54   that's about it, the rest of it I kinda did on my own

00:11:56   with my knowledge of SQLite, and trying to do things,

00:11:59   the modern Swift async and ascendable and codable

00:12:03   and actor-based everything, everything super modern.

00:12:06   And part of that was to teach me

00:12:10   how to use all that modern stuff.

00:12:12   With this, I have taught myself so many new

00:12:16   either APIs or techniques or tools,

00:12:19   this is the first time I've ever used a Swift package,

00:12:21   this is the first time I've ever used DocC

00:12:23   and all the built-in documentation features,

00:12:25   first time I've ever used any kind of Swift unit testing,

00:12:28   the only other unit tests I ever did

00:12:30   were for FC model back forever going objective C.

00:12:33   First time I've used actors, first time I've used sendable,

00:12:36   like there's, and first time I've built

00:12:37   a Swift UI property wrapper, like there's so much here

00:12:41   that this was my first time ever using,

00:12:42   and it forced me to learn a lot

00:12:45   about all these different tools and APIs and techniques,

00:12:49   and I'm still in my early days with all this stuff,

00:12:51   obviously, I just started using them,

00:12:52   you know, I'm still a noob,

00:12:54   but I'm really happy I was forced to do this,

00:12:56   and a lot of that work I would not have been forced to do

00:13:01   if I was just writing it for myself in private

00:13:03   and didn't open source it,

00:13:04   like I probably would never have written the documentation,

00:13:07   I wouldn't have nearly as many unit tests,

00:13:10   I wouldn't have, already, like our friend Guy English

00:13:13   already contributed a performance counter thing

00:13:15   using OS log and that whole system,

00:13:18   so that you can see like cool graphs and instruments

00:13:20   about query performance and stuff,

00:13:22   like I didn't even, I've never used OS log,

00:13:24   I would never have known how to do that,

00:13:25   and I would never have thought to do that,

00:13:27   and so, and then someone else pointed out

00:13:30   the new sendable warnings and how to enable those,

00:13:34   all the Swift concurrency warnings,

00:13:35   and so I enabled those and built it and got my 88 warnings,

00:13:39   and then slowly, yesterday, worked through them all

00:13:41   and slowly made it more sendable compatible

00:13:44   for future concurrency stuff,

00:13:46   and that's gonna save me time in the future

00:13:47   when all that stuff becomes more prominent in the language,

00:13:49   and so, and not to mention the fact

00:13:51   that it might save me from some concurrency bugs,

00:13:53   which are really hard to usually track down.

00:13:55   So all of that, I would not have polished it to that level,

00:14:00   I would not have documented it,

00:14:01   I would not have tested it to that level,

00:14:03   like all of that happened because I was doing it in public,

00:14:06   because I had an audience looking at me,

00:14:08   and even if that audience is gonna be 10 people ever,

00:14:11   like that's still an audience,

00:14:13   and because of that, as you were saying,

00:14:16   when you know someone is watching,

00:14:18   you do things differently,

00:14:19   and not have any kind of sinister thing,

00:14:21   just you hold yourself to a higher standard

00:14:23   when other people are watching,

00:14:24   and so I'm totally doing that here,

00:14:26   and I'm not too interested in doing that

00:14:29   with a lot of code I write,

00:14:30   but something like this,

00:14:32   where it's a small, isolated unit of my code, of my apps,

00:14:37   it is more broadly applicable than most of what I write,

00:14:40   like this could be useful to other people,

00:14:42   whereas most of what I write

00:14:43   is not gonna be useful to other people except my app,

00:14:45   and it's so important, it's so foundational,

00:14:50   that I really wanna make sure I'm holding myself

00:14:52   to the highest standards with this particular package,

00:14:54   because if this has any bugs in it,

00:14:57   then the whole app is gonna be on shaky ground,

00:15:01   so I'm really happy with having done this,

00:15:04   and I think it really has quite a lot of benefit.

00:15:07   We are brought to you this episode by Setapp.

00:15:10   There's an app for everything these days.

00:15:12   Some are great, others not so much,

00:15:14   so how do you quickly find the right app for you?

00:15:17   Setapp is a great way to discover apps

00:15:19   for every professional with a Mac and iPhone.

00:15:22   It has 240 plus apps,

00:15:24   all available with a single subscription.

00:15:26   From coding to design to everyday chores,

00:15:28   such as decluttering your menu bar

00:15:30   or cleaning up your storage,

00:15:31   Setapp has top tier software to keep at hand.

00:15:35   Now imagine what you could do with 240 high quality apps

00:15:39   all packed into one subscription.

00:15:40   Whether you need to develop, design, or create,

00:15:42   there's an app for almost any task.

00:15:44   You don't need to look in tons of places

00:15:45   to find what you need.

00:15:47   With Setapp, you can think about your tasks you have to do,

00:15:49   not your apps.

00:15:51   Setapp has a dedicated curation team

00:15:53   that only selects the highest quality apps.

00:15:56   New apps are added regularly, updates are always free,

00:15:59   and all of the apps are their full featured pro versions.

00:16:02   No like little trial thing, no limited stuff,

00:16:05   all these are full featured pro versions of their apps.

00:16:08   And this is a great value.

00:16:10   Instead of paying the equivalent in licenses,

00:16:12   which would be like $8,000,

00:16:13   there's just one flat monthly fee of $9.99.

00:16:17   So until December 31st, hurry up,

00:16:19   use code UNDERRADAR to get a month of a free trial.

00:16:23   Head over to setapp.com and look for a link

00:16:25   to redeem the code in the footer.

00:16:27   And that code, once again, is UNDERRADAR.

00:16:30   So go to setapp, S-E-T-A-P-P dot com,

00:16:33   use code UNDERRADAR.

00:16:34   Our thanks to Setapp for their support of this show

00:16:37   and all of Relay FM.

00:16:39   - Yeah, so it's really interesting

00:16:41   to hear you talking through that process

00:16:43   of the benefits and the things that you see

00:16:45   when you open source something.

00:16:47   As someone who I don't believe I have ever open sourced

00:16:50   really anything of substance or meaning,

00:16:53   maybe a few snippets and things

00:16:55   that I've published over the years,

00:16:56   but nothing particularly meaningful.

00:16:58   And I think there definitely is a part of it for me

00:17:01   that I don't feel, that's funny what I say,

00:17:06   I don't feel proud of the way that I code

00:17:08   in a way that I would,

00:17:10   I don't know if I could tidy up my living room enough

00:17:13   from an coding perspective before I would feel comfortable

00:17:16   to have someone come in and sit down.

00:17:18   Like it's a bit of a mess.

00:17:20   It's a bit of like 13 years of independence

00:17:23   of having to not having to worry about other people

00:17:26   that it only has to make sense to me.

00:17:28   And of course it makes sense to me

00:17:29   because I'm the one who wrote it,

00:17:31   which is probably not a great thing.

00:17:33   It's probably not the best way to write things.

00:17:37   But on the flip side, it also is super efficient

00:17:39   and works for me because it's a very highly tuned process

00:17:44   for me and for my development,

00:17:46   but it probably makes me largely unemployable

00:17:48   because if I ever went and had to write code

00:17:50   for as part of a team or something,

00:17:53   I don't even know, that sounds like a disaster,

00:17:55   but it is really interesting to hear you describe it.

00:17:58   And it's like, I've been sort of browsing around

00:18:01   in Blackbird and it's interesting

00:18:04   because a lot of the stuff,

00:18:05   it's like, I don't know how this works.

00:18:07   I'm looking at this and I would say

00:18:08   that I'm a relatively competent Swift developer.

00:18:12   I do this professionally, been doing this for a long time,

00:18:14   looking at like, I don't know what you're doing here.

00:18:17   There are all kinds of keywords and all kinds of stuff.

00:18:19   It's like, this is way over my pay grade.

00:18:21   I don't know what's going on.

00:18:22   And that's cool.

00:18:23   - I mean, in all fairness, that could be my fault as well

00:18:26   for doing something in a convoluted and under-documented way.

00:18:30   - Maybe, but it's also just,

00:18:32   in some ways, for me as someone

00:18:35   who's just reading this code, it's very cool to see

00:18:37   and be like, huh, that's really interesting.

00:18:39   I didn't know, I mean, I get a tremendous amount of value

00:18:42   from the Hacking with Swift series that Paul Hudson does,

00:18:46   where he just builds stuff.

00:18:48   And it isn't necessarily that what he's building

00:18:50   is something that I'm, I mean, sometimes it's something

00:18:52   that I will use more directly and specifically,

00:18:55   but it's just looking at someone else's process.

00:18:58   And often you'll run into these very small details

00:19:01   or things that they're like, oh, yeah,

00:19:03   that's actually a really clever way to do it.

00:19:05   I remember when I was, especially with early days

00:19:07   with SwiftUI, where there was very little

00:19:09   limited documentation, it was everything was new,

00:19:11   and it's like, he would show me how to do,

00:19:13   he would just sort of show, oh, you know,

00:19:15   what if you wanna have a view that you pass into a method

00:19:18   to be generated somewhere else, or to be reused or things?

00:19:22   And it's like, I had no idea how to do it.

00:19:23   It was just like getting into generics and stuff

00:19:26   that hurts my brain, and I, I mean, anything with generics,

00:19:29   I can't deal with.

00:19:30   Generics is one of those subjects

00:19:31   that just never works for me.

00:19:33   But it's like, the way he explained it, it worked.

00:19:35   And I look into some of your code, and I'm like, huh,

00:19:37   like, I can kinda see where this, you know,

00:19:38   the async/await stuff is coming,

00:19:40   and it's just useful.

00:19:42   And it's like, it's useful for me in that sense,

00:19:44   but it's like, the funny thing is,

00:19:45   I think the bigger value, it's like,

00:19:47   you get the value of writing it for an audience,

00:19:50   regardless of whether there's an audience.

00:19:51   Like, there is some value for me,

00:19:53   but that's almost like the secondary, like, side benefit,

00:19:56   that even if that didn't exist, like,

00:19:58   if zero people ever looked at this code,

00:20:00   the value you've gotten from it is still there,

00:20:03   which is just kinda cool.

00:20:05   - That's true, yeah, it's like, you know,

00:20:06   if you clean up your house 'cause someone's gonna come over

00:20:07   and then they cancel and they don't come over,

00:20:09   your house is still really clean.

00:20:11   - Yeah, exactly.

00:20:12   - You still benefited from that.

00:20:14   - Yeah, and I think that in some ways

00:20:15   is kind of the cool part of this,

00:20:17   because I think the lesson from it applies

00:20:20   regardless of, I guess, audience or reach or whatever,

00:20:25   that it isn't necessarily that, like,

00:20:29   I imagine, you know, whatever,

00:20:30   Blackbird has 217 stars right now,

00:20:33   and 13 people watching it, which is,

00:20:35   I don't know if that's a big number, it's a number.

00:20:37   - I have no idea.

00:20:38   - It's like, if those numbers were like zero

00:20:40   for both of those, it's like, okay,

00:20:43   the person who wrote it is still getting that benefit,

00:20:45   and it's like, that's what I'm running into

00:20:47   with my design notes blog, is it's like,

00:20:50   I'm getting a lot of benefit from it.

00:20:52   Like, I have no idea, I haven't heard from you.

00:20:53   It seems like maybe a handful of people

00:20:56   have been reading it, which is cool, I suppose,

00:20:58   and it's useful sometimes to get some feedback,

00:21:00   but it's just the interesting part of this is the value,

00:21:05   it's like, you and I can sort of own that value

00:21:08   and take control of it, regardless of whether

00:21:11   it actually goes big, or if Blackbird becomes

00:21:14   the foundation of huge amounts of Swift apps going forward

00:21:19   and all this stuff, like, cool, that could be nice,

00:21:21   but it also doesn't really matter.

00:21:23   Like, you're getting a lot of value for Overcast

00:21:25   and for your own development and for learning things

00:21:28   and being, you know, that improvement you own

00:21:32   and are in control of, which is just kind of cool.

00:21:35   To me, like, that's the value here.

00:21:37   Even if I never got a single comment or pull request

00:21:41   or issue report or star or, you know, special wings

00:21:45   or whatever else, I have no idea how much this stuff works.

00:21:47   I don't usually do a lot of stuff on GitHub

00:21:49   besides like a Git host, you know?

00:21:51   But, you know, whatever works, like,

00:21:55   I'm getting a huge amount of value out of having

00:21:58   done this in public, and this is why,

00:22:00   and I think, you know, going back to what you've been doing

00:22:02   with design notes, that has to be helping you as well

00:22:06   in the sense that you're making these decisions

00:22:09   and it probably doesn't, it probably at some level

00:22:12   feels like you have to justify your decisions

00:22:14   because you are then writing down, like,

00:22:16   you are taking screenshots and you're saying,

00:22:18   here, I tried this, here's the problem I'm trying to solve,

00:22:22   here's different ways I tried to solve it,

00:22:23   I kinda don't like this, this didn't really work,

00:22:25   this one I like, here's why,

00:22:27   and I'm gonna proceed with that, you know?

00:22:29   And to me, like, that's, you know,

00:22:30   when I have blogged things, and maybe I should be doing

00:22:33   more of that, you know, I found similar value

00:22:36   in just trying to write down my idea requires me

00:22:40   to solidify my ideas and to often,

00:22:43   oftentimes I would write a blog post

00:22:45   and I'd get halfway through and realize,

00:22:46   wait a minute, my argument here makes no sense.

00:22:50   And then I'd like either cancel it or totally rewrite it

00:22:53   with a whole different point of view

00:22:54   and that'd help clarify my thoughts.

00:22:56   In the same way, like, you are clarifying

00:22:58   your design decisions by being forced to actually

00:23:01   write them down and explain them,

00:23:03   you are going through a very similar process of,

00:23:07   like, you know, having to actually think through them

00:23:11   in a more comprehensive way than you normally would.

00:23:14   - Yeah, no, exactly, and I think it's, yeah,

00:23:17   I can say for sure, it's been really interesting

00:23:20   to do that, to just, like, I imagine in a large organization

00:23:25   this is, you'd have a design review process, right?

00:23:27   You'd be like, I would, a designer would come up

00:23:29   with something and you'd sit down

00:23:31   and everyone would sit around a conference table

00:23:32   and you'd walk through it and it's like

00:23:34   you'd have a level of critique

00:23:36   and I'm in some ways creating that for myself,

00:23:40   that I am being a critic of my own work

00:23:42   because I have to, you know, I'm documenting,

00:23:45   it's the thought process that went into it

00:23:48   and there's a certain amount of, yeah,

00:23:51   it's like accountability and review internally

00:23:55   that, you know, that that creates

00:23:56   and I think it's been, yeah, very incredibly helpful

00:24:00   as a result that there is something,

00:24:02   yeah, it's just a different thing if you think,

00:24:06   if you have to explain why something is better

00:24:08   than something else, like, it's, I think a little bit

00:24:12   it's been helpful that it slightly slows down the process

00:24:14   and like, it gives me a little bit of,

00:24:17   I have to be a little bit more methodical,

00:24:19   like, it's not really slowing me down dramatically

00:24:21   but it's like, I'm taking, every time I stop

00:24:24   because I have an interesting design,

00:24:25   take a screenshot of it, write down like two sentences

00:24:28   about it, it's that slight pause,

00:24:31   I think has actually been super helpful

00:24:33   in the same way that I think makes me think of when

00:24:36   I'm dealing with a coding problem and I am struggling with it,

00:24:39   I'm struggling with it, I'm struggling with it,

00:24:40   I, you know, get up, go downstairs, make a cup of coffee

00:24:43   or go take a shower or, you know, go for a walk with my wife

00:24:45   or whatever that looks like and just spend, you know,

00:24:48   a small period of time away from the problem

00:24:50   and I come back to it and I'm, I know the answer,

00:24:53   you know, it solves itself, it's,

00:24:56   and I think so much of that is, it's so easy being

00:24:59   just one person with no real inputs to interrupt

00:25:02   or distract me to just keep bearing down on a problem

00:25:06   until I get to wherever that ends up

00:25:09   rather than making, you know, taking three steps forward,

00:25:12   taking a step back, looking around,

00:25:14   making sure we're going in the right direction,

00:25:16   go three steps forward, take a step back, look around,

00:25:18   like, that, you sort of incremental process is so helpful

00:25:22   that I've found so far to be really thoughtful

00:25:26   and make sure that I'm not going down dead ends,

00:25:28   that I'm just not seeing because I'm looking at the ground

00:25:30   in front of me rather than up ahead of where I'm going.

00:25:33   - Yeah, that's really a way to look at it.

00:25:35   - Yeah, and it's like, I hope these things are helpful too,

00:25:38   like, it's, I mean, it's one of those funny things

00:25:39   where so many of these things that I'm,

00:25:41   like, I'm writing about are like little tools

00:25:44   or little processes that I've used that it's like,

00:25:48   I imagine they would be helpful to other people,

00:25:50   like, yesterday I was writing about how I've found

00:25:53   that reminders is like the world's best way

00:25:55   to capture like little issues with your apps

00:25:57   because you can take a screenshot, you can, you know,

00:26:01   mark it up with a pen to say what the issue is

00:26:03   and attach it to a reminder, instantly syncs to your Mac,

00:26:06   and it's like, that was something that I just like discovered

00:26:08   over time works really well and it's like wrote about it,

00:26:11   but otherwise, if I didn't have a venue to talk about it,

00:26:14   they're like, that would just be a thing that I knew

00:26:15   that hopefully, that's just sort of like

00:26:17   that no one else would know

00:26:18   unless they discovered it themselves,

00:26:20   and so like there is something cool kind of fun

00:26:21   to be able to, you know, to share our expertise

00:26:25   in a way that maybe benefit, you know,

00:26:27   may additionally have benefit to anyone else,

00:26:29   like even if that benefit didn't exist, we get our benefit,

00:26:31   but it's also kind of cool that it may have

00:26:34   that knock-on effect outside of ourselves.

00:26:36   - Yeah, you actually taught me about reminders.

00:26:37   Like, first of all, I didn't know

00:26:38   you could attach screenshots to reminders.

00:26:39   Second of all, I didn't know

00:26:40   that you could create custom lists.

00:26:42   Like, I just thought that the, like,

00:26:44   the four big square buttons and reminders,

00:26:46   those were the four lists and that was it,

00:26:48   and I never even saw that right below that

00:26:50   is a thing called My Lists, and you can add to that

00:26:54   and you can customize, and then you also pointed out

00:26:56   that you can set one as your default view,

00:26:58   which I also would never have thought to look for

00:27:00   or ask about, so you've now, like, yeah,

00:27:03   I think there's a lot of value in publicizing what you do

00:27:07   in some way, because, you know, even just,

00:27:10   if somebody can pick up some little detail of how you work

00:27:13   or how you write code or how you design or whatever it is,

00:27:17   you know, you give off, like, one little remark somewhere

00:27:20   and that could really help somebody.

00:27:22   Like, you know, we can all think back to things

00:27:25   that we have seen or read or, you know,

00:27:28   people who have said something to us

00:27:30   that, like, this one thing stuck with us

00:27:32   for years afterwards and we're like,

00:27:34   oh my god, that's an amazing idea,

00:27:36   or this one thing, like, changes the way you think about

00:27:39   a certain kind of problem or changes the way you deal

00:27:41   with a certain problem in your life

00:27:43   or challenge or workflow, and so,

00:27:45   you know, the effort of sharing, you know,

00:27:47   it might feel like that, you know,

00:27:50   not a lot of people are listening or watching

00:27:51   or maybe you don't think you have anything to offer

00:27:53   that hasn't already been said, but trust me,

00:27:55   like, we all do, everyone has something to offer

00:27:58   and, you know, don't assume that what you're saying

00:28:02   is something everyone already knows, because it's not.

00:28:05   And there's always little details like that

00:28:06   that I pick up whenever I read stuff, you know,

00:28:09   even just simple posts on Twitter people write,

00:28:11   all the way to, like, different blog posts

00:28:13   and, of course, people like Paul Hudson,

00:28:14   who I have to commend Paul for basically being, like,

00:28:17   the documentation for all of Swift and Swift UI,

00:28:20   because Apple won't write any, so good job, Paul.

00:28:23   His documentation is amazing and has helped me

00:28:25   tons along the way, and literally,

00:28:28   every time I look something up, like,

00:28:29   every time I Google some problem,

00:28:31   I land on, oftentimes, his site, or at least some site

00:28:34   or some blog post or some Stack Overflow post even,

00:28:37   where I will learn something in almost all of those,

00:28:39   and sometimes it is just, like, a little aside

00:28:43   or, like, one little sentence buried in the corner,

00:28:45   oh, well, you know, by the way, as you know, Bob,

00:28:47   you know, this, and I'm like, wait a minute,

00:28:48   I didn't know that.

00:28:49   Like, and so, all that stuff is very, very helpful,

00:28:52   so I strongly encourage everyone, like, you know,

00:28:55   share your knowledge, publicize your work,

00:28:57   write blog posts, write Stack Overflow answers,

00:28:59   you know, whatever it is, because that helps people.

00:29:02   It helps people a lot, and oftentimes

00:29:04   in ways you might not expect.

00:29:06   - Yeah, and it's this funny, like, tension

00:29:07   where it's like, on the one hand, selfishly,

00:29:09   I want everyone else to share what they do.

00:29:11   Like, I love it when people share.

00:29:12   It's super helpful for me, and selfishly, I want that.

00:29:14   And I think, hopefully, a little bit of the theme

00:29:16   of today's episode is understand that that is selfish

00:29:19   for yourself as well, because you benefit

00:29:22   just by the process of putting that out there.

00:29:24   You get a lot of benefit, and it's like,

00:29:27   it's one of these, like, it's a win-win.

00:29:29   Like, you get that benefit regardless

00:29:30   of if anyone gets benefit from it,

00:29:32   and more likely than not, other people are gonna benefit

00:29:36   from it, which is just, like, double awesome, yeah.

00:29:38   - Well, thanks, everybody, for listening.

00:29:41   Thanks for sharing all your knowledge out there,

00:29:42   and we will talk to you in two weeks.

00:29:45   - Bye.

00:29:45   [ Silence ]