User Agent String Analyzer 

When you do front-end web work, it’s common to track events in a service like TrackJS for troubleshooting errors that are specific to certain device and browser combinations. Today I noticed that Drip provides the user agent of a device of a user when they submit a form, but it doesn’t provide a breakdown of what that user agent actually means. If you want to deduce from a user agent string what the operating system, browser name, and browser version are, that’s not always very easy. That’s where the User Agent String Analyzer comes in.

Compared to iTunes Music, Apple Music Is Hurting Artists

When you listen to a song on Apple Music, the artist gets about half a cent. What this means is that if you’re paying $10 per month for a subscription of Apple Music and you only listen to one song that month, Apple keeps the overwhelming majority of that $10.

The other day I was talking with a friend who’s a professional composer, musician, and performer. He made more money from his albums before streaming services existed. Back then, people had to buy their music. Now they can just stream it at half a cent per play, which is really a step down. This brings up a fascinating idea. Instead of Apple paying artists a fixed amount per stream, what if it instead kept 30% per month1 and then paid the rest to the artists in the proportion that their music was listened to? In the above scenario where a subscriber is paying $10/mo and only listens to one song, that artist would pocket $7.00 for that month from that subscriber. In the scenario where the person listened to 20 different artists in equal amounts, that $7 would get split 20 ways at 35¢ apiece. As an artist, the only way you’d be paid less than the current paradigm for a stream is if a customer listened to more than 1,400 songs in a month.2 As long as there is a majority of customers listening to fewer songs than that per month, then artists will get paid more per month with this proposed system than the current one. What artist wouldn’t want to get back to pocketing the same amount they were making prior to the advent of music streaming?

Obviously this would cut into Apple’s amount of revenue, but that’s the whole point: with Apple Music, Apple is making too much money. People complain about Apple charging too much for stuff all the time and I usually disagree with them because in a free market, a company can charge whatever it wants for its stuff. But Apple Music is different because it’s not selling Apple’s stuff. It’s selling other people’s stuff. Apple is only the vehicle.

My friend’s idea gets the artists back to making what they were before music streaming existed. Think about it this way. Right now, Apple is making more than 30% of the money that passes through Apple Music. In theory there’s no upper limit. If a month were to pass in which everyone stopped listening to music, Apple would pocket 100% of the subscription. That just doesn’t seem right. Thirty percent should be more than enough for providing the market place.

When you buy an album on iTunes, you have a guarantee that only 30% of that is going to Apple and the rest is going to the producers and artists. Why can’t it be this way for when you rent music via an Apple Music subscription?

  1. Thirty percent is the amount that Apple makes when a song or album is bought outright on the iTunes Store. ↩︎

  2. I’m arriving at that number by dividing 7 by .005. At a $10/mo subscription in which Apple keeps 30%, that leaves $7 to pay out to the artists, and .005 being the current amount of payment per stream. ↩︎

