Unofficial Accidental Tech Podcast transcripts (generated by computer, so expect errors).

364: A Casey Settings Screen

Casey surprises everyone with a new app, John fixes Dock folders, and Marco names Wi-Fi networks.

Episode Description:

Sponsored by:

  • Jamf Now: Set up and protect your Apple devices at work, from anywhere. First 3 devices are free.
  • Kolide: User-focused security for teams that Slack.
  • Squarespace: Make your next move. Use code ATP for 10% off your first order.

MP3 Header

Transcribed using Whisper large_v2 (transcription) + WAV2VEC2_ASR_LARGE_LV60K_960H (alignment) + Pyannote (speaker diaritization).


  1. Hyper-l33+ web developer
  2. Dockery
  3. One last XDR thing!
  4. John’s internal storage
  5. F-U: iPad multitasking
  6. Sponsor: Squarespace (code ATP)
  7. Peek-a-View 🖼️
  8. Sponsor: Kolide
  9. SwiftUI
  10. Google Photos bug
  11. Sponsor: Jamf Now
  12. #askatp: Homebrew 🖼️
  13. #askatp: ^⌥⇧⌘
  14. #askatp: Wi-Fi network names 🖼️
  15. Ending theme
  16. Post-show 🖼️

Hyper-l33+ web developer

⏹️ ▶️ John Hyper elite web developer. I would have gone with one three three plus. That’s what I would have gone

⏹️ ▶️ John with

⏹️ ▶️ Marco plus. I’ve never seen that lower. It’s like a tea.

⏹️ ▶️ John Yeah,

⏹️ ▶️ Casey I don’t know if I would have used plus. I can get behind the one

⏹️ ▶️ Casey, John because

⏹️ ▶️ John because you’re not hyper elite. I understand why you want to go with the plus.

⏹️ ▶️ Marco I mean, I get it. I just never seen it written that way. That’s right, because you aren’t ready to be that late.

⏹️ ▶️ Casey I debated between the T and the seven and I went with the T but and I could absolutely see

⏹️ ▶️ Casey the one I’m right what they’re with you with the one, but the plus, I agree with Marco that that came

⏹️ ▶️ Casey out of left field.

⏹️ ▶️ John No, it’s usually it’s a seven. You have both attained a new level of leadness today. It has to be either a T or

⏹️ ▶️ John a seven. That’s the levels one and two. Plus you go to the next level.

⏹️ ▶️ John It blows people’s minds like he’s so leaky. Here’s the plus for a tea. That’s madness


⏹️ ▶️ Casey So if if I command click on Safari which one would think would on

⏹️ ▶️ Casey the dock which one would think would open a new Safari Window, would you not I get a new command

⏹️ ▶️ John command click reveals it in the finder. What are you talking about?

⏹️ ▶️ Casey So maybe I’m just a moron because anytime I do that I get a new finder window So I guess I am a more

⏹️ ▶️ John know when you when you hold down the command key and click on the finder window finder icon In your dock, it

⏹️ ▶️ John should show the finder application in the finder or whatever.

⏹️ ▶️ John, Casey You know what I mean? You know I’m saying

⏹️ ▶️ Casey Oh, yeah, you’re right. Okay. Well, at least I know I’m an idiot and and it’s expected behavior

⏹️ ▶️ John command option Click on a folder does what click should do on a folder God. I wish I could

⏹️ ▶️ John change that Can I get an agreement on that by the way? Single clicking with the regular plain old left

⏹️ ▶️ John mouse button on a folder that is in your dock Should open that folder

⏹️ ▶️ John in the finder.

⏹️ ▶️ Casey Oh, you mean rather than doing the like explode

⏹️ ▶️ John out rather than doing One of the other two things it does neither of which I ever want

⏹️ ▶️ Casey icons. Steve McLaughlin Why do I get a feeling that we’re hearing the genesis of app number two or three or seven for you? Paul Shuffling

⏹️ ▶️ Casey If

⏹️ ▶️ John only, if only

⏹️ ▶️ John, Casey I could

⏹️ ▶️ John do that type of stuff. We don’t live in a world where you can hack the dock anymore. Steve McLaughlin The struggle

⏹️ ▶️ John is real. Paul Shuffling But do either one of you use like the springing out bendy tower thing or the giant

⏹️ ▶️ John grid of icons that you can never find anything?

⏹️ ▶️ Casey Steve McLaughlin I use the giant grid of icons that I, that you are correct, I can never find anything for downloads and only downloads. And

⏹️ ▶️ Casey that is the only folder that is in my dock.

⏹️ ▶️ Marco I only I use it for downloads constantly, but I only scroll to the bottom

⏹️ ▶️ Marco and hit show in finder I’m

⏹️ ▶️ John gonna give you the advanced technology just hold down command an option and click on downloads and it will just open

⏹️ ▶️ John Oh, then you can sort reverse by date and

⏹️ ▶️ Casey that is very clever. I did not know that

⏹️ ▶️ Marco yeah, cuz I keep downloads sorted by date descending and What what has always annoyed

⏹️ ▶️ Marco me about those finder those folder stack things in the dock is that they completely ignore the settings that you? have to sort

⏹️ ▶️ Marco files. And also, you can’t right-click on them and get a context menu on the

⏹️ ▶️ Marco things in there.

⏹️ ▶️ John I would suggest sorting your Downloads folder by date added rather than date modified,

⏹️ ▶️ John because sometimes it’s possible to get things that unzip and have a modification date that’s in

⏹️ ▶️ John the past and they aren’t at the top. So if you sort by date added descending, and you always Command-Option-click

⏹️ ▶️ John on the Downloads folder, it will open a Finder window. I think that should either be the default behavior or

⏹️ ▶️ John one of the choices. If you like the bendy stack, fine, go for it. If you like the big grid, fine, but what if you just want

⏹️ ▶️ John the window to open in the Finder? That would be nice too. Totally agreed. I’ve been command option clicking on the…

⏹️ ▶️ John Now that I used to use a drag thing dock for this. You used to have no folders in my dock and I had a drag thing dock that was

⏹️ ▶️ John down in the lower right corner that had folders in it. And when you clicked on them, they

⏹️ ▶️ John opened their windows in the Finder. That was cool.

⏹️ ▶️ Casey You really had your world rocked by drag things disappearance,

⏹️ ▶️ Casey didn’t you?

⏹️ ▶️ John I mean, it’s not that bad. Like putting, because the screen is so big, I’ve got a lot of room for folders in the doc

⏹️ ▶️ John now.

⏹️ ▶️ John, Casey And I’m so accustomed

⏹️ ▶️ John to, to command clicking, command option clicking folders in the doc

⏹️ ▶️ John that it is a very pretty ingrained habit. But every once in a while, it bothers me when I remember that that,

⏹️ ▶️ John that I have to keep doing that.

⏹️ ▶️ Casey I’m sorry for your struggles, John. Are you, I don’t remember, you’re a side doc person. Is that right?

⏹️ ▶️ Casey Nope. bottom docker. I thought you were and then I convinced myself no, John wouldn’t do

⏹️ ▶️ Casey such a barbaric thing. Do you at least hide it automatically? At least? No. John!

⏹️ ▶️ John Hidden dock is the worst. I don’t want

⏹️ ▶️ John, Casey to go out there and wait for a thing. What is this, iOS?

⏹️ ▶️ John I got to drag my finger to the bottom of the screen and wait? No. No waiting.

⏹️ ▶️ Casey Why, John? Why? Why the bottom?

⏹️ ▶️ Casey, John My

⏹️ ▶️ John screen is really big. Believe me, I’m not hurting for screen

⏹️ ▶️ Casey real estate. Now I will allow it, but before now, no. Yeah,

⏹️ ▶️ John I did it on side on laptops because they were too small. Yes,

⏹️ ▶️ Marco yeah. On laptops, I always do left side, but on laptops, I do auto hide. On desktops, I don’t.

⏹️ ▶️ John Interesting. Yeah, I don’t know.

⏹️ ▶️ John, Casey You’re not

⏹️ ▶️ John a lefty, are you, Marco? No. No, left side is the correct side. Left side dog is madness.

⏹️ ▶️ John Why? Why? It’s just plain madness. Why? I read from left to right. Right,

⏹️ ▶️ John exactly. So it should be left to right, top to bottom. The upper left corner is the, especially on

⏹️ ▶️ John a small screen, is the most prominent location. The dock shouldn’t be there. It’s an auxiliary

⏹️ ▶️ John thing. It should be far away from the upper left.

⏹️ ▶️ Casey It’s not there. It’s auto hidden. Oh, and dock is also madness. Hey, let me really

⏹️ ▶️ Casey piss you off.

⏹️ ▶️ John Yeah, would you auto hide the menu bar too?

⏹️ ▶️ Casey No, no, no,

⏹️ ▶️ John even worse. No, that’s barbaric. I mean, if you had an 11 inch laptop, maybe, I guess.

⏹️ ▶️ Casey I do have an 11 inch laptop, but no, I, or 12 inch, strictly speaking. I,

⏹️ ▶️ Casey I like the, uh, I like genie mode and I like magnification.

⏹️ ▶️ John Magnification. I could take or leave genie is the default, right? So then

⏹️ ▶️ John, Casey everyone’s using

⏹️ ▶️ John it unless they change it.

⏹️ ▶️ Casey Most people are very, very angry when I, when I mentioned that I use magnification.

⏹️ ▶️ John I quite like it. I mean, it doesn’t actually change the size of the targets

⏹️ ▶️ John really. It’s for at least width wise. Uh,

⏹️ ▶️ John I could take it or leave it. I don’t use it personally, but I don’t think it’s so terrible.

⏹️ ▶️ Casey You are right that I shouldn’t give you too much flack since you do have a monitor that’s approximately the same size as your

⏹️ ▶️ Casey main television, but I still think left side’s where it’s at, personally.

⏹️ ▶️ John Yeah, I got a lot of windows open these days. Let

⏹️ ▶️ Casey me tell ya.

One last XDR thing!

⏹️ ▶️ Casey Speaking of your monitor, that’s a perfect segue to begin follow-up. Pro Display XDR reference

⏹️ ▶️ Casey modes. Would you mind telling me about this?

⏹️ ▶️ John Yeah, we can’t escape this topic. This is one more thing. I swear the

⏹️ ▶️ John, Casey last one, last time

⏹️ ▶️ John someone wrote in about using True Tone and how they endorsed it, and they mentioned this ISO spec,

⏹️ ▶️ John ISO 12646. Well, one of the

⏹️ ▶️ John anonymous experts about the Pro Display XDR chimed in and said, one of the reference modes for

⏹️ ▶️ John the Pro Display XDR is exactly for ISO 12646. You can set it to

⏹️ ▶️ John this mode and then it disables True Tone and it sets it to this mode that is apparently super warm and then if

⏹️ ▶️ John you have your room set up the way that ISO spec says you’re supposed to have your room set up, there you go. You’re

⏹️ ▶️ John all ready to do whatever the hell it was. Soft proofing on printed materials. So,

⏹️ ▶️ John boy you can really just spend all day going through the 800 reference reference mode supported by this and

⏹️ ▶️ John watching each one of them and going, Oh, that looks weird. Probably just because your room isn’t set up

⏹️ ▶️ John right.

⏹️ ▶️ Casey I’m surprised you haven’t gone full t checks, tune up or whatever it’s called on your monitor yet.

⏹️ ▶️ John Well, that’s the whole point I bought from them. They’ve already it’s calibrated at the factory, they put it on with the undercoating.

⏹️ ▶️ Casey Well, done. Oh, my goodness. All right, so no other back pro follow

⏹️ ▶️ Casey up. That’s it. That’s That’s all we have.

John’s internal storage

⏹️ ▶️ John I think the only other I mean if you’re asking some I do have some I continue to

⏹️ ▶️ John Assess the internal storage situation on my Mac There are many options for sticking

⏹️ ▶️ John all every kind of storage you can imagine inside here. You can put I think six

⏹️ ▶️ John 3.5 inch hard drives in here if you want you can put in six or seven

⏹️ ▶️ John PCI cards these two which can hold up to four M dot to

⏹️ ▶️ John SSD thingies, you can put in a $400 rack mount thing that you can put two 3.5 inch drives in or two 2.5

⏹️ ▶️ John inch drives. All these options are very

⏹️ ▶️ John expensive and none of them I find particularly satisfactory at this moment. I would have already bought

⏹️ ▶️ John that two drive Pegasus thingamabobber that Stephen Hackett bought

⏹️ ▶️ John if it didn’t cost $400 and come with an eight terabyte 3.5 inch hard drive that I don’t want. Yeah,

⏹️ ▶️ John that’s fair. I continue, maybe Steven will get tired of it and he’ll sell his old one to me. I’m looking

⏹️ ▶️ John, Casey for them on

⏹️ ▶️ John eBay. Like I just want the thing with no drives in it. I’ve got drives. I don’t need

⏹️ ▶️ John your drives. I just want a convenient little case to mount things in. And

⏹️ ▶️ John so I’m still waiting on that and it’s kind of frustrating because right now like I’m backing up

⏹️ ▶️ John Time Machine to this dinky little external 2.5 inch spinning hard drive that I have.

⏹️ ▶️ John And it’s a pain to have to connect it every once in a while, let it do its thing and I don’t want to leave it connected because it’s just weird to have dangling.

⏹️ ▶️ John Anyway, I got a lot of room in my case. Still haven’t filled it, and I’m still waiting for the new video

⏹️ ▶️ John cards to come out. They still haven’t released the supposed W5700XT or

⏹️ ▶️ John whatever it is that they’ve been advertising forever. So, you know, the

⏹️ ▶️ John wait continues, partially on Apple and partially on third-party people. I can’t believe that OWC or somebody

⏹️ ▶️ John hasn’t just come out with like the $50 version of an empty bracket where you can stick drives.

⏹️ ▶️ John because Pegasus made one, but they just insist on making you buy an 8TB drive for $400, which

⏹️ ▶️ John is kind of cruddy.

⏹️ ▶️ Casey I’m so sorry.

F-U: iPad multitasking

⏹️ ▶️ Casey All right, we should also clear the air with regard to iPad multitasking. I went

⏹️ ▶️ Casey on a bit of a rant last week moaning about how I don’t care for the way iPad

⏹️ ▶️ Casey multitasking is, and I think all of us were moaning at some point or another about this, but I in particular,

⏹️ ▶️ Casey yeah, us? No. I in particular went on a bit of a rant with regard

⏹️ ▶️ Casey to how you get iPad multitasking to work when you are trying to load something

⏹️ ▶️ Casey that is not in your dock. And, you know, what I had said was you can go back to the home screen and then pick up an icon

⏹️ ▶️ Casey and then it’s like doing the little dancey thing, but you don’t want it to do the dancey thing, blah, blah, blah. And people pointed out to

⏹️ ▶️ Casey me that one approach, I’m probably going to get the exact order of operations wrong, but the idea is another approach to

⏹️ ▶️ Casey handle this is you open app one, go to the home screen, open

⏹️ ▶️ Casey app two, and then app one should be on the right-hand side of your dock

⏹️ ▶️ Casey in that like recents area. And then you can just grab it right there and put it into

⏹️ ▶️ Casey one one of the side panels that you would like it to be in. So that is a little bit better and a little bit easier, and I

⏹️ ▶️ Casey should have known that, but nevertheless, I still find it to be extremely frustrating.

⏹️ ▶️ Casey, John And let’s

⏹️ ▶️ John see, I have that disabled. I think I have Recents

⏹️ ▶️ John, Casey disabled.

⏹️ ▶️ Casey There is an option to disable it, I’m almost sure. But to be fair, I have not disabled it to the best of my knowledge.

⏹️ ▶️ John Yeah, I have disabled it, but I’ve used that same technique, like trying to launch it again to get it in

⏹️ ▶️ John the, like, I don’t know, maybe I have it disabled on some devices and don’t on others, but yeah. I don’t want, I

⏹️ ▶️ John have to say, I have recent apps disabled in my Mac dock and also in every iOS device

⏹️ ▶️ John that I could remember to do it on because I don’t want other stuff filling it. Like I fill

⏹️ ▶️ John the bottom dock with a bunch of stuff and I don’t want other things randomly hopping in there just because I used

⏹️ ▶️ John them recently. So that kind of kills that technique, but I still find myself doing it, like

⏹️ ▶️ John launching it the regular way as a way to get it available for multitasking. Maybe I

⏹️ ▶️ John just do that instinctively and it doesn’t work and I just go back to the way you described the last time. I don’t even know.

⏹️ ▶️ John It’s confusing. The thing, I played with this a little bit more after the show to say maybe there are other obvious ways that I’m

⏹️ ▶️ John forgetting. And it just really kills me that in multitasking view on the iPad where you see little miniature versions

⏹️ ▶️ John of all your open apps that you can’t just grab them and like drag them on top of each other. Like that functionality

⏹️ ▶️ John as far as I’m aware is not actually used for anything. And it’s just so obvious like here they

⏹️ ▶️ John are. Do you wanna squish them together? Grab one and squish it together. Like, nope, you can’t grab

⏹️ ▶️ John them here even though these are cute little pictures all your apps, they’re not for your grabbing. They’re

⏹️ ▶️ John just

⏹️ ▶️ John, Casey for you

⏹️ ▶️ John to view and enjoy, no grabbing. Again, unless there’s some weird,

⏹️ ▶️ John you know, three finger, stand on one foot, long press tongue

⏹️ ▶️ John gesture that I don’t know about. Wow.

⏹️ ▶️ Marco We are brought to you this week by Squarespace. Start building your website today at

⏹️ ▶️ Marco slash ATP. Enter offer code ATP at checkout to get 10% off. Make your

⏹️ ▶️ Marco next move with a beautiful website from Squarespace. Squarespace makes it super easy

⏹️ ▶️ Marco to make websites. It’s as simple as that. Look, most of you have probably heard this message a million times. Let me tell you why

⏹️ ▶️ Marco you really want to choose them. I know that a lot of our listeners, myself included, are able to make our own websites

⏹️ ▶️ Marco other ways using CMS’s that other people make that we install or other services

⏹️ ▶️ Marco or building our own from scratch which is usually the method I take but the reality is most of the time that’s

⏹️ ▶️ Marco not worth our time and Squarespace does a lot of things better than what we can do ourselves.

⏹️ ▶️ Marco So for instance if I had to make like a storefront, a gallery or you know things like this, Squarespace

⏹️ ▶️ Marco does that super easily all built in way better than I could do it and

⏹️ ▶️ Marco it takes me no time because I didn’t have to build it, right? If you’re making a website for yourself,

⏹️ ▶️ Marco or what happens a lot to nerds like us, if you’re making a website for somebody else, somebody else has asked you to, hey, help me make my website

⏹️ ▶️ Marco better. It’s so much easier and so much more time efficient to just go to Squarespace and do it there,

⏹️ ▶️ Marco because you can set up a website in no time at all, and they’ll support it, you don’t have to support it,

⏹️ ▶️ Marco and it’s just amazing the quality you get, the modern features, the modern designs,

⏹️ ▶️ Marco all the wonderful layout and responsive stuff, all that’s built in with Squarespace, and you don’t have to build it yourself,

⏹️ ▶️ Marco you don’t have to support it. So check it out today, slash ATP. Anybody

⏹️ ▶️ Marco with any skill level can go there, start a free trial site, and make an awesome to use

⏹️ ▶️ Marco site in no time at all. When you wanna sign up for Squarespace, go back there, slash ATP,

⏹️ ▶️ Marco and use offer code ATP to get 10% off your first purchase.


Chapter Peek-a-View image.

⏹️ ▶️ Marco That’s slash ATP code ATP. Thank you so much to Squarespace for

⏹️ ▶️ Marco sponsoring our show make your next move with a beautiful website from Squarespace

⏹️ ▶️ Casey May I gentlemen go a little bit off plan for a moment. Are you willing to bear with

⏹️ ▶️ Casey me on this?

⏹️ ▶️ John Sure I’m always Doesn’t know the plan so as far as he’s concerned everything

⏹️ ▶️ John is off the plan.

⏹️ ▶️ John, Casey Everything is on the plan.

⏹️ ▶️ Casey All right. If you wouldn’t mind, would you please make sure your Skype windows are visible?

⏹️ ▶️ John I got a lot of windows open.

⏹️ ▶️ Casey Marco, would you mind describing to people what you’re looking at, which is actually my screen?

⏹️ ▶️ Marco Well, I see Casey’s screen being shared, being his form

⏹️ ▶️ Marco discovered four quadrant layout. Patented. He has Skype taking

⏹️ ▶️ Marco up a quarter of the screen, colloquy IRC on the other corner and the other column

