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

122: My Results Were Inconclusive

Bitcode, Swift 2, and slim wallets.

Episode Description:

Sponsored by:

  • Automatic: Your smart driving assistant. Get $20 off with this link.
  • Igloo: An intranet you'll actually like.
  • Squarespace: Build it beautiful. Use promo code ATP for 10% off your first purchase.

MP3 Header

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

Transcript start

⏹️ ▶️ Marco John anything bad happen in the last week and did like the world end or

⏹️ ▶️ Marco did any other Negativity or horrible result happened in the last week.

⏹️ ▶️ John I’m sure horrible things happened everywhere in the last week

⏹️ ▶️ Marco Well, did anything happen like to our show? That was really horrible. Oh, I don’t think so

⏹️ ▶️ Marco Okay, because what was missing from last episode?

⏹️ ▶️ John This the

⏹️ ▶️ John, Marco song was

⏹️ ▶️ John, Casey there did you forget the modem thing in the beginning? No

⏹️ ▶️ Casey Oh John John

⏹️ ▶️ Marco John. Show notes? Nope that was there too. Keep trying. What did what was just completely

⏹️ ▶️ Marco missing from last episode?

⏹️ ▶️ John Any mention of the thing that I was most excited about at WWDC?

⏹️ ▶️ John, Marco No no.

⏹️ ▶️ John Are you talking about like the release show like the production process has fallen down? Oh my god

⏹️ ▶️ Casey John how do I

⏹️ ▶️ Casey, John how have

⏹️ ▶️ Casey I figured this out and you haven’t?

⏹️ ▶️ John I don’t know I just listened to the most recent episode. It had a song I guess it had the modem beep did it have the

⏹️ ▶️ John ending noise?

⏹️ ▶️ Marco Yeah.

⏹️ ▶️ Casey We’ll just sit here patiently. I don’t know.

⏹️ ▶️ John All the ads?

⏹️ ▶️ Marco No, those are there too. All right, well I guess we should do something up front in the show.

⏹️ ▶️ Marco, John Oh,

⏹️ ▶️ Marco because you didn’t have follow

⏹️ ▶️ John up

⏹️ ▶️ John, Marco for WWDC? There we go. We never do. We never have follow up at

⏹️ ▶️ John WWDC show. Because we always have so much to talk about. We haven’t had it on any of the WWDC shows.

⏹️ ▶️ John Like where would I get it from? Especially when we were live. I don’t have notes in front of me.

⏹️ ▶️ Casey Oh, come now, John. We always have something to follow up on. But did we when we were in

⏹️ ▶️ John Macworld last year? No, I don’t think so. I mean, maybe someone

⏹️ ▶️ John, Casey can look it up and

⏹️ ▶️ John see, but like, certainly I didn’t have a laptop in front of me, right? No, you just had a tremendous

⏹️ ▶️ Marco wallet.

⏹️ ▶️ John No, I mean, like last year at the Macworld studio.

⏹️ ▶️ Casey Yeah, you still had a tremendous wallet, I’m quite sure.

⏹️ ▶️ John I don’t know. It might not

⏹️ ▶️ Casey have been with me. Hey, speaking of wallets, and now we can segue into the follow up that Marco’s trying to avoid.

⏹️ ▶️ Casey We all went to dinner at our dear friend Jason Snell’s house,

⏹️ ▶️ Casey and we left that house, we left Jason’s house, and got

⏹️ ▶️ Casey onto the Interstate Highway Freeway, whatever California calls it. And

⏹️ ▶️ Casey then you had an epiphany, John. Would you like to tell us what that epiphany was?

⏹️ ▶️ John I left my backpack at Jason’s house.

⏹️ ▶️ Casey And somebody pointed out to me, I genuinely don’t remember who it was, and so I’m sorry to

⏹️ ▶️ Casey whomever that is, that at two minutes, excuse me, two hours, two minutes and 45 seconds,

⏹️ ▶️ Casey you explained to us in the last episode how you would never lose your backpack.

⏹️ ▶️ John Did I lose my backpack?

⏹️ ▶️ Casey Briefly, yes, because you said you had no idea. Was it lost? Define lost. You didn’t know where it was within Jason’s

⏹️ ▶️ John house. I did know where it was. It was at Jason’s house. Was I correct in believing it was at Jason’s house?

⏹️ ▶️ John, Casey Yes, I was.

⏹️ ▶️ John Yeah, I guess so. Did I ever wonder where it was? No, I did not. I think you did briefly. No, I knew it was at Jason’s

⏹️ ▶️ John house. house.

⏹️ ▶️ Casey So anyway, I just thought that was very funny that, um, that it turns out that after declaring authoritatively

⏹️ ▶️ Casey that you would never, okay, yes, you said lose, but, but I will take it. Uh, you will never

⏹️ ▶️ Casey, John leave. What do

⏹️ ▶️ John you mean? You’ll take, you will take it by changing the word that I said to a word that makes you right. And then you will bask in that

⏹️ ▶️ John imagined glory.

⏹️ ▶️ Casey This is the internet. This is how these things work.

⏹️ ▶️ John Anyway, I did not lose my back. Even if I had got all the

⏹️ ▶️ John way back to the city, I would still have known exactly where it was.

⏹️ ▶️ Casey That is true. That is true.

⏹️ ▶️ John Maybe you’d have a case if I knew exactly where it was and that knowing was I know where it is it’s

⏹️ ▶️ John on the BART platform. I would give you a strong case for lost at that point because even though I believe

⏹️ ▶️ John it to be on the BART platform it would probably not be there anymore. But Jason is a slightly more trustworthy

⏹️ ▶️ John than the average citizens of San Francisco.

⏹️ ▶️ Marco Well but you know I I think the the big picture here the lesson here is that

⏹️ ▶️ Marco had you owned a wallet that would fit in your pocket you probably wouldn’t have brought a backpack

⏹️ ▶️ Marco to this dinner and it therefore it wouldn’t have been a problem and it wouldn’t have

⏹️ ▶️ John I probably would have bought it anyway I don’t go anywhere it’s like the towel another reference you don’t get don’t go anywhere without

⏹️ ▶️ Casey hitchhikers guide to the galaxy

⏹️ ▶️ John hey Casey read a book all right anyway yeah I’m like that with the backpack

⏹️ ▶️ John even if it’s just for like the little battery pack I have in there to recharge my phone you never know how big is the battery

⏹️ ▶️ John pack

⏹️ ▶️ John, Casey I so showed

⏹️ ▶️ John you a a little tiny Duracell thing you know but I got lots of crap in there I think I even have my iPad in

⏹️ ▶️ John there I don’t

⏹️ ▶️ Marco remember honestly I’m not I’m not trying to like make fun of you here but do you do

⏹️ ▶️ Marco you keep anything in your pants pockets

⏹️ ▶️ John my phone I mean I tried like the six is a little bit big to have in my pocket but

⏹️ ▶️ John generally me and my phone is on me and it’s in my front pocket I don’t like to sit down a lot

⏹️ ▶️ John with it in my front pocket like when I get in the car I tend to fall it’s Bluetooth so I take it out and put it in the little cubby thing

⏹️ ▶️ John for bluetooth thing in the car but yeah basically my phone I guess my keys if I

⏹️ ▶️ John I don’t know yeah my keys if I’m going like if I go to the store I’m not bringing my backpack with me right so

⏹️ ▶️ John my wallet has to go in my pocket when I go to the store or something but that’s not a usual thing but WRC

⏹️ ▶️ John is a different different experience I’m it’s like going out into space you got to get your spacesuit on

⏹️ ▶️ Marco, John I

⏹️ ▶️ Marco could tease

⏹️ ▶️ John him of

⏹️ ▶️ Marco that yeah I can understand

⏹️ ▶️ Casey, John that

⏹️ ▶️ John but anyway I don’t know why you’re arguing this like I agree I I need a thinner wallet and I thank everyone who has

⏹️ ▶️ John sent me all the suggestions for thin

⏹️ ▶️ John, Marco wallets And

⏹️ ▶️ John now I feel slightly overwhelmed by the million possible choices The only thing I know is I don’t want one that

⏹️ ▶️ John makes your money visible on the outside because that makes me uncomfortable

⏹️ ▶️ Casey Yeah, that’s why I like the one that I have which is a UB wallet. Why you be I

⏹️ ▶️ Casey, John and

⏹️ ▶️ Casey you said it’s discontinued Yeah and that’s the thing is after we talked I was like, you know what I should go ahead and order a new one cuz

⏹️ ▶️ Casey some of the elastic after the last couple of years has kind of fallen off or whatever. And it was originally

⏹️ ▶️ Casey a Kickstarter. Then I believe it was either an individual or a company was selling

⏹️ ▶️ Casey it, you know, outside of Kickstarter. And I went looking to try to find it and I could not

⏹️ ▶️ Casey find it anymore. And I’m really bummed about that because part of the beauty of the Yubi was that you had cards on either side

⏹️ ▶️ Casey of the wallet and then there was like a little cubby, if you will. That’s a terrible description, but a little slot

⏹️ ▶️ Casey where you could stick bills. And it was, I thought it was really clever and I really liked it. And

⏹️ ▶️ Casey so now I’m going to have to figure out what you buy, John, and buy one of those for myself,

⏹️ ▶️ Casey because I don’t know what to do now. I can’t get another Yubi.

⏹️ ▶️ John There are a lot of choices, though. Seriously, it’s overwhelming how many. This is not a new

⏹️ ▶️ John trend, the slim wallet thing. But there’s a million of them, and everybody loves the one they have. And I look at them all, and I’m like, they

⏹️ ▶️ John all look very similar. I feel like it’s something I need to see in person. It’ll be difficult to buy online just by

⏹️ ▶️ John looking at pictures. You’ve got to kind of feel it, how squishy it is, it is, how big it really is, how nicely

⏹️ ▶️ John the credit cards fit in and stuff like that.

⏹️ ▶️ Marco Yeah, I don’t know. I personally can very… I’m very happy with my Slimmy wallet

⏹️ ▶️ Marco by a company called Coyono. Don’t call it slimy.

⏹️ ▶️ Marco, John Nope, it’s a Slimmy.

⏹️ ▶️ Marco It’s black outside with red inside. It looks really cool and it’s

⏹️ ▶️ Marco relatively inexpensive. I guess right now they’re selling it for $45 and it’s really

⏹️ ▶️ Marco nice. I’ve been using it now for something like four or five years.

⏹️ ▶️ Casey Yeah, but this is a non-starter for me, though, because it’s a front pocket wallet, and that’s just barbaric.

⏹️ ▶️ John What makes it a front pocket wallet?

⏹️ ▶️ Marco You can keep it in any

⏹️ ▶️ Casey pocket. It says in the URL, slimy, minimal, front pocket wallet.

⏹️ ▶️ John Yeah, but what makes it? Other than the words, what makes it a front pocket

⏹️ ▶️ John, Marco wallet?

⏹️ ▶️ Marco It doesn’t have one of those weird curves in it or anything. It’s still a rectangle.

⏹️ ▶️ John If you put it in your back pocket, it will have one of those curves. That’s true.

⏹️ ▶️ John, Casey Like Casey’s Field Notes. That’s very true.

⏹️ ▶️ Casey Anyway, I’m giving you a hard time about the backpack thing. Just out of fun. I am already

⏹️ ▶️ Casey envisioning all the emails I’m getting about how wrong I am and how right you are because anytime anyone doubts you John the internet

⏹️ ▶️ Casey comes to your defense

⏹️ ▶️ John I’m sorry to ruin your fun with facts

⏹️ ▶️ Marco Ultimately though, you know the wallet is not your problem the it’s the contents of the wallet like you have

⏹️ ▶️ Marco to fix yourself Before you can fix the wallet,

⏹️ ▶️ John obviously, you know Taking stuff out of my wallet now will only help so much because it is a very

⏹️ ▶️ John large wallet So obviously if I got a slim mod, not everything would make it from the old mod to the new one, clearly,

⏹️ ▶️ John right?

⏹️ ▶️ Casey Yep, that’s true. All right, well, anyways, what else? Oh, the

⏹️ ▶️ Casey entire internet wrote to tell us, and we observed ourselves at WWDC, that

⏹️ ▶️ Casey the Notes app, as written by Apple, the backend is now indeed

⏹️ ▶️ Casey iCloud. It is no longer IMAP. Thank you to the entirety of the internet for letting

⏹️ ▶️ Casey us know that, because that is the case.

⏹️ ▶️ John And there’s a one time porting of your data, like kind of like what do they do with that in Yosemite? Like

⏹️ ▶️ John you maybe was like how it flowed a library. I don’t know something else.

⏹️ ▶️ Marco Anyway, you’re talking about the documents moved to iCloud Drive.

⏹️ ▶️ John Oh, yeah, yeah. When they change the storage, the document is, you know, there’s a one time operation. We say, Are you ready to move everything

⏹️ ▶️ John over to the new system? Once you do that, you have two sets of information, one visible on the pre

⏹️ ▶️ John El Capitan systems and one visible on the post and they’re divorced after that. And anyway, so I’m very happy

⏹️ ▶️ John to hear that is not IMAP.

⏹️ ▶️ Marco And specifically, in case you said iCloud, specifically it’s CloudKit, which is worth noting

⏹️ ▶️ Marco because iCloud as an umbrella term has a fairly mixed reliability history because

⏹️ ▶️ Marco some of the parts of it were not that great, like the core data sink or the original document store. A lot of people had

⏹️ ▶️ Marco problems with those. Whereas CloudKit-based things, including the new Photos app and

⏹️ ▶️ Marco a lot of apps written since last year, tend to be pretty well regarded. I don’t think

⏹️ ▶️ Marco anybody has really had major problems with CloudKit it so far. And even like any issue

⏹️ ▶️ Marco people have had with the Photos app, it seemed to be related to the locally running code

⏹️ ▶️ Marco in the app itself, not the cloud backend, which seems pretty solid.

⏹️ ▶️ John That’s another follow-up item. I’m pretty sure I said this to you in person and not on a podcast. This is the problem about seeing

⏹️ ▶️ John each other in person, talking about my experience using Photos on the MacBook One and the Apple Store.

⏹️ ▶️ John How

⏹️ ▶️ John, Marco did it

⏹️ ▶️ John go? Yeah, so I went to the Apple Store finally to see the MacBook One

⏹️ ▶️ John and try the keyboard. I’m not gonna talk about the keyboard now. Maybe we’ll save that for later. Uh, the short answer on the keyboard is,

⏹️ ▶️ John uh, my results were inconclusive. Um, anyway, it also had photos on it. I was trying to make the thing

⏹️ ▶️ John heat up like, oh, it’s fanless, blah, blah, blah. Can I do something to make this heat up? And I immediately thought of running the new photos app.

⏹️ ▶️ John Surely that will make it heat up. It will grind away when it launches and everything like that. Uh, and the Mac book

⏹️ ▶️ John one has a very wimpy CPU. I haven’t looked at the specs, but I’m going to guess that it’s It’s probably

⏹️ ▶️ John in the same ballpark as my Mac Pro, like maybe even slower possibly.

⏹️ ▶️ Marco It might, I mean in parallel tasks it’s almost certainly slower. In single threaded

⏹️ ▶️ Marco it’s roughly equivalent to like a, I think it was like a 2011 era MacBook Air CPU. Right,

⏹️ ▶️ John and that’s what we have here. We actually do run photos on our 2011 Air that’s back there. I can hear the fans

⏹️ ▶️ John whirring now because we’re doing some backup stuff. And I wanted to try it out to

⏹️ ▶️ John heat up the MacBook one. And I was shocked by how incredibly fast and responsive

⏹️ ▶️ John everything was on that MacBook one using photos. I did all my normal stuff.