Thoughts on Scott Forstall’s Interview at the Computer History Museum

  • Here’s the link to the full interview. The audio quality is frightfully bad but the content is riveting.
  • Working on a Broadway musical is the equivalent of selling sugar water when you could be changing the world. Nothing wrong with selling sugar water but man, this is a step down from working at Apple. How does Forstall not feel like he’s spinning his wheels compared to what he did for two decades at NeXT and then Apple? Why isn’t he working at a tech company solving new exciting problems? Or is he, and he’s just keeping it under wraps?
  • Good choice picking NeXT over Microsoft when deciding where to work post-graduation.
  • How many people know how to both program and cook fish?
  • “I don’t care what anyone says. We’re giving you an offer and you’re going to accept it. But pretend like you care in the subsequent interviews.” So many little stories of Steve Jobs that are both brand new but instantly familiar sounding.
  • Turing Test
  • The iPhone started out as the iPad, which started out because Steve didn’t like a guy at Microsoft. Mmm.
  • “We’re not very good at going through orifices to get to the end user,” referring to carriers.
  • The first text message Forstall ever sent was on the iPhone.
  • The way carriers worked with hardware manufacturers with varying spec books depending on phone’s features is fascinating. Apple only agreed to the lowest level and then handled the rest exclusively on its end. Cingular Wireless (now AT&T) agreed to this proposition and they were not disappointed.
  • Scott’s recall of his efforts to make the wifi free at the Four Seasons so the iPhone could instantly connect to the network is great.
  • The story of Steve saving Scott’s life needs to be in every book on Steve Jobs. Having heard it, I now feel like Becoming Steve Jobs is woefully incomplete. Hadn’t realized just how close Scott was to dying.
  • Scott’s certainty of the iPhone’s success and excellence and his disregard for negative reviews is fascinating. In hindsight his gut was 100% right on.
  • Scott was surprised to hear of Jobs’ death. He always thought he could beat the cancer, but alas.
  • Agreed that skeumorphism is a terrible word. It’s the best single word to describe the original iPhone operating system though.
  • John Markoff needs some help. It’s easy to watch interviews by polished pros and take for granted how smooth they are. “I never know how to end these things” is not the final sentence you want to say when interviewing someone.
  • Completely an aside, but I must say something about Julian Smith’s short video One Bad App. The character who plays Forestall says that unfortunately he doesn’t like very many people. He comes across as short tempered. I’m only bringing it up here because it does make me wonder what Forestall was like to work with at Apple. Well, and it’s a hilarious video if you’ve never seen it.
  • It’s sad that Forestall had to leave Apple. Seriously sad. Watching him here, I’m thinking, Man, was there no way it could have worked out to keep this guy? He’s gold. If Forestall were to rejoin Apple today, I’ve got to imagine he would figure out a way to get along with Jony Ive.
  • In similar vein, I was recently viewing screenshots of iOS 6 and finding myself genuinely missing the skeumorphic design. Today’s flat design just has nothing of the character and wistful muse of the original. Seriously, look at a screenshot of iOS 6 and tell me with a straight face that you don’t sometimes miss this. Design taste and demand is in a constant flux. Will there be a time when the industry moves back to this en masse?

Is Sending Form Data Before the User Submits the Form a Bad Practice? 

John Gruber, commenting on the story about NaviStone:

Sending form data surreptitiously is morally wrong, and everyone knows it.

I’m not sure what’s in the fizzy water at Philly but this blew me away reading this. If you fill out information on a website, that data is fair game. If you do not want that information to go somewhere, do not type it. The submit button is nothing more than your indicating that you’re ready to go to the next screen. The submit button isn’t your permission for the website to have the data you wrote out. You gave that permission with each keystroke. Rather, the submit button is your way of telling the site that you are fully satisfied with your entry and you’re ready to carry out the next step.

Next he goes completely off the deep end:

This might sound hyperbolic, but I mean it: I think we’d better off if JavaScript had never been added to web browsers.

JavaScript is the backbone of the modern web. I recommend that Gruber disable JavaScript in his browser and see what kind of web experience he gets.1

  1. If he ever gets his site mobile friendly, John’s going to discover something: it’s impossible to have a mobile friendly website without some JavaScript. ↩︎

Chris Lattner’s Mysterious Departure from Tesla 

Tim Hardwick, writing for MacRumors:

Swift creator Chris Lattner, who left Apple to become vice president of Tesla’s autopilot program, has parted ways with the electric car maker after just six months in the job.

When someone leaves a job, it comes down to one of two reasons. First, because they have a new job lined up that they can’t refuse, and so quitting their current job is a necessary evil. Second, because their current employment is no longer viable for any one of a number of reasons.

I’ve always thought that it’s very rash when someone leaves their current employment for the latter reason if they don’t have something else lined up. Chris Lattner is somewhat of an exception to this rule since he can use is social capital at Twitter to announce his availability. Someone the caliber of Lattner doesn’t have to worry about going hungry. But his move is not the model for how an average engineer should go about a career change when they realize they are no longer compatible with their current job. Never outwardly despise what you currently have until and unless you have something better.

It’s very curious to me what happened at Tesla that caused Lattner to decide to leave. How long has he been planning on leaving? Tuesday night is an interesting time to announce this sort of thing.1 Had he been worried for months that things wouldn’t work out, or did it all occur suddenly?

