tuesday, february 27

the evil is general,
pervasive, operating in all things:
it is conventional to believe this,
but conventional explanations
will not suit.

monday, february 26

one table over,
they are playing a board game
she reads a card:
name one thing that really changed your life
he thinks for a while, and says
getting on the path to self-transformation

earlier, they were talking about workshops,
books on tape,
secrets of the millionaire mind
and this really great version
of the dao de jing

opening ourselves
to prosperity

jesus christ
it is like dale carnegie
for freshman year bookstore buddhists
— goes on for an hour or more, and
i am completely unable to pay attention
to anything else. it is almost impossible
to believe that any of them could be in
earnest. but who is pulling what sort of con?
who is the mark?

the girls are pretty enough when they aren't
laughing, which is too seldom
there's no denying you could get laid
playing this game
and maybe that's all it is
but to borrow a line from marx,
would you want to fuck a
member of that particular club?

Saturday, February 24

Today, the water went off. A partial diagram of the plumbing here to follow.

Interesting systems are everywhere. Cue epiphany noises.

Friday, February 23

"The underlying principles of the States are not honestly believed in (for
all this hectic glow and these melodramatic screamings), nor is humanity itself
believed in. What penetrating eye does not everywhere see through the mask? The
spectacle is appalling. We live in an atmosphere of hypocrisy throughout. The
men believe not in the women, nor the women in the men. A scornful
superciliousness rules in literature. The aim of all the littérateurs
is to find something to make fun of. A lot of churches, sects, &c., the most
dismal phantasms I know, usurp the name of religion. Conversation is a mass of
badinage. From deceit in the spirit, the mother of all false deeds, the
offspring is already incalculable. An acute and candid person in the Revenue
department at Washington, who is led by the course of his employment to
regularly visit the cities, north, south, and west, to investigate frauds, has
talked much with me (1869, 1870) about his discoveries. The depravity of the
business classes of our country is not less than has been supposed, but
infinitely greater. The whole of the official services of America, national,
State, and municipal, in all their branches and departments, except the
Judiciary, are steeped, saturated, in corruption, bribery, falsehood,
maladministrations; and the Judiciary is tainted. The great cities reek with
respectable as much as non-respectable robbery and scoundrelism. In fashionable
life, flippancy, tepid amours, weak infidelism, small aims, or no aims at all,
only to kill time... I say that our New World Democracy, however great a
success in uplifting the masses out of their sloughs, in
materialistic-development products, and in a certain highly deceptive,
superficial, popular intellectuality, is so far an almost complete failure in
its social aspects, in any superb, general- personal character, and in really
grand, religious, moral, literary and 'sthetic results."

- Walt Whitman from "Democratic Vistas", as quoted
in W. Hale White, "The Genius of Walt Whitman." The Secular Review, 20 March
1880, pp. 180-2.

Thursday, February 22


Want to use Text::Textile for blocks of text with linebreaks, and not insert a
bunch of <br /> tags in your HTML? It looks like this is as easy as modifying
$self->{_line_close} = '<br />' in sub flavor. It would be nice if this
were an explicit option. I will write Brad Choate.

i'd rather be boring than bored

Does it seem like I've been obsessed with software lately? I mean, more than

(...he said to the empty room.)

This is because I have been obsessed with software lately. I sit in front of a
computer all day. What else am I supposed to be fascinated by? The squirrels
outside my window? The squirrels are fascinating, at least by contrast to the
task at hand, and so are the freakshow Boulderites with backpacks and the
beautiful dreadlocked girls with flowing skirts walking to the kind of
coffeeshop or book store I used to spend all my time in when I lived on student
loans and alcohol and frisbee. Even the City of Boulder Parking Nazis in their
ridiculous little white city vehicles with the orange flashers on top are more
interesting than what I am being paid to do.

But the squirrels come and go, likewise the beautiful freaks, and in the
meantime I work with software. And people, of course, but mostly with software.
And a lot of it is fantastically bad software. I'll spare you the details,
because they don't matter that much and they are boring. It's the same story
everywhere. Steve Yegge is right: Most software sucks. And what's worse,
Yegge is usually talking about software that people who really care about
software, deep down, create for their own day-to-day use. If the software
which people live in by choice when they have an idea of what is possible is
not what it should be, then the software that most normal human beings are
forced to use in a working context might as well be devised explicitly for the
purpose of destroying the human soul.

Most software is bureaucracy with the human element mechanized away, and
most bureaucracy is a goddamned nightmare to begin with. I don't mean this
in quite the way that I think most people mean it: Bureaucracy is a
technological problem, and a technological solution - invariably
broken and dehumanizing, but what the hell are you going to do about it?
- for all sorts of monster problem domains, as much as it is anything