⏹️ ▶️ John It launched fairly quickly. I went through photos, I selected them, my favorite of them. I added keywords,

⏹️ ▶️ John I added keywords to big selections of things like everything was instant. And the only thing I can think of is their photo library

⏹️ ▶️ John was of course like 2000 photos and minus 60,000. And I the MacBook one does that have eight gigs

⏹️ ▶️ John of RAM? So and it has twice the ramp so I still don’t quite know

⏹️ ▶️ John exactly what it is about my 2011 MacBook Air that is so brutalized my my best guess now

⏹️ ▶️ John is like, you know, I imported from my photos I imported from my photo I assuming it shoved all the

⏹️ ▶️ John metadata into whatever it’s using probably maybe a sequel light database or something maybe all the operations I’m doing

⏹️ ▶️ John cause a database operation that takes a ton of time because my database is stuffed with everything

⏹️ ▶️ John and if I took all these photos out and reimported them fresh with no metadata it would be fast. I don’t know. I’m not

⏹️ ▶️ John excusing the photos app because like I basically did exactly what Apple expected me to do. I bought their program.

⏹️ ▶️ John I use it to store my family photos for years. The new one came out. I did the import process and imported my photos and everything

⏹️ ▶️ John is super duper slow. So I’m disappointed, but I have some amount of hope

⏹️ ▶️ John seeing that it’s it’s obviously not CPU related. I can’t tell if it’s ram

⏹️ ▶️ John related. I’m hoping somehow things get faster in a future version because

⏹️ ▶️ John the experience of using photos when everything is fast is actually not horrible.

⏹️ ▶️ Casey Excellent. The other piece of follow up we have and then I think we’re done is the keyboard

⏹️ ▶️ Casey track pad thing on iOS 9. Is there a name for

⏹️ ▶️ Casey that?

⏹️ ▶️ John Swipe not to type? I don’t know. I think it was called

⏹️ ▶️ Casey quick type. Well, whatever it’s called, whatever that thing is, it apparently does

⏹️ ▶️ Casey work on not only the six plus in the iOS 9 beta, but interestingly the 6

⏹️ ▶️ Casey as well. Serenity Caldwell, friend of the show, has a 6 that she put iOS 9

⏹️ ▶️ Casey on, and it was working on her phone as well, which was slightly surprising to me. Not

⏹️ ▶️ Casey a bad thing, of course, but a little surprising. So we should point that out as well. Are you guys running

⏹️ ▶️ Casey iOS 9 on your carry phones? No. Who would do that? Apparently

⏹️ ▶️ Casey, Marco Serenity.

⏹️ ▶️ John Some people do that, actually. Some people have to do it for a living. We don’t.

⏹️ ▶️ Marco Three or four years ago, I probably would have done that. But no, this year. I have it on my iPad,

⏹️ ▶️ Marco which I hardly ever use, and I keep coming back to it every

⏹️ ▶️ Marco couple of days to do something on it, and the battery is just completely dead. Steven

⏹️ ▶️ Casey Hackett My experience on my beloved RetinaPad Mini — hi, Steven Hackett — is not quite

⏹️ ▶️ Casey that bad, but it is certainly very slow. It is certainly randomly rebooting,

⏹️ ▶️ Casey and I know that because it says when you reboot, you have to enter your passcode once you reboot, blah, blah, blah.

⏹️ ▶️ Casey And it definitely is not getting the battery life I’m used to it getting. However, I do like it.

⏹️ ▶️ Casey And I did use Picture-in-Picture when I was on the plane back from San Francisco. I was watching

⏹️ ▶️ Casey the complications video while doing something else. I don’t recall specifically what. And

⏹️ ▶️ Casey the Picture-in-Picture, even on my now almost two-year-old iPad mini,

⏹️ ▶️ Casey was really, really cool. And it worked reasonably well. The only problem is it only works as with all

⏹️ ▶️ Casey these new hotness features. it only works with Apple apps, or at least that’s been my experience so far. But

⏹️ ▶️ Casey all in all, two thumbs up in principle for iOS 9, one thumb up for the beta so far.

⏹️ ▶️ Marco Our first sponsor this week is Automatic. Automatic is a connected car

⏹️ ▶️ Marco adapter that plugs into your car’s diagnostic port. And then they have smartphone apps that you can

⏹️ ▶️ Marco then do cool stuff with this and integrates with over 20 different apps to give you a better driving

⏹️ ▶️ Marco experience. They’ve sponsored us before. There’s a bunch of new stuff since then. So what it’s always been able to do

⏹️ ▶️ Marco is you pair it with the automatic iPhone or Android app, uh, and then it can do a few cool things.

⏹️ ▶️ Marco It can diagnose your check engine light. It can tell you in plain English what’s going on. It lets

⏹️ ▶️ Marco you clear the error code. If it’s a temporary error, like you let, you know, you let your gas cap open or something like that.

⏹️ ▶️ Marco Um, it can give you a log of your trips and your parking locations. Uh, so you can track things

⏹️ ▶️ Marco like your fuel efficiency. You can never lose your car in a parking lot. If you have an accident,

⏹️ ▶️ Marco it can automatically call emergency services for you to help get you the help that you might need. And then

⏹️ ▶️ Marco it can also evaluate your driving efficiency. It gives you a score, you can match your goals,

⏹️ ▶️ Marco so that you can save money on gas. This can really add up to big savings over time. Now,

⏹️ ▶️ Marco they actually launched their own little app store for the car. They have over 20 apps available,

⏹️ ▶️ Marco and this allows you to use your car’s data in all kinds of ways. So, just a few examples here.

⏹️ ▶️ Marco They have an app called Concur, which lets you pull your trips easily into your expense reports. So

⏹️ ▶️ Marco if you work at a company, Casey, you might have to do things like this. They also

⏹️ ▶️ Marco have integration with If This Then That, IFTTT, which gives you the power to build all kinds of

⏹️ ▶️ Marco recipes based on your driving. Recipes of course is an IFTTT term for various workflows

⏹️ ▶️ Marco and triggers and various things you can do based on certain events or stats that happen while you are driving.

⏹️ ▶️ Marco They also have a developer platform so that you, you developers, can

⏹️ ▶️ Marco build apps using the cars data as well. There’s three levels of data available for developers. There’s a rest

⏹️ ▶️ Marco API, a real-time events API, and a streaming SDK. The rest API

⏹️ ▶️ Marco is very, very full-featured. It has, you can request drivers’ trip histories, distance,

⏹️ ▶️ Marco routes, times, locations, miles per gallon, and then you can even quickly launch your app on Heroku, Casey.

⏹️ ▶️ Marco You can use your dinosaurs or whatever and make that work. Anyway, go to to learn more about

⏹️ ▶️ Marco that. So anyway, back to automatic the device. Check it out whether you’re a developer or not. If you are a developer,

⏹️ ▶️ Marco this is a pretty cool way to do new stuff that you can’t really do without something like this. If you’re not a developer,

⏹️ ▶️ Marco check it out to help improve your driving and to give you all the cool features to maybe to use some of these cool

⏹️ ▶️ Marco apps, use some of the APIs, use some of the triggers, or just look at your metrics and get your measurements or check your engine

⏹️ ▶️ Marco light, stuff like that. Very cool stuff. This is $100, but for us, it’s 20% off.

⏹️ ▶️ Marco slash ATP, that’s slash ATP for 20% off.

⏹️ ▶️ Marco Brings it to just $80. That’s free shipping in just two business days, 45-day return policy,

⏹️ ▶️ Marco and there is no subscription fee per month. You don’t have to pay $5 a month for the service or whatever.

⏹️ ▶️ Marco No, you buy the automatic device up front for $80 with our coupon code,

⏹️ ▶️ Marco slash ATP. $80 up front, and then that’s it. No monthly fee. Ships to you in

⏹️ ▶️ Marco two business days. Check it out. slash ATP. Thanks a lot.

⏹️ ▶️ Casey All right. So we should probably talk a little more about what was released

⏹️ ▶️ Casey and discussed at WWDC to the best of our ability. I don’t know what is and what isn’t NDA’d

⏹️ ▶️ Casey anymore. As

⏹️ ▶️ Marco far as I know, nothing’s NDA’d, right?

⏹️ ▶️ John You can download all the WWDC videos without logging into Apple’s website. So I

⏹️ ▶️ John think we could talk about anything that is in the WWDC videos.

⏹️ ▶️ Casey Excellent. So with that in mind, let’s talk a little bit about the State of the Union and some

⏹️ ▶️ Casey of the stuff that’s been making the rounds over the last couple of days in the really nerdy developer circles,

⏹️ ▶️ Casey specifically around Bitcode. So John, do you want to kind of give us an overview as to what this is?

⏹️ ▶️ John First, like after we recorded our episode of WWDC, I realized that we didn’t talk about Bitcode. I’m like, oh my

⏹️ ▶️ John God, did I totally space on that? Did I forget because we didn’t have any notes and I was just sitting there? And no, because

⏹️ ▶️ John we said we were going to cover the keynote and we went through the keynote and Bitcode was not in the keynote.

⏹️ ▶️ John So that in itself is interesting. This is what I was referring to before, the announcement that I

⏹️ ▶️ John was most excited and intrigued about at WWDC was Bitcode and State of the Union.

⏹️ ▶️ John And for the rest of the week, like boy, I can’t wait to learn more about Bitcode in the sessions. And

⏹️ ▶️ John obviously you can’t go to all the sessions because it’s a multi-track conference. I didn’t go to all the sessions.

⏹️ ▶️ John None of the sessions I went to mentioned the word bitcode, nor I believe did any of them

⏹️ ▶️ John have the word on a slide. I later found out from someone tweeting screenshots that the app thinning session that I did go

⏹️ ▶️ John to previously had bitcode in the description of the session and that was later removed. And having

⏹️ ▶️ John gone to the session, I don’t think bitcode was mentioned there either. So that didn’t

⏹️ ▶️ John tell me much of a bitcode. But the reason I was excited by it is in the State of the Union, a video that

⏹️ ▶️ John we will link in the show notes because everybody can download it and you you don’t have to log in or anything,

⏹️ ▶️ John was that it was going to be a way to have a processor

⏹️ ▶️ John agnostic platform, agnostic-er, slightly more agnostic representation of your

⏹️ ▶️ John application that would be optimized for the specific platform that it’s downloaded for.

⏹️ ▶️ John And this was an intriguing announcement because it freaked developers out and because it is

⏹️ ▶️ John great fodder for speculation about rumors. Right now when you submit an app to the App Store,

⏹️ ▶️ John you compile it, you build a release build, you upload it in some, what is it? It’s all

⏹️ ▶️ John through Xcode, right? I’ve never actually done this, so I don’t know. Marco?

⏹️ ▶️ Marco The regular way to do it is now, it used to be like build an IPA, zip it up, upload

⏹️ ▶️ Marco it through a terrible web interface. Now you leave the terrible web interface to go to Xcode

⏹️ ▶️ Marco to prepare the upload and do it all there. There’s probably a way to do it without that. There’s probably some kind of like advanced

⏹️ ▶️ Marco enterprise tool, yeah. But the way almost everyone does it is through Xcode.

⏹️ ▶️ John But anyway, it does a release build with all your optimizations enabled and it uploads

⏹️ ▶️ John the result to Apple. And that is, you know,

⏹️ ▶️ John obviously it’s signed by Apple and they do some other things with it, but in general, there’s the expectation

⏹️ ▶️ John that the thing you built on your machine, especially for Mac apps where it’s like literally running on the thing, like it’s not,

⏹️ ▶️ John you know, maybe less so for iOS apps where you’re always running into the simulator and then you do the release build and you’re running that on your

⏹️ ▶️ John device or whatever. But anyway, the expectation is the binary that you have made and tested

⏹️ ▶️ John is going to be the binary that lands on people’s computers. And that binary is a compiled binary

⏹️ ▶️ John targeting a specific architecture. You can make it for x86-64, you can make it for ARM7, ARM7S,

⏹️ ▶️ John like it’s all sorts of processors you can target that limit the hardware you can go on. But the bottom line is, you are

⏹️ ▶️ John creating a native binary executable that can run in iOS or OS X

⏹️ ▶️ John exactly as it is. And if you were to do an MD5 checksum, well, maybe not for the signing. I don’t know.

⏹️ ▶️ John I’m trying to express the idea that like, the thing that you debugged on your device, you make a release build, put it on your device

⏹️ ▶️ John and you use it, that’s the same code that’s gonna be executing on somebody else’s device when

⏹️ ▶️ John they download the app from the store. But Bitcode is saying, we’re going to build something that is not native code

⏹️ ▶️ John for any processor, and that’s what we’re gonna have on the store.

⏹️ ▶️ John And at some point in the future, I assume at the point of download,

⏹️ ▶️ John but it really could be almost any time, that code will be converted to native code

⏹️ ▶️ John that is specifically optimized for whatever it happens to be running on. Bitcode itself is not

⏹️ ▶️ John new. It’s part of LLVM since I think version two. Previously, I think they called it bytecode.

⏹️ ▶️ John I don’t know if it ever was bytecode, or the difference is how the stream format is made. But either way, it’s just a binary,

⏹️ ▶️ John compact binary representation of LLVM IR, which is the intermediary representation.

⏹️ ▶️ John And boy, there’s a lot of acronyms for explainer. LLVM originally was an acronym that stood low-level

⏹️ ▶️ John virtual machine. Now LLVM encompasses a much larger project that’s kind of a misnomer at this

⏹️ ▶️ John point. But LLVM IR really is kind of assembly code for an imaginary

⏹️ ▶️ John processor with some vaguely idealized characteristics. I guess we’ll

⏹️ ▶️ John link to my Swift thing, I think I talk about LLVM IR in there. So bitcode is just LLVM IR but

⏹️ ▶️ John instead of looking like text it is a compact representation. If you can think of compiling your code

⏹️ ▶️ John starting from source code and it being transformed several times until eventually ends up at a binary. LLVM

⏹️ ▶️ John IR is slightly before it’s changed into machine code. So they’re

⏹️ ▶️ John saying we’re going to turn your program into LLVM IR and code that LLVM IR as bitcode and that’s what we’ll

⏹️ ▶️ John have on the store. And when someone, again we don’t know when this is going to take place, I assume

⏹️ ▶️ John it’s on download, but you could take that bitcode and download it to everyone’s device and when they run it it

⏹️ ▶️ John could be compiled just in time for their particular architecture. I assume they’re going to do it when you download it.

⏹️ ▶️ John So that’s the technical gist of what they’re doing here. Again, they didn’t talk a lot about it, so we don’t know

⏹️ ▶️ John when this is all going to take place. Bitcode is, I’m going from memory here, mandatory

⏹️ ▶️ John for native WatchKit apps, is that correct?

⏹️ ▶️ Casey I believe that’s right.

⏹️ ▶️ Marco And it said optional for iOS apps for now.

⏹️ ▶️ John Yeah, and it didn’t say anything about the Mac, but I mean, there is nothing technical

⏹️ ▶️ John that makes Bitcode not able to work on the Mac or that means it would have to be mandatory

⏹️ ▶️ John on the Watch. These are policy decisions. And it’s, you know, but why is it mandatory in the watch? Well, that’s the newest platform.

⏹️ ▶️ John Nobody has made a native app for the watch except for Apple. So it’s not like it’s a big change.

⏹️ ▶️ John It’s like, look, this is just the way it is in the watch. You’re going to submit bit code, right? All right. Your release bills are going to are

⏹️ ▶️ John going to upload bit code to us. And then everyone else who gets it is going to get a a

⏹️ ▶️ John executable binary optimized for the particular piece of hardware they have it on. So when they made

