Saturday, July 07, 2007

Notebook of a Return to My Native Land - part 14

NOTE: since I'm never going to have enough time to finish the last chapter properly (it has been over two months...) I decided to publish it as it is. I didn't have enough time to check all the factual information so don't blame me if I got dates and places wrong! :-) Without further ado, here is the last chapter of our adventure.


It matters not how strait the gate,
How charged with punishments the scroll,
I am the master of my fate:
I am the captain of my soul.

Invictus, William Ernest Henley

Simon's Town

The flight to Cape Town was hilarious. Seriously. Kalula seems to have this policy of only hiring comedians and our flight attendant was perhaps one of their finest picks. Other than the first time I flew, I don't remember ever paying attention to safety instructions, but this time I felt compelled to listen and so did everyone else on the plane. I can still recall some of the jokes he made:

There is a no smoking policy in all Kalula flights, so please refrain from smoking anywhere on board, including toilets. Besides the usual smoke detectors, we also have installed hidden video cameras in all toilets to ensure you aren't breaking the law. This has the interesting side benefit of keeping the crew amused when we have nothing better to do, which is quite frequently.

If you are going to leave anything behind please make sure it is something worth our while. We suggest cameras, laptops, latest generation phones or lots of money. Passenger on row 15 can leave his girlfriend behind, she's quite fit.

Do you know why Cape Town is called the Mother City? Its because anything you try to do in Cape Town takes at least 9 months.

There were many, many more jokes - every announcement had at least one or two - and most of them were quite funny. Every so often the entire plane would just burst out laughing, begging for mercy.


After a cheap but filling lunch at Cape Town's airport, we begun our quest for accommodation. Usually this is a fairly painless process, as Shahin normally finds a place within two or three phone calls, but this time round she was struggling hard. Around six phone calls in, still with no luck, she decided that something wasn't quite right. What kind of place was this? All the backpackers lodges were fully booked and you even had to make a reservation for dorms! Dorms have been our last resort of last resorts - being middle-aged backpackers, we couldn't help but look at them snobbishly, one very small step above sleeping on the streets. And now suddenly, it seemed we were lucky if we managed to find any dorm space at all. "What kind of place is this?", we wondered.

As we later found out, this was a particularly bad time to go to Cape Town. One of the biggest cycle races was on, and the whole of South Africa had relocated to the Mother City for it. These damned cyclists left total havoc on their wake and were sleeping virtually anywhere and everywhere you can think of. There wasn't a single bed available in any backpacker's and all other places had increased their prices by 100% or more, trying to cash in with the event. It was just far too much excitement for our liking. After all, we were in no particular rush to get to Cape Town.

The best strategy was to bid our time and wait for the dust to settle at a safe distance. Simon's Town, a little village next door, was the perfect candidate. (In my usual aloofness, I thought the destination was being chosen at random, but Shahin, ever the scheming Lonely Planet reader, had her reasons for choosing Simon's Town.) Although part of the route, the town managed to miraculously escape the worse of the accommodation fever that was taking over the province. We instantly booked a room and found transport.

We got driven there in an official candongueiro designed for tourists, with comfy seats and even sporting professionally printed tickets. The driver was a genuine Cape Town coloured, the first we ever met, and we had great difficulty understanding him due to his strong Cape English accent. In truth we barely understood the man talking, which was most unfortunate since he spent the entire journey asking us questions or providing what appeared to be interesting information about the province. Capetonians speak very broad English - in particular the majority who have Afrikaans as their native language - and have an accent resembling a mix of Scottish with Australian, if such thing can be imagined. For the untrained ear, it is next to impossible to decipher. He didn't seem to take offence to our constant ramblings, fortunately, and carried on even though we kept on giving absolutely random answers to his perfectly valid questions.

The transfer to Simon's Town took less than an hour, and the drive there is fantastic, offering great views of the mountains as well as the Atlantic Ocean and its beaches.


We decided to stay in a lodge creatively called "Simon's Town Backpackers". Whilst a no-frills sort of place, it was very clean, not particularly rowdy, had Internet access and, most important of all, a pool table. All the mod coms a tired and weary backpacker needs.

Simon's Town is rather small, not much more than a single long street containing all the shops and most restaurants. Perhaps due to its size, it is very safe to walk around the town pretty much at all hours, and even carrying valuables. What it lacks in size, though, it more than makes up in its quaintness: grand old houses built on top of hills, many over one hundred years old, lovely Victorian summer houses in a palette of watercolour blues and pastel cremes, some Art-Deco.


In our first couple of days I found strange that most young people in Simon's Town, particularly men, were extremely fit - gym obsessed sort of people, bulging muscles coming out of their tight t-shirts, making me look even skinnier than usual. No, this was not a mini-California. Simon's Town is mainly known for its very large Naval base, and all the boys and girls you see out and about are young sailors. Perhaps this also helps to make the town safer, as their presence is bound to dissuade many a troublemaker. And these were pretty disciplined people, quietly drinking their beers in the corner, playing pool, not causing much trouble at all - at least during the time we were in town.


Cyclists passing through Simon's Town

There are a few restaurants to choose from in Simon's Town, not a wide choice of options but just about enough to keep one entertained for a week or so. On the negative side, the food is as a norm of a lower standard than Durban's but the prices are much higher. Of all places we ate in, there is only one we unreservedly recommend: "Bertha's", just by the waterfront, around the corner from the backpackers lodge. The food here was of the highest quality, especially the fresh fish - but the meat was also commendable too - although prices were much higher than in durbs.

High prices were a running theme. We spent on average 200 to 230 Rand per meal in Simon's Town, instead of the 140 or so we were used to paying, a trend that only got worse in Cape Town. Whilst overall food in South Africa is excellent and great value for money, there are a few places that are not very good. Interestingly, we found out that there is a high inverse correlation between cost and quality. Most of the expensive places we've been to weren't actually that good, and the cost was mainly due to their being near some kind of tourist attraction such as a Marina, the seafront or a big shopping mall. The probability of having a bad meal seems to increase exponentially the closer one gets to one of these. Cheaper, more out of the way places were normally quite good.


The biggest attraction in Simon's Town - and the reason behind Shahin's desire to get us here - is the huge Boulders Beach penguin colony. The beach is less than half-an-hour walk from our lodge, a pleasant stroll along a curvy road that allows plenty of time to admire the sights: uncountable and diverse period Art-Deco houses, a small park with benches, the large navy base, the sailors quarters. The entrance to the Boulders Bay national park arrives all too soon, the sun still high up in the sky, but not so hot as to make walking strenuous.


Penguins at Boulders Beach, next door to Simon's Town.

The national park caters for the less wealthy, providing free access to an extensive area that circumscribes the main penguin colony. Access to the colony itself and the swimming beach requires purchasing a day-ticket, all for the very reasonable sum of 30 Rands. The park is composed of paths, a set of wooden platforms that sit slightly above the sand-dune like vegetation, which appears very similar to the fynbos found in Kosi Bay. The platforms pierce the park in strategic places, giving visitors an excellent view, but at the same time creating the impression of an artificial environment rather than a pristine natural reserve. However, careful inspection reveals that the stilted design is there not by chance but due to clever environmental thinking, as it permits wildlife to roam unconstrained across the entire area.

As you get closer, sharp screeching sounds attack you from all directions: mating calls perhaps, or parents looking for their children. Quite a few penguins live outside the main colony, in the free part of the park, and you can see dozens of them lying around, normally in pairs but sometimes in bigger groups. The main colony, however, overpowers the senses, with hundreds of animals congregating in a small space.

We spent many hours observing these wonderful creatures going about their busy lives: some walking round as if socialising, parents with their chicks, a group suddenly arriving from a fishing expedition, others yet beginning theirs. Incredibly interesting characters, and in more ways than one. When they walk they seem to do so carefully and determinedly, sometimes staring at the floor as if cautiously preparing the next step, other times gazing at the horizon and the sea, always progressing at a relentless pace towards a destination only known by them. Mating for life and their quasi-human walk make them somewhat eerie, alien and yet very much like us.


On one of our visits to the penguin colony, we decided to go in for a swim. We had to give it a go since you get to swim almost side-by-side with penguins - or at least as close at it gets, since they don't appear to be as sociable with humans as dolphins. The weather was hot as usual, and the beach was packed with locals. Well, packed isn't an accurate description since the sandy part of the beach is extremely small; in reality, it doesn't take a huge crowd to completely fill the beach. Once the preliminaries where taken care of - i.e. we somehow managed to find a corner to stand (literally) - I went in to snorkel. There were quite a few kids swimming, perhaps ten or so, and a handful of adults too, so the coldness of the water did not deterred me.

It's impossible to describe the experience of swimming in the Atlantic side of South Africa. The best I can say is this: after a few seconds of swimming round, in which I didn't see a single living thing creature because the visibility was too low, I noticed that something was not quite right with me. I couldn't quite pinpoint what was wrong, so at first I attempted to ignore it. A few seconds more, and the funny sensation grew even weirder, and I had no option but come out. As soon as I got out I started breathing uncontrollably and desperately, gasping for air. That's when it hit me, the water was actually so cold it made me stop breathing through my snorkel!

To be fair to South Africa's Atlantic coast, I experienced a similar reaction when swimming in northern Portugal, but not quite as extreme as this one. At any rate, our advice is clear: if you want to swim and enjoy the ocean in South Africa, stick with the Indian Ocean. The west coast is great for many things, but swimming is certainly not one of them.

