104: Minutiæ
12 Feb 2015Please email us about Photos.app, UXKit, and React.
Episode Description:
- Follow-up
- Email to the show's feedback form
- What's a toaster oven?
- Photos.app does exist!
- UXKit
- New UI Frameworks & Paradigms
- Post show:
- Marco GOes on another adventure
- Titles
Sponsored by:
Transcript start
⏹️ ▶️ Casey There’s brief moments of time when I listen to the two of you go back and forth. And for a minute, I’m
⏹️ ▶️ Casey like, man, I’m not even here anymore. And I feel ever so
⏹️ ▶️ Casey slightly sad, but then I continue to listen to you two going back and forth and I just don’t even care anymore because I’m entertained
⏹️ ▶️ Casey as hell. We had recently received an email as recently as
⏹️ ▶️ Casey about two hours ago about how we say to each other or say actually
⏹️ ▶️ Casey to you, the listener, please email anyone other than us or please don’t send
⏹️ ▶️ Casey us email, et cetera. Would you like to talk a little more about this email?
⏹️ ▶️ John All right. So the, the first sentence is I’m a little surprised about your whole email topic. Now, this is already
⏹️ ▶️ John kind of like spreading the topic wider because this started with Marco
⏹️ ▶️ John getting specific feedback and bug reports about overcast. Right. But then they sort of expanded
⏹️ ▶️ John into like the entire topic of us getting email. And so this feedback is not about
⏹️ ▶️ John Marco and his bug reports. really. It’s really about when we say on the show, please don’t
⏹️ ▶️ John email us about whatever. Right. So I already think this is kind of off topic and it’s just like it’s related
⏹️ ▶️ John to the discussion, but whatever we want this not interested in really discussing how Marco handle
⏹️ ▶️ John his feedback. He’s more interested in discussing the joke that we do when we say, please don’t send us email.
⏹️ ▶️ John And he says it makes him feel like that. We don’t appreciate the listeners that, you know, let me find a good sentence here.
⏹️ ▶️ John He says he loves us, loves the show. It doesn’t make me feel entitled to anything. I know that obviously, and I
⏹️ ▶️ John know that it’s impossible to get back to everybody. But what is it impossible is to appreciate your position to appreciate the fact that
⏹️ ▶️ John people devote their time to actually tell you what they think to appreciate that people are the are
⏹️ ▶️ John the ones that are attracting sponsors, etc. to appreciate that a podcast by nitpickers is going to attract nitpickers to appreciate
⏹️ ▶️ John that so many people really care. And I know you do appreciate your listeners, but the whole email joke, the whole annoyance is neither funny
⏹️ ▶️ John nor respectful. It’s strange off putting very arrogant and makes me kind of angry. It makes my engagement feel pathetic
⏹️ ▶️ John and needy. It’s really not that hard just to say a few nice words, you know. To this, I would
⏹️ ▶️ John say that we don’t have a ignoring the fact that most of the time we’re just joking, right? Because
⏹️ ▶️ John jokes can be hurtful, too, right? We don’t have a blanket ban on
⏹️ ▶️ John it’s like a prohibition. Please. In fact, we encourage tacitly encourage email by
⏹️ ▶️ John responding to email on the show. And a lot of the follow up is about things that people send us. see the corrections
⏹️ ▶️ John for things or expansions on topics. We take real time feedback and real time follow up from the chat room
⏹️ ▶️ John from people saying the same thing. Right. So it’s clear that we’re not like nobody ever email us anything, you know,
⏹️ ▶️ John for whatever reason. We don’t say that.
⏹️ ▶️ Marco I mean, there’s a feedback form on our site that I made when we made the site. Like,
⏹️ ▶️ Marco we have this form on the site that says send feedback. If we wanted to not actually receive any feedback,
⏹️ ▶️ Marco we would just take the form down like Marco. And
⏹️ ▶️ John, Marco we’re on his app doesn’t want to apply
⏹️ ▶️ John that he’s providing support. He just writes the feedback. So first of all, I would say the premise that the idea that we just
⏹️ ▶️ John are saying we don’t want any feedback like that’s not that’s not our message at all. We do very frequently, though,
⏹️ ▶️ John say, please don’t email us about whatever topic. And that is specifically focused
⏹️ ▶️ John on whatever it was we were talking about. So if it’s like, you know, I’m
⏹️ ▶️ John I’m I’m going to tell you about this toaster oven. I got please don’t send me email about slot toasters.
⏹️ ▶️ John The reason and then I followed up by saying I know about slot toasters. I know slot toasters exist. I know
⏹️ ▶️ John that they are different than toaster ovens. I am reviewing toaster ovens. Right. And they’re worse. Right.
⏹️ ▶️ John Like, right. And part of that is like the please don’t email thing is a long running
⏹️ ▶️ John gag from any podcast that we’ve listened to and been on in the past. So if you don’t have that context, maybe that doesn’t make much sense. It’s also
⏹️ ▶️ John kind of a joke like, oh, I don’t want to hear from those people who are just going to tell me about the slot toasters. Right. But it’s very specifically
⏹️ ▶️ John focused on this one thing. It is not saying please don’t email me ever about anything. If if you know something cool
⏹️ ▶️ John about a new display port specification, yes, send us the email about it. If you
⏹️ ▶️ John say I’ve been an Apple genius for X number of years and this is my experience of yes, send us email about it. Like, of course, we want
⏹️ ▶️ John that email. Like we read it on the show. We appreciate it. We appreciate our listeners. So I don’t want people listening
⏹️ ▶️ John to think and I don’t think most people do. But this person does apparently that we we don’t want feedback
⏹️ ▶️ John from anybody. It’s 50% of the time a joke and the other 50% of the time very focused kind
⏹️ ▶️ John of exasperation at a particular type of feedback that we expect to get
⏹️ ▶️ John because we said something that we know leaves us open to a particular kind of correction and we’re trying to say you don’t
⏹️ ▶️ John need to send us that correction because we are fully aware that we have either intentionally ignored this thing
⏹️ ▶️ Marco Right it’s it’s a way I use it it’s as a way to preempt getting a
⏹️ ▶️ Marco whole bunch of emails that begin with well you know and and some big argument about
⏹️ ▶️ Marco something that like, I know the thing I just said is contentious, or I know there is something that
⏹️ ▶️ Marco other people are gonna wanna tell me about what I just said, and I’m just like, I don’t wanna engage that entire discussion right
⏹️ ▶️ Marco now. It’s a way for me to basically try to preempt getting a whole bunch
⏹️ ▶️ Marco of duplicate emails telling me something I already know. And that saves everybody time.
⏹️ ▶️ John And that’s not to say it’s not annoying. If you’re annoyed by it, it’s totally your right to be annoyed by it. It can be annoying, I
⏹️ ▶️ John fully admit that, but we are human and we get exasperated sometimes too. We express that on the show.
⏹️ ▶️ Casey Yeah, so this email was from Pel D. I feel like we should attribute,
⏹️ ▶️ Casey I’m assuming him. And what I had replied to him or her, I’m thinking him,
⏹️ ▶️ Casey and what I said was, we say don’t email
⏹️ ▶️ Casey us either because we really don’t care about the minutiae, minutiae, minutiae, all the nuance
⏹️ ▶️ Casey of the topic at hand.
⏹️ ▶️ John You’re gonna get on me about Bezel, but you’re going to go minutiae? OK. Minutiae,
⏹️ ▶️ Casey I was pretty sure it was minutiae, and then I was envisioning all the emails of it saying to me, no, it’s
⏹️ ▶️ Casey not minutiae, it’s minutiae.
⏹️ ▶️ John people not email you about the correct pronunciation of minutiae? So please
⏹️ ▶️ Casey do not email me. See?
⏹️ ▶️ Casey, Marco That’s a perfect use.
⏹️ ▶️ Casey It’s a perfect use of it. Anyway, let me try this again. So we
⏹️ ▶️ Casey say please don’t email us, either because we really care about the minutiae of the topic at hand or because
⏹️ ▶️ Casey we know we won’t be able to respond to everyone. And actually, that reminded me as we were talking
⏹️ ▶️ Casey of another piece of follow-up, which is I saw a handful of people, generally speaking
⏹️ ▶️ Casey from Europe, who seemed confused about the whole toaster oven thing.
⏹️ ▶️ John Yeah, someone asked me, isn’t that just a grill? And then I realized we had a language barrier between English speakers.
⏹️ ▶️ John I think it was someone from the UK Or one of the some other thing that Marco can tell us the correct name of
⏹️ ▶️ Marco can we maybe just put a you somewhere? In it would that make them know what we’re talking about a
⏹️ ▶️ John toaster oven. Yeah, no, it was great It was great because someone said isn’t that just a grill and I replied no
⏹️ ▶️ John Because I didn’t look up like where they were from or something But I was confused by and then another person who obviously knows
⏹️ ▶️ John Speaks the variant of English that that person was speaking tweeted back to them said I think that what you mean by grill
⏹️ ▶️ John isn’t what? They mean by actual language barrier. We don’t know the words for
⏹️ ▶️ John things, but we put links in the show notes, right? Like you can click on them and see what it is. It’s a thing. Toaster ovens are
⏹️ ▶️ John a thing in America anyway.
⏹️ ▶️ Casey And so if you live in one of these barbaric countries that doesn’t really have a toaster,
⏹️ ▶️ Casey doesn’t have toaster ovens, basically it’s like a little tiny oven that can serve either as a toaster
⏹️ ▶️ Casey or an oven, hence toaster oven. And they’re extremely convenient if you’d like to reheat
⏹️ ▶️ Casey something, especially something bready, pizza being the most obvious example,
⏹️ ▶️ Casey French fries, anything like that. If you want to reheat something bready, but you don’t want to
⏹️ ▶️ Casey do so in the microwave because then it’ll end up all gummy, a toaster oven is a great way to do it. Now, yes, you could
⏹️ ▶️ Casey use a traditional oven, but why in the world would you start up what is probably multiple square
⏹️ ▶️ Casey feet worth of space to heat one slice of pizza or two slices of pizza? And so a toaster
⏹️ ▶️ Casey oven is the best of both worlds, because it’s a little tiny oven, big enough for usually a slice of pizza
⏹️ ▶️ Casey or two, or it’s a toaster, big enough for maybe a couple of bagels or something like that.
⏹️ ▶️ Marco Right, and it tends to heat up just about as quickly as doing it in the microwave for me. Like if you’re gonna, I
⏹️ ▶️ Marco mean, it’s, you know, not 30 seconds, but if you’re gonna reheat a slice of pizza, a toaster oven has it done in like
⏹️ ▶️ Marco two or three minutes at most. And so that’s, it’s way faster than using a full-size
⏹️ ▶️ John Nobody should ever put a pizza in a microwave, I just want to say
⏹️ ▶️ Casey that. Oh, completely agreed. But anyway, so if you don’t know what a toaster oven is, well, perhaps it’s
⏹️ ▶️ Casey time to to move to a different country But nevertheless,
⏹️ ▶️ Casey maybe you could import it or something like that. Nationalized healthcare or toaster ovens?
⏹️ ▶️ Casey going toaster ovens
⏹️ ▶️ John I might too. The brand of my toaster oven, Breville, apparently that’s a proprietary
⏹️ ▶️ John eponym See, I did remember that from the past episode.
⏹️ ▶️ Marco It’s pronounced Brazel.
⏹️ ▶️ John proprietary eponym in the UK OK, like Kleenex or whatever. And so someone in the chat room says a Breville
⏹️ ▶️ John refers to something we would call a grill in the UK for sandwiches. So they’ve taken that entire brand and turned it into
⏹️ ▶️ John a signifier for the entire category of things, like a panini grill type
⏹️ ▶️ John of thing or whatever. But anyway, that’s definitely not what I’m talking about. Again, follow the links in the show notes. We’ll show you exactly
⏹️ ▶️ John what we were talking about. Last week’s show notes, not this week’s show
⏹️ ▶️ Casey notes. Yeah, we’re not going to put in this week’s show notes because it was already there. You should have clicked the links,
⏹️ ▶️ Marco kids. Our first sponsor before we’ve done a single topic is Igloo.
⏹️ ▶️ Marco Igloo is an intranet you’ll actually like. It’s kind of funny that this is the first tech that we’re discussing is the sponsor itself.
⏹️ ▶️ Marco With Igloo, you can share news, organize your files, coordinate calendars, and manage projects all
⏹️ ▶️ Marco in one place. This is like taking the best of the web and productivity apps. Things like calendars, Twitter-like
⏹️ ▶️ Marco microblogs, file sharing, task management, wikis, and more. All available privately and securely
⏹️ ▶️ Marco for your company or group intranet. igloo intranets are highly functional, stylish and easy to use
⏹️ ▶️ Marco with a widget based drag and drop interface. Their latest upgrade Viking revolves around documents
⏹️ ▶️ Marco and how you interact with them gather feedback and make changes. They’ve even added the ability to track who has read
⏹️ ▶️ Marco critical information to keep everyone on the same page. It’s kind of like read receipts in your email but less annoying.
⏹️ ▶️ Marco And it helps you track whether whether employees have read and acknowledged policies signed off on legal agreements
⏹️ ▶️ Marco or confirmed completion of training materials all very useful stuff if you’re running a company. Igloo is
⏹️ ▶️ Marco all built on their advanced HTML5 platform. It’s a fully responsive platform and offers all these
⏹️ ▶️ Marco features. Even things like previewing and annotating documents, you have to render an office document
⏹️ ▶️ Marco and have annotations on it. All that is done in HTML5. So it works no matter what device you’re on.
⏹️ ▶️ Marco You have all that functionality, all the annotations, all the admin controls, everything, whether you’re on a computer, iPhone,
⏹️ ▶️ Marco Android phone, or even a Blackberry. When new devices and screen sizes hit the market, Igloo already works on them.
⏹️ ▶️ Marco So if your company has a legacy intranet that looks like it was built in the 90s, you should definitely give Igloo a try.
⏹️ ▶️ Marco Igloo, honestly, I think this is a great part too, that Igloo is even completely free to use for as long
⏹️ ▶️ Marco as you want if you have a group of 10 or fewer people. And then if you get past 10 people, it’s very
⏹️ ▶️ Marco reasonably priced after that. So really, if you have a group of 10 or fewer people, Igloo’s free for you. Just go try it, it’s
⏹️ ▶️ Marco amazing. Anyway, sign up for a free trial igloo software comm slash
⏹️ ▶️ Marco ATP that is igloo software comm slash ATP Thanks a lot to a leap for sponsoring
⏹️ ▶️ Marco our show once again. They’ve been a longtime sponsor and friend of our show
⏹️ ▶️ Casey Yeah, very much. Thank you igloo We should talk about the photos
⏹️ ▶️ Casey app that we all thought may have kind of gone away
⏹️ ▶️ John Hang on real-time follow up on the Breville. It’s not a panini. It’s not a panini press look at the thing I just put
⏹️ ▶️ John in the show notes. It’s the thing like It’s like a clamshell thing
⏹️ ▶️ John that closes and it has two little compartments for bread. Like if you cut a piece of bread
⏹️ ▶️ John on a diagonal and it kind of like heats them from both sides. Different than a panini press, which is, you know, the flat
⏹️ ▶️ John surfaces with the little ridges on them.
⏹️ ▶️ John a common thing. Like that’s what they prefer to. I’ve seen them in the US. I just I don’t think many people have them, but that’s
⏹️ ▶️ John what they call it. That’s what they call a Breville. And if you read the history of the thing,
⏹️ ▶️ Casey that’s that’s really peculiar. I mean, well, I’ve seen them before, but looking at the chat room, it
⏹️ ▶️ Casey seems like in the UK in Australia, everyone has one of these. And I cannot think of any one of my
⏹️ ▶️ Casey friends or family that has one.
⏹️ ▶️ Marco So it’s labeled there as a durable stainless steel jaffle maker. So are those jaffles? Is that
⏹️ ▶️ Marco like, that’s what we call this thing? Yeah, I don’t want to try to pronounce that word. I don’t think I can. Maybe it’s jufflay.
⏹️ ▶️ Marco Jaffle, like waffle?
⏹️ ▶️ Casey So quick aside, I was at work, this was a year ago now. And somebody
⏹️ ▶️ Casey was, one of my coworkers was talking about doing something in JavaScript. And at one point,
⏹️ ▶️ Casey he said something about JSON. And I was like, what? Oh, my God.
⏹️ ▶️ Casey, Marco That’s what the French called.
⏹️ ▶️ Casey, Marco me a minute.
⏹️ ▶️ Casey I think he was saying it, you know, comically or ironically or whatever. But when I heard
⏹️ ▶️ Casey JSON, I was like, wait, what? And sure enough, he meant JSON. I just did it again
⏹️ ▶️ Marco boss used to say H over. What?
⏹️ ▶️ John H over. That’s when you put your H over an item. Yep. And the, uh… The H over style on the links.
⏹️ ▶️ John Well, he was just avoiding trying to pronounce that word because he knew it was such a problem.
⏹️ ▶️ Casey That’s true, because you never know when that’ll go wrong. But for the record, it’s hover.
⏹️ ▶️ John We’ll talk about them in 20 minutes. All right, sorry for the derail. Photos, back to photos.
⏹️ ▶️ Casey Yeah, so let’s talk about photos. We had all, not genuinely, but kind of wondered,
⏹️ ▶️ Casey hey, what happened to photos because somebody had pointed out to us that it disappeared from Apple’s website.
⏹️ ▶️ Casey Well, apparently it’s back. It’s back in a big way because it’s actually in the latest
⏹️ ▶️ Casey Yosemite beta. Now have either of you guys tried this? What are you crazy?
⏹️ ▶️ John I was actually going to try it like not on my computer with my actual photos, but just just to load the program and throw
⏹️ ▶️ John some sample photos at it or whatever. But then I realized and I’m I’m pretty sure this is still the case that you have to
⏹️ ▶️ John upgrade to the 1010 3 beta and I wasn’t willing to do that just just to try the photos
⏹️ ▶️ John app so I’ll just wait
⏹️ ▶️ Marco yeah that’s the reason I’m not using it it’s cuz like I’m not gonna run a beta OS on my main computer so that’s
⏹️ ▶️ John not gonna happen yeah I’ve already put in a lot of time doing stuff like
⏹️ ▶️ John that I deserve a break
⏹️ ▶️ Marco I also I feel like this is a good opportunity that I really should take to go back and clean out some of my
⏹️ ▶️ Marco photo library because like there’s so much there’s so many times I’m sure I’m sure this happens a lot of people
⏹️ ▶️ Marco I’ll go on a trip or something or you know we’ll do like a shoot with the kid or the dog or both or whatever
⏹️ ▶️ Marco and and we’ll just dump all the photos into the photo library and then just never really pick through them so I
⏹️ ▶️ Marco have you know these giant like 30 gig folders full of some shoot or something like that and
⏹️ ▶️ Marco it’s like if I just took an hour to go through this I would probably delete 95% of those pictures
⏹️ ▶️ Marco and just keep like the 5% of the best ones that I actually want to see again. And
⏹️ ▶️ Marco basically, I need to apply that process to like five years of photos. It’s like spring cleaning.
⏹️ ▶️ Marco I keep meaning to do this and maybe this is like, maybe this is my motivation to do it finally. Do you guys have that problem?
⏹️ ▶️ Casey I used to use iPhoto. This was, I don’t know, three, four years ago now.
⏹️ ▶️ Casey And I felt it was nothing but a burden. And there’s probably a million and
⏹️ ▶️ Casey seven ways that you can blame that on me and probably a million and six of them are correct. But for
⏹️ ▶️ Casey whatever reason, I just didn’t have a workflow that really worked well for me. And what I’ve ended up doing since then is just
⏹️ ▶️ Casey issuing, that’s how you pronounce that word right, issuing iPhoto altogether. This
⏹️ ▶️ Casey is the Accidental Pronunciation Podcast. And now what I’m doing is, and I think
⏹️ ▶️ Casey it was Bradley Chambers, learning to love photo management in combination with some scripts from
⏹️ ▶️ Casey Dr. Drang. And so basically what I do is I have all of my pictures
⏹️ ▶️ Casey renamed consistently and stored consistently in my file system, and that’s as close as I get to any sort of organization.
⏹️ ▶️ Casey And I wish I had a better organization system insofar as something where maybe
⏹️ ▶️ Casey I’ve tagged pictures that I think are really good, or I’ve grouped them into events or what have you, the sorts of
⏹️ ▶️ Casey things that I suspect Photos app will be great for. But for whatever reason, it just felt like such
⏹️ ▶️ Casey a pain in the butt with iPhoto that I never really did it.
⏹️ ▶️ John I think I’ve described my system before. I put them all in iPhoto and then I star rate them. And the only
⏹️ ▶️ John cleaning I really do, I tend to be like not want to get rid of pictures
⏹️ ▶️ John of my kids, even if like they’re not framed correctly or even if they’re a little out of focus, because sometimes they’re still
⏹️ ▶️ John cute. But what I do is I do rate them all. And when I feel like doing a little cleaning, I just show
⏹️ ▶️ John all the one stars and the one stars are basically like, you should really delete these because the lighting is really bad or it’s blurry
⏹️ ▶️ John or whatever. Like and I will delete as I look at every picture when I load them into iPhoto, I’ll delete the ones obviously
⏹️ ▶️ John that are like, actually I took a picture of my foot or like something, you know, that are totally bad. But all one star ones
⏹️ ▶️ John and then when I want to clean it’s really easy for me to just show a smart album that shows one star and then just go through
⏹️ ▶️ John and just delete a whole swath of
⏹️ ▶️ Marco them. Yeah, but see then you can’t see the ones around them that were better so you can really know like, which of these do I need
⏹️ ▶️ John keep? One star means, I mean, I can look at the pictures, like it’s like, these are so blurry, like they’re not, I’m
⏹️ ▶️ John not one starring, if it’s in focus and people are in the, like, those never get one star. star basically
⏹️ ▶️ John means you should really delete this one star is the thing that most people would delete immediately I just let them stew and then if I feel like
⏹️ ▶️ John cleaning house I delete all I think I deleted every one star from my collection a couple years ago and it was
⏹️ ▶️ John a lot of photos but now I just kind of let them build
⏹️ ▶️ Marco up maybe you’re just letting them develop like a Polaroid like figuring maybe it’ll get better if I just leave it here for a little
⏹️ ▶️ John yeah and also like a picture that is actually out of focus
⏹️ ▶️ John sometimes that we do like family calendars where you and you know make the calendar for the year with pictures and everything. And they have this little
⏹️ ▶️ John collage where you can put the picture. And sometimes there’s little spots on the calendar for small photos and even a
⏹️ ▶️ John picture that’s blurry, like it’s not in focus when you shrink it down to be like one of the small thumbnails kind of
⏹️ ▶️ John at an angle in the corner of a calendar thing. It doesn’t actually even look that bad. So occasionally that’s why I’m kind
⏹️ ▶️ John of keeping the one stars around. Or if it’s like me trying to see a picture of like,
⏹️ ▶️ John what some, what do I have in this shelf in this year? Where was
⏹️ ▶️ John, Casey or whatever? like,
⏹️ ▶️ John you know, I wish I wish the system was more intelligent about finding
⏹️ ▶️ John things. For example, I do keyword them, but my keywords are limited to like, I have a keyword for each of my children, and
⏹️ ▶️ John then one keyword for me and my wife, because I’m not going to do us individually, you know what I mean?
⏹️ ▶️ John And that’s about it. And you think, like, why do you need to do that? Doesn’t the faces feature find you
⏹️ ▶️ John all the people that you want for you? Well, I started doing this before the faces feature existed long before, first of all, but second
⏹️ ▶️ John of all no it’s not reliable enough like me manually keywording them is much more reliable than
⏹️ ▶️ John faces I wish I could turn faces off it’s always grinding away making the fan spin up on the MacBook
⏹️ ▶️ John Air to try to detect people’s faces but that’s the same thing I do with iTunes starring
⏹️ ▶️ John them and basically using the star as a threshold system easily lets me sort of get what people
⏹️ ▶️ John are trying to get by cleaning things out which is just like just show me three stars are better those are the good pictures there’s
⏹️ ▶️ John very few of them suddenly my collection become small and manageable. And if I want to share photos on, you know, PhotoStream
⏹️ ▶️ John or, you know, send them to relatives, I just show the three stars. It’s super manageable. People want their collections
⏹️ ▶️ John to actually be like that. I can’t bring myself to throw out the two-star ones, but the one-star ones I do delete.
⏹️ ▶️ Marco Now, going back to the photo app for a second, I think… So, one thing that we were skeptical of
⏹️ ▶️ Marco or hesitant or whatever the right word here is…
⏹️ ▶️ Marco, Casey We are a disaster. Yeah,
⏹️ ▶️ Marco right. I’m still sick. I have a good reason. Is that we were wondering, like, you know
⏹️ ▶️ Marco one of the issues with cloud service back things and iCloud stuff in particular
⏹️ ▶️ Marco is that there’s pretty much no visibility into the storage and no recourse
⏹️ ▶️ Marco if it does something crazy like delete half your contacts like it’s pretty hard to recover from that in a lot of cases
⏹️ ▶️ Marco for a lot of these services and if you if you have this on your Mac and it
⏹️ ▶️ Marco has all these files in there locally you can back up these files and then hopefully have some way to re-import
⏹️ ▶️ Marco them if you had to like nuke your whole iCloud account and start clean or restore a bunch of stuff that was deleted.
⏹️ ▶️ Marco It seems from earlier reports that the storage layout of it, you can import
⏹️ ▶️ Marco things off disk and it can just leave them where they are and not copy them in. But by default it seems to maintain
⏹️ ▶️ Marco a very iPhoto-like library structure so that these files are just sitting there as files on
⏹️ ▶️ Marco your disk. All of your photos are there by default. It will only be smart and try to delete some of the originals
⏹️ ▶️ Marco or cache things online only if you enable the special low space mode.
⏹️ ▶️ Marco So you can just have one computer that has the whole library on it and has all those originals sitting there as
⏹️ ▶️ Marco files, and you can always re-import them later. So it does seem like it is durable
⏹️ ▶️ Marco enough in that way to be used as your main photo app, at least once they work out any
⏹️ ▶️ John It’s actually even better than that. We should explain what the experience of this is. So iPhoto was an app, and Aperture was an app
⏹️ ▶️ John that Apple had. discontinued, both being replaced by this app, both mediocre. Yeah. Functionality wise,
⏹️ ▶️ John photos does not include all the functionality of aperture includes most of the functionality of iPhoto. But so this
⏹️ ▶️ John this application is coming into people’s lives with the expectation that you’ve already got all your photos in
⏹️ ▶️ John one of these other applications or in a folder of crap somewhere. And it handles all
⏹️ ▶️ John those situations. So like if you have an iPhoto library, when you start it up, it will import that iPhoto library
⏹️ ▶️ John and it won’t actually make duplicates of the files. It’ll just make hard links to them. We’ll put a link in the show notes to explaining
⏹️ ▶️ John the hard links However, basically it doesn’t take up any more room on your disk, but it makes a separate parallel structure of its own
⏹️ ▶️ John At that point your libraries are divorced from each other And if you make changes to either one of them the changes are no longer
⏹️ ▶️ John visible So it’s a one-time kind of import process that doesn’t actually take up much more disk space
⏹️ ▶️ John But at that point they’re diverged like they’re not kept in sync with each other If you have a file full of pictures
⏹️ ▶️ John that just like you’ve organized yourself You can just start photos up make a new empty library and
⏹️ ▶️ John import those pictures I believe it will copy them and now we’ll copy them that case you can tell it to leave the pictures
⏹️ ▶️ John where they are there’s a preference kind of like the iTunes preference of copy media into the library you can tell it don’t move my
⏹️ ▶️ John stuff I have it arranged in folders just just reference them from where they are and it will do that it will leave them in your nice organized
⏹️ ▶️ John folder structure it will put a little thing in the app that shows you like oh by the way this picture isn’t in a library
⏹️ ▶️ John it’s referenced from another location and if you want to work that way which I would totally recommend not doing because it’s crazy
⏹️ ▶️ John and you’re a crazy person the application will do that for you you can put you can
⏹️ ▶️ John organize your photos into little folders by date and name them whatever the heck you want. And then just reference them from the
⏹️ ▶️ John photos app and continue that crazy workflow where you act as a little person putting things into
⏹️ ▶️ John folders and then reference them from the application. And just like iPhoto, you can hold on the option key
⏹️ ▶️ John on launch and switch among different libraries. The only limitation you have is and this is all
⏹️ ▶️ John just like totally local forget about network connection. This just works totally locally, no cloud stuff involved at all right.
⏹️ ▶️ John If you want to do some cloud stuff, then you can designate one library as like the system
⏹️ ▶️ John library, whatever, like the iCloud library. One library on your system can
⏹️ ▶️ John be cloud backed up. And then you have the choice of, do I want to keep all the originals on my Mac
⏹️ ▶️ John and then also put them in the cloud? Or do I want to use whatever it calls, like smart or advanced storage or whatever, some
⏹️ ▶️ John other preference that says, I don’t care if they’re all on my Mac. You can actually take some of them off my Mac as long as they’re
⏹️ ▶️ John in the cloud. And that’s the second option. So this This is an extremely flexible application that does things in pretty
⏹️ ▶️ John much the smartest way possible given the current policies and technology we have that leaves every person
⏹️ ▶️ John able to do whatever it is that they want with their photos. The only bad thing about it transition
⏹️ ▶️ John wise is if this app is completely buggy and like erases stuff and destroys your photos and they get lost in the cloud and everything,
⏹️ ▶️ John any changes you made after that initial kind of one time import process will be lost because
⏹️ ▶️ John once you do that import, you are now leaving iPhoto behind. I suppose you could import your photos
⏹️ ▶️ John into both of them in parallel, but then you will actually be duplicating because the one-time import with the hard linking stuff
⏹️ ▶️ John doesn’t take up much more space. That’s not an ongoing thing. So there is a transition point.
⏹️ ▶️ John And so I suspect if I try out this program, I will try it out and then,
⏹️ ▶️ John I don’t know, maybe just like bail out after importing a couple pictures into it and then re-import those same things
⏹️ ▶️ John into my iPhoto library. I still don’t have a good transition pan, but spec wise
⏹️ ▶️ John the photos application Seems like it does all the right things to make everybody
⏹️ ▶️ John except for aperture users who are screwed
⏹️ ▶️ John, Casey It will import your aperture
⏹️ ▶️ John everybody everybody happy except for the people who use the aperture and will miss all the features that aperture Have this doesn’t
⏹️ ▶️ John have in terms of advanced photo editing
⏹️ ▶️ Marco Well, the editing controls are actually not that far off This is one of the reasons I’m very excited about this app
⏹️ ▶️ Marco that the actual editing process and the controls you have for editing are very
⏹️ ▶️ Marco advanced and really are pro-level editing tools compared to Aperture and Lightroom.
⏹️ ▶️ Marco Lightroom is probably slightly more advanced in certain areas. Aperture I’m not sure, I haven’t used it in a couple years but
⏹️ ▶️ Marco it’s probably very closely matched to those editing tools. Where it falls short
⏹️ ▶️ Marco is in the organizational tools of things like Aperture and Lightroom and especially if you’re coming from Aperture I think it’s gonna
⏹️ ▶️ Marco be If you were really heavily using those organizational systems of
⏹️ ▶️ Marco like vaults and all these things, most of that is not going to transfer over gracefully.
⏹️ ▶️ Marco So that’s really where aperture users are going to be very rightfully upset. But
⏹️ ▶️ Marco besides that, it looks, again, I haven’t used it yet, but it sure looks like the
⏹️ ▶️ Marco editing and processing of the photos is just as good as aperture was.
⏹️ ▶️ John But they don’t have the interface of doing the pics. A lot of Aperture was about professional photographers
⏹️ ▶️ John taking lots of photos and then designating the ones they think are good in sort of an efficient
⏹️ ▶️ John manner. Like it’s not there’s no workflow like that as far as I can tell built into photos, whereas Aperture so much
⏹️ ▶️ John of Aperture was focused on, you know, the editing tools, which is one thing and then this whole,
⏹️ ▶️ John you know, like you said, the vaults and the management and then the picking process. I forget what they call it. Is that the word they
⏹️ ▶️ Marco use? I think so. It might be. I don’t know. Again, it’s been a couple of years since I used Aperture. But yeah, I mean, Aperture
⏹️ ▶️ Marco and Lightroom are both gonna be way better for what pros actually do. Like my wife, Tiff,
⏹️ ▶️ Marco is not gonna use this Photos app. I can already tell you that. She’s not gonna use it. She has, even Aperture
⏹️ ▶️ Marco and Lightroom are too heavy handed for her. She just uses Bridge and a bunch of directories because when she
⏹️ ▶️ Marco does client shoots, she doesn’t wanna bring it into some giant library program and have it organize things for her.
⏹️ ▶️ Marco She does it all in the file system with Bridge and does all the picking that way and it works great for her. Most
⏹️ ▶️ Marco pros are gonna have a system like that they’re going to use one of these pro apps to do all that organizational
⏹️ ▶️ Marco and stuff and managing the shoots and managing the picking and all that stuff. They’re not going to use this app, but that’s fine.
⏹️ ▶️ Marco This isn’t made for them. This is made for the people like me who and
⏹️ ▶️ Marco of course everybody else, but like people like me who were using aperture and or
⏹️ ▶️ Marco light room for its advanced editing controls primarily and then secondarily we
⏹️ ▶️ Marco would occasionally touch some of these library functions, but we were mainly there for the editing controls. That’s definitely
⏹️ ▶️ Marco the case for me. I know it’s the case for a lot of people who bought SLRs in
⏹️ ▶️ Marco the last eight years and got into photography as a nice hobby. Just
⏹️ ▶️ Marco having these nice editing controls built into the main photos library
⏹️ ▶️ Marco mechanism on iOS devices and Macs is going to be awesome. Because for all these years,
⏹️ ▶️ Marco we’ve had to decide between something that’s fully integrated into Apple’s ecosystem and syncs
⏹️ ▶️ Marco everywhere and is all in all the photo pickers and all that stuff, or has great
⏹️ ▶️ Marco editing controls and pro stuff. And there were always these things you’d have to give up one way or the other.
⏹️ ▶️ Marco And this looks like it’s perfect for people like me. Any prosumer who’s really
⏹️ ▶️ Marco into SLR photography, but is not doing pro photo shoots actually for clients
⏹️ ▶️ Marco every day or on the weekends or whatever, this is for us. And I’m very much looking forward to that.
⏹️ ▶️ John I think the editing controls, like adding intelligence to the editing controls is really important because they like
⏹️ ▶️ John they default for most photo apps, including apples, with the exception of the little magic wand enhance button.
⏹️ ▶️ John Like they gave you one button. It’s like you don’t understand all these crazy controls. Press the magic wand and maybe it will make your photo
⏹️ ▶️ John look better or maybe it won’t. And if you press that button and didn’t like it, you’re like whatever. But then you’re faced with, OK, well, so the magic
⏹️ ▶️ John wand didn’t work. Here’s eight thousand sliders. Good luck. Right. And if you don’t know how to use those sliders,
⏹️ ▶️ John it’s daunting to figure out how to just, you know, with this million different combinations and you’re trying like, I don’t know, do I move this
⏹️ ▶️ John and that or whatever? Well, so Photos has this sort of intelligent thing where they give you sliders that are sort of meta
⏹️ ▶️ John sliders that cause the other sliders to move in what it hopes are pleasing ways and you’re like, oh, well, that’s bad.
⏹️ ▶️ John I don’t want it to be smart and move those other sliders around. I want to move the actual sliders. Well, the great thing is you can use these these
⏹️ ▶️ John meta controls that influence the other sliders to try to like most people can do that and say, oh, I would
⏹️ ▶️ John never have thought to put those other sliders in this position. But when I slide this top slider, all these other things move around. But you
⏹️ ▶️ John still have the ability to edit every single one of the detail sliders manually as well. So if you want to use the sliders
⏹️ ▶️ John by hand, you can. But most people have no idea how to get good results with that so they can use those other meta sliders. So
⏹️ ▶️ John it’s a big step up from either magic wand or you’re on your own.
⏹️ ▶️ Marco And all these edits are fully synced, not not just like burning it into a JPEG and thinking that
⏹️ ▶️ Marco the actual edit states are synced so that you can go on your phone or your iPad and make
⏹️ ▶️ Marco adjustments. And that syncs back.
⏹️ ▶️ John Well, in theory, I mean, let’s be serious here. Well, I mean,
⏹️ ▶️ Marco this is all based on cloud kit. So far, our cloud kit stuff has been solid.
⏹️ ▶️ John Why didn’t my contacts sync, Marco? Contacts! It’s like a tiny set of data. Why?
⏹️ ▶️ Marco That’s a good question. I have
⏹️ ▶️ John My faith is that I’m ready to
⏹️ ▶️ Marco be impressed. It seems like I’ve heard rumblings. I’m sure everyone’s
⏹️ ▶️ Marco heard these rumblings, that like, EDDQ’s team took over iCloud something something
⏹️ ▶️ Marco and was really revolutionizing and fixing stuff a year ago. That’s when all this stuff started,
⏹️ ▶️ Marco allegedly. And it seems like CloudKit and the Cloud
⏹️ ▶️ Marco Photo Library stuff and all the stuff that came out of that that’s all based on CloudKit seems like that is
⏹️ ▶️ Marco most likely to be the result of that rumor. And that we’re seeing now, like,
⏹️ ▶️ Marco they’re doing good things with cloud stuff now. Like, rather than the initial iCloud services
⏹️ ▶️ Marco stuff, which was the document stuff, which is, you know, fairly simple problem
⏹️ ▶️ Marco set, but it was done kind of oddly, but mostly worked. worked. Key-Value Store, which works alright. And then
⏹️ ▶️ Marco Core Data Sync, which was a disaster. Because they tried to tackle this incredibly complex problem
⏹️ ▶️ Marco that really can’t be done well in the way they attempted to do it. And of course, so
⏹️ ▶️ Marco it sucked. Cloud Kit was like… We talked about this when they announced it back in the summer. Cloud Kit is
⏹️ ▶️ Marco Apple kind of saying, Okay, we’re going to do a cloud server that actually is easier
⏹️ ▶️ Marco to do well. And so far it seems like they did. So
⏹️ ▶️ Marco I’m pretty confident in this service probably being good. I mean, you know, we’ll
⏹️ ▶️ Marco see what happens in practice once it’s launched full-scale and everything and we’ve all been using it for a few months. But
⏹️ ▶️ Marco I think all the pieces seem to be in place for this to actually be good and work
⏹️ ▶️ Marco pretty well most of the time or all the time.
⏹️ ▶️ Casey Well, just the fact that they’re dogfooding it so heavily I think is a pretty big change from say
⏹️ ▶️ Casey iCloud with core data or core data with iCloud or whatever the terminology was.
⏹️ ▶️ Casey The impression I had was that nobody was dogfooding that. But just like you said, Marco, it sounds
⏹️ ▶️ Casey like Apple’s heavily dogfooding CloudKit. And
⏹️ ▶️ Casey that’s definitely a good thing for all of us because I think Apple is fairly tolerant
⏹️ ▶️ Casey of third-party developers having to jump through hoops and fairly intolerant of their own
⏹️ ▶️ Casey people having to jump through hoops.
⏹️ ▶️ Marco Oh, yeah, that’s fair. And as far as I know, I don’t think any Apple app ever used Core Data
⏹️ ▶️ Marco Sync. I’m pretty sure we never found one. I know some people were trying to… They were asking around on
⏹️ ▶️ Marco Twitter a year ago, and they were like, does any Apple app actually use this? I don’t think we ever found one. But anyway,
⏹️ ▶️ Marco I’m confident. And also, I wouldn’t necessarily be all nostalgic for Aperture, because Apple
⏹️ ▶️ Marco has been a terrible steward of Aperture since the beginning. It always had delays,
⏹️ ▶️ Marco issues. It was always pretty buggy. It always had terrible performance.
⏹️ ▶️ Marco Most of all, it would just go years without any major updates. Everything was always just
⏹️ ▶️ Marco too little, too late. It was always getting better soon and never actually great.
⏹️ ▶️ Marco That’s why Lightroom does so well. Apple basically said,
⏹️ ▶️ Marco I think they basically invented the category of apps that work like this basically. I think. I’m
⏹️ ▶️ Marco not sure about that. Please email Casey. And then
⏹️ ▶️ Marco Adobe came in with Lightroom and just ate their lunch because they iterated so much faster and it was so
⏹️ ▶️ Marco much better. Aperture was always pretty badly neglected. So
⏹️ ▶️ Marco rose-colored glasses and everything. I don’t think we’re going to see people looking back in six months saying, Oh, I really miss Aperture.
⏹️ ▶️ Marco I don’t think so. And for the few who do say that I think they’re probably going to be
⏹️ ▶️ Marco misremembering how good it actually was.
⏹️ ▶️ Casey I thought I saw somewhere and it might have been in Jason Snell’s review, but I thought I saw somebody had loaded
⏹️ ▶️ Casey just a crud load of images of pictures into the new photos app. And they said
⏹️ ▶️ Casey you could scroll that thing at a solid 60 frames per second like it was nothing.
⏹️ ▶️ John I will be excited to see that if that’s true. That’s why I wanted to try it. I’m like, I’ve got to see this because it is so terrible
⏹️ ▶️ John on iPhoto. I have maybe 30 40 maybe I have more than that. Forty thousand photos, 50 and maybe
⏹️ ▶️ John it’s up to 60. Anyway, it doesn’t seem like that big a number, but I want to see that scroll nicely.
⏹️ ▶️ Marco We are also sponsored this week by H over
⏹️ ▶️ Marco, Casey H over is the best way.
⏹️ ▶️ Marco Oh, it’s also hover or hover. All of those things hover is the best way to buy manage
⏹️ ▶️ Marco domain names. Go to hover.com and you can get 10% off your first purchase by using promo
⏹️ ▶️ Marco code slot toaster people. Slot toaster people. When you have a great idea,
⏹️ ▶️ Marco you want a great domain name that’s catchy and memorable. Hover gives you exactly what you need to find the perfect domain for
⏹️ ▶️ Marco your idea so you can get started actually working on it. I’ve mentioned before, if I am
⏹️ ▶️ Marco working on a new project, I need to find a name first. I can’t really move forward without a name. That
⏹️ ▶️ Marco just blocks me until I get a name. Domain names are the very first thing I go to search. Hover is great for that.
⏹️ ▶️ Marco Hover gives you easy-to-use, powerful tools to biomanage domains so anybody can do it. The support team is
⏹️ ▶️ Marco always ready if you need a hand. They’re known for their no wait, no hold, no transfer phone
⏹️ ▶️ Marco service. So when you call a real life human being is ready to help. They pick up the phone. That’s it.
⏹️ ▶️ Marco They’re ready to help you. Don’t put on hold, you’re not transferred to anybody. That’s it. They pick up and they help you. It’s amazing.
⏹️ ▶️ Marco Plus, they have a great online tutorials and email support if you hate the phone like me. You can find new domain
⏹️ ▶️ Marco names that you want to get up and running in less than five minutes. All you gotta do is type in a few keywords and hover
⏹️ ▶️ Marco will show you the best available options across all TLDs out there. Now if you’ve ever used
⏹️ ▶️ Marco any other domain host before, you know that it can be a pretty unpleasant experience
⏹️ ▶️ Marco at a lot of these different companies. They make it very complicated to buy just what you need or they try to upsell you with
⏹️ ▶️ Marco crazy stuff, or they make you pay extra to upgrade for things that really should be included. Hover
⏹️ ▶️ Marco does not believe in this kind of approach. Instead of charging you for something that should just be there, Hover includes everything
⏹️ ▶️ Marco you need with your domain. You get a smart control panel, you get Whois privacy, always for free on any domain that supports
⏹️ ▶️ Marco it. They even offer this really cool service called Valley Transfer Service. What they do is if you will
⏹️ ▶️ Marco let them, they will log into your old registrar and do any transfers for you.
⏹️ ▶️ Marco They’ll transfer over all your DNS and everything so it’s all correct. It’s very easy to get that stuff wrong and then your site’s down
⏹️ ▶️ Marco for a few hours. It sucks. They will log in and do it for you if you want because some registrars make it
⏹️ ▶️ Marco pretty difficult to leave and of course they don’t. They also have this great email service. Hover has great
⏹️ ▶️ Marco solutions for your own custom email address for your domain. $20 a year gets you a fully functional
⏹️ ▶️ Marco email account at your domain with 10 gigs of storage. You guys remember when Gmail came out,
⏹️ ▶️ Marco it was one gig. This was like in 2004. Yep. And that was revolutionary to have a
⏹️ ▶️ Marco gigabyte. No one could ever use that much. Well, we do. And Hover now offers 10 gigs
⏹️ ▶️ Marco a year for just $20. Now, if you need more than that, for just $29 a year, you
⏹️ ▶️ Marco can get the big mailbox. It’s actually what it’s called. It’s called Big Mailbox. That gets you a terabyte of storage,
⏹️ ▶️ Marco plus some other nice bonuses. $29 a year gets you a mailbox that can hold a terabyte of email,
⏹️ ▶️ Marco which I think sounds like my personal hell. They even have
⏹️ ▶️ Marco, John email forwarding for
⏹️ ▶️ Marco just $5 a year. So you can keep using… If you already have an email account somewhere else, like FastMail, whatever, you can keep
⏹️ ▶️ Marco using that for just $5 a year. They will forward your email for your domain to anywhere you want. Anyway,
⏹️ ▶️ Marco all this is great. You can get 10% off your first purchase from Hover by going to Hover.com and use promo code
⏹️ ▶️ Marco SLOTTOASTERPEOPLE. All one word, slot toaster people. Thanks a lot to Hover
⏹️ ▶️ Marco for sponsoring our show once again.
⏹️ ▶️ Casey Okay, so there was a little bit of a surprise within the Photos app,
⏹️ ▶️ Casey and some people went spelunking. I’m assuming it was Steve Trout and Smith. Is that right? Stephen Trout
⏹️ ▶️ Casey and Smith? I’m sorry, but that guy. And we’ve, they, he, they,
⏹️ ▶️ Casey someone has discovered UXKit. So UXKit appears
⏹️ ▶️ Casey to be sorta kinda UI kit for the Mac. Marco, do you wanna talk about this a little bit?
⏹️ ▶️ Marco Yeah, so it’s a private framework that is used only by the Photos app at the moment that Apple shipped with the
⏹️ ▶️ Marco Photos app beta. And it appears, you know, you can’t, no one’s like disassembling it, I
⏹️ ▶️ Marco don’t think, but you can class dump it and you can kind of see just like what classes and methods are contained within it
⏹️ ▶️ Marco from the Objective-C runtime.
⏹️ ▶️ John It’s not just photos, by the way. People say that Xcode 6.3 beta also uses UX kit.
⏹️ ▶️ Marco That’s interesting if that’s true. I did
⏹️ ▶️ John not know that yeah, there’s a tweet from Don Mowry saying that I suppose It’s easy enough to confirm, but I put a
⏹️ ▶️ Marco That is interesting well anyway, so and what it appears to be is a
⏹️ ▶️ Marco subset of UI kit ported to the Mac And so there are things and we just like
⏹️ ▶️ Marco you know with the UI prefix replaced with UX And so there’s things like you know you I think
⏹️ ▶️ Marco there’s like a UX navigation controller and stuff like that And you know there’s UX color or UX you know all this like
⏹️ ▶️ Marco Because normally, between UIKit on the iPhone and AppKit on the Mac, there are a lot
⏹️ ▶️ Marco of big differences, but a lot of also just like little superficial differences. Like the prefix
⏹️ ▶️ Marco for UIKit is just UI, the prefix for AppKit is NS. And so you have some classes
⏹️ ▶️ Marco like UIColor versus NSColor, and UIImage versus NSImage.
⏹️ ▶️ Marco And many of these classes that have these like superficial name differences aren’t that different. Or
⏹️ ▶️ Marco the Mac version supports some ancient stuff that no one really uses anymore, so you
⏹️ ▶️ Marco might as well just unify them. So there’s a lot of overlap that seems trivial,
⏹️ ▶️ Marco and many people have written C macros or utility classes
⏹️ ▶️ Marco to have a unified code base that shares some of this code between iOS and Mac more easily.
⏹️ ▶️ Marco So this appears to be Apple’s version of this on this one app
⏹️ ▶️ Marco in this one team, where this their translation layer to have the same code
⏹️ ▶️ Marco running on iOS and Mac. So the question is, is it just this one
⏹️ ▶️ Marco team? Is it just this one app? Or is this going to be a more widespread thing? Is it going to become public?
⏹️ ▶️ Marco And is this going to be the new unified UI framework so that you can share a lot more code between
⏹️ ▶️ Marco iOS and Mac? That’s all. Basically, nobody knows anything about that yet. Everyone’s just speculating.
⏹️ ▶️ Marco But that’s why this is interesting. What do you guys think
⏹️ ▶️ John guy English had a good point and it’s the analogy that it came to mind when I thought it was well so
⏹️ ▶️ John setting aside that Xcode 6.3 also needs to appears to use it according to this tweet
⏹️ ▶️ John guy pointed out Pro kit that framework remember that
⏹️ ▶️ Marco yeah yeah all the pro apps logic and everything
⏹️ ▶️ John Aperture Logic what are the other apps that used it it was maybe maybe shake when that was
⏹️ ▶️ John out and not Final Cut mouth maybe Final Cut anyway a whole bunch of Apple’s apps that look different,
⏹️ ▶️ John like the window Chrome was different. It was darker and sometimes it was smaller. And they had they had their own little weird set of
⏹️ ▶️ John controls and everything. They use Pro Kit framework, which was, you know, a framework shared
⏹️ ▶️ John among Apple applications that gave a different UI. And I mean, I assume
⏹️ ▶️ John it wasn’t just look and feel. I assume it had other features as well. But the point is that it was a framework that was not for public consumption
⏹️ ▶️ John that Apple used on multiple applications that never became the future of AppKit.
⏹️ ▶️ John Right. So the idea that UX kit could just be a thing that Apple uses internally to make its
⏹️ ▶️ John applications This is a completely viable idea. It’s not crazy to think Oh, well now
⏹️ ▶️ John once they UX get like because Apple also does the opposite they they take frameworks
⏹️ ▶️ John They use them privately for a release or two and then make them public, right? So now we can’t tell Whether
⏹️ ▶️ John this is going to be one of those things that’s used privately and becomes public or is it just another pro kit that will Apple will use internally
⏹️ ▶️ John to make its life easier when it makes its applications, but it is not the future of making
⏹️ ▶️ Marco There is some debate around this from smart programmers who are saying like, look, you really don’t
⏹️ ▶️ Marco want to have the unified framework because the Mac and iOS UI wise are different.
⏹️ ▶️ Marco And the very low level stuff, the foundation classes, that’s like the data structures, the networking,
⏹️ ▶️ Marco stuff like that, that all is unified already. And what’s mainly not
⏹️ ▶️ Marco is UI stuff. And there is a great argument to be made there that many people have made that
⏹️ ▶️ Marco that should be separate because like just porting an iOS app directly to
⏹️ ▶️ Marco Mac and using a lot of the iOS interface paradigms like navigation controllers and things like
⏹️ ▶️ Marco that, it doesn’t really work well on the Mac. It’s really not like that’s kind of a waste of what the Mac is
⏹️ ▶️ Marco good at. And it just kind of feels like you’re clicking an iPad app basically. But what about
⏹️ ▶️ John things like collection views, like the fancy iOS collection views that sort of reflow themselves
⏹️ ▶️ John and you know, or even just something like a better table view. I mean, they’ve improved the table. You’re getting rid of NSL and everything like those
⏹️ ▶️ John type of things kind of span the range. I mean, they might still have weird APIs like, you know, touches
⏹️ ▶️ John begin inside cell. And it’s like, what do you mean touches?
⏹️ ▶️ John you know what I mean? Like what you have to think is, look, this this framework exists and the class
⏹️ ▶️ John names make you think it’s very you like it. Like, why would Apple bother making this? And for the photos app, the
⏹️ ▶️ John obvious answer to me is the photos for the Mac app Looks like photos for iOS
⏹️ ▶️ John right down to zooming out and seeing that giant grid of like photos for this month or week or year like
⏹️ ▶️ John it is very clearly a Macification of the iOS photos app so UI
⏹️ ▶️ John wise, you know Ignoring like the back end and how it stores photos and the iCloud and everything like that
⏹️ ▶️ John So much it looks much more like hey someone ported iOS photos to the Mac than anything like hey Someone made a new
⏹️ ▶️ John version of iPhoto like it is it is just and so if you have the existing photos app which
⏹️ ▶️ John presumably uses UIKit and you wanted to make a Mac version of that, being
⏹️ ▶️ John able to reuse, if not that code directly, then like
⏹️ ▶️ John that code indirectly or the structure of the program, it would be really convenient to have something like UXKit
⏹️ ▶️ John where you can get the benefit of all that UIKit code and you know get some semblance
⏹️ ▶️ John of a Mac version up and running faster. That doesn’t answer the question of why it would be used in Xcode, but historically
⏹️ ▶️ John Xcode has been been used to dog food all sorts of weird stuff like garbage collection and what was the other one
⏹️ ▶️ John that it was dog food ark I think did a dog food ark first anyway that could also just be Xcode dog
⏹️ ▶️ John footing things because if you’re gonna experiment with weird technologies you should definitely do it on the application that developers
⏹️ ▶️ John used to write programs
⏹️ ▶️ Marco the the argument of you should keep them separate is weakened once you start looking
⏹️ ▶️ Marco at like what what things in iOS would you not have on the Mac and vice
⏹️ ▶️ Marco versa and I think that list is actually a lot smaller than you might expect if you’re
⏹️ ▶️ Marco just starting to make this argument. And if you look, as you said, collection view, that’s
⏹️ ▶️ Marco applicable to both. So many little components, UI control, UI image,
⏹️ ▶️ Marco UI image view, UI label, table view, text view, so many of these things.
⏹️ ▶️ Marco Actually, there’s not a great argument that they shouldn’t be the same on both. It’s really just the
⏹️ ▶️ Marco very high level structures, the very high level, like navigation concepts, navigation
⏹️ ▶️ Marco layout, that kind of stuff should be different on both. But that’s really a very small part of UI kit in
⏹️ ▶️ Marco the grand scheme of things.
⏹️ ▶️ John And you don’t even know like that you saw navigation controller, we don’t really push new things on. But like, there’s no reason you
⏹️ ▶️ John couldn’t make a Mac app that in one of its windows does a sort of UI navigation controller thing of
⏹️ ▶️ John pushing a new view on and popping it off. And like it may be it might be weird. But But arguably
⏹️ ▶️ John a lot of the existing OS X apps do a lot of iOS-y type things. I mean, hell, I think in Messages
⏹️ ▶️ John has buttons that aren’t buttons but are just colored text. You know, I think I pointed that out on my Yosemite review if I didn’t,
⏹️ ▶️ John I meant to. There’s this like a details button or something in Messages that is not a button, it is just blue text. It’s like, this
⏹️ ▶️ John is not iOS, what do you think you’re doing here? But people accept it. Like, it’s like, all right, whatever. I know when
⏹️ ▶️ John I click that I get details.
⏹️ ▶️ Marco For serving certain interests, as an iOS programmer doesn’t know much about the Mac,
⏹️ ▶️ Marco it would make me way more likely to start tackling a Mac app if this stuff was more consistent.
⏹️ ▶️ Marco If I just dive into the Mac and really am committed to it, I could work through AppKit pretty
⏹️ ▶️ Marco well. I could figure it out. That’s not the only reason I’m not making a Mac app, but
⏹️ ▶️ Marco it would definitely make me a lot more likely to make a Mac app and sooner, and it would make it a smaller undertaking
⏹️ ▶️ Marco if a lot of this stuff is unified, instead of having all these little superficial differences, some big, some small.
⏹️ ▶️ Marco And that has to play in somewhat to any decision they make to this. If
⏹️ ▶️ Marco Apple wants to encourage more Mac apps, if they want to populate the desolate,
⏹️ ▶️ Marco awful landscape of the Mac App Store, which is really sad in a lot of places, if they
⏹️ ▶️ Marco want to help populate that with more better apps, if they want to get more people making Mac
⏹️ ▶️ Marco apps, more people using the Mac for a lot of this stuff, have to make it easier for developers. Right now,
⏹️ ▶️ Marco all the people who are saying this shouldn’t be unified are all longtime Mac programmers.
⏹️ ▶️ Marco Longtime iOS programmers, I think, are very excited about this idea. Because
⏹️ ▶️ Marco we look at the Mac as, like, well, we could go here fairly easily but all this stuff
⏹️ ▶️ Marco is needlessly different.
⏹️ ▶️ John Yeah, and even if you made the core of your app, like, oh, it’s all written in sort of completely
⏹️ ▶️ John platform agnostic manner and it doesn’t really matter or I’m using some framework that’s on both places like core data
⏹️ ▶️ John or something. The UI part is like, you see like, Oh, and just, we’ll just put a different UI
⏹️ ▶️ John on top of it. I’m not going to say it’s the hard part, but it’s a surprising amount of work. And if you have to repeat it and keep them in sync
⏹️ ▶️ John and every time you want to add a feature, you have to add it in both places of a totally different code using different APIs. It’s just,
⏹️ ▶️ John it’s a lot of extra work. I’m not sure UX kit makes it, you
⏹️ ▶️ John know, lowers the barrier enough to really move the needle on the Mac App Store because it has
⏹️ ▶️ John other problems, you know, and it’s just so there’s so few Mac users. Like, I think you’d have
⏹️ ▶️ John to really make it a low barrier for someone. Hmm. I can address the market of like hundreds of millions of iOS devices
⏹️ ▶️ John or like a couple of Mac people like there’s like a million or two or five. Or like
⏹️ ▶️ John it’s so the iPhone is just such a monster. And that’s just one iOS device compared to the Mac. Right.
⏹️ ▶️ John But if this was their goal, like their long term goal, like we’re going to dog food this. We’re going to
⏹️ ▶️ John see if it’s possible, because we as Apple have a bunch of iOS apps that we’ve decided this is the right way to do photos
⏹️ ▶️ John with the stupid view where you zoom out and see everything is a big thing. And you put your finger or your cursor over it and see,
⏹️ ▶️ John you know, that’s the future of photos. We already wrote that app. Can’t we just get that to run on the Mac?
⏹️ ▶️ John Well, no, because X, Y and Z, it’s like, well, OK, so we have a job to do. We can use this UX framework
⏹️ ▶️ John to be the first people to try to do that. But Apple has way more resources to throw towards the successor to iPhone
⏹️ ▶️ John than the average, you know, developer with an iOS app who might be thinking about making a Mac app.
⏹️ ▶️ John So if Apple runs this experiment and decides, boy, this really makes porting much easier, then
⏹️ ▶️ John what do they do about it? Do they just say, like, how would they? Assume that this is
⏹️ ▶️ John a successful experiment inside Apple and assume that the goal of it was to see if this is something that developers might want for the reasons
⏹️ ▶️ John that Marco stated. How does Apple then at WWDC announce this as a
⏹️ ▶️ John thing and tell, like, what is the messaging? It’s like so you’re thinking you’re writing a Mac app.
⏹️ ▶️ John If you have an iOS version, then look at UX kit because you could reuse a lot of that same code,
⏹️ ▶️ John changing all the capitalized capital X’s or something. But otherwise, use app kit
⏹️ ▶️ John or is the message like this is the future of writing Mac applications? It just happens to look like the iOS one.
⏹️ ▶️ John But even if you never write an iOS Mac, we’re telling you you should use UX kit to write your Mac apps.
⏹️ ▶️ Marco Well, I honestly, I think if they actually unified it, it would just be called UI kit everywhere. Yep.
⏹️ ▶️ Marco That’s the direction they would go. They would work from iOS back to the Mac. And they would
⏹️ ▶️ Marco just bring over everything named UIKit that makes sense to have on the Mac. And also, one
⏹️ ▶️ Marco advantage they would have here is right now, they’re maintaining two different frameworks. They’re maintaining two different UI
⏹️ ▶️ Marco libraries. And AppKit is very, very old. And there’s a lot
⏹️ ▶️ Marco of cruft in there from the olden days. UIKit was like a
⏹️ ▶️ Marco rewrite of AppKit for the iPhone and to be more modern and to be more
⏹️ ▶️ Marco efficient and have all these new capabilities and be simpler in a lot of ways. UIKit
⏹️ ▶️ Marco is the rethink of AppKit. It is the rewrite of AppKit. They just didn’t replace AppKit
⏹️ ▶️ Marco with it quite yet.
⏹️ ▶️ John If they were going to call it UIKit everywhere though, doesn’t that come… Because the code is not the same.
⏹️ ▶️ John UXKit, I’m led to believe, is more or less just a wrapper around the existing AppKit APIs
⏹️ ▶️ John to begin with. And maybe they would gut that out later. But I don’t think you can pull that out because you have to maintain support
⏹️ ▶️ John for AppKit for a long long time into the future, right? So linking against the, if they
⏹️ ▶️ John called it UIKit, you couldn’t link against that framework if
⏹️ ▶️ John like, if one set of code is like the native code for the iOS devices and another set of code
⏹️ ▶️ John is the wrapper around AppKit. I don’t know how you could do that with the same name. It seems like,
⏹️ ▶️ John I think the reason the X is there, like, it just doesn’t make sense to me. Like it would seem,
⏹️ ▶️ John it’s not going to be a single unified codebase. It’s going to be two separate codebases and having two separate codebases in a framework
⏹️ ▶️ John with the same name on two platforms. I mean, I suppose you could pull it off as the SDKs are in different folders. You know, this is the iOS SDK
⏹️ ▶️ John and this is the Mac SDK, but it just looks like I mean, think about looking up documentation for like surely there would be differences.
⏹️ ▶️ John So I don’t know, like messaging wise, though, that’s we’ll get to this after the next
⏹️ ▶️ John sponsor. But that is a weird message that like. App We’ve been evolving
⏹️ ▶️ John and improving for a long time. But now, you know, it’s like I always
⏹️ ▶️ John wonder that when they bought next, like how I wonder how long the N.S. prefix will. I wondered initially, would they keep the N.S. prefix
⏹️ ▶️ John on everything? Because it’s kind of weird. You know, N.S. next step, like water, all these coca glasses of N.S. prefix. I bet there’s
⏹️ ▶️ John tons of people just starting out programming for the Mac and wondering what the hell is N.S. crap is about. But
⏹️ ▶️ John it’s held on for a surprisingly long time. Right. And, you know, if they get out
⏹️ ▶️ John from under and say, all right, This is the new thing and we call it UX kit and
⏹️ ▶️ John maybe in the future will be unified but for now we have UI kitting UX kit and Like I
⏹️ ▶️ John still think that they would be stuck maintaining three things App kit UX kit, but
⏹️ ▶️ John just on top of that and UI kit like so it wouldn’t be maybe long long-term It’s a unification,
⏹️ ▶️ John but I don’t the messaging just it seems weird to me.
⏹️ ▶️ Marco I mean that’s fair about maintenance the messaging I don’t think would matter. I mean look they have two languages now
⏹️ ▶️ John now. But one of them is clearly a successor to the other.
⏹️ ▶️ Marco I think it’s going to be longer term. And by the way, a lot of people are speculating that UXKit might be Swift
⏹️ ▶️ Marco only or Swift native. I think we can already tell it’s not just by
⏹️ ▶️ Marco inspecting the file and everything. But if you look at the timing of this,
⏹️ ▶️ Marco the Photos app was introduced at the same time as Swift Beta 1. When Swift Beta 1 was
⏹️ ▶️ Marco announced at WWDC last year, very few people inside Apple had even used
⏹️ ▶️ Marco it yet. So I think it’s extremely unlikely that there’s any Swift code in the Photos app.
⏹️ ▶️ John Well, there’s probably some Swift code. That’s the way they would… But I don’t think it’s like written from the
⏹️ ▶️ John ground up in Swift. And I think you’re right that this is an Objective-C framework. The whole point of Swift is you can call
⏹️ ▶️ John through to the Objective-C frameworks. And half of the stuff they did in Swift 1.2, which we didn’t even talk about, was
⏹️ ▶️ John making it less painful and less awkward to interoperate between Swift and Objective-C
⏹️ ▶️ John stuff by adding adding a whole bunch of annotations that you can mark up. And Apple, I’m assuming, is marking up its own
⏹️ ▶️ John Objective-C APIs with all these annotations that mean nothing to Objective-C, but totally let Swift know how it
⏹️ ▶️ John needs to write the adapter classes to be less annoying.
⏹️ ▶️ Marco Exactly. And I think that’s the biggest sign, as anything, that Objective-C is not going to go away
⏹️ ▶️ Marco two years from now. This is going to be a very long-term replacement.
⏹️ ▶️ Marco Right now, look at how many Apple classes are still using C++. C++ as there are
⏹️ ▶️ Marco so many APIs that are still in C++ that I don’t think we have to worry anytime soon that Objective-C
⏹️ ▶️ Marco is going to be just ended.
⏹️ ▶️ John Well, I mean, it could be ended in the sense that they tell you when you’re writing your application the only code
⏹️ ▶️ John you will ever write is Swift. Because you could get away with that because it’s like, I’m not limited. I can call all the existing
⏹️ ▶️ John frameworks and APIs. I can call them all from Swift, right? And I can do weird C-style stuff,
⏹️ ▶️ John too. So you could say, third-party developers, if you were starting a fresh new application and opening a new project
⏹️ ▶️ John in Xcode, write all your code in Swift and you’ll be fine. Like they’re not at that point yet, but that’s
⏹️ ▶️ John like the way they want to get. And that point could come way before all the objective C code is gone. Cause that’s going to take forever.
⏹️ ▶️ John Like the actual people at Apple are going to be writing objective C for a long time, but they can be telling all third party developers,
⏹️ ▶️ John we would like it if you just wrote all your code in Swift. Uh, and you won’t be limited
⏹️ ▶️ John in which API is you call it. Like the idea of like a Swift only or a Swift native API. But
⏹️ ▶️ John what’s the selling point of that other than ideological purity at this point and in
⏹️ ▶️ John the near future? I don’t, you know, surely that day will come, but unless
⏹️ ▶️ John there’s some big advantage in terms of speed or interface, it’s going to be difficult to justify it because
⏹️ ▶️ John then you’d be cutting off all the people with existing Objective-C apps, and there’s a lot of them.
⏹️ ▶️ Marco Yeah, and I would not expect a Swift-exclusive API
⏹️ ▶️ Marco for anything important to be available in the next, I don’t know, two years at least. I mean,
⏹️ ▶️ Marco I think it’s gonna be a while.
⏹️ ▶️ John Abba likes to move fast. They like to like, oh, it’s sooner than I expected. I didn’t think, you know,
⏹️ ▶️ John and in fact, they will probably do it with something important when they decide to do it, but it seems like it’s just way too soon now.
⏹️ ▶️ John So that probably means that whatever your estimate was two years, like maybe cut that in half. Because
⏹️ ▶️ John, Marco don’t they always
⏹️ ▶️ John surprise us where it’s like, you know, the way they herd everybody into
⏹️ ▶️ John whatever new thing they want to do is like the new hotness is only available with X.
⏹️ ▶️ Marco Yeah, but first of all, not necessarily on this level of the language level of what you’re
⏹️ ▶️ Marco doing, like the API level, not necessarily on that level. And also, I think the last time they did that,
⏹️ ▶️ Marco what was it, with Carbon? When was the last time
⏹️ ▶️ John they did that? Oh, no. The best example, I think, is how you can’t build applications for older versions
⏹️ ▶️ John of OSes with the newest version of Xcode. They want to push everybody to the newest version of Xcode. And that’s
⏹️ ▶️ John why people have to keep seven versions of Xcode running on old machines like that. They’re like, you can’t
⏹️ ▶️ John even target, you know, snow leopard anymore with this thing. And like they, they are pushing people up their
⏹️ ▶️ John OS support chain forcibly by saying, look, you’re going to have to have this version of Xcode because it’s the only way you can develop for the
⏹️ ▶️ John iPhone five, but you can’t develop for snow leopard with it. So, you know, all these people keeping these VMS
⏹️ ▶️ John alive with ancient versions of Xcode and the old SDKs, that is Apple aggressively pushing people way too
⏹️ ▶️ John fast, like way, like as soon as people are running VMS with old versions of your IDE, you know, you’re going too fast.
⏹️ ▶️ John And that is a very common thing that people do.
⏹️ ▶️ Marco Yeah, actually, a lot of Mac developers need to do that.
⏹️ ▶️ Casey I think it’ll be sooner. I tend to come down on this closer to John’s point of view than Marco’s. I think
⏹️ ▶️ Casey the push to Swift is going to be more aggressive and sooner than any of us expect.
⏹️ ▶️ Casey I think I’m on the edge. I almost want to say something will be
⏹️ ▶️ Casey Swift specific or this year, year, maybe at the end of the
⏹️ ▶️ Casey year, I think perhaps it’s more reasonable to say sometime in 2016, but I think it’ll be soon.
⏹️ ▶️ Casey I think it’ll be really soon. And certainly Swift is making some, some
⏹️ ▶️ Casey really significant steps and doing so very quickly. And what I keep thinking is,
⏹️ ▶️ Casey you know, Swift is supposed to make a lot of the dangers of objective C go away.
⏹️ ▶️ Casey And that’s of course causing a lot of, I
⏹️ ▶️ Casey don’t know about drama, but maybe doubt in the community, especially amongst those who have worked
⏹️ ▶️ Casey with Objective-C for a long time. But I think that if Swift
⏹️ ▶️ Casey prevents really silly programming errors, and if it’s a little more stable
⏹️ ▶️ Casey eventually, and it runs faster eventually, it’s in Apple’s best interest to push everyone
⏹️ ▶️ Casey that direction. And I think they will. they’ll do so really aggressively.
⏹️ ▶️ Marco Yeah, but I mean, I honestly I think most of the drama is already
⏹️ ▶️ Marco really fizzling out and I think you know it’s it’s only a matter it’s only a couple more Swift
⏹️ ▶️ Marco revisions. I mean look at how much they did in 1.2. It was a pretty substantial upgrade in a
⏹️ ▶️ Marco lot of ways and I don’t even use it yet but I could tell just by looking at what they changed and other people’s
⏹️ ▶️ Marco reactions to it it’s a pretty substantial upgrade. I’ve read a bunch of these blog posts of like we switched
⏹️ ▶️ Marco our big project to Swift or we built a big project in Swift and here’s how it went. And overall,
⏹️ ▶️ Marco it seems to be people are mostly okay
⏹️ ▶️ Marco with the language itself, with a few minor differences here and there, but mostly okay with the language itself.
⏹️ ▶️ Marco But they just complain that the tools are immature still. That’s working itself out pretty quickly, really.
⏹️ ▶️ Marco They just added the incremental compilation, which was probably the biggest complaint in its absence before.
⏹️ ▶️ Marco In less than a year, Apple has already eliminated almost everyone…
⏹️ ▶️ Marco they’ve eliminated most major complaints about the language. There’s still some minor complaints and there’s still
⏹️ ▶️ Marco some people who really object to certain things about it and that will probably never change, but for the most part they’ve
⏹️ ▶️ Marco already addressed many, many good complaints about it in less than a year.
⏹️ ▶️ John And they’re moving really fast. Like, they’re making big, big breaking changes. Almost so much like it’s frustrating,
⏹️ ▶️ John like, reading the documentation for the language and trying to learn the language just to the point you think you’re actually learning
⏹️ ▶️ John things, they change it all. And you’re like, but I just learned how it worked before, now it’s totally different again. And like, they don’t do
⏹️ ▶️ John it like in, there are minor ways, like, oh, we tweak this little syntax here, but there’s like big fundamental, like just wait until they add exceptions
⏹️ ▶️ John and regular expressions, people’s brains are gonna explode, right? This is why I haven’t learned it yet. This language
⏹️ ▶️ John is moving, yeah, I mean, this language is moving fast. And just, it’s like, wow, 1.2 was a big change,
⏹️ ▶️ John and be like, well, my program got five times faster and I didn’t change anything, and you know, like my compile times
⏹️ ▶️ John are lower, like, it’s still super young, and I think it’s probably still super buggy. And they’ve got a long
⏹️ ▶️ John way to go. But like, there’s the I think the inclination is to think, well, it’s young now. And there’s these
⏹️ ▶️ John big changes, but the rate of change will slow down. And I expect it to like, to not slow down
⏹️ ▶️ John to make people uncomfortable with the amount that it doesn’t slow down for the next couple of years, like at a certain point,
⏹️ ▶️ John it’s going to be kind of like, you know, the change fatigue with the OS go like, alright, already, like,
⏹️ ▶️ John my annoyances with whatever features in Swift are now dwarfed by my annoyance that you keep changing the language
⏹️ ▶️ John three months. We understand you are addressing all of our problems and trying to make things better, but now
⏹️ ▶️ John I just want it to be stable so I can write some code and feel like I actually know the language. That’s gonna happen in
⏹️ ▶️ John like eight months if they keep up this pace.
⏹️ ▶️ Marco Yeah, hopefully. I mean, I said last year I was gonna wait about a year before I even looked at it,
⏹️ ▶️ Marco and so far that’s working out very well. I can see in passing, oh, they’re making all these big changes,
⏹️ ▶️ Marco but I have no investment in it. I haven’t even read the Apple Swift book yet, thing they release on
⏹️ ▶️ Marco iBooks for free. I haven’t even read that yet.
⏹️ ▶️ John That’s good because every page of it has changed by
⏹️ ▶️ Marco now. I know. And so I’d rather just wait until it settles down
⏹️ ▶️ Marco at least most of the way. I would expect within the next couple of
⏹️ ▶️ Marco years, I think it will be pretty stable even in a year from now.
⏹️ ▶️ John But I think the reason I don’t think it’ll ever really stay is built into this language is the
⏹️ ▶️ John idea that it is a versioned language and there’s no backward syntax compatibility.
⏹️ ▶️ John entire path forward, and we’ll see how this works is that like the ID is going to update your source code,
⏹️ ▶️ John like they’re not going to support Swift 1.0 1.1. You know, for like the source, like it’s not like
⏹️ ▶️ John I wrote this in Swift 1.0. And I’m going to be able to compile it in Xcode nine many years from now. No,
⏹️ ▶️ John you won’t know you can’t even compile that now. Probably like their whole strategy is source compatibility
⏹️ ▶️ John forget, I mean, maybe they’ll change their policy like that’s when it comes to the maturing point, they’re gonna say, Okay, now the new policy is,
⏹️ ▶️ John we will actually respect the sanctity of your source code and not require you to like, you know, use our refactoring tools
⏹️ ▶️ John to upgrade the syntax. But they’re not in that phase yet. They’re in the phase that says, we told you we’re going
⏹️ ▶️ John to break syntax compatibility, we are going to we’re never going to compile your your Swift 1.0 1.1 stuff
⏹️ ▶️ John anymore. So just get used to it. And you better upgrade to Swift 1.2. And by the way, 1.3 will do the same thing to
⏹️ ▶️ Marco Our final sponsor this week is automatic, your smart driving assistant on your smartphone,
⏹️ ▶️ Marco go to automatic.com slash So, Automatic is this little dongle
⏹️ ▶️ Marco that plugs into your car’s OBD2 port. It’s the same port they use at the mechanics
⏹️ ▶️ Marco or the dealers where they check it for error codes. It’s usually in the driver footwell. Automatic plugs into that and
⏹️ ▶️ Marco so all the information that the dealers can get and the mechanics can get out of your car, Automatic can get and
⏹️ ▶️ Marco it has a smartphone app that integrates with this and does cool stuff. So, one thing it does… So, by the way, this works
⏹️ ▶️ Marco on iPhones and Android phones, which is pretty great and it can show you
⏹️ ▶️ Marco by combining the smarts in your car with the smarts in your phone it shows you things like where
⏹️ ▶️ Marco you’ve driven and how efficiently you drive gives you feedback on your driving in real time
⏹️ ▶️ Marco that can save hundreds of dollars a year on gas they can even call emergency services
⏹️ ▶️ Marco for free in a serious crash so if your car if your car crashes and your phone you know
⏹️ ▶️ Marco is at all workable it can use your phone to call emergency services for you this could really seriously
⏹️ ▶️ Marco you know be a benefit here automatic also can diagnose any check engine
⏹️ ▶️ Marco light code so because it’s in that port that all the mechanics use if there’s any kind of error code
⏹️ ▶️ Marco that causes the check the check engine light to come on the car will act the car has like a lower level error code than that
⏹️ ▶️ Marco it’s just not showing you could use it lacks the display for that that’s why it just says check engine
⏹️ ▶️ Marco but usually there’s some lower level code and a lot of those codes are really obvious things that you can fix things like
⏹️ ▶️ Marco the gas cap isn’t sealed all the way you know stuff like that you can just fix that yourself or you know minor parts
⏹️ ▶️ Marco swaps you can do you know you can go to a mechanic instead of going all the way to the dealer and paying all this money so it can save you lots
⏹️ ▶️ Marco of money with check engine light codes it can give you lots of money savings on gas it can call
⏹️ ▶️ Marco the emergency services for free in a crash and it even has little useful things like parking reminders
⏹️ ▶️ Marco again it’s combining your car with your phone so it knows where you parked and you can
⏹️ ▶️ Marco use the automatic app on your phone to just find your car again. They even have integration with a few different
⏹️ ▶️ Marco things. So they integrate with the Nest Learning Thermostat. So for example, if you’re headed home
⏹️ ▶️ Marco and Nest has you in away mode, so your house is cold in the winter, Automatic knows you’re getting close to
⏹️ ▶️ Marco your home, so it will tell the Nest, turn the heat on. And so then by the time you get home, your house
⏹️ ▶️ Marco is nice and warm for your arrival. And even if you don’t have a Nest, they have integration with
⏹️ ▶️ Marco IFTTT, if this, then that. So with that integration, you can integrate countless other
⏹️ ▶️ Marco online services with your automatic device. So it’s really great. There’s also an API, you can download your
⏹️ ▶️ Marco driving data, you can subscribe to events, like when you start and stop the car, when you’re when your check engine light comes on, etc.
⏹️ ▶️ Marco There’s a whole API for use for whatever you want. And if you have an Android phone, they even have a feature
⏹️ ▶️ Marco called do not disturb mode. So that if you want, you can have it automatically mute your phone like buzzing
⏹️ ▶️ Marco or beeping while you’re driving. So you don’t get distracted by those notifications. So great stuff here, automatic
⏹️ ▶️ Marco comm slash ATP. This is normally about $100. There’s no subscription
⏹️ ▶️ Marco fees. This is one time upfront, just $100. There is, again, no monthly
⏹️ ▶️ Marco fee. You can buy the device, that’s it. Now, there’s a special offer for the podcast listeners, 20% off.
⏹️ ▶️ Marco So for you guys, by going to automatic.com slash ATP, it’s just $80, 20% off. So just $80,
⏹️ ▶️ Marco free shipping in just two business days, and they have a 45-day return policy.
⏹️ ▶️ Marco is really risk free fantastic deal. 80 bucks free shipping
⏹️ ▶️ Marco in two days and a 45 day return policy automatic.com slash ATP. Thanks a lot.
⏹️ ▶️ Casey In speaking of different ways of writing your user interfaces,
⏹️ ▶️ Casey a couple of things have happened over the last weeks or months, that few listeners
⏹️ ▶️ Casey have asked us to talk about. And the first actually might have even been a a year ago now is Async Display
⏹️ ▶️ Casey Kit. Do you want to tell us about that, John?
⏹️ ▶️ John Yeah, all this talk about UX Kit has like the idea, oh, UX Kit is a successor to
⏹️ ▶️ John App Kit, and App Kit has this cruft that UI Kit, you know, learned from App Kit and did things better,
⏹️ ▶️ John which is why it seems nicer to do a lot of things in UI Kit than it is in App Kit and everything. And
⏹️ ▶️ John Async Display Kit and the other topic we went through after about React,
⏹️ ▶️ John React Native rather, point to sort of a larger leap above both
⏹️ ▶️ John the app kit and the UI kit paradigm, particularly having to do with
⏹️ ▶️ John the requirements that certain things only be done on the main thread, laying out the UI drawing. And there are some
⏹️ ▶️ John exceptions to that, where you can try to do some of those things off the main thread. But generally, that leads to sadness,
⏹️ ▶️ John unless you’re super careful and know what you’re doing. And that’s a limitation
⏹️ ▶️ John kind of built into the framework, a framework that if you trace its lineage through, you know, OpenStep
⏹️ ▶️ John and NextStep app keep going way back in time, made sense when you didn’t have a multi-core CPU
⏹️ ▶️ John in your little handheld crazy phone. Like the multi, you know, symmetric multiprocessing was
⏹️ ▶️ John barely a glimmer in people’s eyes back then. Forget about these, you know, 12 core CPUs and everything like that.
⏹️ ▶️ John But the reality is that now we do have multi-core in everything, and even if you just offload
⏹️ ▶️ John some of that work to another core, it can be a big benefit. So Async Display Kit is a thing, I think it’s the thing that Facebook
⏹️ ▶️ John native applications, the paper application where they wanted to do layout calculations,
⏹️ ▶️ John just basically math of saying how wide is this? How much room is it going to take up? Blah, blah, blah. And they wanted to do it
⏹️ ▶️ John in parallel, not on the main thread because they didn’t want to block the main thread. They wanted the main thread to be available to
⏹️ ▶️ John pick up events and process them and make the UI, you know, reactive, not to use that
⏹️ ▶️ John word. The next thing. And so they made AsyncDisplayKit, which is
⏹️ ▶️ John a thing on top of AppKit that lets you do UI type calculations
⏹️ ▶️ John in asynchronously and possibly in parallel in other threads and then
⏹️ ▶️ John do it in a nice way so that the actual layout gets done on the main thread as it has to to work with the thing, but you can actually do
⏹️ ▶️ John the calculations elsewhere. And that’s what makes me look at UXKit and think like,
⏹️ ▶️ John this can’t really be the future of anything, it seems just like an interim step because I would want to
⏹️ ▶️ John see a leap like UIKit was a nice step up from AppKit, but it was kind of like more like a cleaned
⏹️ ▶️ John up AppKit, but it didn’t revisit some fundamental assumptions in light of the
⏹️ ▶️ John hardware realities that we have today. And I think something like something that incorporated
⏹️ ▶️ John something like async display kit into the fabric of the framework would be much better than someone taking
⏹️ ▶️ John AppKit or UIKit and layering another framework on top of it to offload stuff to other threads and stuff like that.
⏹️ ▶️ Casey Yeah. So async display kit was most, uh, gained most of its,
⏹️ ▶️ Casey um, fame, I guess, from paper, which was, is an app
⏹️ ▶️ Casey that Facebook wrote as a kind of alternative to their traditional Facebook app.
⏹️ ▶️ Casey And it’s actually the app that I use on my phone because it freaking supports sending messages, which is nice.
⏹️ ▶️ Casey You don’t have to have a separate app for that, but anyway, it’s very pretty. And it, uh, the animations are very cool
⏹️ ▶️ Casey and it’s very nice. And that and async display kit powers it. Now, lately,
⏹️ ▶️ Casey um, Facebook has taken a different approach because react native is Facebook, right? I’m not making that up. Am I? Uh, I
⏹️ ▶️ Casey think you’re right. All right. Well, we’ll just assume I’m right. Why not? Uh, email me and tell me if I’m wrong.
⏹️ ▶️ Casey Uh, anyway, so react native is also by Facebook and react
⏹️ ▶️ Casey originated as, or at least to my knowledge, as a JavaScript
⏹️ ▶️ Casey front end framework, kind of, sort of, but not really at all like Angular. And
⏹️ ▶️ Casey then somebody at Facebook said, well, you know what? We could do something
⏹️ ▶️ Casey on the native side with this. And so there’s an unbelievably good video
⏹️ ▶️ Casey that I had seen by way of Andy Matuszak, who has been coming
⏹️ ▶️ Casey up a lot lately, actually, on the show. And it’s an overview by one of
⏹️ ▶️ Casey the developers of React Native at Facebook talking about how it works
⏹️ ▶️ Casey and kind of what it does. And I haven’t watched it for a week or two since whenever it came out.
⏹️ ▶️ Casey And so I can’t really get into the specifics because I’ll steer us into a black hole of incorrectness.
⏹️ ▶️ Casey But some of the stuff that it does was just unreal, including being able
⏹️ ▶️ Casey to mess about with your UI without doing another build. And so you
⏹️ ▶️ Casey can have your app running in the simulator, fart around with
⏹️ ▶️ Casey some stuff in Xcode, And it will refresh itself in the simulator without recompiling.
⏹️ ▶️ Casey And additionally, you could actually connect Chrome to the app, the running
⏹️ ▶️ Casey app, kind of like we talked about, I think last episode with, um, with web views, but this isn’t
⏹️ ▶️ Casey a web view. This is all real honest to goodness, native stuff. And so you can connect Chrome.
⏹️ ▶️ Casey They have some sort of interpreter connector, whatever, and you can connect Chrome to your native app,
⏹️ ▶️ Casey running react native and go inspecting it kind of like, Um, what was the third party
⏹️ ▶️ Casey thing that got Sherlock this year? Do you know what I’m thinking of? Oh yeah. The thing that exploded all the views.
⏹️ ▶️ Casey But yeah, so it’s kind of similar to that. And I, I haven’t played with it yet, but just watching this
⏹️ ▶️ Casey half an hour video, my mind exploded probably 15 times. Uh, reveal.
⏹️ ▶️ Casey Thank you. Uh, for the chat room, it was revealed that I was thinking. You’re not going to try and pronounce that? Uh, no.
⏹️ ▶️ Casey Uh, thank you. Person in the chat room, Marius. Sir, Rochi, that’s totally wrong.
⏹️ ▶️ Casey this video is really, really incredible. And Marco, especially,
⏹️ ▶️ Casey I’d be curious… Well, you haven’t seen this, have you? No, of course not. Okay, never mind. So
⏹️ ▶️ Marco you’re useless. Hey, in my defense, I did spend all day today making another Go program. So
⏹️ ▶️ Marco I was in this century.
⏹️ ▶️ Casey Okay, well, that’s good. I would like to hear about that if we have time. But John, what are your thoughts on this React Native thing?
⏹️ ▶️ Casey Have you done React, the JavaScript framework at all?
⏹️ ▶️ John I retweeted a thing from like someone was making a joke, like a sign of the W3C. And it was one of those signs
⏹️ ▶️ John, Marco the library. I said,
⏹️ ▶️ John there have been blank days since a new JavaScript framework had zero whiteboard.
⏹️ ▶️ John I’m pretty sure I know what React is and have seen it, like the JavaScript version for web applications.
⏹️ ▶️ John You can correct me if I’m wrong, Casey, because you’ve watched the thing, because I haven’t watched it yet. But React is the one where they do,
⏹️ ▶️ John where they have all the, Is it the one where they have like the DOM sort of as a structure
⏹️ ▶️ John not actually connected to the DOM and they do diffing against it to figure out what actually needs to be updated and that ends up being
⏹️ ▶️ John faster? It’s like, yep, it’s one of those crazy solutions that has to do with it. It’s not shadow DOM,
⏹️ ▶️ John Chris Deltini and thing. Oh, that’s a separate thing. And web components are related to this. But it’s like, you would think
⏹️ ▶️ John it would be so much slower to build these parallel structures in memory
⏹️ ▶️ John that aren’t the DOM, and then figure out what the changes are by diffing it against something else. And
⏹️ ▶️ John then only at the end after you’ve done this crazy diffing thing and it’s just these abstract memory structures that have no connection
⏹️ ▶️ John to the browser that you say, now finally I know what I have to update in the DOM and you do the minimal update to the DOM. But updating
⏹️ ▶️ John the DOM is so damn slow that doing that diffing ends up being way faster than doing it like the quote
⏹️ ▶️ John unquote direct way.
⏹️ ▶️ Marco It’s worth pointing out also the Flipboard thing on this topic where Flipboard came out, I think it was
⏹️ ▶️ Marco yesterday or the day before, it was very recent. And they launched a web version and then their engineering
⏹️ ▶️ Marco department posted this whole thing how they’re basically doing a react like
⏹️ ▶️ Marco uh diffing system in the middle of this whole system where they’re basically they basically rewrote
⏹️ ▶️ Marco part of webkit that just runs on a canvas it’s and it’s a very small part but
⏹️ ▶️ John yeah that’s what they call it a web version i put scare quotes around a web because once your entire application is just a big
⏹️ ▶️ John canvas tag that you draw stuff in with your own framework like yeah i guess that’s the web but But like you’ve just
⏹️ ▶️ John reinvented active X controls
⏹️ ▶️ Marco Oh, no, that’s that’s terrible. That’s really insulting. Come
⏹️ ▶️ Marco, John on. Not you know what I mean? But like you
⏹️ ▶️ John are not. It’s a difference. We just talk about this with flash like the web is. We know what the web
⏹️ ▶️ John is and anything that is a rectangle in a web page in which some other program runs is not the web.
⏹️ ▶️ John And Canvas is like the borderline of that. It’s like, well, is that the web or is it like
⏹️ ▶️ John you’ve written? You know, yes, you have a nice display layer and you could, in theory, do do everything
⏹️ ▶️ John yourself. They’re not they’re doing everything themselves, but it’s like, as many people point out in terms of like accessibility
⏹️ ▶️ John of a canvas native application, like unless you’re signing up to reimplement, you know,
⏹️ ▶️ John you I kid or app kit with all the accessibility things that are that are inherent there and support for all the tools.
⏹️ ▶️ John It strikes me a lot as a big rectangle on a Web page where other things happen, which may be fine for Flipboard,
⏹️ ▶️ John but I don’t think it’s that’s fine for Flipboard. Yeah,
⏹️ ▶️ John, Casey right. But but
⏹️ ▶️ John React is more like I we’re going to take the Web as it exists And we’re just going to find out a nicer
⏹️ ▶️ John way for you to write applications or what they think is a nicer way. And react has some weird
⏹️ ▶️ John stuff going on that, you know, they violate. They sort of sacrifice a lot of sacred
⏹️ ▶️ John cows. They’re the big things, I think, also, where they like mix JavaScript handlers
⏹️ ▶️ John in line with these fake things that look like tags, but really aren’t and freaks people out because it looks like you’re doing like the old style
⏹️ ▶️ John on mouse over equals whatever, but you’re not really because that’s not actually DOM markup. That’s just a way to communicate
⏹️ ▶️ John with the like. There’s a lot of weird things about React, but I think that’s all besides the point, because I
⏹️ ▶️ John think the important part of it is that it is a different model. It’s a very different model from AppKit and UIKit
⏹️ ▶️ John of how to make GUI applications. And it’s like, well, that’s for the web. The web is so different than native. It has
⏹️ ▶️ John to be different. And React Native is like, what if we take that same model and apply it
⏹️ ▶️ John to native things? Does that work? Is it actually better than using UIKit or AppKit? And some people apparently
⏹️ ▶️ John think it is. I think the jury’s still out on whether this new paradigm is the way to go. But
⏹️ ▶️ John I think this combined with Async Display Kit show two different potentially complementary
⏹️ ▶️ John approaches that are that show that are so different from App Kit and UI
⏹️ ▶️ John Kit and UX Kit that it’s like it makes UI Kit and UX Kit and
⏹️ ▶️ John App Kit look like Objective-C 2.0 and it makes these things look like potentially swift or something
⏹️ ▶️ John like I just feel like there’s a bigger leap to be had. And it’s like I would recommend that Apple
⏹️ ▶️ John not invest some huge amount of time unit making pushing some unified UI kit, UX
⏹️ ▶️ John kit type of thing for the future, because that transition will take a long time when you’re done with the transition. What you’ve got is basically now everything’s
⏹️ ▶️ John as good as you like it. And you like it may be nicer than that, get in important ways. But it
⏹️ ▶️ John is not sort of a. Large, it’s not as big a leap, potentially
⏹️ ▶️ John as big a leap as Swift potentially is over Objective C. Like I’m looking for the next big step, and I would say,
⏹️ ▶️ John refine what you have now, make AppKit better as you’ve been doing, make UIKit better as you’ve been doing,
⏹️ ▶️ John and get busy working on whatever the next big thing is. And if it’s something like React Native, fine. If it’s something that incorporates
⏹️ ▶️ John the ideas of Async DisplayKit, fine. If you think you can retrofit those to both UIKit and AppKit and let
⏹️ ▶️ John people do more things off the main thread, maybe try that too. But I’m not
⏹️ ▶️ John going to say this is my next Copeland 2010 type of thing, but I do look at these other frameworks and
⏹️ ▶️ John I’m not convinced that they’re the future, but they look different enough from the present that I’m interested in
⏹️ ▶️ John potential ideas for the future.
⏹️ ▶️ Marco Yeah, I agree. I think you’re totally right that if you’re going to make everyone do a
⏹️ ▶️ Marco big transition, if there is this other thing that has come up in computer
⏹️ ▶️ Marco science-y type circles and everyone thinks this is a really great idea and it turns out in practice to really be a really
⏹️ ▶️ Marco great idea, it is definitely worth considering. Is it worth, if you’re going to force
⏹️ ▶️ Marco people to go through a transition, to make a bigger leap like Swift?
⏹️ ▶️ John It’s not even like computer science-y, like just recognizing the hardware. The hardware is so different now. The frameworks
⏹️ ▶️ John we have are not a good match for everything being multi-core because of the main thread constraints.
⏹️ ▶️ John And GCD helps that a lot. Like GCD does help, but for UI code, it doesn’t help because it’s like certain things
⏹️ ▶️ John you have to do on the main thread or bad things happen. And so that’s like the Async Display Kit is
⏹️ ▶️ John like, we’re going to hack around that limitation of Apple’s frameworks and say, you just sit there framework, don’t
⏹️ ▶️ John worry. We’ll actually do the UI updates on the main thread. We’re going to do a whole bunch of other math over here in our sort
⏹️ ▶️ John of play world. And same thing with React, our sort of play world of, this is not the UI,
⏹️ ▶️ John but this is our little fake model of the UI so we can actually take advantage of parallel processing.
⏹️ ▶️ John And then we’ll get back to you with, OK, now your actual UI, or now your actual DOM, please do this change. And
⏹️ ▶️ John that is hacky and clever, but it shows that the current frameworks are just not a good fit
⏹️ ▶️ John for current hardware.
⏹️ ▶️ Marco Well, I think the multi-core hardware rendering main thread thing is kind of a red herring.
⏹️ ▶️ Marco Like, in practice, the reason why a lot of
⏹️ ▶️ Marco UI code now is tricky to write is not because drawing calls have to happen on the main
⏹️ ▶️ Marco thread. It’s because, ah, geez, is it declarative versus procedural?
⏹️ ▶️ Marco Whatever the… It’s a different paradigm is what I’m
⏹️ ▶️ John It’s not that it’s tricky to write. It’s just that if you have performance concerns, you want
⏹️ ▶️ John to treat it more like a game engine where it’s like, if you’re going to do anything, you have
⏹️ ▶️ John to be done, because I have to pull the next event off the queue. You need to leave the main thread alone. Do not. That’s the
⏹️ ▶️ John whole thing of GCD. Stop blocking the main thread for crying out loud. I don’t care what you have to do. Get
⏹️ ▶️ John in, get out. I need to get the next event, because if it’s stuttery when it’s scrolling, it’s super bad. And that’s
⏹️ ▶️ John why AsyncDisplayKit has this cool, one of the classes they have is, say you’re going to show a big, giant grid of images,
⏹️ ▶️ John and they’re coming from the internet. You can’t wait to get all those downloaded to figure out what sizes they are so you can lay it out. It’ll
⏹️ ▶️ John take forever. So there’s like this procedural thing where like we’ll download super low res
⏹️ ▶️ John versions of those and asynchronously bring in the higher res versions. But just so you can get a scrollable
⏹️ ▶️ John correctly laid out thing as soon as possible so you can start scrolling it. That’s the type of thing that’s very difficult
⏹️ ▶️ John to do with the existing framework, which it’s like, they don’t expect sort of asynchronous updates to all
⏹️ ▶️ John this, like to all these features. It’s like, it should be easier than it is. And it’s not, it’s not
⏹️ ▶️ John because of like, like you said, declarative versus procedural, that’s part of it. you could say oh it’s easier if I could describe
⏹️ ▶️ John my UI in this way instead of writing a bunch of code to make my UI in this way but it’s like
⏹️ ▶️ John for large grids with lots of things on them I don’t want to block the main thread with the
⏹️ ▶️ John amount I don’t want my main thread to be blocked if n is really large for something
⏹️ ▶️ John that’s performance is is dependent on the number of items
⏹️ ▶️ Marco yeah but I think it’s it’s more you know like you said like with GCD we can already step off the main thread,
⏹️ ▶️ Marco come back later. It’s more of a paradigm shift. It’s not
⏹️ ▶️ Marco that the APIs have to happen on this main thread. It’s that the paradigm for how you update
⏹️ ▶️ Marco the UI. The way React does it, if you look… I don’t know React. So whenever I see
⏹️ ▶️ Marco snippets of React code, it just breaks my mind. I’m looking at it and I’m like, Oh my
⏹️ ▶️ Marco god, this is totally backwards, inside out, upside down, and in French.
⏹️ ▶️ Marco It looks so foreign to me because that’s so different from what I’m used to.
⏹️ ▶️ Casey Yeah, so let me jump in here. So one of the links is that we’re going to put in the show notes, why React Native
⏹️ ▶️ Casey matters. And this is by Joshaber. I’m guessing that’s Joshaber. Anyway,
⏹️ ▶️ Casey he says, right now we write UIs by poking at them, manually mutating
⏹️ ▶️ Casey their properties when something changes, adding and removing views, et cetera. This is fragile and error prone.
⏹️ ▶️ Casey Some tools exist to lessen the pain, but they can only go so far. UIs are big, messy,
⏹️ ▶️ Casey mutable, stateful bags of sadness. React lets us describe our UIs for a given state,
⏹️ ▶️ Casey and then it does the hard work of figuring out what needs to change. It abstracts
⏹️ ▶️ Casey all the fragile, error-prone code out away from us. We describe what we want, React figures out how to accomplish it.
⏹️ ▶️ Casey UIs become composable, immutable, stateless value types. React Native is fantastic news. And that’s
⏹️ ▶️ Casey building, oh, it’s Josh Abernathy, I’m sorry. That’s building on what you were saying, Marco, where this is just
⏹️ ▶️ Casey a whole different model of how you interact with user interfaces.
⏹️ ▶️ Casey And it makes a lot of sense. Maybe the particulars are a little bit wonky and I’ll
⏹️ ▶️ Casey concede that. But the premise of really this is just moving from
⏹️ ▶️ Casey one concrete state to another and it should just be a finite state machine, hopefully in theory,
⏹️ ▶️ Casey that is a really cool premise. And building on that, going back to Andy Matuszak,
⏹️ ▶️ Casey he tweeted a few days ago, we’ll put a link in the show notes. I say with confidence as a former UI kit author, React’s
⏹️ ▶️ Casey model for the UI layer is vastly better than UI kits. React Native is a huge deal.
⏹️ ▶️ Casey In another tweet, they’ve just got to figure out the interaction and animation pieces. And so he goes
⏹️ ▶️ Casey on just briefly, to all asking me what’s React filter rubble danger, you must watch the broader development landscape. Don’t get
⏹️ ▶️ Casey trapped in one platform. And I think that’s a really good call. And this is something very interesting that’s
⏹️ ▶️ Casey influenced from a web framework coming into Native. And it’s making
⏹️ ▶️ Casey some really interesting moves. And I wouldn’t be surprised
⏹️ ▶️ Casey if something along these lines gets adopted by Apple in the same way something along the lines of Reveal,
⏹️ ▶️ Casey which isn’t an apples to apples comparison, but Reveal was kind of Sherlocked. It wouldn’t surprise me if they took
⏹️ ▶️ Casey a very similar, spiritually similar approach to whatever
⏹️ ▶️ Casey replaces UI Kit and App Kit eventually one day maybe.
⏹️ ▶️ Marco Oh yeah, because React, I mean, it’s making big waves it’s making waves with a lot
⏹️ ▶️ Marco of the people who matter with such decisions. People like Andy Machusek, people who
⏹️ ▶️ Marco are developing these frameworks, people who are in important positions, or were, or know people,
⏹️ ▶️ Marco or the new people in those positions. It’s making big waves. I have heard so much about React.
⏹️ ▶️ Marco Every JavaScript framework out there besides React that’s come out in the last decade, I hear nothing about because
⏹️ ▶️ Marco I don’t care. React makes big enough waves that that I keep hearing about it. Like, I don’t know anything about
⏹️ ▶️ Marco Angular. Is that the one that has like a million different levels of factories? Ember
⏹️ ▶️ John and Angular, yeah. Like, you don’t, those are confined to the client side, but React is coming over to the native side. Like,
⏹️ ▶️ John I think to tie this together with Async DisplayKit was like, you know, we’re talking in two different
⏹️ ▶️ John things. Like, I was mostly talking about Async DisplayKit with the performance concerns, and you were talking about React as the paradigm thing. They’re connected
⏹️ ▶️ John though, because React’s functional thing, where like, you know, you operate on state and it’s a value
⏹️ ▶️ John type thing. that sort of, you know, lack of side effects where you just operate on your arguments
⏹️ ▶️ John and return a value and everything is sort of, you know, like just a value type and all that stuff
⏹️ ▶️ John that you see a lot of that in Swift as well. That allows you to parallelize this stuff. Because if you don’t have side effects, if you’re
⏹️ ▶️ John not, if it’s not just one giant big ball of mutable state, then you can only update one thread at a time. Otherwise, you get crazy conflicts.
⏹️ ▶️ John That’s what taught one of the many things that ties up get to its current paradigm, react, says, you know,
⏹️ ▶️ John react, anything display kit are connected, because if you use the react model, it doesn’t matter what thread you do these mutations
⏹️ ▶️ John are. It doesn’t matter. You can do them all in parallel the same like they’re side effect free. They’re pure functional. And so
⏹️ ▶️ John it lends itself to that type of UI model as opposed to the current model,
⏹️ ▶️ John which is we have this one thing. It is the state of the UI. Be super careful with
⏹️ ▶️ Marco it. And going back a sec to what Casey just said, like, it is not past Apple
⏹️ ▶️ Marco to steal good ideas. They do it all the time. And if something is making this big
⏹️ ▶️ Marco of a wave. And Apple’s engineers and top people, if Apple
⏹️ ▶️ Marco thinks it’s a good idea, they will do it. Or they will do something similar to it.
⏹️ ▶️ Marco And something like this is a pretty big deal. To change your entire UI API paradigm
⏹️ ▶️ Marco or to add a new one is a major deal. And this is not something that can happen
⏹️ ▶️ Marco in a year. This would be a big undertaking.
⏹️ ▶️ John It would have to be a skunkworks. But I think that the exciting thing about Swift is it showed us, Yeah, it was a skunk works, but it was
⏹️ ▶️ John essentially one guy who one very powerful guy who had proven himself with many other things
⏹️ ▶️ John that he had done in the company. It’s not just some random employee off in the corner somewhere, but for a long time,
⏹️ ▶️ John it was just one person. And I’m sure there’s lots of those one person type projects that may or may not go anywhere. But
⏹️ ▶️ John like it just goes to show that you don’t need like buy into the VP level to get the ball rolling or something like this.
⏹️ ▶️ John And maybe the ball starts rolling and then stops rolling, like as happened with like ZFS or whatever. You know, other
⏹️ ▶️ John things like it’s not guaranteed that it’s going to happen, but it seems like Apple is currently an organization in which
⏹️ ▶️ John something like this could start happening and get killed before we ever see it and something else comes along
⏹️ ▶️ John and maybe react is just the hotness today and then two years it’s something else like but it’s not outside the
⏹️ ▶️ John realm of possibility that Apple can innovate in this way on any subject other than file systems which they
⏹️ ▶️ John seem institutionally incapable of ever changing. Not that I’m bitter.
⏹️ ▶️ Marco And tying it back even though I really want to end on that but tying it back if they’re
⏹️ ▶️ Marco going to do something like a React-style UI framework, that would be a really
⏹️ ▶️ Marco good thing to start with Swift and to make Swift only. One of the things that
⏹️ ▶️ Marco makes React code look so weird is that it fits in very weirdly with existing languages, just
⏹️ ▶️ Marco like the syntax of declaring it and using it.
⏹️ ▶️ John The fact that it’s using JavaScript, like this is…
⏹️ ▶️ Marco Yeah, it’s really badly bolted on. I mean, not by its own fault, by the fault of the language really,
⏹️ ▶️ Marco but Swift is still squishy and generally more pokeable.
⏹️ ▶️ John But Swift is a much better fit. The whole idea of so many things being value types in Swift, not that that is a direct
⏹️ ▶️ John parallel to the idea of the UI state being a value type and everything, but it just shows that the headspace,
⏹️ ▶️ John where is Swift at in terms of immutable data? Well, it is much more on the React
⏹️ ▶️ John side of things than Objective-C is, because Objective-C is all about everything being mutating
⏹️ ▶️ John hey, just declare it as type ID whatever guys it’s all right uh where as Swift is like no
⏹️ ▶️ John you know we’re gonna pin things down lots of things that were reference types are becoming value types just
⏹️ ▶️ John because we’ve learned that you know making any string reference type just leaves more headaches and people forget
⏹️ ▶️ John to copy them and they have you know it’s like that is the mindset of Swift and so something
⏹️ ▶️ John using the good ideas in React and Async Display Kit written natively in Swift
⏹️ ▶️ John would be a very interesting successor to both UI Kit and App Kit from Apple so someone should start
⏹️ ▶️ John writing that now and in four years get back to me.
⏹️ ▶️ Marco Anyway give me a reason to learn Swift.
⏹️ ▶️ Marco, John Yeah that’ll be eight years later. Yeah. All
⏹️ ▶️ Marco right thanks a lot to our three sponsors this week Igloo, Hover, and Automatic and we will see you next week.
⏹️ ▶️ Casey Now the show is over they didn’t even mean to begin cuz
⏹️ ▶️ Casey it was accidental It was accidental.
⏹️ ▶️ Casey John didn’t do any research. Marco and Casey wouldn’t let him.
⏹️ ▶️ Marco Because it was accidental. It was accidental.
⏹️ ▶️ Casey And you can find the show notes at atp.fm.
⏹️ ▶️ John And if you’re into Twitter, you
⏹️ ▶️ Marco can follow them at C-A-S-E-Y-L-I-S-S.
⏹️ ▶️ Casey Liss, M-A-R-C-O, A-R-M, Auntie Marco
⏹️ ▶️ John Syracuse. It’s accidental. They
⏹️ ▶️ Marco didn’t mean to. Accidental. Tech podcasts so long.
⏹️ ▶️ Casey What are we talking about? Oh, your Go thing. What is this about? you’re really getting into this Go
⏹️ ▶️ Marco Yeah, I’m getting faster with it now. And today was the first time. My previous,
⏹️ ▶️ Marco the polar, the feed polar, that’s just one giant file. Because I didn’t want to
⏹️ ▶️ Marco figure out how do I break up things into different files and manage that in Go.
⏹️ ▶️ Marco Because it’s a pretty long file. And I should break it up now because it got
⏹️ ▶️ Marco longer once I finalized all the stuff I actually needed to be in the system fully.
⏹️ ▶️ Marco So tonight I was working on something else. So I have these two servers
⏹️ ▶️ Marco at high velocity that I started leasing per month
⏹️ ▶️ Marco about a month ago and I haven’t done anything with them yet. I bought them because they were having an insane
⏹️ ▶️ Marco sale that was just ridiculous for what you get for both hardware and bandwidth. Where now
⏹️ ▶️ Marco for a few hundred dollars a month I now have an unmetered gigabit of transfer,
⏹️ ▶️ Marco a gigabit per second unmetered of transfer. What? And I asked them, I’m like…
⏹️ ▶️ Marco Before I bought it, I’m like, Alright, so what’s your actual policy here? If I actually use all this,
⏹️ ▶️ Marco what if I was hosting big podcast files? If I made a podcast file host for us or whoever
⏹️ ▶️ Marco else? If we actually used all this bandwidth, would you cut it off?
⏹️ ▶️ Marco And they’re like, Nope. We actually… You can use it. That’s the point.
⏹️ ▶️ Marco So and it’s a pair of machines that are each 500
⏹️ ▶️ Marco megabit and they’re each as good as roughly as good as a six core
⏹️ ▶️ Marco Mac Pro. They have dual SSDs with RAID 1, 64 gigs of RAM.
⏹️ ▶️ Marco I mean it’s like these are insane machines. Six core Xeon 1660 V3s which are actually
⏹️ ▶️ Marco faster than the current Mac Pro CPUs because the Mac Pro seem to have skipped a generation
⏹️ ▶️ Marco which they sometimes do so I’m not surprised but there is a newer version of the Xeon chips that the
⏹️ ▶️ Marco Mac Pro uses that is out right now that Apple has not updated to and seems like they’re probably just not going
⏹️ ▶️ Marco to at this point. Anyway, so I have these servers that I bought because
⏹️ ▶️ Marco one thing I want to do is and the reason why I was so interested in having tons and tons of bandwidth
⏹️ ▶️ Marco available is I want to be able to launch a Twitter card
⏹️ ▶️ Marco for overcast player pages so that people who are browsing the Twitter app can play the podcast right
⏹️ ▶️ Marco there in Twitter cards. Twitter cards require that all assets that are loaded within them,
⏹️ ▶️ Marco including media files, are served over HTTPS. Some podcast
⏹️ ▶️ Marco hosts support HTTPS for their files, but most don’t.
⏹️ ▶️ Marco The first thing I wanted to write was an HTTPS proxy.
⏹️ ▶️ Marco There are a few of these that exist. There’s one—I forget what it’s called now—there’s one that GitHub wrote in Node.
⏹️ ▶️ Marco I’m sorry I forgot the name. Anyway, so there’s that one and that’s fine. I looked at it briefly.
⏹️ ▶️ Marco It’s mostly made for images but you know fine it would work the same way.
⏹️ ▶️ Marco I decided to try to write that in Go, a basic SSL proxy. And it’s so,
⏹️ ▶️ Marco it’s nothing, it’s like a hundred lines. I mean it’s almost nothing, it’s great. And I also have a
⏹️ ▶️ Marco few other things I wanted to try. I mentioned last week that I was using ImageX
⏹️ ▶️ Marco for my thumbnailing but it was costing me a fortune. So I’m moving
⏹️ ▶️ Marco my artwork thumbnail or to these boxes as well. So I wrote just one go
⏹️ ▶️ Marco program that contains those two functions, the SSL proxy and the
⏹️ ▶️ Marco and the artwork the artwork thumbnail or just those two functions implemented in go it listens over HTTPS
⏹️ ▶️ Marco and is its own server. There’s no server in front of it. There’s no NGINX or Apache or anything reverse proxying to it. It’s just its own
⏹️ ▶️ Marco server raw right to the internet. And that’s all these boxes do is run this program. So I’m hopefully
⏹️ ▶️ Marco going to be deploying that in the next day or so.
⏹️ ▶️ Casey Cool. And it didn’t take you that long to write, it sounds like?
⏹️ ▶️ Marco No, a few days. I mean, I’ve been sick. So my work hours, I can only really work a few hours at a time before I
⏹️ ▶️ Marco go lay down, which really sucks. But I’m extremely annoyed about
⏹️ ▶️ Marco that. That is by far the worst part about being sick is not how
⏹️ ▶️ Marco I feel, it’s that I can’t work. That’s what drives me nuts the most. Anyway, so that’s
⏹️ ▶️ Marco on its way out, at So if I was working full time at full capacity, this
⏹️ ▶️ Marco probably would have taken only two days. It has actually taken something like four days, but oh well.
⏹️ ▶️ John So how does your Go server handle the, I still don’t quite understand the concurrency model,
⏹️ ▶️ John but how does it handle if there are more incoming connections, then does
⏹️ ▶️ John it do multiple processes or is there a single process event driven? What does it look like on the machine?
⏹️ ▶️ Marco It can do multiple cores, but it is all, it’s for the most part, it’s single process
⏹️ ▶️ Marco event driven. But they use this concept, and forgive me, anyone who’s an expert listening, I’m not an expert yet on
⏹️ ▶️ Marco this. So this is a newbie overview of the way it works. But
⏹️ ▶️ Marco they use this thing called goroutines, which are these kind of threads.
⏹️ ▶️ John Cooperating sequential processes or something like that?
⏹️ ▶️ John, Marco Yeah, something
⏹️ ▶️ Marco like that. So it’s those things. And so it’s basically a very lightweight thread
⏹️ ▶️ Marco that exists within the app space. It is not an OS level
⏹️ ▶️ John So how does it behave at the limits? If you overwhelm it with connections, do the other connections
⏹️ ▶️ John just wait? Do you exhaust the number of? I
⏹️ ▶️ John always look at what the behavior at the limits. That’s the only reason I would ever put another server in front of it. It’s like, well, I know how whatever will
⏹️ ▶️ John behave. I can set these limits on number of connections. I know people will wait. I know what will happen. I know when people
⏹️ ▶️ John will start getting timeouts or connections or whatever. Whatever the failure mode is, I can choose my failure mode. And
⏹️ ▶️ John I don’t know what the failure modes at all are for Go because I’ve never used it.
⏹️ ▶️ Marco So I was trying to do some research on that earlier today to try to figure out like do I need to put NGINX in
⏹️ ▶️ Marco front of it or something or can I just go without it? The responses to that question were for the most part
⏹️ ▶️ Marco a few people who did it, who just did it, roth the internet, who said it’s fine.
⏹️ ▶️ Marco A few people who said you should put NGINX in front of it because
⏹️ ▶️ Marco of separation of roles, which I think is total BS, honestly. Like that is not
⏹️ ▶️ Marco a good… Like the way those arguments were presented, none of them convinced me that they were valid arguments. That
⏹️ ▶️ Marco was not like… There’s nothing saying that having Nginx reverse proxying
⏹️ ▶️ Marco to this Go server is any more of a purity of roles than having the Go server
⏹️ ▶️ Marco serving itself. It has this functionality built into the language.
⏹️ ▶️ John The only reasons I could think of are the older reasons that we used to run proxy servers, in that
⏹️ ▶️ John if you don’t want to slow down the process… If a bunch of your clients have slow connections
⏹️ ▶️ John you don’t want to tie up your back end process doling out
⏹️ ▶️ John bits to the slow connections but when it’s an event driven thing that’s not really valid anymore because you’re not tying it up when
⏹️ ▶️ John it’s when it’s doling out bit slowly it’s doing other things because it’s you know multi-threaded and
⏹️ ▶️ John moving on to the next thing
⏹️ ▶️ Marco right and and like and the way like it seems like you would like the difference between
⏹️ ▶️ Marco nginx being tied up with all these connections and go being tied with all these connections because they both have that
⏹️ ▶️ Marco same event-driven style model, I don’t think one would be substantially better than the other at that.
⏹️ ▶️ John Yeah, and the failure mode is the other option, but the real question for me is, does Google put anything
⏹️ ▶️ John in front of its servers when it runs them? And if Google doesn’t do it, which I suspect they don’t because it seems like Go is designed to do this,
⏹️ ▶️ John then it’s like, well, if Google’s not doing it, you don’t need to do it either. If it’s designed to
⏹️ ▶️ John handle the traffic that Google expects, surely you can do your podcast image thing by having the Go app talk
⏹️ ▶️ John directly to them. But I know nothing about this, so I’ll be interested to see what the results are of your experimentation.
⏹️ ▶️ Marco That’s probably a bad example, just because Google is such an incredible scale. They probably have lots of stuff in between
⏹️ ▶️ Marco the public internet and their application servers, so that’s probably a bad example. But I would be
⏹️ ▶️ Marco interested to see medium-sized sites, to see what they
⏹️ ▶️ John Right, well, no, but I’m saying Google, do they intentionally put a layer there whose only purpose is to be, you know what
⏹️ ▶️ John I mean? I would suspect that the machines that their things are running on, the Go process is listening
⏹️ ▶️ John on the ports. And yes, there’s stuff in between, but it’s like, do they, you know, do they shove Nginx in there as essentially a proxy
⏹️ ▶️ John server for some reason? It makes much more sense to do that if you have a multiprocess
⏹️ ▶️ John backend because then you would be tying up an entire child process when really you should just shove the, put a big buffer on the proxy,
⏹️ ▶️ John have the child process ship the bytes out to the proxy, and then that child process is free to serve another request while the proxies
⏹️ ▶️ John have redoubled out those bits to the slow client. That’s like 1990s-era state-of-the-art web technology,
⏹️ ▶️ John but we’ve moved on from
⏹️ ▶️ Marco that. Right. And I saw there was one benchmark that somebody posted where they showed
⏹️ ▶️ Marco all the code they used, and there were a few complainers in the comments, but it seemed pretty valid,
⏹️ ▶️ Marco where they benchmarked a simple Go program, like a Hello World kind of thing. They’re like, simple
⏹️ ▶️ Marco Go program, raw versus Nginx a few different configurations and tweaks.
⏹️ ▶️ Marco And the Go program just had it destroyed Nginx in
⏹️ ▶️ Marco request rate per second with either A, B, or one of the other similar tools. It was way faster
⏹️ ▶️ Marco with just pure Go, because of course, it’s doing less.
⏹️ ▶️ John And you’re synchronizing two event-driven things. Like one thing is handling it, and they’re not going to be in sync of
⏹️ ▶️ John when I’m doing the work on behalf of this request. And then handing it back, it’s just, you’re just, yeah. It’s not
⏹️ ▶️ John just adding overhead. It’s like these two desynchronized event-driven things trying to talk to each other.
⏹️ ▶️ Marco Exactly. So that’s what I’m going to do. I mean, so what the way these servers are set up,
⏹️ ▶️ Marco they actually have none of my app on them. They don’t have any access to my main infrastructure.
⏹️ ▶️ Marco They don’t they don’t even read the database. They don’t have anything on them except this go program. There’s
⏹️ ▶️ Marco they don’t even have PHP installed. So and they don’t even have private net access
⏹️ ▶️ Marco back to the line node servers that are running the rest of the app. No connection whatsoever to the app just
⏹️ ▶️ Marco my app is able to write its files into it They go for just and it only has the go files so like
⏹️ ▶️ Marco the risk if these things get compromised is pretty small And if they go down these are really
⏹️ ▶️ Marco you know these are kind of accessory features It’s I’m gonna have a CDN or front of the artwork thumbnail or anyway
⏹️ ▶️ Marco I’m not and I’m not doing a CDN in front of the podcast bandwidth thing or the podcast SSL
⏹️ ▶️ Marco thing for two reasons number one the bandwidth cost would be extraordinary and I
⏹️ ▶️ Marco don’t think I would be able to afford it. Number two, the way this is working, Overcast
⏹️ ▶️ Marco does not proxy the files normally. And I only want to use this
⏹️ ▶️ Marco in areas where SSL is really required for usability or for functionality. So that would be
⏹️ ▶️ Marco things like Twitter cards, the web player to avoid mixed content warnings, things like that.
⏹️ ▶️ Marco In reality, that’s not most uses of Overcast. That’s not most plays, and it probably will never be.
⏹️ ▶️ Marco But regardless, I still don’t want to steal hits from people’s files.
⏹️ ▶️ Marco And so the way I’ve set it up that there is absolutely no caching of that SSL proxy’s
⏹️ ▶️ Marco assets. Every request that is made through that proxy has a corresponding
⏹️ ▶️ Marco request back to the origin server. And I know they’re probably not going to count my IP
⏹️ ▶️ Marco as unique. I am sending the X-Forwarded for and X-Real IP headers that
⏹️ ▶️ Marco are standard for proxies, I would imagine to prevent fraudulent download count increases,
⏹️ ▶️ Marco most stat services probably ignore those. For some of the big hosts, I already
⏹️ ▶️ Marco talked to Libsyn and I know SoundCloud. I won’t need to use it with them
⏹️ ▶️ Marco because I know how to do secure URLs for them reliably. So that
⏹️ ▶️ Marco should be fine, but either way I still want the downloads to be counted in some
⏹️ ▶️ Marco way as much as possible for the origin servers. So anyway,
⏹️ ▶️ Marco there’s no caching involved there, that’s intentional. But for the artwork, there is caching involved there. There’s going
⏹️ ▶️ Marco to be a CDN in front of it. So if these servers go down for any reason,
⏹️ ▶️ Marco it’s not going to be a massive deal. It’s not going to be like the whole app stops working or
⏹️ ▶️ Marco something big is ugly and broken. going to be a really small deal. And so I’m just
⏹️ ▶️ Marco going to try it. I’m you know, I have just this one seven megabyte go binary to
⏹️ ▶️ Marco put on the servers. And that’s it. There’s no dependencies. There’s no this very much appeals to me. There’s no configuration,
⏹️ ▶️ Marco really. The only sensitive thing on there is going to be the private key to the SSL certificate
⏹️ ▶️ Marco that it uses. That’s it. Like, so I think it’ll be interesting.
⏹️ ▶️ Casey That was much more in depth than I expected. That’s excellent. What else
⏹️ ▶️ Marco going on? You want to do titles? I think minutiae that has to be it. Yeah,
⏹️ ▶️ Casey but the combined AE, I don’t know what that’s called. That’s going to break a whole bunch of
⏹️ ▶️ Casey podcast clients, isn’t
⏹️ ▶️ Marco it? My shell script might break to embed the title. That’s
⏹️ ▶️ Marco Yeah, well, it’s not really. I’ll just do… I’ll use iTunes to edit it or something else. Can you
⏹️ ▶️ Marco believe how like a lot of podcast producers, that’s how they embed the ID3 tags is they import
⏹️ ▶️ Marco the MP3 into iTunes and hit command I for the info panel
⏹️ ▶️ Marco type in the stuff and then export. Like that’s crazy to me that anybody does that. They
⏹️ ▶️ John should use MP3 rage and pretend it’s 2002 again.
⏹️ ▶️ Marco Well, I’m using lame on the command line, which is pretending like it’s 2004.
⏹️ ▶️ Marco, John Similar error. Yeah, exactly. Why don’t you use a hex editor?
⏹️ ▶️ Marco Wow. Yeah, then you have to know UTF-8 for
⏹️ ▶️ Marco converting that character. That’s not going to work. Easy enough.
⏹️ ▶️ Casey Yeah, I think New Shay is probably the best one here.
⏹️ ▶️ John Is that is that a little A-E symbol actually pronounced like
⏹️ ▶️ John Shay, T-A-T, I don’t even know how to pronounce the little.
⏹️ ▶️ Marco Well, it depends on what language you’re talking about. If you’re talking about Latin or Greek, which is probably where it’s from,
⏹️ ▶️ Marco the answer is nobody actually knows and
⏹️ ▶️ Marco going to think they know and they’re making it up. And so I think we’ll
⏹️ ▶️ Marco just we’ll use the wonderful AE ligature and we will just Tolerate the emails
⏹️ ▶️ Marco that come in because we love everybody’s email so much
⏹️ ▶️ John Including the people who tell you that’s not a ligature. I Think it is
⏹️ ▶️ John ligature, isn’t it? I don’t know I’m just speculating about potential email we could
⏹️ ▶️ Marco as as Holgate in the chat room points out the HTML entity name for it AE
⏹️ ▶️ Marco lig so I’m pretty sure it’s a ligature
⏹️ ▶️ John yeah I don’t know I don’t know the technology you know what font and typeface and everything that’s there’s
⏹️ ▶️ John lots of distinctions that I have apparently not cared enough about to memorize.
⏹️ ▶️ John I know they exist, but I don’t know what’s right.