The Thing about Daring Fireball

I’m trying to remember when I first visited My best guess is that it was somewhere around 2009 or 2010. I was a teenager at the time, and the site was too sophisticated for my adolescent taste. But as I finished high school and eventually realized I wanted to be a software developer, my interest in the site increased. By 2012 I was reading the site fairly often and listening to an occasional episode of its Talk Show podcast. By 2013 I bought my first t-shirt. By 2014 I bought my second t-shirt. By 2015 I was reading everything and listening to most everything. By 2016 I had built a robot that sent me an SMS message whenever new linked list items were posted to the site. Today, I don’t know where I would be without Daring Fireball.

This week, Daring Fireball turns fifteen years old. When the blog started in 2002 as a column for “Mac Punditry and Curmudgeonry,” Apple was relatively small in the list of world companies, and the World Wide Web was still relatively new. Today, Apple has the highest market capitalization of any company in the world, and the World Wide Web has matured into a platform of billions of regular users. It stands to reason then that over the course of the past fifteen years, many blogs and columns surrounding the subject of Apple would have cropped up. They have. But none of them have arrived at the same caliber with which Daring Fireball started. Daring Fireball has no peers; it has no close seconds. I cannot improve upon how its author put it two years after the site’s debut:

The implicit immodesty of the sentence to follow pains me, but here goes: I don’t think there’s anything else quite like Daring Fireball.

This statement was factually correct in 2004, and it remains so in 2017. There’s a danger in attempting to list an outline of the reasons why there’s nothing else quite like Daring Fireball, and that is this: it might incline the reader to reduce its differentiation into a formula that is replicable. And while it might be tempting for skeptics to postulate that there is no secret sauce to the site’s superiority to all other Apple columns, such skeptics would be remiss to deny that there is a peculiar quality about Daring Fireball that is difficult to place one’s finger on. Though hard to define, it is undeniably present. I have spent much time thinking upon this, but I am no closer to arriving at pontificating what precisely this is than when I began, though my lack of success has not stifled my enthusiasm for its pastime. Be that as it may, the obvious points of outward distinction can be described easily enough, and they are worth visiting as reminders of what the on-paper steps towards the pursuit of excellence look like.

  • The site has an attention to detail that is unparalleled in its every aspect. The design is impeccable. The language structure and choice of words has a finesse and a distinctive air of being simultaneously deliberate and natural. John Gruber once said that he made a somewhat lousy software employee, which I think was a brutally candid confession. His thoroughness is too complete to be of optimal usefulness in the environment of most technical enterprises. That very drawback though is the thing that makes Daring Fireball so unlike anything else.
  • The writer has his moments of frustrations and critiques, but they are done at a high level, as from someone who has an internal locus of control, who knows he’s right, who’s okay if all the world disagrees. These rants are not done in the way that so many others do them; they are not generally seething with ill-founded righteous indignation and with the dismay that perhaps all is chaos and ultimately doomed. Instead, they are built upon the calm conviction that there is absolute right and wrong, come what may, and that eventually all paths lead to the resolution of justice. This stability issues forth out of a belief that offers no proof; indeed, it feels no need to offer any proof.
  • Importantly, these aforementioned attributes have not arisen as an effect of Daring Fireball’s popularity. When you peruse the earliest columns of the site, you recognize these attributes immediately. They are innate; it is unfair to to say that these attributes were construed at the site’s debut as an artifice to boost its appeal. Rather, they have worked because they reflect the genuine nature of the author.
  • The site has its fair share of meanderings and distractions as do columns abroad, but these bypaths are done with a level taste and unusual pathos that forces the reader to (perhaps sometimes grudgingly) appreciate them.

I do not agree with Daring Fireball on many things, and I am very vocal about my disagreements. I mention this as a strength of the site. Strongly disagreeing with certain pieces on the site does not preclude enjoying it. That’s a testimony to just how there’s nothing else quite like Daring Fireball.

To avoid the embarrassment of being perceived as obsessing over a specific site or individual, there is a constant temptation to say that all good tech columns are more or less operating on a level playing field, and that they deserve an equal amount of time in one’s browser. This is profoundly wrong. Not all Apple blogs are created equal. Daring Fireball is one of the few that is read by and gets interviews with Apple VPs.

There’s a tendency in human nature to be silent in admiration and loud in complaining. I am as guilty as anyone in this matter. We keep quiet about Daring Fireball’s excellence because we know it, and we assume everyone else knows it. We find plenty of time to murmur, and too little time to praise. At the fifteen year anniversary, it’s a good time to reflect upon what the world would be without Daring Fireball.

Here’s to another fifteen years, John.