So I seek out opportunities to automate, to let the machine iterate instead of
my hands and my tired brain. And I think in cycles about what amount to the
basic problems of bureaucracy, the ways that the magical clarity and expressive
power that once seemed to live in computing have lured so many people into the
weird clerical hell of the present technological moment.

As a minor side effect, I am slowly becoming more of a hacker. It begins to
seem to me that in any given environment, you can react to stupidity and
boredom by becoming stupider or by cultivating a certain kind of intelligence.
This is naive, though. On a long enough timeline, stupid wins unless you
walk away.

Monday, February 19


New today: A simple script to grep through Mplus output and dump values to a CSV file.

cottage pie

5 medium-sized potatoes 1 cup+ left-over roast beef, shredded
1 carrot 2 cubes beef bouillon
peas & corn, .5 cup+ each olive oil
2-4 stalks celery 2 eggs
1 yellow or white onion Worcestershire sauce
1-2 cloves garlic Dijon mustard

Chop the onions and celery fairly small, then start them cooking in olive oil in a medium saucepan. Dice the garlic and toss it in. Peel and cube the potatoes, and proceed to boiling the living hell out of them in an appropriately sized pot.

Chop the carrot into little carroty discs.

Once the onions have cooked down a bit and are starting to get sort of a golden tinge, add 2-3 cups of water (maybe more; I didn't measure) and the bouillon cubes, then toss in the shredded beef, peas, corn, and carrot. Add about a tablespoon of Worcestershire sauce, and around the same amount of Dijon mustard. Boil/simmer this mixture for a while. Add a little black pepper to taste.

Once the potatoes are soft, mash them with a little butter and milk. Beat the eggs together with whisk, fork, or other suitable implement, then fold them into the potatoes. Add appropriate herbs, if you've got any (I used some rosemary). Pour the contents of the sauce pan into a baking dish or pie tin, then spread the potatoes evenly across the top. Cover with foil, bake for 30-35 minutes at 325° F, then uncover and bake for a further 5-10 minutes, or for however long it takes you to drag your housemates out of bed and get them to sit down at the table.

Notes: The amounts given are approximations at best. I envision a no-cow version of this with mushrooms and silverbeet / swiss chard. Or at least mushrooms. Sweet potatoes in the topping might or might not work well, but I'm going to try it one of these days. I maybe should have wound up with more beef and broth substance than I did. Thickening it before covering it with the potatoes might have helped. Some kind of cheese-based topping-topping might also have been nice. Is bouillon even remotely the right spelling?

Sunday, February 18

New today: Some Perl to use CGI::FormBuilder and a small stack of other modules for a FastCGI survey form with file uploads. There's partial support for data storage/retrieval in MySQL or as XML, though at the moment the only option that works out of the box is flatfiles with output from Data::Dumper.

un screenshot

Slightly better documentation and a live example to come, but for now there's a README in the tarball.

Saturday, February 17

There's not much there at the moment, but I added /hack for code I feel like publishing.

Monday, February 12

I went to the DMV today to get my very first Colorado driver's license. The
office in Boulder is housed in the back of a near-death mall, and the
atmosphere is the kind of Midwestern Soviet ca. 1987 that lets you know you've
stumbled into a channel of that bureaucracy which runs like dry rot through the
official American system. The older guys all look just like the actor who plays
the bond company stooge in The Life Aquatic.

In some important way, you know that for all the technothriller special effects
we like to imagine going on at the highest, scariest levels of official power,
working for the CIA or the NSA or the FBI is more like sitting at the DMV than
it is like being in a Tom Clancy novel.

And speaking of technothriller bullshit, I quit paying attention for a couple
of months and, with a sick, absurd sort of inevitability, our current
fuckwit-in-chief and his comically evil cronies seem not only to have decided
that war with Iran should be taken out of the realm of paranoid delusion and
placed firmly on the agenda, but to have done this without encountering a
howling storm of incredulous, enraged derision from every single quarter and
element of the public sphere.

Much love, America. Much love.

Sunday, February 11

Yesterday found me standing in a Barnes & Noble, deciding between
Higher Order Perl and Programming Ruby. I went with the latter, despite a
faint odor of bandwagon jumping about the entire language lately.

What I am discovering, for the umpteenth time, is that there is something about
the Object Oriented paradigm that drives me up a wall. I always feel like a
small group of taxonomy-obsessed bureaucrats stumbled into computer science
some time in the early 1980s and proceeded to form a sinister cabal which now
runs the entire enterprise.1

Aside from that minor detail, Ruby is appealing. Though the powers-what-be
are making an effort to distance the language from some of its Perl influences
(it says so right there on page 24), there's a lot for a Perl-inclined
sensibility to appreciate. Pain-free manipulation of strings, regular
expressions, hashes, an "unless", easy iteration over (and flexible access to)
arrays, nice little functional idioms, easy one-liners. And hey, whaddya know,
arrays and hashes store any kind of object at all, which looks like it means
that you can have an arbitrarily complex data structure without wanting to stab
Larry Wall repeatedly with a bracket. (Larry, you know we love you. Perl 6?)

1 Yes, I'm aware that this is ahistorical and unfair.

Saturday, February 10


Friday, February 9

the network goes down at work

Microsoft Paint and I tell a small story together.


Thursday, February 8

further working notes

Unison, it turns out, is really slick. Editing everything locally changes my entire perspective on what sort of a document p1k3 might become: writing a blog entry is considerably less interesting than editing a book. As an added bonus, a few lines of shell script would serve to tie the file synchronization to any version control or backup scheme one cared to use.

Tuesday, February 6

working notes

I still have a bunch of files to upload, but ye wala wiki thing lives again.

So it kind of looks like, as capable as rsync is, there are still problems using it as a publishing mechanism for the web if you need to do more than update a set of static documents from a master copy - say if you've got a file-based wiki.

This is not that big of a problem, if your static files live in one directory and the potentially mutable files in another. Just push to one location and pull from another. Certainly I could do that. It still seems like there should be a more elegant solution, and it'd be nice not to be stuck publishing from a single machine.

Enter Unison, a two-way file synchronizer, which uses the rsync algorithm for bandwidth-friendly transfers, and pulls in latest versions from both directories, resolving conflicts as needed. I haven't actually tried this yet, since my craptastic internet connection flaked out last night, but it sounds pretty much ideal.

...or at least ideal for a world where this sort of thing is necessary. I keep getting the sense that something has broken down as our computational universe has scaled up and fundamentally changed in character. Remember the sense of a single machine as a little self-contained world, the integrated feeling of identity/place in being luser@suchandsuch?

Friday, February 2

temporary linkdump

Wednesday, January 31

a moment of cut-rate technologist, several overlapping flavors

1. p1k3 needs a better architecture. For starters, it needs one where things which don't belong in a strict hierarchy of dates can still live in the namespace of the blog thing and use its facilities. I've thought about this off and on for a long time, but the other night I realized that it already has one and I'm just not using it: Everything here is a file or a directory anyway. Files and directories are imperfect, but they are very well understood, and they're the unifying abstraction for just about every tool I work with. So I'm going to import a largish set of things into this namespace by the simple expedient of moving the directories and changing a couple of Apache mod_rewrite rules.

I want to be careful with this sort of thing, because strong hierarchy in general is worrisome and often needlessly complicating (or simplifying). Things do have relationships, many of which are in some sense directional or capable of being viewed as containers. It's just that some combination of the physical constraints on old-school paper information storage and its conceptual relationship to files/directories has rigidified the way we think about organizing information (the folders you see in every desktop system may be a dead metaphor at this point, but they're telling nonetheless). Things have a unique existence and need to go in a place, and so it is seen as important that they go in the right place. The human tendency to classificatory mania is actually encouraged in an environment that should ameliorate its worst effects.

