So, I’m Out

It’s already been well over a year since I looked at Facebook or Instagram, and at the beginning of the month I stopped looking at Twitter. After two weeks, I checked back in and nope, I hadn’t missed anything amazing, but I sure had missed out on a bunch of anxiety and whatever we’re calling the Twitter equivalent of vaguebooking. So, being essentially drama-averse, I’ve actually gone and deleted my Facebook, Instagram, and Twitter accounts. Here’s to a better 2022!

Serializing SwiftUI Color

There are plenty of resources out there that will tell you how to make SwiftUI’s Color conform to the Codable protocol. They all boil down to creating a UIColor (when you’re running on iOS) or NSColor (when you’re running on macOS) and then grabbing the color components from there, because SwiftUI is helpful by not letting you access those things directly. The thing I learned yesterday is that if you construct your SwiftUI Color from a color asset catalog and then you construct an NSColor out of it, you need to set a color space before you can grab the components. If you don’t do that, then the thread that’s doing the work will crash. So, the code needs to look like this:

import SwiftUI

import UIKit
import AppKit

extension Color {
    // swiftlint:disable:next large_tuple
    var components: (red: Double, green: Double, blue: Double, opacity: Double) {

        typealias NativeColor = UIColor
        typealias NativeColor = NSColor

        var red: CGFloat = 0
        var green: CGFloat = 0
        var blue: CGFloat = 0
        var opacity: CGFloat = 0

        var native = NativeColor(self)

        native = native.usingColorSpace(NSColorSpace.genericRGB)!

        native.getRed(&red, green: &green, blue: &blue, alpha: &opacity)

        return (red, green, blue, opacity)

Do They Even Use These?

So, the new 16″ MacBook Pro has a notch. The choice is always there. You could, of course, not include a camera at the top of the screen. Nowadays that’s pretty much a non-starter, what with video conferencing being the way so much happens. So then, if you put a camera up there, do you keep the display a rectangle and therefore have a lot of dead space to the left and right, which you still have to build and pay for, and the users bitch about the size? Or do you put in a notch, giving up some menu bar / display space in the middle of the top of the screen but save like half a centimeter on the overall dimension, and let users bitch about how they can’t see their menu bar?

Guess what? People who want the 16″ (as opposed to the 13″) laptop care less about the size and weight of their device than they care about screen real estate. If size or weight were the deciding factor, they’d get the MacBook Air, or be happy with an iPad Pro. Or a Microsoft Surface.

We’re also supposed to be happy that they brought back MagSafe charging and an SD card slot. I guess these are cool, but here’s what else we have: only 3 USB C ports. But you know what I do have, now that USB C is more and more ubiquitous? I have a lot of peripherals that use USB C connectors to connect to the host computer. I have more than three. But you know what you can’t daisy chain? USB C connectors.

Here’s my bet. The people responsible for the notch don’t actually want to use the 16″ MacBook Pro.

What If Tulips, But…

In the early 90s, you could patent anything if you took an existing product and appended, “…but on a computer.” By the late 90s, you could sell anything to the public at large, claiming that it was a disruptive business that would change the way every human on the planet did the thing they’ve been doing for hundreds of years by pitching it as doing the thing, “…but on the Internet.” By early in 2001, just about everyone had finally figured out that that was wrong.

Today, it seems that the answer is to do the thing, “…on a phone.” Never mind that photography is a skill and so is music production; the thing that every smartphone tries to be is the best ever digital camera and recording studio. If you are not a creative genius but only barely competent, adding an extra gigapixel and some really clever digital signal processing to your phone will not materially affect your photos or recordings. And yet, that’s the platform that’s got everyone excited. It’s ubiquitous.

I’m really just grumpy because all the hubbub is about solving problems I don’t have. I suck at photography, so I don’t actually care about the very latest camera on the very latest phone. I guess if there were other sensors that were useful to me, I might care more. Like what? I dunno. Maybe…soil acidity? Temperature probes? I mean, it’s kind of useful being able to use my phone as a level and a compass, but honestly a spirit level is way cheaper and more durable, as well as easier to use. A measuring tape is more reliable, cheaper, and unlikely to break if I drop it. External sensors are cool, but honestly, going around my house and garden, what measurements do I want to take on an ongoing basis? I…don’t.

Because here’s a thing: unless you use the collected measurements to inform some decision, to take some action, then they’re not actually data. They’re just junk, piling up and taking your attention. So I don’t even know. I feel like the computational power of a phone, and the capabilities of its standard sensors, are just really amazing solutions that are in search of a problem. Absent the problem, they’re just feature checkboxes.

Sturgeon’s Law

My Audible subscription just renewed and I got all enthusiastic. Back when Netflix was DVD only, we had a, “go ahead and try it,” policy: stick whatever recommendations in the queue, and when they showed up, pop ’em in and hit play. If the movie wasn’t compelling after the first 15 minutes, we’d put it back in the mail. The cost of trying something new was pretty small. Same with the Audible subscription – you can return books, so I go ahead and take risks when I’m flush with credits. When I get down to one or two left, I get really conservative.

So anyway, I went ahead and tried out a modern fantasy book. It didn’t absolutely suck, and the author had subsequently been fleshing out his universe and written many more books, so I plumped for two more in the main thread and one in a spinoff. The spinoff was okay, although the narrator’s idea of a Scottish accent was…grating. But the second book in the main series managed to lose me mid-way. I had hoped that, even within the predictable tension/conflict arc of the episode there might be interesting characters doing fun things; by the beginning of act 3 the only interesting character was the dog, and the others were getting less believable with exposure, not more.

I’m keeping the two books I finished — I figure it’s fair since I did listen all the way through and enjoyed the first one enough to try the others. But they’ll sit there in my audio library, a reminder not to go down that particular road again.

Daily News

Once upon a time, before the death of irony (what do you think, did irony really die in 2001? I feel like it’s sort of still around) there was a link soup column called, “Suck.” The format was a short essay written in a glib, cynical voice (I just typoed that as, “void,” and that’s totally appropriate) riffing on some trend-of-the-moment, with one or two links to stories or websites sprinkled in each sentence. It totally earned the name, “Suck,” by not putting alt text on the links, so you had no idea where the link went. If you followed every one, you’d have a boatload of open tabs to click through, so it would suck up your day, as well as being a sucky website.

That said, it occurs to me now that as shitty a way of aggregating a daily news feed as that was, I think I’d rather have that than the horrendous torrent of vague hot takes on Twitter. At least Suck was meta enough to give some hints about whether the link would be worth following or not, albeit still being vague about the content in what’s clearly recognizable today as a clickbait move. Dunno if they were getting referral money from those links or not.

Once upon an even earlier time, for about a week I thought I might enjoy writing for the school paper. I got a tiny bit of training and actually went out on assignment and turned in a story and then decided that while I could possibly have gotten enough better at writing short essays – for no money and no grade – that people might want to read them, I had no actual desire to do it. Too much like work. One of the things I remember about the training, though, is that the headline is supposed to engage readers, giving a gist of a story while inviting the reader to keep going. Apparently, that’s not true any more. Nowadays, it seems that the purpose of a headline is just to drive hate clicks.

So, that’s the evolution of discourse.

Here’s the best of today’s crop:

“Senate Republicans make new infrastructure offer as House Democrats urge Biden to dig in” – Washington Post

So, the public humiliation of the Democratic party is continuing. Everyone who cares already knows that the Republicans don’t give a shit about public infrastructure. So if they’re not going to build roads and bridges, what are they doing? They’re making the Democrats dance to their tune. Why? Go ask the kids who swiped the loser kid’s backpack and are now playing keep-away before school, why are they doing it. They’re doing it because it’s fun. Because they like taunting the helpless. Because they actually don’t like that kid and they want that kid to suffer. Because the suffering of others is fun. And that’s the kind of people they are.

Of course I didn’t click through to the story. Why would I?

“Nature Will Help Protect Us From Climate Doom – If We Let It” – Mother Jones

Seriously, God bless the hippies. They’re so cute, how they think that there’s some big agent out there, “Nature,” and that agent doesn’t actually include human beings. Because things humans do are not part of nature, because humans are unnatural. Sure, I’m playing semantic games, and we all know that’s not what is meant in this context, but come on. Think for a hot second while you read that headline – climate doom for whom? Let it, how? Is there any mystery left about how human activity has altered the climate? Nah, not really. And do sea level rise, weather pattern shifts, and average temperature increases threaten all life on the planet, or just the established human land use patterns? Yeah, we all know the answers there, too. So what needs to change? Yeah, we know that, too. I mean, there could actually be something in this article about new farming practices or something but that headline doesn’t suggest it; it’s just trying to restate the warnings we were getting 50 years ago.

I’m one of the hippies and even I can see that this headline is aimed squarely at a point that we’ve passed long ago. Of course I’m not gonna click that.

“How Many People Die When Polluters Exceed Their Limits?” – Wired

I’m gonna go ahead and guess that the answer is, “All of them.” I mean, everyone dies, right? Yeah, I know, this is about the fact that pollution causes disease, either by pathways we know explicitly or by means we don’t quite know but which we can see clearly in statistical analysis. So, really, this is like saying, “Okay, you’re going to die sometime because nobody’s fucking immortal. Now, if you suck on this exhaust pipe for 12 hours a day, you’re gonna be real short of breath and lose a significant amount of brain function due to lack of oxygen, as well as get a very elevated risk of a whole suite of cancers. Which will likely kill you sooner rather than later. But if we cut it down to 4 hours a day, the same damn things will be true, except it’ll take longer. So what’s the number of hours that’s right for you?”

Substitute heavy metals leached into the drinking water, or whatever pollutant you want. I still see this as an attempt to convince somebody that maybe some stranger’s life isn’t worth throwing away just so you can pay less for your next t-shirt. I bet that if you really think cheap electronics are more important than clean water, no news story is going to change your mind. That said, if it does, then give this writer a fucking medal.

“We worked in a VR office for a few months and didn’t totally hate it” – Mashable

I guess that puts you one up on literally every human working in a cube farm, ever.

No, I’m not going to read about how it’s almost not horrible, being a veal in a pen, when the pen is in your own house.

“The future of remote work is a lot like living in a video game” – Mashable

…because video games have become just like fucking work! Grinding an MMO to get leveled up so you can do your part in a big raid, or grinding so you can build some better longhouse, or getting better at tapping different buttons so you can make sandwiches faster and sell more things. Have you yet realized that your “recreation” time is being spent doing dumb shit that we used to pay teenagers minimum wage for? You are paying a monthly subscription fee to be allowed the privilege of working fast food, or working in a goddamn warehouse! Work isn’t becoming like a video game, video games have become work!

Of course I’m not gonna click that!

“The U.S. is alarmingly close to an autonomous weapons arms race” – Fast Company

For this news organ, “alarmingly close,” is the style guide’s preference over, “already in.”

I guess that the target market for Fast Company is people who do not read any tech news, nor listen to any popular science podcasts. People, that is, who are utterly unaware of the developments in robotics since 1990.

No, I’m not going to read that.

“Will rule of law succeed where Congress failed and hold Trump accountable?” – The Guardian


Saved you a click.

“‘Never seen levels like this’: Union president on airline passenger misconduct” – CNN

This is a story about how people are garbage, which comes as a complete surprise to everyone who has never read the comments section anywhere on the Internet.

As well as being a story, this one is a video clip, which means that in addition to being told that people are garbage, it’s going to use even more of your data stream. So, people with power are being dicks to people they have power over. Saved you a click. And a gig of data.

Put a Bird on It

I have been nerdsniped by the dratted Russian hackers. Those darned “hackers”, causing trouble and getting people all excited about security. So now I’ve got to deal with thoughts and suggestions in my peripheral awareness, and remind myself that I’ve already done the work of threat modeling and risk analysis for my data and for our household. This is a thing that happens to us kind of a lot: some event gets people talking about a thing (infosec, disaster preparedness, whatever) and we haven’t been thinking or talking about that thing and we experience a moment of panic — oh shit, are we ready for that — and then we breathe and calm down because, yes, we have thought about that and we have a plan and we made decisions, which is why we haven’t been thinking or talking about it.


There are only two reasons I can see to use a VPN service. First, to get around IP based geolocation tracking, so you can get access to content (usually video) that is only available within a particular geopolitical area. Second, to prevent your ISP and/or other users of your local wifi network from knowing that you, Joe Internet User, are requesting content from and


Once your “free” email provider has received a message for you and put it in your inbox, they’ve already processed that message and indexed it for your user-as-product profile. You know the saying, “If you can’t tell what the product is, you are the product,” well, when the service is free, then your attention is the product. Deleting your emails doesn’t mean that the service will forget that you received an email from Aunt Mary, or that you received a purchase receipt from Amazon. So either you care about that and you shouldn’t use a free email service, or you don’t and you should.

Social Media

Whatever other evil / dodgy things Facebook may be doing, the implementation of their feed and the network of people to whom I’m connected is such that it is really an instance of “Anxiety as a Service”. My life is better without it. Twitter is just barely better, but at least I have software that lets me get my friends’ updates without having to subject myself to the algorithmic scrambling and hiding of tweets and the interstitial insertions of ads and sponsored tweets. So I can manage how much rage and anxiety I expose myself to. Mastodon is awesome because there’s nobody there and I can totally handle one update every other day.


You know what’s amazing? Not downloading random crap, not clicking on links in email, and not having every dang device in our house connected to the big bad Internet. If you don’t stick a computer in it, it can’t get a computer virus. It’s awfully difficult to hold my refrigerator hostage when the only wires going in are the electric mains. I am a grumpy old man, and I lived my life this long without being able to turn on my stove from across town. There are real problems that we had and which we solved with some IoT things, but every single Internet connected thing has a big hurdle to jump before it gets into the house: how will our lives change when, inevitably, the server to which it talks disappears? Because even in the extremely unlikely event that the device and server are never compromised by malware, the fly-by-night company that makes the thing is going to go tits-up in a few years and either disappear or be acquired by an evil monopoly. If you are going to be upset by any of those events, then don’t allow the thing into your network. At the very least, have a plan in place for what to do when the bad thing happens.

Open Letter to the FSF

I have been professionally active in software development for 27 years and I have used and even contributed to Free Software.  While Richard Stallman has played a critical role in the development of Free Software, he has also contributed to a toxic atmosphere of male entitlement – a sense that rules only apply to other people.

I’m disappointed and angry that your organization has chosen to reinstate him in a leadership position and to see you cite his “wisdom” as one of the factors in that decision. The statements that led to Mr. Stallman leaving the board were bad enough; his non-apology clearly demonstrates that not only is he not sorry, but that he doesn’t even understand what he did wrong. That isn’t wisdom, it’s arrogance, and pretending otherwise tars the FSF with the same brush.

What your organization seems to be saying to the world is, “If you make stuff we like, it doesn’t matter if you treat some people horribly. Good software is more important than human rights.” Because you seem unclear, I am telling you that’s wrong, and you ought to be ashamed of yourselves. Do better.

App Clip

So, when I saw the bit about App Clips at WWDC last year, I wasn’t terribly excited. After all, QR codes have been around for ages; the fact that Apple ignored them until they could figure out a proprietary version struck me as par for the course. Even the example use case they gave (still give) seems geared toward chain stores in physical locations. But! An App Clip is a way to provide a subset of an iOS app’s functionality for free with a framework to upsell to the full app. Just what I want for a paid game!

I don’t like subscriptions. Sure, if the app uses some off-device resource that has an associated cost, I can see the need. It’s fair to pay for stuff. But for my simple little game, there’s really no point. I set it up to cost a dollar because the resources it took to build it weren’t free (had to license the icons, for example), but seriously, it didn’t cost much. But since it’s not a subscription, the App Store doesn’t provide an easy way to offer a free trial for a few days and then pay for it. I suppose other apps solve this with some kind of advertising and in-app purchase to buy the ad-free experience. I may not like subscriptions but I hate ads. I’m coming to the viewpoint that supporting your software with ads is equivalent to selling your users to the advertisers, and that, my friends, is human trafficking.

So anyway, I spent the past couple of days creating an App Clip for Three Lines, which lets you play the small board. The full game lets you play bigger boards and choose different icons. This seems like a great thing. But since it’s the first time I’ve done nearly all of this, I have no idea whether it’s going to work properly. This page ought to display a “Smart App Banner” if the conditions are right. As I understand it, that means the page is loaded in Safari, on an iOS device, that doesn’t already have Three Lines installed.

UPDATE: Okay, the smart app banner shows up (even though I have the app installed on my phone via TestFlight) but the banner is for the App Store page. How do I get it to be for the App Clip? Maybe I have to release the app with the clip first…but then how would I know that it works? Hmm. This does feel a little…undocumented.