A small user interface suggestion

Your button for 'mark all items as read' should not be rightnext to the button for 'advance to next unread item'. Liferea , I'm looking at you .

(Fortunately it was not a feed with a lot of unread or updateditems. I think.)


Weekly spam summary on May 13th, 2006

Unfortunately, the SMTP frontend died shortly after midnight onTuesday morning, so some of the connection statistics are missingabout 2.6 days. Given that, this week we:

  • got 11,652 messages from 229 different IP addresses.
  • handled 16,296 sessions from 808 different IP addresses.
  • received 110,313 connections from at least 35,408 different IPaddresses since early Tuesday morning.
  • hit a highwater of 11 connections being

Absolute versus relative URLs in syndication feeds

I just changed DWiki to generate absolute URLs for the '(N comments)'links at the bottom of entries in my Atom syndication feeds, instead ofthe absolute path URLs it used to generate (URLs without the https://host/portion) . This scrubs out the last non-absolute URLs in my syndicationfeed; URLs in the text of entries in the feed have always been absolute,because I'm cautious and cynical.

In theory absolute URLs are unnecessary in Atom entries, because Atomhas


Safely updating Unix files

Tim Bray provides Apple some instructions onhow to update files containing important data (like iCal calendars). Hisdirections are fine at a high level, but they're actually not quitedetailed enough to implement from.

So here's how you safely update Unix files:

  1. create a new scratch file in the same directory as the target file(ideally mode 0600).
  2. write the data to it; optionally fsync() ; optionally verify thedata.
  3. copy the current version's permissions to the

The problem with preforking Python network servers

I've been thinking about ways around the practical cost of forking inPython . There's two common alternatives: preforkingservers and threads in general. However, both of them have issues thatmake me unhappy with them.

The best setup for a preforking SCGI server is a central dispatcher thatparcels new connections out to a pool of worker processes; this requiresthe ability to pass file descriptors to other processes. While Unix cando this (with SCM_RIGHTS messages over Unix domain sockets), Pythondoesn'


Building a boot floppy for BIOS flashing

Part of today was arranging to flash a new BIOS on my new machine here(in the hopes that the most recent BIOS version would fix a mysteriousmemory corruption problem). This was a bunch of annoyance, because Ihad to come up with a bootable MS-DOS floppy to run Tyan's BIOS flasherprogram from. So that I don't have to go through all the work next timearound, I'm going to put what I found here.

In the old days, it was simple


The practical cost of forking in Python

I spent part of the other day working to speed up an SCGI based program, and wound up hitting avivid illustration of the practical cost of forking in Python. I'llstart with the numbers:

  • 5.3 milliseconds per request when the program forked a childto handle each request.
  • 1.1 milliseconds per request when the forking was stubbedout so each request ran in the main process.

Benchmarking was done with Apache's ab , running on the same machine(and with only one request at a


Another really stupid web spider

I have to take back what I said just the otherday about having seen the worst stealth spider I'd ever seen. The dayafter I wrote that entry, I saw a worse case.

Like the first one , they made two valid requeststo start with and then followed them up with 65 bad ones, all in thespan of 11 seconds. Also like the first one, all their requests were badbecause they couldn't deal with absolute paths in Continue reading...


Bad patch management at Sun

Today, I tried to use ssh from my Solaris test machine to anothermachine for the first time in a while (I usually push stuff the otherway):

$ scp pca-out.html linux:www/
dlopen(/usr/lib/gss/gl/mech_krb5.so): ld.so.1: ssh: fatal: /usr/lib/gss/gl/mech_krb5.so: open failed: No such file or directory
xmalloc: zero size


Link: an excerpt from On Writing Well

Here are chapters 2 through 4 of William Zinsser's On Writing Well , a classic book on, well,writing well. Just start with the opening of chapter 2 and keep going:

Clutter is the disease of American writing. We are a societystrangling in unnecessary words, circular constructions, pompousfrills and meaningless jargon.

Remind you of any computer manuals you've read recently? (Hopefully itdoes not remind you too much of WanderingThoughts . I try, but I knowI have a long way to go