"That which is overdesigned, too highly specific, anticipates outcome; the anticipation of outcome guarantees, if not failure, the absence of grace."
-- William Gibson, All Tomorrow's Parties
January 2, 2006

Went to see King Kong with my sister tonight. It could have been... shorter. Like if you cut out everything that was put in there for the fucking video game? There's goes an hour or so...

The lead-in stuff I had no problem with. All the shit that wasn't there just because it would look good on the Xbox? Hey, I had no problemw ith it. Kong hisself was pretty good stuff.

There was some residual blue-screening on Ann when they were sitting on the cliff on the island, watching the sunset. That was really weird. And I can still tell CG from real actors, which drives me up the goddamn wall.

You know what? Get a guy to jump on a pole and then plaster that onto the background. k? k.

Like I told the guy the gas station attendant: Wait for the DVD.

3:05 AM | Movies
January 3, 2006

I'm reading Gridlinked by Neal Asher at the moment, and wow, cats, whoever edited this book must have spent a good ten seconds on it. I'm confused how the author could have overlooked some of this stuff.

The story itself is mediocre, as are the characters and the prose itself. I suppose it could get better, but what it really could have done with is a good deal of Editing with a capital "What the fuck? Cut this, fix this, and rewrite all of this."

That said, I've spent maybe two hours on it and I'm almost done. Something to be said for a simple little scifi romp. First book of the new year, too. Go fig.

2:23 AM | Books
January 4, 2006

Finally goddamn home.

After what, ten hours in airports and airplanes, I get to PHL and what happens? Oh, there's no fucking cabs. So people are milling around, walking between dispatch stations, running around on fire, as you might expect. It's 0100 and people just want to get home.

I am amazed there was not a fucking riot. Apparently this shit has been going on since 1600.

Finally I get a cab, double up with some couple who has been travelling just as much as I have today, and ten minutes later I'm home. HOME, BITCHES.

Most Annoying Overheard Conversation: Some girl and guy talking about Brave New World. "And like, the women? Well, I don't remember exactly how like, reproduction worked. Maybe they like donated their eggs and the babies were born in a lab and you couldn't raise them yourself or something?"

Yay for iPod.

I am very glad to be home. And eating. Finally. So tired.

2:44 AM | Life
January 6, 2006

<@bda> Flight93 trailer
< SWinder> LETS ROLL
< SWinder> this is suspenseful
< SWinder> i wonder how it ends
<@bda> I'm pretty sure the boat sinks.

10:56 AM | irk
January 7, 2006

Ever have one of those days?

Well... dragorn will probably just top you, so don't bitch. ;-)

3:16 PM | Life
January 12, 2006

I'm back on board that '49 Ford in 1956
Long before the sun came up way out in the sticks
The headlight showed a two rut roadway
Back up in the pines
First time I heard Johnny Cash
Sing I Walk The Line

I got my thrill behind the wheel upon my daddys lap
Grandpa rode co-pilot with a flashlight and a map
Cane pole out the window it was in the summertime
First time I heard Johnny Cash
Sing I Walk The Line


I keep a close watch on this heart of mine
I keep my eyes wide open all the time
I keep the ends out for the tie that binds
Because you're mine, I Walk The Line

I never will forget that day,I know the time and place,
Sounded like the whole thing came right down from outer space,
I still can see those headlights and that dashboard in my mind,
The first time I heard Johnny Cash sing I walk the line.


I find it very very easy to be true,
I find myself alone when each day's through,
Yes I'll admit that I'm a fool for you,
Because you're mine, I walk the line

All these long years later it's still music to my ears
I swear it sounds as good right now as anything I hear
I've seen the Mona Lisa
I've heard Shakespear read real fine
Just like hearing Johnny Cash
Sing I Walk The Line


As sure as night is dark and day is light
I keep you on my mind both day and night
And happiness I've know proves that it's right
Because you're mine, I Walk The Line

