altre destinazioni

ultimi post

ultimi commenti

tag principali

archivi

powered by

  • WPFrontman + WP

friends

copyright

  • © 2004-2011
    Ludovico Magnocavallo
    tutti i diritti riservati

Blackout

28 settembre 2003

Last night Italy suffered a massive blackout, so this morning I came back from the lake Maggiore to find my server dead. The server, which runs all our mail and web sites, was (yes, was) a very old Compaq Deskpro with a Celeron 300 and twin 4Gb disks configured as a software RAID-1 array. I liked it because it was a very silent and low- consumption machine with no CPU fan, and I don’t need more power than that to manage a few mailboxes, a couple of web sites, and my home LAN.

I knew it was in bad shape, but I always managed to reboot it in the past, the very few times I needed to- Today I tried everything, but the bios screen refuses to come up, and no beeps escape from the speaker at boot time.

So I wasted all day trying to let my desktop’s twin machine (an Athlon 750 PC I built three years ago) see my server’s two disks, and remount the RAID array. The new machine’s BIOS screws up the disks geometry, and if I attach both of them on the two IDE channels, I see only the first one. Weird.

So I burned a mini-CD with tomsrtbt, transferred everything on a 20Gb disk, rebuilt the array, hotraidadded one of the two 4Gb disks, reconfigured LILO, rebooted, and LILO started spitting out error messages. Reconfigured, double checked everything, LILO comes up with a checksum error. Hmmm I’m getting old for this, I remember when it was fun but it’s not anymore.

In the end I installed Grub, took the 4Gb disk off the array, fscked to death the 20Gb disk who got corrupted in the meantime, and the server is back up. Tomorrow I will buy a second 20Gb or 40Gb disk and add it to the RAID array.

The only good thing to come out of this is that I learned something more about Grub, and I really like it. If things get tough, Grub is your friend. A few useful links if you want to switch from LILO to Grub, boot a software RAID partition from Grub, convert a running system to software RAID (mainly geared towards Debian users, Slackware users may find this more useful).

My fiber optic link where this site is usually served from is still down, something to do with the Catalyst in the basement who serves the whole building, I have called a few times but all I’m getting is it will be fixed RSN. If I knew how to lockpick the rack, and I had not spent the whole day fighting disks and LILO, I would be tempted to connect my laptop and try to bring it up myself (but maybe it’s not so easy anymore to reboot a Cisco and get enable permissions). Luckily I have still my ADSL link, who promptly resumed service as soon as power came back. I have switched the DNS to the ADSL address, so this site will slowly resurface on the Web, but it will be pretty slow until the fiber optic link is working again.

Travels and Architecture

27 settembre 2003

Fori Imperiali, Rome, ca. 1993

I admit it, I’m an architect. Not only as in IT Architect or whatever my job title of the moment is, but as in builder of houses. I graduated in 1995, and though I was totally in love with architecture, for a series of coincidences and some luck I soon found myself working in IT, which had been till then little more than a hobby.

I never got back to architecture, and soon I more or less stopped studying and researching it, but in the deep recesses of my mind things continued to work, though at a different pace. So lately I’m thinking about a research project on a period of architecture I’ve always found very intriguing, and usually overlooked by historians of architecture. The project will involve heavy researching in the field, which happens to be the city where I live. So it will hopefully soon be time to pick up a camera and start wandering the streets in my free time.

Photography has been the third of my passions (read: obsessions) in the past with IT and architecture, so while I wait for my ever procrastinating self to start working on this new project, I’m digging out my old pictures to scan them and put them online as a sort of mental training.

Since they will use up bandwidth, and very few people will be interested in them, my pictures category will stay confined to a row in the right menu, without making it to my blog pages. If you’re interested, point your browser from time to time to my pictures area.

DWIM

25 settembre 2003

