Licensing department

The other day I made a trip to the aforementioned department in order to renew my driver’s license (which had already expired). Not having had any interaction with them since initially obtaining my license 5 years ago, I was quite pleasantly surprised by the improvements in the meantime. A brief summary:

  • Long queue (1 hour+) for the eye test, no real surprise there.
  • The eye test is all computer-driven.
  • Your photo is taken (digitally) at the same time as the eye test; your signature is also taken down digitally using a tablet / stylus.
  • For a temporary license, you will need to supply one photo which will be affixed to the license document, but you can get the document immediately; bring the photo with you, rather than trying to have one taken on the premises.
  • Apparently you need a photocopy of your ID, which can be obtained on the premises, but it’s probably easier to bring your own.
  • Bring your own pen; if you don’t, you’ll probably have to buy one from somebody.

Note that the above applies to the Sandton / Marlboro license department in Johannesburg; YMMV in other locations.

Quote for the Day

The discovery of this reality is hindered rather than helped by belief, whether one believes in God or believes in atheism. We must make here a clear distinction between belief and faith, because, in general practice, belief has come to mean a state of mind which is almost the opposite of faith. Belief, as I use the word here, is the insistence that the truth is what one would “lief” or wish it to be. The believer will open his mind to the truth on the condition that it fits in with his preconceived ideas and wishes. Faith, on the other hand, is an unreserved opening of the mind to the truth, whatever it may turn out to be. Faith has no preconceptions; it is a plunge into the unknown. Belief clings, but faith lets go. In this sense of the word, faith is the essential virtue of science, and likewise of any religion that is not self-deception. – Alan Watts

That’s all for now, but I have a few other blog posts in the pipeline.

Capitalist what?

For some reason that I cannot fathom, I am currently #9 on a Google search for capitalist pigs, and #7 for “capitalist pigs”. I first noticed this a couple of weeks back, but I now find that Google searches for capitalist pigs are the leading source of visits to this blog. WTF? I’m guessing that someone googlebombed me using another URL that redirects to my website; anyone have any ideas how to track this down? I honestly don’t really care about it, except now I’m so damned curious that I’m about to die of curiosity.

Steam Fail

So… I can buy the package for $11.99, or just buy the individual games for $9.98. WTF?


This isn’t meant to last,

this is for right now.

— Nine Inch Nails, Last

Spent several hours this morning importing my old old blog posts into Wordpress; the import is now complete. Early on in the life of the blog, I began generating an Atom feed directly from my hand-written XHTML; later on, I changed my markup to use the hAtom microformat, and ditched my custom transform in favour of hAtom2Atom. I used this again to run a conversion over each month’s posts, although I had to edit the oldest into hAtom form since they were using a custom class schema; just a trivial matter of assigning the correct classes. I then had to remove the doctype declaration from each page, because Saxon was failing to fetch the XHTMTL 1.1 DTD for some reason; since the DTD was completely unnecessary for this transform, I decided it would be easier to just ditch it.

Now that I had the ability to generate an Atom feed for each page, the next trick was importing this into Wordpress somehow. Wordpress supports importing an RSS 2.0 feed, so I tracked down another transform to convert the Atom to RSS 2.0: atom2rss-exslt.xsl. After hacking it slightly to run on Saxon 6 (the decode-uri function detection doesn’t work, since it checks for a later version of the Saxon processor), I had what looked like good RSS 2.0 output, which I imported. Unfortunately, this didn’t work out so well; the tags weren’t imported, and Wordpress inserts a <br> tag for each newline; since the output of the transform had a bunch of extraneous newlines, this meant that my posts were now littered with extraneous line breaks. I edited the transform to get rid of the newlines, but still wasn’t very happy with this.

So… plan B! Wordpress has an import/export format called Wordpress eXtended RSS; basically, RSS 2.0 plus a whole whack of custom Wordpress extension elements. I spent around an hour hacking the transform to generate WXR output. This was even more painful than it sounds; for example, encoded content is “supported” by stripping any CDATA section start/end markers, and then importing the content as-is. Even if there wasn’t a CDATA section. I guess they only care about reading their own output.

As a final touch, I hacked the transform a little more to insert an invisible anchor tag at the beginning of each post so that even my old permalinks will work. This was fortunately quite easy to do, since my old URL scheme was year/month, which happens to be supported by Wordpress too; I just needed the anchors so that you would get taken to the correct post.

Netflow traffic monitoring on Debian

Thanks to some trailblazing by Jonathan, I was able to set this up quickly the other day, and I thought I’d lay out the process to make it easier for anyone else trying to do the same thing.