⏹️ ▶️ Marco is a Safari window and a Code editor of some kind looks like sublime maybe

⏹️ ▶️ Marco or video studio code cool And then the Safari window is

⏹️ ▶️ Marco showing App Store connect which is where you go to upload and manage

⏹️ ▶️ Marco apps that you’ve made and It appears to be showing an app that I

⏹️ ▶️ Marco have not heard you talk about yet No. Can I say the name? You may, you may. Named

⏹️ ▶️ Marco Peek-A-View, which is a pretty cool name. I don’t know what it does yet, but it’s called Peek-A-View

⏹️ ▶️ Marco and it has, looks like an emoji wearing sunglasses as the icon.

⏹️ ▶️ Casey Close enough, yeah. So what I am doing is I am sending you to a test flight invite. I

⏹️ ▶️ Casey don’t have my phone with me. It’s an iOS app, right? It is an iOS app. I am sending you a test flight invite to my

⏹️ ▶️ Casey latest app, which is called peak of view and I should tell you about it,

⏹️ ▶️ Casey but while I do that I guess I can just get ready to do this little thing right here. Marco,

⏹️ ▶️ Casey would you mind describing to me what’s going on now?

⏹️ ▶️ Marco Oh my god, that icon is adorable. Hold on, I’m looking at the icon. It’s like, it’s the

⏹️ ▶️ Marco Viewmatic thing, like where you look through the… Viewmaster.

⏹️ ▶️ Marco, John That’s it, yeah, you

⏹️ ▶️ Marco look through the goggles and there’s the circular thing of 3D pictures and they like flip

⏹️ ▶️ Marco around as you click the button on top. That’s right. All right. So

⏹️ ▶️ Marco you are looking at the screen in App Store Connect when your app has been approved

⏹️ ▶️ Marco, Casey and it’s in

⏹️ ▶️ Marco pending developer release state where you’ve clicked manually release and you are clicking release this

⏹️ ▶️ Marco app. I am indeed. So it appears that you have just released a brand new app that I

⏹️ ▶️ Marco didn’t even know you had been working on. This

⏹️ ▶️ Casey is true. There we go. So as of literally

⏹️ ▶️ Casey right now, it is ready for sale. That’s awesome. How long have you been doing

⏹️ ▶️ Marco this? You didn’t mention this at all. No.

⏹️ ▶️ Casey By design, and I’m going to stop sharing my screen because this is creepy. A little bit. By design,

⏹️ ▶️ Casey what I have done is over the last couple of months, I have created a new app. And one of the

⏹️ ▶️ Casey things I wanted to do as part of that is not tell you to because I thought it would be fun to surprise you on the show.

⏹️ ▶️ John You kind of did an OK job. I kind of knew you were working on a new app.

⏹️ ▶️ John, Marco If

⏹️ ▶️ John listeners, if you had been listening for the clues, I think there was enough on episodes of ADB that you could tell. I

⏹️ ▶️ John mean, even as recently as a couple of days ago, you posted a picture from Wegmans. It’s like, we know you’re working on an app, we just didn’t know what

⏹️ ▶️ John it was. We didn’t know it was already ready. I’m mad that I left my phone upstairs. I wanna go try the test flight.

⏹️ ▶️ Casey Well, I’m sorry. I should have warned you, but I didn’t wanna give anything away. So, all kidding aside, it is rolling

⏹️ ▶️ Casey out as we speak. If you’re listening to this live, you probably won’t be able to see it for an hour or two, but

⏹️ ▶️ Casey the idea is, it’s called Peak of View, as Marco had mentioned. The icon is adorable, and

⏹️ ▶️ Casey I wish I could take any credit for it, but it was my good friend, Ste, who if you listen to analog, you

⏹️ ▶️ Casey would know is Stay. And if you don’t listen to analog, you won’t get that joke. But nevertheless, the app is called Peakview.

⏹️ ▶️ Casey It was born in our Disney trip. And so I should probably explain,

⏹️ ▶️ Casey when we all went to Disney, as I think we talked about on the show, I mean, I know we talked about Disney on the show, but I don’t

⏹️ ▶️ Casey know if we talked about this part of it, Michaela, whom I love dearly and who was just shy of two years old at the

⏹️ ▶️ Casey time, She was not enthusiastic about

⏹️ ▶️ Casey going in the stroller. And when you’re at Disney World, that is a little bit frustrating. And what

⏹️ ▶️ Casey we ended up figuring out was that we could give her one of our phones and

⏹️ ▶️ Casey lock her into the photos app using guided access. And

⏹️ ▶️ Casey that would let her look at the photos on our phones. And we knew she couldn’t like go send texts

⏹️ ▶️ Casey or whatever the case may be. But nevertheless, she could have still deleted

⏹️ ▶️ Casey stuff, right? And that’s not good. We don’t want that. So

⏹️ ▶️ Casey it occurred to me, well, I know how to write iOS apps. I could write

⏹️ ▶️ Casey a read-only photo gallery. That’s something I can do. We have the technology. We can do this.

⏹️ ▶️ Casey And so I think the first commit was something like the 2nd of November, and we had gotten home on the 30th of

⏹️ ▶️ Casey October. And I was working on this all of November, the portions of December

⏹️ ▶️ Casey that I actually worked and was a grown up, and all of January. And the first

⏹️ ▶️ Casey version was approved but not put up for sale on the last day of January, on the 31st.

⏹️ ▶️ Casey I realized there was an oops that was entirely my fault. So I pulled it yesterday,

⏹️ ▶️ Casey I believe it was yesterday, I pulled it, or maybe it was the day before, sometime in the last 48 hours, it’s been a blur. I, developer

⏹️ ▶️ Casey rejected the build and then put it back up, which was very stressful because even though app review

⏹️ ▶️ Casey time is pretty good. I was scared that all of a sudden I’ve been waiting for tonight’s

⏹️ ▶️ Casey ATP for weeks. Like I didn’t know exactly when it would be, but I’ve been waiting for a long time to

⏹️ ▶️ Casey do this for you guys, to you guys, etc. I was scared that then this would be the one time I get like rejected

⏹️ ▶️ Casey or there’s like a two-day wait or whatever. But thankfully, it all worked out. So

⏹️ ▶️ Casey the idea behind Peek-a-View is that it is a read-only photo gallery that you could hand to a kid or a client

⏹️ ▶️ Casey or a friend, And the only thing that they can do is look at the photos

⏹️ ▶️ Casey that you’ve given to them. I’ve already got a bug report. Oh, of course you do.

⏹️ ▶️ John Of course you do. I got my phone delivered.

⏹️ ▶️ Marco You didn’t even make it through the description.

⏹️ ▶️ John, Marco I know. I know.

⏹️ ▶️ John Keep going, but I just wanted you to know.

⏹️ ▶️ John, Casey Ah, wonderful.

⏹️ ▶️ Casey See, this is the thing. This is the danger by not telling the two of them. I love you two dearly, but you’re both total

⏹️ ▶️ Casey pains in the ass. And it is for the best that you have a bug report, because I can fix it then. But yeah, so

⏹️ ▶️ Casey the idea is you can choose one of your albums that you’ve set up in photos, And you can

⏹️ ▶️ Casey limit the app to just that album. And once Guided Access is turned on, there’s nothing that they can do to change the

⏹️ ▶️ Casey album. There’s never anything they can do to delete anything, to edit anything, et cetera, et cetera, et cetera. So

⏹️ ▶️ Casey that’s the Shtick. It is similar to Vignette. It is

⏹️ ▶️ Casey free to see 20 most recent photos or videos or what have you. And it is a $5 an app purchase in order

⏹️ ▶️ Casey to see the rest of your stuff. And surprise,

⏹️ ▶️ Casey that’s what’s going on. So

⏹️ ▶️ Marco first of all, that’s a pretty cool idea. Second of all, I love

⏹️ ▶️ Marco some of your implementation details that you’ve done here. So I like that you have like the bigger

⏹️ ▶️ Marco and smaller pictures in your collection view here. I guess like the highlighted ones are bigger or somehow some

⏹️ ▶️ Marco of them are bigger. And I love your auto playing of live photos

⏹️ ▶️ Marco as videos. That is really

⏹️ ▶️ Casey cool. I thank you, I appreciate that because Mike was just yelling at me about that same thing. So for

⏹️ ▶️ Casey those of you who are keeping up, I recorded Analog Monday, but we did not broadcast it

⏹️ ▶️ Casey live. And the reason we didn’t was because we didn’t want anyone to know about this. So Mike

⏹️ ▶️ Casey was giving me a hard time. Mike was on the beta, and it’s not because I love him more. It’s just because I wanted

⏹️ ▶️ Casey to surprise the two of you. And anyways, he was yelling at me because he did not care for the moving live photos.

⏹️ ▶️ Casey So I might, I have a couple ideas there. I might turn that off automatically if you’re like John and do the,

⏹️ ▶️ Casey I forget the name of it, but the reduced motion, or maybe I’ll add a switch, we’ll see, but

⏹️ ▶️ Casey as it is, I like it as well.

⏹️ ▶️ Marco What’s also nice is that compared to the actual official Apple Photos

⏹️ ▶️ Marco app, it’s faster to get in and out of photos. Like, it seems like you have duplicated their animation

⏹️ ▶️ Marco a little bit, but you’ve done it faster. Like, I would even say get rid of that little bounce

⏹️ ▶️ Marco that it does at the end, because

⏹️ ▶️ Marco, Casey the bounce looks a little weird

⏹️ ▶️ Marco at this speed, but I love how fast it is to get in and out of a photo. Like,

⏹️ ▶️ Marco cause you can hold the phone with one hand and just tap with your thumb in and then tap and you know, drag down

⏹️ ▶️ Marco to go out. And you can do that exact same motion. I’m switching back and forth here. The exact same motion works in Apple Photos but it takes

⏹️ ▶️ Marco longer and you have to go further. So by almost but not quite cloning the Apple interaction

⏹️ ▶️ Marco model, you’ve actually made an improvement here, possibly accidentally, by making your

⏹️ ▶️ Marco timings all a little bit faster and your tolerance all a little bit tighter. So this is actually a really good way

⏹️ ▶️ Marco to very quickly flip through photos. So that’s pretty cool. I also like that you

⏹️ ▶️ Marco auto-play videos. When you open up a video, it auto-plays it. And it does it muted. Yes, it auto-plays

⏹️ ▶️ Marco it muted, and there’s a little thing on the bottom there, unmute it. That is a really nice, like

⏹️ ▶️ Marco this is not only good for the use case that you’ve outlined here of controlling

⏹️ ▶️ Marco somebody’s access to your photos, just letting them view it. This is also good to just quickly review recent photos you’ve taken.

⏹️ ▶️ Marco Because it’s so fast to get in and out.

⏹️ ▶️ Casey John, you’ve been quiet, I’m a little scared.

⏹️ ▶️ John I’m playing with the app. I tried to do the in-app purchase, but I got one of your emoji-filled error messages.

⏹️ ▶️ Casey Oh no! Well, hopefully it’s not completely broken. We’ll see what happens.

⏹️ ▶️ Marco Yeah, I did. I looked at the settings screen, and it clearly is a Casey setting screen.

⏹️ ▶️ Marco Yes, it is. It’s full of emoji and lots of explanatory text.

⏹️ ▶️ Casey I was going to say, I didn’t have the benefit of you sad about, but

⏹️ ▶️ Casey there will be improvements, I’m quite sure. In fact, I already have realized that in

⏹️ ▶️ Casey certain cases, if you have, for example, a panorama, which is really, really big, the version that Peak

⏹️ ▶️ Casey of You shows as of the time we record this isn’t quite full resolution, and I’ve already fixed that bug,

⏹️ ▶️ Casey but I was so scared to go through the same dance of like, oh, if I submit it, maybe it won’t be ready in time,

⏹️ ▶️ Casey et cetera, et cetera, and so I haven’t yet submitted that fix. I’ll presumably do it first thing tomorrow morning. But yeah,

⏹️ ▶️ Casey Now I’ll actually be able to, for real, test my in-app purchase stuff, because I’ve tested the snot out of it in test flight, but

⏹️ ▶️ Casey it never, ever seems to work exactly the same. But thank you for trying to throw me $5. Yeah,

⏹️ ▶️ Casey so anyways, I definitely have some work to do on this. It’s funny because

⏹️ ▶️ Casey in a lot of ways, this is far less ambitious than Vignette. I think Vignette was a much more ambitious thing to do and certainly

⏹️ ▶️ Casey much more complicated. But in certain ways, I’m a little more proud of Peak of View.

⏹️ ▶️ Casey I think, and Marco, you seem to have pounced on this immediately in the happy sense, I think it’s a bit more

⏹️ ▶️ Casey polished than Vignette is. I think in part because it’s a much simpler problem

⏹️ ▶️ Casey area to work on. Now I’ve already got other ideas on how to make this more complex if I

⏹️ ▶️ Casey so desire and to enhance things. But it is surprising to me,

⏹️ ▶️ Casey it isn’t, but it is surprising to me that it really and truly is one

⏹️ ▶️ Casey of those things where I got the bare bones of this working within like, I don’t know, a week or something like that, maybe

⏹️ ▶️ Casey two weeks tops. But the rest of the time has been spent polishing and polishing and polishing and improving

⏹️ ▶️ Casey and polishing and improving. And again, as with all things, what is the saying?

⏹️ ▶️ Casey The last 20% is 80% or something like that. You know what I’m thinking

⏹️ ▶️ Casey, John of. Yeah, yeah,

⏹️ ▶️ Casey yeah. And that was very much the case here. And not to say it’s perfect. I’m not saying it’s perfect by any means,

⏹️ ▶️ Casey but it is definitely, I feel like it’s more polished than vignette

⏹️ ▶️ Casey is slash was, and I’m proud of it for that. Behind the scenes for the nerds,

⏹️ ▶️ Casey there is no RX Swift in this, which was a deliberate choice. For the longest

⏹️ ▶️ Casey time, I didn’t think that there was any real need for any of the affordances that RX provides.

⏹️ ▶️ Casey However, if you don’t use your beloved hammer, but

⏹️ ▶️ Casey there’s something that’s vaguely hammer or alike that’s new and shiny and available to you, you might choose to use that. So

⏹️ ▶️ Casey there is some combine in here. There is a couple of, there are a couple of screens of SwiftUI.

⏹️ ▶️ Casey So the onboarding screens are SwiftUI and the purchase screen is SwiftUI. And

⏹️ ▶️ Casey one of the next things that is on the docket for us to talk about, if we don’t get sidetracked for the rest of the episode, which I hope we

⏹️ ▶️ Casey don’t, is to talk about our experiences, John and me, with SwiftUI. So maybe we’ll

⏹️ ▶️ Casey get to that shortly. But yeah, it’s simple and

⏹️ ▶️ Casey it’s not, and it’s interesting and I’m pretty proud of it and I hope you, the listeners,

⏹️ ▶️ Casey and the two of you like it and I’m sorry, the two of you, for not saying anything, but I wanted you to be able to experience

⏹️ ▶️ Casey it live with everyone else.

⏹️ ▶️ Marco Yeah, that’s pretty cool. I’m actually, I’m glad that you did that because it’s more fun for the show. I

⏹️ ▶️ Casey thought it might be.

⏹️ ▶️ John, Marco Yeah,

⏹️ ▶️ John that’s awesome. You ready for your bug report?

⏹️ ▶️ Casey Oh God, do I want to have this publicly or no?

⏹️ ▶️ Casey, John I’m a little scared.

⏹️ ▶️ John Yeah, it’s quick. Mark already got one. What was yours before? It wasn’t

⏹️ ▶️ John a bug report, it was just a suggestion.

⏹️ ▶️ Casey they’ll kill the bouncing.

⏹️ ▶️ John I asked about, yep, I mostly agree with that, but then again, it is a kid’s app, so maybe kids will like the

⏹️ ▶️ John fun bounce, you know what I mean? So I go either way on that. The one that I think is,

⏹️ ▶️ John it’s, I don’t know what you can do about this, but. Oh, that’s always dangerous, okay.

⏹️ ▶️ John Yeah, the gesture recognizer, or whatever you’re using for a sideways swipe to go

⏹️ ▶️ John to the next photo, it is very unforgiving, So such

⏹️ ▶️ John that when I use my, when I have my phone in my right hand and I’m using my right thumb to go through

⏹️ ▶️ John pictures, like 20% of the time, when I try

⏹️ ▶️ John to go to the next photo, it takes me out of it because I’ve moved my thumb down too far. So it’s like super sensitive. Like

⏹️ ▶️ John if you go to the left and then deviate from a right to left or left to right motion by

⏹️ ▶️ John half a centimeter, it’s like you wanna go back. And that makes it basically impossible for me to sit there with my one hand

⏹️ ▶️ John and thumb through them. You know what I mean? have any control over that gesture recognizer to say,

⏹️ ▶️ John leave a lot of slack in there. That would do it. One of my favorite ones of those is

⏹️ ▶️ John Twitter effects, like display an image from a tweet. It does a similar thing

⏹️ ▶️ John where you can just chuck it in any direction and it goes away, which I love, but I never accidentally chuck it.

⏹️ ▶️ John So whatever tolerances they’re using will be good. And especially I can imagine for kids to if kids actually want to take

⏹️ ▶️ John their little meaty paws, especially if they’re very young and swipe through the photos, they’re they’re going

⏹️ ▶️ John to end up going back to the main screen, which they probably, you know, they’ll just be like, Oh, well, it went back to the main screen. Now it’s happened

⏹️ ▶️ John a different picture and it’s fine. But I think I think that gesture is too tight.

⏹️ ▶️ Casey Yeah, so the behind the scenes there is that’s a standard what is a UI page view controller

⏹️ ▶️ Casey mark I would know the standard, you know, left, right swipe thing. And that

⏹️ ▶️ Casey gesture recognizer is all the out of the box stuff. However, I am to your point, john, adding

⏹️ ▶️ Casey a swipe down, what is it, a pan gesture recognizer,

⏹️ ▶️ Casey that I have decided what the threshold is, I don’t remember off the top of my head, but I have decided what the threshold

⏹️ ▶️ Casey is between considering it not a swipe and considering it a swipe, a vertical swipe that is.

⏹️ ▶️ Marco Why don’t you do, make it a scroll view with paging mode enabled.

⏹️ ▶️ Marco Tell me more, why do you say that? Because then it’ll feel like every single other thing that pages on iOS.

⏹️ ▶️ Marco Every time you’ve, in fact, so overcast cards on the now playing screen, that’s how this is implemented too. And that’s

⏹️ ▶️ Marco why like those cards feel like any kind of like, you know, paged scrolling thing in iOS.

⏹️ ▶️ Marco It’s a standard behavior on UI scroll view. It’s called something like, you know, enable paging or something like that. And

⏹️ ▶️ Marco then you can do crazy things like, you know, rip out gesture recognizer and do your own view or whatever. You probably

⏹️ ▶️ Marco don’t even have to do that. But I would consider doing that. Cause then it’ll feel exactly

⏹️ ▶️ Marco right if you do that.

⏹️ ▶️ Casey I don’t think it feels too far from right the way it is. But yeah, I take your point. And again, I mean, this is

⏹️ ▶️ Casey version one, and we’ll see what comes of it. And we’ll see. I mean, it’s funny, because when I wrote this, I

⏹️ ▶️ Casey wrote it legitimately just for Michaela. And then the more I worked on it, the more I thought, well, maybe this could be

⏹️ ▶️ Casey useful to other people with kids. And then I was talking to somebody. I don’t remember if it was Ste or Mike or somebody. But

⏹️ ▶️ Casey I was talking to somebody, and I was like, well, they said, what about a client? I thought, well, shoot, you’re right. What

⏹️ ▶️ Casey about a client? You could very well. For example, let’s say you’re working on a design for an iOS

⏹️ ▶️ Casey and you want to show a client the designs on their device, well, on your device, actually,

⏹️ ▶️ Casey you could lock the app into just an album that just has those screenshots. And then

⏹️ ▶️ Casey you can let them pan back and forth till their heart’s content and know that you’re not going to see, like, you in a bathing

⏹️ ▶️ Casey suit at the beach or something like that, you know? And then somebody else

⏹️ ▶️ Casey as well pointed out to me, well, what if I’m handing my phone to Marco and I do want to show him

⏹️ ▶️ Casey my vacation pictures, but I don’t want him to see anything other than my vacation pictures. Not that Marco’s the kind of guy who would go spelunking,

⏹️ ▶️ Casey but you get my point. And so I feel like this app, although it was clearly

⏹️ ▶️ Casey and unequivocally and unapologetically written for a two-year-old, at the same time,

⏹️ ▶️ Casey it was very early that it occurred to me that this could be used for other people as well and