When he was on an episode of the ATP show back in January, Chris seemed very amiable. A real pro. I have a hard time imagining his departure was due to an inflammatory outbreak. This isn’t like the story of when Alvy Ray Smith left Pixar after a shouting match with Steve Jobs.2 What was the reason then?

  1. As a complete aside, this news is exactly why I get SMS messages of DaringFireball updates. I was viewing Lattern’s tweet just 12 minutes after he posted it. I don’t follow Lattner on Twitter — I’m barely on Twitter at all for that matter — but I can trust Gruber to post this sort of breaking news when it’s this big. ↩︎

  2. See page 138 of the most excellent Becoming Steve Jobs for this story. ↩︎

How Hackers Stole Millions from Jered Kenna 

Speaking of Jered Kenna, this story caught my eye. Laura Shin writing at Forbes:

Just after midnight on August 11, self-professed night owl Jered Kenna was working at home in Medellin, Colombia, when he was notified the passwords had been reset on two of his email addresses.

He tried to set up new passwords himself by prompting the email service to send him text messages containing a code — but they never arrived.

This article is a powerful argument for using Coinbase as your storage method for Bitcoin instead of some random hard drive.

It’s quite a story, assuming it’s true. It’s curious that the domain is no longer an active website, even though it’s still registered under Jered’s name. Also curious that he moved to Colombia.

How Adobe’s Creative Cloud Subscription Billing Could Be Improved

If you have a paid yearly membership service that you offer to your users, I understand why it would make sense for you to default it to auto-renew. You don’t want to interrupt membership for your users by it unexpectedly cancelling on them. However, if you’re going to do that, you need to give your users the ability to cancel that auto-renewal if they so choose.

With Adobe’s Creative Cloud monthly subscription plans, you can’t do that. You can cancel at any time during a yearly membership, but doing so immediately ends your access to the Adobe’s software, and you’re billed 50% of your remaining monthly payments. What I’m talking about is simply having the ability to turn off the auto-renewal at the close of the current year. Doing this would continue to charge your account each month and you would continue to have access to the membership service, but at the end of that year, this would all stop. Most services I know have this ability. Strava is a great example of this.

Since Adobe doesn’t have that, if you want to cancel your subscription when your current year is up, you have only one recourse: manually cancel the subscription during the final month of your yearly plan. You can hope you get the email that Adobe sends you 2-3 days before the renewal occurs, or if you want a safer guarantee, you can set up a calendar reminder for yourself.

Here’s NightSkyGuy doing that very thing:

Creating calendar entry now to remind me to cancel next May.

A billing architecture that requires people to set up calendar reminders to cancel their subscriptions is just wrong. Your users shouldn’t have to do that. If they are, make no mistake—you built something wrong.

How to Scrape a JSON Feed in Ruby on Rails 

It’s really simple. Let’s say the URL of the JSON feed you want to grab is Here’s how you’d go about looping through those items in Ruby:

require 'net/http'
require 'json'

response = Net::HTTP.get(URI(''))
feed = JSON.parse(response)
feed['items'].each do |item|
  # access properties like title by e.g. item['title']
  # see for full spec

Here’s a full working example of what this looks like. It’s incredibly simpler and much more fun to work with than XML. Not even close.

Logging into an Alias of Your Apple ID Will Break Device Continuity

I want to do a followup to my entry on Wednesday about multiple email addresses associated with an Apple ID. For context, I have a Google Apps email address that serves as my Apple ID, and then an iCloud email address that’s an alias for that Apple ID. I can use either email address to sign into iCloud on my Mac and iPhone.

Disliking digital clutter, I wanted to change my Apple ID so that its email address would be my iCloud email address, and I wanted to then remove my Google Apps email address altogether. Why have two email addresses associated with the same Apple ID when just one will do?

What I discovered after reading forums and talking with Apple Support directly on the phone is that this consolidation just wasn’t possible. If I wanted to have an iCloud email address as my Apple ID, I would have to create a new Apple ID. No way to do that with a preexisting account.

Today’s followup is to show that this isn’t just a mere nuisance from a digital clutter standpoint. It actually gives you enough rope to hang yourself by breaking device continuity.