First up, we need a netflow emitter and collector:

# aptitude install fprobe-ulog nfdump

Note that the default collector address/port in the fprobe-ulog configuration does not match the default port for nfcapd; you’ll probably want to enter “localhost:9995″ when prompted by debconf. Next, we’ll set nfcapd up by editing /etc/default/nfdump to look like this:



We override the default DAEMON_ARGS to add some important options. -b ensures that we only bind to localhost; -S 1 selects the year/month/day subdirectory hierarchy for the data files that get written out, which makes it easier to select a particular date range when using nfdump later.

Next, we need to add iptables rules to send traffic to ULOG so that fprobe-ulog can process it. Exactly how you accomplish this depends on what you’re using to set up your firewall rules, and what traffic you want to monitor; assuming everything, you would want rules like these:

# iptables -A INPUT -j ULOG –ulog-qthreshold 50 –ulog-cprange 48

# iptables -A FORWARD -j ULOG –ulog-qthreshold 50 –ulog-cprange 48

# iptables -A OUTPUT -j ULOG –ulog-qthreshold 50 –ulog-cprange 48

You should probably put them right at the end of the INPUT/FORWARD/OUTPUT chains, or wherever you ACCEPT traffic.

Make sure both daemons are started:

# invoke-rc.d fprobe-ulog start

# invoke-rc.d nfdump start

Now your flows are hopefully being logged. The data will only actually be written out to disk every 5 minutes, or so; grab a cup of coffee, and then try this command when you get back:

# nfdump -R /var/cache/nfdump -s port/bytes

You should get a list of the top 10 flows grouped by port, and sorted by bytes transferred. If there aren’t any results at all, make sure that your ULOG rules are actually running, by inspecting the counters in the output of iptables -nvL.

Hooray, you’re done! Read nfdump(1) for more information, including how to specify filters; you now have the ability to drill down into your traffic data in a very versatile way.

EDIT: Remove reference to lenny; I actually did this on sid.

Ashes in the Fall

Hope lies in the rubble of the rich fortress,

taking today what tomorrow never brings.

This is the new sound,

just like the old sound,

just like the noose wound,

over the new ground.

— Rage Against The Machine, Ashes in the Fall

NOTE: If you are reading this, you are on my new / current blog. Congratulations!

So, uh, I have a new blog. Again. Yes, I know.

Apparently it’s just under two years since the last time I did this. Really? It seems like it should have been a lot longer than that. Oh well. Like that move, this one sucks in some ways; for one, there’s no way to redirect my Vox blog to anything except another Vox blog. Also, I’ve been primarily linking to my Vox blog for the last year or two, and so there are a lot of hyperlinks scattered around that I’ll have to try to change. Ugh.

It’s not all bad, though. I was able to import all of the content from my Vox blog. I’m also back on my own domain (and here to stay, I would imagine), and I’m even back at the same URL as my pre-Vox blog (the one with handwritten XHTML). I haven’t yet imported the content from my pre-Vox blog, but that shouldn’t be too hard. I also have much more control over the blog; while I’m unlikely to be touching PHP code any time soon, Wordpress + plugins is fairly configurable and manipulable on its own. I also plan to edit the theme templates so the output is marked up with hAtom, but that should be pretty easy too.

If you’re wondering what’s up with this blog, it’s running on a Linode I deployed just for this purpose. Wordpress is running on PHP-FPM behind nginx, using a MySQL database; the whole thing didn’t take all that long to setup (although I had some help), and since there’s nothing else running on the VM, I don’t have to worry too much if it goes insane and consumes all available resources or something.

I’m running a number of plugins:

Anyhow, so there you have it. Don’t forget to update your subscriptions; although, since my new feed is at the same location as my pre-Vox feed, some of you might not need to. If you’re looking for my old blog’s content, then sorry; it’s currently unavailable. I do intend to import the content, as well as get the old URLs working again, but I decided to rather get this online right away than wait until I sorted out all the details.

EDIT: I forgot to mention that thanks needs to go to Pierre Nel; without his invaluable assistance, this whole process would have been far more painful

Time passes

A suited man smiled, said:
"It's just a matter of time;
you can have the world at your feet by tomorrow,
just sign on this line."

Hold tight, limelight;
approaching the paramount,
with the sun in our eyes;
fearing family ties, legalise, compromise.

To the practical observer,
it's just a matter of time:
you can deviate from the commonplace,
only to fall back in line.

I understand mine's a risky plan,
and your system can't miss;
but is security after all
a cause or symptom of happiness?

— Dream Theater, Only a Matter of Time