⏹️ ▶️ Casey other audiences as well. I should also add that with the in-app purchase, if

⏹️ ▶️ Casey the in-app purchase works, that you can also change the icon.

⏹️ ▶️ Casey And STI came up with a series of alternative icons. Unfortunately, for

⏹️ ▶️ Casey reasons that are not interesting, I haven’t yet put in there their different names that STI came up with, but

⏹️ ▶️ Casey they are quite funny. There is a business casual icon, which is the same thing, basically,

⏹️ ▶️ Casey but with a bow tie on it. There’s eco-friendly, which is a very, very green version of the icon, literally the

⏹️ ▶️ Casey color green version of the icon. There’s flattened friendly, which is basically a purple behind

⏹️ ▶️ Casey the regular high color icon. There’s High Contrast, which is just a yellow background in

⏹️ ▶️ Casey black ink, if you will, and Trendy, which has a multi-pattern gradient,

⏹️ ▶️ Casey purpley, pinky, bluey gradient in the back and a flat white little dude in front. So

⏹️ ▶️ Casey if you decide to throw me a few bucks, then you can also get an alternative icon, which is something I’ve never

⏹️ ▶️ Casey done before and was kind of a total pain in the butt.

⏹️ ▶️ Marco So right now, I’m in the test flight and I haven’t done the in-app purchase, and so it just pops up a dialogue saying, sorry

⏹️ ▶️ Marco you gotta buy it first, you should show me all the icons I can get before I buy it.

⏹️ ▶️ Casey Oh, that is a very good point. You know, I don’t know, I thought I’d planned on doing that and I guess I never did. That is a very, very, very

⏹️ ▶️ Casey good point. Good call,

⏹️ ▶️ Casey, John Marco.

⏹️ ▶️ John It rotates. There’s like an animated image. It rotates through them on that

⏹️ ▶️ Casey screen. That’s why. That’s where it was. That’s right. It was in the main purchase screen. It does show a GIF of all the different icons. That’s why

⏹️ ▶️ Casey I, you’re exactly

⏹️ ▶️ Casey, Marco right.

⏹️ ▶️ Casey, John Oh, there it is. I should still show

⏹️ ▶️ Casey it there. No, but Marco’s still right. I should still show it there.

⏹️ ▶️ John I have one more thing that’s not a bug, but just a aesthetic thing on the

⏹️ ▶️ John onboarding screens. I feel like your left and right margins are a little tight.

⏹️ ▶️ Casey Okay, so you want more padding on the left and the right?

⏹️ ▶️ Marco Yep. Yep, same. Fair

⏹️ ▶️ John enough.

⏹️ ▶️ John, Casey This is what you

⏹️ ▶️ John get for

⏹️ ▶️ John, Casey not showing it to us. We

⏹️ ▶️ John use triple 1.0 and we immediately have all the same

⏹️ ▶️ John, Casey components. I’m not upset. No,

⏹️ ▶️ John that’s fine. I’m fine with that. Did you see my picture, my screenshot of your app? This is what your app looks like to

⏹️ ▶️ John me, in limited mode because it won’t let me do the purchase. It’s

⏹️ ▶️ Casey nothing but

⏹️ ▶️ Casey, John pancakes. It’s literally

⏹️ ▶️ Casey nothing but pancakes, pancakes all the way down.

⏹️ ▶️ John Like that’s how far, like the 20 pictures, that’s how far it goes. That’s awesome.

⏹️ ▶️ John, Casey Oh man, you really liked your pancakes. I

⏹️ ▶️ John started using in the past month or two, Paprika, you know that recipe app? Yes, yes, yes.

⏹️ ▶️ John And we’re putting all of our family recipes in it, but then every recipe that’s not a family recipe has this nice

⏹️ ▶️ John photo in it. So now all the things that we cook, I have to get a good looking picture of and it can’t look

⏹️ ▶️ John gross next to the fancy blue apron pictures and all the professional bon appetit,

⏹️ ▶️ John you know, glamour shots of their food. It’s surprisingly hard to get non-gross looking

⏹️ ▶️ John photos of food, like that’s why A, half of the food photography you see is faked because real food looks gross,

⏹️ ▶️ John and B, good pictures of real food are really hard to make. Nevin Mergen’s

⏹️ ▶️ John really good at making them. A, he makes really good food, but B, he has an Instagram account that’s just the food that he makes and he’s all

⏹️ ▶️ John about like, he’s got a big window with a lot of sun and a good, you know, place to set up and very, and beautiful

⏹️ ▶️ John plates. I should have him come and photograph my food and also cook it for me. Oh

⏹️ ▶️ Casey my

⏹️ ▶️ John goodness.

⏹️ ▶️ Marco This is really cool. I’m really proud of you for doing all this and making another app and everything. Because look,

⏹️ ▶️ Marco you could have gotten stuck in the trap, which is a very common, easy to fall into trap, of

⏹️ ▶️ Marco just working on Vignette forever. What happens is you have probably exhausted

⏹️ ▶️ Marco most of the market for that app that you can. I think so. And you could have just kept plowing

⏹️ ▶️ Marco through and developing more and more edge case features that take more and more effort on your part.

⏹️ ▶️ Marco You know, like the low-hanging fruit is picked. Now there’s a whole bunch of like, you know, medium to small-sized fruit

⏹️ ▶️ Marco way up high in the tree. And like, you could try to go get it and waste a whole bunch of time doing

⏹️ ▶️ Marco that. But what you’re doing now, which is trying new app ideas instead,

⏹️ ▶️ Marco is a way better use of your time in all likelihood.

⏹️ ▶️ Casey Yeah, and I mean, I don’t expect that this is going to set the world on fire by any stretch of the imagination. But it’s something

⏹️ ▶️ Casey else. And the other

⏹️ ▶️ Casey thing is, if I end up in the underscore approach where, I mean, I’m underselling

⏹️ ▶️ Casey underscore by saying it this way, but like if I have a suite of apps that makes, each of which makes a little bit

⏹️ ▶️ Casey of money, if I have enough apps that make a little bit of money, that’s fine. I’m okay with

⏹️ ▶️ Casey that. I don’t have to take over the world. I don’t have to be overcast. I can just have a bunch of things that

⏹️ ▶️ Casey trickle in and hopefully in aggregate, that’s not so bad. And you’re right that Vignette

⏹️ ▶️ Casey is, I think, has mostly exhausted the customer base that it will probably get. There’s a couple of

⏹️ ▶️ Casey things that are medium-sized root that I’m still considering doing for Vignette. But I think

⏹️ ▶️ Casey largely that that ship has sailed and it has sailed into the sunset. And I mean, not to say,

⏹️ ▶️ Casey God, I’m already badgering this, but… It has sailed off the end of the earth. Yeah, it has sailed off the end of the earth. I mean, not to say

⏹️ ▶️ Casey that I’m abandoning Vignette, but… No,

⏹️ ▶️ Marco no, no, that’s not what I’m saying. What are you saying? And also, that’s not a bad thing. Every app has a certain,

⏹️ ▶️ Marco like, there’s a certain worthwhile limit of how much time is worth spending

⏹️ ▶️ Marco on this app as, you know, as a developer. Some apps justify continuous improvements.

⏹️ ▶️ Marco Like I think Overcast mostly does because of like,

⏹️ ▶️ Marco, Casey you know,

⏹️ ▶️ Marco it has to kind of stay cutting edge with features from competitors and, and you know, it’s, it’s financially,

⏹️ ▶️ Marco you know, successful on its own so it can justify that. But like that, first of all, it took a long

⏹️ ▶️ Marco time to get that business model. I went through a lot of them that weren’t very sustainable.

⏹️ ▶️ Marco But like, not every app does that. And one

⏹️ ▶️ Marco way to make a living is to have a couple apps or to have one app that does

⏹️ ▶️ Marco kind of self-sustain indefinitely like that. Another way to make a living that’s way more likely

⏹️ ▶️ Marco to succeed and that way more people have succeeded at is to make a bunch of small apps

⏹️ ▶️ Marco and just kind of experiment and see what sticks and see what doesn’t. critical part of succeeding at that

⏹️ ▶️ Marco is knowing how much effort to put into something and knowing whether

⏹️ ▶️ Marco to like keep working on version 2 of the thing or to kind of let that one coast for

⏹️ ▶️ Marco a while and start working on the next thing. And if you can develop that skill, which so far I

⏹️ ▶️ Marco think you made a pretty good call, I think you did vignette for a while right before WBDC, like

⏹️ ▶️ Marco you released it, it succeeded, you did a couple of minor updates,

⏹️ ▶️ Marco but I don’t I don’t think it really needs much else. I think it’s pretty much done, and the market is pretty much done. Especially

⏹️ ▶️ Marco with all this new iMessage contact sharing stuff that actually is being deployed everywhere that all of our friends now have. So

⏹️ ▶️ Marco I think that is probably done, and the other features you were going to add to it, possibly,

⏹️ ▶️ Marco things like LinkedIn and Facebook, these are like major undertakings that probably

⏹️ ▶️ Marco wouldn’t be worth it. So I think you have the right idea some of those

⏹️ ▶️ Marco bigger features. There’s also features that you could’ve taken on that

⏹️ ▶️ Marco also would’ve been bad uses of your time, like things like a UI redesign, or basically like

⏹️ ▶️ Marco repolishing what you already have, like improving the feature set you already have. You could do that

⏹️ ▶️ Marco forever, every app. Like you can always keep improving the app, you can always modernize something

⏹️ ▶️ Marco or clean something up or refactor something or whatever. There’s infinite potential for

⏹️ ▶️ Marco time suckage when it comes to making your own apps, But ideally, you figure

⏹️ ▶️ Marco out like, okay, this app is worth all the time suckage, or this app isn’t. Or

⏹️ ▶️ Marco none of my current apps are worth a lot of time suckage the way they’re performing in the market, or they seem pretty stable.

⏹️ ▶️ Marco So this is the time to start something new. And so if you keep doing that, I think this could be

⏹️ ▶️ Marco a real thing.

⏹️ ▶️ Casey Yeah, I mean, that’s the hope. And I don’t know if either of you guys listen to Analog ever, and if you don’t, that’s

⏹️ ▶️ Casey fine. But I said on Analog that, I don’t know, a couple of weeks, a couple of months ago maybe,

⏹️ ▶️ Casey that I had a couple of things that I was considering doing. Well, guess what? You’ve now seen one of them. And

⏹️ ▶️ Casey I have another one that’s in the hopper that I have not even filed a new project on yet.

⏹️ ▶️ Casey But I have an idea, and I don’t plan on surprising the two of you with

⏹️ ▶️ Casey that one. I feel like I’m now one and done with that. But I have another idea, and I think

⏹️ ▶️ Casey after I get whatever immediate bug fixes and improvements are necessary out of ToddlerPix, oh God, ToddlerPix,

⏹️ ▶️ Casey I’m looking at the GitHub repository, and that was the initial

⏹️ ▶️ Casey, Marco name for it a few weeks.

⏹️ ▶️ Casey And so, yeah, my name, the vignette was Gravatar Fetcher, and this was Toddler Pics.

⏹️ ▶️ Casey My names are great. But anyways, once I get through the initial

⏹️ ▶️ Casey stuff with Peek-A-View, then I will move on to this next idea and

⏹️ ▶️ Casey see what I’ve got there.

⏹️ ▶️ John ______ ______ ______ Speaking of toddler, Toddler Pics? Spelled P-I-C-T-S,

⏹️ ▶️ John I’m sure.

⏹️ ▶️ John, Casey No, John. This is an

⏹️ ▶️ Casey inside joke between John and me. I am constantly badgering John about how he uses the like 80

⏹️ ▶️ Casey year old man version of PICS, which is P-I-C-T-S. And I keep trying to tell him it’s just P-I-C-S

⏹️ ▶️ Casey these days.

⏹️ ▶️ John And I keep telling him it’s not age related. Anyway, I was wondering how you

⏹️ ▶️ John dealt with that issue. I started on my second app like a week after my first app was released.

⏹️ ▶️ John But of course I didn’t have a name. So I made a repo and a project under my own like, you you

⏹️ ▶️ John know, working title or whatever. And at a certain point, I came up with a name. And then

⏹️ ▶️ John I, you know, me being me, I’m like, I’ve got to rename this repo.

⏹️ ▶️ John, Casey I’ve got to rename this Xcode project.

⏹️ ▶️ John I’ve got to rename every class and every,

⏹️ ▶️ John, Casey you know, like everything that’s relevant to the

⏹️ ▶️ John thing. Did you do that? Or did you do the other thing, which apparently is common, which is, yeah, you

⏹️ ▶️ John rename your executable target in Xcode, but you just leave everything else with the working title?

⏹️ ▶️ Casey For Vignette, I mostly did the last thing you said, which is almost nothing

⏹️ ▶️ Casey says Vignette within Vignette and almost everything says Gravatar Fetcher. With Peek-a-View,

⏹️ ▶️ Casey the project is called Peek-a-View, the repo is still called Toddler Pix. All of the

⏹️ ▶️ Casey code is within the Toddler Pix folder in GitHub and in Xcode.

⏹️ ▶️ Casey But I did more to try to get it to read Peek-a-View in more

⏹️ ▶️ Casey places than I did with Vignette.

⏹️ ▶️ John Did you rename the Xcode project?

⏹️ ▶️ John, Casey Or was it always called that? So how did you rename

⏹️ ▶️ John it? That’s my question.

⏹️ ▶️ Casey I think I just renamed it on the file system, I thought. It was a while ago now.

⏹️ ▶️ John Like you just, in the finder, just the top level

⏹️ ▶️ John, Casey project folder? I think so.

⏹️ ▶️ Casey I am not confident that’s correct. So definitely do that with source

⏹️ ▶️ Casey control nearby. I thought that’s what I did, but again, I cannot stress enough, I am not confident that I’m right about

⏹️ ▶️ Casey, John that.

⏹️ ▶️ John So I did the scorched earth thing where I renamed everything. Xcode has a way inside

⏹️ ▶️ John Xcode, like not from the finder or anything, but you’re in your project, you can do a rename some, I’ve already forgotten because

⏹️ ▶️ John I only did it once, but you can do a rename, like, I think it was like the top item in the sidebar or something,

⏹️ ▶️ John and it will show you what it’s gonna rename in your project, and it renamed

⏹️ ▶️ John, Casey a lot of stuff.

⏹️ ▶️ Casey No, I think you’re right. That is what I did. So I just did it again because I have source control nearby, and put it back to Toddler Pix and saying,

⏹️ ▶️ Casey okay, do you wanna rename the target? Do you wanna rename what it is in InfoP list? But that was basically

⏹️ ▶️ Casey it. It didn’t actually ask for much

⏹️ ▶️ Casey, John else.

⏹️ ▶️ John But that’s not all of it, obviously. You do that. Oh, no, no. And then I went through and found all the places where the working title

⏹️ ▶️ John still existed and manually fixed all of them, mostly using bvedit. And then I renamed the repo, and

⏹️ ▶️ John then I made sure everything was connected, and then I deleted my, well, what is it, XC project or whatever file, because

⏹️ ▶️ John it was corrupted or something. And then, again, source control is your friend. All right, so

⏹️ ▶️ John do this after you’re sure you have a clean checkpoint. And I even zipped up, compressed a copy of the project,

⏹️ ▶️ John so if I totally hosed it, I could just unzip it. But I did want people to know that

⏹️ ▶️ John If you start an Xcode project under a working title and you, like me, can’t live with that once you come up with a

⏹️ ▶️ John name, it absolutely is possible to rename every single thing in your entire project eventually and it will

⏹️ ▶️ John work again.

⏹️ ▶️ Casey Good to know. Yeah, I haven’t really bothered, but that’s all right. So anyways, we don’t need to belabor

⏹️ ▶️ Casey this anymore. I appreciate you guys indulging me and going on this little journey with me. I have been unreasonably

⏹️ ▶️ Casey excited about springing this on the two of you, and I can’t stress enough, listeners, obviously, if you were paying close

⏹️ ▶️ Casey enough attention, you probably could have put this together, but I did not explicitly say

⏹️ ▶️ Casey anything to John nor Marco about what was going to happen today, about the fact that

⏹️ ▶️ Casey I was even working on something new. So this was a surprise for them and I appreciate everyone

⏹️ ▶️ Casey going along for the ride.

⏹️ ▶️ Marco Yeah, this is awesome. Congratulations.

⏹️ ▶️ Casey Oh, thank you. And this requires iOS 13 too, because I don’t care. So sorry if you’re on an older

⏹️ ▶️ Casey version. And actually I should also mention, come to think of it, SwiftUI,

⏹️ ▶️ Casey like we talked about, Maybe we can talk more in a moment. It’s got problems, but it ain’t bad.

⏹️ ▶️ Casey And more importantly, I am really digging the new UI collection view stuff

⏹️ ▶️ Casey that came out in 13. So this is diffable data sources and compositional

⏹️ ▶️ Casey layout. The main grid view, the main view of the app, is all compositional

⏹️ ▶️ Casey layout. And that code is so nice. It is not that much. It is

⏹️ ▶️ Casey so little code compared to the nightmare it would have been prior to iOS 13. I really,

⏹️ ▶️ Casey really love that new stuff. Hopefully, final note, if you’ve never

⏹️ ▶️ Casey used Guided Access, this app is expressly designed to work with Guided

⏹️ ▶️ Casey Access. The idea being that when you turn on Guided Access by triple-clicking

⏹️ ▶️ Casey the side button, if you have a Face ID phone or I believe it’s still triple-clicking the Home button

⏹️ ▶️ Casey on Home button phones. Among other things, Peek a View will automatically make that top toolbar go away,

⏹️ ▶️ Casey which means you literally, there’s no settings button to press. The only thing you can press

⏹️ ▶️ Casey is on a photo. And so if you’re looking at this and thinking, well, this is all well and good, but then

⏹️ ▶️ Casey people can go into settings and do stuff and make bad things happen. The whole purpose behind

⏹️ ▶️ Casey it is that it is assumed that you are willing to use guided access in order to limit that.

⏹️ ▶️ Casey And originally, I didn’t even realize that I could tell when guided access was on or off. And so I had this like

⏹️ ▶️ Casey god awful, like triple, triple tap gesture in order to get the settings. The idea being that

⏹️ ▶️ Casey a toddler wouldn’t be able to figure that out, and even an adult probably wouldn’t be able to figure that out. And I hated it from day one.

⏹️ ▶️ Casey And then somebody, maybe it was either Jelly or Underscore, I think. I forget who it was.

⏹️ ▶️ Casey But somebody pointed out to me, no, no, no, you can figure out when guided access is on or off. And so

⏹️ ▶️ Casey once I did that, sunshine came down from the clouds and shone directly

⏹️ ▶️ Casey on top of me and everything was good and right in the world. So check out Guided Access if you’ve not done

⏹️ ▶️ Casey that yet.

⏹️ ▶️ Marco We are sponsored this week by Collide, user focused security. Many of

⏹️ ▶️ Marco today’s fastest growing companies owe their success in part to a culture that centers around transparency,

⏹️ ▶️ Marco personal responsibility, and most importantly, employee happiness. But companies also need to secure

⏹️ ▶️ Marco their endpoints. And so they often do so at the expense of those values. Too often we’ve

⏹️ ▶️ Marco seen teams install intrusive management and security products on their employees devices and that makes everybody miserable.

⏹️ ▶️ Marco At Collide, they believe you don’t need to spy on your users or cripple their devices to meet

⏹️ ▶️ Marco your compliance and security goals. So they launched a product that integrates with your Slack team

⏹️ ▶️ Marco and messages your users directly when their Mac, Windows, or Linux devices are not up to spec.

⏹️ ▶️ Marco Your users will receive clear instructions about what is wrong and step-by-step instructions that will fix

⏹️ ▶️ Marco it. They can even confirm in real time that they’ve resolved the problem right where they are in Slack.

⏹️ ▶️ Marco So try Collide’s new product for free for 30 days for your entire fleet by visiting

⏹️ ▶️ Marco


⏹️ ▶️ Marco That’s K-O-L-I-D-E dot com, Thank you

⏹️ ▶️ Marco so much to Collide for sponsoring our show.

⏹️ ▶️ Casey Do we want to talk about SwiftUI? Do we want to talk about Google’s video sharing bug?

⏹️ ▶️ Marco SwiftUI, we’re near that topic now.

⏹️ ▶️ Casey Fair enough. So like I said earlier, the onboarding on this

⏹️ ▶️ Casey app and the pre-purchase page, if you will, a screen

⏹️ ▶️ Casey are both Swift UI, or there’s two pages of onboarding and one, the pre-purchase screen

⏹️ ▶️ Casey is all Swift UI. And the reason I did that is because I’ll be the first to tell you, I am really