⏹️ ▶️ John this announcement in the keynote, I made a bunch of silly tweets about this

⏹️ ▶️ John you know could the obvious rumors people are going to say is oh my god this means RMAX because if you’re trying

⏹️ ▶️ John to change the the application representation to be this thing that’s

⏹️ ▶️ John not specific to any one processor and then you optimize it on the fly then you could change the processor architecture at any time

⏹️ ▶️ John right and then you would just recompile this bitcode for the new architecture so if they if they got everyone on to bitcode and they

⏹️ ▶️ John changed to RMAX developers wouldn’t even need to rebuild their apps and resubmit and you wouldn’t need to have fat binaries it would just

⏹️ ▶️ John be everything is bitcode and and then you download it to your ARM Mac and it turns it into an ARM executable and you download it

⏹️ ▶️ John to your x86 Mac turns into x86 executable. That is the immediate fantasy

⏹️ ▶️ John rumor when people hear about bitcode. Unfortunately, as fun as that would

⏹️ ▶️ John be to speculate about, that’s not really how LLVM IR and bitcode work. LLVM IR,

⏹️ ▶️ John although it is kind of imaginary assembler for an imaginary processor it has things in it

⏹️ ▶️ John that are specific to an instruction set or an architecture

⏹️ ▶️ John it’s not completely pinned down but it’s it’s not the type of thing where I think you brought

⏹️ ▶️ John this up when we’re talking about with the ND in this and my research I’ve determined that there is much

⏹️ ▶️ John more instruction set specific stuff in LVR IR than

⏹️ ▶️ John you would imagine and it’s not as trivial to say well the LVR is completely processor agnostic and when we turn into

⏹️ ▶️ John machine go, we can turn into machine code for any processor. That seems not to be the case. I’ve been trying to find

⏹️ ▶️ John out what what are the the nature and number of those things like that? You know, what

⏹️ ▶️ John is it about LVM are that that’s pinned down to a particular instruction set and how deep does it go?

⏹️ ▶️ John I haven’t been able to find any any good examples of looking at the point I’m looking at the LVM source code. I realize

⏹️ ▶️ John I’m in over my head. I don’t quite understand. But anyway, if you are entertaining fantasies of of bit code

⏹️ ▶️ John meaning that if all our apps are updated to bitcode they can change processes

⏹️ ▶️ John without any problem that as far as I can tell is absolutely not the case so the next

⏹️ ▶️ John question is why the hell does bitcode exist if not for my fantasy scenario

⏹️ ▶️ John of enabling our Macs

⏹️ ▶️ Marco guys have any theories well I mean there’s a lot of other optimizations they could do like you know

⏹️ ▶️ Marco maybe maybe they this would just help them first of all there’s like just better optimizations

⏹️ ▶️ Marco for the next step. You know, I don’t know. I don’t know quite how low level the bitcode is, but

⏹️ ▶️ Marco I imagine it’s not just like a text version of assembly code. Like I imagine it’s like

⏹️ ▶️ Marco a little bit higher than that. So, you know, if if they develop new optimizations for

⏹️ ▶️ Marco thing for how they translate that into the assembly language, even within the same CPU family, just over time,

⏹️ ▶️ Marco they develop some cool optimization, they can then apply that to apps. More significantly, probably

⏹️ ▶️ Marco they could, you know, when when you move, when you make a minor update within

⏹️ ▶️ Marco a CPU architecture, do you go like, you know, from, you know, arm v7

⏹️ ▶️ Marco s to arm v7 k, or you know, what, like, whatever, I don’t know all those code names

⏹️ ▶️ Marco and which ones are minor, but, you know, or, you know, like when Intel releases a new CPU

⏹️ ▶️ Marco with new streaming instructions, new vector instructions, like, you know, if there’s a way for them to

⏹️ ▶️ Marco use bitcode to retroactively optimize apps for new instructions

⏹️ ▶️ Marco and things like that for more minor CPU revisions, that could be

⏹️ ▶️ Marco useful. I don’t know how useful that is as a percentage of overall performance.

⏹️ ▶️ Marco I don’t see why this is

⏹️ ▶️ Marco worth the trouble yet. I think over time, we will see why it’s worth the trouble. Right now,

⏹️ ▶️ Marco it is not immediately apparent because you’re right. big changes would involve things like

⏹️ ▶️ Marco byte order changes where like that that’s a that’s a bigger problem and this can’t

⏹️ ▶️ Marco automatically deal with that properly just because of the level at which byte order assumptions happen this can’t do

⏹️ ▶️ Marco it

⏹️ ▶️ John I think it’s even deeper than that I think even if even if you had an architecture that had the same byte order that LLVM IR

⏹️ ▶️ John still pins things down with a target architecture in mind because that representation is the

⏹️ ▶️ John thing that the optimizer can work on it’s like it’s marked up more than assembly would be like the thing that consumes

⏹️ ▶️ John LLVM IR and outputs machine code. It knows much more about the structure

⏹️ ▶️ John of things because LLVM IR is sort of annotated with much more information that assembly would be to set to

⏹️ ▶️ John indicate, you know, types and from whence each bit of code came

⏹️ ▶️ John and

⏹️ ▶️ John, Marco you know

⏹️ ▶️ John what a function is and all like it’s not just it’s not just a an ASCII representation

⏹️ ▶️ John of machine code far from it. So that’s that’s why the thing that produces a machine code can optimize

⏹️ ▶️ John it in ways that you can’t optimize if you just have a.s file and say oh no optimize that there’s lots of optimizations you can’t

⏹️ ▶️ John do to plain old assembly because you just don’t know enough about the meaning of the original program it’s like well

⏹️ ▶️ John this assembly does what it does I don’t know if it’s safe to make this transformation but LVM IR has

⏹️ ▶️ John more information about it um before we get into like the worth the trouble like probably into the trouble

⏹️ ▶️ John aspect of it um it’s interesting to think about why this is even possible

⏹️ ▶️ John or a thing. This is only possible if only feasible because

⏹️ ▶️ John Apple controls the means of distribution for all iOS and watch applications

⏹️ ▶️ John setting aside jailbreak and blah blah blah right. That means that they can

⏹️ ▶️ John they can mandate this and say guess what you’re going to submit bitcode for the watch you know like all right I guess I’m going to submit bitcode

⏹️ ▶️ John for the watch and be they know where everybody’s getting their WatchKit apps from. So

⏹️ ▶️ John if the only source for WatchKit apps only ever has bitcode, any

⏹️ ▶️ John benefits which we’ll talk about in a second that they might have will benefit the entire platform.

⏹️ ▶️ John It’s not like, well, it’ll benefit like on the Mac, well, it’ll benefit for people who download from the Mac App Store, but

⏹️ ▶️ John people can put DMGs up on their websites that do or don’t have bitcode in it. So

⏹️ ▶️ John you’re not getting that advantage across the platform. But for iOS and the watch, whatever

⏹️ ▶️ John benefits Apple think is getting, it gets everywhere. iOS, of course, would have to go through a conversion. The watch

⏹️ ▶️ John will be bitcode, all bitcode from the beginning. So

⏹️ ▶️ John lots of interesting things become possible when all of your software funnels through a single point.

⏹️ ▶️ John Lots of good things and bad things. And I think Apple is hoping this is one of the good things.

⏹️ ▶️ Marco And the bad things, I think, about bitcode, what scares me as a developer,

⏹️ ▶️ Marco you know, like a lot of developers are saying, well, this is going to change my binary. I’m worried about crashing and stuff like that. That’s valid.

⏹️ ▶️ Marco I’m not necessarily worried about that myself. Although that does introduce an interesting problem

⏹️ ▶️ Marco of this would then re like, you know, if if this is say crashing

⏹️ ▶️ Marco on an iPhone 5s and you don’t have an iPhone 5s because now that’s old

⏹️ ▶️ Marco and you don’t have one anymore, you never got one to begin with, then you might have to go get an iPhone 5s just

⏹️ ▶️ Marco to even reproduce the crash if you’ll even be be able to. So that’s a problem. I think that’s a minor

⏹️ ▶️ Marco one though. To me, the bigger problem here is if you

⏹️ ▶️ Marco look at, you know, what you mentioned earlier about how, you know, developers want to be able to build

⏹️ ▶️ Marco their final binary, ship it to Apple, and then have Apple ship that to devices so they

⏹️ ▶️ Marco know the final bits they’ve built. In reality, that has never quite been the case because

⏹️ ▶️ Marco of code signing. And even though it’s not technically part of the app binary. It’s an important

⏹️ ▶️ Marco enough part that every so often as I ran into with it’s paper on time ago and as as

⏹️ ▶️ Marco still happens with somebody every few months every so often code signing

⏹️ ▶️ Marco breaks on Apple side and something goes wrong where apps reach the App Store

⏹️ ▶️ Marco with invalid code signing by Apple and so what happens to the user

⏹️ ▶️ Marco is they tap to open them and they appear to just crash immediately on launch. You might

⏹️ ▶️ Marco see the launch default image, but for the most part they just crash

⏹️ ▶️ Marco on launch. They appear to be at least. In reality, code signing is just failing and exiting. But

⏹️ ▶️ Marco every so often, you have this problem as a developer where your app crashes because

⏹️ ▶️ Marco Apple messed up while modifying it on the way to the store. Bitcode is now giving

⏹️ ▶️ Marco them another way to do that. It’s giving them another opportunity for things to

⏹️ ▶️ Marco go wrong. That worries me is not that that a bit code abstraction

⏹️ ▶️ Marco would be insufficiently tested that a bit code optimization you know would go wrong. What worries

⏹️ ▶️ Marco me is like now there’s another step between me and the customers regardless of what

⏹️ ▶️ Marco that step is. There’s another step that can cause problems when it breaks and I’m

⏹️ ▶️ Marco not gonna not even use it if it breaks and we know these things break sometimes. That is what is

⏹️ ▶️ Marco the big risk here is like yet another thing that Apple is going to modify about my app on the way to the customers

⏹️ ▶️ Marco that might occasionally go wrong.

⏹️ ▶️ John Yeah, that’s what developers are wary about is it’s a loss of control like already, you know, you’re not

⏹️ ▶️ John controlling who your app is distributed to and so on. So from a technical perspective, you always want to,

⏹️ ▶️ John you always want to have the ability to have the exact same thing running for the customers have even if you can’t actually communicate

⏹️ ▶️ John with them, you want to know you want a predictable chain of events. And

⏹️ ▶️ John there’s always parts that are not particularly… even though Xcode is running on your system, you don’t know the internals of the compiler,

⏹️ ▶️ John there could be a compiler bug in a point release of Xcode that hosts your binary that somehow makes it run. You know, there’s always

⏹️ ▶️ John bugs, but adding more of those things makes developers feel uncomfortable. And it’s uncertainty. Like,

⏹️ ▶️ John we’ve been battling with code signing for tons of years now, and it drives people crazy for a variety of reasons,

⏹️ ▶️ John but this just adds another thing. So is this going to be worse than code signing is in terms of things you have to fight with? I think it will probably

⏹️ ▶️ John be better just because especially in the short term, this is just sort

⏹️ ▶️ John of stopping short of that final step, targeting at this point a single

⏹️ ▶️ John architecture because there only is one Apple watch, right? So there’s some runway for them to work out the kinks in this,

⏹️ ▶️ John uh, because the idea is like, well, I don’t know how it’s going to be. Well, you will know how it’s going to be built because when you upload the bitcode to the store,

⏹️ ▶️ John it’s going to convert it to a binary exactly the same way it does in your system because everybody has the same watch because there’s only one watch,

⏹️ ▶️ John right? So it’s an ideal platform to test this out on. What people are worried about is, I tested on all my devices,

⏹️ ▶️ John but like you said, when the bit code gets converted to the A5, it turns out the optimizer does something bad on

⏹️ ▶️ John the A5, and it crashes, and I don’t have an A5 device. Maybe that would still happen with the binary,

⏹️ ▶️ John but you’re not entirely sure. Like, for example, if the compiler emitted an instruction that has

⏹️ ▶️ John bad performance characteristics or reveals a bug or something on the A5, you wouldn’t

⏹️ ▶️ John know that unless you ran it on an A5. So not having an A5 could be a problem in all situations

⏹️ ▶️ John Trying to think about why Apple would want to do this again. I’m basically ruling out Oh,

⏹️ ▶️ John this makes it this makes us able to change processor architectures easily. I don’t think this is

⏹️ ▶️ John helps or hurts in that regard but Apple does change

⏹️ ▶️ John as Margo said the Minor parts of the architecture they make their own chips essentially

⏹️ ▶️ John at this point different chips have different vector units, maybe they add an

⏹️ ▶️ John instruction here or two, maybe they tweak something, maybe they

⏹️ ▶️ John try to change one of their underlying frameworks or libraries

⏹️ ▶️ John to do something smarter on the new A9 or the A10 or

⏹️ ▶️ John the A11. All these things might seem like minor concerns but from Apple’s perspective

⏹️ ▶️ John if they do something really cool in A10 and they, you know, change around a

⏹️ ▶️ John bunch of things having to do with like number of registers, pipeline depth, size

⏹️ ▶️ John of the vector units, like a new specialized instruction for a particular thing.

⏹️ ▶️ John They’re helpless to change all the, what is it, millions? I don’t know how many apps there are on the

⏹️ ▶️ John App Store. Lots and lots of apps on the App Store that are already compiled into machine code.

⏹️ ▶️ John And there’s nothing they can do short of nagging developers saying, hey, your app,

⏹️ ▶️ John not so much would run faster, but your app would be much kinder to our battery if you would just recompile it because

⏹️ ▶️ John actually all of this, whatever core audio, core image, whatever, like VDSP,

⏹️ ▶️ John whatever little library you’re using on in your app. If you could

⏹️ ▶️ John recompile it for the A10, it would be much nicer for battery life or for the S2 or for the S3

⏹️ ▶️ John or whatever. I’m thinking mostly in terms of battery life, not performance, because that’s where Apple been concentrating

⏹️ ▶️ John these days, and they have no leverage to do that. So Apple, you know, is such a control freak as a company,

⏹️ ▶️ John but like, you know, it makes their products better. How can they convince a million developers to rebuild their apps? They can’t.

⏹️ ▶️ John And people will just keep downloading apps. They keep slaughtering their batteries. Even though Apple has done this super hard

⏹️ ▶️ John work in the A9, A10, A11 or whatever, S1, S2, S3, S4, to try to make

⏹️ ▶️ John a more battery efficient architecture. And because they do control the means of distribution of all the apps,

⏹️ ▶️ John apps. Like we’ve got all these apps, we’ve got all these binaries, but they’re not taking advantage of all this hard work we’re doing. Ah, but

⏹️ ▶️ John on the watch, if they make a bit code from day one, they can be assured that if they make the S2 or the S3 massively

⏹️ ▶️ John more battery efficient by tweaking the particular instructions that they have, that they don’t need developers to rebuild their

⏹️ ▶️ John apps. They will do it. They will, when they optimize the bit code to make the native binary

⏹️ ▶️ John for the S3, they will do the transformation that uses the new instructions that are nicer on the battery

⏹️ ▶️ John on the S3. So your same app that you didn’t have to recompile that you never looked at that you just put in the store or whatever

⏹️ ▶️ John your you know, Little doohickey or and probably not gonna be a lot of games but that would be the ideal case

⏹️ ▶️ John will suddenly be more battery efficient on the s3 without you having to do anything and That may

⏹️ ▶️ John seem like a minor thing But I think that is more than enough reason for

⏹️ ▶️ John Apple to want to do this because this is exactly what they always want to Do what what can only Apple do only Apple makes

⏹️ ▶️ John its own CPUs makes its own compiler or controls the distribution of all the