Here’s how this happened to me. A few weeks ago, I wearied of going to Settings in my iPhone and seeing my Google Apps email address as the Apple ID. I logged out of iCloud and logged back in, using my iCloud email address instead.1 Since it’s an alias of my Apple ID, I logged in successfully, and the email address in my iPhone’s Settings as my Apple ID updated accordingly. This made me happy and I continued about my day. What I didn’t realize was that by doing so, I’d completely broken device continuity. I slowly started noticing this over the coming weeks as I missed phone calls, lost the shared clipboard, and could no longer use Handoff. When device continuity was first introduced, it was buggy and didn’t work 100% of the time, so when I first noticed I’d lost continuity, I dismissed it as ongoing flakiness. As time went on however, I realized that somewhere along the way I’d completely lost the feature.

While I was on the phone with Apple Support on Wednesday, after confirming that it was impossible to change my Apple ID to my iCloud email address, and after getting to the bottom of a really annoying iTunes bug, I then inquired about why my device continuity no longer worked. After trying several things, including restarting my devices and upgrading to the latest software, the support specialist prompted me to make sure that I was logged into my primary Apple ID (my Google Apps email address), not an alias for it (my iCloud email address). Doing this fixed the problem. After being on the phone with Apple Support for more than an hour, I resolved all three issues. I didn’t like the answer to all of them, but at least I had answers.

The takeaway here is this: yes, you can use either your Apple ID or an alias of it to log in successfully into your iCloud account on your Mac or your iPhone. However, if you want device continuity to work, then you must use your Apple ID on both devices. If you use an alias on one or both of them, it won’t work.

Of course you’re not going to find anything about this anywhere on Apple’s site. But this shows just how absurd it is that you can’t make your iCloud email address your Apple ID. You should be able to do this. It’s not just for the sake of staying digitally tidy for its own sake. It has real life implications. It introduced a subtle gotcha that took me weeks to get to the bottom of.

  1. Throughout this piece, I refer to “logging out of iCloud” and “logging back into iCloud.” Because there are many apps on Mac and iPhone that require you to log into your iCloud account, let me clarify what I mean. For iPhone, I’m talking about going into Settings and tapping the very top row, scrolling to the bottom, and tapping “Sign Out.” For Mac, I’m talking about going into System Preferences -> iCloud and clicking “Sign Out.” ↩︎

Harvest Refreshes Its Design 

Matthew Lettini, writing at the Harvest blog back in May:

Did you know that Harvest turned 11 years old this past March? That’s right, Harvest is approaching its teens! We’re proud and thankful that, with your support, we’ve been able to build a useful product that helps businesses both track time and work smarter.

But with that many years behind us, Harvest is starting to show its age—the design of Harvest hasn’t seen a major update in a number of years.

One of the noticeable changes to the new design is the new Fakt font. I really like it when companies write about their design changes. It’s a great insight into the thinking behind the changes. I wished GitHub did this more.

Harvest’s design refresh is an improvement to the world’s best time tracker. I’ve been using Harvest for years and its Mac app is just so incredibly simple and easy to use. Even though I don’t have to track my time at my day job, I still do it just because Harvest makes it fun.

Amazon Buys Whole Foods 

I shop at Amazon because the prices are so good. I don’t shop at Whole Foods because the prices are so bad. It’ll be interesting to see these two companies come together. In what ways, if any, will Whole Foods change over the next few years? Time will tell.

Tabs Versus Spaces

Back in January when Chris Lattner was on the ATP show, he had this to say about file indentation:

Some people argue that you should use three-space indent because then you certainly can’t have tabs in your file.

That introduces just how heated the debate about tabs versus spaces can become amongst developers. David Robinson gave a new twist to this debate when he published this at Stack Overflow today:

This is a bit of a “holy war” among software developers; one that’s been the subject of many debates and in-jokes. I use spaces, but I never thought it was particularly important. But today we’re releasing the raw data behind the Stack Overflow 2017 Developer Survey, and some analysis suggests this choice matters more than I expected.


Analyzing the data leads us to an interesting conclusion. Coders who use spaces for indentation make more money than ones who use tabs, even if they have the same amount of experience:

Like David says close to the end, correlation does not imply causation, but there is undeniably a correlation and that is bizarre when you think about it.