Sometimes being reminded of one’s ignorance is not only instructive, but funny too. In a recent message on the armedbear-j-devel mailing list in reply to a non-bug I recently submitted, Peter Graves (the J developer) used an acronym I never saw before, DWIM (Paste would retain its current DWIMish behavior…).

After replying to the message, I made a quick search on DWIMI expecting to find a reference to some arcane editor of days past, but what I found was something completely different, rooted in the world of LISP gurus

/dwim/ [acronym, "Do What I Mean" (not what I say)]

  1. Able to guess, sometimes even correctly, the result intended when bogus input was provided.
  2. The BBNLISP/INTERLISP function that attempted to accomplish this feat by correcting many of the more common errors. See hairy.
  3. Occasionally, an interjection hurled at a balky computer, especially when one senses one might be tripping over legalisms (see legalese).

Foldoc goes on to relate a notorious incident involving DWIM, which is worth reading

Warren Teitelman originally wrote DWIM to fix his typos and spelling errors, so it was somewhat idiosyncratic to his style, and would often make hash of anyone else’s typos if they were stylistically different. Some victims of DWIM thus claimed that the acronym stood for “Damn Warren’s Infernal Machine!’.

In one notorious incident, Warren added a DWIM feature to the command interpreter used at Xerox PARC. One day another hacker there typed “delete *$” to free up some disk space. (The editor there named backup files by appending “$” to the original file name, so he was trying to delete any backup files left over from old editing sessions.) It happened that there weren’t any editor backup files, so DWIM helpfully reported “*$ not found, assuming you meant ‘delete *’”. It then started to delete all the files on the disk! The hacker managed to stop it with a Vulcan nerve pinch after only a half dozen or so files were lost.

The disgruntled victim later said he had been sorely tempted to go to Warren’s office, tie Warren down in his chair in front of his workstation, and then type “delete *$” twice.

Sometimes it pays to be ignorant…..

Spambayes and Qmail

25 settembre 2003

A few days ago I finally got fed up with spam, so I decided to install a spam filter on my server. After reading around a bit, I settled on Spambayes, which (apart from being written in Python) looks a very solid and well maintained project.

I don’t use Outlook (I run Linux both on my server and on my desktops), so using Spambayes Outlook plugin was not an option. Since I’m using Maildir as the storage format for both SMTP and IMAP, I initially tried the Spambayes IMAP filter. Unfortunately, the filter is still in its early stage of development, and the IMAP protocol varies significantly among different server implementations. The main problems I had with the IMAP filter were its marking all new messages as read after processing (this is apparently due to my IMAP server lack of support for an obscure IMAP command), and its frequent crashes.

So after a few hours of monitoring the IMAP filter’s activity, I decided to change my approach. Reading around a bit, I discovered that the venerable procmail (which I used a lot until five or six years ago) now natively supports Maildirs.

A .qmail forward file, a .procmailrc recipe and a cron job later, I had a flawless Spambayes setup. In the past 3 days, Spambayes has worked admirably with minimal training, intercepting 99% of all spam and generating zero false positives. Definitely recommended.

My .qmail file simply passes everything along to procmail for delivery:

| preline /usr/bin/procmail

My .procmailrc recipe looks like this:

PATH=$HOME/bin:/usr/bin:/bin:/usr/local/bin:.
MAILDIR=$HOME/Maildir
DEFAULT=$MAILDIR/
LOGFILE=$HOME/procmail.log
LOCKFILE=$HOME/.lockmail
                                                                            
:0 fw
| /usr/bin/sb_filter.py
                                                                            
:0
* ^X-SpamBayes-Classification: spam
.INBOX.spambayes.spam/
                                                                            
:0
* ^X-SpamBayes-Classification: unsure
.INBOX.spambayes.unsure/