⏹️ ▶️ John applications. Like, they have the complete package here. And this is one of those things you can do when you have the complete package. And

⏹️ ▶️ John I think that’s probably much more exciting for Apple than it is for us on the

⏹️ ▶️ John outside. And I think Apple is going to endure the potential

⏹️ ▶️ John scariness for developers. I mean, they’ve proven they’ll do it with sandboxing. They’ll do it with

⏹️ ▶️ John code signing. The developers will endure it because that’s where the customers are and that’s where the money

⏹️ ▶️ John is. You got to do what you got to do. But I definitely think this is the most interesting and

⏹️ ▶️ John probably least understood, including by me because Apple said nothing about it, announcement at WWDC.

⏹️ ▶️ John And I’m very interested in learning more about it from anyone who’s willing to tell me anything about it.

⏹️ ▶️ Casey Now, I think you hit the nail on the head, John, that basically this is about keeping keeping their options open. And Apple

⏹️ ▶️ Casey tends, from what we can tell, to like to keep their options open. So I’m curious to see,

⏹️ ▶️ Casey like you said, where this goes. And if we’ll ever hear of a time where Apple says,

⏹️ ▶️ Casey which I doubt, but, you know, oh, hey, this is all possible because of bit code. You know, we’ve all kind of realized that,

⏹️ ▶️ Casey say, iPad multitasking is possible because of auto layout and size classes. And that’s

⏹️ ▶️ Casey kind of been a wink and a nod from Apple that has

⏹️ ▶️ Casey indicated, well, obviously, we could all put it together, but also indicated that. So I’m anxious

⏹️ ▶️ Casey to hear more about this as time goes on. I don’t know.

⏹️ ▶️ John I wonder if they’ll even mention it again, but like in terms of like, Oh, future possibilities. It’s not so much future

⏹️ ▶️ John from Apple’s perspective because the, you know, the a nine, the S two, the S three, the eight, 10, those are all

⏹️ ▶️ John real things inside Apple with like probably, you know, some of them probably done. Some of them have designed. So

⏹️ ▶️ John if they’re going to fiddle with some instructions for battery efficiency, those instructions already exist.

⏹️ ▶️ John They’re already in that situation where they say, when we released the S two, all of our watch binaries

⏹️ ▶️ John are not going to take advantage of these great new instructions that we’ve that we’ve added or that we’ve tweaked

⏹️ ▶️ John or these new execution units or the different register layered or whatever, because the machine

⏹️ ▶️ John code has already been built and the loops have already been unrolled and all that stuff.

⏹️ ▶️ John We can’t rely on the rename registers to do all the shuffling for us. If only we could rebuild all the watch

⏹️ ▶️ John binaries, take advantage of what we know is going to be a great feature of the S2 or S3, because it’s already done. They already have

⏹️ ▶️ John those features. So from our perspective, it’s like, oh, let’s open up possibilities. from Apple’s perspective is we’re

⏹️ ▶️ John doing this now because we know for sure because we’re making the chips that we don’t want a bunch

⏹️ ▶️ John of binaries built for the S one to be stuck in the store for years and years because we can’t get developers

⏹️ ▶️ John to reconfile them on an iOS. Again, they have to transition that and the Mac, they’re stuck

⏹️ ▶️ John in a situation where the bottom line is, I don’t know if it’s most, but certainly not all

⏹️ ▶️ John Mac software comes from the Mac app store. So I’m not sure what they’re going to do there. But like I have this technology,

⏹️ ▶️ John they could do it in the Mac App Store. They are doing it on iOS and the watch. It just seems like it has less

⏹️ ▶️ John of an advantage there. And frankly, they don’t care that much, it seems, probably, on the Mac. Like, oh, you

⏹️ ▶️ John want to rebuild your binaries to take it, because they don’t make the CPUs. Intel does. And so they’re

⏹️ ▶️ John not as privy to Intel’s roadmap as they are to the A line of processors.

⏹️ ▶️ Marco I wonder also how much of this is in response to and preparation

⏹️ ▶️ Marco for the world we live in now, which is like back in the olden days, you know, 2008, 2009, early days of the App

⏹️ ▶️ Marco Store, Apple could announce any change really, or at least any new hardware,

⏹️ ▶️ Marco and a very large portion of apps in the store would be updated within a reasonable amount of time

⏹️ ▶️ Marco to account for that, to accommodate that. They could release like, you know, they released the

⏹️ ▶️ Marco iPad, and developers adapted to that. They eventually released, you know,

⏹️ ▶️ Marco even as recently is the iPhone 5. They would release a new screen size and most

⏹️ ▶️ Marco apps got updated relatively quickly to it. But I think as we’re seeing, the rate of

⏹️ ▶️ Marco that is slowing down dramatically. So now we have apps like the iPhone 6 is now

⏹️ ▶️ Marco almost a year old and 6 plus. They’re now almost a year old. We’re

⏹️ ▶️ Marco seeing apps from people who have a lot of users but don’t necessarily care about

⏹️ ▶️ Marco their apps like banks. We’re seeing apps like… I still have so many

⏹️ ▶️ Marco apps on my phone from companies that have plenty of resources to update them that

⏹️ ▶️ Marco don’t even run natively on the iPhone 6 screen. Still. Some of them are

⏹️ ▶️ Marco even adding other features. Like I think somebody said their bank supports Apple Pay now, but

⏹️ ▶️ Marco their app still doesn’t support iOS 6, or I mean the iPhone 6 screen. Like

⏹️ ▶️ Marco there are so many of these things, and The way Apple usually adds these new features or new support

⏹️ ▶️ Marco to apps is they build in some kind of compatibility mode where the app just scales to the new screen size

⏹️ ▶️ Marco or whatever the case may be, or it doesn’t get the new features or whatever. And

⏹️ ▶️ Marco only apps that are built with the new SDK that are compiled against the

⏹️ ▶️ Marco new SDK, only they get the new features. And they do this so that when you update OSs, a whole

⏹️ ▶️ Marco bunch of apps don’t break. limitation or the downside to this is like right now

⏹️ ▶️ Marco everyone’s installing the beta of iOS 9 on their iPad Air 2s to try split-screen

⏹️ ▶️ Marco and none of the third-party apps work yet because only third-party apps are built with

⏹️ ▶️ Marco the week-old iOS 9 SDK and that are somehow now available

⏹️ ▶️ Marco to their customers which can’t even exist in the App Store yet it’s only through test flight only those

⏹️ ▶️ Marco will be running in split-screen mode and so you have this new feature and then And when

⏹️ ▶️ Marco iOS 9 is released this fall, presumably with a larger iPad also,

⏹️ ▶️ Marco the vast majority of iPad apps out there are not going to be compatible with these new features.

⏹️ ▶️ Marco They might not be compatible with the new iPad screen size. And that hurts

⏹️ ▶️ Marco Apple. It hurts Apple’s hardware ambitions and pushing the roadmap forward

⏹️ ▶️ Marco and pushing the software SDK forward. it hurts them that so many apps are

⏹️ ▶️ Marco not being updated in a reasonable amount of time to their new stuff. So they have to come up with ways

⏹️ ▶️ Marco to to increase the chance that they can just opt everyone in rather than right now where everyone

⏹️ ▶️ Marco gets opted out of new changes. And so one of those things is auto layout. One of those

⏹️ ▶️ Marco things is launch image storyboards instead of just flat images.

⏹️ ▶️ Marco And maybe Maybe Bitcode is part of that too, in what is probably a small way, but

⏹️ ▶️ Marco it has to be related because this is a big problem Apple faces in the app library these days.

⏹️ ▶️ Marco I see it only getting worse in the future, not only as the economics of the app store get harder,

⏹️ ▶️ Marco but also as Apple seems to be increasing the rate at which they are

⏹️ ▶️ Marco adding new device capabilities, adding new screen sizes. the watch maybe

⏹️ ▶️ Marco when you know watch OS 3 comes out next year presumably

⏹️ ▶️ Marco you know the watch layout is so simple it’s this kind of like stack view based hierarchy like

⏹️ ▶️ Marco it like what you get on the watch layout wise UI wise is so simple that if they added a new

⏹️ ▶️ Marco watch screen size next year or that you know this fall or spring or whatever if

⏹️ ▶️ Marco they add a new screen size to the watch they might be able to just opt everyone in they might

⏹️ ▶️ Marco not have to do the default opt out and then scale it to some stupid, stupid blurry resolution. They might be able to just

⏹️ ▶️ Marco opt everyone in and it just works because apps are so limited in what they could do layout wise. They’ve been beating

⏹️ ▶️ Marco us over the head from day one with WatchKit saying don’t assume a screen size and with things like bit

⏹️ ▶️ Marco code and auto layout and you know like maybe this is all going towards that goal.

⏹️ ▶️ Casey Only time will tell. But what else is awesome

⏹️ ▶️ Marco these days? Our second sponsor this week is Squarespace. Squarespace, build it

⏹️ ▶️ Marco beautiful. You can build so many times so many kinds of websites with Squarespace, it is so hard

⏹️ ▶️ Marco to justify building a website any other way for so many types

⏹️ ▶️ Marco of things. So let’s say you’re building a site for yourself, you know, you have a blog, a portfolio,

⏹️ ▶️ Marco maybe you’re a photographer, you have a photo portfolio, what my wife uses it for that, and she loves it. You know, maybe you

⏹️ ▶️ Marco have a restaurant or business, you want to cite for that. If you want, you know, if

⏹️ ▶️ Marco you want to have a store where you sell t shirts, you can do that. If you want to have,

⏹️ ▶️ Marco know, a site for a book or an album or whatever, you can do all this with Squarespace. There are

⏹️ ▶️ Marco so many kinds of sites you can make with Squarespace. Now, I’ve used a lot of tools for building websites before

⏹️ ▶️ Marco and I can build my own websites from scratch. I know how I know how to run servers, but in so many cases

⏹️ ▶️ Marco it’s just not worth it. Even for geeks like us, it is so often just worth

⏹️ ▶️ Marco hosting it on Squarespace rather than setting up your own server somewhere or building your own CMS from scratch.

⏹️ ▶️ Marco It is it is so really worth doing that. So, Squarespace makes it simple, powerful,

⏹️ ▶️ Marco and beautiful to make websites. They have a robust and reliable platform, state-of-the-art technology

⏹️ ▶️ Marco powering your site. They ensure maximum stability under load. If you get like slammed by

⏹️ ▶️ Marco a big traffic load, they will keep your site up. They have maximum security. You don’t have to worry about your site getting

⏹️ ▶️ Marco hacked. I don’t think I’ve ever heard of a Squarespace hack, honestly. I certainly can’t remember one,

⏹️ ▶️ Marco which is pretty impressive for a service that size. All their designs are beautiful

⏹️ ▶️ Marco and professionally designed and they’re all responsive. So your design looks great on every device, every

⏹️ ▶️ Marco time. The screen sizes change over time and as new things are added, Squarespace

⏹️ ▶️ Marco is on top of it. As I mentioned earlier, if you want to have a store with commerce, you can

⏹️ ▶️ Marco sell digital or physical goods. It’s all included in the platform. So check all

⏹️ ▶️ Marco this out. There’s so much you can do in Squarespace. Everything is Wysiwyg. You know, what you see is what you get. I don’t know if I’m allowed

⏹️ ▶️ Marco to pronounce that like that, but I’m gonna say Wysiwyg. Everything is WCWig, everything,

⏹️ ▶️ Marco you know, you can drag and drop and you can move things around, or if you wanna actually inject code,

⏹️ ▶️ Marco you can do that too. You can write and mark down if you want to. Really cool stuff, check

⏹️ ▶️ Marco it out. Now, normally they offer a, they have a free trial with no

⏹️ ▶️ Marco credit card required. Now, they have a special deal now. If you start your trial soon,

⏹️ ▶️ Marco before June 30th, if you sign up for Squarespace’s Professional or

⏹️ ▶️ Marco business plan, you will get a free year of custom email and business tools

⏹️ ▶️ Marco when you sign up. So start your free trial now to get into this deal before June 30th,

⏹️ ▶️ Marco and then when you buy, you can get the free year of custom email and business tools for the professional or

⏹️ ▶️ Marco business plan. So check it out. Otherwise, if you don’t need that or if you missed the deadline, don’t

⏹️ ▶️ Marco worry, try it anyway. Go to, use offer code ATP to get 10%

⏹️ ▶️ Marco off your first purchase and to show your support for our show. So once again,,

⏹️ ▶️ Marco start a free trial, no credit card required, it’s great. Build a site, see if you like it. If you do

⏹️ ▶️ Marco like it, use coupon code ATP for 10% off your first purchase. Thank you very much to Squarespace,

⏹️ ▶️ Marco build it beautiful.

⏹️ ▶️ John I just wanna save you from feedback that you may get, Marco, after your last talk about the analogy

⏹️ ▶️ John between size classes and all of that stuff.

⏹️ ▶️ John, Marco Oh no.

⏹️ ▶️ John Marco was not suggesting that Bitcode will allow your applications to run at different screen sizes. He was making

⏹️ ▶️ John an analogy. Right,

⏹️ ▶️ John, Marco and I’m saying, I think it’s

⏹️ ▶️ Marco part of this overall picture of

⏹️ ▶️ Marco trying to get to the point where Apple can make a new device that might

⏹️ ▶️ Marco have a new screen size, that might have a new CPU. They can make a new device and they can opt apps

⏹️ ▶️ Marco into the new features rather than right now, where apps are all opt out until they’re built to the new SDK.

⏹️ ▶️ John Yeah, Apple’s getting much better at that. Because you can feel Apple’s frustration of, I mean, they kind of did it

⏹️ ▶️ John to themselves. Like, well, what do you mean, an iPhone SDK? I guess here let’s slap this together like it was

⏹️ ▶️ John you know it’s Everything was fixed size and they change the screen size and they had you know it’s like they’re working

⏹️ ▶️ John as we said in pastures They’re working the way up to what they have now Which is a much more flexible layout system that can lend itself to

⏹️ ▶️ John its features like splitscreen But it took them a long time to get there But it’s really hard to do that like even on the watch like you said the

⏹️ ▶️ John watch UI is so limited Surely the people doing the watch getting everything like keep in mind

⏹️ ▶️ John that screen sizes may change So we should do everything we can because we’ve done this we’ve been through this once before

⏹️ ▶️ John so in the watch get thing make sure we do everything so that nothing is fixed size, nothing is specified in those,

⏹️ ▶️ John you know, like just really keep a very limited API. But

⏹️ ▶️ John even then, it’s so hard to do things in a general way. It’s not like they’re trying not to telegraph future stuff there. It’s just

⏹️ ▶️ John so hard to do everything in a general way. And a good example is what was it? One of the sessions they were talking about the

⏹️ ▶️ John the complication sizes and the graphics that you can include. And it was like you can include one graphic for 38 millimeter

⏹️ ▶️ John size, one graphic to the 48mm size and then an at 2x size. And they said, you know,

⏹️ ▶️ John if you don’t include any of the other ones, we’ll just fall back to at 2x. Also, if there’s a watch that is not 38

⏹️ ▶️ John and not 42mm, we’ll use the 2x.

⏹️ ▶️ John And so they don’t want to say we’re going to make a 38, a 42, and a 46 because that would

⏹️ ▶️ John tell you we’re going to have a 46, but at the same time, if they come out with a different watch size,

⏹️ ▶️ John good app developers are going to want to make a pixel perfect native size for the new watch

⏹️ ▶️ John size. So because they don’t know what that watch size is, they just have one kind of fallback that they can kind of use in a pinch. So,

⏹️ ▶️ John you know, it’s better than not having a fallback. It’s better probably than scaling the 38 or the 42 size up.

