December 2015

Ok maybe I will rethink the slidy-tile interface to this page.

Also I put the lights back up.

A Sunrise


A Crawly


three things i kind of love

  1. I actually think the Marvel Cinematic Universe, for all its considerable flaws and shallow CGI flash, has been really great. With few exceptions, even the trivial movies are pleasant enough diversions featuring people I like, while the better ones have real emotional heft. Plus I can watch and talk about them with my 50-something parents, who have them all on DVD and are completely up on who last kicked Loki's ass etc.

    In the end, will its narrative metaproject succeed? Maybe it's not likely. A longform story project on this scale with no clear endgame is likely enough to collapse under its own considerable weight. But who knows. So far they're pulling it off. They've managed to make me care about a character literally named Captain America.

    (Parenthetical to Marvel: I think you have enough dumptrucks full of money by now to give Black Widow a movie already. Hell, why not a series of movies? Remember, I'm pulling for ya. We're all in this together.)

  2. Two-slice toasters from the 1950s-70s having at most two controls.

  3. Dishes consisting of a gravy on rice.

[ a dry, cold wind whistles through the streets of ]

[ a tumbleweed skitters into the big pile under the mercantile's front window ]

[ a single flake falls from the slate-gray sky and drifts into the black water pooled in the old stock tank by the windmill ]

[ creaking noises ]

some textfiles

Reverse Chronological Dated Entries Are Totally Fine But I Already Do That Elsewhere

And, thinking that, I decided to make my home on a stack of cards about... Well, about whatever. Some of them will have dates. Some of them will change arbitrarily.

Thursday, January 22, 2015


Thursday, January 15, 2015 - wee hours

I have decided that my squiggle will now be more like a HyperCard stack.

Please use ← → arrow keys to navigate.

Comparisons to PowerPoint will be vigorously disdained.

Wednesday, January 14, 2015

Some things I have been up to:

Monday, January 12, 2015

Sunday, January 11, 2015

Some radio streams, ordered by time in my life when they were important:

WNAX is one of the great old mid-American AM stations. It's been operating since 1922. I remember it for the Five State Trader, the Neighbor Lady, and being the kind of station that carried Paul Harvey. Also a lot of weather and farm market stuff. These days when I hear it (and I'm listening to the stream right now), it's mostly right-wing talk radio in the modern style, though it still sounds like itself during the ad breaks.

KRNU is the UNL college station. I first heard a lot of indie rock and deliberate weirdness there.

KZUM is the community station in Lincoln. It's deeply weird in the way that all community stations seem to be, and idiosyncratic in the way of volunteer-run broadcast media in smallish urban-refuge-from-the-provinces markets. I'm pretty sure it was the first place I heard Democracy Now, but that doesn't really convey the full character of the thing. Like right now it's winding up two hours of Native American drum-and-group-vocals stuff, and I have vivid memories of driving to work and listening to this (daily? weekly? it happened over and over again) U2-only hour.

KGNU is Boulder's equivalent to KZUM. It's both a more professional exercise and perhaps a more predictable one, though it shares a lot of the implicit politics of a KZUM. Both stations, it pretty well goes without saying, get deeply weird late at night.

Radio 1190 is the local take on the low-power college indie radio thing. In keeping with type, it's often aggressively unlistenable in precisely the way that its core demographic is always seeking.

Thursday, January 8, 2015

Wikipedia sentence fragment of the day:

groundhogs are the most solitary of the marmots

Tuesday, January 6, 2015

So I skim through ~schussat's Endless Legend journal, which is a writeup of a game with a bunch of screenshots. It looks neat, but I know I'm never going to play it.