Cape Town

A few days of bumming around in Simon's Town proved more than enough. Although the town is nice, and its surroundings are rather pleasant, there just isn't enough to do to keep one busy for over three or four days. The cycle race did generate much excitement amongst the "Towners" and backpacking community - even Shahin was bitten by the virus and spend hours on end watching bikes going past our hostel - but once it was done and dusted, the sleepy town returned back to normality. And so did accommodation in Cape Town. It was undoubtedly time to leave.

There were several options in terms of transportation. We could either came back on our "Business Class" candongueiro, take the bus or get the train. A lot of backpackers had mentioned that the train trip was a must, an opinion seconded by Shahin's faithful Lonely Planet, and since we hadn't actually used a train in Africa it became the obvious choice. We were on the road again.

The trip didn't start terribly well, though. We miscalculated a bit the distance from the hostel to the train station. In reality, there are very few distances that could be considered walkable when you are carrying twenty kilos of luggage on your back plus another five or so on your arms, and the heat of the midday sun didn't help either. Drenched in sweat we managed to get to the station, barely able to speak to the ticket inspector, who, politely ignoring our gasping breathing and sweat covered shirts, told us that we had just missed a train. On the positive side, tickets were dirt cheap and we only had to wait for half-an-hour or so for the next train.

The train arrived with a punctuality unseen in Britain, but since it was our first and only railway journey, we cannot extrapolate any conclusions regarding its reliability. The cars were rather peculiar, with chairs on the sides and a huge space in-between for standing. They vaguely resembled the Piccadilly line in London, but in a much wider and taller structure. The emptiness was even more palpable because there were no more than twenty passengers inside, but it was a remarkable lot for its diversity: some white people, coloureds, a few blacks and, of course, Shahin representing the Indians. This put us at ease somewhat, since you never feel totally at ease in any public transport in South Africa. The trip was quite amazing in terms of sightseeing, the large train windows providing great views of the coast, and the Cape Town station arrived all too soon.

At this point things got complicated again. As strange as it may appear, its actually quite difficult to find the right exit at Cape Town's massive train terminal. This is because the terminal itself is very close to town centre and all roads around it are extremely busy. We walked around the terminal for a little while, but our many kilos of luggage didn't allow proper exploration. Shahin, already exhausted from the previous adventure of getting to the train station, was in no mood for my linear search approach for finding the correct exit (for non-computer scientists, this basically entails trying each exit at a time until you get to the right one; it's a great approach, but, I'll admit it, it has some limitations).

A few well meaning Capetonians pointed out the exit for the taxis, but what they meant was "African Taxis" rather than cabs, and after the Joburg experiences that was a no-no. Tried as we might, it proved to be impossible to explain that we wanted a taxi rank, not a candongueiro rank. After much walking round we finally decided to go into the shopping mall next door to the terminal, grab some food at Wimpy's, and ask the waiters for some help. There they explained that there was no taxi rank as such, but instead one had to signal them to stop on one of the busy main roads; and no, they didn't have any taxi numbers. We were very much unconvinced about the idea of standing in a busy South African town with all of our stuff, and indeed the plan seemed little more than suicidal, but as we couldn't think of any other option at that juncture in time we left the mall and braved it.

To our great relief it didn't take us long to get a cab, and whilst we still wondered if it was a dodgy taxi driver, it felt much better to be inside of a car rather than sitting vulnerable on a side-walk.

If you have actually spent any time in Cape Town you'll probably find our fears quite amusing, and to be honest, I struggle not to laugh when I think back about it. But at the time we really thought our lives were in danger. Our perception of the city changed instantly as soon as we hit Long Street, one of the main arteries of day- and night-life in Cape Town. The place was booming with life, all colours of the rainbow widely represented, everyone walking up and down the streets as if in the safest of countries.

We got dropped at Carnival Court, a nice if somewhat expensive backpackers. Like Long Street, the place was full of life, people sitting and standing everywhere, most lounging quietly in the veranda, smoking pot and observing the roaming crowds below. Our room was on the third floor, and it felt really good to be able to finally drop all of our stuff and change clothes. The tiredness of the day was fast catching up with us, but we decided to go for a small stroll around the block - assured as we were by the hostel staff that walking during the day was very safe. "Sometimes there's trouble at night, but its mainly OK" we were told.

The problems with Carnival Court revealed themselves at night, but not for the reasons we expected. Cape Town is the Benidorm of South Africa, the city that never sleeps. And that's rather inconvenient if you intend to sleep. Like many such places, its perfect for the teenager and bachelor traveller who is mainly looking for some techno, alcohol and sex; but the older traveller, the one who wakes up early in the morning to look at monuments, struggles to keep up. At three o'clock in the morning the techno was still banging, not just from our own bar two floors down but also from every other backpacker's in the street - and there are many of those, believe me - and even our extreme tiredness was just not enough to allow our brains to switch off. The only way to find some sleep, any sleep, was to listen to music with our headphones on. It worked, but I must say that after a week my ears were in absolute pain. We also started to go to bed later, to make the process slightly more bearable.

The V&A Waterfront.

Other than its loudness, Long Street is actually a nice place. There are many (many) second-hand bookshops, ready to receive your old books and change them for new ones for a small fee. There are also a few record shops, many coffee shops and cafes and plenty of bars, restaurants and pubs. There is a large Irish pub just underneath Carnival Court, but I must say we were terribly unimpressed with the staff - who would fit like a glove in any Angolan restaurant - and to make matters worse the beer wasn't much good either. But there were plenty of other places, such as Zula with great food and music, including impromptu dancing classes of Latin music and lots of animation. There is also a Mexican restaurant around the corner from Carnival, with great food and very reasonable prices - reasonable for Cape Town, that is. A great find was Mama Africa, a great African restaurant (it does sound funny saying African restaurant when you're in Africa but hey. I wonder if the Italians refer to their restaurants as Italian Restaurants in Italy). However, be sure to book well in advance as this place is worse than Roma Revolving, forever busy.

Another must in Long Street is the Kurdish restaurant, the name of which escapes me know; it has great ambiance and food to go with it. It was there that I was asked if my Debian T-Shirt had anything to do with the lesbian movement. I gave a sad and weary look at the lesbian girl, shook my head looking at the horizon, wondering if Windows and Mac users ever suffer from this sort of humiliation. Not her fault, of course, but one cannot help but think that Linux still has a long way to go in terms of brand recognition outside the geek community.


As we had done before in Durban, we decided to go on a bus tour of the city. These tours are normally quite expensive, designed with the lazy tourist in mind, but are actually a good way to get an overview of a large city before exploring it in earnest. In South Africa in particular these trips are a must, costing around 100 Rand - expensive relative to South African prices, but quite cheap in British terms. Most of the guides are quite knowledgeable and they don't hesitate to tackle difficult topics such as apartheid. Our trip in Cape Town took us to the bottom of Table Mountain, to District Six, to the Victoria and Albert (V&A) Waterfront, the crafts market, and many other places such as the beautiful and rather expensive beaches of Camps Bay. The experience was so good we ended up not leaving the bus on our first trip. I say first because we ended up going on the bus twice - the second time being rather more adventurous, as we'll see later on.

The Waterfront was a place we particularly liked, with its Marina and restaurants, shops, crafts and hustle-and-bustle. Unfortunately, we must say that the restaurants there leave much to be desired. The places we ate in varied between bearable to inedible food, but the prices remained rather constantly high. The worst of them all was an African restaurant where I was served a sweetcorn soup that very much resembled the contents of a sweetcorn tin dropped in a bowl and wormed up - and even then not even that worm. The main course was of the same calibre, I'm afraid to say, and all of it for the bargain price of 250 Rand - enough for two meals in Durban. The remaining restaurants, even the really expensive ones, could only be considered good if compared to this one restaurant. Without question, they were worse than the average restaurant in Durban. Another disappointment was St. Patrick's day at the Irish pub at the Waterfront. Castle, a robust South African lager is normally excellent in draught form, but the Irish pub seems to have the worst Castle pint in South Africa. Conveniently enough, all other beers are 10 Rand more expensive than Castle, and these are the ones everyone drinks. The whole atmosphere was badly fabricated. On the plus side, we did go to a very good Irish pub in town centre where the real Irish met and watched Rugby. This was an excellent bar, and the pint there was second to none, as was the craic.

Whilst food and beer was not an highlight at V&A, everything else was. It is indeed a most quaint area, surrounded with old, beautiful buildings, but also displaying its share of modern architecture. There are also the statues of the four South African Nobel Peace Prize winners: Luthuli, Tutu, De Klerk and, of course, Mandela. Strolling down the quay as the sun went down, we spent many an evening looking at the boats and the masses of people, busying themselves with shopping, some just sitting and waiting, listening to the many street bands, the jazz bands impressing us in particular. We also took our freedom to walk in our own hands and ended up walking from Long Street to V&A as much as possible, getting purposely lost on our way, finding things otherwise hidden.

The other main highlight around the Waterfront is the Oceanarium. Whilst not the biggest we've seen - Lisbon's is probably bigger and more diverse - it's still worth seeing huge sharks and a great diversity of fish, as well as different types of penguins and learn a little bit about the local ecosystems.

Camps Bay

One sunny day we decided to go to Table Mountain, probably the most emblematic symbol of Cape Town. The mountain is one huge plateau, or so it seems from below, sometimes covered at the very top with clouds. This the locals call the table cloth, and the effect does indeed, from afar, resemble a large green table with a white table cloth. You do need some imagination, though. For the less athletic tourist, the mountain is well served with cable cars, taking you all the way to the summit. However, getting from town centre to the cable cars still involves some walking, most of it up a rather steep hill.

