justin․searls․co

Broadcasting real-time database changes on a budget

While building Becky's (yet unreleased) app for her strength training business, I've been taking liberal advantage of the Hotwire combo of Turbo and Stimulus to facilitate dynamic frontend behavior without resorting to writing separate server-side and client-side apps. You can technically use these without Rails, but let's be honest: few people do.

Here are a few capabilities this broader suite of libraries give you, in case you're not familiar:

  • Rails Request.js offers a minimal API for sending conventional HTTP requests from JavaScript with the headers Rails expects like X-CSRF-Token handled for you
  • Turbo streams can send just a snippet of HTML over the wire (a fetch/XHR or an Action Cable socket) to re-render part of a page, and support was recently added for Custom Actions that sorta let you send anything you want over the wire
  • The turbo-rails gem adds some very handy glue code to broadcast model updates in your database and render Turbo streams to subscribers via an Action Cable socket connection
  • Stimulus values are synced with the DOM as data attributes on the owning controller's element, and Object serialization is supported (as one might guess) via JSON serialization. Stimulus controllers, by design, don't do much but they do watch the DOM for changes to their values' data attributes

Is your head spinning yet? Good.

You'll never guess what happens next…

In order to protect user privacy, Apple Vision Pro does not trigger hover state on UI controls other than native visionOS applications. As a result, successfully clicking links and buttons requires the user to take a Tap of Faith that they're looking at them just right.

As a result, my click failure rate is like 30%. This is so dumb. Let me turn off gaze privacy.

A lot of people are surprised that I pronounce my last name in Japanese as サールズ ("saaruzu") instead of something that looks more like Searls (せアルス). Here's why:

In English, Searls is pronounced like "Pearls" but with an "S" instead of a "P"

So I reverse-applied the same mnemonic to Japanese: start with katakana for pearls (パールズ) and replace パ ("pa") with サ ("sa"). That way in both languages, it's "Pearls with an 'S'"

Breaking Change artwork

v17 - Shallow Tissue Massage

Breaking Change

I hope you like stories about moaning during a couples massage, bugs with Apple's Home Key system, and when it's OK to duplicate code in software. Because that's most of what I got this time.

Not enough of you are writing in, and if you don't start soon I am going to CANCEL this PODCAST production PERMANENTLY: podcast@searls.co. (Write in or else.)

Some proof of work:

Show those show notes…

Life comes at you fast

Writing this to demonstrate it's not "literally never" that application developers would benefit from the non-obvious data structures one might learn in a computer science program: I'm two days into a challenging feature and just realized it would have been way easier if I'd used a linked list.

First time in maybe a decade.

Quintessential Oils

Sure, you've tried essential oils, but once you go quintessential you won't go back.

The Crowdstrike thing was such major news that it was the first time in a long time that non-technical family and friends texted me about software.

Do you have any takes on Crowdstrike or stories about disasters (averted or experienced) like this one that you'd like me to read on my podcast? If so, write in! podcast@searls.co

IYKYK

Experience seems to be the only way for a product manager to learn the profound difference between "Never" and "Almost Never" (or "Always" and "Almost Always").

AAAAAwesome company name

I've got nothing but respect for this rando Amazon vendor's alpha-sort-hacking game.

I've been using iOS 18 for 1 day and the reviews are in: full color tapbacks in iMessage are the worst design decision since the 737 Max.

Photo Shuffle is still broken in the iOS 18 Lock Screen

For iOS 16, Apple overhauled the iPhone lock screen and the one feature they shipped that I really, really wanted was the ability to shuffle depth-effect photos of my spouse. It's called "Photo Shuffle", and you get there by adding a new lock screen, tapping "Photo Shuffle", and selecting "People". The Big Idea is that your phone would use machine learning to select great photos and then apply a depth effect (i.e. clipping the subject in front of the time). However, instead of having users select "People & Pets" from a standard iCloud Photos picker, you get an arbitrary smattering of a couple dozen randos in a bare bones custom UI.

So what's my beef with this feature? Over the course of 2 years and 7 devices, my wife has never been among the options presented to me. Can't select her. Doesn't matter that I've named her in the Photos app. Or favorited her. My library has over 25,000 photos of her for crissakes. Who can I pick from instead? Well, there are least 3 kids whose names I never knew and for whom Becky appears to have had as Spanish students for a single semester in 2009. Great job, everyone.

As it turns out, I am not alone.

I first encountered this bug in iOS 16 developer beta 1 on June 6, 2022. It has persisted across four iPhones and three iPads, even when set up fresh, not-from-backup. Not only that, I always see the exact same list of people I don't care about. Most of whom I never even bothered to name in Photos, which suggests the bug lives in the cloud, which is just great.

Jason Snell reported on this feature's problematic design last year (during iOS 17 beta season), for MacWorld:

Photo Shuffle's method of offering people to display appears utterly broken. It offered my wife a small number of faces, most of whom were completely random and fairly uncommon. She's got hundreds, if not thousands, of pictures of me and our kids on her phone, and yet we weren't among the faces offered. And if the faces you're looking for aren't in Photo Shuffle's very small list of options, there's no recourse. You're stuck.

Well, here we are, one year later, and I'm unhappy to report: Photo Shuffle is still broken in iOS 18. It doesn't seem to have been touched at all.

When people talk about the inscrutability of machine-learning and AI as being problematic, this is as practical an example as I can think of. All I want to do is shuffle photos of my wife on my lock screen, but there's no action I can take as a user—no amount of hardware purchases, software updates, or device factory resets—to make that happen. Apple Support can't do anything either. I doubt the engineers who worked on it could. Whenever anyone says "AI", everyone involved quickly absolves themselves of responsibility—it's a black box.