⏹️ ▶️ Casey bad at UI kit. Like I can make things work, but it does not come naturally

⏹️ ▶️ Casey to me. Uh, I do like storyboards. I’m a weirdo. I do use storyboards. I

⏹️ ▶️ Casey am, I have reached an understanding with auto layout. It’s not really my favorite thing in the

⏹️ ▶️ Casey world, but mostly I can make it do what I want. But my friend, Steve, had

⏹️ ▶️ Casey sent these mockups for the onboarding screens, you know, completely of his own volition. Like I never had asked him to do it.

⏹️ ▶️ Casey And they, to me anyway, compared to what I had had, they looked incredible. And so I was looking

⏹️ ▶️ Casey at this thinking, I, oh, oh, oh, oh no, this is going

⏹️ ▶️ Casey to be stack views all the way down and that does not seem good. And so I thought, well, the

⏹️ ▶️ Casey onboarding screen, screens and the pre-purchase screen are mostly

⏹️ ▶️ Casey static. So maybe SwiftUI will work. And

⏹️ ▶️ Casey actually I’m pretty happy with it. And for this sort of thing, it’s

⏹️ ▶️ Casey been mostly good. There’ve definitely been some warts. It’s also been

⏹️ ▶️ Casey making me want to upgrade to Catalina on my iMac Pro so I can get that sweet, sweet live preview.

⏹️ ▶️ Casey But all in all, it hasn’t been too bad. The problem, well I have many problems with SwiftUI,

⏹️ ▶️ Casey But the biggest problem I have with SwiftUI is that when something goes wrong, and we’ve talked about this on and off

⏹️ ▶️ Casey a lot in the past, when something goes wrong, it often goes wrong in very far away places

⏹️ ▶️ Casey from where the problem actually is. So let’s say I have a 100 line view.

⏹️ ▶️ Casey Maybe the error will be reported on line 20, but the actual error is on line 88,

⏹️ ▶️ Casey and that is extremely frustrating. Additionally, the errors are often completely not actionable

⏹️ ▶️ Casey in any way, shape, or form. And that is extremely annoying, but all

⏹️ ▶️ Casey told, I was able to go from a blank page to probably 80%

⏹️ ▶️ Casey of the way to what Steve had sent me as a mockup in like an hour,

⏹️ ▶️ Casey and if I, me, Casey, I’m not saying other people, but if Casey had done that using just straight

⏹️ ▶️ Casey up vanilla UI kit, I would still be working on it to this day, like two weeks later, because I’m just really not

⏹️ ▶️ Casey good at that sort of thing. So I do, with many asterisks

⏹️ ▶️ Casey and daggers and double daggers, I do like and recommend SwiftUI for this sort of thing,

⏹️ ▶️ Casey where it’s a fairly static screen that not that much is happening. I

⏹️ ▶️ Casey don’t know if I could really in good conscience recommend it for stuff where there’s a lot of moving

⏹️ ▶️ Casey parts and a lot of different things and user interactions happening. John though, you

⏹️ ▶️ Casey probably have done even more SwiftUI than me at this point. So any thoughts you would like to add or corrections you would

⏹️ ▶️ Casey like to make?

⏹️ ▶️ John I can’t believe you were doing it without the live previews. It seems like it would have gone a lot faster

⏹️ ▶️ John, Casey for you. Well, here’s the thing.

⏹️ ▶️ Casey Here’s the thing. I was doing it in part with the live previews, but I was doing it on the Adorable, which is on Catalina.

⏹️ ▶️ Casey And the Adorable, it’s so adorable, bless its little heart, but it was choking on

⏹️ ▶️ Casey trying to do this. Like it was just unbearably slow to the point that doing the

⏹️ ▶️ Casey build, run, try, stop, build, run, try, stop, dance on the iMac Pro was actually

⏹️ ▶️ Casey more fun and well, not fun, but more less infuriating than just waiting

⏹️ ▶️ Casey for the poor adorable to melt itself as it was trying to figure all this out.

⏹️ ▶️ John No, and I don’t realize how computationally expensive the preview is because. Oh, yeah.

⏹️ ▶️ John I

⏹️ ▶️ Casey mean, either. It doesn’t seem like it should be that bad, but oh, it was on the adorable.

⏹️ ▶️ Casey, John Although

⏹️ ▶️ John it, one of the things that annoys me about SwiftUI is it’s so, it’s so

⏹️ ▶️ John timid maybe from the earlier versions of it, like in terms of the live preview. If anything changes,

⏹️ ▶️ John it’s like, oh, I better stop, pause this live preview because it seems like you’re

⏹️ ▶️ John, Casey changing a lot of code. It’s

⏹️ ▶️ John like, just keep trying. Like, I got a lot of cores, just, you know, whatever. Like, on this particular machine,

⏹️ ▶️ John I don’t want to have to keep hitting, no, no, resume the preview. Yeah, no, I know I broke it, but I’ll fix it in like 20 characters.

⏹️ ▶️ John, Marco Like, just keep trying. Just

⏹️ ▶️ John, Casey constantly try

⏹️ ▶️ John to get the preview working because I hate having to go, the worst thing is I hate looking at it and like, I

⏹️ ▶️ John just changed that. Why didn’t, oh, it paused again. You’re wondering what I’m talking about. It’s that there’s

⏹️ ▶️ John a live preview where you write, so you’ve seen this in WJC videos, but there’s a live preview where you’re writing the code and

⏹️ ▶️ John you get to see what your view is gonna look like in another little section of the window in real time

⏹️ ▶️ John as you change things. So that’s the promise, that hey, you don’t have to keep like, write a bunch of code, build and run your

⏹️ ▶️ John app, go to the screen, look at the thing, and then repeat. Like, you know, you could do it as you’re typing, but of course, as you’re

⏹️ ▶️ John typing, you’re making your file syntactically invalid as you’re in the middle of typing stuff.

⏹️ ▶️ John And when that happens, there’s some sort of threshold where it decides that you’ve changed a lot and your code is now

⏹️ ▶️ John invalid. And I can’t update this preview with your now invalid code. So I’m just gonna pause it. And it

⏹️ ▶️ John never, as far as I’m aware, unpauses itself. It just says, when you’re ready, when you think you’ve gotten to a point where your code

⏹️ ▶️ John works again, hit the resume button and it’ll show it. So that’s annoying

⏹️ ▶️ John me a little bit, but you know, the tools are young and for the most part, it hasn’t crashed on me.

⏹️ ▶️ Casey And I should add, and interrupt, I apologize. When that does work, I mean, even, were occasions

⏹️ ▶️ Casey where the adorable would stop being an idiot and would actually work pretty well. When that does work, I cannot

⏹️ ▶️ Casey stress enough how fast it makes developing a view in SwiftUI. And if you’re not a developer,

⏹️ ▶️ Casey you have to understand the normal way of doing things is, at best, you’re looking

⏹️ ▶️ Casey at a wireframe. Wireframe doesn’t mean anything to a regular human. You’re looking at a fake

⏹️ ▶️ Casey version of your screen, and you’re dragging things around and thinking, okay, this is probably

⏹️ ▶️ Casey right. And then you go to run it and you’re either, then you have to build your entire app

⏹️ ▶️ Casey and you need to install it either on the simulator running on the computer, which is pretty fast, or install it on your phone,

⏹️ ▶️ Casey which is kind of fast. And then you need to navigate to that screen unless you have some sort of shortcut you’ve built for yourself

⏹️ ▶️ Casey to get there. And then you need to try the thing you were just trying and then, oh, crap, I need it like four pixels

⏹️ ▶️ Casey the other way. Okay, stop the simulator, go back to where you were, try to fiddle with things

⏹️ ▶️ Casey in the the storyboard, in the visual view, or perhaps do it in code if you’re more like Marco.

⏹️ ▶️ Casey One way or another, make your change. Okay, build it, wait a few seconds. For Marco, it’s probably more than just a

⏹️ ▶️ Casey couple of seconds because your app is so big, that’s not a slight at all. You

⏹️ ▶️ Casey take the time to build the app, you install it again. You go, oh crap, it wasn’t four, it was three pixels, I needed

⏹️ ▶️ Casey three pixels. Then you do this whole dance again. Whereas with SwiftUI, not only can you do this

⏹️ ▶️ Casey live as you’re coding it, because it has like a fake simulator within the Xcode window, which

⏹️ ▶️ Casey is what John was describing moments ago. But it’s doing it as you type. You know, it’s amazing

⏹️ ▶️ Casey when it works. And it can make things so fast. And what’s really clever is that you

⏹️ ▶️ Casey can make multiple like previews. So you can have a preview always displayed

⏹️ ▶️ Casey that’s in dark mode as well as light mode. And so you can see the two of them side by side and see exactly

⏹️ ▶️ Casey how the changes you’re making affects both versions of the app. when it works, it

⏹️ ▶️ Casey is amazing. This is actually true of pretty much all of SwiftUI. When any of SwiftUI and all of SwiftUI

⏹️ ▶️ Casey is working, when it’s firing on all cylinders, it is amazing. In so many ways, actually, it just

⏹️ ▶️ Casey occurred to me, in so many ways, I feel like SwiftUI is my old BMW, in that when it works,

⏹️ ▶️ Casey holy crap, it was great. It doesn’t work that great a lot of the time, though, and that’s the problem. So I apologize,

⏹️ ▶️ Casey John, for interrupting. Please continue.

⏹️ ▶️ John I think an even better analogy, and what I was thinking when I was doing it, of course, is based on my background, is it’s like web dev.

⏹️ ▶️ John, Casey Web dev people

⏹️ ▶️ John are used to the idea that you can be writing in one window and see the updates in the other. And you can, you know,

⏹️ ▶️ John I use BBEdit for a lot of my web dev and BBEdit has a live HTML preview.

⏹️ ▶️ John And so as you’re editing the HTML in your BBEdit window, the window right next to it,

⏹️ ▶️ John it updates in real time and it never pauses because HTML is very forgiving and it’s not compiled like a language

⏹️ ▶️ John or whatever. And it’s just so nice. And then the other, you know, the non-live version

⏹️ ▶️ John of WebDev is still write a bunch of stuff, save, command tab, command R to reload, you know, like

⏹️ ▶️ John the worst case, it’s still 100 times faster than building your app and shipping it to the simulator or a

⏹️ ▶️ John phone or whatever, and then navigating to a screen and all that other stuff. So SwiftUI has always felt like WebDev,

⏹️ ▶️ John right down to, you know, it’s like you’re writing CSS for it as a bunch of blocks,

⏹️ ▶️ John there, you know, the HStacks and VStacks are a little bit different primitives then you have block level elements

⏹️ ▶️ John and CSS, but it’s similar where you have padding and frame sizes and alignments, and

⏹️ ▶️ John it’s very web-devy, right down to the tools. So that obviously, when I saw SwiftUI WWDC,

⏹️ ▶️ John I was very attracted to it, because I’m like, at that point I had never done any of the

⏹️ ▶️ John quote-unquote traditional app kit or UI kit stuff or whatever. I’m like, this looks like web dev. This is something that

⏹️ ▶️ John I’m already familiar with and comfortable working in. This balance of, well, is it a GUI builder,

⏹️ ▶️ John like interface builder? Not really, but I’ve been building quote unquote GUIs for my whole

⏹️ ▶️ John career by typing text. But I’m also used to not just like, we talked about my frustrations

⏹️ ▶️ John with auto layout. It’s like, well, you can just do it all in code. But that’s so distant. That’s like you write a bunch of code and try

⏹️ ▶️ John to visualize in your head what it’s gonna do and then you have the whole build and run and install cycle or whatever to get

⏹️ ▶️ John to the point where you see it and then you cycle back. And that’s a longer cycle than sort of a live preview

⏹️ ▶️ John or a very fast preview. And what Casey said is totally true. like dark mode and different

⏹️ ▶️ John data. Like you essentially provide it with like a, in web dev charts, fixture data

⏹️ ▶️ John or whatever. Like you can either have a fixed set of data or a simulated set of data or real data. You can pull it from the preview

⏹️ ▶️ John things, which is also possible sometimes by the way. So you can see what it looks like with different content,

⏹️ ▶️ John depending on your app, this has different amounts of usefulness and how far you wanna go. And you can do that on a

⏹️ ▶️ John per, you know, sort of sub view basis. So, you know, Apple recommends

⏹️ ▶️ John building SwiftUI from your most primitive view upwards. So if you have a page with a bunch

⏹️ ▶️ John of table view cells in it, and each one of those cells has an image, and it has a picture, and

⏹️ ▶️ John it has a bunch of badges or whatever, you can build that up from its smallest unit. And each one of those little miniature

⏹️ ▶️ John views can itself, you can just work on it in isolation and get that working in its own little preview. And then the

⏹️ ▶️ John next step up is you embed that in a bunch of other things, and that has a preview. And you work your way up to the big screen

⏹️ ▶️ John that has everything in a preview. Again, kind of like HTML, kind of like CSS, you can break it up into pieces and

⏹️ ▶️ John break your problem down into composable pieces and then put them together. And yeah,

⏹️ ▶️ John it’s a very compelling experience. My experience setting aside the tool foibles, using

⏹️ ▶️ John it for my app, which

⏹️ ▶️ John, Casey my app

⏹️ ▶️ John is getting close to being done, probably sometime this month, we’ll talk about it and I’ll ship

⏹️ ▶️ John it. But not to give too much away about the app, but

⏹️ ▶️ John I’m using it, I’m not using it everywhere. I’m, you know, like a couple of my windows, well,

⏹️ ▶️ John or just plain old AppKit, which I’m now familiar with and became very comfortable with. And it’s

⏹️ ▶️ John so clear that AppKit has so many more features than SwiftUI, which makes sense, because AppKit is 30 years old,

⏹️ ▶️ John but I don’t think it is from the next days. And SwiftUI has been out for

⏹️ ▶️ John less than a year or whatever. But

⏹️ ▶️ John when using SwiftUI, the main difference I found is I’ll often wanna do something.

⏹️ ▶️ John And I’m using SwiftUI in a slightly nontraditional way, which will become clear when I eventually want to talk about an app.

⏹️ ▶️ John And I’m like, how do you do that in SwiftUI? And in almost every case,

⏹️ ▶️ John it was pretty easy to figure out how to do it in AppKit, because AppKit has a delicate method for everything,

⏹️ ▶️ John everything you can possibly imagine. And SwiftUI really has

⏹️ ▶️ John sort of a straight and narrow. It’s like, you’re gonna have buttons and controls and

⏹️ ▶️ John views and stacks and padding and scrolls and all those things are fine. I was like, but what if I wanted to

⏹️ ▶️ John do something a little bit different? What if I want to be able to do a modifier click on

⏹️ ▶️ John a button? What about drag and drop? What about context menus?

⏹️ ▶️ John What if I want to do multiple of those things in a single area? And so if you guys are like, whoa, whoa, whoa, hold on.

⏹️ ▶️ John A button is a thing that you click and does a thing. You don’t want to get any fancier than that, do you?

⏹️ ▶️ John And it’s like, I kinda do. And AppKit’s like, sure, fine, whatever, subclass it, override,

⏹️ ▶️ John you know, set up a delegate, uses a million different things, there’s different ways, like you have control over everything in

⏹️ ▶️ John SwiftUI. Like that’s the one thing I wanna see from SwiftUI and the next W2WC is

⏹️ ▶️ John way more like hooks into the system. So you know these abilities are there.

⏹️ ▶️ John If you’re doing something normal where you just have like normal controls, normal windows, normal views that you click around in,

⏹️ ▶️ John it’s pretty straightforward plus or minus the bugs, of which there are plenty, right? But if you wanna do weird

⏹️ ▶️ John stuff, it really fights you. And there are ways to say, okay, I give up, just embed

⏹️ ▶️ John an NSView right here. Like, you know, nevermind, nevermind SwiftUI. But once

⏹️ ▶️ John you start doing that, you’re like, well, why am I using SwiftUI again? Like, why am I, I’m trying to make like a skeleton and

⏹️ ▶️ John then every single actual view is an NSView that I control the

⏹️ ▶️ John, Casey traditional

⏹️ ▶️ John way. It’s not ideal, right? So in the end,

⏹️ ▶️ John I was mostly able to beat it into submission and get it to do what I want, but boy,

⏹️ ▶️ John it was not straightforward. Like at many points I thought to myself, if I had not

⏹️ ▶️ John used SwiftUI for this project and instead had done this exact task in AppKit,

⏹️ ▶️ John I would be done by now. I thought that many, many times, which may not actually be true, because

⏹️ ▶️ John I’m not, you know, I’m never good at AppKit either, if I’ve done one dinky little app, right? But in the course

⏹️ ▶️ John of trying to figure out how to do all these different things in SwiftUI, I very quickly found out the AppKit

⏹️ ▶️ John way to do them, and I’m like, well, I found the AppKit way, because there’s many more answers on Stack Overflow

⏹️ ▶️ John and it’s longer, it’s been around longer. There’s less misleading or false data because SwiftUI

⏹️ ▶️ John has changed a lot even in the short time since it’s been announced. I’m like,

⏹️ ▶️ John, Casey but that doesn’t help me. I need to find the SwiftUI way to do

⏹️ ▶️ John it. Is there a SwiftUI way to do it? Is this even possible? How do I arrange things? There is

⏹️ ▶️ John one or two things that I couldn’t do without bugs in SwiftUI. Like

⏹️ ▶️ John a lot of them are cosmetic bugs where some visual state will get messed up and it’s like, well, I’m

⏹️ ▶️ John doing it right, but every once in a while it gets confused and it would like eventually reset itself

⏹️ ▶️ John if you did some action and it’d be like, oh, I forgot, yeah, that thing shouldn’t be visually there and it would get rid of it. I’m like,

⏹️ ▶️ John I can’t use that feature in SwiftUI because that bug is gonna look like my bug,

⏹️ ▶️ John even if it’s not my bug, it’s just, you know, SwiftUI being weird, right? So setting that

⏹️ ▶️ John aside, I did eventually find a way to do everything I wanted in SwiftUI, but I leaned heavily on AppKit

⏹️ ▶️ John because SwiftUI on the Mac anyway, it’s just a view. you

⏹️ ▶️ John do have to put it somewhere. So it’s in a window and the window is an AppKit window.

⏹️ ▶️ John And so I get to use all of the AppKit functionality for the window. It’s just that that window has a view

⏹️ ▶️ John in it that is a SwiftUI view, which may or may not have one or more NSViews shoved

⏹️ ▶️ John in it. And no, so it’s a little bit of a weird hybrid mongrel, but overall,

⏹️ ▶️ John I think it was a, I had a similar experience to Casey where it’s like, I think I had,

⏹️ ▶️ John I got the notion to do this app one day and I fired it up and it took

⏹️ ▶️ John me like maybe, made a new project, took me like 15 minutes to figure

⏹️ ▶️ John out like enough of the core functionality to get like the data I needed. I still had nothing on the screen,

⏹️ ▶️ John but I’m like, all right, well, now I just need to display this data

⏹️ ▶️ John somewhere. So I was, you know, let me do SwiftUI. It was so fast to get that data

⏹️ ▶️ John into a SwiftUI view and just like, like if you’d seen me do it, you’d be like, you’re gonna be done with this app in three days. like

⏹️ ▶️ John Casey, you found out, well, you know, there’s a million edge cases and you’re gonna be fighting with a lot of things.

⏹️ ▶️ John And when you wanna do that easy thing, like I’m just gonna add this minor feature and you realize, oh, how do

⏹️ ▶️ John I even do that in SwiftUI? There is, how do I do that at all? And then you start Googling

⏹️ ▶️ John or whatever. So, but I got up and running in the preview and then up and running for real in the app

⏹️ ▶️ John so fast. I was like this, I couldn’t believe it. You know, it seemed like I

⏹️ ▶️ John was gonna be done in a matter of a week. So, again, like web dev, SwiftUI

⏹️ ▶️ John has that, the advertised experience of that you can get something on the screen that looks vaguely like the

⏹️ ▶️ John app that you want it to be very quickly is true. And the thing, the one sort of,

⏹️ ▶️ John not weakness, but like a characteristic of a lot of the SwiftUI tutorials, you know, I’ve seen many of them

⏹️ ▶️ John on the web and I’ve been on many travels trying to find out how to do these weird esoteric things, is most of

⏹️ ▶️ John them focus heavily on getting things up on the screen.

⏹️ ▶️ John And real apps, that’s part of it, but real apps also say, yeah, but how does that stuff all connect together?

⏹️ ▶️ John How do, you know, how do you, when you perform an action here, how does it cause a thing over there? How

⏹️ ▶️ John does the data thread through? How, you know, like, can I click this? Can I right click, especially on the Mac? Can I,

