Older blog entries for crackmonkey (starting at number 9)

Beaujolais to Ricochet!

So I'm sitting at Simple Pleasures Cafe out in the Richmond neighborhood of San Francisco. My cow-orker Stephane needed to find a good cafe to just chill out in, and this was the best place I could think of. Perhaps next time we'll try Farley's on Potrero hill.

So here I am, dialed in through my ricochet wireless modem (beaujolais to that!), and putzing around on IRC and advogato. I'm also doing an apt-get dist-upgrade in the background. Note to self: tune MTU down to allow better interactivity.

The only way to win is not to play at all

I have a strange feeling that the dimwit ratings adversely affect the one doing the certification. That is, if I rate someone as a dimwit (purely in the interests of scientific research, of course), my guess is that it will reduce my certification strength and thus my ability to certify others.

It would seem appropriate, at the very least.

Advogato Growing Pains

My impression is that yes, advogato is suffering from some volume problems. The issues are simple:

  • In order to catch the massive volume of diary entries that come through, one must reload the updates page pretty regularly.
  • This is complicated by the fact that an "edit" of an entry is in truth a deletion and then a re-insertion.
My advice is to avoid editing entries unless you have a factual correction to make (for example, a malformed URL). Then we can ammend earlier statements by adding later entries, and diary entry metadata can be left alone after an edit.

As for the latest-entries page, part of the design seems to involve the fact that it's a static page. Since it gets reloaded so often, making it dynamically generated on a per-user basis (to allow you to display "new" messages) would be pretty wasteful of system resources.

One possible solution is to implement the much-needed anchors to allow one to refer to a specific diary entry. The anchors would be unique identifiers, and the "account" page for each user could have a link to the last-read diary entry in the listing of the day's entries. Of course, updating message pointers could be rather tricky, but using an anchor could allow the system to append messages to the end so that one reads chronologically from top to bottom.

Of course, these are all the sorts of BBS UI concerns I had to wrestle with a couple years ago when I designed my first WebBBS. They're difficult problems, no matter how you slice it.

Perhaps I should write up a top-level article to discuss this. At the very least I would happily participate in one.

Get Well Soon

I'm sorry to hear about mbp's accident, but I'm glad to hear that he's okay. Get well soon, Martin!

The Idea of a University

This little thread about higher education is actually fascinating to me. I recall when Seth Schoen and I spent a couple hours on a trunk call between California and Massachusetts discussing this very thing. I explained why I had left the University of San Francisco, and also why I had attended in the first place.

Here begins a story...

My parents are both hopeless academics, polyglots, and renaissance types. My father speaks ten languages with comfortable fluency, and can bluff his way through almost any foreign country on Earth. He's a philologist, classicist, librarian, and holds two masters degrees. My mother is the lightweight as far as academic credentials go, with only three or four languages and a single lousy masters. Of course, she also has some programming experience and definitely has a head for numbers and computation that my father seriously lacks.

It was just assumed that I would go to a four-year university and possibly graduate studies after that. My mother, having programmed only on mainframes to make ends meet, was horrified that I wanted to study computer science. Her basic problem was that it seemed like a trade school education. Her experiences with programming were more like factory work. She completely ignored the word "science" in the phrase "computer science", and begged me to study something sensible and enlightening like history or politics or even, God forbid, math.

She could understand mathematics as a field fit for a University. CS, however, was relegated in her mind to lowly colleges and trade academies and night schools. Being her son, I understood why she wasn't happy. I also had this feeling that I was missing some piece of the computing puzzle. I had learned Pascal and C syntax, but still wasn't able to figure out how people put it all together to make programs. I was missing The Right Thing. I was missing the AHA phenomenon.

So I set off South for San Francisco, determined that in a school with only a couple thousand people, I was bound to be able to chat with professors and find the science in computer science. I would have my AHAs, meet and hack with other geeks, and generally get out of my parents' house.

I did find a small community of geeks at USF, but they were all in the Math and Physics departments. The CS students all had dollar signs in their eyes, and were trying to learn a trade. I was heartbroken. My mother had been right. There were no CS hackers at USF, and I would be stuck among those who had no hacker spirit.

I finally figured it out when someone quoted Don Marti to me the other day: (to paraphrase) "You have to be a fool to go to college during an economic boom.".

It's not so much that there are so many opportunities to be found outside of school, or that there is gold in them thar hills. The real problem is that during an economic boom, the quality of fellow student tends to go way down. All of your colleagues are looking to get a bit of the gold, and are less interested in The Right Thing than they are in What Industry Wants.