We left the house fully intending to get a bus to the cable cars. But as we started to walk to the bus stop, uncertain as we were about its location, it became clear that walking to the summit wasn't that bad an idea. To me, that is. Shahin disagreed somewhat, but by then we already had started walking. The initial walk was rather steep indeed, with little in a way of a view as the streets were filled with houses. As we continued walking, perhaps half-an-hour or so into our march, the size of our undertaking started to dawn on us. We were nowhere near the cable cars, and the remaining of the way was perhaps steeper than the road behind us. At this point Shahin started to despair, but then realised that after all that trouble it would be a bit of a defeat to get a bus now. We sat down underneath trees quite a few times, and watched as elder people walked past us at high speed. At one point, a rather comical moment, we saw a guy on his sixties, or there abouts, cycling up the mountain! Half-an-hour or so later, as we were still making our way up, we saw him going down at full speed, probably doing all that exercise only purely for the joy of then going downhill.

At one point, where the road starts zigzagging, we decided to go on a straight line and cut through the zigs an the zags, across bushes and badly made paths. In total it took us more than one hour and thirty minutes to get to the cable cars, stops included. We ascended towards the summit in a fancy new model cable car, sporting a rotating floor. But the biggest surprise was outside the car. As we looked at the harsh mountain in front of us we started to notice small dots, which eventually revealed themselves to be people. And there weren't just one or two of these, but at least ten or maybe fifteen. A couple of lads had walked past us on our climb to the cable cars and were now climbing up the rocks, with what appeared to be little or no climbing gear on them. We were positively amazed, and they sure made our hour long walk seem trivial.

The new cars take you up the mountain in no time. After spending some time admiring the town below, we decided to explore the plateau. There one can choose between several trails, each with varying degrees of difficulty. We choose a medium one, but ended up getting somewhat lost and doing the remainder of a hard one. Although we were quite tired, and the hike quite frequently resembled a climb, it was worth it in the end because the views were incredible. On our way back, the weather suddenly turned on us, all in a short span of time. Suddenly the heat from the sun was gone, a chilling wind replacing it, and clouds were all around us. As time went by, the clouds became more and more pervasive, and we felt we had been really lucky not to have any clouds up to this point as one could not see anything at all. Instead of the stunning views we had less than an hour before, looking down the mountain was akin to looking ahead in a foggy day; visibility was no more than five metres. Shahin could not stop herself and took several pictures of me, this time with my head literally in the clouds rather than metaphorically.

We made our way back without incident, other than the chilling cold we all felt, but feeling rather fortunate that the weather had changed after we got to the furthest point of the hike and were on our way back. There were also some stories of days when the weather really turns nasty and the cable cars have to stop servicing the mountain. On those days, if you're unlucky enough to be up there, you'll have to survive until the weather changes again. I'm sure there is some life-support on the touristic buildings for desperate situations though.

All the hiking made us extremely hungry, but since there is only one restaurant on top of Table Mountai we expected the worse. A pleasant surprise awaited us, though, for although the food at the restaurant was not of french-chef quality, it was certainly very edible - the hunger probably helped too - and more importantly, all for the amazing price of 100 or so Rand.

Our way down from the mountain was uneventful but rather pleasant, especially after the hard, long climb up.


Another interesting adventure was our second bus tour. After a few days bumming around in cape town we decided to go on the bus again. To our great misfortune, it was one of those days when the winds hit Cape Town. At that point it hit me that a name much more apt for the town would have been Windhoek.

Fire at the Signal Hill

The bus trip started normally, with a bit of wind. As we started making our into town the winds got stronger and stronger, to a point where hats where flying off the bus and people were hanging to the rails with extra-strength. The tour guide was doing her best to ensure no one was afraid, stating several times that there was no way a double-decker bus could topple with the wind; I'm not sure if she managed to convince any of the passengers. At one point pretty much everyone went downstairs, leaving us, the guide and two other couples to fight against the elements. Then, to make things even more exciting, we saw a massive fire in the distance. Signal Hill was on fire. Apparently this happens quite frequently in Cape Town, when the weather is really hot and the winds begin. All the conditions are ready for some nasty fires. We started making our way towards Table Mountain, a part which we dreaded because we thought the winds would certainly topple us down the mountain. In fact it was quite the contrary, as the mountain shielded us from the wind. From up there one could clearly see the flames, the entire hill ablaze, helicopters bringing huge buckets of water and throwing them into the flames without any visible effect.

After a small stop at the mountain we made our way to Camps Bay, the huge column of smoke still making itself visible from the other side of the hill. We then made our way back and made our final stop at V&A, partly because we couldn't help but want to observe the progress of the fire. Here the winds were in full swing, and the blaze was at its cruelest splendour. The many passers-by, normally occupied with shopping, were now spending their time gazing at the hill, paralysed as if not knowing what to do. It was hard to stop one's mind from wondering, would the fire actually get to the waterfront? There was a large green gulf between the fire and V&A, but the flames were spreading faster and faster, a living entity propelled by some unknown evil desire to consume and burn. Ashes were everywhere. We stayed for a bit, watching man fighting against beast.

The hour was getting late and we still had to get back to Long Street, so we started walking back, a journey that made us realise just how unforgiving Cape Town's winds really are. Suddenly, from absolutely nowhere, as you take a turn from a busy street, you get hit by a gush of wind so fast, so furious, that it really feels like you're about to take off like a kite. There were a few times when I felt like holding on to a street lamp or some rails, just for extra safety. At other turns it felt as if we were not going to be able to stop going forwards and walk straight into a main road, straight into the traffic. Near the train station the rubbish of the local markets gathered in huge spirals, mini-tornadoes that can hit you at very high speed.

Robben Island

One of the highlights of Cape Town is its proximity to the infamous Robben Island, where many ANC supporters and other freedom fighters where jailed for fighting against apartheid. Arguably, it is the most famous prison in the world, due in no small part to the many years Nelson Mandela spent there. Mandela was incarcerated for a total of twenty seven years, most of which were served within the confines of the island. While his body was behind bars, his mind was never conquered; and the great man made sure his cause wouldn't be forgotten by incessantly sending letters to everyone and anyone who would listen.

As we all know, Mandela - or Madiba, as he is affectionately known in his country - came from jail to lead his people, and had the honour of being elected the president of the last African country to escape colonial rule. Mandela closed the era that Kwame Nkrumah had opened all those years ago, simultaneously concluding one chapter and starting another, both of which fraught with difficulties.

In keeping with these events, Robben Island was converted from a prison to a museum, highlighting both the conditions of its dwellers, as well as the importance of the causes they defended. Shahin and me have always been interested in issues of development and freedom. Having the chance to see the place that shaped the political mind of Mandela and many of the ANC cadres was an opportunity not to be missed.

The boat to the island leaves from the Waterfront, and as with many things in the museum, tourists are transported in the very same vessels that were used to transport prisoners more than two decades ago. I believe one of the captains was also a captain back when Robben Island was still a prison. The boats are small, and struggle to accommodate the huge numbers of tourists that flock to see the island, but somehow we all managed to fit in. They certainly were not designed to provide comfort. The trip itself is rather quiet, most passengers lost in their own thoughts, but there is no running commentary. One is left to appreciate the stunning views of the ocean, Cape Town fading in the horizon, the island drawing nearer and nearer.

Security towers at Robben Island.

At the island one is taken into a bus, and driven around. The first stop was the quarry. If you know a bit of Madiba's story, you are aware that he spent many years breaking stones in a quarry, working long hours in the baking sun. It was this work, compounded certainly by the time he spent in Joburg reading law books by candle light, that greatly damaged his sight. One can easily see how, just by staring at the rocks for a few moments when the sun is shinning; the light reflected back is so bright one has difficulty in seeing. Unfortunately for Madiba and his colleagues, no sunglasses or any other type of protective gear were allowed, and they had to work, day in, day out, facing the sun and its bright reflexion on the rocks.

The quarry had its positive side too. It was here that many political discussions regarding ANC's future where held. And it was here, many years later, that Madiba and many ex-prisoners came to honour those who gave their lives for the struggle. One could not stop feeling strong emotions when looking at the pile of rocks Madiba had started on that day. After talking for a bit, he just went quiet, gazed at the infinite, thoughtfully; and then grabbed a small stone, walked a few metres, stopped; and dropped the stone. Soon he was followed by every other ex-prisoner, and the pile was created. It is a great symbolic monument for the fallen, in a way much more significant than other more elaborate, more ornamental and artistic works of art. A simple stone, a simple pile, and yet so much profound meaning.

We were told of this and much more else, some things which we knew, others which we didn't even imagine. With few words, our quietly spoken but very articulated guide transformed an arid scenery into one of the great stages of politics and freedom of the twentieth century.

The departure from the quarry was done in a more somber mood, but darker shadows awaited us behind the walls. We were taken to the main prison buildings. Here we were handed over to another guide, with a difference: he was an ex-prisoner at Robben Island. He took us inside the building, and explained its many details. He made us see things as they once were. At one point, a bit into the tour, I noticed that he was a little shaken. This, in a person who does guided tours day in day out. Obviously not the best of professions. Then, with the tact that only a tourist would have, someone asked "If you hate this island so much, why do you work here as a guide?", to which he quietly and politely replied:

