Aug 14, 2023
"What can we do with what we have ready to hand?" -- Cristóbal Sciutto


"The Parisien corn cart affords a table and a secure storage area. It is mobile. Its metal mesh allows for ventilation, while minimizing weight. Combined with tensioned lumber, the mesh can secure a tin can. The can, with two large perforations, serves as a brazier. Its support and holster combine to form a buffer, avoiding burns. Elements can be positioned in transveral increments of an inch, as well as placed at three distinct vertical positions. Signage can be attached with ease.

"The corn cart is exemplar of post-industrial bricolage. It takes advantage of existing infrastructure (shopping cart, industrial lumber, and tin can production), distorting it to new unimagined uses. In recycling mass-produced industrial dejects, it takes advantage of economies of scales. Under conditions of duress, it is easy to acquire. It is a tactic that sustains economic life."

permalink

* *
Aug 11, 2023
Yesterday was a good day. I built a little app for someone to connect to their R server, plot a dataset based on different dimensions. Pretty trivial, but hopefully easier for them to modify than other similar apps out there.

permalink

* *
Aug 4, 2023
Finding Meaning in Christopher Alexander's "The Nature of Order"

by Stefan Lesser

This is the most insightful talk I've watched in recent memory.

Transcript

permalink

* *
Aug 1, 2023
Pulling out an old tool to read a long thread on Mastodon.

Screenshot of an app showing a tree view of a Mastodon thread.

Not pictured: keyboard shortcuts for structured navigation.

repo

permalink

* *
Jul 16, 2023
Fun puzzle:

$ echo "never worn" |sed 's/ /^M/g'
wornr

What is going on here?

permalink

* *
Jul 15, 2023
Personal digital infrastructure I've been performing some long overdue computer maintenance activities:

  • I've had a server with Linode forever and been very happy. But I recently noticed it would periodically go inaccessible, perhaps after some idleness. Perhaps it had something to do with their acquisition. So I decided to switch providers.
  • Back in 2009 when I created my website I built it in Rails (backed by files rather than a database) Last week I replaced all that with raw html, generated with a tiny Lua script. It's nice to be able to unsubscribe from some mailing lists of vulnerability notifications.
  • I've been backing up my local laptop to my server, but that was causing me to overflow my disk. Cloud servers are a relatively expensive way to get storage. So I decoupled those concerns and now back up my laptop to rsync.net.

All in all, I'm much happier with my server. It's leaner, runs less stuff, and it'll be easier to move next time. With the way we've been seeing services degrade lately, I think it's useful to be thoughtful about how we cobble together our personal digital infrastructure, architect it to be nimble and easy to move around. If you keep options open you'll be less likely to need to use them.

permalink

* *
Jul 14, 2023
After 10+ years on Rails, I've finally gotten around to switching my website to static files.

Hopefully there's no discernable difference from the outside :crossed_fingers:

permalink

* *
Jul 6, 2023
What it's like to program my Freewheeling Apps

(audio/video; 20 minutes)

permalink

* *
Jul 3, 2023
The most common footgun I run into with Lua isn't the 1-indexing. It's the wildcard nature of '-'.

Today's head-scratcher:

> ('00-43'):match('^(%d%d)-(%d%d)')
00	43
> ('00-43'):match('^%d%d-(%d%d)')
nil

I should just always escape it ('%-') as a matter of course.

permalink

* *
Jun 17, 2023
A pattern of merge bugs in Freewheeling Apps

My Freewheeling Apps kinda abuse git, and I've been watching for problems to arise from this friction.

Most software tries to keep branches short-lived. Merging is the point of a branch. My apps are long-lived forks that never merge, only occasionally cherry-pick.

Today I noticed a pattern: a file has been deleted in a fork and reintroduced in a later fork. Changes to it won't make it over that chasm without manual help.

How big is this problem? I wrote a quick and dirty visualizer which highlights chasms as the black lines. The short lines are false positives, so it's not a big problem. Yet.

How I built this:

  • topologically sort my forks (columns) so parents come before descendants, children stay close to parents
  • hash files in each fork so filenames show up in the same row
  • zoom my terminal way out
  • highlight long runs of spaces

Screenshot of a large table with tiny, unreadable text and a few black horizontal lines scattered between them.

permalink

* *
archive
projects
writings
videos
subscribe
Mastodon
RSS (?)
twtxt (?)
Station (?)