27/02/2005

I think I have Tourettes because I have this constant urge to go COCK ARSE CUNT TITS SHIT FUCK WANK MUFF SLUT WHORE

Yeah this is another back-dated update, and I'm going to stop pointing this out now, it should be obvious which one will be the first live update, it'll be the one at the top of the page when I PUT THIS SHIT BACK ON THE INTERNET

Metamorphosis 10

Once again I found myself in the Union drunk off my arse listening to various forms of shitty dance music and trying to get a decent amount of dancefloor space, or maybe even a girl (yeah, right.) They didn't even have any drum and bass. Come on, guys, I've been to like six of these things and you always have drum and bass. On the other hand, unlike last year it meant I didn't get left behind by the people I went with because they're faggots who can't keep up with 174BPM.

Other than that I was determined to make some effort at talking to sluts, or "girls" as most people seem to call them. This was met with mixed success. As in, I was successful in speaking to them, but not successful in stopping them avoid eye contact, or run away, or whatever. In particular I managed to hug this girl in the queue after the tiringly predictable fire alarm, but that went quickly downhill after I found out what her name was.

Oh and immediately before that there was this fat girl in front of me being given a piggyback, she had low-slung trousers on so I took a pencil and attempted to write slogans on her enormous rippling backside, but they didn't turn out.

index.cgi

Okay you may be wondering what the hell is taking me so long getting this server thing done. Once I'd done my traffic shaping I set about installing Apache - well, Apache 2, in fact, I have no particular reason to stick with 1.3 - and reading all the documentation on how to configure it. This might seem like a trivial thing, you just apt-get it, but since it's user-visible I have to get it just right. Also, I can't go off writing web scripts without being sure that their inevitable bugs are in fact their fault and aren't coming from the server setup underneath them.

It initially took about a week. I had the vhosts working the way I wanted, the server successfully executing CGI scripts, enough knowledge about perl's CGI.pm to get started, and, ultimately, this page back up. However, it was a hacked-up, all-in-one executable named index.cgi. This was a) huge b) slow c) ugly d) in many places a line-for-line conversion of the PHP scripts I'd made before and thus e) unacceptable.

So I've decided to chop it up, and learn how to do Perl modules at the same time. The PHP version was all based around one file called index.php which, depending on the query string passed to it, would include other helpers, and call hooks in them as it generated the page. I've turned this on its head and made a library module (or package or whatever) called SiteLib.pm, and a bunch of small scripts that go "use SiteLib;". They call it at various points to generate the "templated" parts of the page, then fill in the gaps.

However I feel I've rather missed the point of namespaces (packages are just namespaces, really) since it works by exporting a bunch of functions which are all called "sl_somethingorother". PHP does this sort of thing and it's ugly. So I've not really solved c), I've just replaced one sort of ugliness with another. It's mostly solved a) though, the separation of code makes it more manageable. I've solved d) by just rewriting the worst parts as I've gone along. But there's still b).

It's too slow. When you request a page you're running a whole new process. A Perl interpreter has to be loaded, the script must be compiled, executed, its response collected and served back to the client. 0.4 seconds or so per request is not a good look. Before I can release this shit to the world, I have to speed it up.

So I am investigating mod_perl, which is very complex, and the documentation, which I have only just started reading, is very hard to follow. So, it's anyone's guess how long this is going to take. And I haven't even started reimplementing SNAFU...