By John Gruber
Become smarter in just 5 minutes. Subscribe to Morning Brew.
A brief housekeeping note. In early November, I moved this website to a new server. It had been at the old server since 2007. One small thing that broke during the move is the script I use to automatically tweet links to new DF posts from the @daringfireball Twitter account — the DF Tootbot.
What broke is fairly technical, so I’ll try to make this short. The basic gist of how the script works:
The script runs once per minute as a cron job. That’s it.
What broke when I moved servers was the history log. When I first wrote the script 10+ years ago, I used a database, cleverly thinking, “If this Twitter thing is here to stay, I’ll eventually tweet tens of thousands of posts, so I should use a database so lookups don’t get slow and the whole thing continues to run fast years from now.” The database I chose, unfortunately, is one that sometimes changes its underlying file format with major version updates.1 There were a lot of major version updates to Perl in the years since I last moved servers.
What I could have done is just start over with a new history log on the new server, and manually fill the new database with the last few weeks of entries. For the purposes of tweeting new entries from the RSS feed, there’s no reason to keep a full historical log. The script just needs to know which recent articles — articles still in the feed — have already been tweeted.
It bothered me that the script was using a database at all. It bothered me because the database wasn’t something I could just open in BBEdit and inspect and edit by hand. I’m a text file guy, as you may know. Because here’s the thing: reading a simple text file log with tens of thousands of lines is really really fast on a modern computer. It would have been more than fast enough 10 years ago, and it’s much faster today.
I wrote a test script and ran it against a 53 MB text file log with 1 million lines. It ran in a blink of an eye. A fraction of a second. I hope to write Daring Fireball for a long time to come, but I really doubt I have a million posts in me.
A database was overkill. I ran afoul of Donald Knuth’s well-known axiom:
Programmers waste enormous amounts of time thinking about, or worrying about, the speed of noncritical parts of their programs, and these attempts at efficiency actually have a strong negative impact when debugging and maintenance are considered. We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil.
So, I decided I should rewrite that part of the DF Tootbot to do what it should have done all along: use a simple human-readable text file for the history log. There were a few other changes I wanted to make, too — like switching from DF’s RSS feed to the JSON feed as the source for new articles, and supporting Twitter’s 280-character limit.
In the meantime, I had a copy of the old version of the script on my Mac that I could run manually. Three months of procrastination later, I finally spent Monday writing the new version and getting it running on the new DF server. This was the first tweet posted by the new Tootbot.2
In the interim, during the previous three months when @daringfireball tweets were only being triggered by me manually, the time between when I posted new items to Daring Fireball and when they got tweeted was, to put it mildly, erratic. Manually doing anything that should be automated is a bad idea for anyone, but it’s a particularly bad idea for someone with a strong tendency to think about only one thing at a time and pretty much forget everything else.
I like having control over such things. Shocker, I know. For example, I want complete control over the exact text of the tweets. What happens, for example, when a DF post has a headline that’s too long to fit in a tweet? In that case, I want the headline to be truncated as elegantly as possible, at a whole word, with an ellipsis added to indicate the truncated words, and inside any double or single quotation marks that end the headline. With Twitter’s 2017 change from 140 characters to 280 as the upper limit of a tweet, that’s not common — but it can happen.
For those of you who don’t follow the @daringfireball Twitter account, consider it. It’s a great way to see when something new or updated has been posted to DF, and with Twitter’s app, you can even get notifications of new items. (Go to the @daringfireball account profile and tap the little bell icon — you can use this to get per-account Twitter notifications from anyone.)
For those of you who do follow @daringfireball, I apologize for the erratic posting schedule these last three months. It should be back to normal now, and for the foreseeable future. ★
Keen observers will note a slight formatting change. The old Tootbot tweeted
title + ": " + url (title and url separated by a colon and space); the new Tootbot tweets
title + "\n" + url (title and url separated by a newline). This new format is a better compromise between how Twitter itself and third-party clients like Tweetbot and Twitterrific — both much-used by DF readers — display tweets. ↩︎︎
Last week Jason Snell published his annual Six Colors Apple Report Card for 2019. This year 65 voters (hand-selected by Snell) graded Apple in 12 areas. I was one of them, and, like last year, thought it only fair to publish my grades and remarks here at Daring Fireball. Comments in [brackets] are additional commentary I wrote now, and were not included in what I submitted to Snell.
This was a hard score for me to assign.
My first thoughts went to hardware. We’ve got an amazing new Mac Pro that rekindles the era of workstations that offer the best performance money can buy. The best CPUs, the best SSDs, the best RAM (up to 1.5 TB!). And it’s a tremendous design accomplishment — there aren’t even any cables inside the machine. We also have a new 16-inch MacBook Pro that I think is the best notebook Apple has made in 5-6 years. It fixes everything wrong with the 15-inch MacBook Pros that preceded it — especially the keyboard.
Everything isn’t perfect on the hardware front. The iMac Pro is now two years old. It’s a great machine but it hasn’t been touched in two years. That’s not pro. You can say it’s Intel’s fault because the iMac Pro is based on a line of Xeon CPUs that haven’t been updated in two years, but it’s Apple’s name on the box. The buck stops with Apple. And while the 16-inch MacBook Pro now has a totally new, totally great keyboard, it’s the most expensive model in the lineup and none of the other MacBooks have that keyboard. Yet, we all presume, but the fact is, if you buy a MacBook Air today — the best-selling, most-popular MacBook — you are not getting a good keyboard. So all things considered, I’d say a B for Mac hardware.
Then I think about software. And that means thinking about MacOS 10.15 Catalina. And those thoughts are not good. Off the top of my head I’m hard pressed to think of anything in Catalina that’s an improvement over 10.14 Mojave, and I can think of a lot of things that are worse. I get it that security and convenience are at odds, and it’s a difficult job for Apple to find the balanced sweet spot between the two. But Catalina clearly bends too far in the direction of security. By design, it’s just too inconvenient, with apps generating system-level alerts prompting for permission for things as rudimentary as being able to see the files on my desktop — sometimes when those apps are in the background, and I know that at the moment the alert appears those apps are not trying to read files on my desktop. But why in the world is the desktop treated as some sort of sensitive location?
Back in 2007 Apple ran a “Get a Mac” commercial mocking Windows Vista for this exact same sort of overzealous permission nagging. That’s exactly what Catalina feels like.
If Apple has somehow determined that typical users need these sort of permission alerts, fine, but there should be a single switch for expert users to toggle to effectively say “I trust all of the software on my Mac”. Call it “Pro Mode”, call it “Developer Mode”, call it “Expert Mode”, whatever. But I don’t know a single expert Mac user who is not seriously annoyed by the heavy-handed security design of Catalina. Not one. Every single expert user I know is annoyed. That is a bad place for MacOS to be. MacOS 10.16 needs a serious course correction to fix this, and if 10.16 goes the opposite way — growing even more heavy-handed in restricting professional Mac users from just using their machines as they want and expect to — I genuinely fear for the future of the Mac as a platform for serious computer users. Which is crazy considering that Apple just unveiled Mac Pro workstation hardware that can cost upwards of $50,000.
And there are bugs in Catalina. Lots and lots of bugs. About one out of ten times that I open my new 16-inch MacBook Pro, the display contrast is horribly wrong. [Not sure if I’m on a lucky streak or if this actually got fixed, but I haven’t seen this issue in over a week.] I can “fix” it by either turning the display brightness way down and then back up, or by closing the lid and reopening it. But I’ve been using Mac laptops for 20 years and I’ve never once had an issue like that. Another paper-cut bug: turn off toolbars in Finder windows and a few minutes later, the toolbars will reappear. There are always bugs in new OS releases, and we always complain that the state of Apple’s software is too buggy. But no one can convince me that Catalina is not abnormally buggy, even now, months after release.
And then there’s Catalyst. Don’t get me started.
If I could give Mac hardware and software separate scores, I’d give hardware a B and software an F — not one thing about Mac software got better in 2019 and everything that did change made it worse. Where’s the Tylenol?
2019 was a stellar year for iPhone hardware. I love all the iPhone 11 models. I’ve been an avid hobbyist photographer for 20 years and I happily shoot over 95 percent of my photos using my iPhone. Everything about the iPhone 11 cameras is great, from the hardware to the Camera app software. I love the new ultra-wide angle lens in all of the 11 models, and I think Apple made the right call using the ultra-wide as the only additional lens on the regular iPhone 11 (as opposed to the telephoto). My one and only significant gripe is that there’s only one size for the non-Pro iPhone 11. There ought to be a smaller one.
iOS 13 is a very good release. Shortcuts are proving to be the most exciting power-user feature in the history of iOS as a platform. Sharing sheets are better than ever too. I think the overall look is getting a bit dated, though. A fair amount of Z-axis depth has been restored since the visual reboot in iOS 7, but it still feels obsessively “flat”. And parts of Apple’s iOS software feel designed only to look good, as opposed to actually be good from an interactive standpoint.
[I think my Mac remarks made me grumpy — I wrote them before anything else for my report card. If I were grading the iPhone in 2019 today, I’d bump it up to an A.]
iPad hardware is wonderful. It seems like iPad Pro hardware is on a roughly 18-month refresh schedule, so there was nothing new in Pro hardware in 2019, but the current models are so good in every regard that that’s just fine. And the consumer models offer the best bang-for-the-buck of any computers Apple has ever sold, period. Just like with the Mac, I’d give iPad hardware an excellent score on its own, an A.
But to say that I’m not a fan of iPadOS is an understatement. I wish there were a switch to force iPadOS back to the pre “multitasking” days when the iPad interaction model was “just a big iPhone” — where every app was full screen and there was no drag-and-drop. I only ever accidentally drag things like links, and I find iPadOS’s concept of “windows” to be baffling. [Turns out there sort of is such a mode in Settings → Home Screen & Dock → Multitasking.] Getting the split-screen and Slide Over stuff to work is utterly unintuitive. It’s not the sort of thing you can figure out on your own just by using it, which is how the Mac user interface works. You have to know in advance how iPadOS split-screen stuff works. Just consider the fundamentals: if you want to launch an app you just tap it on the home screen or in the Dock. So far so good. But if you want a second app next to the first one, you have to drag the icon for that app out of the Dock? Why in the world would dragging an app icon launch an instance of an app? Forget about the Mac — what other platform in the world works like that? Put instances of Safari in two different “windows” — say, one split-screened with Notes and another in a “window” of its own. Then, using a hardware keyboard, Command-Tab to Safari. Which one comes forward? Toss a coin. It’s madness. I’m glad Apple started branding iOS and iPadOS separately. One of them is very cohesive, the other is incoherent. The iPadOS multitasking emperor has no clothes. I wish I could run iOS on my iPad Pro.
Steady as she goes. I love my titanium Series 5.
[I think Apple could do a much better job with watch face design. I’m not talking about allowing third-party watch faces, which, if I were in charge of Apple Watch, I wouldn’t allow either. I’m talking about Apple’s own watch faces, the only ones we can choose from.]
Regular AirPods remain great and AirPods Pro are my favorite headphones ever.
No new hardware and the new Apple TV app is confusing. I’d be fine with a hardware update that did nothing but include an altogether new remote control — but a price drop would be good too. The overwhelming majority of my non-sports TV watching is done via Apple TV, and that damn remote is a daily nuisance.
This was the year of Services for Apple — they even had a dedicated Services event. I think they mostly nailed it. The original TV series I was interested in were all good to great (The Morning Show, For All Mankind, Servant), and I think the “start with a whole year for free with the purchase of any iPhone, iPad, or Mac” promotion is just what the doctor ordered for a new service with a very limited library of content.
I’m still wary of Apple entering the credit card business, period, but I use my Apple Card for all Apple Pay purchases (to get the 2 percent cash back). Daily cash back is a great feature, and Apple’s 6 percent cash back promotion for Apple Store purchases during the holiday gift season was undeniably a great deal.
I’ll keep beating the drum that iCloud storage tiers are too small, though — especially the 5 GB free tier.
I’ll give this whole a category a “meh”. We use it at home, mostly to control smart window shades and lights, but I think for most people, if you haven’t even really looked into it yet, I’d say you’re not missing much. I feel like Apple still hasn’t gotten close to making HomeKit truly compelling.
This sort of thing is highly subjective, but everything new I’ve used this year has been rock solid.
The saving grace is iOS, by which I mean iPhone’s iOS. See my comments on Mac and iPad and Apple TV above. I’d go with a B for iOS and D for the others.
From what I’ve seen from developer friends, App Store review times are truly excellent now — a complete change from before the reorganization that put App Store review under Phil Schiller. But when an App Store review does hit a snag, it can go completely dark (from the developer’s perspective) for a week or longer. There’s still much room for improvement here. And I continue to believe Apple should lighten up on allowing apps to at least link to websites where content purchases can be made.
It’s good for the entire world that Apple is a staunch supporter of LGBT and racial equality, serious environmentalism, privacy as a human right, and true user-controlled encryption as an aspect of privacy.
It’s an absolute disgrace that Apple allowed Donald Trump to use the Mac Pro assembly plant in Austin as the backdrop for an event to promote his re-election. I called it “a low moment in Apple’s proud history, and a sadly iconic moment for Tim Cook” when it happened, and feel just as strongly two months later. Trump is a liar, a crook, and his administration has proven to be a menace to everything Apple stands for: LGBT and racial equality, the environment, and privacy as a human right. ★
Matt Birchler, “Mistaking Familiarity for Intuitiveness”:
But… this rings so true to me in some of the conversations I’ve had with people over the years, as well as Gruber’s recent complaints about the iPad overall.
What gets me to roll my eyes is when people drift into the “iPads aren’t as intuitive as Macs” argument, because that’s kind of insane.
He doesn’t come out and say that I said Macs are more intuitive than iPads, but it seems close. Let me point out that I used the word “intuitive” only twice in my piece on the awkwardness of iPadOS at 10: both times referring to iOS’s “just tap an app icon to open it” interface.
Most people get maybe 2% of the potential of their Macs and Windows PCs today. Have you watched most people use a computer lately? Most people I see have all apps in full screen all the time, no matter how big their screen is. Most people I see use keyboard shortcuts for copy and paste, opening new tabs, but basically nothing else. I’ve seen numerous Mac users download apps, open the DMG, and run the app from the DMG forever because they don’t know you should move it to the Applications folder. Many people have a desktop full of files because the desktop is the file system.
All true. I strongly believe most people would be better off with iOS as their main computer than MacOS — including most Mac users today. It is a problem that most Mac users just store every file they have on the desktop. There is a huge opportunity on that point alone for iPadOS to surpass MacOS as the superior system for non-experts.
But how many people think iPadOS has a good interface for managing files? Crickets. The Mac interface for managing files is too overwhelming for typical users to understand, but somehow iPadOS offers something worse.
As I have to say in every one of these pieces, I’m not arguing that macOS is trash, nor am I arguing that iPad software is perfect and needs no refinement. I’m just saying that humans have a tendency to mistake familiarity for intuitiveness.
Again, my criticism about iPadOS has little to do with intuitiveness. If anything, what the iPad gets right is clearly more intuitive than the Mac — direct manipulation with touch vs. indirect manipulation via mouse pointer is clearly far more intuitive and natural. That’s what makes the state of iPadOS so crushingly disappointing — it has an inherent leg up on MacOS on intuitiveness by nature of its conceptual foundation. The problems with the iPad are about consistency, coherence, and discoverability. Launching the first on-screen app with a simple tap, but the second on-screen app with a tap-and-hold-then-drag-to-the-side-but-make-sure-you-drag-it-all-the-way-to-the-side-or-else-you’ll-get-Slide-Over is inconsistent, incoherent, and requires unnecessary dexterous precision. iPadOS should be less finicky than MacOS, but all of the multitasking features are the other way around.
And then there’s discoverability. Advanced iPad features are mostly invoked only by gestures — which gestures are not cohesively designed. The Mac is more complex — which is good for experts and would-be experts, but bad for typical users — but its complexity is almost entirely discoverable visually. You just move your mouse around the screen and click on things. That’s how you close any window. That’s how you put any window into or out of full-screen mode.1 Far more of iPadOS should be exposed by visual buttons and on-screen elements that you can look at and simply tap or drag with a single finger.
Affordances are not clutter. ★
I’ve never been a fan of full-screen mode on MacOS, and split-screen full-screen mode on the Mac is as inscrutable as on the iPad. It’s always felt bolted-on. Even the fact that the menu bar is hidden in full-screen mode is wrong. It’s trying to make the Mac into something contrary to its true nature, simply because many people want the visual simplicity of full-screen apps. Again, this is a huge missed opportunity for iPadOS, where full-screen mode is its true nature. ↩︎