I can see why people are so strongly opinionated about this. As Jeff Atwood said in the aforelinked piece, “Only a moron would use tabs to format their code.” You truly are either a tabs or a spaces person, and clearly spaces is the winner, to the tune of $15,390 in salary. I loath the idea of storing hard tabs in version control. And to be honest, I’ve seen a lot of repos but I can honestly say I don’t recall ever seeing hard tabs used in the repos I work on. If there are people out there who like them, more power to them. But to me that would be a gut check. If code is version controlled in hard tabs, that’s indicative of a whole bunch of other issues, and you don’t want to work there. You don’t want a $15,390 pay cut just so you can use hard tabs. I’ll fight this one till the cows come home because it’s just plain wrong. You can use your tab key so long as you’re converting to soft tabs, and that’s it.

The problem is that when I hear people talking about tabs versus spaces, I often get the impression that for them, tabs versus spaces actually affects their day-to-day flow. That shouldn’t be happening. If your IDE requires you to manually type tabs or spaces for the purpose of indentation, you don’t have a very good IDE. I almost never have to do this in PHPStorm or Atom. Maybe you have to do this in a dinosaur IDE like BBEdit, but who uses BBEdit today? Further, using soft tabs resolves this issue completely. If you use the tab key with this setting, your IDE will convert your tab indents as two or four spaces. Lastly, a good IDE configuration will include a keyboard shortcut that you can run in a file to have it auto-indent to your lint specifications. With all of these abilities combined, tabs or spaces is something that you simply shouldn’t have to think about at all. If you’re indenting your files by hand, you’re doing it wrong. I’ve written more than 500 lines of code over the past two days and not once did I have to spend any time thinking about this. In a similar vein, Manton Reece recently admitted he doesn’t really know whether he’s using tabs versus spaces in his code. That’s how it’s supposed to be. End of discussion.

Back to work. ⌨️

On the Confusing Nature of Locale-Specific Licensing in iTunes Music

I recently rewatched the 1968 movie Where Eagles Dare. It’s a great movie and I highly recommend watching it if you haven’t. It has a stellar soundtrack by Ron Goodwin and I wanted to listen to it on Apple Music. The problem was that I could not pull it up in a search, either in the iTunes macOS app or the Music iOS app.

I decided to go to Google to double check that it was nowhere to be found iTunes, since iTunes has very primitive search and often can’t show every result from its database unless your query is a perfect match. Sure enough, a Google search for “where eagles dare itunes soundtrack” brought up this result on iTunes, showing plainly that the album was for sale in the iTunes Store as well as available for streaming via Apple Music. When I clicked on a button labeled “Listen on Apple Music” link, iTunes opened up to a blank screen. This was very confusing. I thought iTunes was broken or something. After talking on the phone with Apple Support, I made a discovery: when I visited that same iTunes URL in Safari on my iPhone and clicked the link, I got this helpful message in the Music app:

Item Not Available
The item you’ve requested is not currently available in the U.S. Store, but it is available in the U.K. Store. Tap Change Store to view this item.

When I tapped Change Store, I got this message:

This Apple ID is only valid for purchases in the U.S. iTunes Store. You will be switched to that Store.

Not only could I not stream the Where Eagles Dare soundtrack in Apple Music, I couldn’t even buy the album out right in iTunes. I got this same response. Here’s why this is ridiculous: if I were willing to pay enough, I could buy the CD from a U.K. store and have it shipped across the Atlantic Ocean. I could do that, but I couldn’t pay for it in any fashion with my current Apple ID in iTunes.

That aside, it’s a flaw in macOS that the iTunes screen is blank when I try to visit the album. Whilst exploring this, I also noticed that iTunes would get confused and show this instead of a blank screen when I clicked on its For You, Browse, and Radio tabs:

{"message":"HTTP 404 Not Found"}

The only way to get past this JSON error was to quit the app and start it again. iTunes on macOS is buggy and broken. There’s no other way to put it. At least the Music app on iOS showed appropriate error messages. iTunes on macOS couldn’t even do that. It’s desperately due for an overhaul. I’m looking forward to the day when Apple Music treats its desktop customers with the same care to detail that it does for its mobile customers.

The Ridiculous Inability to Use an iCloud Email Address as an Apple ID 

mswcpt, in an Apple discussion thread back in 2013:1

