thursday, october 25

when i was young, i read a book
(or maybe had it read to me)
where a tornado struck a small town
and in one scene a character was wearing
a windbreaker

that word, windbreaker, got burned into my memory
right then, along with the vivid idea that
it must mean some kind of potent technology,
protective gear which could shield or
reinforce you against the howling wind of
a tornadic plains thunderstorm

i don't know how old i was before i figured out
that it just meant a kind of light and particularly
ineffective jacket, but it still carries the echo
of my disappointment at how much harder it is
than that to find any real armor against the violence
of the world.

Sunday, October 7

filter-exec-stdin

I recently added a new script to my collection of personal utilities, filter-exec-stdin.

It’s a little hard to explain this one without reference to its close relatives, filter-exec and filter-exec-raw. These are, as the name strongly implies, filters: They take standard input, transform it, and print the result to standard output.

This makes them easy to use in a text editor like vim, where you can pass the contents of a buffer through an external program like so:

:%!some-script

I wrote filter-exec, the first of these, as a quick and dirty way to include shell commands and their output when writing documentation (like userland or DigitalOcean tutorials) in Markdown. Markdown parsers tend to ignore HTML comments, so I used comments to mark the start and end of a block, and $ to mimic a command prompt, followed by the command string:

<!-- exec -->

    $ ack --thppppt

<!-- end -->

And the filter adds the output:

<!-- exec -->

    $ ack --thppppt
    _   /|
    \'o.O'
    =(___)=
       U    ack --thppppt!

<!-- end -->

The output is indented 4 spaces, which causes Markdown parsers to treat it as preformatted text. It can be run repeatedly, and will retain the command but update the output.

Later on I was cobbling together a system for generating simple invoices, and wanted something similar without the command included in the rendered output or the indentation, so I added filter-exec-raw:

<!-- exec-raw ack --thppppt -->
_   /|
\'o.O'
=(___)=
   U    ack --thppppt!
<!-- end -->

Here the command is inside the HTML comment, and the raw output is printed inside the block, instead of an indented version.

exec-stdin is more meta. It goes something like this:

<!-- exec-stdin sort | uniq -->
1
2
3
4
<!-- end -->

…that is, it runs the command after exec-stdin, passes the contents of the block off to it, and replaces the block with the command’s output. I’m not sure how useful this is. It assumes that a command will have stable output for given input - that is, something like sort, where once the input is sorted, it won’t change again. The idea is that I might have a block of text that should be sorted, checked for duplicates, formatted, etc., and I can just invoke utilities like sort, uniq, fmt, and so forth to handle those problems.

It’s possible that a more-generally-useful filter would retain the original block while also outputting the results of the command.

Tuesday, September 25

It’s early fall, judging by the weather at this altitude. Hoodie weather, thank Christ. It was 90°F a few days ago, today it was something closer to 60° and I wore socks in the house for most of the workday. It will be hot again, I’m sure. It might be hot well into late October. It might be 70° and thunderstorms in Northeast Nebraska on Christmas Day like a few years back, come to that. I don’t expect a real winter, but I pledge not to complain if we get one.

It’s also early fall by the calendar, and judging by the rapidly diminishing daylight. That part, at least, seems likely to be unaffected by the ongoing climate disaster. I assume human civilization won’t last long enough to fuck up the axial tilt of the planet, although you hate to rule anything out at this stage of history.

wednesday, august 15

it rained hard and fast late tuesday afternoon
long after midnight now, water drips off the needles of the trees
and rises off the streets in tracers of fog to
mingle with the haze of the fires burning further west
i can hear the old cat, muttering in his sleep on
a chair in the living room
a motorcycle on the otherwise-deserted highway
and the frogs in the trees across the street

linkdump

Elaine Pagels on Religion, Mourning, Scholarship, and Faith — «There’s something about engaging the spiritual dimension in life that, for me, is essential. I don’t think it is for everybody. I mean, I have a close friend who does this in her work in theater. My husband was dealing with his way of understanding through physics and the natural world. But for me, there’s something very powerful about that kind of music. It’s not the only kind. I like the Grateful Dead.»

The A320 and the Hudson

4x4_button_pad.pdf

jarun/nnn: The fastest terminal file manager ever written.

The Empty Core of the Trump Mystique | The New Republic — «A nihilist dreams of going out in a blaze of glory, taking as many with him as he can, because he hates his life and despises life in general. A martyr sacrifices her life, which by definition she cannot do unless that life is precious to her. You can only sacrifice what you hold dear. And you do so because something else is dearer still.»

RSS - The New York Times

docs/BigEmo at master · corkami/docs

[soundcloud] Every single live mix / DJ set recorded on the playa this year that I can find so far.

Geoff's Projects - The Maximite Story — «This is the story of developing the Maximite, a small computer described elsewhere on this site. It is not a particularly riveting story (like "The Soul of a New Machine") but it does illustrate the ups and downs of creating a complex device. It started with a simple idea and the thought "how hard could it be?" and ended up with a three month marathon and a remarkably complex and sophisticated device.»

A fun optimization trick from rsync

Richard Stallman: Talking to the Mailman. New Left Review 113, September-October 2018. — «People said that having a free operating system was utopian and impossible. They argued that there was no use even trying, because it was so difficult. But I think that there’s a fundamental error in that question, which is that it assumes that giving up would be okay. I don’t use non-free software. I don’t use the facilities that require users to run non-free software. So, the free software we have is already useful—and I’m sure we can achieve a lot more if we try than if we give up. I don’t say that free software is more important than defeating plutocracy, or more important than curbing global heating; and I wouldn’t try to argue that people should work on one rather than another. But we’ve got to have people working on this one—and people in the software field can’t avoid the issue of free versus proprietary software, freedom-respecting versus freedom-trampling software. We have a responsibility, if we’re doing things in the software field, to do it in a way that is ethical. I don’t know whether we will ever succeed in liberating everyone, but it’s clearly the right direction in which to push.»

The Pittsburgh Synagogue Shooting and the Return of Anti-Semitism to American Life | The New Yorker

CircuitPython Creates New AT Opportunities | ATMakers

What Percent Are You? - WSJ.com

The Wild Reeds: NPR Music Tiny Desk Concert - YouTube

Khruangbin @ Villain | Pitchfork Live - YouTube

Could A Ban On Spanking And Other Corporal Punishments For Kids Affect Rates Of Teen Violence? : Goats and Soda : NPR

ShortcutBox/shortcutbox at master · dhalbert/ShortcutBox

Debates about poppies are nothing new, but the tone has changed in Brexit Britain | openDemocracy

How did the first world war actually end? – Paul Mason – Channel 4 News

Iggy Pop and the Stooges rider