// why am I so n00b?

Seems like it’s only been 4 years since the last time I did this. Really feels a lot longer.

Anyway, I was becoming rather annoyed with trying to keep Ruby Gems and things updated and working, with plugins breaking and stuff with Jekyll, and I recently built a few other websites using Hugo, which made me quite keen on switching.

Hopefully everything’s carried over properly with all the right URLs and things. I’ve also tried to improve some things, and will be expanding the Projects section which I feel doesn’t represent everything that goes on.

As for the style: I just wanted to do something a little more fun and retro looking.

My first website (“Shrimp’s Maps”, the precursor to “ShrimpWorks” and the first website I ever made, which I used for sharing Unreal Tournament levels in early 2000), featured a silly “tech” look with blue gridlines and a cool angular header graphic thing, and all the text was monospace Courier New. Unfortunately it’s completely lost in time.

Once I upgraded to Wordpress in ~2005 after using a system called Geeklog for a while after Shrimp’s Maps, I adopted the content-with-sidebar style, which I switched away from at some point in favor of menus, so for more throwback fun, I’ve replicated that old layout style as well.

It’s perhaps a little busy, but everything’s going to “clean” and stripped down these days, a bit of busy-ness is not the end of the world :).

Here’s how we looked in 2005! Thanks archive.org!

Here’s how we looked in 2014!

And here’s what we’ve just come from.

I recently spent some time in Australia, specifically Sydney and Melbourne, and took a bunch of photos from a few parks and interesting places in Sydney (unfortunately I was pretty ill and didn’t get out very far in Melbourne).

I really enjoyed the number of parks and amount of greenery around the city centres.

All the Sydney images are up here.

the moon

Today’s solar eclipse, as viewed from Johannesburg, South Africa, through the lens of a Canon SX50 at 50x optical zoom, through some eclipse viewing eyeware from the 90s.

I’ve been meaning to do some posts on setting up a Java build process using Apache’s Ant and Ivy, but never really get that far.

I’m a fan of allowing build dependencies (beyond the actual Ant binary itself) download automagically as part of the build, rather than requiring the developer to download and install a bunch of different tools and then orchestrating them via Ant. Essentially you should be able to install Ant, grab the code of something you want to build, and execute it.

To this end I have spend many hours trying to get the FindBugs static analysis tool and it’s requirements downloaded as Ivy dependencies as is possible with most tools, but gave up due to some rather weird and seemingly hard-coded dependency paths and file names within the FindBugs project.

Therefore I gave up and just have it downloading using an Ant “get” task, which feels a bit brute-force, but sometimes you need to compromise. Here’s my solution, presented as an all-in-one Ant target:

arrow Continue Reading ...

Here’s a couscous salad recipe I used recently, made by stealing ideas from about 3 other recipes and tweaking a bit of customising. Would eat again :-)


  • 1 cup couscous
  • 1 cup water
  • 200g cherry tomatoes
  • 1/2 cup spring onion
  • 1/4 red bell pepper
  • 1/4 yellow bell pepper
  • 1/4 green bell pepper
  • 1/2 cup crumbed feta
  • Dressing:
    • 75ml canola or olive oil
    • 25ml lemon juice
    • freshly ground salt and pepper


  1. Place couscous in a sealable bowl, boil the water, then add boiling water to couscous. Cover and allow to sit for 5 to 10 minutes. Once ready, fluff with a fork.
  2. Cut tomatoes in half, finely chop peppers and spring onions, and mix into couscous.
  3. Dressing: Thoroughly mix together oil and lemon juice, and mix in salt and pepper as required.
  4. Before serving, mix in feta and dressing.

This is a republishing, with some minor tweaks and alternatives provided, of the original recipe by Andrew Muller. I could not find some of the ingredients in local shops, so had to slightly tweak things.

I’d also recommend against using paper muffin cups, as the first two tray-fulls of these were so stuck to them half the muffin content ends up going to waste.

The ingredient volumes below make about 20-30 muffins depending on how big you make them.

The Recipe

  • 2 eggs
  • 1 tsp. vanilla
  • 2 cups unsweetened apple sauce
  • 1 banana, mashed
  • 1/2 cup agave (alternative: ~100ml honey mixed with ~50ml hot water to achieve similar consistency)
  • 5 cups rolled oats
  • 1/4 cup flaxseed meal (alternative: 1/2 cup wholewheat flour)
  • 1 tbsp. ground cinnamon
  • 3 tsp. baking powder
  • 1 tsp. salt
  • 2 cups milk (almond milk for dairy free)
  • Optional toppings: raisins, walnuts, almonds, chocolate chips.


  1. Preheat oven to 180 degrees celcius. Mix eggs, vanilla, apple sauce, banana & agave.
  2. In a separate bowl, mix oats, flax, cinnamon, baking powder and salt. Pour the dry ingredients into the wet ingredients. Finally, pour in milk and mix.
  3. Spray a muffin pan with baking oil or use muffin liners. Pour batter evenly into each liner. If using toppings add them onto tops of muffins now.
  4. Bake 35-40 min, test with toothpick if it comes out clean the muffins are done. Cool and enjoy, or freeze in freezer bags if you plan on storing them more than a few days.

Yes indeed, I am posting a recipe now.

This recipe is a combination of a few, and some customisation.

