Addy Osmani, Google Engineer, writing at Medium:
Tip: Preload resources you have high-confidence will be used in the current page. Prefetch resources likely to be used for future navigations across multiple navigation boundaries.
If you have a resource that’s on every page of the site (e.g. a logo) then
preload is what keeps that resource from blinking from one page load to the next. Today I introduced a graphical logo to DrinkingCaffeine and
preload does the trick;
prefetch does not. At work we’ve experienced the same thing. It takes
prefetch, to keep a resource perfectly smooth across multiple pages.
Font size 11 Arial is hard to read. Font size 11 Arial with a color of #535960 on a background of #242729 is illegible. If that lower right text is there for legal purposes, I sure hope the attorneys are happy with it because it might as well not even be there.
Before the change, the font size was 12 but it was darker — #9fa6ad. Now it’s #bbc0c4. The font size of the footer here at DrinkingCaffeine is 12 and that’s absolutely as small as you should go with any text on a website in a standard font family. Anything smaller than that and you have to scoot closer to the screen to see it.
Reducing the text column count from 7 to 4 was a good move. From a design standpoint, the new footer is a huge improvement. But from a legibility standpoint, it’s a step backwards.
Rui Carmo, Tao of Mac, last Saturday:
From the Soylent blog:
The Soylent team is thrilled to announce the latest flavors in its suite of nutritionally complete, ready-to-drink products: Cafe Vanilla and Cafe Chai.
Cafe Coffiest is an incredible drink. Great seeing new drinks added to the Cafe lineup. I would have to taste Cafe Chai before deciding if I liked it though. If it’s anything like the Nectar flavor, I’d leave it alone. In descending order this is my favorite list of Soylent drinks prior to today’s announcement:
- Cafe Coffiest
Michael Lopp in 2005:
The Free Electron is the single most productive engineer that you’re ever going to meet. I have not even provided a definition and I’m guessing a person has already popped into your mind that fits the bill.
A Free Electron can do anything when it comes to code. They can write a complete application from scratch, learn a language in a weekend, and, most importantly, they can dive into a tremendous pile of spaghetti code, make sense of it, and actually getting it working. You can build an entire businesses around a Free Electron. They’re that good.
This piece has aged very well. I recommend savoring every sentence.
This interview is just incredible. If you’re a software developer and want to see someone at the top of their game, this is it. Avi is a brilliant software developer and a great communicator. One of the fascinating stories in here is to hear in Avi’s words the story behind the Mach kernel’s name.
The striking thing that I just can’t get over about computer science in the ’70s and ’80s was the fact that everyone was writing so close to the metal. When launched, the applications “took over the whole computer” in Avi’s words. Developers had a firm understanding of exactly what was occurring at a hardware level. Nowadays, everything is a million times more abstracted and high level, and everything is highly highly specialized. You don’t program for nuclear submarines in high school any more, like Scott Forstall did.
Add this to the list of things that DuckDuckGo can’t do.
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.
Placing Apple’s logo in the center of this new roof had to have been a fun job. “Honey, guess what I did today?”
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?
Thirty percent is the amount that Apple makes when a song or album is bought outright on the iTunes Store. ↩︎
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. ↩︎
- 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 Forstall 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 Forstall was like to work with at Apple. Well, and it’s a hilarious video if you’ve never seen it.
- It’s sad that Forstall 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 Forstall 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?
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:
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?
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. ↩︎
See page 138 of the most excellent Becoming Steve Jobs for this story. ↩︎
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 moneyandtech.com is no longer an active website, even though it’s still registered under Jered’s name. Also curious that he moved to Colombia.
Terrific interview. It’s a shame this video has so few views. It’s very rich in breaking down what Bitcoin and cryptocurrencies in general bring to the table in practical terms.
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.
It’s really simple. Let’s say the URL of the JSON feed you want to grab is example.org/feed.json. Here’s how you’d go about looping through those items in Ruby:
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.
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.
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.” ↩︎
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.
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.
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. ⌨️
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:
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.
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 https://appleid.apple.com/account/manage and I try to change my Apple ID to my iCloud email, it spins endlessly with this console error:
Potentially unhandled rejection  ReferenceError: logError is not defined
If I use a different iCloud email address, I get this error:
Your Apple ID cannot end in @icloud.com. Choose a different email address.
I’m forced to have a primary non-iCloud email as my Apple ID and then have my @icloud.com 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.
Hopefully you can arrive at the person’s intent through all the misspelled words. ↩︎
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.