What I keep wanting, really, is something that is like a game but is not exactly a game so much as it's a little world in a box that I can ramble around in like an itinerant traveler with no particular agenda, or watch over like an indifferent minor deity. The thing I want is for interesting things to happen without me being obligated to do anything. I don't want to go on quests. I don't want to manage an empire. I don't want to work my way through any decision trees or max any stats or struggle to make any NPCs happy or deal with any marauding hordes. (I don't mind if there occasionally are marauding hordes. I don't even mind having the option to thwart them or whatever. I just don't want to be compelled to thwart them by some ludic apparatus any more mechanical than my own reaction to whatever they're doing in the simulation space.)

Back when I still played a lot of games, I used to spend absurd amounts of time flying around with all the cheatcodes on just looking at stuff and trying to provoke the monsters into doing anything that wasn't fighting me. One of my favorite parts of Doom-engine games was the thing where some monster would accidentally shoot some other monster and they'd forget all about whatever hackneyed narrative they were part of and just start slaughtering one another in a fit of pique. I loved the little villages and forests and rainclouds in something like Black & White, but I passionately hated that I was supposed to complete quests and achieve goals.

I don't want all my interactions with the denizens of whatever world-in-a-box reduced to the nexus of simulated violence or simulated feed-the-livestock quasi-benevolence.