Cheese Sauce - Ingredients:

  • 2 Tbsp margarine
  • 2.5 Tbsp flour
  • 1 cup cream
  • 1 cup milk
  • 1 cup grated mature cheddar cheese
  • 1 tsp cayenne pepper (optional)

Cheese Sauce - Method:

  1. Melt the margarine in a saucepan until it starts to bubble gently
  2. Slowly mix in the flour, ensuring it’s thoroughly smooth
  3. Very slowly, bit-by-bit, mix in the cream and milk, keeping the mixture as smooth as possible
  4. Once all the milk is in, you should now have a smooth creamy white sauce. Mix the the cheese and stir until melted
  5. At this point, you may optionally stir in the cayenne pepper, or other spices of your preference

The same cheese sauce can be used for making macaroni and cheese :).

Potato Bake - Ingredients:

  • 5-6 medium-sized potatoes
  • 0.5 cup onion, sliced
  • 0.5 cup grated cheese
  • Freshly ground salt and pepper

Potato Bake - Method:

  1. Pre-heat oven to 180 degrees Celsius
  2. Wash and slice potatoes (peeling optional - I did not peel them) into 0.5-1cm thick slices, and cover the bottom of a casserole dish with one layer
  3. Place a third of the onion slices on top of the potato slices and add salt and pepper
  4. Pour out a third of the cheese sauce over the onions and potato
  5. Repeat layering an additional 2 times, and top with grated cheese over the final layer of cheese sauce
  6. Place in the oven and bake for 1 hour

DONE. Now stuff your face!

This past week, I was supposed to be visiting Mpumalanga’s Parorama Route, taking in the views around the province, and capturing all manner of awe-inspiring photos of Pinacle Rock, God’s Window, and whatever else was visible. Unfortunately, not a lot of anything was visible at all, since my visit perfectly coincided with some extremely heavy fog and rain covering the entire area.

Fortunately, I was surprised to find that I didn’t much mind missing the views, as I was entertained by something much more interesting: the roads.

The same hills and mountains which provide the (supposedly!) stunning views, also need to provide a way to get up there to experience them. Fortunately, the local government seems to have seen fit to upgrade and maintain pretty much every road in the area - no doubt as a result of the 2010 Soccer World Cup, in an attempt to attract and impress visitors to the area. This has left the rest of us with some brilliant roads to enjoy, in a relatively undertrafficed area.

To start with, coming from Gauteng along the N4, I got off the highway and onto the R36, towards Lydenburg (Mashishing). This was the worst road on the trip, covered in potholes and dilapidated patchwork. There were some amazing views, though, complimented by the odd troop of baboons along the side of the road (no, I did NOT get out to take photos).

After Lydenburg comes the R37 and Long Tom Pass. I only really expected the first section - through the Makobulaan Nature Reserve - to be interesting, and it certainly was, especially in dense fog. The steep downhill sections of sharp corners flowing corners were certainly highlights, but I was surprised to find the entire R37 to Nelspruit an extremely enjoyable drive, even with a fair amount of traffic.

The following day, I was off to try my luck at taking a peek at Pinnacle Rock and God’s Window. Back along the R37, bliss. Then off onto the R532 towards Sabie. Another amazing driving road. At Sabie, with time to kill, I decided to try out the (in)famous “Sabie 22” - the first 22-odd kilometres of the R536 between Sabie and Hazyview, primarily frequented by motorcyclists.

I’m really not sure why this route is not more popular or well known amongst the automotive community (at least, I’ve never heard of anyone mentioning it). It really is quite amazing, and I can absolutely picture overpowered R32 Skyline GTRs, S14 and S15 Silvias, FD RX7s, and even DK’s venerable AE86 having touge-style drift battles along this road. It would be a sight to behold. In fact, it would be awesome of somehow an event like the Knysna Hill Climb could be organised here, it would be a massive hit.

While completely out of place compared to all other traffic in my JDM-inspired overly-loud rice-rocket, it felt right at home on these roads.

After heading back to Sabie, we continue along the R532 towards Graskop. This section of road with it’s pine plantations in every direction as far as the eye can see really reminds me of the Stutterheim area in the Eastern Cape, an area we traveled often when I was younger. Here, the road gets really extreme. Sharp 90 degree bends with sheer drops off the side wind you up through the mountains, with the many crosses lining the roadside serving as better warning signs than any number of red and white chevrons.

Eventually, you arrive in Graskop, pass through, realise you can’t see more than 5 metres in front of the car and won’t be seeing any panoramas, visit the famous Harrie’s “The Original” Pancakes, and repeat the glorious journey in reverse, finally allowing you and your car some R&R time.

Returning to Gauteng was a mostly sedate affair, and while not as thrilling as the R37, R532 and R536, the return trip along the R539 “Highlands Meander”, through fields and fields of citrus trees, offers a completely different but equally enjoyable and very relaxing drive.

So all-in-all, did nothing I actually intended to do on this trip, and I think I enjoyed it more because of it!

All of my Debian desktop installs running KDE received an update a month or two ago which rendered the “Apper” package management application broken, failing with the following error:

Unable to open database read-only: Database action 'prepare dependency insert 
statement' failed: table dependencies has no column named items_installed

The solution is to delete the Listaller cache DB:

rm -r /var/lib/listaller/db/

The cache will be recreated automatically with the expected structure on the next run of Apper (or other PackageKit type thing).