So, discouraged, I communicated with my friends back in Seattle and hacked around on my own. Finally I discovered the Unix admin department at school, and installed slackware on an old 486 in order to impress them. They seemed like hacker folk -- arrogant, confident, and most of all clued-in. They enjoyed what they did with machines, and they were good at it.

What's more, I discovered in the free software community a feeling I'd had for quite some time. The reason I wanted to learn CS and hacking was that I had seen the community of hackers that worked on Citadel BBSes in Seattle in the late 1980s and early 1990s. The Citadel BBS software was public domain, and the source code was just sort of naturally available. What's more, the Citadel BBSes networked and formed a forum for discussing desing and implementation issues of the code. I wanted to be a part of that, and I was crushed when the BBS scene seemed to vanish around 1995.

Ultimately, I got a student job with the USF Unix admin department that lasted the last year and a half I was there. I worked as a SysAdmin there until my tuition money ran out and I had to just strike out on my own. I realized that the hackers I had found were all the folks at the CABAL, and that I was doing all the things I had wanted from school, but entirely independently.

I will say this, however: moving to San Francisco was a good thing, and school was definitely a good excuse to move. Also, I did get that AHA! effect from the place. I got some good courses in (especially the Applied Mathematics Research Laboratory, where I learned neurochemistry, a little more calculus than I would have liked, and parallel programming with the MPI environment). It wasn't a complete bust. Heck, I even learned assembly programming and systems hacking there.

What will I do in future? Well, if things calm down, or the economy takes a turn for the worse, I'll go back to school. I'd like to study something other than computers, of course. To tell you the truth, my idea of a University is a place where one just studies whatever is interesting at the urging of an advisor. Declaring a major is just too limiting to me. I am, however, interested in the prospects of going to grad school at MIT without having an undergraduate degree. If I had an impressive enough research project to warrant it, I'd give it a try.

Well, I've got a little black notebook with a vinyl monkey sticker on it that is calling to me. I'm still working on the design of MonkeyCit. It's still beginning to gel, but I'm at the stage where I should start banging in code soon.

Bonus points to anyone who can tell me where the title of this journal entry comes from. It was featured heavily in my debates with my mother.

Web Nonsense

Well, I finally got a stub of a Web site up for the MonkeyCit pages. I'm fleshing out the FAQ right now, and soon I'll move on to post up some design notes for the project. Unfortunately, I don't have mozilla (or X) on my laptop, so I had to call up a friend and have her describe the pages to me.

I'm trying to re-use the crackmonkey.org M4 scripts, but give the site a more Citadel-like feel to it. So the navigation bars are meant to look like lists of room prompts. I'll have to head over to the Linux Cabal and poke at it in a graphical browser.

Heat Wave

Well, the weather in SF is quite warm. It's too warm for my tastes. I'm already sick, but this weekend I was sweating buckets. Guh.

Many people are characterising this as "beautiful weather", but to me it's just uncomfortable. I sweat like a pig and I have to squint every time I go outside. I'm much happier in a light overcast situation with high clouds. Guess that's what I get for being raised in Seattle.

Stadium GAR

Last night my grilf and I had dinner at the Italian restaurant beneath my apartment building. The heat had caused them to push all the tables out onto the sidewalk, so the interior of the restaurant was empty except for the kitchen and a couple of built-in benches.

On our way back from dinner, some yahoos came by and asked us "what inning are they in?". I answered "twenty five", not knowing how many "innings" are in whatever form of SportsBall they play at the new stadium. The streets were crowded with SportsBall fans with their SportsHats and SportsShirts.


I spent last night and this morning playing scrabble with my grilf. It's so hideously hot down where she lives that I'm cowering in her apartment with the air conditioning on full blast. She isn't nearly as sensitive to the heat as I am, though.

I was quite astonished to find that the official scrabble dictionary lists gar (one of my favorite interjections and metasyntactic variables) as "to compel". I didn't even know it was a verb! The only meanings I knew were as an expletive ("by gar!"), a fish (much like a swordfish), and an acronym (Grand Army of the Republic). Still, it's one to add to the list.

I personally use it to refer to bile or anger ("Watch out -- Crackmonkey's full of gar today!") or as an interjection ("bus error? GARGARGAR!").


I took Caltrain down last night, and the new stadium had created quite a crowd. The new 4th and Townsend train station (a bauhaus nightmare of colored girders and cheap plexiglass) that was built specifically to handle game traffic seemed to lose several marks for macro-ergonomics. The process of getting on a train was made nigh impossible.