⏹️ ▶️ John But, you know, it’s just so, there are some things that just have to be fixed for the device

⏹️ ▶️ John that you’re doing, particularly artwork, because, you know, the whole fantasy back in the day was like, everything will be vectors and it will look good, but that’s

⏹️ ▶️ John not the reality of pixel art, you know. Good UI designs, especially when they’re microscopic

⏹️ ▶️ John like they are on the watch, someone’s got to sit in there with the individual pixels and lay them out. If they come up with a new size,

⏹️ ▶️ John having something scaled is better than nothing but you’re going to have to go through and change it anyway. And I mean, it just goes to like

⏹️ ▶️ John this, you can’t make it so that we can do anything and all your apps will run perfectly and take advantage of all the new features,

⏹️ ▶️ John they’re just trying to do everything they can. And bitcode is the hardware side of that, like under the covers we keep doing

⏹️ ▶️ John a bunch of crap down there and we hate the fact that your binary that you haven’t updated in two years is going to be plunking

⏹️ ▶️ John onto people’s phones because they love your game or whatever and

⏹️ ▶️ John, Casey or feet.

⏹️ ▶️ John Yeah. So that’s all like the motivation

⏹️ ▶️ John for Apple to do this is so clear to me and the the discomfort from developers.

⏹️ ▶️ John I don’t I don’t want to make a prediction, but I’m really hoping that it turns out to be mostly a

⏹️ ▶️ John non issue in the same way that you know, like compiler bugs and stuff like that or even code signing difficulties like

⏹️ ▶️ John In the grand scheme of things, app review policies feel like a much

⏹️ ▶️ John larger both potential and actual damage to the experience of developers than bugs. Because bugs get

⏹️ ▶️ John fixed. Even when they did that thing with the code signing, that was pretty much the biggest disaster you could possibly imagine.

⏹️ ▶️ John They fix it. Whereas app store policies try to convince someone that it’s a bug. Is it a

⏹️ ▶️ John feature? Is it a bug? Is it intended? Is it not? Is it accidental? What are the actual effects?

⏹️ ▶️ John Much more difficult. confidence that bugs will be addressed and fixed, and I hope there aren’t

⏹️ ▶️ John too many of

⏹️ ▶️ Casey them. All right. We should probably talk about Swift 2, and I don’t remember if we got to this

⏹️ ▶️ Casey during the last episode or not, but among other things, it’s going to be open-sourced later this year,

⏹️ ▶️ Casey including support for Linux coming directly from Apple,

⏹️ ▶️ Casey which is pretty exciting and interesting. And I, for one, am extremely curious to see

⏹️ ▶️ Casey what kind of adoption it gets from the Linux neckbeards and

⏹️ ▶️ Casey all the server-side developers that run on Linux. And Marco, you’re one of those.

⏹️ ▶️ Casey I’m curious to see how that goes because obviously, JavaScript seems to in many ways be

⏹️ ▶️ Casey the flavor du jour for new server development, obviously Node.

⏹️ ▶️ Marco Which just goes to show that it doesn’t need to be a good language to get successful on the server.

⏹️ ▶️ Casey Although JavaScript isn’t that bad.

⏹️ ▶️ John But anyway. The whole reason JavaScript is on the server is because it’s on the client. That’s right. Because people

⏹️ ▶️ John are like, I don’t want to have two different code bases to do similar things. Can I have the same code in all places? I can’t change the code in the browser,

⏹️ ▶️ John therefore I can only have to change it. It’s a tragedy is what it is.

⏹️ ▶️ John It’s like an infection that’s just leaking out. I’ve never played Pandemic, but I imagine this is what the game board looks like.

⏹️ ▶️ John, Marco Board game

⏹️ ▶️ John reference from Marco.

⏹️ ▶️ Marco I have Pandemic, thank you. I’m sure you do. I’m waiting for next year’s

⏹️ ▶️ Marco big web framework thing to be VBScript.

⏹️ ▶️ Casey script. Oh, God, no, just just no. Anyway, so with

⏹️ ▶️ Casey Swift 2, we’re going to get Swift for Linux. And the other thing that was interesting about Swift 2,

⏹️ ▶️ Casey and this seems to be kind of the darling WWDC talk of this year, more

⏹️ ▶️ Casey so than I can recall, from previous years, everyone seems to be consistently

⏹️ ▶️ Casey pointing to what was it protocol oriented programming in Swift? Is that

⏹️ ▶️ Casey correct?

⏹️ ▶️ John Before I take a big dump all over this

⏹️ ▶️ John, Casey protocol

⏹️ ▶️ John extensions, I wanted to say one thing about Swift for Linux. We did talk about open sourcing Swift

⏹️ ▶️ John in the previous show because that was in the keynote. The reason I put it in there is what we didn’t talk about is what you just mentioned, that

⏹️ ▶️ John Apple said, hey, we’re open sourcing it, blah, blah, blah. And open source, the

⏹️ ▶️ John standard library and Swift will be available for iOS, OS 10, and also Linux. The word Linux

⏹️ ▶️ John was on a slide in an Apple keynote presentation. Apple is not, I assume,

⏹️ ▶️ John making Swift for Linux the goodness of their heart. And so you have to ask,

⏹️ ▶️ John why are they making it? One potential reason is if you’re going to open source something with the idea of,

⏹️ ▶️ John you know, we talked about this last show, you know, making Swift viable for a larger

⏹️ ▶️ John community. Languages can’t be confined. It can’t be proprietary. That limits, you know,

⏹️ ▶️ John you’re not going to get world domination with Swift. if it’s just an Apple thing. It has to be everywhere. And if you

⏹️ ▶️ John just open sourcing it isn’t enough to show that it’s everywhere, it helps to have a place where you can port it to say see

⏹️ ▶️ John it actually is portable. It’s not just a bunch of source code that you can’t even build anywhere

⏹️ ▶️ John else. Linux is a super popular platform. Linux is the open source darling. Here

⏹️ ▶️ John is a Linux version of Swift that you can compile and run on Linux and do Swift things on Linux,

⏹️ ▶️ John both to prove to ourselves that we are correctly open sourcing things, which they haven’t yet, by the way, this is like by the end of the year,

⏹️ ▶️ John um, and to, uh, to show that it’s real, the show that it’s not like

⏹️ ▶️ John an empty political gesture. Uh, the other possibility is that,

⏹️ ▶️ John uh, and depending on how cynical you are, potentially the more likely possibility,

⏹️ ▶️ John uh, is that Apple has a bunch of servers too. And I’m pretty sure Apple servers aren’t a bunch of X serves

⏹️ ▶️ John at this point. Uh, and I’m sure Apple probably has more Swift code

⏹️ ▶️ John than any other corporation in in the world at this point. I can pretty much guarantee that, one would hope. And they

⏹️ ▶️ John might want to run the same code or the same libraries on both their clients, which are iOS

⏹️ ▶️ John devices and Macs, and their servers, which presumably, again, are not XServs running OS 10.

⏹️ ▶️ John So if Apple has Linux servers, and Apple has devices that, you know,

⏹️ ▶️ John libraries that they make in Swift that can run on these devices, it would be nice if they could run Swift on the server because they actually

⏹️ ▶️ John happen to have servers. So I don’t know the lineage of Swift for Linux, if it was always a thing inside

⏹️ ▶️ John Apple or if it came out of the open source effort. But I think the reason Apple has

⏹️ ▶️ John Swift for Linux is for their own use. And that’s not why they’re open sourcing. Open sourcing, again,

⏹️ ▶️ John is because they want the language to be bigger than just one company. But Swift for Linux

⏹️ ▶️ John being a thing really makes me think that they want to run or at least want to experiment

⏹️ ▶️ John with. Maybe it’s not going to be a thing. Maybe it won’t work out or whatever. But at the very least, it’s something they want to try

⏹️ ▶️ John internally. And it makes perfect sense for them because, you know, when we talk about the web browser, if you’re

⏹️ ▶️ John if you’re a Google, it might make sense to run job. Well, I don’t think they’re in JavaScript on the server side either. Maybe they do. But anyway,

⏹️ ▶️ John having libraries that run in everyone’s browsers and being able to not having to duplicate that code on the server side. And

⏹️ ▶️ John if Apple has a bunch of libraries that run on everybody’s phones, that do some operation or whatever, it would

⏹️ ▶️ John be nice not to have to duplicate all that code on the server side. So you can do it both clients overside. So that is

⏹️ ▶️ John my tinfoil hat theory for Swift for Linux, it is not out of the goodness of Apple’s heart.

⏹️ ▶️ Casey Does Apple really ever do anything out of the goodness of their heart?

⏹️ ▶️ John Well, open sourcing is close, pretty much as close as you can get because that you could

⏹️ ▶️ John argue like, and I’m sure they have this argument in Apple, like, does it really benefit Apple? It

⏹️ ▶️ John will say, Oh, yeah, we’ll have more eyes on Swift or more people using it. And if if

⏹️ ▶️ John Swift becomes the next really popular language, and it’s, you know, adopted everywhere, good for

⏹️ ▶️ John us because Swift will become better the more people use it. All of that is true, but the counter

⏹️ ▶️ John argument is, well, Objective-C technically was not like Apple proprietary, but really we’re the only one using

⏹️ ▶️ John it and interesting, and that seemed to work out fine for us. It’s not like we suffered by the world not hacking on Objective-C

⏹️ ▶️ John for us, even though they could have been in theory. So what’s the big deal? Swift can be proprietary Apple language.

⏹️ ▶️ John We don’t care if the world adopts it. We only care if Apple and Apple’s developers adopted and that’s fine.

⏹️ ▶️ John So but open sourcing like the all the arguments against that eventually stray into

⏹️ ▶️ John altruism and you know sort of the new we didn’t talk

⏹️ ▶️ John about this the new message at the bottom of Apple’s press releases did you guys read that?

⏹️ ▶️ Marco, Casey No

⏹️ ▶️ Marco did I read the footer of a press release?

⏹️ ▶️ John It used to be Apple ignited the personal computer revolution with the Apple 2 and blah blah blah blah blah then they took out the Apple

⏹️ ▶️ John to and talked about the Mac and then moved on to iPhone and iPod. Like they change. It’s like a paragraph at the bottom

⏹️ ▶️ John of every press release that explains who the heck Apple is. And the current version, I believe, starts with the Mac and then says iPhone,

⏹️ ▶️ John iPad, blah, blah, blah, watch. I don’t know if it says watch anyway. They added a bit that says

⏹️ ▶️ John like Apple employees are blah, blah, blah and dedicated to leaving the world better than they found it.

⏹️ ▶️ John Like it’s a Tim Cook ism that is now added to the paragraph, leaving the world better than we found it.

⏹️ ▶️ John That’s altruism. Like it’s not, you know, making the most money possible increasing value for our shareholders,

⏹️ ▶️ John making the world better than we found it. That’s all the diversity stuff, the renewable energy stuff,

⏹️ ▶️ John and maybe throw open sourcing swift in there. So I’m not too cynical to believe that

⏹️ ▶️ John that wording change and that attitude, you see it. It comes from Tim Cook. He’s putting his stamp on the

⏹️ ▶️ John corporation, and it’s a stamp that I like.

⏹️ ▶️ Marco Yeah, I’m interested to see what comes of this. Does it get used at all,

⏹️ ▶️ Marco or does it just just kind of sit there in obscurity like Apple’s other open source efforts mostly have.

⏹️ ▶️ Marco And you know, you got to figure like as a server-side developer,

⏹️ ▶️ Marco as a web developer, as a services developer, why would you choose to use this over something

⏹️ ▶️ Marco else? And you’re right, like you know, code sharing

⏹️ ▶️ Marco is a big part of it. But again, like until the library situation shakes out, you know, yeah,

⏹️ ▶️ Marco like they said, Obviously, the Swift standard library will be there, but there’s not a lot in

⏹️ ▶️ Marco the Swift standard library. There’s a lot of things that almost every kind of app would

⏹️ ▶️ Marco need one of that don’t exist there.

⏹️ ▶️ Marco So that is going to be a problem, and it’s going to be a limitation for a long time.

⏹️ ▶️ Marco So I think you look at other languages that are out there that have more

⏹️ ▶️ Marco library or framework or community support behind them. And even languages that are

⏹️ ▶️ Marco cool and new and modern. If you want to throw Node in there, you can. I will allow that temporarily.

⏹️ ▶️ Marco I would also say things like Python and Java somewhat, Go, Rust,

⏹️ ▶️ Marco the newer ones. I won’t even say PHP, but people know it and there’s

⏹️ ▶️ Marco a lot there. going to be a tough sell for people to to

⏹️ ▶️ Marco use Swift over this almost embarrassment of riches of other

⏹️ ▶️ Marco well established good web languages that have tons of libraries and great frameworks already a

⏹️ ▶️ Marco huge community around them finding bugs before they run it before they hit you documenting things making

⏹️ ▶️ Marco tutorials writing books like there’s there’s so many languages out there

⏹️ ▶️ Marco already that have great resources and great support behind them. I wonder if Swift will

⏹️ ▶️ Marco be able to get a foothold in that, the way Apple is most likely to operate

⏹️ ▶️ Marco and with the limitations it’s most likely to have, especially in the area of libraries. And that I think

⏹️ ▶️ Marco we’ll just have to wait

⏹️ ▶️ John and see.

⏹️ ▶️ John, Marco Well,

⏹️ ▶️ John someone could always take it and run with it. Like, it’s not just the website. Someone could use Swift as an alternative to C++

⏹️ ▶️ John for the new thing they’re making. I mean, I have no idea what Pebble’s SDK is like or what it is, but you know, like say you’re making

⏹️ ▶️ John some small device and you decide you don’t wanna use C++ to make, you’re

⏹️ ▶️ John going to be the one making the API and the framework. Maybe you want to use Swift for it. Like the rust is, you know, those are the Mozilla

⏹️ ▶️ John guys, right? They’re, they’re using that as a better, a memory safe alternative to C plus plus to do

⏹️ ▶️ John kind of the same type of job with C plus plus there. It’s not, it’s not just all about

⏹️ ▶️ John web apps. You know, the whole, again, the whole thing with Swift is it’s supposed to be a language that can span from

⏹️ ▶️ John writing an operating system all the way up to, you know, they don’t say this, but you know, like it could be

⏹️ ▶️ John an alternative to JavaScript in the web browser from the lowest of the low level to the highest of the high level. And

⏹️ ▶️ John Swift, that’s that’s aspirational at this point. It’s certainly aspirational because like no one

⏹️ ▶️ John has actually written an operating system in Swift and nobody actually has used Swift in a web browser as an alternative to JavaScript.

⏹️ ▶️ John But it is expanding outward and by open sourcing, you’re never going to be able to expand to fulfill your, your,

⏹️ ▶️ John you know, your aspirational target. If you don’t open source as a prerequisite.

⏹️ ▶️ John And so you’re right, it’s there are lots of of barriers between here and there, but even in the worst case, the worst case is no one ever

⏹️ ▶️ John uses it except for Apple. At least then some poor Apple developer is going to have the ability to see the source code to

⏹️ ▶️ John the thing that’s causing them a problem and maybe send a patch. Even if it happens only between a registered Apple developer

⏹️ ▶️ John and Apple, that’s still bad. Like how many Apple developers wouldn’t kill to have the source code for app

⏹️ ▶️ John kit and UI kit just so they could debug stuff sometimes, right? Um, so I

⏹️ ▶️ John think there is no downside to open sourcing other than the resources they’re going to have to spend to deal with

⏹️ ▶️ John the open sourcing. But those type, you know, I feel like you can hire people to do that.

⏹️ ▶️ John And it’s kind of a fun job and they don’t need to be multi-year experts to handle it.

