You are here

Jonathan Hitchcock's blog

The Beauty of Argument

Adeline, that tiny ray of sunshine in an otherwise cold and inhospitable world, has written a very eloquent description of why she enjoys arguing. It is a treatise that, in short, I agree with. It is, in fact, something I have been trying to explain to people for a long time now.

To quote Adeline, "those of you who know me will also know that I love a good argument". This might not be quite how you would put it. You would probably say something more along the lines of "fercrissake, that pedantic bastard just won't let a point go", or worse. And, indeed, maybe I do tend to push things a bit far, but it is always because of this same love of argument.

I know what I think, and what I believe. And I know why I think these things, and on what grounds my beliefs rest. I like to think that I have thought everything through, and have found a consistent, logical world view. If somebody disagrees with me, then it is not merely a "difference of opinion". We are rational, intelligent human beings. I firmly believe that if two people are both in possession of the same information - the same premises, if you will - then they will come to the same conclusion. So, when I find somebody that disagrees with me, I want to explain my reasons for holding my belief, and I want them to explain theirs. I want to find the discrepancy in the foundations of our thoughts, and to discuss the two different versions, and discover which one is better. And I know that I will change my beliefs if I find that the other one is better. I hope that the opposite will be true.

It is not about trying to force the other guy to accept your opinion. In fact, I suppose it's not even about trying to find the best out of the two opinions. It is a process of dialectic. I present a thesis, you present an antithesis. We discuss. Eventually, we reach a common ground - a synthesis. Through our giving and taking of ideas, we refine our thoughts and eventually reach a point on which we agree.

Not everything can be dealt with like this. Aesthetics are a matter of personal taste - you can't argue about whether something tastes good, or whether a sound is pleasant. Experience is also something that cannot be shared - if I have an experience that you do not, this will alter my thoughts or beliefs, and no amount of discussion will change how we felt these experiences. However, setting aside these most subjective of factors, I really do believe that through discussion and argumentation, two people can refine their models of what they think, and most importantly, why they think it, until they agree.

I'll say that again - the most important thing is why you hold your beliefs. Without knowing this, you cannot argue. You can just repeat your point again and again, until the loudest one wins. However, more importantly, without knowing why you hold your beliefs, you cannot call them true beliefs. Socrates said that the unexamined life was not worth living. An unexamined belief is not worth holding, either.

I've lost count of the number times I've been called a pedant. And they say it like it's a bad thing. Yes, I'm pedantic. Yes, I correct errors where I see them. That's just another way of saying "I try to be correct in everything I do, and where things are not right, I try to make them right". How can striving for perfection be bad? I probably go over the top. In fact, I know I do - I push this to extreme lengths, I get heated, I raise my voice in excitement. I'm not the perfect Discussion Artiste, by any means. But I cannot, cannot understand somebody who does not see the value of two rational human beings exchanging their ideas in order to come to a greater understanding, and who does not understand the beauty of argument.

On Transience and Loss

Having just started a new job, and moved to a new town, I find that I have a different outlook on things. I find that after waking up in the mornings, and getting ready for work, I stop and look around me, and pause for a few seconds to cast my mind back over the previous day, and consider the possibilities open to me for the new day, and I ask myself the question that we all find ourselves faced with at some stage in our lives:

Where the hell are my keys?

