Bad, interface, bad!

Why do the clever people at Microsoft persist in labelling their buttons with “Ok” and “Cancel”, even when these words have almost nothing to do with the actions that will be performed when such a button is clicked? Take this dialogue for instance (I got to look at it many times as I was debugging an ITK memory allocation error with 700MB of data in memory):

It would be fantastic if one of the brightsparks up at Redmond suggested: “Hey boys, why don’t we rather label those buttons ‘Terminate’ and ‘Debug’?!” But they probably won’t, as labelling buttons with descriptive verbs is Apple territory.

Read More

My ADSL gets another upgrade

It seems that (finally) my ADSL will also be upgraded at the beginning of April. The monthly fee stays the same, but my unlimited 1.5Mbit/s down and 256 Kbit/s up will be changed to an unlimited 2Mbit/s down and 1 Mbit/s up connection. I was quite happy with my download bandwidth, but the upload was getting a bit restrictive.

Now I’ll be able to upload home-made porn much faster to the pay-per-view porn site that I run.

Read More

Prisoners are allowed to vote, I’m not

South Africa is a great country, but sometimes things can be completely crazy. It turns out that even prisoners can vote in the upcoming general election (it’s their constitutional right, apparently), but that I can’t, as I am working in a foreign country. Why are my constitutional rights considered less important? Is it because I don’t steal and pillage in my own country but earn a salary elsewhere?

I’m just wondering.

Read More

Python new-style object method resolution order

Caveat emptor! Due to the diamond-like inheritance structures frequently seen with new-style Python objects (i.e. all objects are derived from the “object” class), the Python method resolution order (MRO) has been slightly adapted.

It used to be left-to-right, depth first. With old-style objects, this almost never caused problems. With new-style, because of the common “object” ancestor, this could cause redundant occurrences (obviously due to the diamond structure). Typically Python, this has been solved in a simple yet effective manner.

Read More

Die, filthy comment spammers!

Spammers represent the lowest form of life, as we’ve established. They also seem to think it a good idea to paste meaningless comments on one’s weblog in order to promote some other website. This weekend, I deleted about 800 of these comments from my weblog. I wish these spammers all die from some extremely painful but slow-acting disease and that they also realise exactly why this is happening to them.

Read More

Converting VCARD to LDIF

So, you want to export all your addresses from evolution (which I use at work) and to import those addresses into your Mozilla Mail (or Thunderbird) at home. Once again, the software really bites. Evolution is too damn retarded to export anything else than VCARD (VCF) files. Mozilla Mail can import CSV (comma-delimited) or LDIF files.

Fortunately, there’s vcf2ldif. It’s far from perfect, but it’s miles better than nothing. Oh, BTW, this will probably segfault on your evolution VCARD file. I bashed its head in with my trusty gdb (a “debugger” to the less refined readers) and this patch is the result.

Read More

Andrew October threatens me with legal action!

Dear friends,

In December 14 of 2003, I read an on-line article that made me quite angry. In short, the article told the story of the time-honoured tradition where kids are encouraged to write letters to Father Christmas (or Santa Claus). The Post Office in South Africa had made an address available to which children could send their christmas lists. Andrew October, a South African journalist, lodged a formal complaint and claimed that this could “break the fragile spirits” of South African children.

Read More

That laptop that you were going to buy me

You do remember that laptop that you were going to buy for me? I’ve changed my mind as to which laptop I want. I would rather fancy a fully-configured Samsung X10, thanks. That would be a 1.7GHz Centrino, 1G of RAM, 80G hard drive and the 8-hour (!) battery, all in a gloriously thin and light 1.8kg package.

Click here and drool.

Read More