Wow, it's been far too long since my last post; and since I left things on such a dismal note, I decided to bang out a quick post.

It will probably come as no surprise to hear that I was way too busy and stressed out around the time of my last post. Since then, I've not actually paid much attention to matters of health at all, and they haven't intruded on me either; I've also spent the last few weeks with my family in Cape Town, doing pretty much nothing, just getting away from it all. Having a chance to step back, relax, and look at things from a clear perspective has allowed me to make some decisions which will probably ease my stress levels in the future, although I can't really discuss those here and now.

In other news, I've finally gotten around to the last step of migrating Dosage development to Launchpad: the source repository has now been converted to bzr. I've also started the process of going through the outstanding contributions and either integrating or discarding them, so I guess you could call that progress.

Jonathan has been doing some awesome work on a new tab widget in Methanal, which will serve as a vastly improved replacement for Nevow's "tabbed pane" widget, as soon as somebody (ie. me) gets around to reviewing the code.

And… more later.

Storm clouds

    Tags : 

On Friday, September 12, 2009, I awoke with a slight sensation of partial numbness / tingling on the underside of my right foot. I didn't think much of it at first, naturally assuming that I had just slept on my leg or something like that, and expecting the sensation to go away shortly. However, instead of going away, it in fact began to grow worse, spreading to parts of my right side all the way from the neck down. By the time Monday rolled around, I was convinced that something was definitely not right; due to my history with my mother's illness, Multiple Sclerosis was pretty much the first thing that popped into my head, but of course I knew that there were a variety of other possibilities (such as a compressed nerve).

I made an appointment to see my GP, who examined me, but couldn't find anything particularly wrong; the only thing out of place was an elevated blood pressure. He agreed with me that the symptoms were potentially concerning, and admitted that hypertension was an unlikely cause of these particular symptoms, but prescribed indapamide for it anyway, with instructions to notify him if there was any change in the presentation of the symptoms, and otherwise just see how things go. Over the course of the next week, there was not much change in the symptoms; they seemed to vary in intensity and coverage over time, but becoming a little more pronounced. The sensation on the right side of my chest/stomach was particularly irritating and disruptive to my sleep: when lying down, it felt as if I couldn't breathe properly due to my chest not moving, even though there was no such actual obstruction — a rather disconcerting sensation.

The following Monday (September 22), as the symptoms had shown no signs of improvement, I contacted my GP again; he requested that I have my blood pressure tested again, to see if that had gone down yet. Strangely enough, it hadn't — the reading came in at 176/96 — but he referred me to a neurologist anyway, with an appointment arranged for the next day. The neurologist ran me through a more comprehensive series of tests, checking for loss of sensation, abnormal reactions, and so on, but also couldn't find anything specific; all of the affected areas felt "funny", but there was no loss of actual sensation, and all of my nervous responses were normal. He did check my blood pressure again, which was at around 160/80, but he suggested that this was probably just due to stress / anxiety, and that it would normalise after the whole situation was dealt with. His final conclusion was the most likely cause was something transient that would go away by itself; possibly a side-effect of a viral infection, just plain stress / anxiety, or various other possibilities along those lines. However, he wanted to send me for an MRI "just to be safe", even though he expected the results to come back clear, and I agreed to the procedure.

