Older blog entries for crackmonkey (starting at number 13)

I would like to take this opportunity to say Beaujolais! to ianmacd for finally posting a diary entry that doesn't read like a lame work log!

Yes, it's true. I'm a bit of a FORTH fan, though I really only dabble. I imagine a Unix-like kernel to provide a PolyFORTH type environment, but with virtual memory, demand-paging, and other nice things that PolyFORTH couldn't provide. Memory management would be quite simple, since one can optimize for the stack as the common case.

I recently got started on my $7 Tours project, and hope to get some work done on my initial tutorials soon. I also hope that more people use the mailing list to submit some Tours of their own.


Okay, just a few itemized observations:

  • Javur is a language for big, dumb, dogshit-eating hillbillies. I refuse to use it for any of my projects. I like what the FreeNet folks are doing, but I cannot abide Javur.
  • The Melissa/ILOVEYOU/etc. e-mail trojans should have downloaded and installed ZIPSlack rather than delete data. I'd love to see every MS outlook-using box on the planet have a big ol' Linux icon on the desktop.
  • All mutt users should add the following to their respective .muttrcs:
    set attribution="begin  %n quotation:"
    Didja notice the two spaces after "begin"? That's cuz outlook express treats any line that starts with "begin  " as the start of an attachment! After years of receiving illegible attachments from Outlook users, I feel turnabout is fair play.
  • All mutt users should also add the following:
    my_hdr X-WebTV-Stationery: Standard\; BGColor=black\; TextColor=black
    I'll leave the function of this one as an interesting exercise for the reader.
  • All e-mail users should have "+++ATH0" as the final line of their respective signatures.
  • X sucks. Let's hear it for Berlin! Man I wish we had NeWS source code...
  • It's cloudy today. I like clouds.

One of the more irritating things I find about advogato is all of the entries that say "Boy howdy! I sure haven't posted in a big-ol' longtime!", so I'll spare you the anguish of having to read another. I assume you're all competent enough to calculate time periods based on the date headers.


Yeah, so it's a lame little program, but I finally added opt-out to nwall. It's become more popular now that users know that people can opt out. I actually keep my mutt and irc windows in nwall -n mode to keep from having to hit ^L every time someone enters a line of nwallishness.

I plan to use some popen, fork, and dup-fu in order to cause longer messages to be formatted to 72 columns. I was going to hack in fmt code, but I figured it was just easier to fork and run it as a filter. I figure I'll also require users to hit return twice in order to send a message. I imagine that will encourage longer uninterrupted trains of thought, and won't give you the massive asynchronous confusion headache that IRC causes.

Kernel Class

Well, I did a dd if=/dev/urandom of=/dev/hda bs=40960 on the box I was going to use as part of my project. I had to leave it behind. I got an extension, but now I have to get cracking and find more boxes. I may just end up using the Linux Cabal for that.


Rather belatedly, I will say a big hello and Beaujolais! to rachel. I probably won't be hanging out around there much any more, so your chances of running me over on your velocipede are rather less than they were before. Congratulations on the legality of various aspects of your life.


Would anyone else here like to be subscribed to diary-digest@advogato.org? I'd like to see a mailing list I could subscribe to in order to receive a day's digest of diary entries. Some of the HTML formatting would be lost, but I'd be happy with lynx -dump as the format (or, shudder multipart-alternative).

I don't always make it to the site, and e-mail is just about the only thing I do regularly any more.


I dragged out an old utility I wrote last year and fixed up some of the bugs. nwall is a version of wall that uses GNU readline and sends text one line at a time. It's sort of like IRC for the local system. It's quite handy, and it logs everying to /var/log/nwall.log so you can catch up.


Elise has been bugging me to update my advogato diary, and I told her to write an entry and I'd put it in here. She hasn't done so, so I think I can avoid her nagging me to do my kernel class homework for a while.

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

4 older entries...

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!