Because you're mine, I Walk The Line

Rodney Codwell, I Walk the Line (Revisited)

7:32 PM | Lyric Spam
January 15, 2006
January 17, 2006


Soldiers lose death benefits if they die wearing privately purchased armor..

How about we buy them some armor that doesn't suck?

Talk to your representatives, assuming it matters anymore.

[via timmy]

8:12 PM | Linkwhore

Finished reading Pandora's Star by Peter F. Hamilton the other day. It just felt like a re-hash of The Night's Dawn Trilogy, Fallen Dragon, and large chunks of The Hyperion Cantos (though that might just be because Simmons did it so well it's hard not to view expatriated AIs, worlds connected via wormhole gateways, yadda yadda, without thinking of Hyperion). Ozzie's walking the "Silfen Pathways" was nothing at all like Raul Endymion's traveling the old World Web planets on his quest to get back to Aenea.

He also seems to have ripped the Skoderiders (the plant aliens) from Vinge's Zones of Thought books.

Plenty of the characters were the same typecast as from Night's Dawn as well, which was super annoying. How many rich girls put down on their luck by The Man turned Super Evil Bitch turned Heroine can you do?

So... 900 pages of regurgitation? The reviewers comparing it to the Dune or Foundation series must have been thinking of the later, gods-awful books.

Reading through In the Country of the Blind, by Michael Flynn, now. It seems to have an interesting premise at least, and The Wreck of "The River of Stars" was definitely good enough to give him another look.

8:18 PM | Books

Forth-coming documentary on American imperialism.

Or, as Ghost in the Shell: Stand-alone Complex took to calling us, the American Empire.

8:20 PM | Linkwhore
January 18, 2006

So this damn thing I've been working on for the past, I dunno, forever, is almost done. Or anyway, it's about to hit beta. Finally. It's nowhere near a release candidate yet, but that won't stop us putting it into internal production (heh).

While I don't usually bother with this stuff, I'm bored:

Creating filelist for bin
Creating filelist for lib
Creating filelist for trac
Categorizing files.
Finding a working MD5 command....
Found a working MD5 command.
Computing results.


SLOC Directory SLOC-by-Language (Sorted)
2256 lib perl=2256
198 bin perl=198
11 trac python=11


Totals grouped by language (dominant language first):
perl: 2454 (99.55%)
python: 11 (0.45%)


Total Physical Source Lines of Code (SLOC) = 2,465
Development Effort Estimate, Person-Years (Person-Months) = 0.52 (6.19)
(Basic COCOMO model, Person-Months = 2.4 * (KSLOC**1.05))
Schedule Estimate, Years (Months) = 0.42 (5.00)
(Basic COCOMO model, Months = 2.5 * (person-months**0.38))
Estimated Average Number of Developers (Effort/Schedule) = 1.24
Total Estimated Cost to Develop = $ 69,671
(average salary = $56,286/year, overhead = 2.40).
SLOCCount, Copyright (C) 2001-2004 David A. Wheeler
SLOCCount is Open Source Software/Free Software, licensed under the GNU GPL.
SLOCCount comes with ABSOLUTELY NO WARRANTY, and you are welcome to
redistribute it under certain conditions as specified by the GNU GPL license;
see the documentation for details.
Please credit this data as "generated using David A. Wheeler's 'SLOCCount'."

That doesn't include the templates, which contain maybe 150-200 lines of logic.

I spent a good portion of the day manually tracing the execution path of a "rebuild", which touches a fair amount of the code, and it came out to about four pages. The biggest chunk was rebuilding the UNIX groups from the Trac databases, as it has to bounce around the user modules a bit. I ran down a few bugs I introduced while coding "in the zone", and it refamiliarized me with quite a few things I had forgotten about once they were "finished".

Need to dig through Damian's Best Practices book on how to deal with error handling, because what I'm doing now sucks.

I hate coding. :)

10:20 PM | Programming
January 20, 2006