⏹️ ▶️ Casey Yeah. The other thing that strikes me is Swift seems to be

⏹️ ▶️ Casey a language written by a compiler guy for kind of compiler guys and

⏹️ ▶️ Casey for those, those sorts of people that really kind of get off on the nitty gritty about a language.

⏹️ ▶️ Casey And that’s not a bad thing at all. But if there was any audience or any group

⏹️ ▶️ Casey or any way to target compiler men and women, then I would

⏹️ ▶️ Casey imagine that the Linux crowd is the way to do it. And so it very well may pique some interest

⏹️ ▶️ Casey in that circle. And certainly this is a group

⏹️ ▶️ Casey that loves having a new JavaScript framework every day. So who knows, maybe somebody will

⏹️ ▶️ Casey decide, you know what, this is pretty cool and I’m going to build my Swift framework. A question I wanted to ask

⏹️ ▶️ Casey the two of you guys, do you think this is the beginning of the end of WebObjects?

⏹️ ▶️ Casey Was there a beginning of WebObjects? Well, you know what I mean. Of Apple’s reliance?

⏹️ ▶️ John I think we’re like into phase 17 of the end of WebObjects.

⏹️ ▶️ John It’s a really long end. I don’t see a bright future for WebObjects,

⏹️ ▶️ John but I know Apple has a lot of code written in it.

⏹️ ▶️ Casey Well, that’s the thing. That’s what I’m driving at is, yes, I think we can all agree that they want web objects to die in

⏹️ ▶️ Casey a fire. But I don’t, I don’t see any particular impetus

⏹️ ▶️ Casey or perhaps compulsion for them to get rid of it other than it being old and not well supported technology.

⏹️ ▶️ Casey And if they’re going all in on Swift across the corporation, then maybe

⏹️ ▶️ Casey that includes, you know, like the iTunes music store among other

⏹️ ▶️ Casey, John things.

⏹️ ▶️ John I don’t think they’re going all in. I think this is, you know, baby steps here, but like, I think the problem they have with web objects is all right, what

⏹️ ▶️ John do we replace it with? And all the choices are things that Apple controls less. Regardless of how much better you

⏹️ ▶️ John may believe they are than web objects, things that Apple controls less and you don’t want to rewrite a bunch of working code

⏹️ ▶️ John and Apple, unlike Google, is not constantly thinking about how it can improve every aspect of all its

⏹️ ▶️ John web operations. Like there are key things that it is concentrating on. And I think with good reason, like, hey, how about

⏹️ ▶️ John cloud kit is a great example. Let’s do cloud kit. That is a big paid point. Although people may not

⏹️ ▶️ John like web objects, if you can click through our stores and buy stuff, it’s performing fine, even if it’s like defunct

⏹️ ▶️ John and not really being enhanced and doesn’t have a bright future, it’s more important to to concentrate on things.

⏹️ ▶️ John So so maybe long term, they can like, you know, Swift for Linux, they

⏹️ ▶️ John could try it out in some small application server side thing and see if it works

⏹️ ▶️ John out like these are very early days. But yeah, like someone is staring at that web objects and

⏹️ ▶️ John going, it’s like you don’t want to end up like COBOL code where the only people who know how to deal with it at all

⏹️ ▶️ John are 60 years old and really expensive because they don’t want to work anymore and you just let it go too far. Web operators are not

⏹️ ▶️ John at that phase yet. And who knows, someone could resurrect it someday and you never know, stranger things have happened.

⏹️ ▶️ Marco Well, but that, like the talent aspect, I think might be a big part of this. Like, imagine,

⏹️ ▶️ Marco you know, Apple already seems to have some issues retaining talent

⏹️ ▶️ Marco because they’re, you know, the things they do are, you know, increasingly,

⏹️ ▶️ Marco you know, they have an increasing number of like boring things that have to be done.

⏹️ ▶️ Marco There are so many other things. If you work at Apple, you probably get an itch constantly to go

⏹️ ▶️ Marco make your own app. I bet that’s a big problem they have. To help

⏹️ ▶️ Marco retain talent, or to help attract talent in the first place, if they’re going to grow

⏹️ ▶️ Marco their cloud services stuff, which they almost certainly are and almost certainly need to,

⏹️ ▶️ Marco they need to figure out how to attract more programmers who want to work on this stuff. And if you

⏹️ ▶️ Marco think about the the prospect of a job where you’re writing web objects code as the as the primary

⏹️ ▶️ Marco role of your job, not only are those people harder to find, but you know if you want to find somebody

⏹️ ▶️ Marco who has experience with it before, but also you’re probably like if that’s your job that’s not

⏹️ ▶️ Marco very interesting or cool to most people. And that’s gonna be it makes it especially hard probably

⏹️ ▶️ Marco to hire young people. And and so if they want to hire more people more easily to work on their cloud

⏹️ ▶️ Marco stuff and to have them be be higher quality coders who want to stay there longer

⏹️ ▶️ Marco and who are going to choose that over some other job at Google or Facebook or whatever.

⏹️ ▶️ Marco Having it be in a modern, cool language that everybody wants to write code in instead

⏹️ ▶️ Marco of an old language that has a pretty bad reputation that is not really useful anywhere else, that

⏹️ ▶️ Marco is hard to get experience in, and is probably not the best language to work in these days when you are

⏹️ ▶️ Marco accustomed to more modern things. I think having Swift on the back end and having

⏹️ ▶️ Marco this be available, that would be enough reason right there,

⏹️ ▶️ Marco just for Apple’s own recruitment and retainment efforts. That would be enough reason to do this. Yeah.

⏹️ ▶️ Marco All right, what else is cool these days? Our final sponsor this week is Igloo. Igloo is an intranet

⏹️ ▶️ Marco you will actually like. So with Igloo, you can share news, you can organize your files, you can coordinate

⏹️ ▶️ Marco calendars and manage projects all in one place on your corporate intranet or your

⏹️ ▶️ Marco group intranet. So Igloo is like taking the best of the web and productivity apps. They have, you know, calendars,

⏹️ ▶️ Marco they have Twitter, like micro blogging, file sharing, task management, wikis, document annotations,

⏹️ ▶️ Marco and more, all available privately and securely for your company or group.

⏹️ ▶️ Marco Igloo intranets are highly functional, stylish, and easy to use with a widget based drag and

⏹️ ▶️ Marco drop interface. Now their latest upgrade Viking revolves around documents and how you interact with them

⏹️ ▶️ Marco gather feedback and make changes. So they have a couple of cool features here. First of all, they can you can

⏹️ ▶️ Marco have a basically read receipts for documents, you can track who has read critical documents, critical information

⏹️ ▶️ Marco to keep everybody on the same page. This you can do this, for example, to track whether

⏹️ ▶️ Marco employees have read and acknowledged new policies, signed off on legal agreements, confirm completion of

⏹️ ▶️ Marco training materials, all sorts of possible professional and regulatory uses

⏹️ ▶️ Marco here. And all this is built on their advanced HTML5 platform and this is

⏹️ ▶️ Marco really advanced. It’s fully responsive first of all. So you know it works great on every device,

⏹️ ▶️ Marco computers, iPhones, Android phones, even Blackberries. And then

⏹️ ▶️ Marco what I think is the coolest part of this is all that they have all this like document previewing

⏹️ ▶️ Marco and document annotation. There’s no flash any of that. It’s all this document parsing code,

⏹️ ▶️ Marco all this document annotation code. That’s all in HTML5. So you can do annotations,

⏹️ ▶️ Marco you can view spreadsheets, you can do all that just on your phone

⏹️ ▶️ Marco if you want to or just on your computer without having flash installed which is the devil. So you really don’t want flash.

⏹️ ▶️ Marco And when new devices come out, new screen sizes come out, it just works on there. It is so great,

⏹️ ▶️ Marco so advanced. So if your company has a legacy intranet that looks like it was built in the 90s like most corporate

⏹️ ▶️ Marco intranets do, you should definitely give Igloo a try. Now what’s even better is that if

⏹️ ▶️ Marco you have a group of 10 or fewer people to use it, it’s completely free to use for as long

⏹️ ▶️ Marco as you want. So if your company is 10 or fewer people, or if you want to use it for a group project

⏹️ ▶️ Marco or a side thing, whatever you want to do, 10 people or fewer, it’s free forever.

⏹️ ▶️ Marco And then when you get larger than that, it’s very reasonably priced. So check it out today. Sign up for a free

⏹️ ▶️ Marco trial. See if it’s right for you. Once again,

⏹️ ▶️ Marco slash ATP. Thanks a lot to Igloo for sponsoring our show

⏹️ ▶️ Marco once again.

⏹️ ▶️ Casey So John, I hear you have thoughts about protocol extensions.

⏹️ ▶️ John Protocol extensions are great, but the protocol oriented programming talk, like there’s always a couple of weird talks

⏹️ ▶️ John at WLDC, like that are structured as narratives or they have a framing device or you know, this was one

⏹️ ▶️ John of them. It’s like a single presenter. The framing device was like a hypothetical discussion

⏹️ ▶️ John between an old cranky programmer and a young one and used to demonstrate something. And the reason I find

⏹️ ▶️ John these interesting, I was only joking about dumping out, but I find them interesting because these are,

⏹️ ▶️ John these talks, all of WOC, but specifically these talks about like, I’m going to tell you

⏹️ ▶️ John the way that we think you should use our language to make your programs better are aimed at an audience

⏹️ ▶️ John that’s not me. It’s aimed at people who develop iOS and Mac apps. It’s aimed

⏹️ ▶️ John at like long time Objective C developers. It’s aimed at people whose programming culture is very,

⏹️ ▶️ John very different than mine. Uh, and so sometimes that means the message goes past me and sometimes

⏹️ ▶️ John it means that like, that they’re, they’re trying to,

⏹️ ▶️ John the context is practices that I don’t have and never had, and they’re trying to persuade

⏹️ ▶️ John me as hard as they can to not do this thing that I think is crazy and would never do anyway, or vice versa. Tell me to do something

⏹️ ▶️ John that seems alien to me and then try to convince me that it’s good. And so protocol extensions was

⏹️ ▶️ John trying to show all the sort of traps that you can run into, not an explicit way,

⏹️ ▶️ John but like, you’re used to doing this in objective C. And these, these problems

⏹️ ▶️ John are why objective C is the way it is like, why did why are there delicate patterns all over objective C? Well, because inheritance

⏹️ ▶️ John has these problems, or so on and so forth. And a lot of the stuff, this is the one that gets me in the middle of a lot of the stuff,

⏹️ ▶️ John both having to do with Swift and objective C and everything that WWDC focuses

⏹️ ▶️ John heavily on types. And if you use a language that does not have, uh, that has dynamic

⏹️ ▶️ John typing, uh, where you don’t worry about types, you don’t worry about matching type signatures. You don’t, that’s like, that’s not even a

⏹️ ▶️ John thing. A lot of the stuff that is super important to people who deal with languages with types

⏹️ ▶️ John is irrelevant. Like it’s one of the things people talked about the, the gang of four patterns book. Like there was an article about it years

⏹️ ▶️ John ago when the parents book first came out, someone had the epiphany after reading the parents book. You know what?

⏹️ ▶️ John A lot of this crap is totally irrelevant. it to me because I don’t use C++ or Java or any other strongly typed language. Like a

⏹️ ▶️ John lot of these patterns exist so that you can make your program flexible in this way, but maintain static type safety

⏹️ ▶️ John everywhere. And if your language doesn’t even have static type safety, you’re like, well, that pattern makes no sense. You know how I do that pattern?

⏹️ ▶️ John I just do this and I don’t have to worry. It works all the time. I don’t need seven versions of this. I don’t need a concrete and

⏹️ ▶️ John abstract implementation. I don’t need protocol extensions so the types can macro. All the problems they described

⏹️ ▶️ John in the protocol extensions thing, like a lot of those just don’t exist in languages like JavaScript where you just don’t have to worry about

⏹️ ▶️ John that, right? Maybe ES6, that’ll be a problem or whatever. So that’s one aspect of it. And the second one

⏹️ ▶️ John is I’m heartened to see ideas from the crazy highfalutin mumbo

⏹️ ▶️ John jumbo languages that I use, and even from things from Perl 6 and stuff,

⏹️ ▶️ John filtering down to the troglodytes who use these languages with pointers and stuff, or Swift

⏹️ ▶️ John where you have, you know, unsafe, managed a hose myself by scribbling over my anyway,

⏹️ ▶️ John the lower level languages. And I think the idea that was sort of from my perspective, the

⏹️ ▶️ John idea that was buried in the protocol protocol RNG programming language thing was the idea

⏹️ ▶️ John of traits, which I think were from small talk roles in Perl pollens.

⏹️ ▶️ John Another a better managed alternative to sharing code,

⏹️ ▶️ John sharing interface and code without screwing with your inheritance hierarchy without forcing data to be shared

⏹️ ▶️ John without doing all the other stuff. So it was a talk that just seemed very alien to me.

⏹️ ▶️ John But everyone who saw who was in the correct audience, you know, who was this talk was meant for them,

⏹️ ▶️ John seemed to like it. And it seemed to open their eyes to the possibility of how they can program differently in

⏹️ ▶️ John Swift and how Swift attempts to solve problems. The same problems that objective

⏹️ ▶️ John C solved by sort of skirting them. Swift has a different way to you to take the same approach. So I hope people watch that

⏹️ ▶️ John session and come away with new ideas about how they can structure their programs to

⏹️ ▶️ John satisfy all their languages’ static type constraints, and new ways to

⏹️ ▶️ John share functionality and interfaces without inheritance and without a

⏹️ ▶️ John million delegates everywhere. JSON COHEN

⏹️ ▶️ Casey Now, this is one of those talks that I was in as well, and I enjoyed it

⏹️ ▶️ Casey a lot, although the framing, whatever, was a little bit weird. Krusty, the old programmer,

⏹️ ▶️ Casey I think was the character they use. But anyway, the talk was very good, but

⏹️ ▶️ Casey it’s one of those that I feel like I need to go back and watch it again because it didn’t entirely sink in. And

⏹️ ▶️ Casey I think that’s partially because I too am not necessarily the right audience because I don’t live and breathe Objective-C

⏹️ ▶️ Casey every day. But there were a lot of things, and I’ve said this about Swift in the past. There’s a lot

⏹️ ▶️ Casey of things that they talked about that reeked

⏹️ ▶️ Casey of C Sharp style implementations of the same idea. Protocol

⏹️ ▶️ Casey extensions smelled a lot like extension methods to me. And I’m sure they’re different in nuanced ways that I’m

⏹️ ▶️ Casey not considering as I’m talking, but they seem very similar. And so I think that

⏹️ ▶️ Casey I’d like to rewatch this and perhaps consider what

⏹️ ▶️ Casey patterns I can apply to even my C Sharp code that maybe I can be

⏹️ ▶️ Casey inspired by from this talk. But it was very interesting. And like I said earlier, just about anyone who

⏹️ ▶️ Casey has seen it has said, wow, that was really cool. And you should definitely see it. And I concur.

⏹️ ▶️ Casey So I don’t know, Marco, any thoughts? You’re probably the target audience more than anyone. Did you see this one?

⏹️ ▶️ Casey I didn’t do my homework. Of course. Well, to be fair, I didn’t do it. Since I got home, I just

⏹️ ▶️ Casey happened to be in that talk when we were there.

⏹️ ▶️ Marco No, I have also heard from everybody that I have to see this talk. And so it is on my list of talks to watch.

⏹️ ▶️ Marco But I have not watched it yet.

⏹️ ▶️ John Yeah, and protocol extensions are separate from this protocol. Orange, the protocol extensions are mostly