Like the other other Apple customers here, we don’t want to have 2, 3, 10 or 7 email addresses. We want ONE. Because we had (now in hindsight directly caused this problem) by using a NON-APPLE email intially [sic] as the ID and then an @icloud address for the icloud account and email, we are the ones NOT in a position to get rid of the email associated with the ID and move it to the icloud email address. There are fortunate people out there who have set-up new accounts, devices from scratch who were not Apple customers before that have been able to from the very beginning have their icloud address as their Apple ID, and therefore ONE account.

This means that us poor sods have to go through the inconvenince [sic] and frankly seamingly [sic] unecessary [sic] pain to create digital clutter in our lives and be forced to open some unused email account simply to use it as an Apple ID. What an utterly perposterous [sic] and cumbersome system.

I think it is ridiculous.

Yes, it’s very ridiculous. When I am at and I try to change my Apple ID to my iCloud email, it spins endlessly with this console error:

Potentially unhandled rejection [5] ReferenceError: logError is not defined

If I use a different iCloud email address, I get this error:

Your Apple ID cannot end in Choose a different email address.

I’m forced to have a primary non-iCloud email as my Apple ID and then have my email as an alias. Here’s what I see when I click on the ? at the “Reachable At” section of the page:

This is an alias of your Apple ID email address.

Give me a break.

  1. Hopefully you can arrive at the person’s intent through all the misspelled words. ↩︎

A Pen, a Job 

This is a great reminder of the importance of getting your work out there. When you put your designs and code on the web, people notice.

GitHub Changes Syntax Highlighting 

It’s now more garish, similar to the rest of the site’s design. Also the highlight yellow that you get when you click on a line of code has changed. I’m seeing a lot of orange and purple now in JavaScript files. This is a continuation from the February and March design changes to the site.

One Hundred Million Pull Requests Merged on GitHub 

GitHub, in a tweet a week ago today:

Congrats! You’ve merged 100 million pull requests. That’s a lot of features launched, bugs fixed, and code made bette

The openshift-docs repo was where this occurred. It’s an impressive milestone. More than 1,000 of those merged pull requests came from yours truly.

Why Broke on 32-bit iOS Devices 

Erik Allebest, CEO of

Well, there’s nothing like waking up to a dozen of your friends texting you saying “Wow! Congrats! You made Hacker News… sorry it’s BAD news.”

For those who don’t know, Hacker News is one of the major sources of tech news on the interwebs and is closely followed by major news organizations to see what will bubble up to the top. (It’s a bit like a tech-focused Reddit.) The post that hit Hacker News’ homepage was this one:, which included the headline: stopped working on 32bit iPads because 2^31 games have been played

That’s a lot of chess games.

Craig Federighi and Phil Schiller on The Talk Show with John Gruber at WWDC 2017

This episode of The Talk Show is every bit as important as the WWDC opening keynote. Further, it’s more enjoyable because of how personable it is. You really get to see these three men in a way that you just don’t get to any other time of the year. iMore began to transcribe it and then gave up after the first 25 minutes or so, and bizarrely never followed up with the rest of it even though it promised it would. This must be because the official video was released shortly thereafter. Still, I’d love to be able to search the text from this talk, and it’s not up on David’s PodSearch tool yet. He’s actually a couple of episodes behind.