Started reading the The TCP/IP Guide by Kozierok the other day. I'm not incredibly far into it (chapter five), but so far it could have more aptly been titled:

A Treatise On Networks With A Focus On TCP/IP-Related Protocols And Concerns Thereof

Which certainly isn't a bad thing. The text itself is very approachable. It would probably make a good textbook, or at least reference work, for a networking class.

I think my favorite bit is he goes out of his way to explain the why of things. For instance, notes on why ISO is ISO and not IOS (International Organization of Standards; actually not an acronym, taken from the Greek word isos, which means "equal"), or why hexadecimal is hex and not sexademical (as the convention is to use the Latin prefixes and not the Greek ones; IBM in the 50s decided that sex- was too risque and went with hex instead. "IBM being IBM -- especially back then -- everyone else followed suit.")

Little things like that make it worth reading to me. Good stuff so far. Apparently yet another good buy from No Starch Press.

7:50 AM | Books

Newsflash: Sarah Slean's live cover of Radiohead's Climbing Up the Walls still the coolest thing ever. kthx.

7:53 AM | Music

< vai> I woke up this mornign to find that my son had used a screwdrier to open my laptop.
< vai> and pry all the keys off the keybaord with.
< vai> He presented them to me, shakingme awake - like he had a present.
< calliope> Oh dear.
<@bda> This is what you get for thinking that propagating your genes would be a good idea.
< vai> bda: one day, one day. I'll send your kid a drum.
<@bda> I don't think I'll be procreating, vai.
< vai> awww. I was just picturing the little scarves.
<@bda> Most people picture the little trenchcoats.
<@bda> And weapons training.

8:46 AM | irk
January 21, 2006

<@bda> http://comics.hawkstudios.net/index.html # AKA Sad Robot In Snow?
< solios> heh.
<@rjbs> sad robots piss me off
<@rjbs> "OH LOOK I AM SAD, EVEN THOUGH I AM NUCLEAR POWERED"
< solios> maybe he lives in jersey.
<@rjbs> hm. fair enough.

7:51 PM | irk

<@bda> http://www-03.ibm.com/servers/eserver/linux/fun/index.html?c=eserver&n=linuxfun_callout_servershome&t=advertise#
<@bda> wtf retarded.
<@ejp> speaking of retarded, I was just connected to a Cobalt Raq
< solios> nice.
<@bda> Running what?
<@ejp> Raqs are bastardized linux.
<@bda> They can run other things, afaik.
<@ejp> this one was stock. it was icky.
<@bda> Show us on the FHS where it touched stupid files.

8:34 PM | irk

pkg_find is a nice little shell script from Michael Erdely which lets you search packages for a given string and returns a list of matching packages (one of which you can then choose to install). It keeps a local copy of the index, and updates it every n days. There is a port tarball available.

It's only a couple hundred lines, and replaces the ghetto manual index grep I've been doing for a while. I kept meaning to write something exactly like this, but yay apathy. According to the comments on the post, he wrote it to get away from exactly that. :)

The next version of pkg_add will include -i, which will apparently do the same thing. Marc Espie has been kicking ass with the package system.

I should probably start tracking -CURRENT somewhere.

9:32 PM | Systems Administration
January 22, 2006

untaring src.tar.gz into /usr instead of /usr/src kind of sucks.

It sure is a good thing OpenBSD's ftp is statically compiled. Just had to grab base38.tgz to another box (gzip likes to link to libraries more than directories; blowing out /usr/lib kind of sucks), uncompress it, copy it over to the hosed box, and untar it in /tmp. Copy /usr/local to /tmp/usr/local, as local shouldn't have been touched, then just get rid of the hosed /usr and copy over /tmp/usr.

The other solution would be to build the new /usr on a fresh partition (I like to have one or two spare at the end of the root disk), and then swap them.

Note to self: Have a static sshd and ssh handy. And start using screen-static instead of screen. :)

