Mattie B

Software consultant and developer. Hopeless nerd. Disaster queer. They/them.

Python rot and bringing in the old blog

I've been working on a little project for a few evenings now: folding my old domain and old blog into this one. The old blog was built with a static site generator called Felix Felicis (yeah, it makes me wince now, too). I got to write posts in Markdown, then run a Python program to build all the HTML that I'd then rsync on over to my OpenBSD server hosting zigg.com. Honestly, I might even still be using it today, if it weren't for Python rot. I used to adore Python, oh my gosh. Before I star...
Read post

In defense of the USB-C future now past

I recently upgraded my nearly-five-year-old MacBook Pro with one of the shiny new M2-based ones. (I do work with these, so the company I work for contributes toward their cost.) Prior to that, I had the 2018 MacBook Pro. That was the one that had the best version of the worst keyboard. Not content with that, it had another controversy swirling around it—apart from a headphone jack, it only had USB-C ports. Before the super-thin 2016-2018 MacBook Pros came around, we had machines with the headp...
Read post

Choosy is for more than just browsers

One of my essential macOS apps is George Brocklehurst's Choosy. I maintain Safari as my personal browser (it's convenient, particularly cross-device, and Advanced Data Protection now covers bookmarks too!) and Chrome as my work browser. What Choosy does for me is inject a quick step after clicking links that prompts me to pick one or the other. We also use Miro quite a bit at work, both internally and with clients. And there's one workflow that has always ticked me off—clicking a Miro link pra...
Read post

You got your LEGO in my cube!

