Wednesday, August 5, 2026

on doing the math

I was thinking about Simon Newcomb, the eminent astronomer/mathematician who mathematically "proved" that human mechanical flight was forever impractical a few months before the Wright brothers went ahead and did it. 

(Look into what he might have missed, I think he was leaning on the square-cube law: as a machine grows, its volume and weight increase cubically, while its wing area increases only quadratically, by the square.)

I had a similar incident in real life, where my friend EB measured an overstuffed chair and pronounced it impossible to get through a small door and into a back room, and then a few days later my friend JZ and I just did it. (Here, EB really didn't account for the "pivot" of it all - must have missed that episode of Friends.)

That's one of the dangers of reductionism; a model captures what it can, and ignores the rest.

I see a parallel in software testing... unit tests are fast, focused, cheap to run and now incredibly tempting to just throw an AI at to produce. But the success or failure of a working system is an emergent property of all those units working together in a context provided by all the other units... and browsers, networks, external systems, and of course users. Integration and end to end testing are expensive but more important than ever.

So test the units, but don't forget to test the pivot.

Tuesday, July 28, 2026

rockin' to the dmv

This from pleated-jeans - 



 Most of the comments were aghast, ala
"Kind of UI they use to teach gorillas sign language" or "This is just 'baby's first computer.' We live in idiocracy" (along with some truly nasty comments about DMV employees) but my favorite was i2cjak: (censoring from the site)
"oh f*** it doesn’t have 3/4 of the screen real estate empty and there’s no f***ing burger menu to click through oh no oh f*** the icons are large and easy to see I need to k*** myself fast this is terrible ooooh my eyes"

Like it's a little weird if those are oversized link for more or less normal versions of the app, but I was also wondering if it was geared for touchscreen use.

Friday, July 24, 2026

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

UPDATE: it turns out I needed to use ImageMagick to properly handle rotated images, see below

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

UPDATE: cwebp wasn't paying attention to EXIF info, it was just shoving pixels. So install image magick. Then select /bin/bash and run the following, adjusting the MAGICK location as needed:

MAGICK=/usr/local/bin/magick

for f in "$@"; do

  out="${f%.*}.webp"

  "$MAGICK" "$f" -auto-orient -strip -quality 80 "$out"

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"