No, seriously, every single day of work so far (that's only two days, in total, but still) has started with me losing my keys. Yesterday morning, they were down the side of the couch, but I still haven't found them since I noticed they were missing this morning (I have spares). But it's not just my keys, either - I discovered on Friday that my British passport and South African ID book were not where they usually live, which is in a special place on my desk, just to the left of a pile of blank CDs, in front of my Tazo collection, and sort of to the right of the bowl I used for my breakfast. The passport has since turned up tucked into an envelope full of Ubuntu Dapper CDs that I haven't touched since I received it in about August (I last saw my passport in February). I'm sure the keys and ID book are somewhere in this flat, but I've ransacked it high and low, and can't find them. I expect that they will turn up inside the bread bin, or behind the toilet cistern, or possibly taped to the underside of the icebox in my fridge. Until then, I soldier through my grief.


Status Update

Just an update on where I am and what I'm doing. I am no longer working at Adept Internet - I have moved to OpenVoice, and today was my first day.

Adept is based in Stellenbosch, but OpenVoice's offices are in Millenium Park in Century City. As a result, I am moving from Stellenbosch to Cape Town, and I'm renting a place in Kenilworth - this means that I'm swimming upstream mostly, when I drive to and from work. I haven't actually moved house yet - I only signed the lease on Saturday. I spent last night in the Rondebosch Safehouse, and will probably stay in Stellenbosch tonight. I'll move sometime in the next week or so, although Megan's single main request for her holiday in Cape Town this week is that she spend some time in Stellenbosch. I'm taking Thursday off work (my fourth day, I know!), so that should be fine.

Today started off with insomnia, and then lost car keys. I left home at 7am ("Leave early", they said. "You don't want to be late on your first day", they said) and got to work at 7:25am. Everybody else rocked up at about 8:45am, which meant that I had a solid hour and twenty minutes to get really well acquainted with the parking lot at our offices. (It's a very nice parking lot, by the way.)

This job seems interesting, with a nice environment, and lots of opportunity, and I'm looking forward to it. In addition, I now get to live in the Mother City proper, about which I am very excited. Onward, 2007!

The Naming of User Groups

Yesterday, I was involved in a rehash of the age-old gripe about CLUG being Linux-centric. To give you an idea of how long this has been going on, I submit a statement made in January 2000.

The discussion started around whether or not attending GeekDinner and/or CLUG meetings was beneficial. One argument against CLUG meetings was that

most of this stuff, it's easier for me to read up on, or in the case of ZFS, actually have running myself. So a talk on it, while nice, is superfluous to requirements
My response to that is quite simply that these things are more about meeting people and networking than actually benefitting from the talks. This brings me back to the point I made yesterday, and which Nick Coyne has agreed with - small tables aren't conducive to networking. But I digress.

My antagonist said that meeting people wasn't desirable, because the only people you'd meet would be CLUG people, "Linux weenies", who exclude FreeBSD, Solaris, Irix, etc, and go "Linux or nothing!". I didn't think that any of us were "Linux or nothing", but when I mentioned this, I was referred to the "L" in the name "CLUG".

So, I hereby propose a name change, to CDG/LVUGSFLOSSOSOCE: the Cape Debian Gnu/Linux and Variants User Group Supporting Free and Libre Open Source Software, Open Standards, Open Content, and Evolution.

Something to think about

Her blog is not aggregated on Planet Geekdinner, and some of the readers might miss it, so I'll link from here:

Update: There was a similar incident, with similar reactions, in the Ubuntu project. Corey Burger talks about it.


Last night, I attended the GeekDinner, organised by Joe, and announced here.

My overall opinion was that it was a well-organised, well-attended event, with some good speakers, interesting topics, and a nice atmosphere. In a word, "mooi". The venue was a strange choice, being quite far South, and having the general reputation of being "not bad, I suppose". I enjoyed the food, although not everybody agreed with me. The wine was... well, it was free, which is good enough for me. Jonathan Endersby and I had to take it with a pinch of salt, but I wasn't complaining.

It was good to see the old faces again, and meet some new ones. I drove through from Stellenbosch with Tania, whom it was great to meet. I suspect that the way seating was organised is not very conducive to "networking" - I sat at a table with five people I knew, and two people who knew people I knew. I would've liked to meet some more people. I suppose if I was going with that express purpose, I would plonk myself down at a table of complete randoms and inflict my company on them. But the natural thing to do is to grab the nearest table with whoever is nearest to you - invariably the people you know - and with only eight people per table, this slices the attendees up into bite-sized cliques who already know each other.

The talks were, for the most part, interesting. Some of them may have been a little too long, and a little too special-interest (special-interest (adj) 1. boring) for the company, but they all sparked a bit of debate, and none were intolerable. I suspect that as things get going, we'll start getting a feel for what sort of areas we want to focus on. That's if we don't run out of people willing to talk, and topics they're willing to talk about, of course. It's a worry that having seven or eight people talk at a dinner will quickly deplete the pool of people who don't mind standing up in front of others. Time will tell.

As I've said, I wouldn't have chosen Barbarella's as the venue, but it turned out quite well at the end. Discussion for the next venue is happening on the wiki.

I must say here that I strongly disagree with what Jonathan Carter has to say about the geekdinner. The general perception was not that it was going to be a glamblogger get-together - I think most people went with very positive feelings, anticipating a good event. Jonathan's (happily inaccurate) preconceptions about it should not be considered representative of the attendees, and I think everybody who was there is looking forward to the next one.

Converting from Serendipity to Drupal

My old blog, on, was running Serendipity, but I've switched to using Drupal for everything on this site, Apart from being written in PHP, which is unfortunate, Drupal seems to be a fairly decent piece of software - pretty, easy to use, and well written. If I needed persuading of this fact, I would have been convinced by how easy it turned out to be to migrate my blog entries from Serendipity to Drupal.

Since I started setting up my hosting (maybe I should blog about that a bit later?), I've been using Postgres as much as possible, where there's a choice. I am using it behind my shorl generator, my quote database, and behind the various drupal sites on this machine, including this blog. The database that stored my serendipity entries on rucus, however, was a MySQL database.

It was easy enough to extract the information that I wanted to keep from the serendipity database:

   select id, title, timestamp, concat(body, extended) from serendipity_entries;
I wasn't that interested in trying to keep the comments, categories, and so on - I have retained the database, and I will go through the comments later and update various entries to include the comments, I think.

After that, the question was how to insert this data into Drupal. At first I thought of doing it manually: I created a test blog entry, with pg_dumps before and after, so I could compare the states of the database, and how it changed when a blog entry was created. It seemed simple enough, but the whole idea didn't sit right with me. So I had a look at the PHP code behind Drupal, and as I've said, it's incredibly simple and elegantly written.

It turns out, there's a node_save() function that you can call, passing it a node object (which needs properties such as 'title', 'body', etc), and it will update everything for you. It was that simple. All I needed was to write some PHP code that did the MySQL selection above from serendipity, created a node with the right properties, and saved it. This code would, of course, need to run within the Drupal environment so that it had access to the node_save() function, and was connected to the right database. This was also trivial to achieve: There is a nice tutoral on creating Drupal modules that made it easy.

I pre-created a table called 'blogdata' to contain the data I wanted:

CREATE TABLE blogdata (
  id int(11),
  title varchar(200),
  timestamp int(10),
  body text,
  done int(3) default '0'
And then populated it:
insert into blogdata select id, title, timestamp, concat(body, extended), 0 from serendipity_entries;
The relevant part of my Drupal module (which I could have actually stuck into any existing Drupal module in order for it to be run) was as follows:
$q = mysql_query("select * from blogdata where done=0 order by timestamp asc");
while($f = mysql_fetch_assoc($q)) {
   $newent = array('created' => $f[`timestamp`], 'title' => utf8_encode($f["title"]), 'body' => utf8_encode($f["body"]),
      'teaser' => utf8_encode($f["body"]), 'format' => 3, 'uid' => 1, 'type' => 'blog', 'status' => 1, "comment" => 2,
      'promote' => 0, 'sticky' => 0);
   $newento = (object)$newent;
$q = mysql_query("update blogdata set done=1");
I did actually have some issues at first because my data was encoded in ISO-8859-1/latin1, and Postgres was expecting UTF-8 data, but as you can see, I call the PHP utf8_encode() function to get around this. Many thanks to bje (whose domain is ironically called "serendipity" ;-) for getting my mind straight when I was being kak about this.

And that was it. My blog entries were imported perfectly. I still need to go through a few of them and fix entries that still hard-link to rucus, but that shouldn't take too long.

The only gripe with Drupal at first was the horrible URLs it created: "/node/124" sort of thing. However, with the nifty Pathauto module, those are a thing of the past.


I have just about finished the migration from my old site on to this new system. Unfortunately, I can't bring my googlerank with me, but hopefully that will build up in time.

There's still a bunch of stuff that I'd like to add to this site, but it has the functionality necessary to carry on with for now. Time will tell if I ever do get around to fixing it.

Anyway, this is just a quick blog entry to nudge my RSS feed back into life.

In or Out?

My RSS feeds recently turned up the following two entries, which juxtapose each other interestingly:

Measure for measure. Tony Blair's quotation about how a good way to judge that America was still a good country was by comparing how many people wanted in with how many people wanted out.

Getting out: your guide to leaving America. Mark Ehrman's guide to leaving America.

Update: Ask Slashdot asks where Americans would go, if they left.

Opel Xhosa

I feel obliged to blog about my new Opel Xhosa 1.6 Elegance, which I took posession of yesterday evening. Her name is Sally, short for "Sala kakuhle", which is Xhosa for "stay well", apparently.



Subscribe to RSS - Jonathan Hitchcock's blog