The MRI was two days later; not having been for an MRI before, I was not sure exactly what to expect, but the whole experience turned out to be rather boring. For one thing, I arrived around 15 minutes early for the appointment, only to find that they were running around 20 minutes late, so I spent a good while waiting around. The MRI itself consists of lying down on a tray of sorts, being instructed not to move your head at all, and then being slid into the machine itself for a good 30 minutes. I was somewhat bemused when they hauled me out halfway through to inject the Gadolinium dye (used to increase contrast on the scan), with the nurse giving me strict instructions not to move my head, and then quizzing me about which side my veins were better on as she attempted to find one in order to perform the injection. (How the heck would I know? I can't even see my veins right now!)

I received a call from the neurologist's rooms the following week to set up a follow-up appointment to discuss the results of the MRI. I figured this was just standard operating procedure, but once I arrived for the appointment and he began easing very slowly into the subject of the results, I immediately figured something had to be up, and indeed something was up. The MRI showed several spots of intensity, "compatible with active demyelinating / M.S plaques" thus indicating lesions and associated swelling in the surrounding area, and suggesting that I had in fact undergone several attacks / relapses prior to this event without even realising it.

According to the neurologist, the diagnostic criteria for Multiple Sclerosis would still require an additional "event"; either another presentation of symptoms consistent with a second relapse, or a subsequent MRI displaying further progression of the disease, but basically the reality was that I have MS. Some subsequent research indicates that in the (extremely unlikely) event that there is no further progression, this would be known as Clinically isolated syndrome. He then ran through the possibilities for treatment; at this stage, that basically amounts to the beta-interferon-related drugs, which do not cure the disease, but have a modest effect in slowing the progression of the disease. He also mentioned that various next-generation drugs are likely to become available within the next several years, which will likely be even more effective at slowing the progression. He also advised me to go onto the standard post-relapse treatment, which is a pulse of cortisone administered intravenously; this has no effect on the long-term progression of the disease, merely assisting with the short-term recovery, but he suggested that it would be easier to get approval from my medical aid for chronic medication if we were doing everything "by the book".

(One amusing part of this was receiving my copy of the MRI results in one of those huge X-ray print envelopes… containing nothing but a CD with the actual imagery, and an A4 printout with the radiologist's report, leaving a whole lot of empty space in the envelope.)

As there is, as yet, no long-term data on the comparative effectiveness of the different drugs that are available; the first of them was only approved in the USA in around 1996, and of course it took longer than that for medical aids etc. to begin paying for it, so most people have only had access to the drugs for around 5 years, probably 10 years at the most. I decided to go with Avonex solely on the basis of it being a once-a-week injection, as opposed to the others which require more frequent injection; although, as an intramuscular injection, the procedure will be somewhat more unpleasant. As of this writing, I am still awaiting a response/approval from the medical aid for chronic medication for MS.

My prognosis is currently reasonably positive; as the current treatments act to slow the progression of the disease, beginning treatment as early as possible in the course of the disease is obviously crucial to success of the treatment. With luck, the disease will be slowed to such a degree that by the time the symptoms become severe, I will already be dying of something else anyway. One interesting fact is that an early age at onset is correlated with a more positive progression of the disease, so my relatively young age at this point in time is not necessarily a bad thing. However, there's a huge degree of uncertainty in all of this, so the only real way to know how things will turn out is to wait and see.

Meteorological History

    Tags : 

Once upon a time, a South African missionary couple moved to the beautiful country of Zimbabwe. In total, they would come together three times to recreate the miracle of life, determined that their children should grow up amidst this precious Jewel of Africa, raised within an environment of love and joy. Alas, this story does not end with "…and they all lived happily ever after"; the first in a series of many tragedies was to strike in 1989. Merle Ann Jeanette Seligmann (Kilroe-Smith), a devoted mother and loving wife, began to experience double-vision unexpectedly whilst driving. After going before the usual procession of doctors and specialists, a neurological diagnosis of Multiple Sclerosis was finally made. As is typical of the disease, the initial symptoms disappeared not long after they presented, but the ever-present storm clouds could now be seen looming on the horizon, a Sword of Damocles inescapably threatening to drop down sooner or later.

The next in the series was to strike in 1994. Karl Johan Seligmann, a devoted father and loving husband, made the fatal decision to advance his return home to Zimbabwe from South Africa by one day; while driving through the area near Messina, another driver lost control of his car, causing a collision between the two vehicles. It would later be determined that while all of the identifying information provided by the responsible driver (ID, vehicle registration number, and so on) was fraudulent. Johan was rushed to Milpark hospital, where despite having sustained a dangerous head wound, he showed great promise of recovery. However, in June 1994, Johan passed away from a pulmonary embolism caused by a blood clot that travelled into the lungs; physicians had been hesitant to safeguard against such an event through the use of anticoagulants, due to the risk of reopening the equally dangerous head wound.

Meanwhile, time had passed on, and the world with it; the family chose to move to South Africa at the end of 1994. Merle's disease continued to progress; along with various other sensory malfunction, her ataxia began to intensify until she could not drive, nor walk, nor even crawl any longer. Throughout all of these experiences, the bonds between the remaining family members continued to grow and intensify, rather than showing any sign of weakening or fracturing. The ultimate test came when the decision was made to move Merle into a nursing home, as continuing care for her at home was no longer practical. This resulted in the physical break-up of the family; the children went to live out their lives with various different relatives. The bonds between them remained strong as ever, however; and they soon began to show their true capabilities as they began to carve out lives of their own, despite the adversarial odds they were faced with.

This chapter was finally concluded in June 2003; Merle passed away due to MS-related complications, an intact personality and intelligent mind trapped within the prison of her own body, and even her own brain, unable to communicate at all with all but those closest to her. Left behind were the ultimate product of her incredible yet doomed marriage union: their three beautiful and brilliant children, Tristan, Tiffany, and William.