The rushing crowds, long lines, and incessant helicopter droning made me feel like I was in some Soviet sausage retailer or something.


I had some time on the train last night to take more notes on the design of the Citadel. I've had to reduce the number of helper objects in the system, on account of the fact that the user interface code needs to be able to flush the output queue if a user hits s to stop the flow of text. As soon as I get back to a machine with X on it, I'll play around with layout and design a proper Web site for the thing.

Also, if you have time, check out Brent Bottles's citadel archive if you're interested in that sort of thing.


It's true, I once accused schoen of being a Pythagorean. In addition to not eating beans, however, the pythagoreans also refused to look in a mirror that had a lamp in front of it. I'm not sure what the reason for that rule was, but I'm certain I've seen him violate it before.

From the attic:

In updating my old ZorkCit project, I came across an old article for CitaNews that I wrote over a year ago. It describes the user-interface issues I took into consideration when designing my first Citadel. It's rather Web-specific, but it does explain some user-interface guidelines that fit any Citadel implementation.

I've decided to name my Python Citadel "MonkeyCit" in the grand tradition of DragCit (written by The Dragon), GremCit (written by The Gremlin), etc. Since I'm Crackmonkey, my choices were "CrackCit" or "MonkeyCit". The decision was pretty obvious.

I'll be starting a Web page for the project soon. For now, there's some aging mailing list archives that describe the early design work on the project.

From the browser:

I'm extremely pleased with how lynx-friendly advogato is. I use lynx partly because when I'm in an edit box like this one, I just hit ^Ve, and up comes $EDITOR (vim in my case). I even turned on syntax highlighting for HTML. You can't do THAT in mozilla!

Of course, this encourages me to write longer diary entries. Make of that what you will.

From the sinuses:

The head cold or sinus infection or whatever it was that was keeping me unable to concentrate during my FreeBSD kernel class last night seems to be subsiding. Of course, now I'm in deadline hell at work.

From the corrupt city government:

Tonight the new sports-whatever stadium in San Francisco opens for business. The traffic congestion will be horrible. I plan to hop on a train and head out of here for the duration. This has been the most poorly-planned operation from the start. Hell, the thing was voted for by the dead to begin with.

First SF destroys its library, and now it does this. Welcome to The City. Guh.

In response to schoen's Pirke Avot quotation, I give you Tom Lehrer:

It is a sobering thought, for instance, to realize that by the time Wolfgang Amadeus Mozart was my age he had been dead for three years

I'm actually slacking in class. Kirk is going over "A Day in the Life of a UDP Packet" starting with bind and moving on down through to the fxp ethernet driver.

The allergies I mentioned earlier are growing into a full-blown head cold or sinus infection. Elisix bought me cinnamon tea at a northside cafe, and now I'm in the bowels of Evans hall, dialed in from my ricochet.

I did a little digging and found my old ZorkCit entry in Freshmeat and some pre-hard-drive-crash era web pages. I am debating whether to make my Python Citadel system part of ZorkCit or if I should just have them kill the entry.

Guh. I have been sneezing like a spastic cat lately. I'm not sure if it's allergies to my friends' houses, a cold, or a reaction to the fungus that is growing on the vase of dead roses that has been in my room since Valentine's day.

Er, yeah. Maybe I'd better clean up when I have the chance.

Tonight is kernel class, and I have to finish a writeup of my project. Time to whip out my old troff macros. Ugh.

I'm still getting the hang of this place, but I think I like it.

I actually found it because mbp pointed me to dria's diary entries a while back.

I must say that I'm impressed with the response I got from my initial entry. dwhite e-mailed me about medusa (which I know as asyncore.py in the Python standard build). I was already using it (and yes, it is quite helpful in desiging select()-based daemons!), but it was cool to see that I'm not just typing to dead air.

No doubt he was lured in by my Python and FreeBSD fnords.

Well, my projects are all either lost due to hard drive crashes, or still in the larval stage. The only project I'm really actively working on right now is an implementation of congestion control exploitation in the FreeBSD 4.0 kernel (for Kirk McKusick's intensive kernel code walkthrough class).

As I write this, my major project is to reimplement the Citadel BBS software in python. I haven't gotten much past the design phase, but I do have a functioning prototype for a select()-based telnettable server. Since it uses select(), each connected session has to be cooperative and relinquish control quickly. To that end, I envision a latticework of nested dictionaries that map keystrokes to actions and printed feedback, driven by a per-session context stack.

I suppose there are better places to write this up, so I will continue to poke around and figure out what else is on here.

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!