While hunting for white elephant gifts, I came across something really neat. A company called ULUZE (what is with the myriad company name concotions from online sellers?) makes a combination 3x3 cube and LEGO knockoff I had to get for myself. ULUZE's Magic Cube, a 3x3 Rubik's-like cube with LEGO-knockoff 2x2 plates for faces. It's been rearranged so the faces are in checkboard patterns. Okay, so, this thing is really neat. First, I wouldn't mistake it for a speedcube. (I ...
Read post

Controlling iCloud Drive's space usage

Last August, I wrote a post over at Atomic Spin on calling macOS APIs in Automator workflows. My impetus was to control the amount of space iCloud Drive was taking up on my Macs with smaller disks. I don't know how many people actually read that post, because nobody seemed to notice I didn't actually need to write a Swift script to accomplish the task at hand. Because brctl exists. (Mind you, I'm glad I wrote the post and did the exploration. I think it's really valuable not just from an Autom...
Read post

Better captioned images on Listed

I realized that I have been using the figcaption HTML element incorrectly, when I originally added the photo of a Nazi book burning to my post about Twitter and the pink lists. I was trying something like the following, to get text to land below my images: ![An image.](http://example.com/image.jpeg) <figcaption>A caption.</figcaption> This isn't using figcaption correctly, though. And I needed some negative top-margin to align the caption a little closer to the image, as well as so...
Read post

Hey Siri, add a transaction to YNAB

That was an interesting journey. I'd never really invested the time in creating my own really complicated iOS Shortcut from scratch before. The limited debugging options and figuring out how it all worked, step by step by step, reminded me a bit of my early days programming as a kid, bewildered but steadily figuring it out. Okay, but to back up for a minute: my goal was to teach Siri how to record a transaction in You Need a Budget—YNAB, for short. There were, of course, already-written solut...
Read post

Hey Siri, open the garage door

I went smart garage door shopping a little while ago. After looking around at the options, I settled on the Chamberlain Smart Garage Control. But wait, Mattie! You're deep, and I mean deep, into the Apple ecosystem. This ain't a HomeKit deal. And I'm in it for good reason. I mean, I was chomping at the bit for my HomePods to get upgraded to audioOS 16.2 so that I could get into Advanced Data Protection as soon as possible. End-to-end all the things! But the Smart Garage Control had a few thin...
Read post

Making song links for any streaming service

We live under capitalism, so of course there are eleventy billion ways to play a song, many of which are hoping to get you to commit to subscription fees. All hail the subscription economy! I'm the Apple Music type of consumer, owing in part to my stack of Apple stuff but also because I can upload music to it that isn't in the catalog. (Streaming rights being what they are, this has turned out to be a critical need. That and yt-dlp have kept me listening to stuff I wouldn't be able to otherwise...
Read post

Jesus at the Intersection of Fear and Disapproval

Content warning: religious hate of queer people, queer self-hatred. Some of this has been a long time coming. Parts can be found in several drafts hiding out in my private notes. Until today, I've been too afraid to say what I need to say. But something I came across gave me a nudge. This poem from Jay Hulme has been making the rounds. (Jay wrote about this, if you're interested in more.) Jesus at the Gay Bar He's here in the midst of it - right at the centre of the dance floor, robes hitch...
Read post

Uploading images for Listed with an Imgur iOS Shortcut

Please enjoy my first shot at embedding images in my Listed blog. The complete set of LEGO Muppet minifigures. I did this using a iOS Shortcut I created, Upload to Imgur. There are other Upload to Imgur Shortcuts, but this one is mine. And this one resizes the image width to 2048px before uploading. I am not 100% convinced I want to stick with Imgur, but for now, it works out. And maybe I can get my headshot in there too. ...
Read post

The Twitter implosion and the pink lists

Content warning: violence against queer people in history. Like many people, I've been watching the implosion of Twitter under Space Karen with a mixture of dark humor, relief (that I left when I did), and horror. As time goes on and the likelihood that the company continues to be a going concern rapidly approach nil, the horror is growing. I started looking around for a couple options to try to scrub history. (I probably should have been doing this regularly. But I wasn't.) That was when I d...
Read post

A little more Listed customization

My last post introduced a few new things. For starters: Listed does code highlighting. It doesn't make the greatest color choices, though, in dark mode. I wonder if this is something I can contribute fixes for. I also wanted to use keycaps in that post. For this, I added my first bit of custom CSS: --- metatype: css --- kbd { border-style: outset; padding: 0em 0.25em; font-family: Roboto,sans-serif; } I based this on a little bit of fiddling in my browser's inspector, and also a ...
Read post

Edit your Zsh command line with vi

I have a bad habit of just kind of going with very slightly inconvenient things when developing, because I don't want to lose my focus. One of those is when I need to edit something in the middle of a long command line. I'll just hold the arrow key until I get there. When I used OpenBSD and ksh far more often, the solution to this was set -o vi stuck into my $HOME/.kshrc file, which transformed my shell into a little vi editor. Now I could hit Esc to hop out of normal mode and use all my favo...
Read post

What it's like writing on Listed

Okay, okay, but please, just let me get the meta out now? How can you have a blog without starting with meta? Putting together yesterday's piece was a new experience for me. I've previously written in one of two modes: in vi either directly on the OpenBSD server that also hosted the blog, or on my MacBook to be built with the ancient Felix Felicis and rsynced into place, or in the massive, somewhat overwhelming environment of Atomic Spin's WordPress admin area The latter part is interesting...
Read post

Mister Rogers and François Clemmons

I promised a friend that I would go deeper into the story of François Clemmons. Said friend had posted the well-known story of the Mister Rogers character Officer Clemmons, who—well, I'll just crib Wikipedia: For 25 years, Clemmons performed the role of Officer Clemmons, a friendly neighborhood policeman, in the "Neighborhood of Make-Believe" on the children's television show Mister Rogers' Neighborhood. In the neighborhood itself, Clemmons ran a singing and dance studio located in the buildin...
Read post

Let's try this again

This is going to be a bit of an exercise in fighting perfectionism. I've been a Standard Notes fan for, gosh, a very long time now. (I reviewed it for Atomic Spin back in 2018!) And they've had Listed for the entire time I've been a fan. I tried it once, for a pseudonymous thought dumping ground. I found out I'm not really all that compatible with pseudonymity. I'm sort of an all-or-nothing type—I don't partition. So that went by the wayside. Just a couple entries left in my Standard Notes ac...
Read post

The drain of self-advocacy

It seems it’s International Non-binary People’s Day. Which is cool. I had no idea it was today until I saw the posts. What can I say? I haven’t flipped through the gay agenda in awhile. The post that brought it to my attention contained one of the many articles that queer organizations publish on these sorts of days to help people learn how to be a better ally. "Great!" I thought. "I can share this! And people can pass it around and learn some important things!" But I hesitated. I haven’t t...
Read post

On supporting a friend

I've been thinking this morning about the nature of support, and how we can offer it to our loved ones. I think this an unfortunately really common thought pattern: in order to offer support, we have to take an active role in another's life. We have to make our loved ones' endeavors our own, we have to literally take part, right? Otherwise, the thinking goes that we're not being supportive. But if we don't enjoy the thing, if we don't feel that personal pull, if we are personally worn-out, if ...
Read post

Review: GRIS

I haven't reviewed a game since 2011—my last was my review of Atsumete! Kirby (a.k.a. Kirby Mass Attack) for my old games media stomping grounds formerly known as N-Sider. But after playing Nomada Studio's GRIS this weekend, I felt like sitting down and writing because I have been moved in a way that I haven't been in a good while. Nintendo has this great setup these days; if you wishlist a game on the Switch's eShop, you'll get an email when one goes on sale, which is great because perusing th...
Read post

Your candle

You have a candle. It has a beautiful flame, unique and in colors not often seen in this world. You want everyone to share the joy you get from that candle, to understand where the flame comes from, to love its colors like you do. But it’s not like any candle they’ve seen. And so you have to burn it brighter, hotter, really let them get a good look at it and the light it casts on your face, let them see you illuminated in its beauty. Unfortunately, you only have the one candle. And when it’s ...
Read post

In memoriam

Content warning: death, mourning. I've felt significant loss in the last part of 2018. We lost my spouse's father, a wonderful, kind man who loved his grandchildren. We lost my nineteen-year-old cat, the most special pet I've ever had, who loved everyone he saw and always wanted to be involved in what we were doing. I've been thinking about what it means for someone to pass on. Religious schools of thought often teach us that the souls of the departed move on somewhere else, but as I've develo...
Read post

Natalie Nguyen

A year ago today, a young woman named Natalie Nguyen committed suicide, and her death reverberated through the community on Mastodon that I had only been a part of for a few months. I learned about it the next day. She was not a part of my immediate circles, though we shared many friends. I could feel the pain of her loss through them. She was a light in their lives and extinguished far too soon. But as if it wasn't cruel enough that the world took her from those friends, what happened afterw...
Read post

A JavaScript object that dynamically returns unknown properties

In our current project, we make extensive use of JavaScript objects as dictionaries, with the property name functioning as a key for the object we want to look up. We can use the in operator to test for property presence, and the dictionaries are perfectly JSON-serializable. However, when it comes time to build test fixtures around these dictionaries for testing code that might look up lots of different keys, creating the test data for all of these keys becomes a large effort. Luckily, ES2015 h...
Read post

Setting up Windows to build and run Node.js applications

Node.js is just JavaScript, right? So it should be really easy to run Node.js applications on Windows—just download and install Node, npm install, and go, right? Well, for some applications, that’s true. But if you need to compile extensions, you’ll need a few more things. And, of course, with Node.js itself being constantly under development, you’ll want to lock down your development to a version your code can use. In this post, I’ll talk you through how we get our Windows command-line environ...
Read post

Feeling Pride at Atomic

I am bisexual, and last November, I came out to everyone at Atomic. In any other job I’ve worked, I likely would have endlessly vacillated and probably just mentioned it in passing to a few coworkers. “Who needs to know?” I would have asked myself. And I would have kept quiet. But from my friends here, I felt support. Respect. I knew that in this environment, I could bring my whole self and freely advocate for all my siblings in the LGBTQIA+ community. What I didn’t expect was how much making ...
Read post

Review: end-to-end encrypted notes with Standard Notes

I’ve been looking for a software solution I can trust for writing, journaling, and taking notes securely. Many options exist, but they never quite fulfilled the demands of my wishlist: multi-device, cloud-synced, end-to-end-encrypted, and open. A few months ago, though, I discovered Standard Notes, and now I can’t imagine accepting any other solution. Standard Notes feels like the kind of solution I’d engineer if I were calling all the shots. The service is entirely open-source, to the point t...
Read post

Why a no-moonlighting guideline benefits employees

I had an old employer reach out to me the other day asking if I’d like to do some contract work for them. As I have in all these situations, I recalled Atomic’s guideline for Atoms—we should not do work on the side that competes or conflicts with Atomic’s business. While it’s immediately clear how such a guideline protects Atomic’s business, I’ve also found that it’s really helpful for me personally. Sustainable pace is an important Atomic value—one that attracted me strongly to becoming an At...
Read post

Spreading the spread and rest love

JavaScript’s spread syntax has proven to be an extremely useful tool while working with immutable data structures as part of a React/Redux project. Now that it’s widely available for objects in LTS Node 8 (as it has been for some time for other runtimes via TypeScript), it’s interesting to go back and take a look at all it can do. Object Spreads In our codebase, object spreads get the most use by far. They look like this: const x = { a: 1, b: 2 }; const y = { ...x, c: 3 }; // y == {a: 1, b: 2...
Read post

Resetting a Wacom Bamboo Spark

Last week, I turned on my Wacom Bamboo Spark smartpad (no longer available, but Wacom has other smartpad models) and the two indicator lights started flashing alternately like a railroad crossing signal. I could go through the Inkspace re-pairing process successfully, despite the lights never flashing, but the Spark would no longer recognize or record—or at the very least, would not sync—any additional handwritten notes I would make. I contacted Wacom on Tuesday. After several days of silence,...
Read post