(Is there a mode in Dwarf Fortress where everything just happens and I don't have to decide anything? Because that sounds like it would be neat to watch.)

Monday, January 5, 2015

Cats think about murder.

I founded a newspaper.

~imt made, "the first IPv6 only Public Access UNIX System". Get in while you still can, folks. It's gonna be a landrush.

Saturday, January 3, 2015

It's snowing.

❄ ❅ ❆

I have talked some real shit about Ubuntu in the not-so-distant past, and if I'm honest I have to admit it probably won't have been the last time. Every once in a while it wouldn't hurt for me to acknowledge some of the good work happening there.

Specifically, I really like the Mono variant of this font family. Looks great in the terminal and gvim both.

Monday, December 29

Leaving the decorations up too long is a family tradition.

Recent notes:

Tuesday, December 16, early a.m.

Monday, December 15

Text editors I have known and loved:

Games I really liked:

1 Ok to be fair I never actually loved Notepad.

2 I've never really warmed to subsequent entries in this (enormously successful) series. They all struck me as the wrong kind of cartoony. I think this is a lesson in how the constraints on an aesthetic can force it into channels more broadly appealing than the same artists will later find with bigger budgets and greater technological capacity. Either that or a lesson on how weirdos like me often prefer low-res hackery. Either way, there is probably an analogy to country music and George Lucas somewhere in here.

Sunday, December 14

Here's an interesting little thing: Tilde Description Protocol.

I have the following going in relation to this:

Tuesday, December 9

A few sections in workings:

In more interesting news, a bunch of people have asked for accounts lately. That's pretty cool. I do wish I knew how to encourage more people who aren't demographically within a couple of degrees of me to sign up.

Saturday, December 6

I just started a new project that I'm going to host on workings is an attempt at an ongoing technical notebook. I plan for it to get huge, and expect it to be really boring, if you're not me. Hopefully it will be useful for remembering stuff I do, and a place for the rough notes on things I'm going to turn into finished writing later.

This idea owes something to an experience I had in jr. high and highschool of being required to keep a daily logbook for science classes. (Ed Brogie, if you ever google yourself, here's a little ego bump for you, which I will temper by observing that the Bloom's taxonomy trip you were on was really weird and probably super counterproductive - but hey, at least you tried to get people to write every day.)

I could put this kind of effort into contributing on Stack Exchange or something, but doing userland showed me that I really like the idea of a book as a container for effort, and anyway I can't stand all that gamified bullshit with roaming packs of vicious procedure jockeys constantly assailing useful questions and answers as incorrectly framed, categorized, or imagined. This kind of thing is also why I no longer invest time in the bureaucratic hell that is the machinery of Wikipedia. Life is just too short and time too precious.

Tuesday, December 2

There's a list of updated pages on the home page, generated from a script. For a while, I was updating this by deleting it and running a vim command to pull it back in:

:r !perl

I wanted to make this automatic. In the old days, I would have turned on Server Side Includes in Apache and written something kind of like:

<!--#exec cmd="perl /var/www/" -->

Unfortunately, is running nginx, and while nginx is pretty groovy these days, its SSI module only does includes, not execs. What I settled on instead is this include directive:

<!--# include file="listusers.html" -->

Coupled with typing su www-data, followed by crontab -e and adding this:

# m h  dom mon dow   command
0,5,15,25,45 * * * *    perl /var/www/ > /var/www/listusers.html

Which should refresh the list on minutes 0, 5, 15, 25, and 45 of every hour. (The intervals are arbitrary. I just kind of felt like those were the right minutes.)

There is pretty good documentation on enabling the nginx ssi module and writing directives for it. I just had to do this in /etc/nginx/sites-enabled/default:

      location /index.html {
              ssi on;

Monday, December 1

I'm out on the plains for a few days.

It's a strange season in a strange century. The news cycle is still working the kind of groove that feels like it would fit pretty well in the opening infodump of a film about the collapse of civilization. (You can practically hear Godspeed swelling over the measured tones of NPR personalities and the stridencies of ChristoRepubliFascistCatholiFamilyTalk radio alike, complete with little bursts of punctuating static.)

And then on the other hand, things are not so abnormal as all that. My cousins are having babies. My sisters are getting married. The people who were my age when I first knew them are twice my age now.

Wednesday, November 27, 12:27 p.m.

It turns out there's now an IHOP attached to the Flying J Limon, CO. I think this is a relatively new establishment, but truck stops have a way of aging in quickly, so it's hard to tell.

I'm having the quick two-egg breakfast, eggs over medium, bacon, wheat toast. The eggs are pretty much actually over medium, which is a thing you can't always rely on.

Tuesday, November 25, early a.m.

Things I have starred on GitHub.

A thing about lists like this: They're often full of touchstones for personal memory. Here's me getting worried about e-mail. Here's me keeping an eye on the big boss. Here's when Erik Winn died. Here's that detour into weird text editors. Here's that taco thing, when they closed Google Reader, that day with the model train...

Monday, November 24

On not spamming.

Saturday, November 22

So as we were drinking beers yesterday, ~stilldavid pointed out that you should be able to mail everyone on the server.

I figured this should be pretty easy, but it took more googling and grepping and general head-scratching than I really would have liked to remember that /etc/aliases is a file which exists, and then to determine that the version of exim installed here supports a line like this one:

citizens: acg,ahava,ben,berkay,brennen,bri_huang,burnedboard,casey,danlyke,delio,drun,erik,fazol,frencil,hord,ianremsen,jbd,jenleelind,jimblom,joe,kache2k,kirstenrk,leducmills,mike,mshorter,nallen,nick,nightliz,pearcebot,randy,robacarp,sgmustadio,sibicle,skk,stilldavid,thcipriani,todd,tonicorinne,trevor,typexawesome,zinefer

...which means that if you're logged into, you can write to in your mailer of choice and we should all see your message.

Send some e-mail?

Friday, November 21

Pretty good answer.

Wednesday, November 19

Hey ~robacarp, long-time listener, first-time caller here. I just have a couple of questions for you and then I'll take my response off the air, thanks:

  1. Where the heck do you get lanolin? Is this just a "now we have the internet and you can mail order literally anything" phenomenon, or is there a kind of store you go to and they have lanolin in a jar on the shelf like some kind of normal thing that you would normally buy in a store?
  2. Second, and really Rob this is more of a comment, but second, isn't there an "i" in "manifesto"?

Monday, November 17

Here are some drawings.

Saturday, November 15, evening

In which I install a MUSH engine:


  Help available on the following Topics:

  COSTS                    CREDITS                  DROP-TO
  ENACTOR                  EXITS                    FAILURE
  FLAG LIST                FLAGS                    FUNCTION LIST
  FUNCTIONS                GENDER                   GOALS
  HERE                     HOMES                    LINKING
  LISTENING                LISTS                    LOOPING
  ME                       MONEY                    MOVING
  PIPING                   POWERS LIST              PUEBLO
  PUPPETS                  REGEXPS                  ROBBERY
  STACK                    SUBSTITUTIONS            SUCCESS
  WIZARDS                  ZONES

help wizards

  Wizards are the people that help run the game and make sure that everything
  is working properly.  They have special powers to tweak reality in ways
  mortals can only dream of.  Be nice to them, they are going out of their
  way to help keep the game running smoothly. And remember, if you have any
  problems or just want to talk to someone, they will be there for you as



Saturday, November 15, afternoon

If you have JavaScript turned on, this the background of this page should be a silly p5.js doodle.

For folks with pages, there are a few resources at if you'd like to include jQuery, p5.js, or syntax highlighting on your pages without cluttering your ~/public_html or relying on somebody's CDN.

Wednesday, November 12, 9:38

Here's output for, just 'cause.

Really, the way this should work is that listusers should be a utility which outputs tab-separated values, and there should be another utility that's good at making TSV into HTML tables.

Wednesday, November 12, 9:00ish

The home page now has a slightly better summary of users' home pages. I also feel better that it now contains a table (used for tabular data, though - I should really work one in somewhere for layout).

I wrote a little Perl script to generate that list. Here it is in full:


use strict;
use warnings;
use 5.10.0;

# we'll use this to filter out people who haven't logged in.
# pretty silly!
my %whitelist;
my (@lastlog) = split /\n/, `lastlog | grep -v Never | awk '{ print \$1; }'`;
foreach my $user (@lastlog) {
  $whitelist{$user} = 1;

opendir(my $dh, '/home/')
  or die "could not open /home/: $!";

my %dirs;
my %titles;
while (my $dir = readdir $dh) {
  next if $dir =~ /^[.]/;
  next unless $whitelist{$dir};

  my $index_html_path = "/home/$dir/public_html/index.html";

  if (-e $index_html_path) {
    $dirs{$dir} = (stat $index_html_path)[9]; # mtime
    $titles{$dir} = get_title_from_file($index_html_path);
close $dh;

sub sort_by_time {
   $dirs{$b} <=> $dirs{$a};

my $list = "<table>\n";
foreach my $key (sort sort_by_time (keys(%dirs))) {
   $list .= '  <tr>'
          . '<td><a href="/~' . $key . '/">~' . $key . '</a></td>'
          . '<td>' . $titles{$key} . '</td>'
          . '<td class=tiny>' . $dirs{$key} . '</td>'
          . "</tr>\n";

$list .= "</table>";

say $list;

sub get_title_from_file {
  my ($filespec) = @_;
  my $html = slurp($filespec);

  if ($html =~ m{<title>(.*?)</title>}is) {
    return $1;
  return '';

sub slurp {
  my ($file) = @_;
  my $everything;

  open my $fh, '<', $file
    or die "Couldn't open $file: $!\n";

  # line separator:
  local $/ = undef;
  $everything = <$fh>;

  close $fh
    or die "Couldn't close $file: $!";

  return $everything;

This is by no stretch of the imagination a good script. Actually, it's terrible. As an exercise, maybe I'll write and explain a version that's less dumb.

Monday, November 10, 1:58am

I like ~schussat's slow-blog from Saturday.

Monday, November 10, 12:55am

~danlyke has some thoughts about design. These are harsh thoughts, but they are worth considering.

~frencil has some thoughts about nuclides and JavaScript. I look forward to seeing where this project goes. I should mess with D3 again. It broke my brain so hard the first time around, probably because I cannot math very well.

~stilldavid has some thoughts about science, and measurement, and value.

~acg has a list of all the things he's voted up on Hacker News, which is cool because I mostly can't bring myself to follow HN on a day-to-day basis and Alan's interest in a thing is often a pretty good filter for whether it will be worth my time.

If you're logged into, you can run a few classic text games now. I installed adventure a while ago, using the bsd-games package in Debian. The other day I added frotz, an interpreter which will let you play lots of the things at the Interactive Fiction Archive. I downloaded a version of Zork there and made a zork command that runs this in Frotz. What I will do eventually is install a whole crapload of adventure games and make a big menu for running them.

I'd also like to install some development tools for this kind of thing. I used to dabble in TADS and such, and it was fun even though I never wrote a game that anyone would actually play. I should probably take another look, because I'll bet the programming side of this stuff would be a lot easier for me these days, even if the structuring and writing of a serious game would still be pretty daunting.

I'm on the tilde operators mailing list now. I get the sense that some interesting things are about to happen, and I should probably take some action with regard to those things. It's been difficult to do anything requiring thought or planning or a working memory because I have been sick as a dog for a bit over a week now, but I think I'm trending towards functional. I'm down to "coughing sometimes" and "feel massively stoned even though theoretically sober" from "coughing relentlessly" and "the kind of headache you think of in terms of how bad the tunnel vision is at any given moment." This is promising.

Tuesday, November 4, 4:48pm

Oh also, I wrote a little bit about quitting SparkFun and talking in front of people.

I'm going to bet this isn't the last I'll write about either of these things.

The best tweet I saw today was this one, by Wm. Gibson, in tribute to everybody's favorite Colorado airport demon horse.

Tuesday, November 4

New on ~c:

Friday, October 31

Hi SparkFun.

Here are some slides from the talk I gave today on the command line.

Tuesday, October 28

Last night's project: git-feed: a simple tool for making Atom feeds out of git commit logs.

Monday, October 27

I'm doing a "lunch & learn" at work on Friday that will attempt to be a gentle introduction to the command line.

I have no idea how to go about this, really. Some smart people on suggested that I go with the "tell them what you're going to tell them, tell them, and tell them what you told them" + "tell them about three important things" approaches. These seem like good ideas. I guess I will start by trying to decide what the three things should be.

I used to be so very afraid of public speaking of any kind. Like, physically shaking, cold sweats, creeping numbness, inability to talk terrified. I don't really think I am any more, but I'm not sure how that changed.

It's funny how what you're afraid of changes. I used to be afraid to say things in front of people. Now I'm afraid that everyone I've ever loved is going to die and everything I've ever done will be forgotten and it will be as if I never even lived. The defining difference between these two fears is probably that the former wasn't even really of anything at all and the latter is an objective fact.

Anyhow, if you have any ideas about what the best thing to convey to people right after you give them a shell account is, I would love to hear them.

Saturday, October 25

Reading about nerd things:

Friday, October 24, while still far from heavily trafficked or populated, stirs a little, and a few things emerge:

Monday, October 20

So for now, I'm going to mirror this on both and is coming together pretty ok. I'm maybe going to rethink the Debian stable approach, because everything is super old. On the other hand, I'm not sure if I want to run testing. I'm still pretty sure I don't want to run Ubuntu but I guess we'll see.

Also, I just put up a new version of userland that feels more complete to me. I think I'm going to call this version 1.0.0 (except maybe for adding more detail about how to run your own Linux) and wait until after I've tried to teach out of it to make any more changes.

p1k3 is live again! Well, minus the wiki part, but I'll get that back up soonish.

This is good: Hints for writing Unix tools.

Sunday, October 19

Now open for business, in a completely unprepared fashion:

Thursday, October 16

All of my personal internet stuff is still broken. I spent an hour earlier this evening trying to configure Apache on the machine where I'm stitching back together, and nothing worked. I had almost forgotten the unbelievable frustration of the nothing works → bash on config files → google errors → read docs → bash on config files → nothing works loop here. Apache at its worst is like a special kind of stateful psychological torture device for web nerds.

My working life is also a shambles. For most of the workday I kept task-switching between a few dozen utterly predictable nerd failure modes: Stare at the bug tracker. Stare at the e-mail. Stare at the code just long enough to begin to understand it, then get distracted by something blowing up in the logs. Stare at the bug tracker. Go for coffee. Open some browser tabs, forget what I was trying to research. Close the wrong browser tabs, spend too much time trying to retrieve them. Review other people's code ineffectively and with misdirected hostility. Sit on the couch drinking beer and listening to the Velvet Underground. Stare at the bug tracker.

My house is the kind of messy that usually indicates severe illness or nontrivial substance abuse issues. My clothes are all dirty. My car sounds like it's going to disintegrate. I'm pretty sure I need to advance my landlord the rent money for next month or the power's going to get turned off. I'm eating undercooked pizza at the unbelievably shitty bar across the street from my driveway (where the same angry bartender acts skeptical of my age and IDs me with focused hostility two or three times a week, but also usually proves to be nice in the long run) instead of just making a salad or something at home.

Anyway, I just registered and pointed it at a DigitalOcean VM. I think AWS is maybe the standard thing, but I feel this weird sense that there is a benefit to spreading the thing out across providers. I'm going to run Debian on it because Debian is one of the longstanding loves of my technical life, and because I would rather teach unixy stuff using it, if I've got the option.

I in no way have the mental bandwidth or the temporal capacity to sysop anything that actual human beings are using, on the off chance that anyone uses the system I spin up, but I'm going to do it anyway, because despite all the trappings of nostalgia, this feels to me somehow like a thing that gestures at a possible future that I would like to be working on, and I would really like to continue feeling that way for a minute.

All of these decisions may bite me. I'm going to look at the existing configuration stuff people are doing tomorrow and see how practical it is for reuse, given my self-imposed constraints. If anyone would like to get on my list for an account, tweet me or find me on freenode #tildeclub as brennen or whatever.

This is fun.

Wednesday, October 15, 12:11 a.m.

On the rest of the internet, things are kind of loathsome right now.

In the tiny part of it that I inhabit, I'm watching a bunch of people rediscover things that maybe a lot of us didn't know were sincerely missed by more than just ourselves.

I've written a handful of posts to local newsgroups tonight. This doesn't feel like an exercise in nostalgia so much as it does an exercise in reevaluation.

It seems to me like this is an important distinction. You can indulge nostalgia for a little while, but you can't really trust it. Sooner or later it will deceive you really painfully.

On the other hand, sometimes older patterns illuminate. Sometimes the nagging, pervasive sense that you have been sold a bill of goods can be thrown into a useful kind of relief in the light of a time - or just a mode - that didn't feel that way at all.

Monday, October 13

As happens every year or two, DreamHost just updated something and broke, which is where I put most of my writing.

I think I'm going to take this as a sign that maybe it's time to move that site somewhere less likely to arbitrarily quit working. I just fired up a vm on DigitalOcean, which was a fairly painless experience. After DNS finishes propagating, I will have to figure out an Apache configuration for the umpteenth time and install some Perl modules and muck around with SSL certificates.

Once I get that done, I think I'll get serious about putting together a shell server. I have, right now, the following domains sitting unused:

I'm not really sure any of these are quite right, but then I'm also not sure that I need to spend any more money on vanity domain names.

Saturday, October 11, 2014

Interesting things generally are happening in the repo issues. Also, I asked about shells.

Friday, October 10, 2014

      ( Time keeps getting away from me. )
              o   ^__^
               o  (oo)\_______
                  (__)\       )\/\
                      ||----w |
                      ||     ||

October, 2014

      < Hi everyone. >
              \   ^__^
               \  (oo)\_______
                  (__)\       )\/~
                      ||----w |
                      ||     ||

I'm Brennen. I also have this other web site and there is this thing I am writing about using the command line.

I am keeping this in a git repository. Here is a Perl script you can use to make a feed out of a git log. (It needs a little work to generalize well.)

Maybe tomorrow I'll try to find my old GeoCities stuff and put it up here.