I spend a lot of time dealing with software that represents strong hierarchy, either in its fundamental structure (which is constraining) or as a layer on top of that structure (which is deceptive and often distracting). In part, this is probably because I work in a Java shop, but I think you find it everywhere in the world of serious software which costs someone real money. Meanwhile, you can knock out a wiki in an afternoon with a flat namespace and dumb two-way linking, which is proof that we shouldn't have to burn so much of our lives on a misdefined problem.

1a. Back to paper media. I suspect and fear that cheap computing and the Internet are creating the conditions of a historical (historiological?) apocalypse. This is not an original notion. The materials of our shared future history are now your blog (yes, with the cat pictures), your e-mail account, all the crap you have on flickr. If you want to become deeply depressed about our collective capacity to retain all this data, talk to a professional archivist for a few minutes about audio tapes. No matter how much redundancy we build in, electronic information systems are fragile, and they will remain fragile for the foreseeable future. Most electronic documents are orders of magnitude more likely to vanish than anything we've ever put on paper.

(Side note: And here is another reason to build things on the file system, despite its limitations: Of all the abstractions and containers available to you in computing, it is the most likely to be intelligible in 50 years.)

So I've decided that an available output mode for p1k3 needs to be a relatively well-organized printable document. This isn't a hard or interesting problem to solve just-well-enough for archival purposes, but it is damned difficult to do as good art. And thus perhaps worth attempting.

2. I talked to Levi yesterday, and he had this really interesting project in mind that would involve a large collection of structured records for variously sourced historical data. The parts that I think make it more interesting than Your Average Big Dumb Database App are what structured and sourced are going to mean. (Quasi-arbitrarily and with sufficient rigor to impress professional historians while not being a complete pain in the ass to work with, respectively.)

Of course, I know what about databases? That's right: nothing. It's probably all a solved problem, but it's a problem I've never had to solve. You'll hear more about this, especially since I feel like it's interesting for reasons other than technical.