Musings
muse: to turn something over in the mind meditatively and often inconclusively
Geocomputing

Pretty odd session last night. It consisted of three distinct segments but for the life of me I can't remember the second one. Perhaps it'll come back to me.

The first involved a fairly lengthy, somewhat technical session with Subversion. In particular I seemed to be moving repository contents around like there was no tomorrow. This comes as no surprise, since a lot of my focus recently has been on cleaning up our repository at work. At some point it degenerated into a point for point comparison of Perforce and Subversion.

The third segment saw a gathering of schoolkids. Included in amongst this lot was yours truly. I think it was supposed to represent my matric year (a reunion is in the works and that may have sparked this, but it gets weirder). We'd been gathered together by the geography (okay..) and geopolitics (huh?) teachers to fill out some questionnaires. Apparently you can do that verbally in a large group.

After much discussion the group consensus seemed to consist of two requirements:


  1. Don't tease us if we have knobbly knees.

  2. We should be allowed to wear no shoes.

Posted at 08:52 AM

Smarts versus experience

A brief discussion around the version management of an external project we're dependent on crystallized something for me today.

For some things smarts just isn't enough. Sometimes, smarts isn't even necessary. There is a whole class of problems that are better solved by leaning on experience.

As a concrete example take versioning your source code. Hopefully, it will eventually end up installed in multiple locations. At this point it's going to be important to be able to identify which version is running at a given location (so you can fix it), and to be able to get new versions onto a system (so you can upgrade).

The project I mentioned has deployed version 1.0. Their source code repository currently contains a working branch who's head revision doesn't build and an empty release branch. So we're not really sure where the mythical 1.0 source code lives. It was probably built at a specific revision of the working branch, but which revision is anyone's guess.

From this it seems like, although they're smart, these guys have never been involved in a really long running project. One where multiple versions have to be maintained concurrently. Experience tells me that it's really, really important to be able to do simple things like point at the canonical source code for version 1.0, if only so you can fix the right version when it cocks up and spraypaints someone's poodle deep mauve instead of orange (like they asked).

I feel a bit like some of the "discussions" I've been involved in of late stem from a very theoretical viewpoint, backed by little or no real experience in the problem domain. I don't claim to be the most experienced guy on the block, and by no means do I expect to somehow miraculously avoid any mistakes, but I really feel like I've got enough experience to back up why I'm doing things the way I'm doing them. It won't be perfect, but it has the benefit of having been through the flourmill a few dozen times.

Posted at 07:50 PM

Men and dates

There's a fairly common misconception about men and remembering (or more often failing to remember) special dates. Birthdays and anniversaries in particular. Over the years men have taken a lot of flak as a result.

Why do I think it's a misconception though? Don't get me wrong. There's enough anecdotal evidence so that it's clearly something they get wrong often. But I don't think it's because they don't remember dates. Sure a lot of men (myself included) seem to struggle with dates. But I suspect that if you looked at both genders, or if you looked at the different things people struggle with (names, faces, occupations, fighting off a dozen ninjas with only a broomstick) then you'd find that struggling to remember dates doesn't stand out significantly along either axis.