⏹️ ▶️ John you know, command click it? Is there a context menu? How does it interact with the other things? Can I select it and do something with selection?

⏹️ ▶️ John Is there a toolbar? Is there, like, all of those things. It’s so different than,

⏹️ ▶️ John hey, you know, like a WDC demo, I have this blob of data that’s like just a JSON, fixed JSON blob for

⏹️ ▶️ John the purposes of a WWDC demo. And I just want to display it in a beautiful thing. That’s so easy to do, but that’s

⏹️ ▶️ John a unidirectional dump data down the top of a giant funnel and have it display into a thing. If that data has to be

⏹️ ▶️ John live and the app has to be interactive, it gets much harder. So there is a second level of Swift tutorial that

⏹️ ▶️ John talks about data threading, but I feel like the final level is like action threading, like the whole,

⏹️ ▶️ John you know, the equivalent of like the responder chain and focus and all the things that

⏹️ ▶️ John Mac apps deal with that are integral to AppKit, most of the SwiftUI stuff

⏹️ ▶️ John glosses over. Like, as they kind of like, kind of like this came up when we were talking about it earlier, kind of like React

⏹️ ▶️ John in the web thing. One of React’s heretical things is that it mixes together JavaScript and

⏹️ ▶️ John HTML because it wants them to be close together. So it’s like, oh, when someone clicks a button, here’s the action

⏹️ ▶️ John for that button right here with the button. SwiftUI is like that. If you make a button, you put the action right

⏹️ ▶️ John there with the button. The question is, what do you put in that action? Does that action just call a method on some

⏹️ ▶️ John data that was passed down and or observed or in the environment? Do you implement the action right in there

⏹️ ▶️ John with the button? How do you build a scalable, well-factored app

⏹️ ▶️ John that actually does things by threading your logic and actions and controls

⏹️ ▶️ John and state all through these different views? And that, like React, is actually surprisingly hard to

⏹️ ▶️ John do because you have to decide who owns what state, where is it kept, how much state is brought down, what’s in the environment,

⏹️ ▶️ John what’s not. Those decisions in these trivial apps, like you’re not getting any help from these

⏹️ ▶️ John demos. Even the one that Apple just put up, which is fairly sophisticated demo, it’s like, yeah, but in the

⏹️ ▶️ John end, this is a very simple application. Like I can’t imagine making like a real Mac app,

⏹️ ▶️ John like Acorn or something, like an actual complicated app with features and palettes and menus

⏹️ ▶️ John and a big canvas and all that stuff with SwiftUI without

⏹️ ▶️ John coming up with a fairly solid plan about how to distribute your state

⏹️ ▶️ John and business logic and thread everything through and keep all the action sane or whatever.

⏹️ ▶️ John So anyway, I think I see a lot of promise in it. I enjoyed the experience,

⏹️ ▶️ John but I was also super frustrated by the limitations. I’ll go into much more detail eventually when I talk about my app.

⏹️ ▶️ Casey One thing I would like to jump on is what you were saying about not really having access to like AppKit or the system in

⏹️ ▶️ Casey general. And that is so unbelievably true and frustrating. So a really great example of this is

⏹️ ▶️ Casey when I use the SwiftUI view for purchase, and if the purchase fails, which apparently it’s done

⏹️ ▶️ Casey at least once for John and maybe for everyone, who knows, hey, when there’s an issue, I wanted to put up

⏹️ ▶️ Casey an alert saying, hey, there was an issue. And just a standard UI alert controller, the same dialogue box that you would

⏹️ ▶️ Casey get in any app. And to do that in SwiftUI, maybe I just have

⏹️ ▶️ Casey been reading the wrong advice, but apparently the like blessed way to do this

⏹️ ▶️ Casey is to do, what is it, like an on appears or something like that,

⏹️ ▶️ Casey which is at the end of your view. So basically it’s kind of like a view did load,

⏹️ ▶️ Casey if you were viewed will appear, I guess I should say. And upon

⏹️ ▶️ Casey that, it will check a state flag that is part

⏹️ ▶️ Casey of your model, that it will then, if that state flag is true,

⏹️ ▶️ Casey then it will go ahead and show the alert, which just feels frigging gross. Like,

⏹️ ▶️ Casey oh God.

⏹️ ▶️ John Yeah, I did something very similar for drag and drop support, where it’s like, really? Because

⏹️ ▶️ John when you’re laying out your view, you feel like I’m describing what the view is. Here’s the alignment, here’s the padding, here’s what’s in it, here’s how they’re

⏹️ ▶️ John nested in each other. But you’re also describing, show this thing, show this thing, show this thing, conditional on

⏹️ ▶️ John these five state variables. It feels weird, doesn’t it? Like, it doesn’t feel like logic. It feels like you’re describing,

⏹️ ▶️ John like what you’re describing is the super set of all things that could ever appear on the screen, and then a bunch of them are gated by state variables.

⏹️ ▶️ John And then you just twiddle the state variables somewhere very distant, and then the thing appears,

⏹️ ▶️ John and then the state variable goes off and it disappears or whatever, and it’s a very strange way to work.

⏹️ ▶️ Casey Yeah, like I think I can get through that in general. So like, let’s say you were showing like an empty

⏹️ ▶️ Casey view versus a populated view, and having like a state variable be the switch for that. Like, I think

⏹️ ▶️ Casey I’m okay with that. But, you know, there was both with the case

⏹️ ▶️ Casey of showing an alert, there’s just no real easy or clean way to do that. And

⏹️ ▶️ Casey additionally, I wanted to have the purchase screen dismiss itself if it worked,

⏹️ ▶️ Casey which maybe nobody will ever see. But I wanted it to dismiss itself. And that is also

⏹️ ▶️ Casey in onAppear as a flag. And then it’s going to dig into its presentation

⏹️ ▶️ Casey mode, which you need to bind as an environment variable. It’s just some of the stuff that feels

⏹️ ▶️ Casey like it should be easy is really, really hard. And that’s the way way it is with everything, right? Like with SwiftUI, the hard

⏹️ ▶️ Casey stuff is easy, sort of, but the easy stuff seems to be really hard, whereas

⏹️ ▶️ Casey it’s the exact reverse with UIKit or perhaps

⏹️ ▶️ John AppKit. I mean, I feel like it’s just the paradigm. What I just described is a,

⏹️ ▶️ John you know, a fairly reasonable description of the difference between declarative

⏹️ ▶️ John and imperative. Like, we’re all in an imperative mindset where we’re like, I want to call an API that makes an alert appear

⏹️ ▶️ John because that’s

⏹️ ▶️ John, Casey imperative programming.

⏹️ ▶️ John And that’s what UIKit and AppKit is. But declarative is like, no, you don’t call an API that makes an alert appear.

⏹️ ▶️ John You just describe this scene as a state machine and say, if this state

⏹️ ▶️ John is true, then there’s an alert. If the state is not true, there’s not. Now, SwiftUI isn’t strictly

⏹️ ▶️ John declarative, because, for example, in the action of a button, you can start imperative programming. And you just, in fact, that’s

⏹️ ▶️ John what you’re going to do. You’re going to call a bunch of methods on your app or whatever. Like, you’re going to do a thing. The button

⏹️ ▶️ John performs an action on your model, and something’s happening, right? You can do that right there. and there you

⏹️ ▶️ John now you’re in imperative mode again. But for elements that appear on the screen, a lot

⏹️ ▶️ John of the stuff is, you know, declarative, like they say it’s going to be. And it’s a different way of thinking. Again, same thing

⏹️ ▶️ John with react like on the web. You have to change your mindset a little bit. And it’s very often frustrating

⏹️ ▶️ John when, especially if you don’t know that, like the on appear or whatever, like the drag and drop

⏹️ ▶️ John stuff. I thought it was impossible to do this thing. But there was like there was like a validate drop,

⏹️ ▶️ John drop, enter, drop, exit, perform drop. And I was, I was doing all these things and validate

⏹️ ▶️ John drop seemed to like had a Boolean return value that it seemed like it was just being ignored. And

⏹️ ▶️ John I did drop entered and drop exited. And I was trying to do declarative stuff to change the cursor

⏹️ ▶️ John using app kit. Cause I’m like, well, SwiftUI doesn’t have a way to change the cursor as far as I can tell. So let me just

⏹️ ▶️ John in one of these things where drop entered, drop, they all had like callbacks like, Oh, and the callback, I’ll just change

⏹️ ▶️ John the cursor. But nope, that doesn’t work. Like I call the, the correct API to change the cursor. But but

⏹️ ▶️ John whatever, like something else in Swift UI was saying, no, no, no, I control the cursor. You know, you can try to set

⏹️ ▶️ John the cursor, but I never even saw it blink to my cursor. I always just changed it to the other one. So drop updated was

⏹️ ▶️ John the correct thing, which again, you know, it took a callback and in the callback,

⏹️ ▶️ John you did this weird thing about returning a drop proposal that didn’t proposal that influenced the cursor. And it’s just,

⏹️ ▶️ John it’s just such a different way of working. Whereas it takes you two seconds to find out how to change the cursor on the Mac with

⏹️ ▶️ John NSCursor. It takes much longer to figure out how to do it on a drag and drop

⏹️ ▶️ John with the right, I don’t even know what they’re called. What are those little things called? They’re not delegate methods. They’re

⏹️ ▶️ John little like on a peer or whatever. I don’t know if there’s a SwiftUI name for those, but

⏹️ ▶️ John anyway, those are all new. They have all different names. They have all different verb tenses and they

⏹️ ▶️ John are factored differently because they’re in a declarative API instead of an imperative

⏹️ ▶️ John one. So a lot of your sort of muscle memory or

⏹️ ▶️ John idea of what this thing will be called, it’s not called that in SwiftUI if it exists at all. So

⏹️ ▶️ John yeah, there’s a learning curve. Maybe for people who are just being born now,

⏹️ ▶️ John by the time SwiftUI is mature and they learn it as their first API, it will be a really good fit with

⏹️ ▶️ John whatever web technologies are around by the time they get to that age and it will

⏹️ ▶️ John fit their mental model better. But it’s definitely quite a change from

⏹️ ▶️ Casey AppKit. Yeah, I think you’re right. And I think a lot of this perhaps is my own ignorance,

⏹️ ▶️ Casey But again, I mean, it’s such a yin and yang, right? When it works well,

⏹️ ▶️ Casey God, it is so nice. It is so, so nice. And then it just falls apart and you hate yourself.

⏹️ ▶️ Casey So Marco, you’re really enthusiastic about trying this, right?

⏹️ ▶️ Marco I mean, yeah, I have high hopes for the future of SwiftUI.

⏹️ ▶️ Marco I admit that it does turn me off to a large degree because of

⏹️ ▶️ Marco how different it is, because it is, you know, as you mentioned, because

⏹️ ▶️ Marco it is like declarative instead of imperative, it’s such a different style of coding

⏹️ ▶️ Marco anything, let alone UIs, which are so often like so imperative. So

⏹️ ▶️ Marco I think it’s gonna be a while, first of all, before it is even mature enough that

⏹️ ▶️ Marco it is a reasonable thing to use most of the time. That’s gonna take at least a few years.

⏹️ ▶️ Marco But then also, there are gonna be certain tasks where it’s just

⏹️ ▶️ Marco worse. And there are certainly some that it’s gonna be better for, but it’s

⏹️ ▶️ Marco a totally different way of thinking about things, and you can’t do things, you know, you mentioned earlier, like

⏹️ ▶️ Marco certain things that are really easy in the old way are really hard in SwiftUI.

⏹️ ▶️ Marco And it turns out a lot of those things are really common needs for UI programming on

⏹️ ▶️ Marco iOS. So I don’t, it might never be better,

⏹️ ▶️ Marco Or it might always be this kind of like weird alternative thing that you can do if you want to,

⏹️ ▶️ Marco but you don’t, but not like, but everyone’s not doing it. Right? Like it could always stay there.

⏹️ ▶️ Marco Uh, it could be more, you know, more practical on some platforms and others like watchOS

⏹️ ▶️ Marco where it began. It’s probably easier because it’s a simpler, uh, you know, problem space

⏹️ ▶️ Marco there. And also the alternative watch kit is horrible. So it’s a really,

⏹️ ▶️ Marco it’s a much easier sell on watchOS. I think. But like an iOS and a Mac

⏹️ ▶️ Marco OS where you already have very mature UI frameworks that work in,

⏹️ ▶️ Marco I think, more straightforward ways, you know, if not, you know, they might be more complicated in certain ways, but

⏹️ ▶️ Marco they work in ways that all of us programmers already know how to deal with. We already know

⏹️ ▶️ Marco how to deal with UI kit. We already know how to deal with app kit. And if we don’t, and we start

⏹️ ▶️ Marco looking up help articles and stuff, it’ll work in a way that we at least

⏹️ ▶️ Marco are familiar with it’ll it’ll work in in like a familiar syntax or or mode

⏹️ ▶️ Marco of doing things as opposed to like Swift UI is it’s

⏹️ ▶️ Marco almost like it’s like learning a different language that also has a different alphabet and that also

⏹️ ▶️ Marco isn’t even spoken by humans it’s like okay well okay so if we’re learning like you know that

⏹️ ▶️ Marco the the pig alphabet that is spoken only by pigs like okay we have a lot to learn

⏹️ ▶️ Marco here a lot to relearn a lot to unlearn this is gonna be difficult. Right? And

⏹️ ▶️ Marco so I think SwiftUI is going to be like that, where because it is such a different paradigm

⏹️ ▶️ Marco than what all of us are taught, and because certain common things are extremely

⏹️ ▶️ Marco complex, and to some degree might always be,

⏹️ ▶️ Marco and because it’s year one and we’re already having to

⏹️ ▶️ Marco frequently do little hacks that basically break out of declarative ness of it,

⏹️ ▶️ Marco or we do like those little state variables that kind of tarnish the purity of this model

⏹️ ▶️ Marco in such a way that makes you think like maybe

⏹️ ▶️ Marco, John this isn’t the right

⏹️ ▶️ Marco model

⏹️ ▶️ John, Marco all the time.

⏹️ ▶️ John The state variables aren’t tarnishing it. That’s how you’re supposed to use it. It’s just a different mindset.

⏹️ ▶️ Marco True, but like it may because it makes certain things feel kind of bad or sloppy

⏹️ ▶️ Marco or like hacks. Uh, this, this is probably going to prove to be

⏹️ ▶️ Marco a really cool tool sometimes. But it might not

⏹️ ▶️ Marco be the universal next big way to do UIs. It might never reach

⏹️ ▶️ Marco that state. It might just be that UIs are actually just much easier to do declaratively or imperatively.

⏹️ ▶️ Marco God, I can’t get them straight.

⏹️ ▶️ John I think the name is part of the problem because it’s SwiftUI and it makes you think like, oh, this is gonna be

⏹️ ▶️ John what I do to make my entire user interface. But if it had been called SwiftLayout, that might’ve been a

⏹️ ▶️ John better name. I know data is kind of threaded through it, but like I view it right now as

⏹️ ▶️ John like, it’s competitors is, you know, auto layout or

⏹️ ▶️ John storyboards. Like it’s not doing my data model for me. We know that’s a whole separate thing.

⏹️ ▶️ John It’s basically, oh, so you want your data to appear somewhere on the screen. You’re gonna make a view,

⏹️ ▶️ John right? Well, that’s what SwiftUI does. It just makes views. It doesn’t even make windows on the Mac. Like it’s not even at that

⏹️ ▶️ John level. It just makes views. And if you’re going to make a view, you can make it as a

⏹️ ▶️ John storyboard or a Zib or Nib or whatever. You can do it programmatically or whatever.

⏹️ ▶️ John And like, I think of SwiftUI as, imagine if you can make your UIs programmatically, but

⏹️ ▶️ John the syntax was a billion times nicer and you got live previews. That’s what it’s like. Like a pretend interface

⏹️ ▶️ John billet didn’t exist and you were just doing all your UIs programmatically in Objective-C or Swift.

⏹️ ▶️ John If you’re good at that and you know all the APIs already, you can kind of visualize what it’s going to look like. But imagine if those APIs were

⏹️ ▶️ John so much more like terse, not so wordy, not with a million different arguments where you

⏹️ ▶️ John could really just express what you want in a very concise, structured way and

⏹️ ▶️ John see it in real time with multiple previews and with different data and different, you know, scale factors and sizes

⏹️ ▶️ John and dark mode and all that other stuff. That’s SwiftUI, right? And it’s not doing the whole

⏹️ ▶️ John rest of your application. And you do have to figure out how to thread your data through it and everything, but it’s not really doing,

⏹️ ▶️ John especially on the Mac, your whole app for you. I think you can do

⏹️ ▶️ John most of the pieces. I think you can make menus, context menus, menu bar

⏹️ ▶️ John icons, but the windows still have to be NS windows or whatever, and you can put views

⏹️ ▶️ John inside them. Like, it’s a weird mishmash. I don’t know if SwiftUI wants to be more than Swift

⏹️ ▶️ John layout. Even if it was just as Swift layout, I think it’s a strong competitor to doing it

⏹️ ▶️ John programmatically or using auto layout or using springs and struts and doing,

⏹️ ▶️ John because the GUI builder way of doing it with interface builder is similar to SwiftUI

⏹️ ▶️ John only in SwiftUI you only touch the source code again, like web dev, you touch the source code. You don’t do web dev

⏹️ ▶️ John except for in the bad old days of like page mill or whatever. By touching the web page, you touch the

⏹️ ▶️ John source code and then you look at the web page to see how your thing came out and it’s like kind of like a real time thing,

⏹️ ▶️ John right? in Interface Builder, you touch the actual interface in storyboards

⏹️ ▶️ John or nibs, but there’s also a code part that’s over there that might influence it, and you can adjust that balance

⏹️ ▶️ John or whatever. So I think SwiftUI has a bright future in that realm. It’s just not

⏹️ ▶️ John clear to me how far it will try to expand. Like, is there a SwiftUI equivalent of a window

⏹️ ▶️ John on the Mac? Does it go that far, or does it always stay as a tool for making really cool views?

⏹️ ▶️ Casey Additionally, something I keep wondering is if you

⏹️ ▶️ Casey can put a SwiftUI view inside of a view controller. So view controllers like the old

⏹️ ▶️ Casey way, the standard way I should say, of presenting stuff on a screen. You can put

⏹️ ▶️ Casey SwiftUI views into view controllers. So if that’s the case,

⏹️ ▶️ Casey and if that’s how this all is held together for the live preview stuff, couldn’t we just

⏹️ ▶️ Casey live preview view controllers? is this an artificial limitation to

⏹️ ▶️ Casey force us to use SwiftUI to get the new sexy live preview stuff? Or

⏹️ ▶️ Casey is there something legitimately different about SwiftUI that makes that compulsory? I just,

⏹️ ▶️ Casey I can’t help but wonder, can’t we have this for

⏹️ ▶️ Casey UIKit and AppKit stuff? Can’t we have these live previews for UIKit and AppKit stuff? I feel like, it’s easy for me to say

⏹️ ▶️ Casey because I’m not the one writing all this, but it feels like we should be able to. And if so, why can’t we?

⏹️ ▶️ Casey Because that That would be amazing.

⏹️ ▶️ John I want that. I mean, on UIKit, maybe, but think about it again. I’m assuming

⏹️ ▶️ John one of the reasons, or the main reason, that the Mac doesn’t let you zoom in on Mac UIs in Xcode

⏹️ ▶️ John is because no part of the AppKit UI drawing code ever expected to be

⏹️ ▶️ John zoomed in,

⏹️ ▶️ John, Casey right? Whereas

⏹️ ▶️ John UIKit was built with that in mind. Those type of limitations are the type of thing that make me think like, AppKit

⏹️ ▶️ John never expected to be live previewed. That said, do you remember the big, What are these switches called? Maybe Marco

⏹️ ▶️ John will know. Are they called guillotine switches or scissors switches? You

⏹️ ▶️ John know, like in the Frankenstein movie where like… Oh yeah, I

⏹️ ▶️ Marco think they’re called knife switches.

⏹️ ▶️ John Yeah, there you go, that’s what it is, knife switches. It takes the big handle and it’s like Y-shaped and you switch it up like that

⏹️ ▶️ John and the machine turns on or whatever. There used to be a little icon that looked like that button in

⏹️ ▶️ John Project Builder and you’d be in Interface Builder, which was a separate app then, and you’d be laying

⏹️ ▶️ John out your thing and then you’d hit that little switchy button and it would pop up like a live window of the UI that you just made that

⏹️ ▶️ John you could interact with. But it wasn’t really live, like it wasn’t your whole app running. It was just

