Older blog entries for crackmonkey (starting at number 17)

Well, I must say that I learned a good lesson while setting up Badvogato: when playing with modules, don't do /etc/init.d/apache reload! It turns out (supposedly) that this was what lead to my memory leak problems. I was frustrated with the lag involved in doing a restart, and would edit, make, and reload in a rather swift cycle.

So, it would appear that the proper thing to do would be to make sure that apache totally surrenders core and then begins afresh, as it's tough to swap out all kerbillion apache processes when they gobble up all your RAM. I'm considering looking into a PAM rss limitation or something to keep any one user from getting more than 90% of core.

Blah, so in a few hours someone will probably reboot the badvogato box, and it'll be up and running smoothly.

Oh yes, and I only just got the "virgule" joke. In French, "virgule" is the word for "/". mod_virgule:advogato::slashcode:slashdot

23 Jan 2001 (updated 23 Jan 2001 at 03:20 UTC) »

I have moved on from advogato, and am now working on Badvogato, instead. I wish you all well.

Update: Well, it looks like a runaway apache process has eaten up badvogato's system resources, so it'll be several hours before I can get it back up again. Fuq.

Well, it has been quite a while since I made an entry in here. Last night was CrackMonkey Night at Zeitgeist (a great old biker bar in the Mission neighborhood that is now a haven for bicycle couriers). rachel showed up, and we managed to summon both Kurt Kobain and The Tamale Lady, though we failed to summon any tamales themselves.

Rachel hit on the bright idea that we should use some of the artist gallery spaces to hold CABAL-style meetings and installfests. San Francisco may have a proper user community space after all!

I'm actually typing this in using mozilla M17, which is frustrating, as I'm used to lynx, which allows me to launch $EDITOR in any multi-line text input widget. This little box is not particularly friendly.

It was good to finally meet Raph at the Printing Summit a couple weeks ago. I learned more about what you can do with multiple alpha channels than I would have thought necessary. Color management is hard!

Seth just found a bug in nwall the other night. It turns out that the ttymsg code I used was written under the assumption that the process using it would exit quickly, letting the fork()ed I/O processes get cleaned up by init.

That means there was no wait() anywhere! Since the ttymsg() function used by wall, write, and talkd forks off a child whenever writing to a tty would block, it was creating a zombie process every time we typed in a line! These zombies built up to the point where nobody could fork off any new processes. Exiting nwall orphaned them, letting init do a collossal clean-up job.

Seth suggested that I use wait3 or wait4, but I wanted to be all warm and fuzzy and POSIX-compliant, so I suggested waitpid(). Seth came up with the call before I could, so the ttymsg code in nwall now contains while(waitpid(0, NULL, WNOHANG)) ; in the parent section.

Of course, the thing I don't understand is why this was never caught, since the write program could potentially suffer the same problem.

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.

8 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!