4:53 PM | Systems Administration | Comments (1)

So for a while now I've been trying to find a decent of rotating virtual host logs... finally tonight I got around to spending the twenty minutes to write a couple little scripts to deal with it for me.

There's a few problem with Apache logs, especially if you've got logs dumping on a per-vhost basis, and are running some form of stat generation against them. Previously I was doing an extraordinarily lame ghetto hack, with every vhost having two entries in /etc/newsyslog.conf, one for access log, the other for error, and doing a svc -t /service/httpd after every log rotation (svc is part of djb's daemontools, -t signifies you want to HUP the service). Needless to say, that's pretty crap; more or less the same as doing a graceful n times a night.

The rotatelogs program seems to be far from awesome, seeing as how it doesn't seem to want to fork() per-vhost, and anyway it looks like it bases rotation time from server restart... which is totally useless for cron jobs. Maybe I'm wrong. I suspect I don't care. newsyslog slipped me a twenty, so.

The solution I came up with is rather simple. I have the following script generate a newsyslog.conf for my Apache configs:

#!/usr/bin/perl

use strict;
use warnings;

use vars qw/ @ARGV @domains /;

unless ($ARGV[0]) { die; }

my $file = $ARGV[0];

open (FILE,"<$file");

while (<FILE>) {
chomp;
push @domains,$_;
}

close FILE;

my $log_string = <<EOF;
/var/www/logs/access_log root:daemon 640 10 * \$D0 Z
/var/www/logs/error_log root:daemon 640 10 * \$D0 Z
/var/www/logs/ssl_engine_log root:daemon 640 10 * \$D0 Z
/var/www/logs/suexec_log root:daemon 640 10 * \$D0 Z
EOF


for my $domain (@domains) {
$log_string .= <<EOF;
/var/www/logs/vhosts/$domain/access_log root:daemon 640 10 * \$D0 Z
/var/www/logs/vhosts/$domain/error_log root:daemon 640 10 * \$D0 Z
EOF
}

print $log_string;

So:

# /root/bin/apache_newsyslog_build.pl /root/etc/domains.txt \< /root/etc/apache-newsyslog.conf

And then in root's crontab:

00 0 * * * newsyslog -f /root/etc/apache-newsyslog.conf && /usr/local/bin/svc -t /service/httpd && /root/bin/run_webalizer.pl

Where run_webalizer.pl is:

#!/usr/bin/perl

# This script expects webalizer configs to be in the format:
# domain.com.conf

use strict;
use warnings;

my $www = "/var/www";
my $vhosts = "$www/vhosts";
my $vhosts_logs = "$www/logs/vhosts";
my $access_log = "access_log.0";

my $webalizer = "/usr/local/bin/webalizer";
my $webalizer_confs = "/root/etc/webalizer";
my $gunzip = "/usr/bin/gunzip";
my $gzip = "/usr/bin/gzip";

opendir (DIR,$webalizer_confs) or die ("Couldn't open $webalizer_confs: $!\n");
my @configs = grep (!/^\..*/, readdir (DIR));
closedir (DIR);

foreach my $domain (@configs) {
$domain =~ s/\.conf$//;
if (-d "$vhosts_logs/$domain") {
print "Found $vhosts_logs/$domain.\n";
if (-d "$vhosts/$domain") {
print "Analyzing $domain... ";
unless (-d "$vhosts/$domain/stats") {
print "Creating stats dir. ";
mkdir("$vhosts/$domain/stats"); chmod 0755, "$vhosts/$domain/stats";
}
if (-f "$vhosts_logs/$domain/$access_log.gz") { my $decompress = `$gunzip $vhosts_logs/$domain/$access_log.gz`; }
my $analyze = `$webalizer -c $webalizer_confs/$domain.conf`;
if (-f "$vhosts_logs/$domain/$access_log") { my $compress = `$gzip $vhosts_logs/$domain/$access_log`; }
print "Done.\n";
}
}
else { print "Skipping $domain.\n"; }
}

Pretty simple.

Anyway, I guess we'll see how well it works tonight. :)

8:40 PM | Systems Administration
January 23, 2006
January 25, 2006

< dragorn> ow. and the cat assumes its alter ego: The Junktrampler
<@maarken> ha
<@maarken> my sister's cat does that. fucker weights like 22lbs. four 1
square inch paws.
<@maarken> ow
< bda> Wow.
< bda> Quick, one of you fucking nerds figure out how much weight that is
per paw on your junk.
<@maarken> 5.5
<@maarken> psi
< dragorn> thats only stationary
<@maarken> yes. that's the problem really.
< dragorn> not when it's made a junk-trampoline and taken a leap
< bda> Fucking nerds.
< kyoorius> approximately how high does the cat jump off your junk?
<@maarken> you'd need to know the average velocity of the cat mid leap.
< dragorn> I'm less concerned with average velocity and more concerned
wth initial junk-trampling
< kyoorius> you can calculate that if you know the trajectory
< kyoorius> which can be approximated by knowing the height the cat
reaches above said junk
< kyoorius> a pretty close value can be derived negating air friction and
the horizontal component of travel
<@maarken> oddly, I'm pretty happy the answer "fuckin' OW!"
* kyoorius aced college physics attending 3 sessions... the first day in
class, the mid term, and the final :P
<@ecronin> this calls for emperical evidence of the terminal velocity of
cats. To city hall tower!
< kyoorius> I showed up for the final exam and my girlfriend said "what
are doing here? you're not in this class."
<@maarken> ha
< kyoorius> i heard the teaching assistants were so bad that attending
class would bring down your test score 15 points.
<@maarken> I can do physics, if I just look up all the formulas
< kyoorius> so I had the upper hand.

8:17 PM | irk
January 29, 2006

I wonder where you are this morning
I wonder what you're doing
Besides in thoughts and broken dreams
My bankrupt heart's construing

Holding you was never quite as nice
As is the memory
I wish that I could see that then
What now my eyes are forced to see

If I could go back in time
I know what I would do
I'd dropped my mask and all my lies
With all my might
To hold on tight
To you
To you
I would hold on
To you

Drowning in my useless sorrow
Thinking of what could have been
Tortured by these feverish thoughts of never and again
I'd die to stare into your eyes
And scream that I'm in love
But I'm not so sure that love's in me
Or anything
That's worth your thinking of

But I would hold on
I would hold on
To you
To you

But there's just one thing that's puzzling me
I wonder where you are this morning
I wonder what you're doing

Rorschach Test, Hold

3:11 AM | Lyric Spam

Google in China

Google's explanation of why it agreed to filter a portion of search results for their Chinese site.

It's sad, but I agree with it. Ignoring a problem doesn't make it go away.

And while you may not buy into the cowboy mentality, there are technological responses to oppressive, networked censorship.

12:34 PM | Linkwhore
January 30, 2006

<bda> I got Subway for lunch. On my way out of 30th I stopped at Taco Bell to grab another soda.
<bda> This guy.
<bda> This stupid fucking guy.
<bda> He was standing in line holding everyone up, describing the thing he wanted.
<bda> He didn't know what it was.
<bda> He knew it's shape and some of what was on it.
<bda> So he's describing the fucking thing, at length.
<bda> And the clerk just pauses, and then points AT THE GIANT FUCKING PLACARD in front of the guy and he goes "Yea! Wait.. no... wait. Yeah! That's it!"
<bda> And I'm thinking to myself "I'm going to kill this motherfucker. I'm going to drop a cap in his brainpan. I'm going to jail because this guy is an asshole."
<bda> And then, then he starts saying what he wants on it, and what he doesn't, and why, and in what order.
<bda> At Taco Bell.
<bda> AT FUCKING TACO BELL.