⏹️ ▶️ John essentially the nib instantiated enough so you could mess with it a little bit and

⏹️ ▶️ John see how it worked and see like the layout or whatever, which is strange because interface builder

⏹️ ▶️ John itself already looks almost like that and you can kind of interact with it right in interface builder. I think there

⏹️ ▶️ John still is a preview feature like that somewhere, but it’s not the same as SwiftUI. The reason you can do it in SwiftUI

⏹️ ▶️ John is, SwiftUI is so focused on the view, like it’s so, like, it’s

⏹️ ▶️ John so controlled about like the inputs and the outputs. The only way you can influence

⏹️ ▶️ John is with environment and state and then bindings back and forth between the different levels. And that’s it.

⏹️ ▶️ John It’s not like you can just, you know, like you can with the nib, just grab a reference to it from

⏹️ ▶️ John arbitrary code and just screw with it in your code at any point based on any logic you want, right? It seems

⏹️ ▶️ John to me that to actually do a live preview of like a view controller, you’d have to run your whole

⏹️ ▶️ John app because something in your app could have reference to that view controller, could dig into that thing and pull out the view and pull one of your

⏹️ ▶️ John controls and disable it. How are you gonna simulate that? You’ve just gotta run the app or SwiftUI doesn’t allow that stuff so

⏹️ ▶️ John I feel like you’re never gonna see the same level of fidelity even

⏹️ ▶️ John with UIKit.

Google Photos bug

⏹️ ▶️ Casey All right. So Google photos had a very big oops

⏹️ ▶️ Casey that happened, I think around Thanksgiving, but has just been admitted to now.

⏹️ ▶️ Casey And I didn’t have a chance to look into this because I’ve been a little busy, but my understanding is if I’m not mistaken, that

⏹️ ▶️ Casey if you requested a download of either like all of your videos and photos or some of your videos and photos,

⏹️ ▶️ Casey there’s a small chance you would get somebody else’s stuff. Oops.

⏹️ ▶️ Casey So, or some, some of somebody else’s stuff. And somebody else could get your stuff. And somebody else could get your stuff

⏹️ ▶️ Casey and that’s a that’s pretty big oops. Not feeling good about that.

⏹️ ▶️ Casey So that is really unfortunate, really sad. And I don’t know what to

⏹️ ▶️ Casey make of that because I am still using Google Photos as one of my photo backup,

⏹️ ▶️ Casey well, quasi backup strategies. John, I know you’re using it last

⏹️ ▶️ Casey I heard. How do you feel about this?

⏹️ ▶️ John I put this in here not to like dance on Google and say, ah, Google had a problem.

⏹️ ▶️ John Aren’t they so bad? Just to like, this is this is part of living in the world where we have these cloud services.

⏹️ ▶️ John And I thought it was just worth talking about that level. You know, so we have recommended

⏹️ ▶️ John many times, hey, you know, if you have something that you care about, don’t just leave it on your

⏹️ ▶️ John computer that’s in your house, because your computer could break, your house can burn down. You could get robbed,

⏹️ ▶️ John like all sorts of things that can happen. If you really care about that information, you have to have it elsewhere. that elsewhere is

⏹️ ▶️ John usually, in addition to maybe having a backup copy at a friend’s house or a relative’s house or something,

⏹️ ▶️ John a better system that is easier to keep up to date with is to use one of the many cloud services.

⏹️ ▶️ John For photos, you can push your photos up to Apple’s iCloud photos thing, you can use Google Photos, you

⏹️ ▶️ John can use a data agnostic backup service like Frequent Sponsor Backblaze or any other cloud backup

⏹️ ▶️ John services. But the whole idea is, you’re gonna take your data and you’re going to send it over wires

⏹️ ▶️ John out of your house to a computer that somebody else owns. And

⏹️ ▶️ John part of the deal with that is you are shifting responsibility

⏹️ ▶️ John for that to somebody else, which mostly you want to do. It’s like, it’s their problem to make sure that their data center doesn’t burn

⏹️ ▶️ John down and that they have redundant backups and all that stuff. And all I got to worry about is that we

⏹️ ▶️ John don’t have simultaneous disasters. If their data center burns down, hopefully it doesn’t burn down the same day my house burns

⏹️ ▶️ John down, right? And that’s how you protect. If you have three cloud backup services, now multiple

⏹️ ▶️ John data centers need to burn down the same day your house burns down. And the chances get lower and lower that you’re actually going to lose anything.

⏹️ ▶️ John But part of that deal is also, oh, if I screw up and accidentally pour water in my computer,

⏹️ ▶️ John Casey, that’s my bad. But I was responsible for that data, so oh well.

⏹️ ▶️ John Well, if Google accidentally pours water in their computer, that’s their bad. And that

⏹️ ▶️ John screwed up your data. Every time you put your data into someone else’s bucket and they’re responsible for taking care

⏹️ ▶️ John of it, their mistakes can affect your data, down to and including, oops, I accidentally

⏹️ ▶️ John send your photos to somebody who’s not you. They’re not doing it on purpose, just like Casey’s not spilling

⏹️ ▶️ John the water into his computer on purpose, but people make mistakes. Companies are made of people.

⏹️ ▶️ John So this, I feel like, is part of the bargain that we make when we use cloud services,

⏹️ ▶️ John which is you are now vulnerable to the mistakes of other people. Just like you are protected from

⏹️ ▶️ John your mistakes by giving your data to them, Now you are vulnerable to their mistakes. So

⏹️ ▶️ John I still strongly recommend cloud services, even knowing that they could accidentally delete

⏹️ ▶️ John all my photos, give them to somebody else, scramble them up or whatever. They are, you know, they’re

⏹️ ▶️ John just like any other entity made up of people. They’re not a magical AI. They’re not an infallible

⏹️ ▶️ John computer in the cloud. It’s just a bunch of people running a bunch of their own computers, just like you’re a person running your computer in the same

⏹️ ▶️ John way that you can screw up, they can screw up. Hopefully they have more controls, they have more people, They have more money, they have more time.

⏹️ ▶️ John They are more incentivized to take care of their stuff, perhaps than you are, because you don’t have time to be a full-time

⏹️ ▶️ John data warden for all the stuff in your house. But that risk still exists. And I think

⏹️ ▶️ John this is a perfectly good trade-off, despite things like this happening. Obviously,

⏹️ ▶️ John you should talk to your cloud providers or think about them and say, do they do this all the time?

⏹️ ▶️ John Are they constantly losing my data, deleting my data, giving it to other people? Are they intentionally

⏹️ ▶️ John selling my data or doing other mean things. That’s something you have to deal with. I think Google is still

⏹️ ▶️ John a pretty good steward of the data it holds, but every once in a while, something like this will happen.

⏹️ ▶️ John I’m still totally willing to take this bargain. I don’t see

⏹️ ▶️ John this and think, oh my God, I gotta get my photos out of the cloud. I think, well, that

⏹️ ▶️ John kind of stuff happens. If it happens every month with Google, I’ll think more strongly about perhaps taking my

⏹️ ▶️ John stuff out of the Google Cloud, but once in however many years, I’m not too worried about it.

⏹️ ▶️ Marco Yeah, when it comes to evaluating cloud services and providers

⏹️ ▶️ Marco and any modern big tech choice, you have

⏹️ ▶️ Marco to take the long-term average with stuff like this. Apple has

⏹️ ▶️ Marco lots of problems in lots of different areas, and we still stick with them because the long-term average is pretty

⏹️ ▶️ Marco good. Google, Amazon, Facebook, Microsoft, all the tech giants, They all have

⏹️ ▶️ Marco like, they have occasional issues. They have occasional bugs or security holes or just

⏹️ ▶️ Marco crazy things that just go wrong or quality issues or whatever. They all have these.

⏹️ ▶️ Marco It’s impossible to run a giant web service and be 100% perfect,

⏹️ ▶️ Marco to never have an issue, to always be up, like, it’s never, you’re never gonna find anybody

⏹️ ▶️ Marco who’s totally perfect. And it’s one of those things like, if you instantly drop and

⏹️ ▶️ Marco permanently leave anybody who makes a mistake once in a while. It’s kind of like swearing off airlines

⏹️ ▶️ Marco every time you have a poor experience on one. It’s like, you’re gonna run out of airlines pretty fast. There’s only so

⏹️ ▶️ Marco many and you’re gonna have a hard time flying anywhere and you’re mostly just hurting yourself. If you drop

⏹️ ▶️ Marco Google for this, their record is really good

⏹️ ▶️ Marco with security over time. They do a bunch of creepy crap. I’m not gonna say anything nice

⏹️ ▶️ Marco about them on that front. But when it comes to, this is a security bug. And their record on security bugs over

⏹️ ▶️ Marco time is really good. So this was a one-time fluke thing.

⏹️ ▶️ Marco I wouldn’t judge them long-term based solely on that. Now, if they have

⏹️ ▶️ Marco a pattern of neglect and sloppiness, and they start failing

⏹️ ▶️ Marco to do things like this on a regular basis, or they start having more security problems over time,

⏹️ ▶️ Marco that messes up the average. Then you can reevaluate. Then you can say, all right, this isn’t just a one-off thing or they don’t just

⏹️ ▶️ Marco screw up rarely. If they start screwing up often, that’s different. But one

⏹️ ▶️ Marco screw up over the 20 years that we’ve all been using Google products,

⏹️ ▶️ Marco one security flaw like this is not a big deal. And they really, again,

⏹️ ▶️ Marco when it comes to security, they really haven’t had very many bugs or flaws.

⏹️ ▶️ Casey No argument here. I mean, I’m gonna keep my stuff there for now, But it freaks me out, does freak me out.

⏹️ ▶️ Marco We are brought to you this week by Jamf Now. It’s easy to keep track of your own

⏹️ ▶️ Marco Mac or iPad or iPhone, but what about the other Apple devices at work? As a business

⏹️ ▶️ Marco grows, so does its digital inventory, and this makes it harder to manage everyone’s Apple devices.

⏹️ ▶️ Marco And this is especially true if you have remote employees. Jamf Now makes it easy to set

⏹️ ▶️ Marco up, manage, and protect your Apple devices. You can check your digital inventory, distribute

⏹️ ▶️ Marco Wi-Fi and email settings to the whole fleet, deploy apps, enforce passcodes,

⏹️ ▶️ Marco protect your company’s data, even lock or wipe a device remotely as needed from anywhere.

⏹️ ▶️ Marco Jamf Now helps you manage your devices so you can focus on your business instead. And it’s so

⏹️ ▶️ Marco easy to use, you don’t need any IT experience to do it. So our listeners can start securing

⏹️ ▶️ Marco your businesses today by managing your first three devices for free. You can add

⏹️ ▶️ Marco more after that starting at just $2 a month per device. Once again, first three devices free.

⏹️ ▶️ Marco Create your free account today at slash AT&T.

#askatp: Homebrew

Chapter #askatp: Homebrew image.

⏹️ ▶️ Marco That’s J-A-M-F dot com slash A-T-P. Thank you so much to Jamf

⏹️ ▶️ Marco Now for sponsoring our show.

⏹️ ▶️ Casey Stefan Jakobs writes, I’m kind of new to using the terminal to do things on a Mac, and I’ve come across Homebrew a few times.

⏹️ ▶️ Casey I’ve also heard, though, that Homebrew can make a bit of a mess if you’re not careful, although I’m not sure what careful

⏹️ ▶️ Casey means here. Do you guys use Homebrew? If not, is there an alternative? Do you know what kind of careful

⏹️ ▶️ Casey I need to be to be a happy Homebrew user? Let me start with the easy stuff. If I do use Homebrew, I

⏹️ ▶️ Casey quite like it. I know that there’s an alternative. Is it Mac ports? Is that what I’m thinking of?

⏹️ ▶️ Casey That’s the popular alternative? I think that’s

⏹️ ▶️ Marco right. Yeah, that’s the old one, yeah. Is there anything newer?

⏹️ ▶️ Casey Not to my knowledge, but again, I wouldn’t know. And in terms of what you have to do

⏹️ ▶️ Casey to be careful, I don’t know, I’m gonna learn with you, Stefan. So John, Marco, would one of you like

⏹️ ▶️ Casey to tell me what we need to do to be careful?

⏹️ ▶️ Marco Yeah, just don’t let time pass. That’ll do it. Just freeze time.

⏹️ ▶️ Marco Because this, here’s the thing, Homebrew is a package manager. That’s, you know, at the heart of it,

⏹️ ▶️ Marco it’s just like Linux package managers and everything, it’s a package manager. People judge, you know,

⏹️ ▶️ Marco oh, this package manager’s great, this package manager’s terrible, oh, like, apt-get is so much better than yum

⏹️ ▶️ Marco or whatever. Everyone has these holy wars over package managers throughout the history of package managers.

⏹️ ▶️ Marco But the reality is, Homebrew has the same problems that almost all of them do.

⏹️ ▶️ Marco You can get it set up once and it might work at a given point

⏹️ ▶️ Marco in time, but over time the packages will change.

⏹️ ▶️ Marco The platform you’re running them on will change, or the computer you’re running it on will change. So whatever

⏹️ ▶️ Marco you get working once at a point in time, a year later you want to install

⏹️ ▶️ Marco a new package and, oh this requires a new version of this library, upgrade that library, oh now this broke these old

⏹️ ▶️ Marco three things that you were depending on, or whatever, and then and you try to fix that and then

⏹️ ▶️ Marco it won’t build or it can’t remove dependencies or it can’t add dependencies

⏹️ ▶️ Marco or it has no idea where things are or it thinks it works and you run it and all the libraries are broken. And it’s like, it

⏹️ ▶️ Marco breaks. The setup that you build with package managers is so brittle that

⏹️ ▶️ Marco anything that you wanna do like three to six months after you did it the first time

⏹️ ▶️ Marco might not work and actually has a very high chance of not working correctly. And

⏹️ ▶️ Marco so, so often the solution ends up being, all right, just start over.

⏹️ ▶️ Marco Just wipe out everything that Homebrew installed, clear out the whole

⏹️ ▶️ Marco directory, and uninstall Homebrew completely, and then reinstall

⏹️ ▶️ Marco it as if it was never on your machine, and reinstall all the packages you need, have a script that you can just

⏹️ ▶️ Marco run over and over again, so you just do everything from scratch. And in Homebrew’s defense,

⏹️ ▶️ Marco it does actually make that easier than a lot of the Linux package managers because it installs

⏹️ ▶️ Marco all of its stuff like in one directory path areas. And so you can

⏹️ ▶️ Marco actually just blow that away usually. Like you know, make it uninstall itself first but then it’ll leave a bunch of crap

⏹️ ▶️ Marco behind and it’ll freak out and it’ll yell at you a million times about all the crap it left behind and then you can just go delete

⏹️ ▶️ Marco it and then you can install it as if it was never there. And usually that works.

⏹️ ▶️ Marco So in the sense of like being a package manager, it fails in the same

⏹️ ▶️ Marco way that most package managers fail. I think it fails in that way a little more

⏹️ ▶️ Marco often than the mature Linux ones do. But that’s also in part because

⏹️ ▶️ Marco Homebrew is on Mac OS and Apple doesn’t give two craps about it. And so

⏹️ ▶️ Marco Apple is, you know, every time Apple updates the OS, there’s all new

⏹️ ▶️ Marco garbage for Homebrew to have to deal with or work around or whatever else. So I’m sure Apple’s not making things easy

⏹️ ▶️ Marco on them. So it’s building a package manager on a very shifting and rapidly

⏹️ ▶️ Marco moving foundation. But still, it breaks a lot.

⏹️ ▶️ Marco And it breaks in all the familiar ways, dependency garbage or library garbage or whatever.

⏹️ ▶️ Marco But it’s also the work of a bunch of volunteers and we all use it for free.

⏹️ ▶️ Marco And so I kind of feel bad complaining about it.

⏹️ ▶️ Marco fix it. It’s, you know, it’s this big open world thing. I could try to help and I’m not. So I do kind of feel bad

⏹️ ▶️ Marco saying bad things about it. But you know, it’s a package manager and it’s no better and actually

⏹️ ▶️ Marco somewhat worse than most package managers out there that you would use these days. So expect all the same problems

⏹️ ▶️ Marco and anything you want to do with homebrew, I would say maintain a

⏹️ ▶️ Marco script that you can run in the future to set it up from scratch because

⏹️ ▶️ Marco given enough time you will need to,

⏹️ ▶️ Casey you know, I don’t think I’ve ever had to nuke homebrew and try it again from scratch.

⏹️ ▶️ Casey Not to say that you’re wrong. I’m not trying to say that your lived experience isn’t right. I’m just saying that as a second data

⏹️ ▶️ Casey point, I don’t think I’ve ever had it

⏹️ ▶️ Casey go quite that wrong. I’ve had to uninstall like individual things. Let’s pick on FFMPEG

⏹️ ▶️ Casey just for the sake of discussion. Like maybe something goes awry with FFMPEG and I have to uninstall it via

⏹️ ▶️ Casey homebrew and then reinstall it, and then it’s been fine for me. So I don’t know if I’m just –

⏹️ ▶️ Casey maybe I’m not doing as complicated things with Homebrew or maybe I’ve just had better luck. I’m not sure. But

⏹️ ▶️ Casey I wouldn’t say – in my personal experience, I wouldn’t say it’s demonstrably worse than any other package

⏹️ ▶️ Casey manager. But yeah, I guess it depends on what your

⏹️ ▶️ Casey particular experience is. John, how has it gone for you? Do you even use Homebrew in the first place?

⏹️ ▶️ John John Greenewald Yeah, the question was, is there an alternative? the alternative is do not use a package manager. That’s

⏹️ ▶️ John what I have done. I don’t use package managers, although occasionally I’ll install one and use

⏹️ ▶️ John it to install a thing, but I always regret it and go back. So what’s the alternative to using a package manager?

⏹️ ▶️ John Well, a long time ago, in the dark days of Unix, there were really no package managers, and if you wanted

⏹️ ▶️ John software, you downloaded the source code and you built it yourself. That’s what I do. I download the source, I build it,

⏹️ ▶️ John and I install everything and use your local. It’s kind of like having a single directory where all your stuff is

⏹️ ▶️ John because Apple does not put anything in user local, so user local is all yours and it can have all

⏹️ ▶️ John the things, user local lib, user local bin, user local man, it’s all that user local include, it’s

⏹️ ▶️ John all there and you control all of it. The bad thing is if you don’t use a package manager, it is a giant pile of stuff

⏹️ ▶️ John that is mostly undifferentiated. But the thing I find most frustrating about package managers aside from them breaking

⏹️ ▶️ John and having to go through all the, you know, because when the OS updates, like it’s almost guaranteed that a bunch of stuff is gonna break. It happens

⏹️ ▶️ John with building from source too, but a little bit less often, is that very often what you want

⏹️ ▶️ John isn’t in the package manager. Oh, you want version whatever of that thing? Well, you can’t have it

⏹️ ▶️ John because it relies on version of whatever of this other thing, and we don’t have that in package management,

⏹️ ▶️ John so you can’t install the new thing. Or if you have conflicting versions, like you don’t get to pick how everything fits together.

⏹️ ▶️ John You are at the whim of what is available. And the more popular package management and

⏹️ ▶️ John prebuilt package repos of Linux distributions give you more options,

⏹️ ▶️ John but not that many more. Sometimes the thing you want isn’t there. And the other

⏹️ ▶️ John thing that I find frustrating is if it’s not available at all, like it’s a new piece of software or it’s

⏹️ ▶️ John not in the package manager at all, and you’re like, well, but I have all the prerequisites in the package manager, so

⏹️ ▶️ John what if I just pulled that one thing that I want from source? It should be able to find all the prerequisites that the package

⏹️ ▶️ John manager installed, right? Sometimes, maybe, but sometimes not, depending

⏹️ ▶️ John on how your OS controls, that type of thing, And Mac OS in recent years has been

⏹️ ▶️ John getting more cranky about things like LD load path or whatever the various

⏹️ ▶️ John ways are that you can get some pre-built binary to find a library that’s not where it expected it

⏹️ ▶️ John to be. That’s also kind of a security problem. So they’ve been locking down some of that stuff. And it gets a little bit tricky.

⏹️ ▶️ John All this is to say that if you build everything from source, it’s a pain, but it’s your pain. And

⏹️ ▶️ John you get to control exactly every aspect of it. As long as the software actually exists

⏹️ ▶️ John somewhere in the versions that you want, you get to manually be the package manager

⏹️ ▶️ John and traverse through the dependency chain and build things. And once you figure it out, you can

⏹️ ▶️ John build a script to do it or whatever. But bottom line is there’ll be a new version, a new major version of the operating system

⏹️ ▶️ John and you might have to rebuild stuff. I had a user local install of like Postgres,