Notice how the trailing slash in the DEFAULT delivery identifies a Maildir storage. The rest is pretty self-explanatory, apart maybe from the folder namespace, which is the one used by default by my IMAP server:

  • the first directive instructs procmail to feed the message to sb_filter.py
  • sb_filter processes the message and adds the X-SpamBayes-Classification header with two values, the first one marking the message as either spam/ham/unsure, the second one displaying the exact numeric spam rating (from 0 to 1)
  • the second and third directives match the header on its first value for spam and unsure, and deliver the message to the appropriate Maildir
  • if a message is not matched by the second or third directive, it “falls off” the chain and gets delivered to DEFAULT, which in this case is my inbox

To train the filter, I run a cron job every half hour that looks into two Maildir folders for spam and ham messages (the following lines are ofc a single crontab line):

0,30 * * * * /usr/bin/sb_mboxtrain.py -d /home/ludo/.spambayes_hammie.db 
-g /home/ludo/Maildir/.INBOX.spambayes.train_ham/ 
-s /home/ludo/Maildir/.INBOX.spambayes.train_spam/ 
-n >/dev/null 2>&1

Meaning, every half hour cron runs sb_mboxtrain, instructing it to use the .spambayes_hammie.db (previously created with sb_filter.py -n), and to fetch ham messages from the .INBOX.spambayes.train_ham Maildir, and spam messages from the .INBOX.spambayes.train_spam Maildir.

The Maildir directories where spam/unsure messages get delivered, and where you deposit messages to train SpamBayes, can be created either from your mail client or with the command-line utility maildirmake, provided with qmail and courier.

The last piece of information you need before running this setup, is a .spambayesrc file in your home directory. Mine contains the following lines:

[Storage]
persistent_use_database = True
persistent_storage_file = ~/.spambayes_hammie.db

That’s all, efficient and reliable spam protection in 5 minutes or so.

Radios, Quality, the Internet

25 settembre 2003

*

I have always been an avid listener of Internet radios since my favourite music is very specialized (early or “soul” reggae, dub, and some jazz+r&b), and very unlikely to be broadcasted over the air, especially in Italy where I live.

Last night I had a further example of the power of Internet radios. Perugia, which is one of the Italian soccer teams I try to follow, was playing an away match vs Dundee FC. I was at my home office, which has no tv, so I looked up the Dundee FC site on Google, followed the link and connected to their local radio station live broadcast of the match (which I only half-managed to follow due to my unfamiliarty with the Scottish accent).

What struck me is that the above procedure involved almost no conscious thinking on my part. My interest about the match match was followed a few seconds later by a live commentary streaming out of my speakers.

So, coincidences being the stuff life is mostly made of, this morning I was not surprised to find in my aggregator a new entry on Tim Bray’s blog on Radio, pointing to Doc Searls’ The Continuing Death of Radio as Usual.

Doc Searls makes a few interesting points, lamenting the low quality of radio receivers (AM in cars, FM at home), the slow death of over-the-air broadcasting, and IP broadcasting as the future of the Radio.

Not that it matters to anyone, but I agree with everything he writes, except his statement that There’s almost no way to get a good AM radio anymore, even if you want one.

If you don’t need to integrate a radio receiver with fancy stuff like a home theatre, or distribute its audio signal throughout a house, there are plenty of excellent radios out there. They are also pretty cheap, have better audio quality than most expensive stereo equipment available on the market, are superbly good looking, and will keep their value well. The picture above should give you a clear idea of what I’m saying.

It shows a Grundig 60s console stereo set, including AM and FM radio, an equalizer, a superb antenna, four speakers, and a turntable. All integrated into a handmade wood piece of furniture. We bought a similar one from the late 50s a few months ago for less than 300 euro, and its tuning and sound qualities are excellent. Of course, sound quality is no surprise since radios from this period use tube amplifiers.

HTTP proxies

24 settembre 2003

Alan Kennedy has just announced a list of Python-based HTTP proxies, a few of them may come handy when developing web applications.

And if you’re wondering what I’m doing sitting in front of my computer at this hour, well this is one of those nights where I just can’t get asleep.

Combining Docbook-generated chunked HTML

19 settembre 2003

cover

