My fav piece of new Canada trivia is that there is a US law that ships moving between US ports must be US built and crewed, so cruise ships that go from the west coast to Alaska just make a stop in Victoria BC so it becomes an “international” trip.
Evan Martin
Family trip, tech unsavvy grandma handed seven year old her tablet, he played a game and immediately clicked into >$200 of in-app micro transactions. We as an industry know this happens all the time, somehow powerless to stop it.
Then I’m called in as tech guy to help disable payments. It’s Google ecosystem so none of the online instructions work, all of the menus have been changed around repeatedly.
I sometimes see people remark in programming forums about how they use version control to store things but don't care about features more than that. Here's a little trick I used today.
My current program stores its state in a tree of text files. (This is already useful because I get version control, e.g. diffing etc. for the data itself.)
I realized I wanted to migrate to a different data format. How to manage it?
I took the ferry back to Seattle from my brief Canada trip. I tried getting in a cab upon arriving.
First guy said he had no credit card reader, a common scam so I I said nope. Loaded my luggage into a second cab and then the guy said he had no meter and quoted me double the price of what the ride should have been. Jumped right out of that.
It’s a shame that a company as sketchy as Uber ends up relatively reputable.
Accidentally bumped the "add to contacts" button in a context menu on macOS. Check out the list of chat services that supports!
Retrocomputing lives on, in forgotten macOS features!
Today I remembered (because I had commented on a bug 8 years ago and forgotten about it) that when nodejs spawns a subprocess, stdin is a socket, not a pipe, which means reading /dev/stdin doesn't work (edit: fixed this, see comments).
And I sorta chuckled to myself and added it to my list of why I never use node when I can avoid it. So many weird cases like these.
New blog post: Theseus, a static Windows emulator
An new old approach to emulation.
Speaking of common names, we gave our son a pretty unique one: his mom's last name was already rare, and his is a common name from a different part of the world such that the two together are almost certainly globally unique.
On one hand, this is kind of nice, to not have the name conflicts I encounter so often. On the other, sometimes I think it's kind of nice that you can never be quite sure whether some fact is about me or about some doppelnamer. It's almost a kind of privacy.
New blog post: Theseus unpacking
Revisiting unpacking executables.
https://neugierig.org/software/blog/2026/04/theseus-unpack.html
(A more structured description of my earlier ramble...)
Pet peeve: Rust projects whose repo is organized as a bunch of directories like
crates/$projectname_foo
crates/$projectname_bar
1) This is not organization! This is ravioli code. Directories and their nesting convey relationships.
2) You don't need to repeat the project name in every crate. In other words, the crate name is not required to match the directory name. If a project has a myproject-async-interp crate, it is easy to figure out that the path named async-interp is its home.