Blog

Here's some stuff I wrote over the years. Posts about software, travel, and whatever else.
Neptyne: Making Spreadsheets Programmable

Neptyne: Making Spreadsheets Programmable

It has been quiet around here — famous last words on any blog — but after a thousand-odd pull requests in stealth mode, here is what I have actually been building. Imagine the formula bar in Excel, except it speaks real Python. Loop through A1:C10 like a normal iterable, scrape Wikipedia for every country starting with S, drop emoji flags on them, all in fewer lines than this paragraph.

Automating Image Generation with Stable Diffusion

Automating Image Generation with Stable Diffusion

Why install Stable Diffusion locally when DreamStudio is right there in your browser? One reason: batch jobs. I asked GPT-3 to pick the top tourist highlight for each of the fifty US states, dropped that into a CSV, and turned a bash loop loose on my graphics card overnight. The result is an AI travel guide to America. The Grand Canyon comes out fine. Some of the smaller states get weird.

Use DALL-E to create infinite zoom movies

Use DALL-E to create infinite zoom movies

DALL-E can fill in transparent pixels around an image, which raises an irresistible question: what if you just keep zooming out forever? Start with a Van Gogh, erase the edges, ask DALL-E what was around it, repeat. Fourteen frames later you may not be looking at a painting anymore — you may be looking at cats looking at Starry Night. Here is the tooling, and a warning that the loop sometimes goes pleasantly off the rails.

Visualizing Poetry using DALL-E

Visualizing Poetry using DALL-E

A weekend experiment: feed a poem to DALL-E line by line, but pair each poet with a painter from roughly the right era so the slideshow holds together. Robert Frost gets Edward Hopper. Langston Hughes gets Jacob Lawrence. Shakespeare gets Rubens, and is a little full of himself. DALL-E refused to render one word in the sonnet, which led to an unexpectedly elegant workaround involving a skeleton.

Tool building organizations

Tool building organizations

Hashtags, retweets, Wikipedia infoboxes — nobody asked a product manager to invent them. They emerged from communities tinkering with plain text until conventions hardened into features. So why did Tim Berners-Lee's tidy Semantic Web flop while Wikipedia accidentally built one? And what should organizations actually steal from this messy, bottom-up magic?

The Clever Bit and the Gold Rush

The Clever Bit and the Gold Rush

The California 49ers didn't win because they were brilliant pan-handlers — they won because they got there first and planted a flag. A follow-up to last week's worry that tech is running low on clever bits: maybe that's fine. When every company is a tech company, the game stops being about who is smartest and starts being about who shows up with a shovel.

What's the clever bit?

What's the clever bit?

Pitch Douwe your startup and he will ask one question first: what is the clever bit? Not the problem, not the market size — the unique insight nobody else has had yet. Anyone can spot a problem. Being better at solving it than everyone else is the actual game. Also: four years at Sidewalk Labs ended on December 31st. Something new is brewing.

Toolmakers and Tool Users

Toolmakers and Tool Users

A chimpanzee in need of a tool rips a branch off a tree and sharpens it with its teeth. It does not drive to Dick's Sporting Goods. That, more or less, is the superpower the Industrial Revolution took away from us. The data economy might quietly hand it back — assuming Steve Jobs and his locked-down iPhone haven't won permanently, which Douwe argues they haven't.

Deep Travel: AI as a Travel Writer

Deep Travel: AI as a Travel Writer

Two failed travel startups later, GPT-3 shows up. Naturally Douwe asks: can it just write the guidebook? Feed it Wikivoyage and you get dry facts. Feed it Lonely Planet and the prose starts flirting with you. Feed it a bragging backpacker and things get weirdly personal. It also confidently invents a hotel that doesn't exist and sends skiers to Lanzarote. Travel writing has never been so creative.

Visualizing Sea level rise

Visualizing Sea level rise

Fifteen years ago a GIF of a flooded Europe was enough to qualify you as a data wizard. MapBox finally shipped global elevation, so the obvious follow-up: nine 8K maps of the whole planet drowning, colored by who actually lives in the path of the water. How many people already live below sea level — and where does the next ten meters of ocean go first?