The book Creating Applications With Mozilla is freely available at mozdev, but unfortunately it only comes as a set of HTML pages (or at least that’s what I was able to find).

Having some time to waste, I set out to combine all the HTML pages in one single file, trying to improve my understanding of the wonderful elementree and elementtidy packages along the way.

The resulting script parses the files in the (hopefully) correct order, combines their HTML body elements into a single file, and fixes the internal references to point to the correct places in the new file.

The script takes about 19 seconds to run on my crappy celeron 600 machine, and the resulting file is 1.4Mb. Given that the book seems to written in Docbook, and produced with the chunked HTML Docbook XSL stylesheet, this script may serve as a starting point to reverse-engineer Docbook-produced HTML, if you ever need to do it.

LaTeX for sanskritists

18 settembre 2003

the utf-skt TeX package Transliterated.tex example as source and PDF

A few useful links on skt-utf, an Omega TeX package that allows you to input and process Sanskrit inside LaTeX.

The skt-utf package resides at the site of the Martin-Luther-Universität Halle- Wittenberg Philosophische Fakultät Fachbereich Kunst-, Orient- und Altertumswissenschaften Institut für Indologie und Südasienwissenschaften, on a set of pages maintained by J Hanneder.

A more straightforward set of instructions for installing and using the utf-skt package can be found on the page Sanskrit Unicode Text Processing by Christian Coseru of the Australian National University. This page also covers the installation and usage of the corresponding Emacs packages.

My installation was pretty simple (I run Slackware 9.0 with Dropline Gnome)

get root privileges, then extract the package

ludo:~# tar zxvf utf-skt.tgz

find the location of your texmf-local tree

ludo:~# kpsewhich -expand-var $TEXMFLOCAL
/usr/share/texmf-local

if the directory does not exist yet, create it

ludo:~# mkdir /usr/share/texmf-local

copy the contents of the extracted archive’s texmf directory under your texmf-local tree

ludo:~# cp -R utf-skt/texmf/* /usr/share/texmf-local/

update the TeX files index

ludo:~# /usr/share/texmf/bin/texhash

The installation is now complete, let’s revert back to a normal system user to test the package, using the example documents contained in the utf-skt/user/examples directory extracted from the archive.

Before starting, it will be useful to note that utf-skt is an Omega package (Omega is a TeX extension “designed for the typesetting of all the world’s languages”), and so the commands used to generate .dvi files from the .tex sources are different from standard LaTeX. Instead of latex we will need to use lambda, instead of dvips odvips.

Let’s create a PDF file from the Transliterated.tex example file (I only list the commands, without their output):

ludo:~/download/skt/utf-skt/user/examples$ lambda Transliterated.tex
ludo:~/download/skt/utf-skt/user/examples$ lambda Transliterated.tex
ludo:~/download/skt/utf-skt/user/examples$ odvips Transliterated.dvi
ludo:~/download/skt/utf-skt/user/examples$ ps2pdf Transliterated.ps

Supposing you got no errors (due to problems with your TeX or utf-skt installations), you should now have a Transliterated.pdf file. If you open the file in Acrobat Reader though, you will notice that the fonts are all blurred. The PDF will print ok, but reading it on-screen is a pain. This is due to dvips including bitmap versions of the fonts used in the document, instead of their outlines.

After a bit of digging around in Google, and experimenting with different solutions to this problem, I found a thread in the debian-users list that worked (keep in mind I’m a novice TeX user, so other solutions may be better for different setups, etc.):

In your home directory, make (or modify it if it already exists) a file 
named .dvipsrc which must contain the lines: 
    p+ psfonts.cmz
    p+ psfonts.amz

 Make sure that the LaTeX preamble of your LyX file (or the part before 
begin{document} if you are using straight LaTeX files) contains: 
    usepackage[T1]{fontenc}
    usepackage{ae,aecompl}

Re-running odvips and ps2pdf the resulting PDF looks as in the image above. The document source in the image is opened in Gnome 2.4′s gedit.