00:00:00 ◼ ► Busy day? I've said on probably this show and definitely on analog that I always thought it was horsesh*t that you never replied to any emails ever.
00:00:09 ◼ ► Then I started recording podcasts with you and I realized, "Oh my god, that's why Marco never replies to anything, because this email is non-stop."
00:00:19 ◼ ► Well, then I decided, "You know what would be a smart idea? Let's release an app where it can send you email if the user has feedback."
00:00:40 ◼ ► You're inundated for a good reason, but it still doesn't make the problem any easier to deal with.
00:00:48 ◼ ► Do you want to hear my ideas for new features, Casey? Or have you heard a few of them already?
00:00:57 ◼ ► What did you bring on your graycation, computer-wise? You didn't bring your iMac, did you?
00:01:02 ◼ ► No, because I was just there for a few days. I just brought the 13-inch MacBook Pro from last year.
00:01:09 ◼ ► I thought about that. When I go for the whole summer, I am probably going to bring my iMac Pro again.
00:01:20 ◼ ► Right now it's holding my mediocre LG 5K in my basement, which also fits it because it's the same size.
00:01:38 ◼ ► And so if it's a whole summer, it's not enough, both in screen space and in performance.
00:01:44 ◼ ► There were so many times during just the last couple of days when I was just building Overcast,
00:02:05 ◼ ► So imagine if by your own design, your portable machine is the 12 inch MacBook Adorable.
00:02:13 ◼ ► I was going to ask you about that, because you said you were getting work done when you were traveling with families.
00:02:28 ◼ ► But yeah, I would say probably between a third and a half of vignette was written on my Adorable.
00:02:35 ◼ ► Like, more than you would think, and more than probably was necessary, but here we are.
00:02:56 ◼ ► No, some of it was on the god-awful air. Most of it was before that on my white plastic MacBook.
00:03:09 ◼ ► I know they had problems with the palm-rest yellowing, and mine did too, and that's fine.
00:03:13 ◼ ► But with that one exception, which was honestly not that big of a problem, those were amazing machines.
00:03:18 ◼ ► The amount of performance and value and ubiquity and versatility, those crammed into such a, at the time, small and affordable package, was unparalleled.
00:03:34 ◼ ► Yeah, no, I loved mine until the battery exploded. Not in the, like, kaboom sense, but in the--
00:03:43 ◼ ► But I think I got a top--or, not a top case, I think I got a whole case replacement well out of warranty because it had cracked in a few spots, as the PolyBooks love to do.
00:04:17 ◼ ► Let's talk about undo/redo as, quote, "interactive version control." Would you like to tell me about that, John?
00:04:24 ◼ ► Yeah, this was, uh, what were we talking about? We were talking about kids learning version control in school or whatever.
00:04:30 ◼ ► And I mentioned my habit of using undo and redo repeatedly to sort of rewind and fast-forward dangerously in text files.
00:04:40 ◼ ► And apparently this is such a common phenomenon that someone drew a comic strip about it.
00:04:45 ◼ ► We'll put a link in the show notes. The comic strip only loses points for saying "Control-Z" and "Control-Y" instead of "Command" because obviously it was written by PC users and not Mac users.
00:04:55 ◼ ► But that's fine. Anyway, it's a funny comic and it's a funny thing that people do. And now I feel less alone in the world.
00:05:12 ◼ ► Yeah, so I talked last week. I kind of put out a request to the listeners, like, "Hey, can anybody know of anything that's basically, like, kind of like preview for video,
00:05:19 ◼ ► of like being able to open a video file without, like, making a project or an event or any, like, project management file features, like the way Final Cut and LumaFusion and stuff like that, the way they do that.
00:05:31 ◼ ► Just open a video, perform basic edits, like, you know, straightening, rotation, you know, audio fixes, stuff like that, basic video edits, and then just save it to a file without making any projects.
00:05:42 ◼ ► So we got a number of responses. On the Mac side, Matthew Schaffer recommended something called Video Loop.
00:05:49 ◼ ► And that's Loop, L-O-U-P-E, that kind of loop, like the looking tool. So Video Loop, it's $25 on the Mac App Store or Direct.
00:05:56 ◼ ► And I bought that and I'm using that and it's pretty good. There's also a few other options. Donovan Buchanan on iOS recommended LumaFX.
00:06:05 ◼ ► So I mentioned LumaFusion a minute ago because that is kind of like a Final Cut for iPad, basically, and it's actually very good if that's what you're looking for.
00:06:13 ◼ ► And LumaFX is kind of like their lite version. It's $3 and that is basically editing videos without projects.
00:06:20 ◼ ► The only thing I hesitate on that one is that it's kind of old and hasn't been updated for the new iPads yet.
00:06:27 ◼ ► It doesn't seem like it's maintained nearly as much as LumaFusion is, which is very, very good.
00:06:34 ◼ ► And then also, if you have less, like lower needs, if your needs are only about straightening videos, like if you have a horizon that's a little bit crooked, you want to straighten it.
00:06:44 ◼ ► If that's your only need, Jan Oslund recommended Perfect Horizon, which is an app for Mac and iOS and it's only $4.
00:06:52 ◼ ► Also on the Mac, a number of people recommended Telestream Switch Plus, but that is $200 and it's aimed much more at pro types of uses.
00:07:10 ◼ ► It appears to be a pro tool for reviewing footage and stuff like that and exporting different formats.
00:07:15 ◼ ► But I'm not honestly sure why so many people recommended it because it actually doesn't do what I want.
00:07:20 ◼ ► So anyway, my pick out of all these on the Mac is definitely Video Loop, pretty much exactly what I was looking for.
00:07:35 ◼ ► Now, you know, similar to how we in the know like to use third party Twitter apps because they're better, things like Tweetbot and Twitterific, they're better than the official stuff.
00:07:50 ◼ ► They're a former Apple employee who worked for years to create a Reddit app that felt perfectly at home on iOS.
00:07:57 ◼ ► This is not some kind of cross platform thing, no material design, mismatched with iOS, anything like that.
00:08:03 ◼ ► This is a pure iOS app, takes full advantage of the platform and is super fast, smooth, updated all the time.
00:08:12 ◼ ► Things like the jump bar, quickly jumping between subreddits, they have customizable gestures, color coded comments and so much more.
00:08:19 ◼ ► And you don't have to take my word for it because MacRumors, Daring Fireball, MacStories and iMore and so many more have all praised Apollo.
00:08:33 ◼ ► So Apollo is a free download and there's a pro version for a few bucks if you want to get a custom home screen icon or a bunch of other cool features.
00:08:41 ◼ ► So our listeners can also get a free ATP themed home screen icon by going to the about section, shaking the device and entering ATP into the secret dialogue.
00:08:54 ◼ ► That's pretty awesome. So once again, go to the about section, shake your phone and enter ATP in the secret dialogue that comes up.
00:09:11 ◼ ► If you use Reddit at all or if you think you might want to use Reddit, go do it in Apollo.
00:09:17 ◼ ► Got to say, I love Apollo. I've heard wonderful things about it from everybody who's ever used it.
00:09:34 ◼ ► So remember like, I don't know, a month or two ago when Marco and John said, "Hey, you know, you should really ship that app before WWDC."
00:09:42 ◼ ► And then like a week or two ago, Mark Erman and crew came out with a post that said, "Hey, guess what's included in iOS 13? You can update images for each other using iMessage and blah blah blah."
00:10:00 ◼ ► Well, guess what has quietly been in the App Store since Sunday and is, loudly, I don't know, been in the App Store since today.
00:10:08 ◼ ► Which is to say, today was when I tried to do my big full press embargo, or full press press, if you will.
00:10:14 ◼ ► Vignette, which is the name of my contact picture updating app, is out. It's in the App Store.
00:10:20 ◼ ► It has been bought at least once. Of course, Apple hasn't told me how many times it's been bought yet because it's still today.
00:10:38 ◼ ► I still have been boinging off the walls all day and monitoring Twitter and email and everything else.
00:10:45 ◼ ► But by and large, knocking furiously on glass, because that's the kind of desk I have, this has gone better than I would have expected.
00:10:54 ◼ ► And the coverage has been better than I would have ever dreamed. And so I'm in pretty darn good shape and I'm kind of on cloud nine right now.
00:11:18 ◼ ► You should credit your long experience in the jobby job world with understanding how deadlines work.
00:11:24 ◼ ► And even though this wasn't an internal deadline, as we call them in the biz, you were both the internal and the external and you made it happen.
00:11:34 ◼ ► You know, there were some things that I shipped that I wish could have been better or different or what have you.
00:11:39 ◼ ► But I was able to get Vignette to the point that I felt like it was good enough and it was not embarrassing by any means.
00:12:04 ◼ ► Obviously, there's no way to hide that. If you had done the appropriately performed search, you could have found it.
00:12:11 ◼ ► But I didn't really publicize it at all until 11 o'clock this morning, Wednesday morning.
00:12:16 ◼ ► At which point, I had known that Federico and team at MacStories were going to write something.
00:12:31 ◼ ► But it actually got covered in a couple other places, which is really, really, really exciting.
00:12:36 ◼ ► And I'm really glad that I shipped. I'm glad I shipped with a week and a half to spare, which really doesn't seem like a lot.
00:12:42 ◼ ► But I tell you what, a week and a half ago, I wasn't so sure I was going to make it by WWDC at all.
00:12:49 ◼ ► And all kidding aside, easily a month ago, I didn't think I was going to make it by dub-dub.
00:12:54 ◼ ► I had hoped to and had kind of planned to, but it wasn't that big a deal at that point.
00:13:02 ◼ ► And so I am extremely thankful to the both of you, amongst others, but especially to the both of you for pushing me to ship,
00:13:08 ◼ ► for making the app better in many, many, many ways, particularly you, Marco, as we discussed last week,
00:13:17 ◼ ► But no, this was a lot of work, particularly in the last month, more than it probably seems like it should be,
00:13:28 ◼ ► But it is out. I've shipped, as some people in a Slack that the three of us are in have said,
00:13:52 ◼ ► Well, I say that as though I'm upset or something, but I'm trying to remind myself that even as I'm getting a bug report
00:13:59 ◼ ► It's out there, and I've seen more good feedback than bad, and that's about all I can hope for.
00:14:06 ◼ ► I mean, every app is a struggle to get shipped for sure, but you've shipped an app on the App Store before,
00:14:14 ◼ ► Well, and also, we got some interesting feedback from somebody who wished to remain anonymous.
00:14:22 ◼ ► but the gist of it was basically it was somebody who is an app developer but has no public persona.
00:14:29 ◼ ► They keep a low profile intentionally, and they were saying how it's actually hard to release,
00:14:47 ◼ ► So saying how that's actually much more intimidating because your audience will expect more from you
00:14:52 ◼ ► because you're a public person, whereas if you're kind of keeping a low profile in private,
00:14:57 ◼ ► you can release a bunch of crap and nobody knows about it, and eventually you'll get better.
00:15:02 ◼ ► By the time anybody might know who you are, you're better at it, but you didn't have that luxury.
00:15:08 ◼ ► So you actually took some risks here that I think some people might not consider or appreciate fully.
00:15:16 ◼ ► Putting your name on something like this and putting it out there is always a risk when you have an existing audience.
00:15:26 ◼ ► I'm sure you haven't lost track of that, but I wanted to call it out as that's a pretty cool thing to do.
00:15:32 ◼ ► It's a bold move, and it's really putting yourself out there in a way that takes a bit more risk than most people would.
00:15:47 ◼ ► I'm still to some degree scared, and it's already out there, but nevertheless, fast text was basically garbage.
00:15:56 ◼ ► I knew that when I released it, but at the time in which I released fast text, nobody knew who I was.
00:16:01 ◼ ► It may be that Jon literally did not know who I was. I forget what the timeline was, but that might have been before I met Jon.
00:16:07 ◼ ► That's how long ago fast text was. So releasing hot garbage was fine, because I wasn't even on the radar, much less a blip on the radar.
00:16:15 ◼ ► But now, with that sting of fast text still somewhat there, now it's a whole new ballgame.
00:16:23 ◼ ► If I had released something that wasn't at least pretty good, I think I would have heard about it.
00:16:29 ◼ ► That's why I was so petrified to ship. I think, again, that the encouragement from you guys, encouragement/demand from you guys,
00:16:40 ◼ ► and the Bloomberg report, I think really got me to just push past that fear and just ship.
00:16:49 ◼ ► I did sleep okay last night, but I was losing my junk all day today from the moment I woke up until the moment I put up the blog post.
00:16:58 ◼ ► As I'm watching the tweets come by, there was a wave of congratulations, which was awesome.
00:17:03 ◼ ► That wave lasted several hours. Then there was, right around my dinner time, there was a wave of, "Oh, I've got a crash,"
00:17:10 ◼ ► or "Oh, this app sucks," or "Oh, why $5," and this and that. I was really starting to feel down on myself.
00:17:19 ◼ ► I'm feeling good again. It's been a rollercoaster. I am extremely lucky to be able to, as an independent person,
00:17:30 ◼ ► release an app to the App Store and have anyone notice it, much less get coverage from Mac Stories from Cult of Mac.
00:17:36 ◼ ► I actually got written up on TechCrunch, which I didn't expect in a million years. That was a total surprise to me.
00:17:43 ◼ ► That was extremely flattering, and the write-up was good. I was really expecting one of these write-ups to be like,
00:17:49 ◼ ► "Well, you know, the app is kind of amateur hour, but it does what it says on the tin, so I guess that's good, right?"
00:18:00 ◼ ► That makes me feel real good, because this is the first real thing I've done soup to nuts since FastText.
00:18:09 ◼ ► When I was at my jobby job, I was still working on an app that was released to the store,
00:18:14 ◼ ► but it was an app that had been around for, I don't know, literally six or seven years or something like that,
00:18:18 ◼ ► so there was a lot of cruft there. There was a lot of garbage in it, and some of that was by design, some of it wasn't.
00:18:30 ◼ ► One of the things that developers know, and I think this is true of other kinds of jobs as well,
00:18:43 ◼ ► And when QA is you, and the developer is you, and the designer is sort of you, you have no one to blame, but guess what? You.
00:18:50 ◼ ► And so I was super scared, and I'm really glad that it's been reasonably well received.
00:18:58 ◼ ► And it's not without flaws and bugs and problems. I'm not trying to say the thing's perfect,
00:19:01 ◼ ► but it's been received better than I ever could have imagined, and I am so unbelievably thankful for that.
00:19:08 ◼ ► I'm so unbelievably thankful for the audience that I have that has at least looked at the app.
00:19:13 ◼ ► I've had several people write in and say, "Hey, you know what? This isn't for me, but I still threw you a fiver just because I like you."
00:19:18 ◼ ► Like, how frickin' complimentary is that? Seriously. Like, that's super awesome, and I really appreciate that.
00:19:28 ◼ ► It comes, and it carries with it a lot of weight when someone with an audience, as you were saying, Marco,
00:19:35 ◼ ► when someone with an audience releases something, and doubly so when it's something that's in my wheelhouse, right?
00:19:40 ◼ ► Like, if I release a crappy car video, well, whatever. He's just a nerdy developer. Of course he releases a crappy car video.
00:19:47 ◼ ► But if I release a crappy iOS app, that's a problem, because that's allegedly what I did for a living, and what I now, again, do for a living.
00:19:55 ◼ ► And so it was so stressful and so scary, and it still is stressful and scary, but it so far has gone better than I ever could have imagined, and I am so unbelievably thankful for it.
00:20:07 ◼ ► Can we talk about some of the things that we didn't get to talk about when the app was secret? I guess there's only two that spring to mind.
00:20:21 ◼ ► I believe if memory serves, well, it started life as Gravatar Fetcher, because the genesis of this was...
00:20:34 ◼ ► Yeah, by the way, anybody who wants to hear a lot more about this should also listen to this week's episode of Analog, which we'll link to in the show notes,
00:20:40 ◼ ► where you and Mike go into great detail about some of these things, some of the feelings associated with them, etc.
00:20:44 ◼ ► And we are going to cover some of the same ground here, but I wanted to also refer people to that.
00:20:49 ◼ ► Yeah, the idea with Analog was, I knew full well that we would be recording this very show the evening of release,
00:20:55 ◼ ► but the idea from that episode of Analog, which is episode 157, is that I was trying, or we were trying to kind of cover,
00:21:10 ◼ ► And so you'll hear a lot of the feelings of, like, what do I expect and what am I looking forward to?
00:21:15 ◼ ► And here we can cover whatever nerdy stuff you want and some of the same stuff as well.
00:21:19 ◼ ► To go back to what you were saying, though, Jon, the name, so I started with Gravatar Fetcher because it was just like an internal, quote-unquote,
00:21:29 ◼ ► And this all started with me thinking, you know, I bet a lot of my contacts have gravatars.
00:21:34 ◼ ► And sidebar, if you're not familiar, Gravatar is a service that I believe is owned by the WordPress people now.
00:21:39 ◼ ► It was independent years ago, and it's supposed to be a globally, I don't know if unique is the right word, but a globally recognizable avatar.
00:21:48 ◼ ► And so, you know, once you verify that you are, you know, so on at so-on.com, then you can upload your avatar,
00:22:06 ◼ ► Like, can I replace a lot of these contact images in my phone with stuff from Gravatar?
00:22:13 ◼ ► And then once Gravatar Fetcher, you know, extended beyond just Gravatar, then I needed to start worrying about, okay, like, what's the name?
00:22:21 ◼ ► And so if memory serves, I looked at the Mac OS dictionary, really, Thesaurus, and started with, I think, Portrait or something like that, or maybe Avatar.
00:22:29 ◼ ► But I think I started with Portrait and was trying to figure out, okay, what's a more unique and interesting name or word than Portrait?
00:22:40 ◼ ► And Mike had given me a lot of grief about this, justifiably so, because it is a little weird to spell, since it's a, as far as I know, it's a French word that's been sucked into English.
00:22:53 ◼ ► But I liked the name. I liked that it was kind of cutesy and clever and kind of indicated what the app does, even though it's not directly what the app does, because Vignette is like a style of photograph.
00:23:19 ◼ ► I know they probably won't be exactly called Vignette, but I'm amazed that that name was a bit, the App Store still enforces name uniqueness, doesn't it?
00:23:27 ◼ ► Well, so Vignette with no other words around it was taken, but Vignette hyphen update contact photos was not.
00:23:35 ◼ ► So, so yeah. So there are some other apps called Vignette something something something and most of them.
00:23:40 ◼ ► Would you have done the hyphen thing anyway, even if it was available? Because everybody does the thing where you put extra words after the name of your app nowadays, right?
00:23:48 ◼ ► Well, so officially you aren't supposed to do that anymore and they added a field like a like a subtitle field two years ago or last year to let you put like, you know, podcast player in the subtitle field.
00:23:59 ◼ ► But in practice, tons of apps still keyword spam their titles and it doesn't seem to be actually enforced at all.
00:24:32 ◼ ► It's not elegant, but it's not the same as just putting a bunch of keywords strewn at the end of your thing or making some nonsensical sense.
00:25:06 ◼ ► I guess the icon ties obviously into the color scheme of the app, but you can take them both at the same time.
00:25:13 ◼ ► I'm hopeful that that Marco you did catch this on analog because I thought it was funny.
00:25:19 ◼ ► But anyways, the color scheme thought was, OK, I'm going to do blue because blue is my favorite color because I'm boring and I really like blue.
00:25:47 ◼ ► It's like it's it's it's lovely, but it's loud and it's you know, it's it's remarkable.
00:25:55 ◼ ► So so that that was going to be in this this entire conversation I had my head in the span of like five minutes.
00:26:08 ◼ ► So and then that left me with, well, if you have Chicago maroon and burnt orange, well, that leaves you with Chicago maroon.
00:26:15 ◼ ► And I think I did tweak it slightly from the official Virginia Tech color, you know, hex code or whatever.
00:26:19 ◼ ► But ultimately, it boils down to it was something that has some amounts of meaning to me.
00:26:32 ◼ ► And it's not too in your face, but it's not, you know, just straight up vanilla UI kit, black and white and blue either.
00:26:43 ◼ ► But I thought it was unique and interesting enough while not being in your face enough to cause problems.
00:27:03 ◼ ► And then the card that you can see is one of those generic like avatar, you know, like a placeholder avatar.
00:27:15 ◼ ► Like I was expecting to do like what we did to the icon factory and going back and forth 300 times with Stee about, you know,
00:27:22 ◼ ► "No, let's tweak this a little bit. No, no, no, no, no, no, no. Tweak. No. Shimmy it to the left a little bit. No, the hell."
00:27:28 ◼ ► Yeah, I was going to say "we"? I don't know about "we". What John did to the icon factory.
00:27:36 ◼ ► So looking at this icon though, like I'm wondering, you know, how, depending on your age,
00:27:42 ◼ ► you may look at this icon and have no idea what a Rolodex is and see it as a weird laptop, right?
00:27:53 ◼ ► something along the lines of, and I think they were joking because it wasn't said like in anger from what I could tell,
00:27:58 ◼ ► but they said something like, "I cannot unsee this as somebody in bed pulling the covers up" or something like that,
00:28:07 ◼ ► That's a big headboard in a short bed. Yeah, I think a laptop is probably the primary thing.
00:28:11 ◼ ► I never, you know, I didn't, I always read his Rolodex to me, but I'm super old, right?
00:28:15 ◼ ► But now that I look at it real closely, I'm like, "Are kids going to think that's a laptop?"
00:28:19 ◼ ► And if they do, fine. I mean, the important thing in it is the head and shoulders, like the silhouette, right?
00:28:31 ◼ ► Yeah, I like it. I think it works. I take your point about, for younger people, it probably doesn't make any sense.
00:28:43 ◼ ► I'm really happy with the whole app, not to say there's not problems. There are plenty of problems.
00:28:51 ◼ ► But so far, overall, the launch has been incredible, and I am so incredibly, incredibly lucky to have this show,
00:29:03 ◼ ► Whether or not you pay for it, just to download it is tremendous, and is a real honor to spend your, you know,
00:29:08 ◼ ► to have a listener spend their time looking at it, and much less to throw five bucks, or you know,
00:29:15 ◼ ► So now I get to wait for one or more days. I don't know, Marco, you tell me to figure out how much, if any, money I've made.
00:29:22 ◼ ► It's funny because if I go to the sales...well, you say that, but if I go to the sales and trends thing in App Store Connect,
00:29:42 ◼ ► So $72, but that was prior to the big launch today. In fact, that's only through, I don't know, like the first day or two.
00:29:57 ◼ ► I was hoping that Federico and team would pick up on this, but you know, I didn't like actively ask them.
00:30:03 ◼ ► I did the thing that you should never do, which I never asked for any coverage, but I didn't expect, you know,
00:30:07 ◼ ► them to do anything, I didn't expect Holt and Mac, and then I certainly didn't expect, you know,
00:30:15 ◼ ► No, but you know, it's...like you were very thankful and analog to all the people who helped you or all your friends and everything.
00:30:24 ◼ ► I know, right? You're being very humble, and that's nice, and that's because you're a nice person.
00:30:30 ◼ ► But really, no, and I mean this honestly, like, you've said a lot, like, how, oh, you're just lucky to have access to these people,
00:30:37 ◼ ► and no one else has access, and you know, you're trying to like, you know, avoid privilege types of arguments, I'm sure.
00:30:43 ◼ ► But the reality is, you've been working and building these relationships for years, and it wasn't out of self-interest of like,
00:30:56 ◼ ► You are, like, you are friends with everybody, and you actually, you actually talk to people and listen to people,
00:31:03 ◼ ► and you actually write down their birthdays in your contact records and everything. Like, you care.
00:31:09 ◼ ► You're a friendly guy. You keep up relationships, and so, and you have been friendly and have kept up relationships
00:31:31 ◼ ► Like, "Well, you know, I'm just lucky." No, it is, I mean, you've been lucky in some ways, but like,
00:31:35 ◼ ► you also have maintained and built tons of relationships over time just to be friendly.
00:31:41 ◼ ► And that's, you know, that's nothing to disregard or to downplay. Like, that's, there's nothing wrong with being friendly to people,
00:31:49 ◼ ► and sometimes it pays off in ways that you might not have thought when you first started being friendly.
00:32:07 ◼ ► a lot of these people that I was genuinely friendly with have gone on to be kind of important people in our industry.
00:32:12 ◼ ► And a great example of this is, I think, Marco, you and I met Matthew Panzareno at about the same time at WWDC in 2011.
00:32:20 ◼ ► And it just so happened that I got to hang with him a little bit, and at that point he was with, ah, crap, The Next Web.
00:32:30 ◼ ► I don't think I knew he was a rising star, but in retrospect I think it was clear he was a rising star.
00:32:37 ◼ ► And it wasn't Matthew that wrote the article on Vignette, but nevertheless, like, that was a really good gamble.
00:32:43 ◼ ► Not, you know, I don't mean to make it sound like I didn't want to be friendly with Matthew,
00:32:47 ◼ ► but, you know, it turned out it was a good and lucky gamble that I wanted and chose to be friendly with Matthew.
00:32:51 ◼ ► And, you know, that we've kept up over all these years because it turns out he's really important.
00:32:56 ◼ ► And, you know, when I met this guy, John Siracusa, in line at the keynote, and I knew who he was,
00:33:00 ◼ ► and I wanted to meet him and I wanted to be friendly with him, but, you know, who knew two or three years--
00:33:06 ◼ ► So, you know, I take your point and I think you're right, and I like to think that I have put in the work in pretty much every measure,
00:33:12 ◼ ► both, you know, the work in Xcode, you know, the work with these relationships, the work with marketing.
00:33:17 ◼ ► I like to think I put in the work, but nevertheless, you know, I do want to recognize that I've been extremely lucky,
00:33:36 ◼ ► But, yeah, so I think it's worth at least briefly touching on what the reaction has been in a more specific way,
00:33:44 ◼ ► because I didn't know what to expect from the greater populace, you know, to whatever definition that may mean,
00:33:51 ◼ ► when this got into the hands of, you know, of listeners and regular people and not, you know, my nerd friends.
00:34:02 ◼ ► I knew and I know that I feel like there's some memory issue somewhere that I haven't quite licked yet,
00:34:07 ◼ ► and that is something I've been improving but still working around for the last couple of weeks.
00:34:13 ◼ ► So I knew that there were probably going to be some crashes here and there, and there were, and that was okay for the most part.
00:34:18 ◼ ► But it was the thing that I didn't expect that I wish I had realized before I shipped that really came up and bit me.
00:34:27 ◼ ► Well, maybe that's an exaggeration, but the thing that I didn't expect was how many people would want to integrate with Facebook
00:34:40 ◼ ► When I had iOS like 7 or 6, I don't even know what version it was, there was a window of time where iOS would allow you to do kind of what Vignette does with Facebook and with Twitter,
00:34:52 ◼ ► and I allowed it to, you know, update my contact pictures and information and whatnot from Facebook and Twitter.
00:34:56 ◼ ► And one of the things that that process did was it threw these weird Facebook URLs into any contact it could match.
00:35:05 ◼ ► And those URLs were in the form of FB colon slash slash profile slash and a bunch of numbers, and that's your profile ID for that particular user.
00:35:13 ◼ ► And that's what I wrote Vignette against, because I figured, oh, there's got to be a lot of people that have this sort of thing in their contact list,
00:35:20 ◼ ► and then I already have, you know, the globally unique ID that's what Facebook needs in order to pull an avatar, so it's a win-win, no problem, right?
00:35:29 ◼ ► Well, I shipped, and then everyone said, why can't I put in, you know, Facebook, or why can't I put in like a username like Casey Liss or Marco Armond, which I don't think you're on Facebook, but you take my point.
00:35:38 ◼ ► You know, why can't I do that? Which is a completely reasonable question to which I had no very good answer.
00:35:45 ◼ ► And that has been, I think, that has been the number one piece of feedback outside of, hey, this thing crashed, which has happened not very often, but often enough that I'm upset by it.
00:35:54 ◼ ► But the number one piece of feedback which I did not expect was, hey, why can't I put in a Facebook username?
00:35:59 ◼ ► And so I was working earlier tonight on figuring out a way around that, and unfortunately, but expectedly, I don't know if there's that much I can really do about it,
00:36:08 ◼ ► since a lot of people, myself included, have their Facebook profiles pretty well on lockdown, so the only way you can get to it is if you're logged in, you know, with a Facebook auth token and so on and so forth.
00:36:18 ◼ ► So over the next day, I plan to do the best I can to get profile images for those who aren't totally locked down but are only providing a username like Zuck or whatever.
00:36:31 ◼ ► But it's something that a lot of people have been, not complaining isn't really the word I'm looking for, but asking about, a lot of people have been asking about.
00:36:39 ◼ ► And that I did not expect, but as soon as I started seeing the first reports, it was totally like, you know, face pump, oh, of course, I should have spent the time to fix that before I launched, and I didn't.
00:36:49 ◼ ► And I'm a little upset at myself about that, I think in part because it was just unexpected and I should have expected it, but if that's the most of my problems, it's still a pretty successful launch in my book.
00:37:00 ◼ ► Yeah, I mean, it seems like if you're going to go for like, if this proves to be worth investing a lot more time into, I think obviously like having an actual Facebook login integration would be a strong like 0.1 or 0.5 feature to consider.
00:37:17 ◼ ► It's obviously a lot of work, it greatly expands the scope of what the app is doing, but it also would have pretty high value, so it's like if the app proved to be worth a lot more effort, that's certainly worth strong consideration.
00:37:30 ◼ ► So after your launch here, I'm wondering where your head's at in terms of like, what are you going to work on for the next release? Are you in a mode where you're like, well, the first thing I got to do is figure out what these 10 crashes are about and, you know, solve any memory issues or whatever, or are you thinking, let me pick, like we were just talking about, pick from the pile of good ideas for features and see, you know, and start working on those, like, or just start working on the easy ones that are not as complicated as Facebook.
00:37:58 ◼ ► Was this, you know, umpteen suggestions? Are you in bug fix mode or are you in add features mode?
00:38:04 ◼ ► Honestly, I totally understand the question, but at this point, I'm not even sure yet because I'm still like letting the wave just wash over.
00:38:12 ◼ ► Yeah, to some degree. No, I do hope to get another build out before I go. I mean, there's no reason I shouldn't be able to, but, but yeah, to some degree, I feel like I have closed this chapter to just use the most overused, you know, analogy in the world.
00:38:26 ◼ ► But I feel like I need just a moment to breathe, and that can be maybe like a day, but after that, I really want to get this Facebook thing squared away.
00:38:36 ◼ ► So rather than saying to people, well, you have to like put in this like weirdo URL that no normal person can know, and that's hard to discover and blah, blah, blah.
00:38:46 ◼ ► At least at that point, I can say, well, sorry, they have their Facebook profile locked down.
00:38:50 ◼ ► But even though I could technically say that right now, it's not the truth, and I'm not the kind of person to lie like that.
00:38:56 ◼ ► So I really want to get that Facebook fix out the door. There was a couple of other backgrounding supposedly does not work, which is really weird because I've tested that a fair bit.
00:39:06 ◼ ► So I don't know if it's that people are letting it sit in the background for 10 plus minutes, in which case iOS will kill the app if I'm not mistaken.
00:39:12 ◼ ► I don't know if it's something else entirely, but I've seen enough reports that backgrounding is broken that I need to take a look at that. So that's a bug fix.
00:39:24 ◼ ► Well, that is something that was discussed on a Slack that the three of us are in, which was a tip from Craig Hockenberry, which was a brilliant idea.
00:39:32 ◼ ► So what Craig was saying was, "Hey man, you can figure out if the device is on battery or not, and you can tell iOS not to turn the screen off."
00:39:49 ◼ ► And so I'm familiar with the API, but it never clicked to me the combination of "Am I on battery or not?" and then if you're not, go ahead and turn the sleep timer off.
00:40:03 ◼ ► So that's another great idea that I want to do, probably in addition to, if not instead of, a fix for backgrounding.
00:40:22 ◼ ► But if you use it, you can monitor how much time you have left even before it calls your callback of like, "Hey, we're about to kill you, so wrap things up."
00:40:33 ◼ ► But you can monitor how much time you have left, and one approach I've seen other apps do is you can post a local notification if you're running low on time.
00:40:42 ◼ ► So you just pop a little thing for the user to say, "Hey, I need more time. Please go back to the app," or something like that, right?
00:40:52 ◼ ► You know, this is the kind of app that you run it once, you update whatever you can, and then you put it in a folder and you forget about it, right?
00:41:14 ◼ ► And you can even do the--I haven't played with this yet, but iOS 12 introduced the provisional approval for notifications such that you're able to deliver quiet notifications,
00:41:25 ◼ ► which means they just kind of appear in Notification Center and don't cause any alerts without asking for permission first.
00:41:37 ◼ ► Because it's funny you bring that up because one of the things I was about to say to you is, "I thought about doing the whole 'Hey, come back to the app, you're about to expire' dance."
00:41:46 ◼ ► Obviously you would rephrase it, but, "Hey, I really need you to wake me back up, otherwise I'm going to die."
00:41:51 ◼ ► But anyway, I thought about doing that, but I didn't want to have to prompt for notification permission because as far as I knew, you would have to.
00:42:01 ◼ ► But that idea of doing it three months from now, especially if I could do it without having to ask for notifications permission, that would be really great.
00:42:14 ◼ ► And I have two onboarding screens right now, and I feel like that's too, too many, but I didn't see any way around it.
00:42:20 ◼ ► So I really don't want to have a third onboarding screen, which is, "Hey, can I have notification permissions too, just in case you background me, just because this takes a while?"
00:42:28 ◼ ► So if I can avoid it at all costs, I'd like to, but it may turn out that I'm not able to avoid it. We'll see.
00:42:34 ◼ ► Yeah, well, and soon you're going to have a third/fourth one, which is, "Do you want to log into Facebook?"
00:42:41 ◼ ► And actually the other, probably the next biggest request that I've seen, which I only briefly looked into and did not come up with good news, was, "Hey, can I use LinkedIn?"
00:42:51 ◼ ► Which makes perfect sense, because of course people want to use LinkedIn, that's where all their professional contacts are.
00:42:56 ◼ ► You know, Facebook is where all the personal contacts are, LinkedIn is where all the professional contacts are.
00:43:01 ◼ ► But so far I've been able to get around Facebook login, and some of my marketing, a lot of my marketing in fact, has been around the fact that you don't need to log in in order to use the app.
00:43:10 ◼ ► But with LinkedIn, there is no way that I am aware of to get to a profile image without having been logged in.
00:43:18 ◼ ► And so if I go down the LinkedIn route, then I will absolutely need login, and as I said to a couple of people who had asked about it previously, sitting here now I'm kind of allergic to that.
00:43:28 ◼ ► But based on the amount of feedback I've gotten about, "Oh, I would really love..." Some people have even said, "I would give you more money for login," which is not necessarily what I'm planning on doing.
00:43:39 ◼ ► But just to say, "This is how important login is to me," and that's surprising, but if that's what the people want, then that's what the people should get, right?
00:43:48 ◼ ► Well, the whole value of this app is in automatically finding pictures of people so you don't have to manually put them all in.
00:43:54 ◼ ► And for a lot of people, how many that finds is going to depend significantly on whether it supports logins to certain services.
00:44:01 ◼ ► And so, like, you don't even... I said that a second ago, it would be an onboarding thing, but it wouldn't have to be. One thing is, one way you could do it is don't even prompt people during the onboarding process.
00:44:12 ◼ ► Wait for them to do their first search, and then in the footer below the first search results, you can say, "Want to find more results? Connect to your Facebook or LinkedIn accounts."
00:44:22 ◼ ► And then prompt them, and then you just have it in the settings screen for other access, too.
00:44:26 ◼ ► So you wouldn't have to make it an annoying thing during onboarding. You could make it an after-the-search thing of, "Hey, by the way, you can also do this."
00:44:35 ◼ ► Yeah, that's a really good point, actually. I hadn't thought of it that way. Yeah, I like that.
00:44:39 ◼ ► I was joking in Slack today, but the more I think about it, the more I feel like it might work, although I don't necessarily recommend prioritizing this.
00:44:45 ◼ ► The other thing you're discussing is the ultimate fallback for where can I find an image of this person is to do a Google image search for their full name and just pick the first result.
00:44:56 ◼ ► Obviously, that only works for people who have their name next to a photo of themselves with reasonable SEO on the web.
00:45:03 ◼ ► And lots of people have the same name, and if your name is, say, David Smith, you're probably out of luck.
00:45:09 ◼ ► But it's an ultimate fault. When you've exhausted everything else, they didn't want to sign for Facebook, they don't have any info about Twitter or anything, you've got nothing?
00:45:20 ◼ ► Why the hell not? It's just another web request. I'm not sure what Google's API limits are these days, but you'll probably fall within a reasonable threshold of their free offering, assuming they still have one.
00:45:32 ◼ ► Yeah, I would think so. That is an interesting point. I am not confident the results would be good enough to justify it, but I totally take your point, and that is worth at least looking into.
00:45:43 ◼ ► You could even build a UI of, like, let people browse their contacts that don't have pictures, and they can tap on it, and you could pop up, push the little controller over, and you can actually show the first 20 Google search results for it, and then let them pick.
00:46:03 ◼ ► That avoids a whole bunch of problems and naturally throttles it to whatever, because if a person has 10,000 contacts, that's going to blow their API limit immediately if it's automated.
00:46:13 ◼ ► But if it's a one-by-one thing, not only do you solve the quality and correctness issue very, very well, but it mostly avoids the API issues that you might hit.
00:46:23 ◼ ► And by the way, _DavidSmith is on the third page of Google image search results for David Smith.
00:46:35 ◼ ► Anyway, but yeah, I mean, if you guys have other questions, I'm happy to continue to discuss, but I think we've covered most of it.
00:46:41 ◼ ► But yeah, one more time for the people in the back, thank you to anyone who's even downloaded the app, much less used it and sent me a few bucks for it.
00:46:50 ◼ ► My hope, to kind of go back to what I think John was asking, you know, what's the plan from here, you know, not having seen whether this is financially worthwhile or not, just to make myself feel better,
00:47:02 ◼ ► My plan for WWDC is to attack whatever engineer is willing and able to help me, you know, look at my memory usage and see if I can get that slimmed down a bit.
00:47:12 ◼ ► I've done a lot of work to try to get the memory usage to be as good as I can, but it's clear to me that I'm not doing something right or perhaps I'm doing something that has bitten me accidentally one way or the other.
00:47:42 ◼ ► It was originally done as part of the search, was during the search if I came up with an image I would also resize it to be less than the magic 220 whatever kilobytes.
00:47:56 ◼ ► You should probably serialize that onto like two queues or a queue with a limit of two operations at once.
00:48:05 ◼ ► The image processing can balloon RAM usage and if you have this running on a concurrent queue so you can do a whole bunch of them in parallel, you know, the modern processors of a phone, they might schedule eight of those at once or ten of those at once.
00:48:19 ◼ ► So you could be trying to decode ten JPEGs at once and that's going to blow your memory limit, no question.
00:48:26 ◼ ► But whereas if you serialize that, then you can say like only at most have like two JPEGs being decoded at any one time, then you will dramatically reduce the high watermark of how much memory you could possibly use.
00:48:42 ◼ ► So for the non-developers listening, in case you're wondering like JPEGs are small, what the heck is Mark we even talking about?
00:48:49 ◼ ► You may not realize that if you want to do anything with that image, you have to take the compressed JPEG and uncompress it so you can get bitmap data that you can then manipulate and then recompress into JPEG and that's where all your memory goes.
00:49:07 ◼ ► In fact, for a while, there was a window of time which I tweeted about this, which I won't be able to find the tweet quickly enough to get it in the show notes, but I tweeted about how Marco had actually had a friggin huge image and it caused me to discover an infinite loop that I had created for myself because of it.
00:49:24 ◼ ► So thank you, exactly, thank you Marco. But yeah, the Gravatar images can be multiple megabytes if you ask for the bigger ones, which is fine, that's not a problem, but it exacerbates my problem of memory usage.
00:49:38 ◼ ► And I was laughing earlier Marco about what you were saying because just earlier today I was talking with a buddy of mine who's a really good iOS developer and they were saying, "You know, I see what you're doing with the concurrent queues, but you might want to think about doing this serially because X, Y, and Z and a lot of the same things you said."
00:49:53 ◼ ► And so the moral of the story is I am sure that there are things I can do to tweak this.
00:49:59 ◼ ► Another thing I want to dig into is I tried using auto-release pools in a couple of places to try to see if I could kind of brute force my way into lower memory usage and I didn't get good results from that, but I am not confident that I was using them the way they should be used.
00:50:14 ◼ ► I understand the concept of an auto-release pool, but it's something I haven't really had to worry about in the past, so I definitely think that there's improvements that can be made. And like I said, my hope is to spend some time in the labs at WWDC and perhaps ask an Apple person to either learn me how to use instruments or just do some science with me to figure out where this memory usage is.
00:50:37 ◼ ► I'll tell you right now, it's got to be image decompression. That has bitten me so many times with podcast artwork. There have been so many overcast bugs or crashers that have resulted from trying to process an image that was way too big, from somebody's feed artwork, and it's like 5,000 by 5,000 or something like that.
00:50:55 ◼ ► And you've got to try to figure out how to process that in memory on the phone. I've gone through a lot of this. If you can't just ignore images that are that big, which by the way, you can check without loading them. There's an API for that. I can give it to you if you want.
00:51:08 ◼ ► Really? Yeah, it's some kind of image provider, core image, it's like a C API, so I don't know how the hell you call it from Swift, but I'm sure there's a way. I have a thing now where I check before I even load the image, I call this image provider API to see is it within certain very large limits.
00:51:30 ◼ ► If it's above those limits, I won't even try to load it because I'll crash if I do. Interesting. I'm surprised Marco doesn't leverage the ultimate power that he has at his disposal, which is server-side software. You don't need to deal with those images on your app, Marco.
00:51:44 ◼ ► You can just tell a service to fetch the image and resize it for you and feed you the tiny image that's the size you want. I have done that. In fact, I still do that for a lot of cases, but that has its own problems and especially costs.
00:52:02 ◼ ► Anyway, I'm thankful for it. The timing was both great and terrible because there's some other things that have been released today. We'll talk about Panic's thing here in a minute.
00:52:14 ◼ ► I just wanted to give a shout out to my buddy Jelly who does the indispensable app Gifwrapped. He actually released version 2.0 today, which has a bunch of tremendous and awesome changes in that version. I'm giving this thanks in part because Jelly's a friend, in part because I really love Gifwrapped. It's on my dock on my iPad and it's on my first home screen on my iPhone.
00:52:35 ◼ ► But also the UI on Vignette was my work, but Jelly did a lot of heavy lifting to make that UI look real good.
00:52:45 ◼ ► As a thank you to Jelly for all that work, I will put a link to Gifwrapped in the show notes because if you ever use animated gifs for anything in your life, you really want that app. And also, Independence is really, really good as well. That's his podcast with Al Zhao and Curtis Herbert. It's a really, really good show about trying to make it as an independent app developer, so I would definitely check that out as well.
00:53:09 ◼ ► We are sponsored this week by Boosted. Go to BoostedBoards.com and use code ATP at checkout for $75 off.
00:53:17 ◼ ► Instead of sitting in traffic and searching for parking or smelling some guy's sandwich next to you on the bus, imagine riding the streets. Wind in your hair, the fresh air, all on your own Boosted electric vehicle.
00:53:32 ◼ ► Boosted makes these awesome Boosted boards, these electric skateboards, and they just launch a new electric scooter. And these are high grade things. These are vehicle grade electric skateboards and scooters. This is the modern solution to your transportation woes.
00:53:47 ◼ ► With a 22 mile range and a max speed of 24 miles an hour, Boosted is perfect for both running to the store and traveling across town. And this is designed not to be some cheap thing. This is designed to be a luxurious experience. It's so good that Boosted was one of Time Magazine's best inventions of 2018.
00:54:06 ◼ ► So with five options to pick from, including their new scooter, the Boosted Rev, there's a personal electric vehicle that's tailor made for you. I gotta say, when you feel the acceleration and the smoothness of an electric drivetrain, whether it's in something as big as a car or whether it's something as small as a scooter or a skateboard, it changes you. I'm telling you, it really feels great. And you gotta check these out.
00:54:29 ◼ ► So Boosted starts at $61 a month with financing, so there is no better time to change how you move than now. Right now, Boosted is offering our listeners $75 off the purchase of an electric vehicle when you use the code ATP at checkout.
00:54:44 ◼ ► So go to Boostedboards.com and use code ATP at checkout to get $75 off your vehicle. That's Boostedboards.com, promo code ATP at checkout for $75 off. Thank you so much to Boosted for sponsoring our show.
00:55:01 ◼ ► So Marco, you went on a patented graycation for the last few days, and if you don't know what that is, you should listen to the other wonderful podcast, Cortex on Real FM. But basically, you went by yourself, or I guess, you know, with hops, but you went to somewhere to work on Airplay 2 stuff. Tell me, you sound like you're in a good mood, so how's that going?
00:55:21 ◼ ► Oh, it totally failed, actually. Lovely! Congratulations! Yeah, yeah, so I took a little vacation with just me and my dog and my laptop and two HomePods, which was quite heavy to bring in a suitcase, actually. HomePods weigh a ton.
00:55:38 ◼ ► But anyway, I've been trying to get Airplay 2 in Overcast for months, and there's a whole bunch of prerequisites to make it work. Like, I had to make Voice Boost 2 work, which is still not quite done. But I had this opportunity to take this vacation for a couple days, so I thought, this is a great time to do this.
00:55:56 ◼ ► I'll go, I'll get tons of work done all day, so it'll just be me and the dog, so I'll have nothing else to do except work and take dog walks, of course.
00:56:04 ◼ ► And so I went, and this is the first time I've ever done anything like this. I've wanted to do this for a while, ever since our friend CGP Grey has talked about doing this, as you mentioned on the Cortex Podcast, where he will, like, go on a vacation and just, like, stay in a hotel in a different city and get a ton of work done, just for, like, a few days.
00:56:21 ◼ ► It actually was really nice to be able to have that focused work time. I had kind of two and a half full days of just, like, focused work time on Airplay 2. I brought my HomePods, I connected them to the rental place's Wi-Fi, set them all up as, you know, as new, like you have to, whenever you change their Wi-Fi.
00:56:40 ◼ ► Airplay is not a great thing to make portable. But anyway, really wanted to get it done, and I coded like crazy on my 13-inch MacBook Pro. Right in the middle of this, the new ones were announced, but I'll get to that in a few minutes.
00:56:55 ◼ ► I eventually finished up the player that I, it probably has about three weeks of work in it, that happened before this trip. Finally finished up the Airplay 2 compatible player using the API that's named something on the lines of AV sample buffer synchronizer and sample buffer renderer.
00:57:16 ◼ ► It's like, there's only two ways to get Airplay 2 support. You can use AV player or you can use those things. AV player does not support smart speed. And those things, you can supply raw sample buffers, and so you can do your own processing and everything.
00:57:29 ◼ ► And so anyway, as far as I can tell, I think I'm the only person to ever try to use this API. Which is not the first time I can say that. Like, it reminds me a lot of doing, like, watch audio stuff, where it's sometimes it feels like I'm the only person doing this.
00:57:43 ◼ ► Definitely the whole AV sample buffer, renderer, render synchronizer thing, I definitely feel like I'm the only person to ever have used this. Because, as I learned, it's really broken when actually running on a home pod.
00:57:56 ◼ ► There's a few things about it that work the way you expect. I mean, if you run it in the simulator, or if you run that API as your engine on an iOS device, everything seems to work fine. But then once you start sending audio to a home pod, which starts invoking Airplay 2 protocol, then weird stuff happens.
00:58:14 ◼ ► And so I had like one and a half solid days of like, "Great work, everything's going great, this is awesome." And then I got to the point where I could run it on the home pods and just slammed hard into walls everywhere I went.
00:58:29 ◼ ► And basically then spent the next day like hacking, like trying to work around problems, trying to work around various issues I was seeing. I was just getting nowhere. It was demoralizing, it was frustrating, it was just morale crushing and soul crushing.
00:58:46 ◼ ► And I felt like all this work was wasted. And then I went to bed last night feeling like this, thinking like, "Well, this whole trip, I really enjoyed the dog and the beach part, but the work part was a total failure."
00:58:58 ◼ ► That is the worst feeling, especially when you go to sleep like that, because there are definitely times where I was fighting probably much more simple things with vignette, but nevertheless, I was fighting something with vignette and I would fight with it on and off all day, and then I go to sleep and it's still garbage and I'm tossing and turning, thinking about how I've written hot garbage or wasted a day, you know, working on something that just doesn't click.
00:59:19 ◼ ► And hopefully you're about to tell me that you had some sort of epiphany thereafter, but for me I found that stepping away from it often makes a huge difference. So anything better since yesterday?
00:59:32 ◼ ► So this morning I woke up and I was kind of going through breakfast and morning walk and coffee and I'm like, "Alright, what the heck am I going to do about this?" And I decided, "You know, I don't live in a vacuum here. Other people make podcast apps. What have they done about it?"
00:59:49 ◼ ► And so I decided to go through, I'll periodically survey other podcast apps to see how they do something. Usually if I'm making a new UI for something, for some new feature, usually the way I'll do it is I'll go check other apps to see how they did a certain UI, because I'm really paranoid about accidentally copying people.
01:00:08 ◼ ► And so I will almost always want to check with other apps to just make sure that the way I'm going to do something is not like a total ripoff of somebody else. And so anyway, I keep all the other podcast apps I can think of on my phone and I check with them periodically for stuff.
01:00:22 ◼ ► So I started playing with them with AirPlay 2. I thought, "What are they doing?" Because the whole reason I want AirPlay 2 support, there's two things that AirPlay 2 brings. Number one, much faster responsiveness when you hit play/pause or seek, when you change anything about the stream.
01:00:39 ◼ ► AirPlay 1 has a fixed two second latency for all that stuff. So anything you do, if you hit play on AirPlay 1, two seconds later it'll start playing on the speaker. And it's very frustrating. You feel like you're moving through maple syrup. Responsiveness is an important thing for overall happiness of using something and just usability of the thing.
01:00:57 ◼ ► So I was never happy with that. AirPlay 2 came along and fixes that because it buffers totally differently. And also, it brought with it multi-room audio support. And so if you have multiple home pods, and there's an increasing number of AirPlay 2 supporting hardware out there.
01:01:13 ◼ ► There's way more AirPlay 2 devices now than there were six months ago. And I love using AirPlay 2 in my house for music. And for as long as I can remember, if your app only supported AirPlay 1 as Overcast does, you could send to one AirPlay 2 device.
01:01:29 ◼ ► It would send it in AirPlay 1 mode and you couldn't send to more than one at once. You couldn't do multi-room or multi-output audio. So anyway, that's why I wanted to do it at all. And I figured too, this is the more modern API. My audio engine is based on very old core audio APIs.
01:01:44 ◼ ► They're kind of unofficially deprecated, so I want to move to something more advanced. At least more current. So I looked at what other podcast apps are doing, figuring, you know, somehow they have to solve this problem. Now, if you don't have a feature like Smart Speed, a silent skipping feature, you can use AVPlayer.
01:02:05 ◼ ► And so much is taken care of for you. Things like streaming are just kind of done automatically for you. And AirPlay 2 is done for you. So if you're using AVPlayer, you basically get AirPlay 2 for free, but you can't do Smart Speed. You can't do silent skipping.
01:02:21 ◼ ► So I looked at a few apps that I know have solid engineering behind them, and I found a few. I did some tests, I measured the latency, you know, you could tap it, and I measured to see, like, are they actually doing silent skipping or not, which is easy. Set it to 1x, hit play, start a stopwatch.
01:02:39 ◼ ► If the timer on the podcast player ever passes the stopwatch, you know it's skipping silences. If it stays in lockstep with one second increments to the stopwatch, you know it's not. And so I found one popular app that offers silent skipping, but I noticed when you used AirPlay 2 with it, it didn't really do it.
01:02:59 ◼ ► It was doing that thing where it stays in lockstep. So it was just kind of silently not doing silent skipping, but it had really responsive controls. You'd hit play, it would play immediately. You'd hit pause, it would pause immediately. Speed up and down speed adjustments works just fine.
01:03:13 ◼ ► So it was clearly, like, it was using AirPlay 2 perfectly, except it wasn't really doing silent skipping. So my theory with that player is that they were probably, like, using AVPlayer for AirPlay 2 being active, and then when AirPlay 2 wasn't active, they were switching back to some other API that was able to do their silent skipping.
01:03:33 ◼ ► And that's fine. That's an option. I'm not going to say that's an option, but I really don't want to do that option. I really take pride in the fact that all of my audio processing is enabled all the time.
01:03:43 ◼ ► Whether the file is streaming or local, whether it's AirPlay or Bluetooth or speaker or none of those things, I want all the audio effects to apply real time to any file, any input, all the time.
01:03:55 ◼ ► So I don't want to do that option if I can help it, but that is an option to get AirPlay 2 with the nice responsiveness and everything.
01:04:01 ◼ ► And then I looked at a couple other apps, and one I'll call out here is Castro, and I'm calling it Castro for a reason. It's a great app. I mean, you know, if you like the way they manage episodes, you should use Castro.
01:04:13 ◼ ► Anyway, and I noticed Castro, when you hit the buttons, it would have the lag of AirPlay 1, where, you know, you're waiting about two seconds. You know, if you hit play, you wait two seconds, then it plays.
01:04:25 ◼ ► But they were also clearly, they had silence skipping working. I measured it, and it worked great. But they could also send to multiple rooms.
01:04:34 ◼ ► And so this is why I had to bring two home pods to be able to test this. They could also send to multiple, so I'm like, how are they doing this?
01:04:40 ◼ ► So I asked, because I'm friendly with the guys who make Castro, so I just asked. I'm like, hey, you know, if you're willing to share, like, what audio API are you using to get AirPlay 2?
01:04:50 ◼ ► Because I noticed it's different from some other apps, and you're able to do sound skipping. What are you doing?
01:04:55 ◼ ► And let me interrupt you right there. Both the guys that do Castro, that write Castro, are impossibly, impossibly nice guys.
01:05:02 ◼ ► And it makes me genuinely happy that you guys, the three of you, can all talk to each other.
01:05:11 ◼ ► Because on the surface, you're competitors. But nevertheless, because you're all nice people, that you are willing to talk to each other about these sorts of things.
01:05:19 ◼ ► Because as a developer, your natural inclination is to hold all of these things secret and not share any of these things.
01:05:26 ◼ ► And it makes me genuinely happy that you guys are willing and able to share all of this with each other.
01:05:32 ◼ ► And I think that, to kind of repeat what you were saying about me earlier, I think that you, Marco, doing the right thing by putting links to Castro, amongst other things, in the little clips feature that you've done.
01:05:43 ◼ ► I shouldn't say little, but in the clips feature that you did recently, I think that that breeds some of this mutual admiration and respect.
01:05:50 ◼ ► And I don't know, it just makes me really happy that rather than being jerks to each other, you guys are so nice.
01:05:55 ◼ ► And given that I know the three of you, that is not at all surprising. But nevertheless, I just wanted to call out that Castro is a great app, and they are really genuinely nice guys that write it.
01:06:07 ◼ ► And to be fair, we're not willing to share everything. There's stuff that we all keep secret from each other, just because those trade secrets or things that we're especially proud of that are tricky.
01:06:17 ◼ ► So we don't share everything, but we are very friendly, and we will ask you to do technical stuff sometimes, and just be like, "Hey, how'd you solve this problem?" and stuff like that.
01:06:41 ◼ ► It turns out, at some point between when AirPlay 2 launched and now, iOS was updated such that AirPlay 1 streams can now be sent to multiple AirPlay 2 devices at once.
01:06:57 ◼ ► I don't know when this happened. Sometime between iOS 12 coming out and now, this has now been changed.
01:07:05 ◼ ► Which, it doesn't fix my AirPlay 2 problem, but it does remove a huge reason why I had to do AirPlay 2 in the first place.
01:07:15 ◼ ► And given that the API that I have to use if I want Smart Speed to work properly, given that that API is really honestly not ready for production.
01:07:26 ◼ ► To give you some idea of the problems I was having, a lot of times you would hit play and just nothing would happen.
01:07:34 ◼ ► But the API would be reporting back to you, "I'm playing. Yep, I'm reaching this time. Now I'm at this time. Now I'm at this time."
01:07:42 ◼ ► And if you'd pause, or if you could pause it and play and it wouldn't fix it, if you seeked to a different point, then it would fix it.
01:07:48 ◼ ► Stuff like that. And also, changing the playback speed just wouldn't work sometimes. It would keep playing at the old speed, whatever its buffer was.
01:07:58 ◼ ► And you'd have to manually flush the buffer, pause, wait a minute, then send it more audio. It was weird.
01:08:15 ◼ ► That way, if your phone loses the stream to the wifi network for a split second, the audio doesn't skip.
01:08:21 ◼ ► So AirPlay 1 would buffer for 2 seconds. AirPlay 2 could buffer for 10 seconds or 30 seconds or a minute.
01:08:27 ◼ ► The API is responsible for telling the app, "Even though I have fetched time range 1 minute to 1 minute 30 from you, I'm actually currently playing 101, 102, 103."
01:08:42 ◼ ► Because otherwise, the only way you know is the app, what it's playing is the last thing you sent it.
01:08:47 ◼ ► But it probably hasn't gotten there yet. So that time reporting mechanic for these APIs is very important, especially in a podcast app where that matters a lot.
01:08:54 ◼ ► So you can keep track of where they are in case they pause and want to resume later or whatever else.
01:08:58 ◼ ► It matters a lot that you're getting accurate time back. And I was finding with this API, I wasn't.
01:09:04 ◼ ► It would frequently report back to me the wrong time or it would catch up where it would report to me a 10 second progress all at once.
01:09:15 ◼ ► As if I was playing at 10x speed and it all happens at the same second, which would throw off my speedometer and the progress bar and everything.
01:09:22 ◼ ► So the API, the whole render synchronizer and sample buffer render API is clearly not solid enough for me to build anything shippable on.
01:09:31 ◼ ► Believe me, I've tried. I've tried a lot and I can't build something shippable on that API right now.
01:09:40 ◼ ► But even though this was a totally wasted work trip in those ways, I actually learned this great thing this morning of basically I kind of don't have to support AirPlay 2 yet.
01:09:51 ◼ ► And while the two second lag on controls really sucks, that doesn't suck enough to make it worth all the downsides and bugginess of this new API I would have to do.
01:10:04 ◼ ► Or to make it worth the sacrifice of losing my effects if I have to swap in AVPlayer and then have to maintain these two parallel player engines.
01:10:14 ◼ ► That's a mess. Both of those options are worse than just leaving it the way it is now and just continuing to use AirPlay 1 until conditions change in some other way.
01:10:24 ◼ ► Can you briefly explain why you don't use your audio engine to output to something other than the audio system and then just use AVPlayer to play from your output?
01:10:34 ◼ ► Like, I mean, you'd lose time tracking and you'd have to report the time tracking back from your audio engine and ignore the time tracking from AVPlayer, but it would just be using AVPlayer as the transport for your post-process audio?
01:10:43 ◼ ► Yeah, and that's basically what I do for the watch playback. For the watch, I transcode the files to bake in smart speed if you have it enabled, and I send them over to the watch and I send my own time map over.
01:10:56 ◼ ► So like this second maps to this second in the actual file, that kind of thing. And then the watch kind of uses that time map along with the reported local time to show you an accurate time stamp and whatever else.
01:11:07 ◼ ► So I mean, I'm kind of doing that already in that way. The main reason I don't do that for the main playback is A, it's a good deal of processor overhead to be doing all the time, and B, it requires some degree of pre-processing the files, which wouldn't work in streaming and it wouldn't work in, like, it would involve delays and everything.
01:11:33 ◼ ► And so like, and anytime you pre-process files, as I've learned with the watch feature, you also run into possible limitations with iOS killing you for using too much CPU time in the background and stuff like that.
01:11:46 ◼ ► So it's a very expensive way to do it that has some significant downsides, most notably, as I mentioned, streaming. And again, as I said earlier, I want everything about my audio engine to work on a stream the same way it works on local files, which is hard, but it's important to me that I don't want to say, I offer silent skipping sometimes.
01:12:09 ◼ ► Either I offer it or I don't, and I want it to always be the same no matter how you're playing the audio that you're playing.
01:12:16 ◼ ► It's tough. It's tough not. It's especially, it's got to be just incredibly frustrating to feel like this is the, you're the only one that's hitting this API. Like, what do you do about that? Especially if you're not in Marco, and I don't mean that to be a jerk, it's just, you know, if you're a regular schmo, it's hard to get the attention of Apple to help fix a problem like this.
01:12:40 ◼ ► So what are you going to do, file a radar and just let it get lost in the ether? Like, the only way you get this problem fixed is if you know somebody, and how do you just know somebody inside Apple? It's, ah, it's got to be demoralizing.
01:12:49 ◼ ► Well, even then, like, the way I got watch audio improved was I wrote a big blog post about it with very specific things of like, here's like the six things I need to do this thing you want me to do.
01:13:00 ◼ ► Like, Apple wanted people to write podcast apps for the Apple Watch. So, and like they were telling us, they were saying, please write up, and so I wrote this thing basically saying, look, you want me to make podcast apps for the Apple Watch?
01:13:10 ◼ ► I can't. Here's exactly why, and here's how these things could be fixed so that I could do the thing you want me to do. Right? So, in this case, like the way, and even then, it took like a year, you know, because they had to like wait for the next cycle and for people to actually have time to do these things and for them to be in the public APIs.
01:13:27 ◼ ► So, you know, my chances here are like I could write a blog post saying, hey, if you want me to support AirPlay 2, here's why I kind of can't right now, and here's how that could be made better, but I think this is even more specialized and like even fewer people need this than who needed the watch thing, and I think Apple just cares less about this.
01:13:50 ◼ ► Like, if podcast apps don't support very fast responsive multi-room playback, that isn't that big of a problem for them. Like, that's not a huge priority for them as far as I can tell, and so I could make this blog post, but it's going to be hard for that to get any real attention from anybody.
01:14:09 ◼ ► So, I think this is one of those features where I'm just going to have to go without it for a while, and again, if conditions change, then I will reevaluate, but right now, I'm just abandoning this for now and just shelving this branch of the code and just saying I'll come back to this some other time.
01:14:42 ◼ ► But certainly, like the concept of going somewhere alone or basically alone with work as the purpose of the trip is a solid concept if you can do it. I mean, that involves quite a lot of privilege, opportunity, and everything.
01:14:57 ◼ ► Like, somebody has to keep my household running. The trip has to be paid for somehow. So obviously, this is something not everybody can do, and there are certainly costs to it, but it really was surprisingly productive in terms of work done, like work time done, work time put in, code written.
01:15:19 ◼ ► It just failed to do what I actually wanted it to do, but that wasn't the fault of the Graycation. That was the fault of, you know, I was going down a path that wasn't going to work, but as a tool to get work done, it was fantastic.
01:15:34 ◼ ► We are sponsored this week by Linode. You can get a server running in just seconds with your choice of Linux, Distro, resources, node location, and so much more. And node location is now expanded even further. They have a new data center in Toronto, Canada.
01:15:49 ◼ ► So this allows you to comply with in-country data protection requirements and take advantage of all Linode technology and tools in the process. And wherever you put your Linode, whether it's in Toronto or with one of their other 10 worldwide data centers around the globe, it is a fantastic web host.
01:16:03 ◼ ► I've been with them for a little over eight years now, and I just am so happy. This was long before they were a sponsor. And I can honestly say this is a service that I use that I really love.
01:16:13 ◼ ► Not only, you know, because I've used a lot of web hosts, a lot of web hosts, I've run a lot of servers in my day, and I keep everything at Linode now because not only is it an incredibly good value, it's by far the best value I've seen in web hosting, especially over the entire eight-year span it has always been, but also it's just a good web host.
01:16:30 ◼ ► Like, they have great support, they have a great control panel, great services and abilities and add-ons if you need them and everything. It's just wonderful.
01:16:37 ◼ ► But I know ultimately for most of us it just comes down to price, and Linode is a great value. Their plans start at just $5 a month.
01:16:45 ◼ ► They get you a Linode server with one gig of RAM, and these are all backed by enterprise-grade SSDs and Xeon CPUs, so they are super fast.
01:16:53 ◼ ► Of course, they have plans above that if you have more needs for more RAM or storage or whatever else. They also offer dedicated CPU plans, high memory plans, all sorts of things to fit your needs.
01:17:02 ◼ ► Check it out today at linode.com/atp, and you can get started with a $20 credit by using promo code ATP2019.
01:17:10 ◼ ► That could be four months free on that $5 a month plan, so you have nothing to lose also with a seven-day money-back guarantee.
01:17:16 ◼ ► Check it out today at linode.com/atp. By far my favorite web host. I have tons of servers there. I keep adding more because they just make it so easy, and it's such a great value.
01:17:26 ◼ ► Once again, linode.com/atp, promo code ATP2019. Thank you so much to Linode for hosting all my stuff and sponsoring our show.
01:17:34 ◼ ► Let's talk about some other big release, well, sort of, announcement from today. Let's have a playdate, guys.
01:17:43 ◼ ► This is so cool. This is so ridiculous, and I mean that in the best possible way. John, what is happening?
01:17:51 ◼ ► This is Panic. Panic Software, Panic Incorporated, just Panic. They have been making Mac applications forever. They still make Mac applications.
01:18:01 ◼ ► A few years ago, they helped make the game Firewatch, which is amazing and you should buy.
01:18:06 ◼ ► Agree. That's actually one of the few video games played recently, and it is very, very good.
01:18:17 ◼ ► They're working on another game called Untitled Goose Game, but they're just a bunch of cool people and everything they do is really interesting and neat.
01:18:26 ◼ ► And you never know what they're going to do. Before they announced they were making Firewatch, we just thought they made Mac and iOS software.
01:18:33 ◼ ► So who knows what they're doing. Cable gave an XOXO talk a couple years back about his sort of midlife crisis.
01:18:42 ◼ ► He's not that old. Quarter life crisis, whatever you want to call it, where he started this company with his friend and they had sort of slowly bootstrapped themselves up selling really nice Mac software for years and years.
01:18:56 ◼ ► And then one day he woke up and realized he was the employer for like 20 people and their livelihood depended on his continued business success.
01:19:08 ◼ ► And he wasn't sure. He was paralyzed by that fear and he wasn't sure like what is he supposed to do with his life.
01:19:13 ◼ ► You should try to find a link to the XOXO talk. But like, is this it? Do you just keep making software and worrying about how you're going to make ends meet?
01:19:21 ◼ ► And I think at this point they were also trying to make iOS apps and those apps were nice, but they weren't selling well and they couldn't figure out how to make money in the app store.
01:19:29 ◼ ► And it was just a big sort of crisis. And part of what came out of that crisis was, and there's an article about this in Edge Magazine that you'll be able to read by the time this is out, was his realization of how unique their position was.
01:19:44 ◼ ► They were not VC funded. They had no bosses. They didn't have any loans to pay back. They could do whatever they wanted.
01:19:53 ◼ ► They had a company full of talented people making money, you know, on selling Mac software, but they could do other things too because they're a bunch of smart people.
01:20:04 ◼ ► So part of that was helping make a game and that became Firewatch. But Playdate is another example of that.
01:20:13 ◼ ► If you look at Playdate, you would look at it and say, "This is exactly the kind of thing that the people at Panic would love."
01:20:21 ◼ ► And it fits because they made it. And why do they make it? Because it's the kind of thing that they would love. So what the hell did they make?
01:20:30 ◼ ► Well, first of all, they're making and selling a hardware product, which is a hell of a leap.
01:20:34 ◼ ► We were talking about apps today. Marco's made a bunch of apps. You make a bunch of apps. But your next app is not going to be a hardware device.
01:20:43 ◼ ► That's quite a leap to go from part of the beauty of software. You don't have to worry about all that stupid hardware stuff.
01:20:49 ◼ ► You just type things on a computer and sell the virtual bits. So they're making a hardware device. And what is the hardware device?
01:20:56 ◼ ► It's a tiny portable game system. And it's not the same as if they said, "We're making a new personal computer platform."
01:21:06 ◼ ► Like BOS with the BBox or something. But it's pretty close. Because how often does a new gaming system come out?
01:21:15 ◼ ► It happens once or twice every few decades. But for the most part, it's unheard of for even the biggest companies in the world to decide, "We're going to make a handheld gaming system."
01:21:28 ◼ ► Very few have ever decided to do that. We could probably name all of them right now just from memory. And there's probably some obscure ones we've never heard of.
01:21:35 ◼ ► But these are from gigantic companies. Panic, again, is like 25 people. And this particular product was made by a team of about 5 people, plus a lot of engineering help from an outside company that makes hardware.
01:21:52 ◼ ► So what's most interesting about this, other than the fact that a tiny company decided to make a handheld gaming console.
01:21:59 ◼ ► What's interesting about it is literally everything else about the device. It is tiny and adorable.
01:22:10 ◼ ► Which is a thing that he likes to do. It has a black and white screen. Not a grayscale screen.
01:22:16 ◼ ► A black and white screen. Pixels are either black or they are not black. And that is the only thing that the screen does.
01:22:22 ◼ ► It has no backlight. It is reflective. It's got a D-pad, an A and a B button. It looks a little bit like a tiny, tiny little Game Boy made by Teenage Engineering. That's the name of the company, right? The OP1 people?
01:22:40 ◼ ► And sticking off the side of this device is a crank. As in, like a thing that you turn like on a jack-in-the-box. You fold it out and you can turn the crank around and around.
01:22:52 ◼ ► No, it does not charge the device. The crank is not a charging mechanism. It is part of the control mechanism for games.
01:22:58 ◼ ► And the name of the thing, Playdate, is based, I assume, on the idea on their software model.
01:23:06 ◼ ► So you buy this device and with the device you get one season of games, which is 12 games. And every Monday a new game appears on your device.
01:23:14 ◼ ► Which means the device has to have some kind of wireless networking and it does. It has Wi-Fi, it has Bluetooth.
01:23:19 ◼ ► And so the Monday is your Playdate and you get 12 of those games. They come bundled as part of the price of this device.
01:23:28 ◼ ► And they are made by a collection of famous, I'm going to say indie game developers, but game developers who are known for making really good games that are interesting.
01:23:47 ◼ ► And why would you do this? Why wouldn't you just get those people to make a bunch of games? Or why wouldn't those people just make games for the Switch or one of the Game Boys?
01:24:02 ◼ ► Or why don't they make iOS games? Why is anyone doing any of this? Why would you make a game in black and white?
01:24:08 ◼ ► To a certain class of person this makes no sense. To another class of person they will go to the website which is play.date. Yes, .date is a top level extension these days.
01:24:19 ◼ ► Play.date and see the device and there's no more questions about why anyone would do this. They would just say, "That's amazing, I want that. That'll be so much fun to have."
01:24:27 ◼ ► Now it may be a bit of an expensive bubble for something that may only ever have 12 games in its entire life. Or it may become a collector's item or it may become a smash hit that it turns into the hipster portable gaming device that it looks like it already is.
01:24:43 ◼ ► I don't know what's going to happen with this. Panic doesn't know what's going to happen with it. And honestly, as Panic says in the article, I don't think they care and I don't think they should care. Shipping this in any form whatsoever is already a victory.
01:24:57 ◼ ► Like if you read the article and actually talk about how this came out of the idea of doing something like the anniversary of the company.
01:25:02 ◼ ► I was like, "Oh, we should make some cool thing." A regular company would be like, "Oh, we'll make a plaque or something." And they were like, "Maybe we'll make a commemorative clock." They were thinking about making some hardware thing just to celebrate the fact that the company has been around for 20 years or 50 years or however long it is. I don't even want to think about the math.
01:25:20 ◼ ► And that turned into this. It's like, "Well, we can make a little thing." And they were looking at screens you can put in the thing. Oh, look at the screen. The screen is neat. I wonder if you could play games on it. You could hide a game as an Easter egg and the little clock that you make. I'm speculating about what the thought process is here.
01:25:36 ◼ ► That's what this came out of. Just a bunch of people who are very talented and very smart having fun ideas of fun things to do and this is the result. So in the end, if literally nobody buys any of these things, which is not going to happen. People will buy them.
01:25:50 ◼ ► The fact that they were able to make this thing happen, it's like if you make the commemorative clock for your company's anniversary. You don't expect to sell them. In fact, you know you're just costing money. You just want to do it as a celebration.
01:26:03 ◼ ► This product feels like a celebration. It feels like a celebration of panic. It also happens to be a product that they're going to sell and they hope to make money on and so on and so forth. And they hope to have it be a platform or whatever. But it feels like a celebration.
01:26:15 ◼ ► To give just one other example, you might be looking at this thing and it's like, "What is it? Is it like a Raspberry Pi in there and they just wrote some weird software for it?" No, it is not. It is all custom hardware and they wrote their own OS for it.
01:26:28 ◼ ► Oh my God. Like why would you do that? Why is it not running Linux? Because it's a cool, fun thing. They wrote their own OS for it. It's ridiculous. The company's ridiculous. The people are saying, "This is an amazing thing that should not exist but does."
01:26:42 ◼ ► Everybody should go to play.date and bask in the glory that is this device, whether you're going to buy one or not.
01:26:49 ◼ ► I like your angle about how it's just a fun thing. That's the gist I got. Not only is Panic good at being fun because they're just that kind of company, but also when I discovered back when I had my brief fling with Raspberry Pis, I discovered there's this whole world out there of amazing hardware potential in the hobbyist realm.
01:27:14 ◼ ► And it's all really cheap and really capable and often really small. So the whole Raspberry Pi angle, the Arduino world, there's this amazing stuff out there.
01:27:26 ◼ ► And it gives you a degree of fun and the idea of you have this giant open field where you can do anything that you aren't getting so much from the big companies and their products these days. So much of what you get from the world of big tech and big gaming is very advanced in a lot of ways and you have tons of capabilities.
01:27:51 ◼ ► But it's increasingly locked down and it's increasingly corporate and less fun. And this is the opposite of that. This, I mean, I don't know what their plans are for locked down-edness.
01:28:05 ◼ ► I guarantee you this thing will not be locked down. I say that based on no information except knowing the people.
01:28:23 ◼ ► It seems like they're doing this more for the fun than anything else. And that is something, and it shows in the design, it shows in what they're doing, what they're not doing, what it is, what it isn't.
01:28:42 ◼ ► And it just seems so much more fun than anything that you're going to see from any of the big companies anytime soon.
01:28:50 ◼ ► And speaking of fun stuff, like, there's lots of fun in the gaming space. Like, some would say this is reactions like phone games and this is less stressful because the games are necessarily simple and the black and white angle.
01:28:59 ◼ ► There's all sorts of hipster-y stuff with this, right? But just thinking of the hardware, even among what we consider the most fun other game makers, the software is still really fun.
01:29:14 ◼ ► Let's take Nintendo. Nintendo, which Cable of Panic loves and so is sure everyone else at Panic and is a great example of a fun company.
01:29:23 ◼ ► In recent years, Nintendo's games continue to be amazingly fun. Like, they're just great. They're great games. Mario Kart is still fun. Zelda Breath of the Wild is amazing.
01:29:32 ◼ ► You look at those games and you'd be like, "Yep, Nintendo's still got it. They know where the fun is." But if you look at Nintendo's hardware, it has become a lot less fun.
01:29:41 ◼ ► The Joy-Cons come in a couple of interesting colors, but the Switch is a fairly straightforward hardware design that doesn't really have any particular fun quirks.
01:29:53 ◼ ► The Pro Controller is a black controller that looks like everybody else's thing. You just go back a few generations, the Wii was pretty fun. It was this wacky remote thing and it was white instead of black in its sort of default color.
01:30:08 ◼ ► The GameCube controllers were very wacky and came in all sorts of bright colors. The whole GameCube console came in a bunch of bright colors.
01:30:14 ◼ ► And then the Nintendo 64 was this ridiculous three-prong thing. Hardware used to be more fun. People used to be willing to take more risks with gaming-related hardware.
01:30:23 ◼ ► Sony was never fun. But Microsoft had the weird green alien Xbox theme with all the big blobs of stuff coming out of it.
01:30:33 ◼ ► If you look at this, it looks like something Nintendo would have made in the 80s, but Nintendo today is not making hardware that looks like this.
01:30:41 ◼ ► So I'm glad that somebody is making gaming hardware where the hardware itself looks like fun. Before you even turn it on, before you even do anything with it, it looks like a fun thing.
01:30:50 ◼ ► It looks like it can't be real. It looks like something you would make in a concept drawing or a prop in a sci-fi movie or something.
01:30:58 ◼ ► But it's a real thing. I can't wait to touch one of these things. I don't even like handheld games. I'm getting one of these obviously because I have to. It's the law.
01:31:08 ◼ ► I'm drawn to it. But ergonomically speaking, I'm not going to be able to spend a long time playing this because it's a D-pad and two buttons and a flat little thing.
01:31:18 ◼ ► But the game should be short enough that I don't have to do that. And honestly, I just want to have it as an artifact, as a triumph of people doing something for the sake of doing it that embodies all their values.
01:31:33 ◼ ► And not just making it a one-off thing that they make for their anniversary and sticking a glass case in their headquarters, but actually going through the trouble, which as we've sort of been discussing in this whole show's history and in particular today's show,
01:31:44 ◼ ► going through the trouble to make a product and ship it. Granted, it hasn't shipped yet, but still, they didn't just make it for themselves.
01:31:51 ◼ ► And it's so much more work to make a thing that everyone else can buy and use than to just make a one-off thing that's just for you.
01:31:59 ◼ ► Yeah, this looks awesome. And I'm not even usually into this sort of thing. I mean, I do have a Switch and I do like it, but I don't play it that terribly often. But this looks awesome. And I know some of the people at Panic, and they are all phenomenally good at what they do.
01:32:14 ◼ ► Annoyingly so. They're so good at what they do that when they decide to do other things, they're good at that too. Like building your own OS. What kind of monster builds your own OS? Why would you take that on?
01:32:24 ◼ ► Well, because they're Panic, and that's what Panic does. So this looks super cool. I'm super amped to try this out at some point.
01:32:30 ◼ ► Yeah, that was kind of Cable's point of like, "We're smart people. We can do things." Like, there's nothing, like what's stopping, like, this is the question, like what's stopping us from doing a ridiculous thing?
01:32:42 ◼ ► Like, if you have a regular job, you know what's stopping you. Like, you don't run the company. You can't decide, "Oh, I work with a bunch of smart people. We should, you know, try making our own car." I mean, Apple can do that, I suppose. But most people, most companies can't do that.
01:32:56 ◼ ► But that important realization that Panic had is like, "There's no one telling us what we can or can't do. As long as we are financially cautious and, you know, understand what our limits are and take things slow, we're all smart people and we can figure things out."
01:33:12 ◼ ► And that's exactly the same kind of can-do attitude for, like, you know, indie app developers, just expanded outside their comfort zone, outside the realm of their ostensible expertise. And it turns out you can get expertise in anything if you just try it and plug away.
01:33:27 ◼ ► And by the way, this took them about five years to make this, so it's not like you can do it in a weekend, but if you are dedicated and believe and are careful and have a bunch of smart people, there's nothing you can't do.
01:33:37 ◼ ► All right, we are running a little low on time, so we may not make it to Ask ATP this week, and if not, I apologize. But we have one more thing we absolutely need to talk about, which is the new MacBook Pros. So, Marco, I presume you've already bought and returned three of these?
01:33:55 ◼ ► You were just complaining about the CPU power of your 13-inch. Well, boy, have I got the new 13-inch for you.
01:34:01 ◼ ► I didn't buy it. Don't worry. Not yet. Give me at least a few weeks before I waffle and eventually buy it.
01:34:07 ◼ ► Yeah, right. All right. I'll allow it because we don't have time to argue. But anyway, yeah, go ahead.
01:34:12 ◼ ► Maybe a few days. Anyway, so... You know I'm going to get the 15-inch eventually, probably. Anyway, so, yes, so there's new MacBook Pros. Only the Touch Bar models are updated.
01:34:23 ◼ ► And it's a boring spec bump update for the most part. And there's been a lot of mixed reactions and a lot of people, understandably, expect me to be super mad because it's still using basically the same keyboard.
01:34:39 ◼ ► Now, here's why I'm not that mad. I mean, part of it's because I was just at the beach and I'm really happy, even though everything I did failed, you know, and they released more butterfly keyboards.
01:34:50 ◼ ► I probably should be more mad than I am, but the fact is when all this bad stuff happens at the beach, I'm still able to be happy.
01:34:57 ◼ ► But here's the thing. They did a boring spec bump update. The 13-inch and 15-inch with Touch Bar models are faster. They have faster CPUs. That's a good thing.
01:35:11 ◼ ► This kind of boring update is what we've been hoping to see from them after years of neglect in like the 2014, 2015 kind of era.
01:35:22 ◼ ► And since 2016, when they released the Touch Bar models, they have kept up the pace of updates. They have done MacBook Pro spec bump updates every year since then for the Touch Bar models.
01:35:35 ◼ ► The other one, like the MacBook Escape, has been a while, and the 12-inch is also kind of outdated now.
01:35:41 ◼ ► But the Touch Bar models, which are the high-end models, they have been updated every year with spec bumps since 2016.
01:35:48 ◼ ► And not only that, they don't wait to update them if there's not a complete suite of updates. So if the only thing that they can update are GPUs, they update the GPUs.
01:35:58 ◼ ► This past winter, they updated the GPUs for the 2018 models mid-cycle. And now they're using those same GPUs for these new 2019 models because they're still the current models.
01:36:10 ◼ ► So that means they had a good GPU update available halfway through the 2018 model's lifecycle, and they didn't just wait for the 2019 CPUs to be ready and hold back those GPUs.
01:36:20 ◼ ► They updated the GPUs as soon as they could, and now they updated the CPUs as soon as they could. And this is a pretty good pace. This is amazing.
01:36:28 ◼ ► This is the kind of thing we want them to do more of. Don't hold back updates for major revisions.
01:36:35 ◼ ► If a major revision isn't ready yet, just ship a boring spec bump update because that's way better than nothing. And that's exactly what they did.
01:36:43 ◼ ► The more interesting part here is that they revised the keyboard slightly again, and they seem to think this is going to make it more reliable.
01:36:53 ◼ ► This is like the fourth minor revision of the butterfly keyboard, trying to improve the feel or the sound or dust and grass to make it more reliable.
01:37:05 ◼ ► They keep trying to put band-aids on this keyboard, trying to fix its problems, and this is another one of those. They seem to think, based on their comments to the press, they seem to think that this is going to be a substantial fix for the failures of where you'd have either missed keys or double-pressed keys or whatever else.
01:37:24 ◼ ► And we don't know if that's going to actually pan out that way. Time will tell, and we don't have that yet. So hopefully it does.
01:37:30 ◼ ► Honestly, I don't have incredibly high hopes just because we've been burned so many times. Every year we think they're going to fix those reliability problems, and every year so far they haven't.
01:37:46 ◼ ► They also, although this time they had this extra little bit where they have added these immediately to the keyboard repair program, which means you no longer have to preemptively buy AppleCare out of fear that your keyboard might die because they are saying right up front that these will be guaranteed from keyboard problems for four years after purchase.
01:38:07 ◼ ► As well as last year's models and all other butterfly keyboards are now part of this program as well. So all butterfly keyboards that have shipped to date, including the ones that are brand new, are covered for four years after purchase for keyboard problems.
01:38:19 ◼ ► So that's a good thing. You can tell they're trying to reassure the customers as much as they can. So that's good. Whether they've actually solved the problem remains to be seen, and these are still keyboards that ultimately I hate for lots of other reasons.
01:38:32 ◼ ► But they did revise this keyboard again in a way that might actually solve the problem. I hope it does.
01:38:39 ◼ ► Now, many of us, myself very much included, are disappointed to see yet another update come with the same goddamn keyboard that we've been hating for like three years now.
01:38:52 ◼ ► It feels like they're just going to keep giving us the same damn keyboard until we just give up the fight and accept that we're never going to have a good keyboard again.
01:38:59 ◼ ► But here's why I have more hope than that this time. There is this rumored 16-inch MacBook Pro on the horizon.
01:39:10 ◼ ► And the rumors are very strong that it has a completely different keyboard. And everything I've heard about this keyboard is what I want.
01:39:20 ◼ ► I've heard it has scissor switches, which are reliable. I've heard they have 1mm of travel, which is I think about double what the butterfly keys have. I've heard it has inverted T arrows.
01:39:31 ◼ ► Wider margins between the keys so it's less error-prone. Basically very similar specs to the desktop Magic keyboard that is widely liked.
01:39:40 ◼ ► And I've heard that it has a physical escape key next to the touch bar. I would love to have an option without the touch bar, but that's the next best thing.
01:39:47 ◼ ► So that rumored 16-inch sounds like a massive upgrade in reliability, ergonomics, accuracy, and the mass appeal of the keyboard.
01:39:57 ◼ ► That's the big thing these have lacked. Even if they've fixed the reliability problems, the butterfly keyboards don't have mass appeal.
01:40:03 ◼ ► Some people love them, a lot of people hate them. So that's what is rumored for this 16-inch MacBook Pro.
01:40:10 ◼ ► And the reason I still have hope, even after getting this update this week with just the same old keyboard basically, I still have hope because we didn't get that 16-inch MacBook Pro.
01:40:21 ◼ ► Now yes, I am disappointed that we have yet another year of the butterfly keyboards, but since those aren't the new 16-inch model, that more likely just means that model is not ready yet.
01:40:33 ◼ ► And that's fine. I'm impatient, I want it now, but better late than wrong. Because what would be way worse is if we did get the 16-inch this time and it still had the same butterfly keyboard.
01:40:47 ◼ ► Because that would be a way stronger indicator that even when they've had the time and engineering to do a major hardware redesign, they didn't think they needed to put a better keyboard in there.
01:40:57 ◼ ► That would strongly signify that we're stuck with the butterfly keyboard for the next 3 to 5 years or however long that generation lasts. But that's not what happened.
01:41:06 ◼ ► We got a boring spec bump update to what we already had, and that is a much better alternative than if the all new product, the 16-inch, had come out and it still had that damn keyboard that I hate.
01:41:19 ◼ ► So this feels like a stopgap update. To keep this lineup updated regularly, which is what we want, until the next generation is ready.
01:41:29 ◼ ► And whether the next generation ends up being good or not is, you know, that's still an open question.
01:41:35 ◼ ► But that is much better than an answered question that is answered in a way we don't want.
01:41:41 ◼ ► So I still have hope. We just need to wait a little bit longer probably. And in the meantime, if you need a MacBook Pro now or if you want more performance or whatever else, this seems like a reasonable buy.
01:41:54 ◼ ► Like, they have made them faster. It's basically just CPU update, but they're good CPUs. The 15-inches now have up to 8 cores in them, which is kind of amazing.
01:42:03 ◼ ► What remains to be seen is whether the thermals can hold up to that. I'm told that they can, but we have to wait and see how it plays out in practice.
01:42:11 ◼ ► But it seems like a solid spec bump update after a series of nice and frequent spec bump updates to this lineup.
01:42:21 ◼ ► So I do think, and I get the strong feeling, they are listening to us, but the answer is not ready yet.
01:42:29 ◼ ► Yeah, I think that's fair. And I think it's like, what's the turn of phrase, like a cold glass of water in hell or something like that?
01:42:37 ◼ ► Where, you know, at this point it doesn't take a lot to get us excited that positive steps are being made.
01:42:42 ◼ ► And this is more than one positive step. You know, it's a series of positive steps, as you were saying earlier, that it is being clear now, or it has been clear now, that they are trying to do spec updates pretty much annually.
01:42:58 ◼ ► Which, for me, I don't buy a new laptop annually. In fact, the MacBook Adorable that I have, even though it's something like two or three years old now, is the most modern MacBook Adorable they make, as far as I'm aware.
01:43:10 ◼ ► Like, I don't think it's been even spec bumps since then. But for the pro laptops, where you might get a new laptop every year, if this is literally your only computer and this is how you run your business, those are getting spec bumps, which are boring and uninteresting.
01:43:24 ◼ ► And that's perfect. Like, that's exactly what professionals want. So, I'm really, I'm way more excited than not just like you were saying, Marco. And I'm hopeful that this fancy new 16 is going to be the answer to all our prayers.
01:43:42 ◼ ► Yeah, unfortunately, I feel like Apple has lost all benefit of the doubt when it comes to the reliability of their various Band-Aid fixes, because they keep trying to fix this keyboard and they keep failing. So, I would say, take a wait and see attitude with this.
01:43:54 ◼ ► The semi-good thing about it is if you have the previous keyboard, the membrane keyboard, and it breaks, they will replace it with one of these.
01:44:06 ◼ ► So, on the off chance that this one actually does improve matters, and you eat a cracker over your computer and the keyboard breaks, you can, it's not like you were in the situation you were in before, where it's like, well, all we can do is replace it with the exact same keyboard that just broke.
01:44:21 ◼ ► Now, at least you can get it replaced with a different keyboard. Unfortunately, if you have, I don't know how far back it goes, I think basically anything before the membrane keyboard.
01:44:28 ◼ ► Yeah, so the only ones that can get it are the third-gen ones, which are the 2018 Touch Bar models, and the MacBook Air.
01:44:35 ◼ ► Yeah, so if you have a 2018 Touch Bar model or the new MacBook Air, this can be fitted to your computer if it gets serviced. If you have anything before that, it can't.
01:44:43 ◼ ► Yeah, and the other, like, and so that's not great for those people with the older laptops, because again, their option is only just to get it replaced with something else.
01:44:50 ◼ ► Also, the standing issue with the repair program is it's four years, which is better than one year, but not as good as, you know, like, some people like to keep their laptops for more than four years.
01:45:00 ◼ ► So if you buy one of these and it's a $3,000 laptop and you're like, "I'm going to use this for the next six years," yeah, you're probably not unless you're paying for a new keyboard, because four years is not the same as "we'll replace it forever" or "we'll replace it."
01:45:11 ◼ ► You know, it's just, it's not great, right? And the idea that, like, so they put in the 2018 models, which previously weren't part of the repair program, but they weren't out of warranty, so they just got that under the line where it's like, "Oh, we didn't let those things age out."
01:45:23 ◼ ► Right before they all go out of warranty, we extend the program to them. And also, the brand new ones are in the warranty program from day one, which can be taken two ways.
01:45:30 ◼ ► One is like, well, it's just Apple saying that they know they haven't fixed a problem because they're putting it in their repair program.
01:45:35 ◼ ► But on the other hand, a great signal when the 16-inch comes out with a totally new keyboard would be for them to also include the keyboard repair program.
01:45:43 ◼ ► Why? Because they'd have confidence that it wouldn't be used. Like, so it's both a signal, it's a security signal saying, "Don't worry about it. If you have a problem, you're covered."
01:45:51 ◼ ► But it could also be taken as a signal of confidence for like, "We believe so much in the reliability of this keyboard that if you have any problem for four years..."
01:45:59 ◼ ► Like, it's like the powertrain warranty on your car, right? Like, the car has some sort of warranty, but the powertrain is longer because they have such faith in the powertrain or whatever.
01:46:07 ◼ ► Granted, they're not, it doesn't read that way because they're not coming from a position of strength, but I don't take it as a signal that they don't believe in the keyboard.
01:46:17 ◼ ► I don't believe in the keyboard, and I don't think anyone else should believe in the keyboard, but the warranty is not a signal one way or the other about Apple's belief in it.
01:46:25 ◼ ► I'll actually kind of be surprised if they put that warranty on the new keyboard. I think they'll just go back to the old one.
01:46:40 ◼ ► But yeah, I'm with Marco. It's good that they're doing things. It's good that we didn't get the bad answer that we don't want, which is you're just going to have to live with this keyboard forever and Apple's laptops are forever dead.
01:46:54 ◼ ► No matter how this resolves, I continue to think that this keyboard mess-up is the worst thing Apple has ever done to their laptop line in the history of the company.
01:47:03 ◼ ► I hope they agree. Again, we all believe and hope that they're in the process of fixing it. It's not fixed yet.
01:47:12 ◼ ► We're only in year 4-ish of this keyboard, so if it was going to be a Mac Pro-level disaster, we'd have much longer to go.
01:47:22 ◼ ► But then again, laptops are Apple's bread and butter in the Mac line, and the Mac Pro is not.
01:47:27 ◼ ► So it probably already is so much bigger than the Mac Pro situation because everybody has laptops and nobody had the Mac Pro.
01:47:34 ◼ ► So it's kind of disappointing. This is not our WWDC prediction show, but I feel like this does strongly influence what we're all going to expect from WWDC.
01:47:48 ◼ ► Oh yeah, I think it is possible that they would announce it at WWDC, but I think it's very unlikely now.
01:47:57 ◼ ► I did think technically the WWDC keynote is within the Apple Store 14-day return window from the date that these are announced.
01:48:08 ◼ ► In reality, I think it's very unlikely we're going to hear about any new laptops then. Doing this right before the keynote is clearly a deck-clearing move.
01:48:19 ◼ ► They are making room for whatever's going to be in the keynote to not be tarnished by us saying, "Oh my god, you released new MacBook Pros with the same keyboard that we all have problems with?"
01:48:42 ◼ ► I know. Gruber had a nice article about how it's probably not no hardware, because they would have probably said that by now.
01:48:49 ◼ ► So I'm guessing we will see the Mac Pro teaser. I don't think we're going to see a Mac Pro release, but I do think we'll see a Mac Pro announcement and a teaser and maybe a "for sale later this year" kind of thing.
01:49:01 ◼ ► By having the laptops have this update now, two weeks ahead of time, that will make us not complain about the lack of that 16 inch that we all want and the new keyboard that we all want.
01:49:16 ◼ ► We won't be talking about that when they want us to be talking about the new APIs, the new SDKs, and possibly the new Mac Pro.
01:49:24 ◼ ► This, by the way, in the history of Apple keyboard band-aids, this is the first band-aid that they have explicitly said is meant to address reliability.
01:49:34 ◼ ► Before, we all knew the membrane was meant to address reliability, but that's not what they said.
01:49:39 ◼ ► So now it's like, Apple being honest with us, saying what we all know to be true, they're making progress.
01:49:45 ◼ ► If you're like, "Apple's going to therapy," it's like, "Good. The first step is admitting your keyboard has a problem. Admitting it in public. To the press."
01:49:53 ◼ ► Well, and a lot of people are disappointed that they haven't said or done more, but keep in mind, you've got to figure, be realistic, this is a public company dealing with significant product flaws that are the subject of active litigation.
01:50:07 ◼ ► They can't say a lot about that. It's kind of amazing they've even said as much as they have.
01:50:12 ◼ ► I think that's why most of the keyboard-related info on this release was provided to press on background during phone calls.
01:50:23 ◼ ► So that means no direct quotes, and the Apple press release does not include anything about the keyboard. It's not even mentioned.
01:50:31 ◼ ► Because they probably have to be very careful, because they are a public company dealing with things they're being sued over, and dealing with flaws in their current product line in a lot of cases.
01:50:44 ◼ ► The change to this keyboard, even if it does fix the problem, which we won't know for a while probably, but even if it does fix the problem, it doesn't help anybody who bought the last ones, or who buys the ones that are still for sale, that don't have this keyboard, which includes all of their current models except for these new Touchpad models.
01:51:07 ◼ ► And only the MacBook Air out of the other models can even be updated to this keyboard during service.
01:51:14 ◼ ► If you buy the 13-inch without Touch Bar, the Escape, or if you buy the 12-inch, you can't even get this keyboard in service afterwards.
01:51:23 ◼ ► So those models are still being sold with a keyboard that they're basically not quite saying, but if you do the logic they're basically directly saying, "Oh yeah, those keyboards will break a lot."
01:51:35 ◼ ► And they're being super careful about how they word this, and they're trying to keep everyone focused on how great these MacBook Pros are, how fast they are, and everything.
01:51:44 ◼ ► But we all know, the elephant in the room is like, these keyboards have big problems, and this fix not only might it not work, we don't really know yet, but it's also only on two of the models, and being eligible for a third.
01:51:59 ◼ ► But there's like two other models in the lineup that just have no luck with this, I guess.
01:52:04 ◼ ► I feel like these new MacBook Pros are like the Mac Pro in one particular way, in that at a certain point the Mac Pro entered this realm where if you saw someone buy it, you knew it was because basically they had to.
01:52:21 ◼ ► So I feel like, obviously among the general public this is not the case, but among the Apple-enthusiast computer nerd people who are on this program and are listening to it,
01:52:31 ◼ ► if you find yourself buying one of these new laptops, you're either unreasonably optimistic about the prospects for this keyboard, or it's like, "I need a laptop, and I can't wait for whenever the heck this mystical 16-inch is going to come out."
01:52:46 ◼ ► Or maybe, "I don't even want a 16-inch, maybe I want a 13-inch, I can't wait around for this. I need a laptop now, and I have to buy one."
01:52:52 ◼ ► And you go with the best that's available, and you deal with the four-year extended warranty on the keyboard, and you deal with, "Oh, we didn't mention this."
01:53:01 ◼ ► They've been doing this for a couple announcements about this for the past month or two about how they're trying to turn around the keyboard repairs faster, because they are common, and it's a pain to be without your computer for a week at a time, so now it's only a day or two, and they're prioritizing those repairs.
01:53:15 ◼ ► So, everyone is acknowledging this. It's not a great situation. If you need a laptop, what choice do you have? You're going to have to get one. These are the only ones they offer. They all come with various levels of crappy keyboard.
01:53:26 ◼ ► We give you an extended warranty, and if you have a problem, we'll try to turn around your repair fast, and we're all just waiting patiently for good laptops to come out of Apple for a change.
01:53:37 ◼ ► All right, thanks to our sponsors this week, Linode, Boosted Boards, and Apollo, and we will see you next week.
01:53:45 ◼ ► Now the show is over, they didn't even mean to begin, 'cause it was accidental, oh, it was accidental.
01:53:57 ◼ ► John didn't do any research, Marco and Casey wouldn't let him, 'cause it was accidental, oh, it was accidental.
01:54:08 ◼ ► And you can find the show notes at ATP.FM, and if you're into Twitter, you can follow them at C-A-S-E-Y-L-I-S-S, so that's Casey Liss, M-A-R-C-O-A-R-M, N-T, Marco, R, M-N, S-I-R-A-C, U-S-A, Syracuse, it's accidental.
01:54:51 ◼ ► For the preview for video? Yeah. No? You didn't see that recommended? Am I forgetting what that DaVinci Resolve?
01:54:58 ◼ ► I've heard of that before, but I don't know what it is. I assumed it was like a more advanced video editing tool.
01:55:04 ◼ ► World's only solution that combines professional 8K editing, color correction, blah, blah, blah, yeah.
01:55:09 ◼ ► Is it free? I don't know. I can't imagine. Oh, I found what you need. Let's see. I'll put this in the chat room.
01:55:17 ◼ ► This is the setup that you need. What is going on here? What is that control surface? Oh, my word.
01:55:23 ◼ ► Forget about your Microsoft Sculpt keyboard, check that out. How can you edit video without that? Ask yourself that.
01:55:29 ◼ ► Wow. I love the giant lever with the handle on the left. Oh, yeah. Like right by her left hand there.
01:55:35 ◼ ► That's when you want to take off. Exactly, yeah. It's a full throttle ahead. Oh, wouldn't it be great if that would control your CPU speed?
01:55:42 ◼ ► Like the old turbo buttons, but now you have this giant... The turbo lever. Yeah. Oh, man, like a boat throttle.
01:55:49 ◼ ► This has three track balls, each with three buttons above it for your three hands, like the Nintendo 64 controller.
01:55:55 ◼ ► Oh, my word. That's fantastic. This is what I need when I do my... When I finally finish my Tesla video.
01:56:02 ◼ ► I need all this. Look, there's even a Wacom all the way on the left. Next to the coffee cup.
01:56:06 ◼ ► Right. It's hilarious because like you can't even reach that. Like why is that even there? Oh, look, it's a Mac Pro.
01:56:11 ◼ ► Yeah, hiding in the corner. Oh, yeah. You thought it was a potted plant with no plant in it, but it's not.
01:56:16 ◼ ► I didn't even see that. Can the Mac Pro even drive all those displays? They're small. They look small.