⏹️ ▶️ John people in chat room are saying extensions are like categories. Swift has always had extensions. Protocol extensions allows you to extend

⏹️ ▶️ John protocols, which previously you couldn’t do. If you look at the Swift standard library and see

⏹️ ▶️ John all the different things they had to do to make things that are like, well, this is equatable

⏹️ ▶️ John and sortable and this inherits from that and this conforms to this, like to try to

⏹️ ▶️ John make just their basic types of like, you know, arrays and dictionaries and it’s and all the other things that they to work with other

⏹️ ▶️ John map and sort things. Again, problems don’t exist if you don’t have types. It’s like, well, how can we have this

⏹️ ▶️ John that works a generic form of that and that and trying to get away from all the angle bracket T

⏹️ ▶️ John generic thing that was making Swift look all super ugly. Oh good, I hate those. Yeah, well,

⏹️ ▶️ John that and like the standard library itself because that’s that’s probably the biggest source

⏹️ ▶️ John of Swift code, Swift code in the world at this point, as far as we know, is the Swift standard library itself because

⏹️ ▶️ John all that stuff, their hashes and dictionaries and ins and outs, and that’s all written in Swift. That’s their standard library,

⏹️ ▶️ John right? And having map and filter and all those other things work on all the different types

⏹️ ▶️ John and also on your extensions of those types and your subcategories of types and also enums and structs which can also

⏹️ ▶️ John have methods, it’s really complicated. And in writing the Swift standard library, they

⏹️ ▶️ John ran into all of the, I’m assuming, they ran into all the part, the ways that the language is making things annoying.

⏹️ ▶️ John I mean, anyone who’s done any sort of large object-oriented program has inevitably found themselves in a situation where

⏹️ ▶️ John either you start wishing for multiple inheritance or the flip side, you start

⏹️ ▶️ John using it. And in both cases, you have regrets, right?

⏹️ ▶️ John, Marco Like, Oh, but

⏹️ ▶️ John I need this needs to be that and that needs to be that. And really, there’s no way to arrange this hierarchy of this. So they’re gonna have this

⏹️ ▶️ John if I have these multiply inherit, but I want this but I need to override that over there. But this needs to come from over here. Like you make a

⏹️ ▶️ John mess, you know, because you don’t foresee everything, you end up making a mess. That’s, that’s an anti pattern

⏹️ ▶️ John that anyone in any object oriented language experience. And I feel like Apple must have experienced that doing the standard

⏹️ ▶️ John libraries like, oh, well, we need everything to be sortable and equatable. And and we need

⏹️ ▶️ John them to be able to be mapped from one thing to the other. But you know, we want

⏹️ ▶️ John all the types to match up. We want people to be able to extend it, but then to have their extended versions also work with all the built in things

⏹️ ▶️ John and you end up it’s really complicated problem. And protocol extensions give them one more vector

⏹️ ▶️ John for sharing that like they’ll define these protocols that don’t affect the inheritance hierarchy. And then you can extend the

⏹️ ▶️ John protocol. So then everything that conforms to the protocol gets your extension is different than doing a category where like, Oh, now all instances of

⏹️ ▶️ John NS string have this method, you can have like, all instances of things that are equatable, have this new

⏹️ ▶️ John extension, right. And that’s, that is a powerful feature that I think a lot of people

⏹️ ▶️ John wanted when they saw Swift one. And I think the people probably wanted the most for the people writing the Swift standard library. And I think

⏹️ ▶️ John this probably made their life a lot easier. And then the protocol oriented programming is like, hey, protocols, period, like

⏹️ ▶️ John you can share code by instead of just making a series of subclasses and making a big inheritance hierarchy,

⏹️ ▶️ John you can have this unit of code, you can have like a Java interface that has no code, and that’s powerful.

⏹️ ▶️ John And then you can share those implementations and override them

⏹️ ▶️ John among any classes. It’s not part of the inheritance hierarchy. Everything, you can make all your different

⏹️ ▶️ John things conform to this protocol. And then when someone extends the protocol, they’ve enhanced all the things that

⏹️ ▶️ John I keep trying to use Perl parlance. The the pro parlance their their roles and classes consume them, which sounds weird

⏹️ ▶️ John and gross, but it’s nice to have a distinct word for it. So everybody who consumes this role now I guess the advance

⏹️ ▶️ John there are there are no role extensions in Pearl. And I was thinking like, oh, why don’t we have role extensions? And I thought about it for

⏹️ ▶️ John a while. And I think it’s probably because we don’t need them because you would just you know, pearls like Ruby can do whatever

⏹️ ▶️ John the hell you want. We stick with

⏹️ ▶️ John, Casey we stick mountains

⏹️ ▶️ John any class we want. We screw with the inheritance. Hi, I get runtime. It’s

⏹️ ▶️ John it’s the wild west.

⏹️ ▶️ John, Marco But Anyway, it’s an interesting talk. Sounds

⏹️ ▶️ John awesome. Yeah, it is pretty awesome. It’s better than Ruby. Ruby did mixins, which is just like, you know what? Here are

⏹️ ▶️ John some methods. Bam, they’re in your class. Oops, did I overwrite something? Sorry about that. Roles, at least,

⏹️ ▶️ John when your class consumes them, it will tell you at class composition

⏹️ ▶️ John time, it consumes the roles, and it will tell you, you can’t consume those roles. They conflict in this, this, and this, right?

⏹️ ▶️ John And roles can also make requirements of the classes that consume them. you can consume me, but you need to implement methods X,

⏹️ ▶️ John Y, and Z. Otherwise, you know, and that having that happen at class composition time is way better than the Ruby

⏹️ ▶️ John thing where you just keep loading Ruby modules until like the the the integer

⏹️ ▶️ John class has 17 people fighting over the method that’s called like whatever inverse or first or like

⏹️ ▶️ John happy birthday or whatever the hell people are shoving it, you know, and they just silently overwrite each other and you know, so

⏹️ ▶️ John it’s a more formalized system of non inheritance based interface and code sharing.

⏹️ ▶️ John Anyway, cool stuff. Swift 2 looks really good.

⏹️ ▶️ Marco Tell you one thing, I’m honestly very glad I haven’t learned Swift yet. Because they keep adding these…

⏹️ ▶️ Marco First of all, they keep changing things and they keep adding really cool things. And honestly,

⏹️ ▶️ Marco if you have a large body of Swift code, that to me seems more like a liability

⏹️ ▶️ Marco at this point. Even though they have some of the translation tools and everything but like I I would

⏹️ ▶️ Marco rather come to Swift with a totally clean mind and no existing

⏹️ ▶️ Marco code once it has stabilized a little bit more

⏹️ ▶️ John I don’t think your mind is entirely clean with all that PHP in there but I mean like you

⏹️ ▶️ John, Marco know

⏹️ ▶️ Marco like I don’t have any existing knowledge of Swift really that’s any that’s of any use I don’t have any like

⏹️ ▶️ Marco built any like Swift assumptions or Swift design habits I’ve already started

⏹️ ▶️ Marco getting into like so when I do start using Swift, it’ll be from a clean slate,

⏹️ ▶️ Marco as if that was version 1.0 of the language.

⏹️ ▶️ John Well, it’s nice to… I think the people who have used Swift 1 and run into all these problems, A, they appreciate

⏹️ ▶️ John the Swift 2 features more, but it’s like, oh god, I’ve been fighting that for, you know, a long time in Swift 1, it’s

⏹️ ▶️ John great to see it in Swift 2, and B, I think it will help you understand the features of the language. If you haven’t

⏹️ ▶️ John fought with all the foibles of Swift 1, it may not be clear why certain features in Swift 2

⏹️ ▶️ John exist. So I think experience is still useful. But

⏹️ ▶️ John what I wanted to get at was the point you brought up of what is the strategy? They said this from the very beginning.

⏹️ ▶️ John The strategy of Swift is they’re going to make Swift and we’re going to change the language

⏹️ ▶️ John in ways that are just entirely incompatible with the Swift code you’re writing now. Furthermore,

⏹️ ▶️ John that Swift code that you wrote last year, that’s not even going to compile anymore. It’s like,

⏹️ ▶️ John oh, OK, well, my app is written in Swift 1. No, it’s not. ship your app it cannot be written in Swift 1 because Swift 1

⏹️ ▶️ John will not build in the new version of Xcode. Their entire strategy at this point anyway is we will

⏹️ ▶️ John take your Swift 1 code and convert it to Swift 2. And that’s that’s they’ve been saying that from the start they

⏹️ ▶️ John don’t guarantee source compatibility which means their compiler will not compile your Swift 1.

⏹️ ▶️ John They don’t care about your Swift 1 you got to convert it to Swift 2. Which is very aggressive

⏹️ ▶️ John and like you know all the work they did with the compiler infrastructure an Xcode and the integration between

⏹️ ▶️ John them and the static analyzer allows them to have a conversion thing that does this in a sensible

⏹️ ▶️ John way and does most of the work for people. It’s still kind of annoying though. But I’m not

⏹️ ▶️ John entirely sure this is a long-term strategy. Okay, so Swift 1 to Swift 2, Swift 2 to Swift 3.

⏹️ ▶️ John At a certain point, Swift 16 to Swift 17, are you really going to invalidate what Apple would hope

⏹️ ▶️ John is the millions of lines of Swift 16 code that are out there when you change to Swift 17? No, it’s got to end at some point.

⏹️ ▶️ John So I don’t know what point that is, but for now, the policy is

⏹️ ▶️ John not only Marco, might you have been wasting your time writing in a language and learning idioms that are going

⏹️ ▶️ John to change when the next version of Swift comes out, but you’d also have the task of converting all of your Swift one code to Swift too.

⏹️ ▶️ John Like it’s not even an option to keep the Swift one code around. And I think that will

⏹️ ▶️ John continue until the language reaches the point where Apple’s like, all right, this is settling down.

⏹️ ▶️ John now we’ll start to I hope they’ll start to treat it like a regular language where we don’t invalidate your objective

⏹️ ▶️ John C code when objective C 2.0 comes out when they started versioning objectives. They we try to encourage you to move to 2.0 the 64 bit

⏹️ ▶️ John run time to is 2.0 only blah, blah, blah, blah, blah, but your old code will

⏹️ ▶️ John keep building for a really long time.

⏹️ ▶️ John, Casey We

⏹️ ▶️ John did they didn’t force you to constantly convert all up convert all your code. And they kept it backward compatible. Whereas

⏹️ ▶️ John Swift one like they changed some of the keywords like do became repeat like this, you know, they’ll

⏹️ ▶️ John change anything they want.

⏹️ ▶️ Marco now do mean something else. Yeah. Now it now it basically means try.

⏹️ ▶️ John No, there’s try inside the do. There’s there’s a Yoda joke in there somewhere, but I cannot get it out. That’s

⏹️ ▶️ Marco a reference to something’s crazy. That’s Star Trek, right? Yes, that’s right. Yeah, next generation.

⏹️ ▶️ John This is this is a thing to watch for when Apple thinks Swift has finally settled down when they stopped doing the thing,

⏹️ ▶️ John the thing that they always said they were going to do. They just never said how long they’re going to do it for. It just seems like something that is not

⏹️ ▶️ John sustainable long term. But certainly for Swift one, two, and presumably next year or Swift three.

⏹️ ▶️ John Uh, they’ll probably keep you that maybe four, maybe five, maybe five. It settles down, but

⏹️ ▶️ John that’s something to keep an eye on. But anyway, I love seeing this, this aggressive strategy of like not

⏹️ ▶️ John doing the old Microsoft thing of like, well, you can’t break people’s old apps and you can’t, you know, their source code has to compile

⏹️ ▶️ John and work exactly like it always did. Apple’s like, no, we are racing forward as fast as we can. You better

⏹️ ▶️ John come along for the ride.

⏹️ ▶️ Marco And that’s great. I mean like there are so many languages that get you know in you know kind of unfortunate

⏹️ ▶️ Marco cruft like almost immediately after their launch because they don’t do that and because

⏹️ ▶️ Marco they have you know developers instantly who are like well you know we’re not gonna you know we’re not gonna tolerate you

⏹️ ▶️ Marco breaking the code we wrote for this two-month-old language last you know last month

⏹️ ▶️ Marco and Apple’s willing to say yes we’ll break it and we’ll we’ll try to make it easy on you by having these translation tools

⏹️ ▶️ Marco but that’s it that it’s going to end up being a really good language and on likelihood.

⏹️ ▶️ Marco I think even the Swift 2 changes, the changes they’ve made since

⏹️ ▶️ Marco last year, since 1.0, they did a number of updates over the winter and the spring and

⏹️ ▶️ Marco they changed some pretty big things. And now with the officially named Swift 2,

⏹️ ▶️ Marco which seems kind of more like Swift 1.5, but whatever, with all that,

⏹️ ▶️ Marco they’ve made some really big improvements since 1.0 last year. And yeah, you’re right, it’s going to slow down.

⏹️ ▶️ Marco That’s fun and I’m totally fine to jump on when it slows down and

⏹️ ▶️ Marco a lot of people you know some of the people in chatter saying I’ve heard from a lot of people like don’t you want to be part of this process

⏹️ ▶️ Marco don’t you want to like help direct the language you know with your input and and get used to it

⏹️ ▶️ Marco now and become an expert in it now and the answer to all those is no I don’t

⏹️ ▶️ Marco like I really don’t you know first of all I think there’s there’s

⏹️ ▶️ Marco like this this division of programmers, like there’s people who are really into

⏹️ ▶️ Marco the tools for their own sake, and the science of the tools, and the design

⏹️ ▶️ Marco of languages, the design of tools, like the art behind the language design.

⏹️ ▶️ Marco And then there’s other people who don’t really care about that and just want to use it, and they get satisfaction

⏹️ ▶️ Marco out of the things they build with it, rather than necessarily the way they build them. I own the

⏹️ ▶️ Marco latter. I do not care about about languages really much at all. That’s

⏹️ ▶️ Marco why I try to learn as few languages as possible and choose to really

⏹️ ▶️ Marco deeply master them, rather than exploring tons of languages that come out and

⏹️ ▶️ Marco being shallowly familiar with lots of them. And in some ways, that does hurt me.

⏹️ ▶️ Marco I think overall, I think I’m making the right decision for what I’m trying to accomplish, which is

⏹️ ▶️ Marco one person trying to write complete apps and write and maintain complete apps that do

⏹️ ▶️ Marco non trivial things. I think my way is better for that approach. But

⏹️ ▶️ Marco there are so many people who care so much about the language and how it’s designed

⏹️ ▶️ Marco and what it can do and how it does it that they are willing to jump on early and they are willing

⏹️ ▶️ Marco to tolerate all the all the bumps and the source kit crashes and the changes in

⏹️ ▶️ Marco the syntax and changes in the idioms and things. They’re willing to do that. That’s great.

⏹️ ▶️ Marco We need them to exist, but I don’t need to be one of them, and I’m perfectly fine with that. I appreciate

⏹️ ▶️ Marco what they do, and they probably think I’m India, but that’s fine.

⏹️ ▶️ Casey Yeah, I agree. I don’t care about being a trailblazer anymore.

⏹️ ▶️ Casey You’ve talked about this a lot, Marco, just now on Build & Analyze. Being a trailblazer

⏹️ ▶️ Casey when it’s something that is important, when money is riding on it, that’s just not my cup of

⏹️ ▶️ Casey tea. I’d rather use the old and boring technology. Not as old and boring as PHP or Perl, but old and

⏹️ ▶️ Casey boring technology that is well proven and actually works well. And occasionally

⏹️ ▶️ Casey I’ll fiddle like something that’s fun and on the side, like my website, for example, Node is reasonably