Tim Cook Weighs in on Charlottesville 

Tim Cook had this to say to his employees:

I disagree with the president and others who believe that there is a moral equivalence between white supremacists and Nazis, and those who oppose them by standing up for human rights. Equating the two runs counter to our ideals as Americans.

Nobody respectable is saying that there’s a moral equivalence between white supremacists and Nazis, and those who oppose them. We have no place in this country for true Nazis. It’s sadly true that some of the protesters at Charlottesville were unequivocally white supremacists and wannabe Nazis, and those people should be renounced. But many of them weren’t that at all. Just because you oppose the taking down of statues does not make you a monster. I think Scott Adams made the best argument for why taking down the statues is a good thing for America at this time, but not everyone would agree with that, including black confederates. To quote Walter E. Williams:

The flap over the Confederate Flag is not quite as simple as the nation’s race experts make it. They want us to believe the flag is a symbol of racism. Yes, racists have used the Confederate Flag, but racists have also used the Bible and the U.S. Flag. Should we get rid of the Bible and lower the U.S. Flag? Black civil rights activists and their white liberal supporters who’re attacking the Confederate Flag have committed a deep, despicable dishonor to our patriotic black ancestors who marched, fought and died to protect their homeland from what they saw as Northern aggression. They don’t deserve the dishonor.

These are complex issues, and there well-intentioned and evil-intentioned people on both sides of this issue. If someone isn’t willing to come to terms with that, and if they get all bent out of whack by anyone who says as much, they’re blinded by partisan politics and they’re hallucinating an alternate reality. If someone can’t conceive a universe where there’s a way to peacefully protest on either side of an issue like these statues, they are being unfaithful to history. The peaceful aspect of this is key, and sadly neither side of Charlottesville maintained a peaceful spirit.1

Tim Cook redeems himself in the next paragraph:

Regardless of your political views, we must all stand together on this one point — that we are all equal. As a company, through our actions, our products and our voice, we will always work to ensure that everyone is treated equally and with respect.


  1. Within the legal framework, there’s a time and a place for violence: namely, if you or those in your care are being violently assaulted. The violence on both sides extended past this boundary, and there is no justification for that. That said, if you take the worst that the opposition did and compare that to the worst that the anti-opposition did, it is clear that the former is guilty of the greater evil in this particular case — that of cold blooded murder. ↩︎

Cloudflare Terminates Customer Due to Political Pressure 

Cloudflare CEO Matthew Prince:

Earlier today, Cloudflare terminated the account of the Daily Stormer. We’ve stopped proxying their traffic and stopped answering DNS requests for their sites. We’ve taken measures to ensure that they cannot sign up for Cloudflare’s services ever again.


We’re going to have a long debate internally about whether we need to remove the bullet about not terminating a customer due to political pressure. It’s powerful to be able to say you’ve never done something. And, after today, make no mistake, it will be a little bit harder for us to argue against a government somewhere pressuring us into taking down a site they don’t like.

Aside from whether Cloudflare made the right move here or not, it’s kind of hard to keep a bullet point that’s no longer true.

GitHub Introduces Embedded Code Snippets 

I just started noticing this feature the other day and I love it. It’s a fantastic iterative improvement. You can even paste a permalink from one private repository to another private repository, and it’ll expand it.

Jason Snell Weighs in on Safari Favicons 

Jason Snell, writing at Six Colors:

If I had to guess why Safari doesn’t support favicons in tabs, I’d say that Apple’s designers probably think most favicons are ugly and contribute to visual clutter.

This sounds right to me. When Apple makes a product decision, its top priority isn’t, What will get the most market share? Apple isn’t primarily worried about market share. Keep that in mind when you read this quote from Gruber’s piece:

I really can’t say this strongly enough: I think Safari’s lack of favicons in tabs, combined with its corresponding crumminess when displaying a dozen or more tabs in a window, is the single biggest reason why so many Mac users use Chrome.

If Apple’s designers have it in their heads that “most favicons are ugly and contribute to visual clutter,” then they can’t care less that adding this visual clutter might increase Safari’s popularity. Gruber is going to need better persuasion than this if he hopes to change the thinking at Apple regarding Safari favicons.

As an aside, it’s hilarious that a person would make this favicon issue the determining factor in whether they used Safari versus Chrome. They’re two completely different products. Safari is unusable for frontend developer work, so I pretty much never use it except to troubleshoot CSS flexbox bugs that are specific to it. I was only vaguely aware prior to Gruber’s piece that macOS Safari didn’t show favicons. To me that’s just one of the many inferior design choices that the team made. The real issues with Safari lie in its developer console tabs UI and UX. That’s where Chrome really is the best in the industry. If we did a survey of how many frontend developers on Macs did their development in Chrome versus Safari, I bet it’d be a 20:1 ratio, or higher.

