Evan Martin
evmar@inuh.net
Posts
-
View post
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!
-
View post
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.
-
View post
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.
-
View post
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.
-
View post
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?
-
View post
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. https://github.com/nodejs/node/issues/21941
-
View post
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 h...
-
View post
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...
-
View post
New blog post: Theseus, a static Windows emulator An new old approach to emulation. https://neugierig.org/software/blog/2026/04/theseus.html
-
View post
One of the (private) responses I got to my post about Theseus was someone asking if it can handle packed executables. It can't, of course, because they unpack more code at runtime. But they totally nerd sniped me because for a one-time unpack I could just as well run two phases: first use Theseus to run the unpacker, modified to write out an executable, then run Theseus again on that. In fact, there's a cooler variation I thought of, which I implemented!
-
View post
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...)
-
View post
This morning I tracked down an emulator bug that manifested as rendering the first scene of a demo and then skipping directly to the third. This kind of thing is brutal (and kind of fun, sometimes) to track down because it is very hard to pinpoint the point where things have gone wrong.