Here are some highlights from the show.

  • Interesting that the opening keynote was three and a half hours, before the team trimmed it down to 2.5 hours. But they did cover more than a podcast, in Schiller’s words. Burn!
  • These two guys are really smiling a lot at the beginning. They’re nervous, despite their position.
  • The care that Apple has over things like mail size efficiency isn’t a commonly discussed issue but it improves things behind the scenes. That’s what we love about Apple — its care to details, publicized or not. It’s my own fault, but whenever I hear about improvements to native apps like this that I don’t use, it’s painful because I know I won’t be a beneficiary. Perhaps the Airmail team can get some inspiration though. I know that whenever I open DaisyDisk and try to see where all my space has disappeared to, mail usually claims a good 5GB.
  • The story of an employee caught with an auto-playing video ad on a non-beta build of macOS in the very briefing for Safari’s autoplay block feature was hilarious.
  • Craig reads Daring Fireball very closely. When Gruber wrote that Chrome was faster than Safari, Craig had to go fact check and then declare on stage that Safari was faster than Chrome. I wonder at what font size Craig has cookied Daring Fireball. Also, what’s the likelihood that Schiller and Federighi have followed Gruber more closely in the past year after WWDC 2016, since they figured they’d have a good chance of being on The Talk Show again? I could see that.
  • Craig’s comment that “it takes longer to build things right” regarding privacy during machine learning and photo recognition is a diplomatic way to put the fact that Apple is lagging behind on AI.
  • File system upgrade: rolling everyone’s phones to APFS and then back to the old system during the upgrade from 10.2 to 10.3 - that’s some care right there. “Measure twice, cut once.” That’s exactly what Gruber told me when I asked him why he still had his site’s design in the dark ages. Regarding APFS though, it’s really true.
  • The fact that Bill Evans, 10 seconds after the keynote appeared announcing the new iMac Pro, sent an SMS to Gruber that “This is NOT the Mac Pro” shows you just how close this group is. They all have each other’s phone numbers and stay connected like that. I love inner circles like this.
  • iMac Pro: because there are people who like an all-in-one. That’s how the Mac got started. Good point, Phil.
  • External GPU kit. Wow. I’d missed this in the keynote. The world is moving to GPUs. The perf increase is way better than for CPUs. Schiller wants it to be clear that this is for the pro customers.
  • John f****** Knoll, Gruber says. And then he says he’s the inventor of Photoshop? Eh, that’s Thomas Knoll you’re thinking of, not John Knoll. They do look kind of similar. I like how nobody corrected him, because that would have gotten weird.
  • “Not tentpoles for new features but frameworks for developers.” Good positioning for the new kits that are being released. Apple is empowering devs to do amazing work. Not just giving them a walled garden with all the flowers already planted. That’s a very wrong misconception. The AR and VR stuff that we’ll see coming out later this year that is built on these kits is going to be incredible. I really cannot wait. Developers are completely stoked about AR. The room started raising a bit when this was announced, as Craig said.
  • This is all putting to rest the notion that Apple is done with the Pro market. Right on. Nobody can say that with a straight face now. And just wait until the Mac Pro debuts.
  • I had also completely missed the amazing smoothness that will come with 120 hertz on the new iPads. Definitely need to check this out in the stores when they hit. ProMotion display. It’s unbelievable? Jaw dropping? Must see this.
  • Dragging and dropping a file from one sandboxed app to another is a hard problem to solve in iOS, but it sounds like Apple has done it in a way that could not be more secure. I like Craig’s illustration of puncturing a user-driven pinpointed hole so that a sandboxed app can hand off another sandboxed app that file.
  • APFS instant snapshots. A “copy” in air quotes. It’s not a hard copy. I knew it! It’s a memory reference. That’s all. I imagine that it never does a deep clone. Think of it as version control. When someone goes to edit one of the two copies, it’s like a new branch on top of a master branch. The edit is like a commit with only that edit’s changes. That’s how you get around having to ever do a deep clone. Really smart. No reason a file management system can’t act like git does. Not in 2017.
  • Gruber has an astute observation. When you boot up a Mac, you’re in Finder. When you boot up iOS, you see apps. Huge difference between the two operating systems.
  • The voice for Siri is kind of like the typeface of a GUI. Great analogy. Love Craig’s story of the person who heard a new iOS 11 beta Siri voice over his CarPlay and mentioned the voice sounded great and then Craig had to act nonchalant about it so as to not give anything away.
  • “You no longer have to say ‘dingus’, Gruber.” Wow Schiller really listens to The Talk Show. Hadn’t realized these VPs followed DF that closely. Repeatedly amazed throughout the talk regarding this.
  • The bot vote on what Apple device Siri should respond. Amazon is already doing something like this but are its devices doing it locally or in the cloud? Schiller gives the impression that the competition is all doing it in the cloud. Fascinating that if you’re closest to a device, by default that device should be the one that responds to you, unless you had been talking to a different device prior to that, in which case that device gets weighed into the vote, presumably with a severe decay factor. Craig is a computer scientist. He loves nerding out talking about this stuff. And he really does understand to a certain technical level of depth a lot of how Apple’s products work.
  • Messages being backed up, encrypted end to end, in the cloud, with the encryption keys only being stored on your device, and the keys are rolled. Beautiful. The audience loves this and rightfully so. Apple is the tech company for privacy. It might be slower in AI innovation than the competition but I’d rather use something that isn’t at the very head of the curve but that will eventually get there than something that is in danger of getting hacked.
  • The ability that Schiller already talked about somewhere on some podcast, to choose whether you want to reset your rating or not as a developer when you submit an app update to the App Store. What podcast was that?
  • Interesting that the #1 thing Apple’s been begged to improve in the App Store is the discoverability of apps. You have the handful of huge winners and then everyone else mired in mediocrity to an extent. Giving better exposure to the long tail will make a lot of people happy, developers and consumers alike.
  • Schiller cares about the Mac App Store, just like he cares about the Pro market. I believe him. It’s just going to take time to ship an overhaul, and it made sense to do the iOS store first. I’m looking forward to ways that the Mac App Store improves. I just hope it isn’t too late when those improvements finally arrive. Then again, it’s never too late. If zero people are currently using the Mac App Store when it finally gets improvements, if those improvements are great, people will check it out just like they did on day one when it originally came out and had zero users.
  • Multidirectional source of the HomePods. Gruber had a hard time believing that all that sound was all coming from one place. iPod HiFi was before my time but I see the humor in its comparison.
  • The guy shouting “Make Siri better” during this part was being a jerk but he has a lot of support: a lot of people are complaining about Siri’s accuracy.
  • Leaks anger Apple, but this time around, very little leaked prior to the keynote. And the things that did leak came from the supply chain. Interesting to hear Schiller explain the reason why Apple hates leaks so much: because it steals the thunder from the developer teams who worked so hard and want to see people’s delight when their work first sees the light of day. That makes a lot of sense. But the funny thing is that when a screenshot leaks, I daresay it gets way, way more views from admirers than if it only shows in a WWDC keynote. How many people will read a “Here’s a Recap of WWDC” versus “Leaked Screenshot of Top Secret New Apple Software”? Maybe it’s just me, but I would actually prefer the taboo popularity of my work getting leaked out in little bits. Leaks enhance coverage; they don’t detract from it.