People Watching on the Wikipedia

People Watching on the Wikipedia

Do rock stars really die young? Pull a million people out of Wikipedia, group them by occupation, see what shakes out. The first table says rappers die earliest and billionaires latest — but that is mostly survivorship bias dressed up as insight. Filter to anyone born before 1924 and the real patterns emerge: who outlives whom by four years, who squeezes an extra year on the other party, and who really should not have become an aviator.

The scariest cat you'll see this Halloween

The scariest cat you'll see this Halloween

The Cat Sith roams Samhain demanding saucers of milk, so a Halloween cat felt in order. Style transfer normally borrows Van Gogh and lends him Tubingen — but ask a neural net to hallucinate pure catness from noise and zoom in forever, and things get less cute. There is no smooth way to render a cat. Eyes, whiskers and fur keep tessellating into each other in ways the visual cortex strongly objects to.

Conway: A Cellular Automaton Tribute

Conway: A Cellular Automaton Tribute

John Conway died of Covid in April 2020, and reading about the Game of Life in a Dutch kids magazine called KIJK was half the reason Douwe ended up in computer science. So: a tribute. One thing always nagged though — those gliders and guns merrily violate conservation of mass. What if cells moved instead of dying? Add colors with random attraction rules, then try circular attraction where red chases blue chases green chases red.

Movie Recommendations

Movie Recommendations

Another movie recommender? Sort of. This one never sees a single star rating. Instead it learns from the outgoing links of each film's Wikipedia article, on the theory that similar movies cite similar things. Whether that theory holds up, and what happens when you project the result onto a 2D plane of movie posters, is the fun part.

Amazon Dash and Philips Hue

Amazon Dash and Philips Hue

When Amazon Dash launched, I was sure it was an April Fool. A wifi button for ordering one specific product? But at $4.99 a pop, it turns out to be a perfectly good generic button for things Amazon never intended. Mine ended up tangled with Philips Hue and a small detective game involving the mac addresses of household phones.

Building a Reverse Image Search Engine using a Pretrained Image Classifier

Building a Reverse Image Search Engine using a Pretrained Image Classifier

Ten years ago, image search engines did not really search images at all -- they read the text around them and hoped for the best. The modern approach usually involves perceptual hashing, but there is a lazier trick borrowed from Word2Vec that works on pictures, too. The hardest part, it turns out, was not the algorithm.

Learning to Draw: Generating Icons and Hieroglyphs

Learning to Draw: Generating Icons and Hieroglyphs

They say if brute force does not work, you are just not using enough of it. For an 8x8 grid, however, even my laptop would take three times the age of the universe. So I asked a recurrent network to draw icons instead, and someone took one look at the results and asked an unexpected question that sent the whole project sideways into ancient Egypt.

Deep Ink: Machine Learning fantasies in black and white

Deep Ink: Machine Learning fantasies in black and white

Deep Dream finds eyeballs in clouds, which is fun but also extremely literal. What happens if you tie the network's hands much harder -- one blob of black ink on white, no shades of gray, no continuous nudges, only pixels flipping one way or the other? The network has to pick up a pen, and the animated gif of what it does next is worth a look.

Building Spotify's Song Radio in 100 lines of Python

Building Spotify's Song Radio in 100 lines of Python

Pandora paid actual humans to rate songs along 450 musical dimensions. That is expensive, even when the humans are underpaid musicians. If you treat song IDs as words and playlists as sentences, what does Word2Vec make of it? The answer turned out to fit in under a hundred lines of Python -- assuming you do not count the part where you have to talk Spotify into giving up its playlists.

Four reasons that 2016 was a great year

Four reasons that 2016 was a great year

Facebook says 2016 was the worst year ever. Facebook is also an echo chamber, which is the thing Facebook itself says we should be worried about. Fighting echo with facts, here are four reasons it may have been quietly one of the best years on record -- including one statistic about Indian roads that should probably reorder a lot of charitable priorities.

All that glitters has a high refractive index.