Brandur
banner
brandur.org
Brandur
@brandur.org
Go, APIs, Ruby, and databases.
Getting back into Kubernetes for work after years away, my main takeaway is that although Kubernetes is still kind of a meh complexity/value proposition, Argo CD is absolutely incredible.

Glad there's a Kubes CLI, but having a great UI to backstop you changes the game.
cd.apps.argoproj.io
September 9, 2025 at 7:15 PM
Today, came across a Go package literally named "event". Such bland naming doesn't just hurt users, it hurts the package because being hard to google makes it less likely to be adopted.

Ultra-generic naming isn't cool. It's just bad.

For the love of god:
brandur.org/fragments/go...
June 30, 2025 at 12:18 AM
Past 8 PM, there is more life on one street corner in Berlin than all of San Francisco combined. It's wild.

Annoying to no end that America's most beautiful cities are compromised because we let boomers who bought homes in 1980 for $50k pull up the ladder behind them.
June 21, 2025 at 9:12 AM
Great new feature from Movist Pro. Knocks one step off the YouTube → yt-dlp → Movist pipeline.
June 20, 2025 at 4:00 PM
Recently learned about the "American Frontier" movie trilogy, or in other words that Sicario (first watched a decade ago) has two spiritual successors.

Watched Wind River tonight. Easily the best movie I've seen all year.
June 20, 2025 at 1:26 AM
Tiny tool sharpening: noticed over the years Vimium getting less powerful and had assumed it was Chrome slowly killing extension capacity, as they do. Today, recovered some important ones with custom bindings.

Also, smooth scrolling -> off to get rid of awful scroll animations.
June 16, 2025 at 9:54 AM
Just in case I'm not the only one who didn't know about this (it's not new, but TIL for me) ... you can set watches on GitHub repos based on custom settings, like for releases only. So useful.
June 15, 2025 at 4:38 PM
One of these is parody. The other is real. Which is which?

We need to go back to designers making things for people, and function over form. For a decade plus, designers have been exclusively making things for other designers, and favoring form over function throughout.
June 11, 2025 at 7:10 AM
Some thoughts on the archival of Go's popular gopkg.in/yaml.v3 package.

It's a 3-way race:
• A vulnerability is discovered in gopkg.in/yaml.v3, becoming a widespread liability.
• Testify drops gopkg.in/yaml.v3.
• A new de facto assertion package is found.
May 26, 2025 at 10:27 PM
On a run after 8 PM. Calgary is absolutely gorgeous this time of year.
May 26, 2025 at 2:37 AM
What's more exciting? This, or iPhone 17?

Just kidding. It's a rhetorical question. Nobody cares about the iPhone 17.
May 5, 2025 at 9:29 PM
3.26 trillion dollar company.
May 5, 2025 at 6:59 PM
Never underestimate the LOC-culling power of sync.Once.
April 13, 2025 at 5:12 PM
Damn, we need to have a serious conversation about programming docs standards. >50% of the time they're so bad that why even bother.

Data defines the data. X0 defines the X0. X1 defines the X1. Y0 defines the Y0. What else did you want to know dummy?
April 10, 2025 at 5:37 PM
After implementing support in our home-grown Go data loader for `SELECT ... WITH UPDATE` yesterday, I'm now wondering how may apps use something like Rails' `Locking::Pessimistic` versus YOLOing (like we were) because transaction anomalies are rare and it's usually okay.

Probably 80%+ the latter?
March 29, 2025 at 7:05 PM
IMO, the right way to to do data fixtures in Go:

* No framework needed, but use sqlc + validator.
• Real DB records.
• No error return to making calling succinct.
• Pointer helpers to get 4 LOCs down to 1 LOC.
• Defaults for everything possible.

brandur.org/fragments/go...
March 20, 2025 at 4:34 PM
It's always such a nice surprise finding a fast, well-written test suite (they are very rare). Here's the Sequel gem's (Ruby ORM).

18 year old project. Runs <10s on battery power.
March 16, 2025 at 6:09 PM
DataDog tracer dependencies dependencies. Page 1. Page 2.

I feel a little less bad about my packages' dep trees now.
March 7, 2025 at 11:01 PM
Come MacOS 15.1, no more X button on this thing. You can snooze for an hour, or activate it then fuck around in settings to cancel it, but the user-hostile UX/Security teams at Apple are sending a clear message: the computer you bought was never yours, and you're on our schedule.
February 27, 2025 at 2:59 PM
It's always mildly terrifying when a product has a "try our new UI" button, especially when the UI is already good.

But ... tried it with Sentry and good results so far. Comments without needing to access them via sub-widget is a win.
February 24, 2025 at 4:23 PM
Go 1.24 deployed. 2-3% decreased CPU overhead here we come.
February 13, 2025 at 7:47 PM
Instead of allowing trailing commas in SQL—which will save thousands of wasted hours per year and has no downsides whatsoever—everyone should adopt my completely unintuitive, labor intensive alternative styling that moves the problem of a trailing comma to one of a leading comma.
February 13, 2025 at 6:20 PM
Squashed 2/2 (100%) known intermittently failing tests in the past 24 hours.

You have to be the Liam Neeson of tracking down and destroying these things. If allowed to fester, they accumulate and turn DX to mush in mere weeks.
February 12, 2025 at 5:30 PM
Put in a novel new system to dump a pprof profile to S3 if a request exceeds 1 GB allocations, then the memory overruns I'm trying to debug ... stop happening. Of course.
January 30, 2025 at 7:51 PM
I'm tempted to call out anyone using `_1` for an unnamed closure variable now that Ruby 3.4 brought in `it`.

But also, every time I think about using `it`, I use `_1` instead because `it` is just an awful name for an unnamed closure variable.

So I just shut up about it instead.
January 6, 2025 at 10:28 PM