Older blog entries for crackmonkey (starting at number 18)

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.

Hack-musings

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.
Lag

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.

Nwall

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.

Rachel

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.

Meta

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.

nwall

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.

Elisix

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.

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