⏹️ ▶️ John MySQL, a bunch of utilities like Wget and a bunch of stuff that Apple doesn’t

⏹️ ▶️ John include that I like, you know, links, whatever.

⏹️ ▶️ John, Casey I had built a bunch of software.

⏹️ ▶️ John Links the

⏹️ ▶️ John, Casey browser?

⏹️ ▶️ Casey Yeah. Why? What the hell are you using links

⏹️ ▶️ Casey, John for in 2020?

⏹️ ▶️ John If you’re doing web dev, it’s a thing you have

⏹️ ▶️ John, Casey to, it’s a certain set of utilities that you just always want to be

⏹️ ▶️ Casey there. Who is using links in 2020?

⏹️ ▶️ John Sometimes just a quick way from a command line to make a request to a thing and try to load

⏹️ ▶️ John it and has debug modes and

⏹️ ▶️ John, Marco you know, whatever, anyway. Oh my God. And plus if you want to make a version.

⏹️ ▶️ John So if you want to hear something that’ll make you feel, make me feel old and, you know, anyway.

⏹️ ▶️ John There was a time when the cool thing to do with your homepage, as we called it,

⏹️ ▶️ John was

⏹️ ▶️ John, Casey to

⏹️ ▶️ John make a cool version of it that detected when you were using it in links and instead of having

⏹️ ▶️ John like a header image, had ASCII art at the top that would look like your header image.

⏹️ ▶️ John So you could tell you were a hyper elite web developer in 1994. Now

⏹️ ▶️ John, Casey that I can get

⏹️ ▶️ John behind.

⏹️ ▶️ John, Casey It was

⏹️ ▶️ John awesome. Anyway, well, I didn’t even forget where I was going with that. I had

⏹️ ▶️ John to install all of that. I didn’t have to change for like three major versions.

⏹️ ▶️ John The trick is static linking. Do not dynamically link. Static link everything. It makes all your executables

⏹️ ▶️ John bigger and it wastes memory. But if you statically link, your user local can survive across major

⏹️ ▶️ John OS updates without breaking for a surprising amount of time. Eventually it’ll probably break because symbols will

⏹️ ▶️ John just disappear and you’re usually dynamically like you’re dealing with something, or all sorts of stuff, or it’s 32-bit

⏹️ ▶️ John and a 64-bit comes along, it’ll break eventually. Anyway, this is not, I

⏹️ ▶️ John can’t really, I mean, this is my answer. I don’t really recommend it because using Homebrew is a

⏹️ ▶️ John million times easier than building stuff from source, right? So if you

⏹️ ▶️ John do have to, if you use Homebrew and it screws up and you have to redo it, that’s tractable.

⏹️ ▶️ John Doing it just once from source requires like this wealth of background

⏹️ ▶️ John knowledge and experience that no one should ever need to have. So I can’t actually recommend it, but it’s

⏹️ ▶️ John what I do and I vastly prefer it to using a package manager.

⏹️ ▶️ Casey So I had to install links and look at my own home page because now I need to. Did you install links with Homebrew?

⏹️ ▶️ John Yes, I did. Why wouldn’t I? Because you, let me tell you, if I was installing links from source, I could not have done it in the amount

⏹️ ▶️ John of time that you just did it.

⏹️ ▶️ John, Marco So there’s an advantage

⏹️ ▶️ John of using a package manager. If it has what you want and you don’t, and you like the version that it has, you can

⏹️ ▶️ John get it done quickly. All those cores,

⏹️ ▶️ Casey you can? My favorite part of looking at my own homepage or my own website

⏹️ ▶️ Casey in links is I use the anchor emoji as an indicator of like a permalink.

⏹️ ▶️ Casey And in links, sure enough, it shows it as a plus sign, a hyphen and a close

⏹️ ▶️ Casey parenthesis.

⏹️ ▶️ Casey, Marco That’s

⏹️ ▶️ Casey, John awesome.

⏹️ ▶️ Casey Which is amazing.

⏹️ ▶️ John That’s so great. It really honestly is. Does links not know that you have a UTF-8 terminal program? Because

⏹️ ▶️ John it shouldn’t show the emoji, right?

⏹️ ▶️ Casey I don’t. I understand what you’re saying and I don’t

⏹️ ▶️ Casey, Marco know. I

⏹️ ▶️ Marco love that somewhere somebody has like an emoji to ASCII transliteration

⏹️ ▶️ Marco, John table. ASCII, right? It’s probably

⏹️ ▶️ John built into Lynx. This is why, what it’s like to be a fancy web developer. You’re

⏹️ ▶️ John signing so it look good in Lynx.

⏹️ ▶️ John, Marco That’s

⏹️ ▶️ John amazing.

⏹️ ▶️ Casey So good. Oh my word. And Marco Org is also looking pretty

⏹️ ▶️ Casey decent, all told. I’m surprised.

⏹️ ▶️ Marco I haven’t updated it since Lynx was current.

⏹️ ▶️ Casey That doesn’t like your permalink as much though. It’s labeled as Infity, which I think is short

⏹️ ▶️ Casey for infinity. But yeah, that must be what it is. Yeah. I-N-F-T-Y.

⏹️ ▶️ Casey Oh man, that’s too bad. Anyway, I could spend all night. I see now you’ve totally derailed me. I made fun of you and now

⏹️ ▶️ Casey I’m sad.

#askatp: ^⌥⇧⌘

⏹️ ▶️ Casey sucked in. All right, Matt Rohr writes, what’s the difference in any between the Shift-Control option

⏹️ ▶️ Casey and command modifier keys? Most apps have useful shortcuts, but I don’t see the logic behind which

⏹️ ▶️ Casey key does what kind of operation. For instance, in Finder and System Shortcuts, Command-D duplicates the selected

⏹️ ▶️ Casey files. Shift-Command-D opens the desktop folder. Option-Command-D shows

⏹️ ▶️ Casey or hides the doc. Is this pure memorization, or are there any patterns we can follow in learning shortcuts?

⏹️ ▶️ Casey Well, I think for this, I’m going have to turn to my favorite old man, John. What’s the story?

⏹️ ▶️ John Oh, there’s a system, all right. So this is, part of it is like a

⏹️ ▶️ John system someone thought about ahead of time and laid out and described

⏹️ ▶️ John in human interface guidelines or whatever. But part of it is also culture, where practices are accumulated over time

⏹️ ▶️ John through shared experience. There are certain things that you accept. So I think if you’ve been using any platform

⏹️ ▶️ John for a long period of time, and if there is any kind of strong culture, you will absorb it.

⏹️ ▶️ John You absorb sort of the, the, the rules and the norms, whether you’re aware of it at a

⏹️ ▶️ John conscious level or not. And that the Mac today is a combination of those

⏹️ ▶️ John slight sidebar. One thing that I get irrationally

⏹️ ▶️ John just annoyed by is, and this is just the, the hegemony

⏹️ ▶️ John of windows, I suppose where people who are using Macs, just a giant room full of people using Macs

⏹️ ▶️ John and they’re all talking to each about hitting control C to copy, and it’s like, believe me, you are not hitting,

⏹️ ▶️ John they’re all in terminal Windows, like you are not hitting control C to copy on that Mac. Everyone thinks

⏹️ ▶️ John like the main modifier key is because Windows dominated the 90s is control, and

⏹️ ▶️ John it’s not. As I pointed out many times, one of the awesome things about the Mac

⏹️ ▶️ John is control is left there for Unix. Control C can send sigterm

⏹️ ▶️ John or interrupt signal or whatever without interfering with copy, because

⏹️ ▶️ John copy is not Control C on the Mac, it’s Command C. And the Command key is not the same

⏹️ ▶️ John as the Control key. I know we all know that, but it seems like every time

⏹️ ▶️ John I hear anyone speak who’s not like in my specific tiny tech nerd circle, it’s like, oh

⏹️ ▶️ John yeah, Control C to copy that. It’s like, nope, that’s not gonna work on your Mac. But they just, they say Control C, but then they

⏹️ ▶️ John hit Command C. I also get upset when people talk about the Alt key. Your Mac does not have an Alt key. Mine

⏹️ ▶️ John does. I know, yours does. But even the Mac keyboard set, like I think mine,

⏹️ ▶️ John does it say Alt? Let me see. No, mine doesn’t, but I think at a various point, even Apple shipped keyboards

⏹️ ▶️ John that said Alt in like little letters underneath the option or whatever.

⏹️ ▶️ Marco Anyway, it’s a different key. Mine has a Pertson key and a Skrlok.

⏹️ ▶️ John Print screen, Skrlok, yeah, you need those. Those are super important

⏹️ ▶️ Marco keys. It also has a Windows key on one side, on the other side, a menu key.

⏹️ ▶️ John I can’t believe, like that’s such a case of like Windows Envy, where they’re like, you know, the

⏹️ ▶️ John control and alt and all that other stuff, but it’s like, but Apple’s got, they made, Apple made up a button. They made

⏹️ ▶️ John up the command key with the weird Swedish campground, point of interest, attention,

⏹️ ▶️ John whatever symbol on it. Can we have a key too? And being the imaginative people they are, they

⏹️ ▶️ John said, I know, we’ll call it the Windows key. And people will accidentally hit it and make the start button show up for

⏹️ ▶️ John the next decade. And there it is, and now it’s on your keyboard and has a Windows

⏹️ ▶️ John, Marco symbol on

⏹️ ▶️ Marco it. Anyway, the funny thing is, during the last couple of weeks when we were talking about the Windows logo,

⏹️ ▶️ Marco I never once thought to look down at my keyboard. Sure enough, there it is. It’s

⏹️ ▶️ Marco the slanted Windows logo. It’s on the Windows key, right? Yeah,

⏹️ ▶️ Marco I mean, for me it’s option, but yeah. But it’s option to my muscles, but to my

⏹️ ▶️ Marco eyes, it’s Windows.

⏹️ ▶️ Marco, John Yeah,

⏹️ ▶️ John anyway, that’s one of those things Like, you can’t go back in time and

⏹️ ▶️ John change that, but I’m just so glad that the Mac is the platform that was poised to have

⏹️ ▶️ John a beautiful synergy of the Mac that we know and love and Unix, because control is

⏹️ ▶️ John there for Unix to mostly have, because in the Unix world, control is the dominant modifier, and in the Mac

⏹️ ▶️ John world, it’s command. Anyway, getting back to the question at hand here, the general pattern is

⏹️ ▶️ John the Command key, Command plus some other key on the keyboard, is for

⏹️ ▶️ John the most frequently used, most important prime commands. Cut, copy,

⏹️ ▶️ John paste, quit, select all, and anything in your application.

⏹️ ▶️ John So if your application is the Finder and you think duplicate is an important function that people are gonna do a lot, that gets command

⏹️ ▶️ John D. The option key, in general, is used to modify

⏹️ ▶️ John the behavior of some other thing that your thing can already do.

⏹️ ▶️ John It’s also sometimes true of shift, but option in general, like culturally, and I think probably in the Hague

⏹️ ▶️ John way back in the day, it was like, you’re gonna do a thing, but you’re gonna do a thing in a slightly different way.

⏹️ ▶️ John That can be like clicking or running a command that already exists and adding

⏹️ ▶️ John the option key to the modifier. There are a bunch of conventions surrounding these for

⏹️ ▶️ John application-specific things that are just cultural and weren’t really written anywhere. But if you use,

⏹️ ▶️ John for example, any kind of graphics app and you command drag that moves, command option

⏹️ ▶️ John drag copies and moves a copy of it. Shift constrains proportions, option

⏹️ ▶️ John resizes from the center instead of the edges. Like these are all just cultural things that have been sort of

⏹️ ▶️ John cargo culted across many applications. This is just the realm of graphical applications, but the modifiers come

⏹️ ▶️ John to have significance, right? There is an understanding, like holding

⏹️ ▶️ John down shift and doing a resize, you expect it to be constrained because like shift means constrain

⏹️ ▶️ John when resizing things, constrain to a square or whatever. Holding down shift option means constrain and also resize from the

⏹️ ▶️ John center instead of the edge. And if that, something deep, there’s nothing about shift that says that or about

⏹️ ▶️ John option that says that in that context, but it’s cultural. But the generic context is

⏹️ ▶️ John command is prominent, command option is modifier, command shift

⏹️ ▶️ John is second level primary operations. So if you have a thing that

⏹️ ▶️ John you seem like as a common operation, but the key you wanted is taken for it. Don’t do command option that letter

⏹️ ▶️ John do command shift that letter. Difference in command shift command option can be debated,

⏹️ ▶️ John but I feel like culturally there’s a sense for if you gave me a bunch of commands in an

⏹️ ▶️ John app and told me what kind of app it was, I could tell you, oh, that one should have command shift a letter and this one should have command option.

⏹️ ▶️ John You also have the alternative. And this happens sometimes too, where you’re out of letters and the good letter you want

⏹️ ▶️ John is already taken. Like, you have some operation that begins with a P, but command P is print. It’s

⏹️ ▶️ John the wrong choice to make command P in your program not print, especially if your program can print. Don’t take command

⏹️ ▶️ John P away from print. But you’re like, but then what do I use? It’s a common operation. To give an

⏹️ ▶️ John example, if my memory serves, it might not. Let me cheat by looking in the finder right now. Although it might not even be there

⏹️ ▶️ John anymore. Put away in the finder was a command that was used a lot back in the day,

⏹️ ▶️ John but it can’t be command P because command P is print and at various times that probably

⏹️ ▶️ John including today the finder could print so what do you use for put away do you make

⏹️ ▶️ John it command option P no that’s like page setup or some other thing to make it command shift P but it seems

⏹️ ▶️ John like it’s more of an important operation that was done frequently back in the day of like putting something back where

⏹️ ▶️ John it came from or whatever so I think someone picked command Y I guess for the end of Put

⏹️ ▶️ John away, not a great choice, but sometimes having

⏹️ ▶️ John a single non, you know, non three finger corded operation is more important than picking the right

⏹️ ▶️ John letter. So you end up with something like command Y for put away. Again,

⏹️ ▶️ John I don’t know if my memory is failing me. It might’ve actually been a different key or command M for make alias

⏹️ ▶️ John because command a is select all. So you can’t use command a, but should you use command option a

⏹️ ▶️ John it’s not related to select all, you’re not selecting all but in a modified way. Could you use command shift

⏹️ ▶️ John a? It still seems kind of like it might have something to do with selecting all because command a is so

⏹️ ▶️ John important. So how about command M for make alias, nobody’s taking it and you get to take the single letter,

⏹️ ▶️ John right? So there is, there are rules that you should follow

⏹️ ▶️ John in a hierarchy that you should go through. But really, a lot of it is also just feel

⏹️ ▶️ John and experience. And the best way to find out aside from just sort of implementing the rules of like use single letters when you

⏹️ ▶️ John can use command option for modifications, use command shift if there’s no command options. And notice I didn’t even mention

⏹️ ▶️ John the control key anywhere in any of this discussion. It’s there, it’s available, you can use it

⏹️ ▶️ John in your Mac apps, but that’s the bottom of the barrel. That’s for like, all the good commands are taken.

⏹️ ▶️ John Also, all the command option and command shifts are taken or don’t make sense. There’s some really weird command

⏹️ ▶️ John that you want to do. Fine, throw in control. That’s why a lot of the weird utilities that we all use,

⏹️ ▶️ John uh, use the control key for modifiers like the, uh, like paste spot, multiple

⏹️ ▶️ John clipboard thing. You can’t use any of the cut and copy and paste commands, you know, XC and V

⏹️ ▶️ John with, with, and without option with them without shift are very likely to be taken. But command

⏹️ ▶️ John control V probably any reasonable Mac app does not take that. So therefore it is

⏹️ ▶️ John available to be the bring up the paste UI thing for paste spot. Similarly, command

⏹️ ▶️ John space is stolen by spotlight, but it was stolen by quick silver first, but you can give it back to quick silver and give spotlight the

⏹️ ▶️ John cruddy one like my spotlight is like command option space or command control space or whatever.

⏹️ ▶️ John Anyway, once you start mixing control and you’re really the bottom of the barrel, do not put that in your app. If you can add all help, but leave control

⏹️ ▶️ John for Unix and for utilities that really need a unique command that they hope an app won’t take.

⏹️ ▶️ John Somebody tell logic does logic use a lot of control. I mean, if you have a complicated

⏹️ ▶️ Marco application, not only does logic use a lot of control modifiers for their keys and

⏹️ ▶️ Marco only control like stroke silence is ctrl X for some reason they also use only

⏹️ ▶️ Marco shift like shift F for select all forward my favorite thing about logic is that

⏹️ ▶️ Marco they have many commands that are only like single letter keystrokes like a

⏹️ ▶️ Marco that’s a command the best thing is that the text fields in logic sometimes deselect

⏹️ ▶️ Marco themselves while you’re typing for no reason. And so you are typing a word into your chapter title.

⏹️ ▶️ Marco It loses focus for no apparent reason sometimes. And then you finish your word, which

⏹️ ▶️ Marco has maybe four or five regular letters in it. And the entire interface to the app

⏹️ ▶️ Marco has changed and something’s on the metronomes ticking and your automation is showing and everything and you’re like, what

⏹️ ▶️ Marco the hell just happened? And how do I get it back? And oftentimes the answer is, who knows? Quit, don’t save

⏹️ ▶️ Marco changes and reopen the file.

⏹️ ▶️ John You’re like it is not autosave Yeah, that is another cultural thing. Lots of pro applications do that. Photoshop

⏹️ ▶️ John is an example. B for brush tool,

⏹️ ▶️ John, Marco you know. M for move. M for bucket. Or V for

⏹️ ▶️ John move. Right, the left and right bracket for change brush size. Like, in a pro applications

⏹️ ▶️ John that have tons of feature that are used all day long, single unmodified letters become

⏹️ ▶️ John a useful feature that people like, because it’s just such a pain in the butt to use. But they’re dangerous, as Marko

⏹️ ▶️ John just pointed out. Like, if single letters unmodified can do something and a cat walks across your keyboard, You

⏹️ ▶️ John better hope your app doesn’t have auto save, or it has a very long

⏹️ ▶️ John, Casey undo history,

⏹️ ▶️ John because who knows what just happened. It’s true of some Unix utilities. One of the things that

⏹️ ▶️ John we’ve all always loved about NetNewswire and continue to love is that it uses keystrokes that are very much

⏹️ ▶️ John like, I loved it because they’re very much like the TIN internet newsreader, for like a

⏹️ ▶️ John terminal-based internet newsreader for Usenet. The keyboard, when I first used NetNewswire, I’m like, this is just like

⏹️ ▶️ John a GUI version of TIN. Single unmodified letters to do stuff, K to mark as read, space bar to go down

⏹️ ▶️ John to the next page and then skip to the next unread article if you’re at the end of the thing. Right, left and

⏹️ ▶️ John right arrow keys to navigate. That can be a very powerful

⏹️ ▶️ John practice and it gets you out of the business of trying to figure out a million different modified

⏹️ ▶️ John keyboard shortcuts for everything you can do. A good Mac app like NetNewsWire will still support

⏹️ ▶️ John all of the command shortcuts that you would imagine. There’s probably a command something to Marcus Red and a command something to go to, but

⏹️ ▶️ John having those single letter shortcuts is also very powerful. And by the way, for people who don’t know, because

⏹️ ▶️ John Mac is the Mac OS, Mac OS 10, whatever the hell it’s called, Mac OS is built on Next Step, which is built

⏹️ ▶️ John by a bunch of Unix nerds. The standard text fields in the Mac will respond to essentially

⏹️ ▶️ John Emacs key binding. So you can do Control A to go beginning of the line, and Control E to go to end, and very

⏹️ ▶️ John often Control K to kill, and Control Y to yank. And that stuff actually works.

⏹️ ▶️ John Like the Control key is out there available for Unix-y commands. And in most text views

⏹️ ▶️ John on the Mac, they will work. if you know those keyboard commands. I don’t recommend them. Like, you can use up and

⏹️ ▶️ John down arrow to do the same thing. And you know, command shift to select, command

⏹️ ▶️ John option to go a word at a time. Like, there’s a million different shortcuts, again, with the cultural logic, the understanding

⏹️ ▶️ John that shift arrow should select as you go, and shift option arrow should go

⏹️ ▶️ John a word at a time, and command should go, you know, move the cursor a word at a time, and all sorts of things. Like,

⏹️ ▶️ John if you start to learn those, it will be worthwhile because they are repeated throughout

⏹️ ▶️ John the entire OS and throughout most popular applications. And for the pro applications,

⏹️ ▶️ John they also have, I mean, I’m sure there’s some sort of cultural standard in audio