⏹️ ▶️ Casey stable as JavaScript frameworks that change every 10 seconds go.

⏹️ ▶️ Marco As long as your integers stay small and you don’t need, and you have a lot of memory,

⏹️ ▶️ Marco, Casey then you’re good.

⏹️ ▶️ Casey Right, then no problem. But that’s not something that I’m really making any money off of. It’s just my

⏹️ ▶️ Casey silly little website. You know, I don’t think I would be as keen on using node

⏹️ ▶️ Casey if this was the sort of thing where where money is is relying or money

⏹️ ▶️ Casey is riding on what I’m doing. So I’m with you. I don’t I don’t get the architecture

⏹️ ▶️ Casey astronaut like, you know, total. I don’t know, just I don’t get

⏹️ ▶️ Casey off on that like I used to when I was a kid. It’s just not my thing anymore.

⏹️ ▶️ John is far from boring Casey.

⏹️ ▶️ John, Casey It’s one thing you can say

⏹️ ▶️ John, Marco for Pearl, it’s not

⏹️ ▶️ John boring. I would say the same thing for PHP. PHP is far from boring. It’s perhaps the most exciting

⏹️ ▶️ John language ever made because it’s terrifying. Every second. We’ll sell you the whole Aeron,

⏹️ ▶️ John but you only need the edge.

⏹️ ▶️ Casey Oh God, all right, I think that wraps it up for this

⏹️ ▶️ Marco week. Thanks a lot to our three sponsors this week, Automatic, Squarespace, and Igloo.

⏹️ ▶️ Marco And we will see you next week.

⏹️ ▶️ Casey Now the show is over, they didn’t even mean to begin Cause

⏹️ ▶️ Casey it was accidental, oh it was accidental

⏹️ ▶️ Casey John didn’t do any research, Margo and Casey wouldn’t let him Cause

⏹️ ▶️ Casey it was accidental, oh it was accidental

⏹️ ▶️ Casey And you can find the show notes at

⏹️ ▶️ John And if you’re into Twitter, you can follow them at

⏹️ ▶️ John C-A-S-E-Y-L-I-S-S

⏹️ ▶️ Casey So that’s Casey Liss, M-A-R-C-O-A-R-M,

⏹️ ▶️ Casey N-T Marco Armin, S-I-R-A-C-U-S-A

⏹️ ▶️ Casey Syracuse It’s accidental, they

⏹️ ▶️ Casey didn’t mean to

⏹️ ▶️ John I think

⏹️ ▶️ John language wonk is the phrase you’re looking for, not architecture

⏹️ ▶️ John, Casey astronauts.

⏹️ ▶️ Casey Yeah, I couldn’t think of what it was. Thank you.

⏹️ ▶️ Marco Well, the architecture astronauts, they’re all working on Java and PHP.

⏹️ ▶️ Marco, Casey Oh, God. PHP

⏹️ ▶️ Marco got so badly infected by Java people. Dress me nuts.

⏹️ ▶️ John Yeah. But anyway, I am a language wonk. I like this language stuff. Hell, anyone who knows

⏹️ ▶️ John about the existence of and loves Pearl Six is definitely a language wonk.

⏹️ ▶️ Casey I mean, I don’t have a problem with language wonkery, if such a thing is how you would describe it. Like

⏹️ ▶️ Casey, Marco I,

⏹️ ▶️ Casey I, um, I enjoy learning about Swift, but goodness, would I,

⏹️ ▶️ Casey would I never consider that using that at least right now? I think you guys hit the nail on the head

⏹️ ▶️ Casey that the right time to use Swift is when the velocity of Swift kind of calms

⏹️ ▶️ Casey down a little bit. Maybe Maybe it doesn’t stop moving forward or anything, but it just calms down. Now

⏹️ ▶️ Casey is not that time.

⏹️ ▶️ Marco Well, now might be that time, honestly.

⏹️ ▶️ John Yeah, I think it’s close to that time. Like, because next year, like, all right, so we didn’t even talk

⏹️ ▶️ John about the error handling, but anyway, you got all, error handling stuff was, there was a bunch of things that were obviously missing from SWF1.

⏹️ ▶️ John And one of them was how do you deal with errors, because in out params and NSError and all that crap was like ugly.

⏹️ ▶️ John It did look, it was, it looked like a, and it was, a thing that existed and fit in with

⏹️ ▶️ John the Objective-C language and app kit and all that stuff, it wasn’t a good fit for Swift. So now you’ve

⏹️ ▶️ John got their whole, don’t really call it exceptions because it’s not really an exception, but kind of exception handling

⏹️ ▶️ John in Swift 2. That filled a big gap. Obviously, I still want regular expressions.

⏹️ ▶️ John Maybe just copy. Of course. Just copy Perl 6 grammars and you’ll be done. You gotta save something for next year.

⏹️ ▶️ John But yeah, and now people looking at Swift 2, it’s like, all right, what’s left besides the stuff that I just mentioned?

⏹️ ▶️ John Now the picture is becoming clearer. And then the final thing that I think you’re missing is, all

⏹️ ▶️ John right, who’s going to be the first sucker to write a Swift-only framework

⏹️ ▶️ John or to use Swift in earnest? So that like, because all the APIs you’re calling from Swift are

⏹️ ▶️ John UIKit, AppKit, things that were written originally in Objective-C. And they’ve tried so hard to make it so

⏹️ ▶️ John that you can do things in a Swifty way, not knowing that there is

⏹️ ▶️ John an NSError parameter going in there. That’s lots of magic having to

⏹️ ▶️ John do with bridging those two worlds. Eventually, you’re going to have to decide, what does,

⏹️ ▶️ John if you were to write a framework now, starting from scratch in Swift, what would that look like, right? We

⏹️ ▶️ John don’t know the answer to that, but that’s like the final piece of the puzzle. And after that, it’s just a matter of time. So

⏹️ ▶️ John Swift 2, Swift 2.5, the dawning of Swift 3, I think that is probably the sweet

⏹️ ▶️ John spot for, maybe not for Marco, but I think for most people doing,

⏹️ ▶️ John you know, if you’re not a one person shop you have to make decisions based on. You don’t have people like, oh, this guy

⏹️ ▶️ John can go off and he’ll just learn Swift this year and he’ll teach it to the rest of us. Marco doesn’t have that option, but

⏹️ ▶️ John that’s a reasonable time frame. And if you want to be on the cutting edge or you’re young or you’re coming in, say

⏹️ ▶️ John you’re going to write your very first application and you’re just out of school, that’s the perfect time to learn Swift because you don’t know

⏹️ ▶️ John Objective-C. There’s no point in becoming an Objective-C expert right now. You might as well just

⏹️ ▶️ John go right into Swift. So Marco’s decisions, as always, are not necessarily applicable to everyone

⏹️ ▶️ John listening.

⏹️ ▶️ John, Marco Oh no, and that’s like,

⏹️ ▶️ Marco and somebody asked me on Twitter, I think two or three days ago, like you know, I’m just starting out, should I learn,

⏹️ ▶️ Marco should I start with Swift? And I said, yeah, probably, because I think, yeah, if you’re

⏹️ ▶️ Marco starting from scratch right now, a year ago, I had a much more complicated like, well,

⏹️ ▶️ Marco depends, maybe this year, you know, I’m saying almost certainly,

⏹️ ▶️ Marco yes, you should start with Swift. Like if you’re starting from scratch now, start there. But

⏹️ ▶️ Marco if you already are an Objective-C expert and you’re trying to get

⏹️ ▶️ Marco a lot of work done quickly, it’s hard to justify making the transition right now as opposed

⏹️ ▶️ Marco to in a year or two.

⏹️ ▶️ John I mean, but you should think back to your Go experience. You had the same thing. It was like, well, is it worth

⏹️ ▶️ John learning a new language? What are the benefits? And you have to speculate. What is going to be the risk-reward?

⏹️ ▶️ John What is the expected benefit of me spending this time to use Go? Is it really going to make that much

⏹️ ▶️ John difference or am I just going to waste a bunch of time fighting with language I don’t know that well and end up with something with a bunch of bugs and I think

⏹️ ▶️ John the go experiment worked out pretty well for you but going in you don’t know for sure I think the uncertainty

⏹️ ▶️ John about Swift when it first came out was seriously Apple is this a thing are you really gonna do this like people didn’t didn’t really

⏹️ ▶️ John believe maybe people who don’t have a lot of experience with Apple like no they’re deadly serious right

⏹️ ▶️ John it could still be a disaster like there’s still room for disaster but so far signs are good that it’s

⏹️ ▶️ John not going to be entirely a disaster and Apple seems very dedicated to I don’t know if we talked about this in the last show,

⏹️ ▶️ John but we did in the pre WWDC. So hey, do you think we’re going to see Swift on all the slides

⏹️ ▶️ John or Objective C and Swift? And I think I said I thought it would be a mix. I think this year’s

⏹️ ▶️ John WWDC, Apple tried very hard to make all their examples use Swift. They

⏹️ ▶️ John failed. There were plenty of sessions with Objective C in some or all the examples. Some of them were exclusively

⏹️ ▶️ John Objective C, but you could see the effort. It was like, wow, I am surprised the amount of Swift I’m seeing,

⏹️ ▶️ John and I’m shocked at how little objective C I’m seeing again, Apple can do that. That’s, you know, top down

⏹️ ▶️ John command and control. It’s their conference. Uh, but they’re clearly signaling their intent.

⏹️ ▶️ John Swift is the future, you know, unless something super terrible happens.

⏹️ ▶️ Casey Yeah. In all the sessions I went to, I only noticed one and I don’t recall which one it was that actually

⏹️ ▶️ Casey had objective C in it and everything else either had both or in more cases

⏹️ ▶️ Casey than, than not, uh, only had Swift, which was relatively surprising to me that it was that quick.

⏹️ ▶️ Casey But you’re right, John, that they’re pushing it and they’re pushing it hard.

⏹️ ▶️ John Yeah, just download all the WC PDFs and search them with square brackets. Find

⏹️ ▶️ John out how many sessions actually had what was one of the ones was it metal

⏹️ ▶️ John or what’s new in Sprite kit or something. So one of the sessions I went to seemed to not

⏹️ ▶️ John have any Swift. It was just square brackets, square brackets. It was like going back in time, you realize how how many of the other sessions

⏹️ ▶️ John are just like they don’t even mention They’re just like, oh, and here’s this code, and here’s this, and here’s this. It’s amazing they’ve done this. They made

⏹️ ▶️ John a new language suited for a new API with totally new idioms, but still able to call into all the

⏹️ ▶️ John old stuff with all these conventions and all this crazy markup they’re doing to Objective-C. Oh, and

⏹️ ▶️ John they added generics to Objective-C so you could have typed collections, mostly to benefit Swift so they could tell

⏹️ ▶️ John that your NSArray is full of NSStrings and they don’t have to make it full of any object in the Swift world. But

⏹️ ▶️ John hey, even if you’re just in Objective-C, Marco, you could use the new generics thing if you feel like it. It’s gonna make

⏹️ ▶️ John you feel better about knowing that you have a homogenous set of objects inside your array instead

⏹️ ▶️ John of God knows what.

⏹️ ▶️ Marco Yeah, no, that one when I when I saw that, I was very happy with that. I mean, again, like I’m

⏹️ ▶️ Marco probably gonna start writing Swift code in the next year or two, like, with majority

⏹️ ▶️ Marco of my effort. But, you know, until then, and while

⏹️ ▶️ Marco I still have this fairly large, just of C code base, that’s very

⏹️ ▶️ Marco good to have. You know, like I, when Swift came out, it became pretty clear

⏹️ ▶️ Marco that like, you know, like almost every year before that, they were adding interesting features to Objective

⏹️ ▶️ Marco C. And then when Swift came out last year, and they added basically

⏹️ ▶️ Marco nothing to Objective C, the writing seemed like it was on the wall that, well, I guess that’s

⏹️ ▶️ Marco the end of this language’s progress. And, you know, obviously, I think we

⏹️ ▶️ Marco are close to the end of this language’s progress. But I think this is a nice little thing that, okay,

⏹️ ▶️ Marco well, even though it was in the service of making Swift interact better with this language, this language still

⏹️ ▶️ Marco is improving. And that is nice.

⏹️ ▶️ John The things they added to Objective-C before UniSwift existed? Almost all of those

⏹️ ▶️ John were also in service of Swift. In hindsight, we now

⏹️ ▶️ John, Casey realize, why does

⏹️ ▶️ John ARC exist? That’s the way memory management is done in Swift instead of

⏹️ ▶️ John garbage collection or test beds for things that would be necessary in Swift.

⏹️ ▶️ John Or even just like, if you want to go, we just talked about how do we convert your Swift 1 code to Swift 2 code, static

⏹️ ▶️ John analyzer, LLVM, think of pilot infrastructure, all those things like, boy, this is great, they’re really enhancing Objective-C.

⏹️ ▶️ John You can draw a line through all those changes and say, hmm, this was all leading to make Swift possible.

⏹️ ▶️ John And if you look at the timeline, some of it might have been happy accidents but

⏹️ ▶️ John some of it is clearly intentionally like I’m doing this for Swift but it’s going to be revealed

⏹️ ▶️ John to the world as an Objective C slash compiler feature you know so that’s

⏹️ ▶️ Marco well keep in mind also that Apple still has the vast majority of their code

⏹️ ▶️ Marco in Objective C it was not even like I mean we were even hearing like

⏹️ ▶️ Marco not that long ago that their build system couldn’t even include Swift yet like their standard build

⏹️ ▶️ Marco procedure couldn’t even do Swift yet as of fairly recently. It probably can now

⏹️ ▶️ Marco I assume but the fact is like Apple has probably the largest collection

⏹️ ▶️ Marco of Objective-C code in the world and they you know anything that

⏹️ ▶️ Marco benefits Objective-C benefits Apple and you know so they

⏹️ ▶️ Marco you know all these features static analyzer stuff like that like anything that helps Objective-C coding

⏹️ ▶️ Marco get more efficient and have fewer bugs, they could have just been doing for that. And I

⏹️ ▶️ Marco think it is… So that’s how you sell the

⏹️ ▶️ John features. Because it’s like, I have a Skunk Works project that seven people know about on a new language.

⏹️ ▶️ John Here’s what the new language needs. It’s like, well, okay, how do you sell that? Well, even if my new language

⏹️ ▶️ John ends up bust, these are all great things for objective C, so we should just do them anyway. And it’s like, all right, keep going, keep going. It’s just

⏹️ ▶️ John how you strategically pick the things you’re going to enhance in objectivity. Hmm, they all seem to… And they

⏹️ ▶️ John had to get rid of garbage collection, which by the way is finally deprecated. Oh, is it? It wasn’t already. Not not

⏹️ ▶️ John deprecated, removed, as in you’re you can’t as in like the

⏹️ ▶️ Marco runtime doesn’t support it anymore.

⏹️ ▶️ John I’m pretty sure either won’t run or you can’t build new ones with the new version of Xcode or both. But basically, it’s the

⏹️ ▶️ John end of garbage collection. The supported life of garbage collection is now or it’s been deprecated for years,

⏹️ ▶️ John right?

⏹️ ▶️ Casey Yeah, what else going on? Programming?

⏹️ ▶️ Marco More of it. That’s that’s going on.

⏹️ ▶️ John I’m just saying that’s that’s that was this episode. Every once in a while we do this.

⏹️ ▶️ Casey And we always get angry

⏹️ ▶️ John email. And people will have to endure it. But guess what? WWDC is a conference for developers and we are

⏹️ ▶️ John all developers, even if not all, for the same platform. And so it’s impossible to soak

⏹️ ▶️ John in a week’s worth of sessions about programming and not talk about programming. So we did!