The Exploding MacBook Pro Story Wasn’t Fake 

Daniel Dourvaris, in response to questions over the legitimacy about his exploding MacBook Pro story:

You might consider it to be fishy and fabricated, but personally in retrospect I’m annoyed at myself for not having the state of mind to take a video of the laptop while it was on fire.

The only thing that was going through my head was, — I just lost what I was working on all day and yesterday — and my fingers hurt.

Daniel’s replies to the comments at his original story seem genuine too. I take back everything I said and I’m sorry. Daniel just doesn’t use social media a lot, he’s never published before, and he doesn’t anonymize his private GitHub commit history, which explains why he seems to be technologically offline even though he isn’t. Good to hear that Apple replaced his computer, too.

cd - 

Avinash Raj:

cd - switches between the old and new present working directories.

More importantly, this works with git checkout -. If you have a feature branch that you can never remember the name of, and you’re switching between it and master, you’d otherwise have to keep doing git branch to list your branches and see the one you want. If you’re working in git a lot, this will really help your flow.

Bitbucket’s New Design 

Liam Greig, writing from the Bitbucket blog back in April:

A good user interface gets out of the way and makes it easy for teams to understand, focus on, and complete their work. We’ve been listening to our users on how to improve the navigation of Bitbucket Cloud’s UI and have been hard at work for over a year to address the feedback. Today we’re taking the first step in improving Bitbucket Cloud’s UI and launching a new navigation experience.

Let’s hope that one of the next steps is introducing the ability to search code. We still don’t have that with Bitbucket. We can search commits, but we can’t search the actual code. It’s probably not easy to implement, but it’s used all the time on GitHub. I use this feature daily.

Bitbucket’s new interface is an improvement. I don’t care for the garish blue though, but it makes sense. Atlassian uses a Microsoft tech stack and Microsoft’s design influences Atlassian’s design initiatives.

Is TypeScript Worth It? 

James Kyle makes a good case for the fact that Flow will accomplish everything that TypeScript does, but faster.

Also, if you really want to know what he thinks about TypeScript:

TypeScript people really just can’t help being dicks. What a miserable community

I’m only peripherally aware of TypeScript. It seems interesting, but it’s hard to get excited about it for a lot of reasons.