I would never ever come back here if I could. When I left prison, and after the regime change, I was unemployed for a long time. It was then that the government offered me this job. I had no option but to accept, there were no jobs elsewhere. But I'll never allow my family to come here. They still leave in Soweto. If I could I'd leave this job right now. This is an evil place.
The man spoke slowly and with great sadness, the words of a person reliving a dark past; a freed prisoner and yet unable to walk through the open doors of his cage. We all went quiet, even our inquisitive companion. I kept on conjuring images of freed American slaves that knew not where to go, and so just staid in their master's plantation. There simply was nowhere else to go.

We visited cells, saw the patio, saw many pictures of ex-prisoners, heard of those who never left and were taken by the island, of those who staid and learned how to read, write and got college degrees. As the boat took us back to Cape Town, the sun had cooled off dramatically and a bitterly cold wind was flowing from the ocean towards the coast.

It was the grimmest of days; it was the brightest of days.

The Bright City Lights

Cape Town is one of those popular places, the sort that you either love or hate. Unlike its European counterparts, like say Costa Del Sol or the Algarve, it does have some soul; its not just an hedonistic figment of the tourist's imagination. The biggest problem with it, though, is that the place we all visit exists only for a privileged few. The average Capetonian is much more likely to live in Cape Flats than in Long Street; and for him or her, the lights of the city are probably as foreign and exotic as London or Madrid. Truth to be told, it's probably much more accurate to describe Cape Town as one huge slum with a trendy little Cartier - a description to which, I'm sure, 80% of its population would eagerly subscribe to.

Young Capetonian selling The Issue

It may seem unfair to single out the Cape since places like Jozi and even Durban, not to mention Luanda, also have deep poverty side-by-side with massive wealth. The problem with Cape Town is that it's easy to forget about poverty altogether because you feel safe enough in the affluent streets; it's slums are far away enough as to be invisible. Other places keep you in check, constantly reminding you of just how lucky you are. Not Cape Town, though. You can quietly sip your lovely South African wine with your lovely, if somewhat dear, meal and be entirely forgiven for not knowing about the plight of those surrounding you.

Out of sight, out of mind.

Knysna

Our original intention was to depart from Cape Town and join in the Garden Route. Lonely Planet spoke highly about the steam train linking George and Knysna and we, never ones to go on a straight line, wanted to verify these claims. However, to our great disappointment, there were some extensive engineering works being carried out and trains were not running at all. The previous mishaps on short distance driving where enough to dissuade us to drive, so we hoped on a Greyhound and rode all the way to Knysna.

The Plattenberg.

After a very scenic bus trip, we arrived at Knysna and booked ourselves in the Knysna Backpackers. Incredibly, we forgot the lessons learned at Simon's Town and decided to walk from the bus stop to the hostel. The map told us we had a fair distance to walk - a stone's throw, really, if we had no luggage, but a considerable hike with 85 litres on your back. What the map didn't say, though, was that much of the walk was uphill. Less than half-way through and we were drenched in sweat, feeling pains in muscles you didn't even know they existed. It was a painful walk, one we swore not to repeat anytime soon.

At the hostel, we were received by very friendly staff. The accommodation wasn't luxurious - backpacker's places rarely are - but very clean and quiet, and we had a massive room for ourselves, located in a conservatory like part of the house.


Knysna is not a particularly big place, nor does it appear to get that busy. The town is mainly one big block where most shops and businesses are. On one side of the block there is hilly residential area where we were located; the other side leads towards the lake.

The town's main claim to fame is the Knysna Heads, located where the Knysna lake meets the sea. The Heads are huge cliffs, and they make navigation really difficult; the town is well known for shipwrecks, and every year a number of lives is lost at sea. The area surrounding the lake is has a posh Waterfront, with restaurants and shops as well as trips around the lake - and for the more adventurous, across the heads into the ocean and back.

We decided to go on a boat trip, but not being exactly brave, we settled for just going around the lake. The journey was rather pleasant but, unexpectedly, it did get cold at times and the blankets provided ended up being very handy. This is all the more strange when one takes into account that the temperature on land was over thirty Celsius, with very little wind. Once on the lake though, the wind factor lowers the temperature dramatically.

Enduring the cold was made much more bearable by the amazing views of the valley and the ocean. The mountains surrounding the lake are covered in lush vegetation, the odd house here and there. These are extremely expensive houses, and some even sport their own docks.


A bit further up from the Waterfront - not quite all the way in to town - there is this rather interesting Internet cafe called Chatters. The place is run by an English family, as their accents instantly betrayed, a very friendly bunch indeed. But here's the twist: Chatters is actually a Cafe, come restaurant with a couple of PC's. So not only can you get your Castle or coffee with your Internet connection, listening to good music all the while, but all of this is available for only 25 Rand an hour. Of course, 25 Rand is not quite as good as the 6 Rand an hour we used to pay in Durban, but it's much better than Mtubatuba's 50 Rand. The only catch was we had to buy 4 hours at a time to get the discounted price, but we liked Chatters so much we ended up spending hours on end there. The food was excellent; Shahin fell in love with their potato bake and deserts, and I absolutely loved their pizzas and coffee. But most of all, the people were really friendly.


Once all the local attractions had been explored, we decided to hire a car. This part of the South African coastline is fertile in estuaries and natural reserves, as well as other little towns nearby, and the car gave us the flexibility to visit these places on day trips. Three of the most memorable ones were Plattenberg Bay, Nature's Valley and the Canopy Tree.

Plattenberg Bay has a rather nice beach with big hotels next to it, a river-let flowing across town and then towards the sea. We spent a morning at the beach, eating a fantastic breakfast at one of the many beach restaurants and cafes available - all with large verandas from where you can idly gaze at the ocean. After a few hours in town it was quite clear that Plattenburg Bay would have been a better choice for a base camp than Knysna, both on the scenic side of things, but also because it seems to be a much livelier place.

At a platform on the Canopy Tree tour. The tree is over 50 metres in height.

Nature's Valley, as the name implies is a very much unspoiled valley, at the bottom of which lies a river. The hills are covered with lots of vegetation and wild-life is abundant. The river is small during the dry season, so much so that we walked in it all the way up the ocean. There we found a large beach, a vast expanse of sand mostly untouched by human action.

The last trip was the most exciting one. As usual, Shahin was brave in finding new things and booking us, but not quite so brave when time came for action. The concept behind the Canopy Tree tour is simple: a set of platforms are placed on top of very tall trees in a forest, each at a fair distance from the next, and the objective is to slide from one to the next over steel cables.

Whilst the principle may sound easy, in practice the experience is a bit daunting because of the height of the trees and the distance between them. Once we got there, Shahin suddenly realised what she gotten herself into and started panicking somewhat. To help things along even more, our guide had a brilliant sense of humour and spend much of his time scaring tourists with shouts along the lines of "STOP!!! Your cable is going to break!!!" or "Oh my god, you're missing a strap!!". And since the guide was only targeting women, all the boys had a great laugh looking at the faces of sheer fear of all the girls and their screams of panic. It was definitely an experience worth having, hurling yourself from one tree to the next at fairly high speed, looking down at the forest underneath your feet.

Port Elizabeth

When Knysna and surrounding areas started to become a bit boring, we hoped on a bus again and went off to Port Elizabeth. (Port Elizabeth is known to all locals as PE, an abbreviation which we quickly got used to, and that's what I'll use here too). PE didn't have much in a way of attractions, but it was a big city and big cities always have the advantage of being compact - something the Garden Route totally lacks - and it had a great beach.

As usual, getting to PE was easy enough, courtesy of the great bus system in South Africa; but getting from the bus stop to the hostel was a mission. We got there late at night, after a good delay on a previous bus stop because the bus driver refused to go until all the passengers were safe and sound inside their cars. An elderly lady was waiting for her lift, so the entire bus had to stay there and wait with her. At the time we didn't think much of it (hurry up woman!), but when we got into PE and were exactly in the same situation, suddenly we became great fans of this bus company and it's humane policies. In the dark of night, around eleven or so, there were no cabs at all waiting for passengers; and we had no way of calling them either. A few of us were on the same situation, but they managed to get cabs. We were the last ones left. You could see that the bus staff were there just waiting for you, unable to go anywhere until you did, and many a time I felt compelled to send them on their way. Fortunately, Shahin had a lot more common sense than me and stopped me every time I came up with such nonsense. After a good thirty minutes a cab finally dropped by and accepted to take us to our hotel, and the bus people were finally allowed to go on their way, back to their homes.

We were not entirely sure about our choice of taxi. The car looked as rundown as the average luandan cabs, something not as common in South Africa. However, it was a chance we were willing to take, all things considered. The taxi driver was a middle-aged coloured guy, full of advice about PE. "Heh, you were lucky, hard to find taxis at this time o' night hey? Very dangerous place that, shouldn't stay there for long.". He then proceeded to tell us all about the latest crimes and murders, explaining exactly why the bus terminal was not such a good place to be on your own. Of all the stories he told us, one I won't be able to forget. That was the hijacking story.

