Friday, July 24, 2026

it's time to move to webp (mac instruction)

I've been blown away by the .webp image format - it makes such small file size images with very little visible loss, and even supports transparency and animations.

For a long time, webp was kind of the ugly stepchild of image formats - stuff would work on the web but most OSes treated it as some strange alien thing. That's slowly changing. (And on the DIY server side, older versions of ImageMagick wouldn't really deal with it.) It still doesn't fill quite native on Mac (e.g. support for marking it up in the Preview app) but close enough - it thumbnails fine.)

The filesize thing especially comes up with how a lot AI-powered image toys generate large PNGs. This ChatGPT image (compare to the original - it's really just a redraw of a striking photo done in a cartoony style) is a 2.1 MB png - or a 163 KB! 


If you're on a Mac, you can use Automator to make a right click menu "Quick Action" that can convert one or many files all at once right in Finder. (Automator feels a bit old and clunky, but most online resources point you to Automator)

First step: get the convertor. You can use homebrew to install "webp" (the actual installed commands are cwebp to convert, dwebp to deconvert, webpinfo, and webpmux) in Terminal.

So Automator is a bit janky (and it's annoying to have to dig into "Library" through finder to remove old Quick Actions) but once you start it up (using cmd-space or what not):

  • create a new "Quick Action",
  • filter or scroll down to "Run Shell Script" in the second column
  • drag that over and it becomes the first (and only) step in the flow. 
  • Set the workflow for "Image files", then in the step make sure to Pass input "as arguments", and then enter the following:

export PATH="/opt/homebrew/bin:/usr/local/bin:$PATH"

for f in "$@"; do

  dir=$(dirname "$f")

  base=$(basename "$f")

  name="${base%.*}"

  cwebp -q 85 "$f" -o "$dir/$name.webp"

done

Vavavoom! Welcome to 2010!

Monday, July 20, 2026

The computer at the bottom of a canal

 The computer at the bottom of a canal

Fascinating tale. This early company got so much right in hardware then abandoned, and maybe RISC turned out a too RISKy for the world, if evaluated fairly.


Spoiler, some of it is the Steve Jobs / Alan Kay idea of "People who are really serious about software should make their own hardware."


I think about that a bit - like how much more fun Amigas were for gaming than PCs (and that dark era of EMM and SoundBlasters and all the crude.) Or how the first iPhone had amazing, stutter free scrolling that was baked into hardware - even if the rendering hardware couldn't keep up you got a nice grid until the content had time to be drawn.

Thursday, July 16, 2026

the skeleton is key

At work we had a minor question about the use of skeleton placeholders. If you have a static form being populated, says, so the shape of the data doesn't have much impact on the final result, should you:

A. Keep as much of the form detail as possible, like keeping in textarea captions, and just replacing the inputs with appropriately sized place holders? (this might limit screen "pop" which is an age old goal for web apps.)
B. Go fully abstract, having a single block represent say a textarea with its caption above?
C. Split the difference, replacing the input field with a box but with the caption having its own box?

Looking around to guess at best practices, it seems C is a good balance: here's FB's Messenger. The short rectangle on the top line will be replaced with "Chats", the other two circles on that row are placeholders for some action icons. 

The mix of "real text" and rectangles would be a bit weird, even if one is persistent meta information, but it's nice to suggest at the general shape of what's coming down the pipe.

Tuesday, June 16, 2026

douglas adams, prophet

The Hitchhiker's Guide to the Galaxy is probably the perfect book for this moment in software, because it is basically about trying to survive inside a universe that is absurd, bureaucratic, overconfident, badly documented, and somehow still convinced it is operating according to a plan. Douglas Adams understood that sometimes the systems around you are not secretly intelligent, they are just stupid at a scale too large for the human brain to process.
Douglas Adams was so ahead of the curve, from predicting how annoying gesture based computing could be, to outlining how insanely reckless fast-evolving code would be to how programming is like teaching a very dumb student (and when done right, sharpens the teacher's understanding more than the student's) and how many of us can share the vibe of being "rarely happier than when spending an entire day programming my computer to perform automatically a task that would otherwise take me a good ten seconds to do by hand"

Tuesday, June 9, 2026

a thought on nintendo hard game design

Sometimes it's fun to apply vaguely UX thinking in terms of things like game design...

His design rules for Mega Man 2 were specific and deliberate. Enemies appeared in small waves, three or four at a time, using the same attacks, so players could actually learn the pattern. Terrain and placement adjusted the challenge, not random enemy behavior. And here's the detail that reveals everything. The last enemy in each wave was easier than the ones before it. I'll say that again on purpose. The final enemy in a wave was easier. Why? Kamura explained the psychology this way. He'd notice that people don't replay games, even good ones, because when they think back, their minds go to the hardest parts, and that memory makes replaying feel like work. He didn't want players remembering Mega Man 2 as a slog. He wanted them to remember feeling like they were getting better. And then he said something that is essentially the entire point of this video. I quote, "I wanted the player to feel like he was improving at the game, too."

Although it calls out "Battletoads" as being brutal relative to Mega Man in part because of having 3 continues / no passwords (along with punishing "gotcha"/ MUST memorize design) it underplays the addition of continue password grids as being a HUGE quality of life improvement in Mega Man 2 over 1.

I remember my pride in beating the original "Nintendo Hard" Mega Man, telling my mom about it - an early lesson in standing up and getting through a big challenge.

Also I think about Mega Man in the sense of novelty. Not only was it a master class in terrain and enemy placement as "something new", but of course it was one of the first to give you an array of weapons with different mechanics. Later games (such as Kirby) would expand that so that it let the player control novel mechanics and interactions (often by capturing those of enemies) as the game progressed - now it's one of the biggest tools Nintendo has, from Kirby's inhales, to Mario Oddyssey's Hat Capture, the new animal transformations, etc.

So there probably is a split - most games provide some kind of novelty as they progress. Some games, like RPG, it's gradual and cumulative, and intrinsic to the character or the inventory. Other games, it's closer to a temporary toy (or in the case of GTA, knowing where the good toys are.)

Saturday, May 30, 2026

just f***ing use html

 Funny rant domain: Just f***ing use HTML. (Is it weird that I'm "censoring" cussing?)

(Not to nerdily miss the point, but I think the PHP/JSON-on-Filesystem//HTML5/CSS/Vanilla JS stack  is the logical extension of that when you actually do need to get a little data onto or off of the server. Buildless, evergreen, runs for years, avoids package dependency hell...)

It reminds me of The iPhone is a piece of s***, and so is your face, extolling the virtues of the clever foldy keyboard Nokia E70 over the then new iPhone. Obviously iPhone-ish slabphones won - but it took iPhone a while to catch up to that -- recording video, an app store, even copy and paste weren't there at first...

(I suspect that second rant page - a "cgi" page still surviving like almost two decades now - has the same "technology should just work for years" attitude of the first rant.)