A Better Way to Handle Website Footnotes

The bigfoot.js library is a popular solution to footnotes on the web. I’ve never personally been a fan of it though, because bigfoot.js footnotes are invisible unless you interact with the page. I prefer the visual beautify of small footnotes omnipresent at the bottom of the page, with links that jump you to and from them. It’s a slightly less ideal UX, but it’s a much superior UI.

I’ve noticed two problems that arise with out-of-the-box kramdown footnotes, however:

  1. They always jump you down slightly too far because they jump you to exactly where the text occurs. As a result, you always have to scroll up a little to the context of where you were.
  2. They interfere with your browser history. If an article has a couple of footnotes and you jump down and back up for both of them, that pushes 4 distinct shebangs to your address bar and history. You then have to swipe backwards five times in mobile Safari to get to your previous page. That’s quite cumbersome.

I decided to fix both of these problems with a bit of JavaScript. Here’s what I came up with, using ES6:

$(document).ready(() => {
   * @param {element} e The element that was clicked
   * @return {element} The element that is being pointed to
  const goTo = (e) => {
    let goTo = $(e.currentTarget).attr('href');
    // remove the pound sign
    goTo = goTo.substr(1);
    // Use document.getElementById() to accomodate colon in element id
    // (
    return $(document.getElementById(goTo));

   * The amount of top padding when scrolling to/from a footnote
  const padding = 10;

  $('.footnote').click((e) => {
    $(window).scrollTop(goTo(e).offset().top - padding);

  $('.reversefootnote').click((e) => {
    $(window).scrollTop(goTo(e).parents().offset().top - padding);

This solves both problems mentioned above:

  1. Instead of jumping down too far, you’re always given a padding of 10 pixels. Plus, when jumping back to the text that cites the footnote, you’re sent to the outer element that contains this footnote (hence the parents() call). The resulting parent will usually be a <p> or a <li> tag. This is nice, because it gives you the full context of citation. Only in cases of very long paragraphs of text would this result in the user getting scrolled so high that the footnoted sentence is out of sight.
  2. Instead of allowing the click or touch event to be handled by the browser, JavaScript is intercepting the event and preventing the default behavior, which means no shebangs are pushed to browser history.

Here’s a gist of my JavaScript. I’m using this code here at Drinking Caffeine too, so you can demo the new footnote experience on any article that has footnotes, such as this recent one.

A Question for Google’s CEO 

Conor Friedersdorf, writing at The Atlantic:

I have a question for the CEO.

Given that the full text of the memo is public, that it is the subject of a national debate on an important subject, that many educated people disagree with one another about what claims it made, and that clarity can only help Google employees adhere to the company’s rules going forward, would you be willing to highlight the memo using green to indicate the “much” that you identified as “fair to debate” and red to flag the “portions” that you deemed Code-of-Conduct violations?

This gets to the crux of the matter.

As an aside, I’m loving how diplomatic Daring Fireball is about this whole affair. Very aloof.

James Damore Has an ‘Above Decent’ Chance of Winning His Legal Case Against Google 

Jim Edwards, writing at Business Insider:

Google may have difficulty establishing that he broke the company’s code of conduct because he used message boards the company provided to allow employees to discuss these issues, and because his manifesto repeatedly states he favors diversity and intended to “increase women’s representation in tech.”


“Damore’s possible claims really have nothing to do with whether white males are discriminated against in wages and promotion,” Sharpe said. “It is about whether he was fired because he complained that Google’s diversity efforts were unfair to men. He doesn’t have to prove the allegation, just that he made the claim for the purpose of advancing working conditions of himself and others.”

So James won’t have to prove that his allegations were correct to win his case.

A Silent, 10-minute Song is Climbing the iTunes Charts 

Nathan Ingraham, writing at Engaget:

If you’ve ever plugged your phone into your car stereo, only to have the same song start playing every single time, I have some good news for you. Yesterday, a true internet hero named Samir Mezrahi released a song on iTunes that’s just 10 minutes of silence – and he named it “A a a a a Very Good Song.” Since the iPhone starts playing music alphabetically when you plug it in to many car stereos, that usually means there’s one song that you hear whether you want to or not. Many songs starting with the letter A have probably been ruined thanks to this quirk – but if you download Mezrahi’s creation, you’ll instead have plenty of time to queue up the songs you want to hear.

This has been a source of grief to me for ages. That song has heretofore been Abandoning Ship from the film score of Pixar’s Ratatouille. I’ve added A a a a a Very Good Song to my Apple Music library as its replacement. Well done, Samir Mezrahi.

Via 512 Pixels.

The Developers Who Can’t Work at Google 

James Damore can’t work at Google, I can’t work at Google, and neither can Kylie Erin Robison. She writes:

I say all of this with deep sadness because as many know, being an engineer at Google is my dream job. I had read into their interview process and studied like crazy so I could be their best candidate once I graduate but, as a young woman, I do not think Google is the place for me anymore.

I guess Scott Adams hasn’t had a chance to talk one-on-one with her yet.

Scott Adams Frames the Google Manifesto in Fresh Terms 

I highly recommend listening to this ten-minute video on Periscope, but due to Periscope’s poor buffering in rewatch mode, I jotted down a few pertinent parts:

Women don’t really know what we’re saying. Women have no idea what we’re talking about privately. Women also don’t know what one woman will say to one man privately.

My life experience is that one on one, men and women almost completely agree on this topic of STEM jobs. If I’m talking to a woman or a man one on one, the opinions are almost identical. Pretty much a hundred percent of the time. If nobody else is listening, we agree on everything. I won’t even tell you what it is we agree on. As soon as you get in public, the rules change, because in public, you’re working on the greater good. Which is why I support Google in firing this guy.

Basically, he’s saying that we are obliged to virtue signal in the theater of public life, but when the mic’s off, everyone agrees with James Damore, men and women alike. Anecdotally, my life experience jives with this.

Google’s Blatant Hypocrisy 

Steve Sailer:

If you go to Google and type in American inventors you get back from Google pictures of the top American inventors of all time.

The #1 American inventor of all time is Lewis Howard Latimer, who, I just learned, worked with both Edison and Bell.

Thomas Edison is in 6th place and a well-tanned Alexander Graham Bell in 9th place, with ten black inventors rounding out the top dozen.

It’s shocking, but Steve’s right. If you Google “United States inventors” however, you get the expected results. This is also true if you switch to the Spanish version of Google and search Inventor Americano, the Spanish equivalent of American Inventor.

Why would Google want you to see different results for the same query based on your ethnicity? Sounds like racial profiling to me.

If Google wants to play those kinds of petty games, that’s its deal. Here’s the thing though: African Americans only make up 2% of Google. So we have a company that committed the ultimate virtue signal by firing James Damore for his falsely alleged “dislike of diversity.” Meanwhile this same company is steeply under-representing African Americans in real life while at the same time over-representing African Americans in search results, based on the searcher’s ethnicity.

That’s blatant hypocrisy. My boots are in the other room, excuse me.

Google Fires James Damore 

Here’s what James Damore actually said:

I value diversity and inclusion, am not denying that sexism exists, and don’t endorse using stereotypes.

Despite what the public response seems to have been, I’ve gotten many personal messages from fellow Googlers expressing their gratitude for bringing up these very important issues which they agree with but would never have the courage to say or defend because of our shaming culture and the possibility of being fired. This needs to change.

Have the Social Justice Warriors even tried to understand what James Damore has written? His publishing of this manifesto took exactly the sort of courage that SJW’s claim to herald as vital in this supposed age of thought suppression.

My minor is in psychology. Some of my professors were men, some were women. All of them were left-leaning. All of them promoted left-leaning textbooks. You know one thing that came up class after class? There are differences between men and women. As one example, there’s a greater amount of association fibers connecting the cerebral cortex in women. As a result, women are usually in touch with their feelings better than men are at a physical level.

Everyone innately knows there are differences between the sexes.1 It’s visually obvious, and those differences permeate much more than just the external appearance. Saying this much isn’t going to trigger a SJW. You can say that without getting fired, because it’s science.

What is anathema and will get you fired? Suggesting that maybe those differences actually have a bearing on real life in practical terms, particularly when it implies that men are going to be better (or worse!) at different kinds of jobs. As @rakyll wrote and then deleted:

Write a doc about how inferior women are, then try to be a hero by offering help to save the vulnerable

Still shaking in anger.

Sounds like a pretty well-connected cerebral cortex to me.2 As @jimmargraphics put it:

If that document makes you shake in rage, as one female employee put it, I think it’s time to reassess where you are in life.

My man @pearsonified said it like this:

The magic of tech ends where the pettiness of identity begins.

Anyway, James Damore is a bright guy with lots of job opportunities ahead of him. Google’s had him long enough, I guess.

  1. I use the term sexes here instead of genders deliberately, as the latter has become such a confused term. ↩︎

  2. James didn’t say that women are inferior; @rakyll is incorrectly inferring that. ↩︎

Unread Transfers from Supertop to Golden Hill Software 

From the Supertop blog:

Today, Supertop is happy to announce that we’ve found a new home for Unread, our RSS reader for iOS.


It wasn’t possible to simply transfer the app along with all current users to John, so it’s a brand new app on the store

I think this is the first time I’ve had two apps with the exact same name and icon on my home screen at once. The process for unlocking the premium version of the new app was easy, as promised. It’s odd to me why transferring the preexisting app wasn’t possible, though. Wishing Unread success at its new home. It’s an incredibly well-designed app.

Open Sourcing Flash 

Robert McDowell, writing at GitHub yesterday:

Some projects developers and I asked months and even years to get a very stable version, which includes sometimes millions line of code. As you can see, for various valid and logical reason, these projects won’t be developed again and again for the only reason that the development “zeitgeist” is changing every 10 years. It’s totally absurd and even dangerous for the freedom of Internet.

How exactly deprecating a proprietary system is dangerous for the freedom of the Internet is beyond my ability to comprehend.

Robert goes on:

I recall to develop a Perl application 18 years ago to automate invoices of a payment system for a company, during this time I had to change a very few function names and logic, but today it’s still working flawlessly. The web SHOULD be like that, don’t waste developers to reprogram everything decade after decade, it does not make sense at all, especially when the major tech used is not better and even worse than the previous.

In what other realm besides software is there this persistent expectation that something written decades earlier should continue to work in perpetuity with no ongoing maintenance? The Golden Gate Bridge, if it were not maintained regularly, would collapse into San Francisco Bay in a frighteningly short amount of time. This is the broken world in which we live.

If software doesn’t require ongoing maintenance, that’s a strong indication that it’s not being used, or that it’s not even usable, or that it’s retirement is drawing nigh, because something better is planned to take its place.

How important to its authors is the code that constituted Instagram when it launched in 2010? If we ran a git diff from the launch commit against the current tip of master, what would we see? Code is only valuable when it is serving its purpose in its time.

This fascination with relics is quaint. Civilization needs its museums and cemeteries but they needn’t be functional; they need only serve as reminders of the past and pointers to the future. If these people want to open source flash on a slow-to-boot VM so they can serve it up for a trickle of visitors who want to see how bad things were in the past, they’re welcome to try to do that; but they mustn’t kid themselves that this is anything other than a museum that will become passé as a new generation of developers grow up with vastly superior tools. Those people won’t care less about flash or the things that were built with it. The only thing I recall using that was powered by flash was E-junkie and it switched around 2014 after years of people begging the company to switch.

Which brings me to this part about “major tech” being “even worse than the previous.” It’s laughable. Nobody with a straight face can say that obsolete Flash on the web is actually better than Angular, React, Vue, and D3. It’s not even in the same ballpark.

Bob Ryskamp’s Brain 

Bob Ryskamp is a Google employee, a strong, dedicated cyclist, and a frequent writer. He’s got his head on straighter than many, and he’s not a rockstar. For the designer who headed up the Google Glass team, his microblog is under-appreciated. I’m adding his RSS to Feedly under Gold.

What Is an iPhone Pro?

If you spend $1,299.00 on a baseline MacBook, you’re getting a 12-inch display with 227 pixels per inch, encased in an aluminum frame that is on average 0.33 inches in height. If you spend $4,199.00 on a maxed-out MacBook Pro, you’re getting a 15-inch display with 220 pixels per inch, encased in an aluminum frame that is 0.61 inches in height.

The superiority of the MacBook Pro over the MacBook is not that the MacBook Pro looks cooler or is more enjoyable to use in and of itself. To the contrary, it has fewer pixels per inch and it’s thicker. Instead, the MacBook Pro’s superiority is that it enables professional work that would be difficult if not impossible to achieve on the MacBook due to the latter’s limited hardware abilities. That’s why it’s called the MacBook Pro.

No informed consumer who buys a MacBook makes fun of someone who buys a MacBook Pro as having “wasted their money.” They understand that the difference isn’t “what you need to get your job done” versus “what people with extra discretionary money buy just for its own sake.” Rather, They understand that the difference is “what I need to get my job done” versus “what you need to get your job done.” For an owner of a MacBook to make fun of an owner of a MacBook Pro, the former would be implicitly making fun of the latter’s job requirements. That’s not something that comes naturally; people don’t naturally make fun of other people on those grounds.

My comparison of the MacBook and the MacBook Pro carries across the whole Apple product lineup as it currently stands: the iPad versus the iPad Pro, the iMac versus the future iMac Pro, the Mac versus the future Mac Pro. Consumers choose whether to buy the pro version or not based on whether the non-pro version inhibits them from being able to do stuff that they need to be able to do. While saying this, I’m aware that I’m purporting a general principle that contains anecdotal exceptions. I imagine there are people with loads of money who buy the pro versions of Apple products when the non-pro versions would suit their needs; but those people are not representative of the typical Apple consumer. I’ll even go so far as to say this: if prior to their purchase they talked to a well-trained Apple employee, they’d be buying these pro versions despite the employee’s recommendation to get the non-pro version. A good salesperson recommends the right tool for the job.

This brings me to the iPhone Pro that is rumored to be announced next month. What is the alleged difference between an iPhone as we know it today and this yet-to-be-announced iPhone Pro? What I’m hearing is that the iPhone Pro is going to look cooler. It’s going to be more fun to use in and of itself. Importantly though, I’m not hearing that it’s going to make professional jobs more easily accomplished or even possible. In other words, this iPhone Pro is distinguishing itself from the non-pro iPhone in ways that differ very dramatically from the way that every other pro Apple product has distinguished itself from its non-pro counterpart.

On a recent Talk Show episode, iMore’s Editor in Chief Rene Ritchie talked about how a Honda car owner will sometimes make fun of a Prius car owner. The reason that this happens is because the Honda owner sees the job requirements (i.e. the car needs to drive them to work) and recognizes that those requirements could be met just fine by a less expensive Honda car. People naturally make fun of other people on those grounds.

I’ve tried to think of a scenario where a Honda owner wouldn’t naturally be tempted to make fun of a more expensive car owner, but I can’t. It isn’t a good comparison to the MacBook versus the MacBook Pro because cars either work or they don’t. You either get from point A to point B or you don’t, and speed isn’t a factor since enforced speed limits democratize people’s elapsed commute time. A sporty V8 engine isn’t going to get you to work any faster than a humble V4. If anything, you’ll get to work 20 minutes later.

What’s interesting is that a yet-to-be-announced premium tier of iPhones suffers in theory from the same problem that a premium tier of cars does. Unlike any other pro version in Apple’s lineup, I can’t think of a scenario where someone could truly say I have to have the iPhone Pro to get my work done.

Now, here’s the thing: I understand the arguments for why Apple needs to create a more expensive iPhone. Apple is saturating all its growth corners and needs to find a new path forward, and this is its most logical path forwards. The investors demand it. It’s inevitable. I’m in favor of it. The point isn’t to scream that we need to stick with one price for Coke. We already don’t have that with the iPhone—it’s already got many tiers. My point instead is twofold.

First, calling this premium iPhone an “iPhone Pro” is a misuse of the word pro as Apple has heretofore used it. I’m actually hoping that Apple doesn’t muddy the waters by calling it this.1 If Apple calls this device the iPhone Pro, not only are people going to make fun of its buyers, which is going to happen as a necessary evil no matter what it’s called, but the deriders are going to have what I think to be well-placed sarcasm in their derision. “How’s that iPhone Pro working out for you? You know, I checked my email on my iPhone 7S, and it felt just like how it feels checking email on your iPhone Pro, except better, because I thought about how much money I saved. So tell me — what all are you planning on doing on that iPhone Pro today that’s work-related that I’m not going to be able to do on my iPhone 7S? Mmm?” It’s not a pro iPhone. It’s a luxury iPhone.2 Honesty here is important.

Second, while I’m in favor of a premium iPhone, I’m bummed that Apple can’t have Galaxy S8 edge-to-edge form factor be its de facto design, and have the premium line be different in other ways. To quote myself back in April:

In other words, Apple is saying this: what our competition views as essential, we view as a splurge only for those who want to pay us even more exorbitant amounts than they’re already used to paying.

I won’t elaborate on April’s thoughts here, except for this one clarification. I’m not asking that Apple compete with Samsung on price. I’m instead asking that Apple refuse to sell in late 2017 a “new” iPhone that has a form factor that Samsung’s de facto product has made visually obsolete in early 2017.

I’m excited to see what Apple can do with a higher priced iPhone. Here’s to it not being called the iPhone Pro, and here’s to Apple no longer forcing the majority of its customers to continue to use a design that looks long in the tooth compared to Samsung’s initiatives.

  1. Calling it the iPhone 8 makes no sense to me either, but that’s an aside. ↩︎

  2. Someone objects, “Luxury indicates something that costs multiple times more. We’re only talking about a 25% price increase.” The argument that someone who can afford a $950 iPhone can afford a $1,200 iPhone is fair, but it’s not about the price gap alone. You can make an argument that having a smartphone is a borderline necessity in a middle class career. You can make an argument that the Android OS is suboptimal and an iPhone is the right choice. So far so good. Up to this point, you can rationalize to yourself the need for the current iPhone and not feel like you’re getting spoiled. You aren’t treating yourself, and you aren’t being decadent. You’re living in the dictates of society in a tasteful way. You’re in the realm of taking care of needs, not wants. But past that, it becomes much harder to make the argument that you need the very best version of the iPhone. It’s more than just a $250 gap. It’s a chasm that represents an entire worldview. If the base iPhone cost $1,200, people would gladly buy it in a way that they would never consider doing if only the premium iPhone cost that much. It’s not about the price. It’s about the implication. Quibble over the term luxury if you wish, but rest assured that society at large will mentally consider it to be exactly that. ↩︎

Switching from SMS to FIDO U2F for 2FA on GitHub 

Last week, GitHub announced a new application for macOS that emulates a FIDO U2F Security Key. If you install this application and configure it, you can log into GitHub with 2FA without SMS. This is fantastic. Not only is it more convenient, but more importantly, it’s more secure because it removes carrier social engineering shenanigans from entering the picture whatsoever.

My only complaint is this: I have Do Not Disturb scheduled from 3:00 AM to 2:59 AM (i.e. perpetually). GitHub’s app shows an alert with a clickable button, but that alert doesn’t appear when Do Not Disturb is enabled. I have to temporarily disable it in order to authorize the emulator. Fortunately this is just two clicks though so it’s not that big a deal.

AWeber Introduces Tags 

Tom Tate, writing at the AWeber blog:

With tags, you can apply specific tags (or labels) to each of your subscribers (based on things like whether they are a customer or prospect, where they signed up, interests, geographic location, etc.,) in order to send targeted broadcasts and trigger campaigns.

This is a feature that AWeber’s customer base has been awaiting for years. This is huge. In the past, the only real way to segment users was to create new lists, which lead to lots of duplicate contacts. Since AWeber’s subscription model is based on your number of subscribers, this meant that the more times you segmented your users, the more expensive maintaining your account became. With tags though, there isn’t a reason to ever need more than one list.

True story: about six years ago I put together an article about the superiority of AWeber over MailChimp. AWeber’s CEO liked the article so much that the company reached out and sent me a T-shirt. Over the years though, MailChimp has become a fierce competitor with a stellar interface; and meanwhile, AWeber has fallen behind in terms of a coherent design. But its core product — sending emails with an untouchable deliverability rate — is still intact.

Fixing the “Password Field is Empty” WordPress Error in Chrome 

Tom Ewer, writing at wpmudev:

Some users trying to access their WordPress admin panel have found that Google Chrome seemingly auto-fills their password. Hooray for technology! But once they click submit, they get a message along these lines:

ERROR: The password field is empty.


Robbert explains that the error stems from the fact that WordPress’s native code interferes with Chrome’s function to fill in your password.

At the linked Stack Exchange piece, Robbert had this to say:

The JavaScript function wp_attempt_focus is causing this issue.


Sadly, the function has been hardcoded in wp-login.php in lines 913-930 (WordPress 4.0).

It’s a testimony to the tastelessness of WordPress that auto-fill from Google Chrome doesn’t work on login. I’ve been working around this bug for years, and it remains an ongoing problem.

JavaScript Virtue Signaling

Phil Pennock had this to say on Sunday:

Today I noticed that lets you select all three together as long as JavaScript is disabled. There’s a moral here.

Is there?

Phil is correct that if you disable JavaScript at that website, then all three of the buttons can be selected: fast, good, and cheap. If you start disabling pieces of a UI, you can expect that UI to misbehave in unexpected ways. If there’s a moral in that, it’s that if you fail to bring your tools to work, you’re going to have a hard time getting your job done.

What Phil means to convey though is that JavaScript is a hindrance to having all three things. Here’s my answer to that: it’s ok to criticize something when you have a better solution. Phil does not have a better solution. If Phil were tasked to create a UI in a web browser that had the functionality of this website, what language would he use? What languages could he use? There is only one language: JavaScript. Sure, he could write it in anything he wanted, technically, so long as he had a transpiler. But that transpiler would have to convert it to JavaScript.

Here’s where it gets even funnier. Let’s say that browsers could use languages other than JavaScript. If browsers could natively interpret Python or Ruby, would one of those be a better choice? The answer is no, because those languages are slower. Here’s what I replied to Phil:

It’s funny that you say that, because JavaScript has a faster dynamic language runtime than Perl, Python, Ruby, and PHP.

When Phil says that JavaScript is a hindrance to fast, good, and cheap, that’s the equivalent of saying this: “I’ve been doing some studying of industrial design, and, you know, the machinery that’s required to build a building is crazy. That machinery is heavy and overkill and uses a lot of fuel and really — with all that machinery it’s just impossible to have a building that’s fast, good, and cheap. So let’s just not build buildings any more.” It’s not possible to build a building that’s fast, good, and cheap. You can only pick two of those at most. That’s the whole point of the website. If there’s a moral here, as Phil insists, it’s that Phil hasn’t learned the wisdom of this simple website.

A friend once told me of a rural Texan who wore shorts and cowboy boots. He went into the local library, sat down at the computer, pulled up Google, and typed a bunch of random numbers and letters into the search box. When he saw there were zero search results, he pointed his finger at the computer and laughed, “Hah! I confused it.” When Phil disables JavaScript and pulls up a website and it doesn’t behave the way that he expects it to, it reminds me of this cowboy. You “confused” the system, Phil? Congratulations.

Lastly, I can’t help but sense a subtweet here as well, that goes something like this: a site is vulnerable because developers assume you’ve enabled JavaScript. Well, just look what happens when you don’t! It’s weak. The silliness of that is this: sure, you can “confuse” the system if you want, but when it comes to CRUD operations, the server is the gatekeeper, and so you can’t truly do anything harmful. All you can do is shoot yourself in the foot and mess up your own experience, and nobody cares about that — that’s your problem. Let’s say there’s a client-side validation on a registration form that makes sure you’ve entered a valid email address. If you disable JavaScript, that validation won’t run, and you might be able to submit the form with invalid data. But have you hacked the system? No. The server will do its own validation and throw an error. If that server is running NodeJS, then the server-side gatekeeping is also powered by JavaScript. Is JavaScript weak and vulnerable in that scenario? Not at all.

If Phil wants a fast, bad, cheap browsing experience, he can continue running his browser with JavaScript disabled, whilst virtue signaling the language’s perceived evils on Twitter, and enjoying the camaraderie of his smug friends who continue their double standard of enabling JavaScript because they want the good part of fast, good, and cheap.

Update: further discussion on Twitter has made it clear that Phil’s views of JavaScript are more sane than others in the community. Thanks for the clarification, Phil. Still, my argument stands for those who misconstrued Phil’s whimsical tweet into standing for something more than it is.

One Man’s Well-Informed Opinion Is Another Man’s Blind Ideology

Reading this Ars Technica piece, I’m walking away with two things:

  1. First, it’s not clear whether so-called net neutrality hurts or helps investment. Different studies show different results. There isn’t consensus. In fact, both sides seem to agree that it’s not very clear, in part because there are too many variables. The side in favor of regulation says, Because it doesn’t hurt infrastructure investment, we should have net neutrality. The side against regulation says, Because it doesn’t help infrastructure investment, we should not have net neutrality. Where the burden of proof lies depends on whether you lean towards wanting a big government or a small government.
  2. Second, there’s disagreement on what metrics are important. Both sides have metrics. The side in favor of net neutrality says that the 12 million comments are important. The side against it says that the millions of Americans who don’t have fast Internet are important.1

Meanwhile, I’m noticing that the side in favor of regulation is saying to the other side, Because you are not giving enough weight to the metrics that I consider important, you are a blind ideologist. Nick Heer said exactly this yesterday:

Pai is pretty dead-set that he’s going to destroy net neutrality — logic, reasoning, and facts be damned. That’s what blind ideology looks like.

Do you suppose that Ajit Pai thinks he himself is a blind ideologist? Of course not. He thinks he’s making the best decision with the data before him. That’s the great thing about a free Republic; different people can look at the same set of data and come up with different conclusions. The temptation will always be to look at the group that arrives at a different conclusion and accuse them of “blind ideology” but that’s a cop-out; the reality is usually more complex than that.

  1. Both of these metrics are interesting. The twelve million comments were generated en masse by audiences driven by large websites and the major media, the owners and cultures of which are disproportionately left-leaning compared to the overall public. What if instead these gatekeepers were disproportionately right-leaning and encouraged their audiences to dissent against the regulation? If you reframed the question as Should the government be involved in regulating the Internet? instead of Do you believe in the open web?, those 12 million comments would have looked a whole lot differently. Nobody is against the open web, but many are against a big overreaching government. The populace is easily swayed. Most of those 12 million comments were written by people who only have the slightest inkling of the issues involved and made their comments by virtue of brand equity endorsement. As far as the millions of Americans with slow Internet are concerned, this is also a two-way street. Nobody who is for the regulation actually wants Americans to have slow Internet. But was net neutrality supposed to fix this problem? Advocates never claimed that this was one of its goals, as far as I know. ↩︎