brandur.org

Atoms

Multimedia particles in the style of a tweet, also serving as a changelog to consolidate changes elsewhere in the site. Cross-posted to an atom feed. Frequently off topic.

Nanoglyph 049 is published, on the end of Heroku (?), things we could’ve done to stave off its untimely demise, and a brief trip report from paradise in Raja Ampat.


Nanoglyph 048 is published, with mixed thoughts on LLMs, the past, present, and future of programming, Ambon, and psychedelic frogfish.


Nanoglyph 047 is published, on joining Stainless, six months at Snowflake, and going to view Komodo dragons on Rinca Island.


Trying Ghostty.

I didn’t switch before because I couldn’t find anything in the feature set that improved anything enough over iTerm to be worth the switching cost.

Easy theming and an automatic light/dark switching is what won me over.

In ~/.config/ghostty/config:

theme = dark:Belafonte Night,light:Belafonte Day

Strong recommendation for Mars Express. It’s been quite a few years since I’ve seen a good science-fiction movie, and doubly so for an original IP.

Mars Express is a breath of fresh air. No politics, no California identitarianism, just cool technology concepts, good plot in a tight runtime (it says more in a mere 90 minutes than Hollywood’s able to express with three hours), and great art/animation.


Nanoglyph 045 is published, on a few features from Postgres 18 and a note on upcoming travel to Indonesia.


A short one for the Crunchy blog: OLD and NEW Rows in the RETURNING Clause.

Postgres 18 was released today. Most of us know about async I/O and UUIDv7 by now, but this was a nice smaller surprise that I hadn’t heard about until reading the release notes.


Nanoglyph 044 is published, on a visit to the STRAAT museum in Amsterdam Noord and thoughts on the iPhone Air.


Nanoglyph 043 is published, on a visit to Amsterdam for Rails World 2025, CI loops measured in days + why to make sure that CI can run locally, and a visit to the Ruby Embassy at Beurs van Berlage.


Published fragment Occasionally injected clocks in Postgres, on using a coalescable parameter to stub time as necessary in tests, but otherwise use the shared database clock across all operations.


I enjoyed A deep dive into Solid Queue for Ruby on Rails. Does a nice job of showing some user-facing API while also covering the database implementation. I didn’t realize that Solid Queue supports job concurrency right out of the box!


Movist Pro has added shortcuts for deleting videos right from the app. From the 2.13.1 changelog:

2.13.1

• Added file deletion feature
    • [File > Move to Trash ⌘⌫]
    • [File > Delete Immediately ⌘⌥⌫]
• Fixed crash issue on macOS Tahoe beta

I don’t know about the rest of you, but Google finally succeeded in killing my uBlock Origin’s capability of filtering out YouTube ads a few weeks ago. I’m test driving Brave as my main browser right now which seems to do a good job of ad filtering, but an equally good or better option is to use yt-dlp to fetch videos, then watch them in Movist. No ads, and with the benefits of a desktop app like fast scrubbing, offline use, and pinned windows.

This feature makes that workflow a little smoother. Download video → watch in Movist → finish watching → delete video directly without leaving Movist.


Published fragment Testing the graceful handling of request cancellation in Go, 499s, on using built-in net/http facilities to make sure that canceled requests are abandoned immediately to save time and resources.


After a recent switch to Brave, I was doing some very infrequent tool sharpening in the Vimium extension (which I’d also used in Chrome). Google’s trained me to get used to extension functionality disappearing over time, and even as I noticed Vimium’s capabilities shrinking over the years, I’d never seriously looked into doing anything about it.

I was pleasantly surprised today to find that most of what I’d been missing over the years was recoverable through customization. For me, that’s the paging shortcuts that I use in Vim constantly:

map <c-d> scrollPageDown
map <c-u> scrollPageUp

map <c-f> scrollFullPageDown
map <c-b> scrollFullPageUp

It’s nice having these old friends back.

Also, disabling “smooth scrolling” kills the scroll animations. A pure, objective win if I’ve ever seen one.


See: Frequent reauth doesn’t make you more secure.

At sufficiently large companies, security becomes a religion. A core contingent of rabid disciples dogmatically interpret the writings of patriarchs that came before them much greater than themselves (e.g. OWASP). Common sense approaches to security (e.g. passwords that don’t expire) are instictively rejected, even while questionable practices (e.g. OTP over SMS, sessions that expire in 24 hours) are dogmatically embraced.

Sometimes I think that all it might take to turn things around are smart security-conscious people that also care about UX to write more articles on best practices (actually best practices as opposed to what the security industry calls a “best practice”) so they can be shared as canonical references internally.