Hey, I was on my cab this one day with a woman, right? And then I stop and someone tries to hijack the car. A couple of white guys, responsible for lots of hijacks, everyone knew they were bad news. So I fight against them, they trying to kick me out of the car, and leave with the woman. I tried to get the woman out, like. Did it in the end, but they stabbed me. Going to court soon on that one...
That sure made us really quiet and worried. What sort of place were we getting ourselves into? At any rate, we got into our hotel before he had time to tell us another horror story - we had our filling for the night by then. That's when things turned for the better. Following advice of some fellow travellers, we decided to start investigating regular Hotels as well as backpacker's places. We were told that its often possible to get really good deals on hotels and guest houses, and in doing so we found a fantastic place in PE. It was all booked in the previous night, but we only really understood the luxury when we entered our room. I can't really call it a room, flat is more accurate. We had two bedrooms, one with en-suite, a massive balcony with a view to the sea, a kitchen and a living room with all DSTV channels. This was certainly the most luxurious place we had ever been to in all our travels. And all of this for 400 Rand a night. Regrettably, when we tried to book the whole week there we were told they only had it available for the one night and it was fully booked for the rest of the time. The one night and day in pure luxury was great though.

When we finally managed to leave the flat to inspected the city, we found out that our fears were a bit exaggerated. Yes, there are really dodgy parts of town and the bus station isn't very far from one, but at least the beach front and the area in which we were living wasn't bad at all - one could even walk around at night without too many problems.

The time we spent in PE was mainly dedicated to recovery. The Garden Route was quite exhausting, as we had to do long drives to get to places and move around quite a lot. In PE we did very little, all of it requiring only a twenty minute walk at most. One of the highlights is the small Oceanarium just by the beach, were we saw a live show with the dolphins. The show was excellent. It's hard to believe just how intelligent dolphins are. After the show, when everyone had left, we staid back and got to observe the dolphins playing on their own initiative, just fooling around the swimming pool. We spent at least an hour just looking at them, teasing them, trying to get them to play with us, to no avail. This experience made us even keener to go swimming with dolphins, they are just extraordinary creatures.


While I was recovering from my extreme tiredness, Shahin decided to go on a private safari game drive just to get a feel for it. As I mentioned previously, although I do like animals and parks to some extent, I don't share Shahin's extreme fondness for all things wild, and as such preferred to stay back and do some beach bumming. The reports from the safari experience were mixed. It was great to be able to see cats in the wild, something she didn't get to see much of in Durban. However, the park was extremely small. It wasn't so much that you spotted the lions, it was more like they couldn't really roam that far. All the cats looked extremely well fed, and not because they were being fed by a keeper; rather the cramped space offers little chance of survival to any type of prey, and the lions have to do little more than walk around and pick a zebra for lunch. In conclusion, Shahin wasn't entirely pleased with her private game reserve experiences. We were told that the Krugger park private game reserves are of a much better standard, something we no doubt will put to test in the near future.

View from our Hotel in Port Elizabeth.

PE does lack somewhat with regards to eating. There are many restaurants to choose from, but other than our hotel's cuisine and one or two pub-like places, we didn't like the food at any of them. It just didn't taste that nice, really. On the plus side, it was much cheaper than Cape Town. The worst places were definitely those closer to the beach. One of the places we did like was a tavern next door to Nando's, located on one of the smaller shopping malls. It had live music of excellent quality. Unfortunately the artist, a young girl with a guitar and a brilliant voice, didn't have an email, website or even a demo tape so we won't be hearing her again, we don't think.


As time went by we increasingly started to talk about going home. This is for several reasons. First, I didn't adapt very well to the backpacking life. I'm not very good at staying in a place for a day or two, then travel for ten hours and repeat the process. After doing this for a few days I start getting extremely tired, and not really enjoying most of the sightseeing. We affectionately named this process the Inverse Dina Effect, because my good friend Dina is unable to spend half-a-second unproductively on her holidays, and loves seeing everything she possibly can. Shahin is much more resilient to it than I am, perhaps because I am naturally lazy when it comes to holidays; I was brought up with the big summer holidays - ferias grandes - three whole months of sun, beach and laziness. I never quite grew off of it.

The second factor was malaria. After having it twice, I didn't think I could cope with a third bout. Shahin had it only once, but she was well aware of just how nasty it can be. And Mozambique was going through some severe floods at the time, the ideal conditions for mosquitoes and malaria.

The third problem was logistics. Due to my laziness and general inability of organising, Shahin had done most of the organisation on our trip. I could only claim some effort while at Angola, other than that she had sorted everything out. Slowly but surely it started to take a toll on her, and the idea of going to a country with a similar infrastructure to Angola made it all seem even worse. After all we had spent more than three days just trying to get a bus to Benguela, and that was one of the easiest trips! It was all too daunting after South Africa and it's web-based cheap flights, Greyhounds and organised trips.

With all of this in mind, we decided to cut our holidays short, skip Mozambique and return to England within little more than a week. It was a difficult decision, in particular because we knew we may never get a chance like this again. At the same time, there is little point in continuing to travel when you are no longer paying attention to the scenery, doing it purely to get stamps on your passport and tick boxes on your life's "places to visit".

It was all up in the air, until the point we went on line and booked ourselves on a flight back to London. There was no turning back then.

We spent a few more days in PE, mostly relaxing, but also genuinely looking forward to go home; to eat normal food, and see friends we hadn't seen for months. Normality acquired an attractiveness of its own.

Our last day in PE was a sleepless night, but not because we were worried about our next destination. An entire school of girls took over our hostel and literally spent all night, every single minute of it, talking. I knew women can talk, but these girls were aiming at some kind of Guinness Book record. We woke up absolutely knackered, got our stuff together and left for the airport.

We had one last destination to see before going home, the place where it all had begun all those months ago: Johannesburg.

Jozi

The Jozi we returned to was a very different place from that Johannesburg we had landed in November. Time allowed us to get to know South Africa and Africa a lot better, and now instead of fearing the city we finally started to treat it like any other place in the world. A place where one has to be cautions and use common sense, of course, but not exactly a war zone. This time we were determined to actually see a bit of it, rather than just escape some place else as we had done so many times in the past. And on the four days we had left, there were two things at the top of our list: Soweto and the Apartheid Museum.

With our newly acquired confidence we no longer felt we had to return to Gemini. Instead we booked ourselves in a hostel around the corner from the airport, the Purple Palm backpackers, and it turned out to be an enlightened choice. We were able to walk around on foot during the day for the first time in Jozi, going up to the shops (whole of ten minutes!) and back without any major incidents. The staff at the hostel was extremely friendly. We did managed to catch up with one of our old acquaintances from Gemini, Eric, the Minibus driver. To our surprise he was organising the Soweto and Apartheid Museum tour. It was great seeing him again. Events like these make you realise just how small our world really is.

A poor area in Soweto.

Our trip started with a drive around Soweto, followed by a short visit to a Church where police had attacked defenceless protesters. We then went to visit Madiba's house, a dingy little place where he used to dwell when he was living in Johannesburg. I must say I couldn't really get to appreciate Madiba's house, perhaps because there were so many tourists all crammed into a very little space. We could barely move. It was touching to see the place, but one would need to be there with a lot less people and with a lot more time to really be able to appreciate it properly. However, the house is highly popular with tourists so that is unlikely to happen in the near future.

Soweto itself is a puzzling place. It has some really affluent areas such as for instance where Reverend Desmond Tutu and Winnie Mandela live, as well as many famous South African footballers. And it also has areas which are extremely deprived. We visited one such area, hopelessly poor from the outside but full of dignity and pride inside. One of the makeshift houses was a clear example of this. Made with the most improbably materials, the house had a lovely little garden with colourful flowers, a clear symbol that people would achieve so much if only they were given the opportunity to do so.

Very much like Soweto, the Apartheid Museum is a place of despair but also a place of great hope. Its sad to see what human beings did to other human beings. It is also very sad to see how hopeless their cause was all those years ago, how little Europe and America cared for the oppression of millions of people. Africa has been the bastard child of the modern age, a fact all the more unfair because so much of modernity was only made possible due to the merciless, brutal exploitation of Africa and of the Africans. No industrial revolution would have occurred if it were not for the slave trade. No big multinational South African companies would exist today were it not for the unfairness of the regime, decade after decade. A lifetime of reading about Africa crystallises and becomes absurdly clear in a place like the Apartheid Museum. One picture after another bring back flooding memories of all those great men and women that fought so hard so we didn't have to.


After our excursion to Soweto, time completely escaped from our hands. Before we knew it we were being transported from our hostel to the OR Tambo airport, boarding a British Airways flight and landing in London. The weather was mercilessly cold on our arrival, very much in keeping with our feelings.

And so it was that our great adventure came to an end.

Nerd Food: Skype on Feisty AMD64

Yet another Feisty adventure, another one worth documenting in the hope it will save someone else's time. As all AMD64 users know, we're the underdogs of the Linux world. Actually, that's me playing the victim. Its not that bad in terms of open source applications - pretty much everything that works on i386 works equally well on AMD64. The problem is with the commercial applications. For me, the key annoyances are flash and skype. Until recently I had solved my problems via the chroot root (pardon the pun), but after upgrading to Feisty - a few days after, I hasten to add - and setting up wireless with WPA (a mission I never found the time to blog about, I'm afraid), for some unexplained reason, my chroot lost all network access. Not just wireless, mind you, wired as well. This was rather unfortunate, as there is very few things you can do with skype in the absence of a network. Instead of troubleshooting the chroot - the pain just seemed far to great - I decided to look for alternatives. One such alternative is explained here. Basically, it makes use of the ia32 libs. So the steps are:

1. Install the ia32 libs package in Feisty.
2. Download the skype static binary. I used this one.
3. Do an ldd on the binary, grepping for "not found". Note: if you skipped step one, ldd will produce a message similar to "command not found". This got me for a little while.