⏹️ ▶️ John editing applications, I don’t know what it is, but for example, a lot of the graphic stuff I described came

⏹️ ▶️ John from like Mac Paint and Super Paint and Mac Draw and Illustrator and eventually came to Photoshop and

⏹️ ▶️ John from there spread to the whole world. And so there is, that’s also worth learning because even though it’s

⏹️ ▶️ John essentially arbitrary, If you learn it once, you will have a leg up when using any other app

⏹️ ▶️ John in that category.

⏹️ ▶️ Casey I think my favorite keyboard shortcut of all time, which I used to use a lot when I was working with other people,

⏹️ ▶️ Casey is in Xcode, if you do Shift-Control,

⏹️ ▶️ Casey Option-Command-C, so that is four modifiers and the C

⏹️ ▶️ Casey character, you get copy qualified symbol name. So if I were to do that on a view controller’s

⏹️ ▶️ Casey view to the peer, what I get is, viewController.viewDidAppear()

⏹️ ▶️ Casey So that’s basically saying, this is the real

⏹️ ▶️ Casey honest goodness official name for this particular function. And it is very useful if you’re trying to tell

⏹️ ▶️ Casey somebody else like you need to look at here, you can do that. But that requires again, Shift,

⏹️ ▶️ Casey Control, Option, Command, C. Literally all of the fingers on a regular human’s hand

⏹️ ▶️ Casey in order to do this one keyboard shortcut.

⏹️ ▶️ John But it’s saving you time. You should look for the web for, I think it’s called Save for Web Claw.

⏹️ ▶️ John, Casey Like, there’s a command

⏹️ ▶️ John that was added to Photoshop when the web came out, which is save this image for the web, which would save a heavily

⏹️ ▶️ John compressed version of it with selectable color palettes. Like, a different alternate way to save a different version of your

⏹️ ▶️ John Photoshop document specifically made for the web. And because all the good shortcuts

⏹️ ▶️ John were taken in Photoshop, it’s like Command-Option-Shift-S or something. But you

⏹️ ▶️ John do it so often as a web dev that it becomes sort of second nature. Again, I describe what

⏹️ ▶️ John I think is the keystroke. I don’t actually know, like most of the Emacs key bindings, I don’t know what they are,

⏹️ ▶️ John but my hands know. So I don’t think about it, I just go Save for Web and it happens and my hands did

⏹️ ▶️ John something to the keyboard when that happened. Just like when I split the buffer and moved from one to the other, I don’t actually know the keystrokes

⏹️ ▶️ John to do that in Emacs, but my fingers know. Anyway, there’s a meme of taking a picture of how

⏹️ ▶️ John you can tort your fingers to do this keyboard shortcut. And there’s lots of different variations. If I knew

⏹️ ▶️ John the exact name, we could find the meme, but it’s somewhere on the web.

⏹️ ▶️ Casey save for web claws dot tumblr

⏹️ ▶️ Casey, John dot com.

⏹️ ▶️ Casey Of course, there’s a tumblr. And it is indeed a bunch of people doing

⏹️ ▶️ Casey all sorts of different displays of how they do their save for web claw.

⏹️ ▶️ Casey This is something else I’ve not heard of this because I’m not a Photoshop user. That is

⏹️ ▶️ John Wow. I don’t play claw and destiny by the way.

⏹️ ▶️ Casey It’s good to know. Thank you for

⏹️ ▶️ John that. It’s

⏹️ ▶️ Casey all right.

⏹️ ▶️ John Goodness. Some of these safer web clause you’re like seriously that’s how you choose to do it but everyone’s got their own way

⏹️ ▶️ Casey All right, let’s finish up with something that I hope will be quick. We’ll see what happens.

#askatp: Wi-Fi network names

Chapter #askatp: Wi-Fi network names image.

⏹️ ▶️ Casey happens. Jesse in South Dakota writes, I’m curious how you all name your Wi-Fi networks. Is it something plain

⏹️ ▶️ Casey like Liss Household or something punny like Tell My Wi-Fi I Love Her or a

⏹️ ▶️ Casey pop culture reference like Skynet? Do you or do you not broadcast your SSID? For me,

⏹️ ▶️ Casey I have been broadcasting my SSID since a couple of years after Wi-Fi was

⏹️ ▶️ Casey new. So if you’re not an old man like me, when Wi-Fi

⏹️ ▶️ Casey was brand new, the initially accepted thing to do, at least when you were

⏹️ ▶️ Casey of the age of Marco and me at the time, was you don’t broadcast your SSID

⏹️ ▶️ Casey and you would have to tell people your SSID, but you have no other security whatsoever. So it is, by every definition,

⏹️ ▶️ Casey security through obscurity. And because you didn’t broadcast your SSID, at the

⏹️ ▶️ Casey time, what that meant was people would need to know that your SSID was like LIS or whatever

⏹️ ▶️ Casey in order to get on your network. But once they knew it, they would have the keys to the kingdom. And

⏹️ ▶️ Casey to answer the other question, the initial question. My network name is indeed Liss. I kind of wish there was something more

⏹️ ▶️ Casey pithy or punny or something, but I’m old and boring and so it’s just called Liss.

⏹️ ▶️ Casey Marco, I don’t recall your network name offhand, but I remember it being Funny, if you’re willing to share.

⏹️ ▶️ Casey And do you or do you not broadcast your SSID?

⏹️ ▶️ Marco I do broadcast it. And this is like a weird joke

⏹️ ▶️ Marco that I picked up forever ago, back when I was a something awful forums

⏹️ ▶️ Marco goon in my teenage and early 20s years. And

⏹️ ▶️ Marco so kind of playing off of a joke that I picked up all the way back then, my SSID is

⏹️ ▶️ Marco trapped in router factory.

⏹️ ▶️ Casey That’s right. I’d forgotten that. I should also do some real time follow up. UnderscoreMyNameIsTee writes, all of

⏹️ ▶️ Casey Casey’s life is list puns and he just calls this Wi-Fi.

⏹️ ▶️ Casey, John I was just

⏹️ ▶️ Casey about to

⏹️ ▶️ John say the exact

⏹️ ▶️ John, Casey same thing. How

⏹️ ▶️ John is it that you of all people do not have a pun base?

⏹️ ▶️ Casey It should be wireless. That’s what it should

⏹️ ▶️ Casey, John be. It’s exactly.

⏹️ ▶️ John I can’t even believe it. I don’t understand how you allowed this to happen. And then Marco’s got the joke

⏹️ ▶️ Casey one. I know. I’m sorry, everybody. I failed you, and I failed

⏹️ ▶️ John me. You have. You need to change that right away.

⏹️ ▶️ Casey Goodness. John, what’s your situation?

⏹️ ▶️ John Mine is boring. It’s not a joke one. I do broadcast it. Yeah.

⏹️ ▶️ John I like seeing other people’s, but I trapped in the router factory is a little long. I don’t like it when someone

⏹️ ▶️ John has a funny SSID and it makes the menu really long. I don’t like that. So I think try to keep it, uh,

⏹️ ▶️ John keep it short and snappy. But I am not opposed to a joke Wi-Fi.

⏹️ ▶️ John But now mine just has a boring obvious

⏹️ ▶️ Marco name. Please say it’s called Wi-Fi.

⏹️ ▶️ John It is not called. That’s a stupid name. The real question is, does Marco know what Skynet is?

⏹️ ▶️ Marco Uh, no, I don’t. Really? I know it’s from a movie, but it’s from a movie I haven’t seen.

⏹️ ▶️ John culture reference, but it gets past

⏹️ ▶️ John, Casey Mark.

⏹️ ▶️ Casey Wow, even I know that one. That’s why I asked Marco. I had faith in you, Casey. Thank you, John. I

⏹️ ▶️ Casey did see a few weeks ago, I forget where I was, now I don’t recall, but I saw a few weeks ago,

⏹️ ▶️ Casey Silence of the Lands, which I had tweeted about, which I

⏹️ ▶️ Casey, John thought was quite

⏹️ ▶️ Casey great. For the first time? That’s the first time I’d seen it, yeah. I

⏹️ ▶️ Casey, John thought it

⏹️ ▶️ John was great. Oh my goodness. Well, my faith in you has gone down a notch. I’m

⏹️ ▶️ Casey adjusting. Oh man, I should have kept

⏹️ ▶️ Marco my mouth shut. Thanks to our sponsors this week, Squarespace, Collide, and Jamf Now.

⏹️ ▶️ Marco I will talk to you next time.

Ending theme

⏹️ ▶️ Marco next week.

⏹️ ▶️ John If you’re into Twitter,

⏹️ ▶️ Marco you can follow them at C-A-S-E-Y-L-I-S-S

⏹️ ▶️ Marco So that’s Casey Liss, M-A-R-C-O-A-R-M

⏹️ ▶️ Marco Auntie Marco Armin,

⏹️ ▶️ John S-I-R-A-C-U-S-A-C-R-A-Q-U-S-A It’s

⏹️ ▶️ John accidental,

⏹️ ▶️ Casey they didn’t

⏹️ ▶️ John mean to Accidental, check podcast so long


Chapter Post-show image.

⏹️ ▶️ Marco Man, there really are a lot of really boring, terrible Wi-Fi networks out there. Like

⏹️ ▶️ Marco most of what I could pick up from here is just like, you know, people’s default routers. It’s like, you know,

⏹️ ▶️ Marco Fios and then random characters. I have three of those in range.

⏹️ ▶️ John Xfinity is the scourge of all

⏹️ ▶️ John, Marco existence. The Xfinity ones

⏹️ ▶️ John are always called Xfinity Wi-Fi. It’s the

⏹️ ▶️ Marco worst. Yep, Xfinity Wi-Fi. Yeah, there’s also DirectCD HP OfficeJet 5740.

⏹️ ▶️ Marco So somebody’s printer is advertising something.

⏹️ ▶️ Marco, John Yeah.

⏹️ ▶️ John Xfinity

⏹️ ▶️ Marco is just a wasteland. There’s a weird thing I really don’t like when

⏹️ ▶️ Marco iOS has those carrier-specific Wi-Fi networks that it’ll just auto-join

⏹️ ▶️ Marco without even asking you, and it’s surprisingly hard to get iOS to stop auto-joining those

⏹️ ▶️ Marco and remember your preference.

⏹️ ▶️ John I just have iOS not auto-joining networks ever and also not asking me ever.

⏹️ ▶️ Marco No, no, even if you have that, like I’m on AT&T for my phone service,

⏹️ ▶️ Marco even if, I always have auto-join off, except for the networks that I add. So it never

⏹️ ▶️ Marco prompts me to go join a Wi-Fi network. But there’s some way for AT&T

⏹️ ▶️ Marco to communicate to the phone to always rejoin these networks automatically.

⏹️ ▶️ Marco I think it’s a security hole, honestly. I wonder if I just create a network called AT&T

⏹️ ▶️ Marco Wi-Fi, will every AT&T phone automatically join it? Is it just matching the string?

⏹️ ▶️ Marco or are these somehow authorized to only certain routers with Mac addresses or something? I don’t even

⏹️ ▶️ Marco know. I guess

⏹️ ▶️ Marco maybe it’s part of the SIM card or the SIM standard, the carrier settings, whatever it is. Somehow,

⏹️ ▶️ Marco iOS lets carriers make your phone auto-join networks without asking you. And that,

⏹️ ▶️ Marco I think, is really weird. And it always gives me the creeps when I see it and I always get mad. And then I try

⏹️ ▶️ Marco to leave the network and sometimes it’ll remember that I left it and won’t rejoin it. Sometimes you

⏹️ ▶️ Marco have to join it and then say forget this network. And it’s really messed up. I think that’s gotta be

⏹️ ▶️ Marco a security hole waiting to happen.

⏹️ ▶️ John How many Wi-Fi networks are visible from where you’re sitting right

⏹️ ▶️ Marco now? Seven, but two of them are mine.

⏹️ ▶️ Casey Casey? 30, 31, 32, 33. Casey’s the winner. I’m

⏹️ ▶️ John at 19.

⏹️ ▶️ Marco Yeah, I’m lucky that most of my neighbors are not that technical. How

⏹️ ▶️ John many are insecure? How many don’t have the little lock symbol?

⏹️ ▶️ Casey None. only Xfinity Wi-Fi.

⏹️ ▶️ John Xfinity Wi-Fi,

⏹️ ▶️ John, Casey that’s my only unlocked one.

⏹️ ▶️ John I’ve got an all caps Xfinity that is secure, but Xfinity Wi-Fi is insecure.

⏹️ ▶️ Casey Wow, that Xfinity, it goes all the way from Boston to Richmond.

⏹️ ▶️ Casey, John That

⏹️ ▶️ Casey is some

⏹️ ▶️ John powerful Wi-Fi. My experience is that any insecure network that says Xfinity Wi-Fi

⏹️ ▶️ John is not a real Wi-Fi that anyone can or should join. Like I’ve literally never seen an Xfinity Wi-Fi

⏹️ ▶️ John that’s insecure that can actually be joined by a computer. I don’t understand what it is. I’m assuming like

⏹️ ▶️ John Comcast sends out bunch of these Wi-Fi routers and they end up being misconfigured and they advertise a network that literally can’t

⏹️ ▶️ John be joined. And it always shows as insecure. Not that I’m ever intentionally joining them, but sometimes you’re desperate

⏹️ ▶️ John and you’re like, I just got to get some Wi-Fi. And if I see Xfinity Wi-Fi and it’s insecure, sometimes I’ll try it

⏹️ ▶️ John and just out of idle curiosity, but it’ll never actually connect. It’s not a real

⏹️ ▶️ Casey network. Well, no, I don’t think that’s true. So I am not confident about the following,

⏹️ ▶️ Casey but I think the way it’s supposed to work is that if you are in an Xfinity subscriber

⏹️ ▶️ Casey and only if you’re an Xfinity subscriber, then you can basically ride on any Xfinity

⏹️ ▶️ Casey subscribers for Wi-Fi, unsecured Wi-Fi. I’m not sure what the off

⏹️ ▶️ Casey dance story is

⏹️ ▶️ Casey, John around that.

⏹️ ▶️ John But yeah, if you’re not like it’s it’s just a fake network that’s just there to just write distract your computer

⏹️ ▶️ John slash phone.

⏹️ ▶️ Marco Did you ever read about the thing about the free public Wi-Fi SSID that kind of like spreads

⏹️ ▶️ Marco itself

⏹️ ▶️ Marco, John somehow? You see it at WWDC even.

⏹️ ▶️ John, Marco WWDC

⏹️ ▶️ John is a great place to look at SSIDs because they’re all over.

⏹️ ▶️ John, Marco Everybody’s,

⏹️ ▶️ John what is that Verizon thing starts with an M? Wi-Fi

⏹️ ▶️ Casey maybe?

⏹️ ▶️ John Yes, I believe that’s right. There’s a million of those. Everybody’s phones have their little hotspots

⏹️ ▶️ John that are all like named default things. You don’t see a lot of Xfinity at WWDC though. So I think

⏹️ ▶️ John everybody who’s in my Wi-Fi vicinity is a PC user because I am the only person with

⏹️ ▶️ John spaces in my SSID.

⏹️ ▶️ Marco Oh, is that a Mac versus PC

⏹️ ▶️ John thing? No, it’s just a Mac people understand that words are separated with spaces and PC people

⏹️ ▶️ John, Marco are

⏹️ ▶️ John, Casey like, got

⏹️ ▶️ John it,

⏹️ ▶️ John, Casey can’t have

⏹️ ▶️ John spaces in words, nothing will work. Add hyphens or underscores or squish all the words together or make it all caps.

⏹️ ▶️ John And it’s like, no, you can name your things with words, but spaces between them.

⏹️ ▶️ John Like a civilized person. Oh my goodness. That’s one of the first things I did with front and center, by

⏹️ ▶️ John the way, when Lee started the project, he called it like front hyphen and hyphen center was the project

⏹️ ▶️ John, Casey name.

⏹️ ▶️ John no it’s called front space and space center with capital F and

⏹️ ▶️ John capital C in lowercase a like

⏹️ ▶️ John, Marco a

⏹️ ▶️ Marco civilized way that’s actually like all the files and Xcode and everything they have spaces in the paths

⏹️ ▶️ John the project is called that the files are called like you know FNC app delegate that

⏹️ ▶️ John Swift or whatever right but but like

⏹️ ▶️ Marco but for the project there it isn’t like you know front space and space center dot info dot P list or whatever like

⏹️ ▶️ Marco that’s because that you’re gonna you’re just asking for

⏹️ ▶️ John problems it is like where it uses that where it uses uses the project name, it does it with spaces.

⏹️ ▶️ John And that’s where you can find out, lots of people post, like, here’s the build script I used to increment my

⏹️ ▶️ John build number or whatever, and they

⏹️ ▶️ John, Casey don’t properly quote

⏹️ ▶️ John, Marco the shell

⏹️ ▶️ John script. But everything, as far as I can tell, everything in Apple’s system, from top to bottom,

⏹️ ▶️ John doesn’t care if you have spaces. Everything is properly quoted, no problems whatsoever, and

⏹️ ▶️ John it is used in lots of places, if you look at the command lines it’s running or how it builds stuff.

⏹️ ▶️ John No problem with spaces.

⏹️ ▶️ Marco That’s asking for trouble.

⏹️ ▶️ Marco, John I wouldn’t do that. I

⏹️ ▶️ John agree. It’s not, though. That’s what I’m saying. I thought it might be an issue, but not at all. Modern technology.

⏹️ ▶️ John Like, this is a solved problem. It’s only when people are sloppy and just like make

⏹️ ▶️ John this assumption that like, oh, there’ll never be spaces in file names. And the people who make those assumptions are bad people who

⏹️ ▶️ John aren’t Mac

⏹️ ▶️ Marco users. No, no, they are. And they write build scripts, and they write Xcode at Apple.

⏹️ ▶️ Marco And you’re right. This isn’t a technology problem. It’s a people problem. And people make mistakes all

⏹️ ▶️ Marco the time. And by having spaces in your programming paths, like you’re just kind of

⏹️ ▶️ Marco inviting a whole bunch of mistakes to hit you.

⏹️ ▶️ John It’s a cultural thing. It’s like that they believe in their heart of hearts that people shouldn’t be allowed to use spaces.

⏹️ ▶️ John And therefore they code as if that will never be a thing that happens. So that’s why they’re bad. They’re bad if you like, do you remember the

⏹️ ▶️ John thing where the iTunes installer would delete your hard drive?

⏹️ ▶️ John, Marco You remember that? That was because

⏹️ ▶️ John someone didn’t think hard drive names have spaces in it. It’s like the default hard drive name has spaces in

⏹️ ▶️ John it. Macintosh Space HD. But that was clearly like a Unix person who’s

⏹️ ▶️ John like, oh, you don’t put spaces in file names. I don’t have to worry about that case and it deletes people’s drives.

⏹️ ▶️ John It wasn’t there a Chrome update that did that too? Yeah, just recently.

⏹️ ▶️ Marco Was it? It wasn’t the kind of spaces that wasn’t? No, I think it was something like that. Anyway, I don’t know. I feel like

⏹️ ▶️ Marco you’re being optimistic here because like, because the problem is, you know, it’s one thing when you’re just dealing with arbitrary file names in

⏹️ ▶️ Marco an application. Fine. But programming paths in particular rarely have spaces

⏹️ ▶️ Marco in them. And so if you’re using some kind of programming, you know, environment or script or tools or whatever else,

⏹️ ▶️ Marco I think it’s more likely than other contexts to have not been tested properly with

⏹️ ▶️ Marco things with spaces in them because it’s so rare in programming directories.

⏹️ ▶️ John It’s true. And it’s all the kind of person who’s a programmer is also more likely to be the kind of person who is in the mindset

⏹️ ▶️ John that you just shouldn’t use spaces anyway, so you should be punished if you use them or not to worry about it. But like I

⏹️ ▶️ John said, I thought that was a possibility when I made the new project for Swift for front and center.

⏹️ ▶️ John But so far, nothing in Xcode

⏹️ ▶️ John, Casey has

⏹️ ▶️ John blinked at it. No problems whatsoever. And I see in the build logs and all the other stuff and all the different

⏹️ ▶️ John files it makes and the symbols and all that, it’s fine. It’s absolutely fine. So if you’re afraid of doing an Xcode,

⏹️ ▶️ John don’t be afraid. And I would imagine Xcode at this point is so well exercised and there are so many Apple developers

⏹️ ▶️ John that surely there are enough of us putting spaces in it that if there’s something in the guts of Xcode that can’t handle

⏹️ ▶️ John spaces, it would be found really quickly. So my experience has been Xcode project

⏹️ ▶️ John names with spaces in them. Thumbs up.