I think it's more the case that men are not well rooted in a temporal sense. Nine days out of ten I have no idea what month it is, let alone what day of the month it is. I just don't carry around a sense of "when" I am. Women seem more organised as a species (haven't you heard? Men are from Mars ...). This is backed up by mounds of empirical evidence. I suspect this is a by product of having a better sense of "when" they are than men. Another side-effect is that they are better at remembering your birthday.

Let's face it. If you don't know what today's date is then you're probably not going to remember that it's special.

Posted at 10:53 PM

Adulthood

amazon_lunch_small.jpg We had our end of year "function" today. An immense quantity of incredibly good food at the Cape Courtyard in Hout Bay. It's been a long time since I've been unable to move because of the amount of food in my stomach. Painfully so.

The guys I work with are a bit older than me, and as a result there was an excess of little people. I was saying to Riel that this is probably the first gathering where I felt obviously like one of the adults. I think it was probably because the kids matched the "grownups" in sheer numbers and I wasn't "at their table".

It's always interesting to watch other people's kids, especially if you know them (the other people, not their kids) reasonably well. It's amazing how quickly a child's parentage shows through. I'm also looking for evidence to corroborate my theory about adulthood: that it's largely a myth and everyone who might fall into this category is faking it hoping no-one else will notice.

Significant others met the "guys from the office" for the first time (for the most part) today and can finally put a face to the crazy nutter in the corner office.

It's been interesting watching this lot in particular because in many respects they're a bit further down a road I'm starting out on and that's not by chance: we're all doing much the same thing because we are similar in many respects. So in a way I view it as a possible window on me a few years from now.

Posted at 08:29 PM

Firepower

Last night I found myself defending a small village, armed with a high calibre handgun with an infrared night-scope, fighting off an invasion of miniature head crabs.

Best night's sleep I've had all week.

Posted at 09:08 AM

Selling stuff for free

A convoluted dream last night, which included the following elements:

  • A flight stuck in an infinite loop. I remember walking through the same airport building over and over again. This particular airport has featured in previous dreams but it's not one I recognize.
  • Slashdot Amazon, an online service that was no longer supported but was initially started on the premise that some stuff was just too cheap to sell and so someone should give it away. A whispered voice over at some point enlightened me as to its real purpose: apparently it was actually aimed at pressuring telcos into providing the world with free airtime. No, I don't know how.
  • Repeated attempts to deal with a corrupt sparse loopback file that I spent yesterday building. For some reason a few blocks towards the end of the file decided they hadn't been formatted and I spent a large part of my restless night trying to correct this, only to discover that the error message was informational only and could safely be ignored.
  • My brother and a female friend of his staying with me. I remember agonizing over what I was going to wear in the morning because I couldn't decide what the temperature outside was going to be and I didn't want to dress too warmly.

Actually, the last part of the dream was given over almost entirely to my brother and his guest. At some point the mechanics of dream land allowed a complete stranger into the house to make small talk. He guessed where she was from and that she spoke two languages (having eliminated the third language spoken in her country of origin because she just didn't look like a speaker of that language). She was surprised he'd guessed and expressed this sentiment. That was the last we saw of him.

We got talking about this language and it turned out to be a new flavour of an existing programming language, with support added for generics. I remember going into excruitiating detail about the language with her while she expressed fears that having written her code in this language was going to make it harder to plug into Amazon's online services. She was particularly concerned about backwards compatibility.

I was concerned about the weather.

Posted at 09:01 AM

Never proof read your own work

What an incredibly frustrating day. I wasted almost an entire day figuring out why my Xen kernel wouldn't boot only to finally have someone else glance over my grub.conf file and point out a stupid typo.

Bah. I swear I checked that file line by line a dozen or more times over the course of the day.

Double bah.

Posted at 07:58 PM

I beg your pardon?

I dreamed last night that I was living with Meredith Brooks and our child.

Eksqueeze me?

Posted at 09:04 AM

Fresh tar

franschoek_pass_small.jpg Andy and I headed out to Franschoek again today. We were going to meet up with a few others for lunch but an accident with a sharp kitchen knife put paid to those plans. The jury was still out (figuratively speaking) when we left but lunch was off by the time we arrived, so we lunch alone (inasmuch as two people can be called alone).

We took the "back" route into Franschoek, via Grabouw and crossing Theewaterskloof dam. The weather was threatening most of the way but by the time we arrived it had cleared and turned into a beautiful day. The pass has been retarred since I was last up there, turning it into an even more enjoyable ride.

The only "incident" on the way out involved something smaller than a kestrel but larger than a pigeon trying to occupy the same point in spacetime as me. I didn't get a clear look, mostly as a result of our relative velocities.

The ride back was a little windy. I still don't understand what makes the N1 and the N2 windy almost without fail. Even if the surrounding areas aren't they seem to be on the receiving end of some kind of funnel effect. It was windy enough so that a relatively boring overtaking maneuver took on a life of its own: "Yup, we'll just pass this guy. Hmmm, wind's a bit strong here. Oer, the wind's really strong here. Crap! Where the hell did that Golf come from?"

But never fear. My lightning quick reflexing (also known as my gutless survival instinct) leapt in and saved the day.

The rest of the return trip was relatively free of traffic, giving us a chance to open the bikes up. Highly recommended: survival is very therapeutic. We ended on a moment of levity: a "well endowed" biker on an absolute brute of a Hayabusa in what looked like his silk sleeping shorts. Andy and I both shared a chuckle about it when we got back. I suppose you had to be there :-)

Posted at 02:45 PM

God's Debris

Stumbled across this in an entry on Scott Adam's blog. Quite an interesting read. I recommend it.

Posted at 09:01 PM

Low flying

I managed to salvage squat this morning and was left with no option but to reinstall. I managed to get most of my system up and running as it was prior to Life's intervention and even caught up the last few day's worth of work I lost.

Despite the annoyance and lost time I quite enjoyed today. It's nice to have a well-defined set of goals where you know (to a greater degree than usual at least) what's in store and what needs to be done. It makes it so easy to get down and just focus on what's ahead. But a day like today always leaves me a little spaced out. Perhaps disoriented is a better term. It's a kind of mental analog to the effect of being surrounded by loud noises for a lengthy period of time, only to have complete silence suddenly descend.

Posted at 10:10 PM

fscked

Nein. No joy. But then after fsck had been running for a few hours I knew I was in trouble.

So now I'm the proud owner of the world's largest lost+found directory. If I've been really good this year Santa will have left one or two goodies in there for me.

Then it's a stroll down reinstallation lane.

Posted at 09:14 AM

We have angered the gods

First a burglary last week. Casualties: one dev machine. Yesterday we noticed a casualty we'd missed: a reasonably important piece in the puzzle that makes up our service.

Then a power failure on Friday. Casualty: our demo in Seattle Friday night.

Today, another power failure. Casualties: a day's worth of work on one dev machine and my primary HDD. This posting comes to you courtesy of an Ubuntu Live CD while I fsck my drive after rewriting the superblock. Hold thumbs, so far it ain't looking good.

Eish.

Posted at 05:19 PM

Born of frustration

One of the great bands (must be something in a name after all).

Eish. Work is frustrating at the moment. It's a combination of various odds and ends. Some of them are transient. Some, well it's hard to say: I suppose we'll see.

We gave an internal demo at the end of last week. My demo, everyone else's software (modulo the odds and ends I fixed/added). It didn't go fantastically, but that really wasn't too much of a surprise. A lot of our assumptions leading up to the demo didn't pan out quite as we'd hoped and the result is that we have to go back to the drawing board on a few aspects. Nothing earth shattering, but there's some work to be done. So now we have two things on the critical path (we're aiming for a public release early next year): network infrastructure and updates to various components to deal with these changes.

The frustration is that I'm not experienced enough to offer much in the way of the former (learning, but there's still a long way to go; this stuff is still out of my league). So I'm not in a position to contribute meaningfully on that front. On the software side the reasons differ, but the nett result is the same. Each of the components that make up our system have well defined owners. None of these components is large enough to make sub-division worthwhile. And we're still sufficiently disorganized so that getting involved in someone else's project is going to be difficult.

This is where I can contribute. Currently I'm putting together a new SVN repository structure, along with the associated versioning strategies. I'm hoping this will prevent all sorts of problems down the line. The truth is, this is important but not urgent. So, while everyone else is running around frantically in the face of various deadlines I feel a little like a spare wheel.

It probably doesn't help that getting the various projects into a consistent state involves its own frustrations. Inconsistencies between the various projects produce their own "challenges". These are a result of short development cycles and differing development styles so no one's at fault. Some of the software we're integrating with has it's own idiosyncrasies, which doesn't help. And everyone has their own opinions about how we should do things: we've had a few "robust" conversations recently, and I've been called anally retentive more than once ;-)

At the best of times I forget that I'm being paid to do this. At the worst of times I think we've overhired and I'm just a spare wheel.

Let's see what Wednesday brings. Third time lucky?

Posted at 08:12 PM

Alpha team: go go go!

Bloody mosquito kept me submerged just below full waking consciousness last night. This probably contributed to the "waking dream" in which I fought off the mosquito as it attempted to deploy a highly trained miniaturized team of mercenaries onto my face.

Bah.

Today I'm "substantially older" + 1.

Posted at 09:42 AM

Sony: All your souls are belong to us

Sony really stirred up a hornets' nest with their "rootkit". Serves them right but it's symptomatic of a larger problem that's looming just over the horizon: DRM. The idea seems innocuous enough: make sure that an artist's rights are protected by preventing illegal copying of their output.

Unfortunately, organizations like the RIAA and the MPAA, with their already stellar records for trampling over the rights of individuals in the name of making money, appear to be chafing at the bit to make sure you can do only what they feel is right (which usually means makes them as much moolah as possible).

But that's a whole other kettle of fish. Back to Sony and their little gift of love. The EULA attached to the CD's that contain this little bundle of joy makes for some interesting reading. I don't know how much of this could actually be enforced in a court of law (legal systems are anything but absolute: everything comes down to playing the odds) but even putting that aside there are some scary things here. Some stupid things too which probably means rather than trying to make your life as difficult as possible someone just didn't think this through.

Although, the fact that their EULA waives your right to a jury trial might be taken as an indication that somebody did think this through. It might also just be a standard clause in a whole class of legal docs that Sony based this on and it's a side-effect of cut-and-paste (or, more accurately, copy and delete-whatever-we-don't-want).