$ ldd ./skype | grep not

4. Download all the missing packages from ubuntu. In my case all I had to get was:

libasound2_1.0.13-1ubuntu5_i386.deb

libsigc++-2.0-0c2a_2.0.17-2build1_i386.deb
libxcursor1_1.1.8-1_i386.deb
libxfixes3_4.0.3-1_i386.deb

5. Unpack the libraries to a temporary directory:

ar -x libasound2_1.0.13-1ubuntu5_i386.deb
rm control.tar.gz
rm debian-binary
tar -zxf data.tar.gz
rm data.tar.gz
...

6. When you finish unpacking them all, you should end up with a usr directory, and inside of it a lib directory. Go to it, and, as root, copy all the contents to /usr/lib32. You may have to redo all the symlinks.

7. Run ldconfig. If, like me, you missed step 6 ldconfig will complain about the symlinks. I ended up making hard copies, so I had to delete the hard copies and re-symlink by hand.

8. As root, copy your new skype to a sane location such as /usr/local/skype.

9. Create a launcher on the destop. Suggested command:

/usr/bin/linux32 /usr/local/skype/skype

That's it! Certainly easier than a chroot...

Sunday, June 17, 2007

Nerd Food: Ubuntu in the Real World

After raving and ranting about Ubuntu so many times, I decided it was time to put it to the test in really demanding conditions. And there are no more demanding conditions than those set by children, in particular when they are nearing their teens. So it was that I installed Feisty in two machines and gave them to my nephews. After 24 hours, the experiment had already produced some interesting results.

The two machines in question are as follows:
  • Machine A is a 64-bit AMD, NVidia graphics card and 512 RAM (less than 4 years old);
  • Machine B is 32-bit AMD, ATI graphics card and 512 RAM (around 6 years old).
The installation in both was pretty straightforward, with all hardware detected. Additional software was easily installed via Synaptic. After the easiness, problems started to appear.

Problem one is related to the well-known issues with ATI cards. Enabling restricted drivers doesn't seem to do anything at all (finds none suitable to my card), and enabling desktop effects without binary drivers results in some kind of video corruption (there's a 5 centimetre area on the right side of my screen that doesn't appear to be used). Even if I had managed to get the ATI card going with binary drivers - which I don't think I would have as this particular card is really old and unsupported - but even if I did, I would have had to setup XGL in order to use compiz, which is really not something I think the average user should do. On the positive side, NVidia support is brilliant. All I had to do on machine B was to enable the restricted driver and enable desktop effects. Compiz was up and running in no time.

Problem two is related to flash and 64-bit. There is no available Firefox/Epiphany plug-in for flash, a vital element of the browsing experience for any young kid these days. I could have gone and installed some less standard flash support, but again, this is well beyond the call of duty for a normal user.

Problem three was DVD playout. I never quite got Totem-GStreamer playing encrypted DVDs. Not sure if it's me being thick and not understanding how to configure decss for GStreamer, but regardless of the underlying causes, my solution for this problem has always been to install Totem-Xine. In addition, I never quite got subtitles working with Totem-Xine so I play all movies requiring subtitles from XineUI (and here, for some reason, I never quite managed to increase the subtitle's font size but at least they're there). None of these steps make sense to the average user.

At this point I had the machine sorted out, and ready for my two eager customers. The first one was impressed with her desktop for a few moments, until she realised I hadn't installed The Sims. Now, as far as games go, she isn't much of a gamer. In fact, for the last couple of years she only bought two PC games: The Sims and The Sims expansion pack. So yes, this was a vital requirement for the experiment.

Problem four: the dreaded Sims. The installer worked well enough, as well as one could expect on a windows box even, up to the point when it finished CD 1. You are then expected to insert CD 2 and continue the installation. Alarm bells started ringing at this point. You see, UNIX and Linux have a very special relationship with devices. When you mount your CD and start running applications from it, its neigh impossible to unmount it until you close all the open files you have on that device. In my particular case I had cd'd to /media/cdrom to run wine start.exe. This basically meant I could not unmount the cdrom properly until I exited from wine, but I couldn't really exit from wine until I got CD 2 mounted. I was about to restart the whole process again when it occurred to me that even if I didn't cd into that directory, I would still have start.exe as an open file (I needed to run it, of course) which meant that I would not be able to unmount the device. I'm not sure about this but logic seems to imply that wine cannot cope with installing programs with two or more discs because of the underlying UNIX mentality. I hope some wine person will prove me wrong.

The temporary solution was to copy the contents of disc 1 to a local folder and execute start.exe from there. This worked a treat until I got to disc 2. Here, for some random reason the installer refused to recognise the disc. Because the installer gives you absolutely no clues as to where it is looking for disc 2 I couldn't tell if there was something wrong with the CD or if it was just looking in the wrong place. After much fiddling it occurred to me that the installer was probably looking for disc 2 on the local directory. However, disc 2 had a similar structure to disc 1 (same setup directory) which meant I couldn't just copy it over disc 1. My final solution was to rename disc two's setup to setup2 while installing disc one, and then renaming setup2 to setup when it asked for disc 2. This perverted experiment actually produced the expected results and the installation completed successfully.

However, the problems were far from over. After all that pain, the sims.exe binary simply refused to launch. It would start but do nothing afterwards. The problem appears to be as reported in the wine DB here and here. There isn't much I can do until wine support improves for the sims. As one would expect, this did not please my user at all.

Problem five: the crash. When I thought everything was quiet and everyone was happy enough, it all collapsed in front of me. Two kids were happily playing with the machine when electricity suddenly went off. On reboot, they were stuck on the fsck screen, at which point they proceeded to randomly press keys and switch the computer on and off, probably several times, in a desperate attempt to fix it. Apparently this technique worked quite well with their previous box running Windows 95.

This, methinks, is one fundamental problem with the current Ubuntu boot. If some operation takes too long, you are thrown back in to the console with huge amounts of text output. This is fine for a nerd user but an absolutely scary experience for any user. It would be much better if one could have some kind of user interface with a massive warning saying "DO NOT SWITCH THE COMPUTER OFF" or something like that. Text mode just scares people off, and when it is compounded with things like "running fsck" then there's absolutely no hope of survival. The end result of all of this was that the machine was rendered unbootable by the time I got there. Yep, you read that right. First time it went all the way to fsck again and froze, second time it froze on grub, the exact same point it froze on for the subsequent twenty reboots.

So here I am on the local Internet cafe, downloading an Ubuntu amd64 ISO image, preparing myself to re-install it yet again. Ele há dias...


Monday, June 04, 2007

Nerd Food: Merging and Branching Procedures

It seems version control is a popular topic again, thanks to the ever courteous Linus. If you haven't seen the talk he gave at Google, do watch it as it's quite interesting. Linus, in his usual so-offensive-its-funny style, criticises SVN to death. I got to say that I quite like SVN, perhaps because I've been forced to use ClearCase, SourceSafe, RCS and CVS for far too long. My only complaint with SVN has always been the terrible merging, something that Linus rightly criticises on his talk. The good news is it appears the most severe problems with merging will be fixed on the next SVN release.

Linus' talk did make me more aware of distributed version control though, but I'm not entirely convinced it would work in a commercial software house. After all, we already have a hard time with branches - let alone having multiple repositories...

All this talk about version control reminded me of a set of procedures for merging and branching I once wrote. I can't take all the credit, of course, since my good friends Kevin and Chris - the ClearCase genius - fixed some mistakes and added important bits. Here is the procedure, in the hope that someone else may find it not entirely without merit. Apologies for the (lack of) indentation.

Merging and Branching

1. Trunk (HEAD/LATEST/[insert version control term here]) is always compilable and stable.

2. When a new project is started, a set of branches are created:
2.1. Integration branch: off trunk;
2.2. Branch for each developer (or whatever the required granularity is, one branch per 2 developers, etc.): off the integration branch;
2.3. All branches should be named sensibly and follow a repository-wide convention (e.g. PRODUCT_TEAM_PROJECT or something equally meaningful).

3. Each developer works on his/her own development branch. Developers must check in every day (PC never contains unsaved data), but are encouraged to do so more frequently.

4. When the developer is happy enough with his/her changes, he/she "rebases" (aka forward merges), that is:
4.1. Updates development branch to the current state of the integration branch (this should be done as often as possible anyways);
4.2. Ensures no one else is merging to the integration branch;
4.3. Tests development with the new changes (in theory runs his/her [J|N]Unit tests, in practice, well... :-)
4.4. "merges back", that is updates integration branch to the state of the development branch;
4.5. Features should be merged one-at-a-time, that is if a developer is working on 5 features for a given release, he/she should merge to integration each feature at a time, allowing other developers to pick and test each change rather than one huge patch.

5. While the project is in development, the integration branch may be rebased from the trunk, but never the opposite (see small bugfixes below).

