I’m not going to weigh in on Safari’s new design. Instead, I want to call out something Gruber wrote in his commentary:
You got URLs in address fields, but page titles weren’t exposed other than in the Window menu. That was, in my opinion, a fundamental flaw in the design. Web page titles are useful, and should be more human-readable than URLs.
That’s something I’ve long intuited based on my own web browsing habits but never really put into words. When I stop and think about it, modern web browsers drive me crazy by limiting tabs to a maximum width because that width is almost never enough to show the full page title.
Well, except one web browser: Safari. Look.
Here’s Chrome, Firefox, and Safari showing the same two web pages using the same window widths.
Chrome
Firefox
Safari
Safari is the only one that lets each tab expand to fill as much room as is available – so you can see more of the web page’s title.
This difference is even more apparent if you only have one tab open. Here they are again:
Chrome
Firefox
Safari
If Safari on macOS Monterey is heading in a similar direction where web page titles are going to be even more truncated, that’s going to make me sad. I guess we should do something about it.
Here’s TheTitle.app
It’s a silly Mac app that is just a window title bar. It floats above all the other windows on your Mac and keeps an eye on your web browsers. As you move from browser to browser and web page to web page, TheTitle shows you the full page title – unobscured. Problem solved.
A few weeks ago I built a niche little app idea dubbed MeetingBuddy. You choose a target app from a pre-defined list (or pick any app on your Mac) and a time interval and MeetingBuddy starts screenshotting that app’s windows.
Each recording session goes into its own folder
where all of the screenshots are organized by date. But! while this is all going on, MeetingBuddy is also OCR-ing any text found in the screenshots and storing that alongside each image in a sidecar file.
You end up with a folder of recordings for each session. Images and their corresponding text contents.
Why is this useful? Honestly, I’m not exactly sure that it is just yet. But here’s what I’ve been using it for.
I’ll start a recording session when I’m doing research. As I browse the web and look through source material, MeetingBuddy is like an assistant taking searchable notes of everything I see. You’ve always been able to search your browser history, but this lets you (to a limited degree) search the contents of your browser history during those periods of focused research as well.
The reason MeetingBuddy is called MeetingBuddy is because I originally intended for it to help me remember online meetings better. And it does! At work, we’re rarely on camera during our video calls, but we share designs and slide decks constantly. I used to scramble to screenshot the video window when I wanted to remember something. Now it’s automatic. At the end of the day when I’m collating my notes from earlier, I can save any worthwhile screenshots and discard the rest.
And whether you keep the screenshots and text files in folders on your Mac, or if you dump them into a digital brain like DEVONthink, it’s super easy to search and cross-reference the text of what was on screen with the full image.
I don’t yet know if MeetingBuddy will go anywhere, but if nothing else, it’s given me an excuse to learn some new macOS APIs I hadn’t dealt with before.
Here’s a demo:
And if you’d like to try MeetingBuddy, you can download it here. I can’t even begin to describe how completely unpolished it is. I haven’t run it on any Mac other than my own, but it should work. Probably. (And, suffice to say, MeetingBuddy collects zero information about what you record. All text processing and image capture is done locally on your Mac.)
Super clever person, Mario Guzman, released Music Widget the other day. Here’s how he describes it:
A mini player remote for Apple Music. A take on the classic iTunes widget.
The app is exactly what it says on the tin. A pixel-perfect recreation of the old Mac OS X Dashboard widget that debuted with 10.4 Tiger in 2005. But it’s a bit more than that. Mario had to solve two problems.
First, a quick and dirty solution for making this app would be to boot up an old copy of Tiger and rip out the web assets (images, etc.) from the widget itself. But Tiger was 16 years ago. We have @2x retina displays on our Macs now. The original images would be too small or pixelly. Instead, he did things the hard way and took the time to rebuild everything from scratch in code.
Problem number two: Dark Mode wasn’t a thing sixteen years ago. Mario had to create that design himself. (It helped that he had a head start from previously bringing Dark Mode to his impressive rebuild of iTunes.)
And, holy crap, have you seen The OldOS Project from Zane K? He built a fully functional version of iOS 4 with SwiftUI.
Why are people putting so much time, effort, and obvious love into remaking old user interfaces using modern development tools? Why bother?
I’m sure there’s a whole host of reasons, and each developer is motivated differently. Ultimately, I don’t think it matters. My real question is this:
Fifteen or twenty years from now. In 2036. In 2041. What will those kids rebuild from our devices today?
Mario and I had a short conversation about this last week, and I’ve been thinking about it ever since. I’ve tried paying attention to the devices and apps I use all day. And, I just, don’t know?
Are future developers going to feel nostalgia for the hamburger menu? The Facebook newsfeed? Grayscale colors and identically shaped app icons? Flat UI?
I’m trying very hard not to fall into the trap of being yet another old man yelling at kids to get off my lawn, but I struggle to find delight on a grand scale in modern software. Every incremental step, year over year (from all companies, this isn’t just about Apple), seems to be focused on removing emotion and affection from our devices rather than finding ways to strengthen that bond.
Has the industry decided that our devices have reached a level of maturity that warrants making everything minimal, sterile, and utilitarian to help “do work” and “get stuff done”?
Where’s the fun? Where’s the experimentation? The joy and playfulness?
I see bursts of design like this coming from small companies and individual developers. But the major players have forgotten that how software makes you feel is just as important and necessary as what it lets you do.
Last March, I released Three Things Today. It’s a one-trick-pony Mac app that lets you schedule out your three main goals for each day on a calendar. It’s built around my two basic assumptions for getting work done:
There is only enough time to do three significant things each day. One goal in the morning, one after lunch, and another near the end of the day.
Your day will never go as planned, fires will happens, things will be delayed or droppped entirely. That’s OK. Accept that reality, plan for it to happen, don’t punish yourself.
The point of today’s post is that while I’ve been using Three Things myself for a year now, a very nice person was kind enough to email me last week and let me know that the version posted online had expired. My bad.
Also, this new version comes with an experimental new feature: iCalendar syncing!
You can add a public iCalendar (.ics) feed to Three Things, and it will display all day events / tasks within the app.
Why is this useful? For me, I’ve subscribed Three Things to the calendar feeds for my Trello boards that I track my software projects with. Most of my Trello cards (tasks) are undated, but in the rare case one has a due date, it will automatically appear in Three Things. More importantly, Three Things will enforce rule #1 and make sure I don’t overcommit myself on that day accidentally.
What I mean is, it’s been a long time since I’ve been inside a restaurant with my kids.
467 days.
The last time we ate out as a family, they were, well, horrible little human beings. It was just that age.
But then we walked inside and closed the door behind us. And waited.
For over a year, we played it as safe as possible — minimized risks. Even when our jobs ordered us back into the office, we did what we could. Drive to work. Eat lunch in – not out with coworkers. A social pariah among young non-believers. Drive back home. Maybe the grocery or drug store.
A grandparent’s wave through a glass door.
And we made it through mostly unscathed.
Mostly.
It was, at the same time, the longest and shortest year of our lives.
Two weeks ago, my wife and I sat outside in the rain near a cave. And laughed. And sang. And danced a little.
Music echoed through the clearing.
We cried. And were thankful.
Tonight, my son asked for sushi from the Chinese place he likes best. His eyes lit up when I replied, “Would you like to eat inside?” My wife and I call it “Trump Chinese” because they sell counterfeit MAGA gear out of a golden display case in the lobby. Two hats for $35. The food is comforting – if overpriced. The owners are giant assholes. But it was a regular spot nonetheless.
When we drove up this evening, I cackled when I saw the interior stripped to the studs, and they had finally gone out of business. Good.
Sure, my kids sobbed because that age never likes disappointment. But that was solved easily enough by making a quick detour to a nearby deli instead. Another favorite of ours. Hello, old friend.
We opened the door and stepped out of our time machine — my children another year older. And, my goodness, actually not terrible dinner companions like they used to be.
Safari is already less compatible, so if the user interface is going to be worse, too, I just don’t see the point. The main other thing keeping me there is 2FA auto-fill.
I’m very, very close to writing a KeyboardMaestro macro to grab the latest 2FA code from Messages.app to work around this.
I was mostly joking.
Until I thought, why not?
Here it is. Just launch the macro, and it grabs the new two-factor code that was just texted to you. Then inserts it into your non-Safari browser.
And here’s how it works…
My first instinct was to try and copy the text of the most recent conversation in Messages.app and then pipe that through a regular expression to parse out the two-factor code.
For very boring reasons that aren’t very interesting, I’ll just say that I spent two days a few years ago trying to hack together something similar using Messages’ AppleScript interface. It wasn’t very good back then, so I didn’t even attempt going down that road tonight – especially since it’s a Catalyst app now.
Instead, I decided to just try “clicking” my way through the UI with KeyboardMaestro. Something along the lines of…
Activate Messages.app
Click a known x,y coordinate from the top-left corner of the window to select the first non-favorite conversation.
Double-click a known x,y coordinate from the bottom-left corner of the window to select a word in the last message of that conversation.
Type ⌘A to select all the text in that message.
⌘C to put it on the clipboard.
Parse out the code.
Paste the code onto the clipboard to use.
That sort of worked. But it wasn’t very reliable. Mostly because Messages.app takes so long to wake up sometimes. If its window hasn’t been displayed in a while, it can take a not-insignificant amount of time to appear. And then switching to the newest conversation is similarly slow.
As much as I tried to work around this by adding delays in the UI script or other KeyboardMaestro tricks, it was too fragile to be reliable in my testing. I needed another approach.
Here’s what ended up working.
Click the menubar’s clock to activate Notification Center. (By the way, it took me a full damn month after installing Big Sur before I realized what Apple had done with the Notification Center icon and that it was still accessible without needing to use the two-finger-swipe-from-right trackpad gesture.)
Wait for the reveal animation to finish.
Take a screenshot.
Flip the image horizontally. (Because KM’s crop action only works from the top-left corner of an image.)
Crop out the known size/position of the first notification message. (All message bubbles are the same size no matter their contents.)
Flip the image horizontally (back to the original orientation).
OCR the text contained in that cropped image, which should hopefully contain our two-factor code.
Wait for the collapse animation to finish. (This delay is longer because I found I had to wait for the animation to finish and then an additional delay for the active application to regain keyboard focus a moment later.)
Type the code into the current app (probably your non-Safari browser).
I haven’t tested this yet on multi-monitor systems.
The image crop dimensions assume you’re using a retina display.
The regular expression will probably fail for you, but it works for Google and my bank.
This is all a dumb hack that isn’t actually meant to be taken seriously but illustrates the internet’s collective knee-jerk response to not wanting to use the new Safari.
Since Apple will stand on a virtual stage tomorrow and tell us how much they love, value, and appreciate third-party developers, here is an alphabetical list of iOS apps that I depend on – from solo developers, small companies, and giant world-eating ones, too.
(And these are not affiliate links because Apple sure put a stop to that.)
I want to be crystal clear about the value these apps (and many others) provide. Without them, I would not own an iPhone. Or an iPad. Or an Apple Watch. I would not have purchased an iPad Magic Keyboard. Or any number of first-party Apple Watch bands.
I would not own three Apple TVs. (Well, only one is still in use. The other two are in a closet after being swapped out for Android TV last Summer. But that’s another blog post.)
I would not pay for iCloud storage each month. My seven-year-old son would not use his chore money to pay for Apple Arcade.
And because modern life relies so much on connected ecosystems, if I didn’t use any of the above hardware, dare I say, I would not still be using a Mac, either.
As the head of IT for my family and extended family (is there a better way to phrase that?), I would question if any of them would own iPhones, iPads, Apple Watches, Mac laptops, and pay for iCloud, Apple Music, and even Apple Fitness+.
Lawyer: What about references to locking customers into devices? Cook: It means making all the product work so well together people don’t want to leave. Lawyer: Is there anything Apple could do to lock people into iOS? Cook: Not that I’m aware of.
And I agree with Cook. I could switch to Windows and Android. I wouldn’t like it, but I could make the switch.
Except for all those third-party apps. I couldn’t give those up without significant effort – if it would even be possible to find replacements for each.
Third-party apps are what keep me locked into Apple’s lucrative don’t-call-it-a-walled-garden.
In any healthy software ecosystem, third-party developers and the platform vendor are a symbiotic relationship. To pretend otherwise is fanciful gaslighting.
Cook: I view it differently than you do, Your Honor. I view that we are creating the entire amount of commerce on the store
I view it differently than you do, Mr. Cook. I view that developers are creating the entire incentive for consumers to purchase your hardware.