Posted at 07:12 PM

Pedro's, Saldanha Bay

bikes_saldanha_small.jpg An early start in the face of dubious weather. "Summer" means the Pegasus Sunday rides start at 8am instead of 9am.

But the weather sorted itself out (outside of Cape Town anyway) and we ended up having a pretty decent morning's ride. All told we did just over 350km (much of it, as Andy complained, being in a straight line). 17 bikes in all (more manageable than 30+ bikes but probably still a tad too many to ride in a single group). We stopped in Hopefield to fill up and kill a little time (the destination restaurant only opens at 10am).

pedros_saldanha_small.jpg Breakfast (which may as well have been lunch by the time it was served) was at Pedro's in Saldanha. This is one of the most bizarre settings I've seen in some time. Pedro's is an immense restaurant complex (there's no other word for it) with a few bars and a number of enclosed eating areas. It's also smack dab in the middle of Saldanha's harbour (which, let's face it is Saldanha) and seems completely out of place. I suspect, being the only entertainment for many miles, that Pedro's is mobbed by locals from time to time.

Breakfast was less than spectacular. The food wasn't bad but the service was terrible. First they got out order wrong which meant a delay that effectively meant our table ate alone. After correcting our order they had to bring us what we wanted sans bacon, having run out of the delicious pig meat.

Plenty of raptor activity along the route, in both directions. Dozens of Yellowbilled kites (sometimes in groups which you don't see often: they tend to be solitary hunters). A handful of hunting Blackshouldered kites and Jackal buzzards. A few lone Steppe buzzards. And a pair of Goshawks. Identification is always a challenge: it's hard enough looking straight up in a helmet at 120km/h, let alone identifying the small black speck in the sky. Trust me on this.

Posted at 03:14 PM

Lazy Saturdays

Bit of an odd day. It's been a long week preparing for a demo (which I still don't know the results of dammit) in Seattle. As a result everyone is a bit tired and I slept in this morning (the immense quantity of Sushi ingested last night may have contributed to that).

The weather's a bit murky outside and I haven't felt inspired to do anything strenuous today. Instead I've spent the day arbing around. I've put in a little time on spot (if I told you your life would be forfeit). It's coming along slowly at the moment, mostly as a result of the past few weeks of madness, but also because I'm simultaneously trying to get up to speed with ANTLR.

I've also done a little reading. Against a dark background (Iain Banks) has been a pretty enjoyable read so far, which is surprising given how unimpressed I've been with other books by this author. To cement my reputation as a nerd I've gotten most of the way through the O'Reilly Learning the bash shell. We have a significant collection of O'Reilly books at the office (one of the perks of working for Amazon). This is candy-store territory for me and I've been chewing through them as quickly as time has allowed for. This one is aimed at a somewhat more novice breed of user but even so I've learned a few new tricks. The general programmability of shells is one of the things that I enjoy about a Unix environment. I also hadn't realised just how much Perl ripped off from Bourne Shell scripting.

And I hauled out a heap of old CDs with collections of MP3s on them. My last laptop slowly ran out of space (and Otto killed my desktop a few years back so I went without a personal machine for some time) and as a result my "online" MP3 collection has slowly been whittled down to the bare essentials. This prompted a bout of nostalgic listening ("crap, I'd forgotten all about that"). A lot of this music has followed me around for the past 5 years (and no doubt will follow me to my grave). It's weird how strong my associations between memories and music are (Ben mentioned something similar applies to him and smells). Just listening to a given song puts me right back in the moment most strongly associated with it. For fun, here's a list of weird musical associations I'm carrying around:

  • No Need To Argue (the entire album) is Doom and Doom 2. I'd received the cassette (cassette!) as a birthday or Christmas gift , I forget which, and at the same time gotten hooked (or possibly rehooked) on Doom. There was just enough time between levels to flip the cassette over when it was done and so I must have listened to it a thousand times.
  • Queen's Greatest Hits is Turbo Pascal. I think at the time (ooh, about 15 years ago) I was playing with a little text based racing game.
  • 12 Inches Of Snow, as embarrassing as it may be to admit that it even featured in my chequered musical history, brings back memories of the Mandelbrot Set . I spent far too much time during high school generating fractals and trying to automate zooming in on "interesting" features after being introduced to fractals via FractInt and James Gleick's Chaos.
  • One of the Billy Joel albums (I have no idea which one), featuring songs like Honesty, Piano Man and Just the way you are, will always remind me of a holiday with my mother in Sabie (in what used to be the Eastern Transvaal). She had the album with her and it featured often enough so that it's irrevocably associated with that holiday. I remember a three legged brown and white Jack Russell and his (four legged) black and white friend adopting us for the week we were there.
  • Tracy Chapman's Why and Fast Car remind me of the house we lived in in Elise road in Randburg with Gerald, my Mother's boyfriend in the years leading up to her death.
  • .

It's a funny life.

Posted at 05:00 PM

Paranoid Rapid Eye Movement

I dreamt last night that Claire died in a hail of bullets in a robbery gone wrong and it was left to me to tell her family.

And then I discovered our offices were broken into last night.

Posted at 10:38 AM

You are the weakest link ... goodbye

I spent way too much time today (in truth over the past few days) chasing an inexplicable bug. Code I've been using (which I wrote) for weeks without any problems stopped behaving. And of course I couldn't explain it. But I knew it was my fault. It always is.

After much digging it turns out that although that code hadn't changed,
the code that ultimately provided its input had and was producing garbage. And you know what they say about garbage in ...

A common mistake I see inexperienced programmer's make is to assume it's something outside of their code. I'm not saying it's always your fault. But while hardware occasionally misbehaves, and device drivers have been written by morons in the past, and the OS itself can't be assumed to be bug-free, in general your own code has seen far less testing than any of those. It should be suspect until you have exhausted all avenues, and even then it's probably still your code.

Posted at 08:16 PM

Where in the world is JimGee?

Yup. Definitely a nerd. Soooooo nerdy it's unbelievable.

I've added a GeoURL link at the bottom of the sidebar. Unfortunately I don't have a GPS so I had to find someone else within 50km and then tweak the coordinates by hand using MapQuest until they were where I think this house is.

It's Sunday. I don't need a life.

Posted at 10:06 PM

A handful of links

In an attempt to make sure the Web really is as inter-connected as humanly possible, and so that loyal readers have even more sites to visit instead of doing any real work this week, here's a list of sites to waste some time on. Not all of these are original. Some are "rediscoveries" that are worth catching up with.

  1. Phone Swarm
  2. Exploding Dog
  3. Pointless Waste Of Time
  4. CockEyed
  5. Unfit
  6. BugBash
  7. 10x10
  8. SiSSYFiGHT 2000
  9. justcurio.us
  10. Jesus of the week
  11. I Kiss you !!!!!!

Enjoy

Posted at 07:06 PM

A mixed blessing

The Internet is a mixed blessing.

I'm largely self-taught. A lot of what I'd consider to be the fundamentals I learned by doing, long before a textbook or lecturer proffered any insights. My father introduced me to computer programming when I was 8 and I haven't looked back. I got my hands on whatever pirated development tools I could (I remember taking Borland C++ 3.0 home on a pile of 1.44 stiffy disks). Pirating software was much harder in those days.

Books were even more difficult to come by. While IT books weren't quite as exorbitantly priced as they are today, they were still way out of reach for an unemployed teenager (or even an employed one: minimum wage does not factor in programming manuals). And they weren't exactly abundant either. I scrimped and saved and splashed out about once a year for desired titles like DOS Programmer's Reference and Turbo Pascal Advanced Techniques.

Today buying books is something I do because I can, not because I need to. Everything I need is online. Indeed, many aspects of this industry change so quickly that print media is always out of date.

But the Internet has its down side too. It's all to easy to plug in and lose hours without realising it. Trust me, I know. It's easier to just click-click-click from one inane site to another without having to do anything remotely cerebral than it is to sit down a write code. Or play with an idea. Sometimes you get lucky and stumble across a good intro to something, or a readable treatment of a topic that's interesting and useful, but most of the time you go away no more enriched for having spent hours online.

When I started the only things you could use a computer for were work, writing code or playing games. The Internet as we know it didn't exist. Online gaming was a gleam in someone's eye. Chat rooms (bane of my existence all the way through first and second year) were years away. As a result I spent a lot of time writing code. Most of my time in fact. And as a result I probably made more progress in that first decade or so than in any decade that followed.

So when evaluating the worth of the Internet, I have to balance the availability of vast amounts of information against its ability to suck my weekends dry.

Ah, the price of progress.

Posted at 06:33 PM

What was and what may have been

An odd dream last night, full of bits and pieces of nostalgia, and quite powerful despite the odd triviality here and there.

We had moved. We'd bought a place in a fairly hilly and densely forested suburb. Some thought this morning has me convinced it was a slightly reworked version of the border of Delta Park in Joburg. The border on which Shaun used to live. I was at school with Shaun and he's one of the many casualties of time. I wonder what he's up to now?

Delta Park was where we took our dogs walking. It was where we ran inter-school cross country. They had a small natural museum of sorts which was the subject of at least one field trip, either for school or the JCE classes I used to attend, I forget which. Delta Park had a few bird hides that I spent a bit of time at in my later years in Joburg. Delta Park was where my scout troop played Capture the Lantern, and built fires for the sole purpose of tossing in empty deodorant cans to see what would happen. Delta Park was also where Andrew (another casualty of time) and I would sneak off to with the brandy we'd bribed some stranger to get us from the liquor store, and it was just around the corner from the tennis courts where we spent a few rebellious weeks smoking our stolen cigarettes.

In the dream Claire had bought me a brand new BMW. It was either a 3 or a 5 series but it was absolutely immense. So much so that I had difficulty turning it around in our driveway. The car didn't seem to feature much. I do remember thinking that we couldn't justify three cars and so we probably had to consider selling one.

The dream ended with a visit to our old house in Joburg. All the Bonsai candidates I collected during my youth were there, neatly arrange on two tables. Some I recognized, others were unfamiliar. But all of them were considerably bigger than I'd left them. My aviary was there too. Empty and lifeless except for some odd spider-like creatures that had taken up residence in the soil. I spoke to my grandfather about it and about the possibility of building a new one at our new place, given that we now had the space. He was very keen and suggested that we dismantle the existing infrastructure and reuse it to build the new one. The only concern I had was that the new garden was in perpetual shade (being in the center of a forest will do that) and the birds might need some special attentions as a result.

I woke slowly, climbing up through a haze that consisted of fragments related to my dream: the likelihood of finding Shaun; the possibility of building an aviary; which species I would like in the aviary; and a jumble of imagery that escapes me now.

Dreams are funny things.

Posted at 10:36 AM

This is exactly what I've been trying to tell people

Andy quoted webbikeworld.com. This sums up one of the reasons I enjoy biking so much. Oddly enough, I enjoy Tai Chi for pretty much the same reason.

Posted at 09:57 PM

Strangers in the night

I think I may have just had a conversation with a complete stranger without them even realising it (that I was a stranger, not that we had a conversation).

The phone I rings. I answer, don't immediately recognize the voice and can't immediately make out what the guy on the other end greeted me with. This often happens. I start many telephone conversations without a clue who's on the other end but it usually resolves itself pretty quickly. So I just go with it. The other guy starts telling me something about getting together to watch rugby later today. This is not unheard of in our circle so it all still kind of makes sense, but it's odd that I still can't recognize the voice.

The human brain is remarkable. How often have you heard only snatches of a sentence but still known what was said? Your brain takes it all in and starts doing some sort of semantic pattern matching in the background. Eventually it figures out that you heard "What elements does that list contain?" and not "White elephants dancing in a train".

A few minutes into the "conversation" my brain finally informs me that (as far as it can tell) the opening greeting didn't seem to include my name, but rather seemed to include someone else's. At this point I realised that this was probably a wrong number, and if the conversation didn't end pretty soon the jig was going to be up.

So I did what any mature, responsible adult would do in the same situation: I attempted to bluff my way through to the end of the conversation, hoping it wasn't too far off. And as far as I can tell, I succeeded. The remainder of the conversation went something like this:

"So if you're keen to watch rugby later, come round."

"Uh. Okay, thanks."

"So how are things?"

"Uh, busy, but aren't they always?"

"Yeah, I suppose. Okay then, might see you later."

"Sure, yeah. Cheers."

"Cheers."

*click*

Posted at 10:34 AM

Road tax

Gah. 800 bucks worth of "road tax" arrived yesterday. Having only just paid a R300 fine I'm not feeling particularly pleased with myself.

So I figure I'm going to try to amortize this lot. If I can avoid any road tax for the next 40 days then it's only 20 bucks a day. Sure, it doesn't really lessen the impact but it will make me feel better.

So this is your chance, loyal readers. Pick a random number between 0 and 39 (inclusive) and on day n+1 (where n is today), drop me a note to remind me to STOP SPEEDING.

Yours
The flash (literally) :-(

Posted at 08:45 AM

I am the digital provider

I roam the digital plains with my quiver full of P2P arrows in search of wild Daily Shows and the rare but valuable Lost season 2 episode. When I find one the chase is often long, sometimes ends in bitter disappointment, but for the most part results in a fine specimen to add to my collection.

I am modern man. Hear me roar (at 1200 baud).

Posted at 10:38 PM

Odds and ends

I stumbled across this a while back and have been meaning to post it for some time now. It's probably the only balanced discussion of Emacs and (yes and, not vs) vi. Close your mouth and visit the page. Made me seriously consider jumping into Emacs myself.

Update on the Java 1.5 front. Enumerated types are generally well implemented. I particularly like that a switch statement on an enumerated type automatically has access to the scope encapsulating the enumerated names.

So instead of

...
enum Options { THIS, THAT }
...
switch(enumVar) {
case Options.THIS: ...
case Options.THAT: ...
}
you just type
...
enum Options { THIS, THAT }
...
switch(enumVar) {
case THIS: ...
case THAT: ...
}

However, it's a bit odd that the first option is a compiler error. Sure, you don't want people to think that they can mix different enum constants but if they want a little extra semantic info why not let them?

My biggest gripe, however, is that there's no way to take control of valueOf. This method allows you to pass in a String and get back the appropriate enum constant. How does it decide which string values you can use? I haven't looked too deeply into the mechanics but in the above example you could pass in either "THIS" or "THAT" which is marvelous until you're getting the strings from an external source and they contain characters that are illegal in an identifier. Like dashes. You can't provide your own static valueOf(String) method. The closest I came to achieving this involved trying to call the protected Enum(String, int) constructor. The JavaDocs have a mysterious statement about programmer's not being allowed to call this and indeed trying to generates a compiler error. I can only presume this is a "special case" because there's no construct in Java that allows you to enforce this and there isn't even an annotation associated with the method. These kinds of "special cases" bug me. So after a lot of wasted time I ended up writing a safeValueOf(String) method. Nasty.

Despite that niggling annoyance enums have turned out to be rather pleasant to work with.

Posted at 08:50 PM

Sleepless in !Seattle

Two consecutive nights of tossing and turning. I think my head's just full of rubbish that needs to be indexed, archived and deleted from main storage.

First I spent a night dreaming about TCP-based multicast protocols. The central concern seemed to be that I was using a multicast protocol as a unicast protocol, thereby incurring the overhead of multicast without reaping any of the benefits. Somewhere midway through the dream I also realised that none of the multicast protocols I was looking at would happily leave a subnet resulting in network partitioning unless you were prepared to stomach the additional hassle of running gossip servers on the borders of your subnets.

Yeah, I know.

Last night seemed to be full of XML processing, with a specific focus on handling XML namespacing issues. There was a very brief tangent where I realised that someone was driving a car with a CR license plate (which I can explain because this is next up to be added to my list, having been spotted on Sunday's ride).

I need a good night's sleep.

Posted at 08:54 AM