6. When the project enters development testing (feature freeze):
6.1. All developers rebase from integration and merge back to integration as described above;
6.2. Developers test the current state of the integration branch (normally this means validating the functionality they've coded). Integration branch is by now equal to dev branches;
6.3. Bugfixes are applied to development branches, and rebased/merged back to integration (iterate till right).

7. When integration branch is ready for a release to QC (UAT):
7.1. Release branch is created with unique release number, off integration branch. (i.e. release is "labeled", but this is equivalent to branching in SVN). All dev branches are locked;
7.2. Release is shipped to QC and release branch is locked;

7.3. If release passes QC, ship it. If release needs another spin:
7.3.1. Bugfix branch is created with the bug ticket number and the version number. This is off the integration branch;
7.3.2. Bugfix is made, tested in bugfix branch and rebased back to integration;
7.3.3. When all bugfix branches have been merged in, integration branch is dev tested;
7.3.4. New release branch with release number is created and tested. rinse, repeat;
7.3.5. If required, a "special" release branch is created for the final release so we can distinguish between release candidates and final release.

8. When a release passes QC and is shipped:
8.1. No one is allowed to merge back to trunk (this has to be serialized across all teams using the trunk and must be done asap after the release);
8.2. Integration branch, which at this point is identical to the final release branch, is rebased off trunk;
8.3. Integration branch is tested (QC should get involved);
8.4. Integration branch is merged back into the trunk;
8.5. At this point the release is complete.

9. Small bugfixes:
9.1. Branch of trunk with version number and bug ticket number (just integration branch will do, no need for dev branches);
9.2. Do bugfix in integration branch;
9.3. Dev test integration branch;
9.4. Create release branch off integration branch;
9.5. QC release branch;
9.6. Ship;
9.7. Rebase / merge back to trunk.

10. Ideally, once all the merging is done, branches should be deleted IF the version control system keeps the history of the merged files. This greatly avoids clutter (i.e. you can actually find a branch when looking for it), makes the repository smaller and improves the performance of a few operations.

11. Ideally you should be running something like CruiseControl on selected branches (such as HEAD and integration).

Saturday, June 02, 2007

Nerd Food: On Ubuntu, DELL and the Playstation 3

Unlike many ubunteros, I'm not entirely pleased with the DELL "victory". I mean, I was initially, but reading the small print made me cringe uncontrollably. As a quick summary, for those not following the latest developments, DELL setup a suggestions website called IdeaStorm which was quickly swamped with "I Want Linux" comments. First DELL thought they wouldn't be able to pick and choose from the myriad of available Linux distros, but eventually someone upstairs concluded that Ubuntu was popular enough. As a result, DELL now has a limited range of models with Ubuntu pre-installed (a better description is available here).

While the idea is a good one in principle, the devil is in the details. These machines will not be able to play any of the codecs modern users require, and there will be no DVD support (as in, you can't play movies in encrypted DVD format). This comment is very much telling about the Linux attitude towards the codecs: "they are not free!", "you'd have to install them on windows anyway!", "it's not that hard!".

I've criticised this attitude in the past and will have to do so again. Just because Microsoft, the biggest desktop company in the world, can get away with things, it doesn't mean that all aspiring desktop-wannabees can do it too. Mac is gaining market share because their stuff "just works" - or at least, its perceived as such by everyone. We're not trying to be like Microsoft, we're trying to improve on them. I'm not a stategist, but it seems obvious that DELL and Ubuntu should have talked with Fluendo first before embarking on this adventure and made sure the full range of codecs was available as standard. This would have been great for all parties involved. Fluendo would have agreed to a massively discounted price, a still rather rewarding proposition due to the potential in terms of volume. Codeweavers could have also had a piece of the pie, since software such as iTunes is popular with the crowds. This would have been a more challenging proposition a) because Microsoft seems to dislike Wine quite a lot (and for all we know explicitly asked DELL not to include it) and b) as people start installing random Windows software, the support overload would grow beyond DELL's capacity.

I know Ubuntu has tried to make configuration of codecs and restricted drivers easier but to be absolutely honest, both failed when I tried to use it. The technology does not appear to be entirely mature yet. Now, if the same happens with the newly converts, they will most likely say that "Linux does not work". This was a great chance to woo new users with the beauty of Compiz (if not Beryl), GStreamer et al, but I cannot help but think that a lot of new buyers will end up giving up on Linux because they won't get the whole "configuration" thing. And it's not because Windows is easier to configure; its because Linux is configured differently, and the 50 or so USD you save are not enough to compensate the time needed to learn a new way of doing things.

Which brings me neatly to my next topic. Even more important than DELL is the Playstation 3. There are over 6 million PS3's out there. Some estimate Ubuntu to be installed in 6 to 20 million computers worldwide, so adding 6 million to that number would have a major impact. And the relationship would be entirely symbiotic, since Sony managed to price the PS3 out of the console range and into the low-end PC range; it is possible to buy a DELL model, including a TFT monitor, for around the same price of a PS3 - which is, of course, monitorless. I personally wanted to get a PS3 and use it as a PC, but was not amused when I found out that much of its functionality doesn't work under Linux (including accelerated graphics, wireless, problems with sound - and let's not forget that Flash seems to be 32-bit x86 only at the moment). Not only that, but the entire installation process is non-trivial, meaning that only die-hard ubunteros are going to go for it.

Now, you tell me: if you were a manager at Sony, would you not have started talking to Linux vendors long before the PS3 was due to launch to ensure Linux would be 100% compatible with your hardware? And would you not select a Linux vendor and pre-install the distro? After all, many console users are not IT savvy, they see the console as yet another "white good" in their house. If not, ask youself: what is the point of buying a "'Computer', Not A Console", as Sony's CEO said, if it has no decent general purpose software on it?

Its hard not to feel that we've wasted two great opportunities to fight for market and mind share.

Update: check this for some pics of the setup of a new DELL laptop.

Thursday, May 24, 2007

Nerd Food: On Maintenance

The many years I've spent working for the bespoke industry and using free software finally made me understand the obvious: the single most important aspect in the whole of software development is maintenance. Yes, you heard it right. Its not the language, not the platform, not the methodologies, not the technologies involved, not even the pretty Gantt charts. All these tools are important, of course, but if one looks at the entire lifespan of a program, maintenance overshadows every other aspect by a wide margin. You may think I'm not saying anything new here, and with good reason. Classic texts like Bertrand Meyer's Object Oriented Software Construction already pointed out that the highest cost in a software project is maintenance; Meyer was not the first, by far, to pick up on this. The problem was not with their diagnosis but rather with the cure they proposed. Allow me to expand on this.

The first thing one must realise is that code is in itself the only complete system specification there is. I'm not going to spend much time explaining this view of the world since I cannot possibly improve upon Jack Reeves' "What is Software Design?". Any experienced developer knows that the only way to really understand how a system works is by looking at the source. Let's face it, in the real world manuals don't exist. Comments are sketchy and, more often than not, totally wrong. You may get developers to write good documentation on the early stages but in all these years I'm yet to see a large five-year old project properly documented. The only thing you can always rely on, the only thing that truly documents the behaviour of a program is its source code. I know, I know, you'll bring up Knuth and literate programming. Unfortunately, I have no option but to check-mate you with real world experience. Sad truth is, most people don't even know about Knuth. While Doxygen et al are nice and make documenting much easier, very few people bother making sure the text matches the source when they are on a tight deadline, and the life of a bespoke developer is nothing but one tight deadline after another, ad infinitum. You can imagine your project manager's face when you explain that the deadline won't be met because you still need to finishing off commenting.

Speaking in very empirical terms, most projects seem to have an average lifespan of around seven to ten years, with the caveat that the final stage can drag on for a very long time. The first two or three years are all about adding large amounts of new features, cramming in as much as possible in the shortest possible time. During this period, lurking in the shadows, there is a steady increase of complexity. If these things were easily quantifiable, I'd expect the data would display a high correlation between the number of added features and the increase in complexity (i.e. each feature dramatically raises the complexity bar). Thus, adding each feature (and fixing each bug) starts taking longer and longer over time. At some point the project will reach the "complexity barrier"; this is the point at which adding new features (or fixing existing bugs) is so expensive that it's cheaper to create a new product from scratch, one which addresses all the "scalability" issues that the current system cannot. At this point the code-base is kept in "life-support" mode, with a bare minimum number of developers working on it to keep existing customers happy, but unable to do any fundamental changes to the project's core. If any new major features are required, they are implemented by extremely complex workarounds over existing architectural deficiencies. Eventually, the next generation system leaves the sheltered green house and is ready for deployment. Customers are moved over with varying degrees of grumbling, but with little choice on the matter. This pretty much describes every other project I have worked on over the last decade, some of them in different stages, of course, but all of them describing the exact same arc. First, let's make this clear: this methodology works. Companies are making ridiculous amounts of money by religiously following it, and at the end of the day, from a financial perspective, all that matters is the bottom line. However, this can't be The Right Way from an engineering perspective. I'm afraid you'll need your engineering hat on for the remaining of the article.

Lets step back for a second and reflect. Why do we throw away code-bases in the bespoke market so readily, when both commercial and open source shops do it a lot less frequently? It's all to do with the development process. Truth is, bespoke projects die _by design_; their environment is so entropic and hostile that they cannot but die. Software development changed fundamentally when the day to day running of a project was taken from the hands of programmers and handed over to professionals. In time, project management became a science in itself, complete with its own language of Gantt charts, milestones and deliverables. The entire development ecosystem in which we now live is geared towards delivering more and more features in ever smaller timescales by people who have less and less technical ability - i.e. people that think at ever higher levels of abstraction. The first victim in this quest for "time to market" is the code-base. When a developer is asked to implement a new feature the key question asked by a good project manager is: can you "reuse" some of the existing infrastructure to do this? The project manager may not even know what reuse means technically, but he knows that "with reuse" the estimates are much lower than "without reuse". So "reuse" is good, writing from scratch or re-engineering is bad, really bad. The developer will most likely explain that the existing infrastructure was not designed with the new feature in mind, and so, given the current timescales, there is no option but to bend the code-base beyond shape to shoehorn the functionality in (also known as a kludge). In the ears of a good project manager this is equal to "yes, we can reuse the existing infrastructure, we'll sort the mess later". Alas, later never comes. Eventually, after years of kludges to deliver features, the code-base becomes so unmaintainable - so complex - that it is cheaper to write a new system from scratch than to maintain the existing system. The complexity barrier has been reached, the dreaded point of no return.

What the project manager fails to grasp - or does not want to grasp - is that the code-base is in itself a repository of knowledge of sorts; the summary of the experience of a large group of developers over a long period of time attempting to tame a given problem domain. To make an extreme analogy, this is akin to someone taking every single copy of every volume of The Art of Computer Programming, writing a few sketchy notes about in fifty or so pages and then burning the books, happily thinking that all important detail has been captured. You'd think that most software houses would understand the importance of the code-base as an asset; after all, ask to take a copy of the code home and you'll have the police breathing down your neck in seconds. However, this sort of behaviour is a bit like the attitude of the peasant who keeps his money under the mattress, not really knowing what it's worth but thinking that it must be really important. Companies don't really understand the value of the code-base. If they did, they would take _really_ good care of it. Instead, they treat it like any other perishable resource, a computer or a car, a trite commodity spewed out of a production line of developer drones. The decommissioning of a software system should always be seen as an immense tragedy, a great loss of knowledge. Management is just not able to comprehend the amount of detail that is contained in a code-base, detail that simply cannot be transposed to a new system and will have to be rediscovered. Problem is, an existing code-base hasn't got an easily computable dollar value - man years are a very bad way of estimating effort nor is it possible to estimate the cost of a yet-to-develop system - so we're all in the dark. (Not being an expert, I'm not going to try to propose ways of valuing an existing code-base, but whatever methodology one comes up with it is bound to produce some astonishingly high figures.)

Unconvinced, you may ask, what is so wrong with starting new projects? After all many lessons can be learned, new technologies can be used and the end result will be a faster, more featureful, more maintainable system. Before everyone starts chanting "oh, you luddite in disguise", it's important to bear in mind the following:

  • The failure rate for new projects is extremely high;
  • Incremental changes have a lower risk, whereas big changes are always highly risky;
  • Its much easier to estimate costs and timescales in an existing project which has been running for years rather than on a new one, for which baselines are yet to be created;
  • The second system effect forces architects and developers to create new projects that aim to boil the ocean and use every other new technology, adding even more variables to an already complex problem;
  • New systems introduce a host of new bugs; you're basically trading an existing set of bugs that are either known, or not known but also not known to seriously impact production, with an unknown (but almost always large) quantity;
  • You'll need to find new people or retrain existing people for the new skills required - particularly on the developer side, but quite often in the user side too;
  • Your system and component requirements will almost always miss vital features or important little bits of detail and ignore many of the lessons already learned simply because the latest crop of developers writing the specs is not aware of them;
  • Your project planning will almost always underestimate the complexity of implementing some or all of the existing features;
  • Your project managers may be excellent at managing an existing system but totally inexperienced at managing at this huge scale of uncertainty;
  • Your developers may be excellent maintainers of an aging code-base but terrible green house developers, getting continuously lost in blue-skies approaches;
  • The architecture of the existing system may not transpose very well to the new technologies your developers insist in using, limiting reuse even at this fundamental level.

As you can see, replacing an established system is close to spending a million dollars in a casino over a few months. If you do win, you'll make a fortune - but the odds are heavily stacked against you. For all the reasons above - and probably many more which I failed to uncover - it is vital to try to keep an existing code-base running healthily, avoiding the complexity barrier at all costs. In order to do so one must maintain a system properly. This entails:

  • Removing functionality which is no longer necessary, thereby reducing complexity;
  • Looking for opportunities to refactor existing code into separate modules, and replace existing modules with open source libraries if suitable ones exist;
  • Tracking and fixing _all_ reported bugs;
  • Ensuring the code compiles with no warnings at the maximum warning level;
  • Refactoring code when implementing new functionality that does not fit the existing infrastructure;
  • Continuously measuring system performance, ensuring it does not degrade over time;
  • Ensuring consistency with existing standards and conventions, avoiding in-house protocols;
  • Improving readability of existing code;
  • Regression testing the code-base after changes;
  • Striving for platform independence;
  • Making continuous releases after changes to ensure there isn't a feature pile-up; in other words, release early, release often.

Yep, you've noticed it. These are all obvious tasks, pretty much the standard you'd expect from an average free software maintainer. Unfortunately, for reasons outlined above, these tasks are rarely present in bespoke software houses' project plans. You may find that some commercial off-the-shelf shops actually take maintenance seriously, but most bespoke houses just can't afford to spend the required time on maintenance. IMHO, herein lies the key, the biggest needed change: project managers have to start allocating slots for maintenance. They have to treat maintenance work like they treat enhancements, allocating adequate resources for it, asking developers to make and keep updated a list of top issues in the code-base and make sure these are addressed.

The intrepid reader may reasonably ask: but what if the system is designed in such a way that a large new feature just cannot be implemented within its framework? To that I must counter that _no_ feature is too complex as to be unimplementable in _any_ existing system which has been well maintained. This is a fallacy in which I believed for many years but which I think has been comprehensively disproved by many projects such as the linux kernel, GTK and Qt. Take the kernel. If a system that was designed to run only on x86, with no virtual memory, minimal driver support, minimal filesystem support and all sorts of other constraints can be made to do what linux does today then any project can do the same. I mean, the v2.6.x kernel has excellent portability, large SMP scalability, close to real time scheduling, and many, many more features that are all but impossible when looking at them from a v0.0.1 perspective. Linus feels quite strongly about the fact that the kernel was not originally designed to do any of these things, but _evolved_ solutions to these problems over time and in many cases these solutions work extremely well. The question is not whether it is possible or not, but rather how much effort is required to get there. And any discussion about resource allocation must always take into account the huge benefits of keeping the same code-base.

The other important aspect of maintenance is code-base reduction, mentioned on the first two points above. Code-base reduction may appear counter-intuitive at first sight; after all, new features must require adding code. However, the best way to look at this is from a resource allocation perspective. There is a finite number of developers, call it d, working on a code-base of a given size, say s. Let's call c the ratio between s and d. I always dreamed to come up with a law, and here finally is my chance: Craveiro's law states that the higher c is, the harder it is to maintain a code-base. Of course, this is a highly empirical law, but useful nonetheless. Now, there are two very straightforward ways of reducing c: either increase the number of developers until you meet Brook's law, or decrease the size of the code-base until you start impacting required features. The latter is more interesting, very much reminiscent of St. Exupry: a designer knows he has achieved perfection not when there is nothing left to add, but when there is nothing left to take away.

Since you can't literally start removing required functionality, the next best thing is to find other people who are willing to share the maintenance burden with you, reducing the individual maintenance cost (if not the overall cost). This is routinely done in open source projects, and it is incredibly successful. Basically, you want your developers to aggressively look at parts of your code-base which offer no discernible competitive advantage; once located, these are stripped out of the system and added to your company's portfolio of open source components. These have an important strategic value and should be managed very carefully (a community needs to be developed around them, the maintainer must listen to the community, etc.). The end result should be a significant reduction in your core code-base size.

I'll leave you with a couple of interesting corollaries from Craveiro's law:

  • Like many other "new" technologies, OOP by itself does not help or hinder the maintenance problem. Regardless of how elegantly your system is designed and implemented, if you are not maintaining it properly it will die. Conversely, a system designed in perl that is actively and adequately maintained may prove to be extremely resilient to time. _However_, choosing a popular language will have an important indirect impact on maintenance because it will define the size of the developer pool you can tap.
  • Java and C# are incredibly useful programming languages, but not for the reasons you might expect: i.e. not because of garbage collection, nice syntactical sugar, improved security or the VM. The one key element that distinguishes them from most other languages is their extensive and standardised class library, readily supplemented with huge amounts of open and close source components. These reduce the footprint of your code-base dramatically. Why are these languages better than say Delphi or RogueWave's extensions to C++? Because they insure vendor independence by standardising most of their interfaces.


VITORIA!!! VITOOORIA!!!

Incredible. After an exhausting season, Vitoria finally managed to stamp its ticket and remain in the superliga (the Portuguese equivalent of the English premier league). Its hard to believe we made it since it was one of those rather improbable events: two teams had to loose or draw and we had to win away. One of those teams, Beira Mar, had a cushy job since they were playing at home against a reasonable but beatable Pacos de Ferreira. In the end, after much, much suffering, the boys managed to bring it home. There were hundreds of faithful Vitorians who made the trip all the way up north to cheer the team on, and I don't think we would have done it without them. The victory was so huge that it even caused some fans to slightly lose track of reality over at the forums, so let me just clarify this: no, we're not the champions, we just managed to stay in for yet another season of pain and excitement.




Vitoria does make things hard for itself. It was yet another of those soap opera seasons, with managers getting fired, money gone missing, wages unpaid, players threatening to leave, players leaving, new Presidents, new financial partners that never quite materialise, the whole nine yards. A pretty standard season as far as Vitoria is concerned but hell on earth for any other club I can think of. No wonder Carlos Cardoso does not want to take up the job next season. I secretly believe that he spends the first few months of the season recovering from the previous season and getting mentally ready to take over as caretaker manager... Let's see what the new boy is all about...