Lords Of War Review

I love Kickstarter. I can spend hours a day browsing through the various ideas, dreams and practical suggestions on there. There’s something incredible about the range of possibility, the idea that a great idea will exist or not based on my decision to support it…

The KS section I find myself continually coming back to is UK Tabletop Games. UK, because then the postage isn’t the same cost as the game itself, and board games, because board games are awesome.

Not always a great success

I’ve kickstarted a few games now, and, for the most part, they’ve been a mild disappointment. Cheap printing, uninspiring artwork, or, worst of all, uninspiring gameplay. That said, there’s a lot to be said for the thrill of the anticipation.

Never-the-less, last November, I decided to jump on the Lords of War: Templars versus Undead project. Its an extension to the first two award winning games, and it looked fun. The question was, would I be disappointed again?

Not what I ordered

Before I tell you how satisfied I’ve been with this game, let me tell you a little story of generosity. You see, I paid for the £25 Hell is Full pledge level. That includes the new add on, and a pack of the cards from the original game, Lords of War: Orcs versus Dwarves.

That should give me the stuff in the picture below:

What I ordered from Blackbox games

However, instead, when I received my parcel in the mail, it contained everything below:

What I recieved from Blackbox games

The reason? Insanely generous game developers.

Last week, when the game was posted, mine seemed to go missing. I dropped them an email, and Nick apologised for the delay, and kindly offered to send out an extra pack for free – all three for the price of two.

I was having a very bad day, and this was about the nicest thing that had happened to me all week, so I send an effusive email back. Nick’s response blew my mind:

Shit me Chris – sounds like you’re “livin’ the dream”!!!!

If that makes you smile – I’m going to send you on the house – the battlemat, 6 limited addition metallic cards and the Terrain & Weather deck.  Hell – and a card Tin and Teeshirt – what size are you?  Medium, Large or XL – being a junior Doctor you don’t have enough time to eat (or sleep) enough to be XXL!!!!!!!!

I have a natural human urge to give you advice or quote some shitty saying of wisdom – but no.  You know what you’re doing – I will just post the stuff out tomorrow.

All the best

Suffice to say, I’m still grinning ear to ear. Anyway, my review…


A 2 player deck-building card game where you play as one of (currently) 6 races, playing cards onto a playing mat on the table. The mat is 7 cards wide and 6 cards high, and allows for a strategic placement element to the game, not found in standard card games.

Its available in boxes containing two decks: Orcs vs Dwarves, Elves vs Lizardmen, Templars vs Undead (plus the recently released Orcs vs Dwarves 2: Magic and Monsters, but I’ll review that when I get my greasy hands on it). Each box is completely standalone: it even comes with a paper game mat, so you are ready to rock and roll. Extra packs just allow you to play with more variations of armies, you don’t have to buy anything more than one set.


Lords of War treads a perfect middle line for theme. If you want setting, there’s tons of it: the cards are showered with fantastic artwork (the Lizardmen look especially great – see right), and there’s a whole section of their website dedicated to “The Lore of Lords of War” – with stories, maps, videos, audiobooks. On the other hand, if context is not your cup of tea, you can jump straight into the game and ignore it all: the mechanics hold up on their own.

The Weather and Terrain add on is a perfect example of this: for one camp they present a vision of an epic battle steeped in mist, as hail soaked archers struggle to visualise their targets… or to the more pragmatic players, your tactics need to adjust this round since ranged troops are ineffectual.


There’s nothing revolutionary about the basics: you take it in turns to plonk a card down on the table. You then work out if any card has been overwhelmed by attacks, and take them off the table. Your turn completes by bringing your hand back up to 6, either by taking a new card from your deck, or pulling a card off the table, if its not involved in the action.

playinglordsofwarIts a simple system, and it lets you focus on the important stuff, namely taking as many of your opponents cards as possible (you need 20 to win) or just trying to destroy their leadership (take 4 “command” cards to win).

Some cards can do ranged attacks (think catapults, archers), some are very strong in attack, but very weak in defence (beserkers, or “suicide cards”). Everyone gets an identical range of ranks in their deck, from Recruits (weak, rubbish, cannon fodder) to your General (think John McClane).

Again, I feel Lords of War manages to hit the difficult middle ground here: tactics and strategy matter, but luck evens out the playing field too. There are real chess-like moments, when you put a card down, check the table closely, and move your hand away… seeing, just a moment too late, the Trebuchet you forgot about, with you directly in its line of fire.

Ease of learning

This game is quick to teach, and allows new players to start getting tactical within the first game. I regularly “go easy” on new players, only to get halfway through the first game and find myself fighting for my life.

There are actually Core, Intermediate and Advanced rules, which allows you to slowly build on the complexity of the game with the more experienced gamers (read “Nerds”). That said, you can have a ton of fun keeping it simple – and that’s great for teaching it to people.

All the rules are on a single, double-sided A4 sheet. I have a few little criticisms: I find the rule sheet a little difficult for instantly grabbing rules from, and I’m not sure we play with the “extra” rules very often, but overall, this game is simple to learn, and great for introducing people to the hobby.


Whilst I enjoy reading rule books, visiting game shops and listening to hour long podcasts on topics like “Games with interesting mechanics”; my wife is much harder to tempt into playing board games than me. Yet, as we packed for our move to South Africa, it was she that insisted we bring absolutely everything with us, all 6 decks, the optional shiny cards, the full size felt backed gaming mat.

More than anything else, that shows how this game is a winner. I love it, my wife loves it, and everyone I’ve introduced it to has had a great time. Go buy it!

Avocado Cookies

AvocadoSo, Avocados are a thing you can get much more cheaply in Africa that you can in Lincolnshire. They also taste much better too. If you’ve never seen one, I’ve included a picture on the right.

They are also much healthier for you than butter, apparently full of “good fat”. Always up for a challenge, I decided to try and make some cookies, using avo instead of butter.

Given that maize is a local staple too, I chucked some of that in, which made this an even more South Africany treat.

Disclaimer: I am a proud member of the chuck-it-in-it’ll-be-fine school of cooking. I firmly believe a happy cook just throws stuff in a pan, rather than measuring 18g of this and 3.5 medium egg yolks of that; so take my measurements with a pinch of salt, so to speak. This recipe makes around 15 cookies. Ish.


  • 2 or 3 medium avos – as ripe as possible.
  • 1 cup sugar – I literally used a coffee mug, rather than any kind of accurate measuring thing.
  • 1 cup chocolate powder (I used cheap stuff that’s full of sugar. If you use cocoa powder, you are going to want to add more sugar, around another 1/3 of a cup.)
  • A big spoon baking soda
  • 1 egg
  • Half a cup ACE chocolate maize (If you haven’t got this, just replace with flour).
  • 1.5 cups white flour
  • 1 cup chocolate chips. Or chocolate chunks. Or just eat the chocolate chunks, and have plain cookies. Mmmm, chocolate chunks!

Avocado CookieRecipe

  1. Mush the avos. I used a fork. If you have a blender, that would be easier, but you have less excuse to lick avo off your hands…
  2. Put all the powders in a bowl: flour, sugar, chocolate powder, baking sofa, maize, etc, and mix thoroughly.
  3. Now add the egg and avo mush, and mix thoroughly. It should be about as thick as butter thats been out of the fridge for half an hour. Add a little water to thin it, or more flour to thicken it, as needed.
  4. Put 1 inch balls onto an oven tray (greased with more avo!).
  5. Cook at about 180 degrees celcius for 12ish minutes. Peer at them through the door.
  6. At 10 minutes, quickly flatten them with a spatula – the avo doesn’t melt like butter, so they don’t go flat without extra help.
  7. Remove when browned, and allow to cool.
  8. Eat a cookie. Feel proud. Feel ashamed about eating all the chocolate chunks earlier. Get over it, eat another cookie.

Triathlon Chris

Over the past year and a half, I have become steadily more excited about being healthy. Lots of people seems to think that being vegetarian means that you are automatically more healthy: they forget that vegetarians are allowed to consume their body weight in cheese every day.

Since August 2013, I have lost around 18% of my body weight (about 16kg) and have become steadily more enamoured with cycling.

I’ve even started running: not exactly frequently, but somewhere in the middle ground between regularly and occasionally.

As part of this exciting new me, I signed up to do my first ever Sprint Triathlon, the XTERRA Buffelspoort LITE


I decided firmly to do the triathlon in around mid December, giving me 6 weeks to train. And I kinda did, vaguely racking up some time in each of the three disciplines:


Ultimately, doing 80 lengths of a 5 metre long pool feels a bit ridiculous.

My swimming training was pretty rubbish – I only managed around 4 swims in my 6 weeks. I did a few practice swims at Sodwana Beach, but the current there is insanely strong, and the waves are pretty ferocious, so it wasn’t the best preparation for a flat lake swim of 400m.

I also tried to do some practices in local lodge swimming pools – but these ranged from 5m to 10m wide, making them not very practical for working on my front crawl. Ultimately, doing 80 lengths of a 5m pool feels a bit ridiculous, and I got more tired from constantly turning round than from swimming.


wpid-1421077162864_fact_1.jpgThis is definitely my strength – as you know, I love cycling. In the tri, I need to do 19.6km on tricky off-road hills. I bought a second hand Rocky Mountain Element 50 in Paarl, and it flew with us back to KZN.

I’ve had some lovely little rides on it, up Paarl Rock, Table Mountain, Signal Hill and a few decent ~20km trips around Mseleni. I also went after work on day to False Bay Park and spent a few hours rocketing around, as you can see in the picture on right.


I’m steadily starting to appreciate running more in my life, and I went on around 1-2 runs a week. The triathlon involves a hilly, off-road 6km trail run: a good fit for the undulating off road territory around Mseleni hospital.

I generally aimed to do runs around 6-8km, although I think doing a few longer ones would have been a good idea. My favourite run was probably the one up Paarl Rock, where I was able to sprint back down the hill at a ridiculously fast pace.

The Big Day

We are staying with our lovely friends, Paul & Debbie, in the exciting township of Soshanguve. Buffelspoort is around an hour’s drive from Sosh, so we ended up leaving horribly early – 4:40am. Whilst my friends took part in the trail run, I had several hours in which to fix a rather annoying puncture of my back wheel. After a rather exhausting hour scrounging tools (and experience) from some helpful strangers, I finally had a fully inflated back wheel.

By 8:30am, we were at the starting point, and by 8:50, I was in the water surrounded by nearly 400 other men in leotards. Soon the ten second countdown began, and off we went!


It turns out that swimming in a tight triathlon suit for the first time, whilst surrounded in every direction by hundreds of other swimmers, is quite stressful. I struggled to get my breathing rhythm sorted, and then, when I tried to stop, had people trying to clamber over me.

I actually began to panic a little, but after a minute or so, I switched to breast stroke, and made my way forwards. After the initial crush, the field thinned out, and I was able to get some space, calm down, and switch back to front crawl again, overtaking some of the people who had shot past me.

Getting out, I nearly tripped over a few times, but soon got my balance and jogged into the first transition.

Time: 400m in 10:21

Transition 1

Putting on tight cycling socks with wet, sandy feet is always a challenge. I was still a little disorientated after the near drowning, so somehow I wasted nearly half the time I spent swimming just getting changed over.

The guy who won the event did both his changeovers in around 40 seconds! Anyway, soon enough I had my bike, and was off past the start line.

Time: 4:37


Buffelspoort-XTERRA-LITE-MTB-ROUTEIt felt good to be in the saddle. The first half a kilometre was on a sandy road (see route on right), and I began to relax.

Just as I was starting to focus on my cadence, we moved onto some tricky singletrack, and there was a traffic jam. Everyone had to stop and shuffle along for a bit until the crowd had dispersed a bit. During this time, the leading girls (who set off ten minutes after us) overtook, which was a little depressing.

After a few minutes, things had thinned out again, and off we went. Generally I found the terrain quite tricky, but only had to dismount briefly maybe 20 times over the 19.4km, pretty similar to many of the guys around me.

When we went onto the smoother tracks, especially uphill I was pleased to find I was much more bike fit than the group around me, and was able to power past people, overtaking a lot. Sadly, on the technical downhills I was much too much of a wimp, and a fair number of people overtook me each time (but less than I was passing on the uphills).

I suspect this is probably a result of lots of guys enjoying a little Saturday afternoon MTB, where they drive to a tricky trail and whizz around for an hour, but they don’t do very much long distance: the complete opposite of me.

Cycle Triathlon

Anyway, after a nerve wracking technical descent, I completed the bike course, and went into transition 2.

Time: 19.4km in 1:13:52

Transition 2

Second TransitionThe automated chip on my ankle didn’t record my entrance time into the transition, and combined it with my cycling time, so I guessed that I made better time than the first one, given that I wasn’t wet, and didn’t have to change my shoes.

I did apply lots of sun tan lotion, but managed to forget to put it on my back, leading to a nice burn that has left my race number, “1505” in white skin surrounded by tan on my shoulder. I was a little disorientated, and initially tried to apply the sun lotion as a deoderant, since it was in a spray can. Needless to say, my armpit did not get sunburnt.

Time: 3:00 (probably)


Run RouteShortly after leaving the starting line, I started to get a pain in the left side of my chest, with a very rapid heart rate, around 180. I decided it made more sense to walk for a bit than to die, so it took me a few minutes to get going again. Most of the runners around me were in a worse state than me, and after my myocardial infarction had settled down, I began to pick up the pace.

To my surprise, I had a lot more energy left than the people around me, and I was able to steadily overtake for the rest of the run.

There was a very steep gradient on one uphill, which I walked part of, but aside from this, I didn’t need to stop for the rest of the race (except a brief moment to eat some fruit gums and grab a glass of water from a refreshment stand).

The last kilometre was very enjoyable, and my pace picked up more, the closer the finishing line came.

Running home

And then I was done, the race complete!

Time: 5.8km in 37:28


Winners MedalMy overall time was 2 hours, 9 minutes, 19 seconds. I came 173rd, out of 585 racers (29% centile), or 144th out of 389 men (37% centile). Given that I was aiming for 60% centile, I’m pretty happy.

Given that running is really not my forte, I was very happy with that side of things: compared to the Puma trail run results from earlier in the day (which did the same route), if I had entered that and run the same time, I’d have come 20th out of 234 runners (9% centile) – and I’d already done the first two parts of a triathlon!

All in all, I had a fantastic time, and definitely plan to do lots more of them. I think I need to get a fair bit more training in, but just on the swimming, cycling and running parts.

January 17th, 2015

Leave a comment

geek, how to, links, web

Making a MediaWiki Theme

I love MediaWiki. I’ve been using it for MedRevise since 2007.

After 3 years of using a hacked up version of someone else’s theme, I decided to make my own theme. It was a big learning process, and I decided to share my knowledge… Unfortunately, 5 years ago, I stopped writing this how-to halfway through. It was for MediaWiki version 1.17.

Since then, there have been like 7 new major versions, and everything in “Code” I’ve written is hopelessly out of date. But the first three sections still have some value: Planning, Designing and Layout – so I thought I would publish it anyway.

Make your own Mediawiki theme

Ever thought it would be nice/useful to have your own wiki? There are lots of different bits of software out there for running a wiki, but the big one is MediaWiki – the same one used by Wikipedia. Now, your problem is that there are only so many ready made themes for MediaWiki. And there aren’t many good tutorials on doing it yourself. The tutorials out there are sparse at least.

So I’m going to give it a go, and I’ll explain it to you as I go. I warn you, this is aimed at an intermediate level. I am not going to explain how a div works, how to use CSS or much of that. Go to the amazing w3schools website for tutorials on these basics.

First things first.

There are four key stages to making any website:


You need to ask yourself some questions:

  • What is your website for? If there is a lot of information, you need to give prevalence to the content section, if there are lots of sections, maybe the menu needs extra prominence.
  • Who will use it? Is it going to be aimed at people new to the web, in which case it needs to be very clear and understandable. If its aimed at geeks, you maybe can play with the appearance more.
  • What will code put in? Database driven sites such as a wiki will need to import information. This information is usually of different sizes and lengths, in which case you will need to have an expandable or scrolling area for this information. Examples are menus, footer tags and content divs. Once you have really thought it out, get a piece of paper, and start sketching out some ideas, taking into account all your stuff above. Once you have a good idea, you can start…


Get yourself a good web graphics program. Photoshop isn’t really ideal here, lacking many of the measurement, image optimisation and slicing options that Fireworks has. But yeh, that’s my plug over. Get designing, and put in all the elements you think you need. Put in text and everything, and try to have all the text on a separate layer, so you can show the layout later without it. (If you don’t understand this, you’ll get it in the next step). Here is my first design for the new MedRevise:

Mockup of the design for the site.

Now, that is really very lovely. At least I think so, and its my site, so blah! And while I’m on the subject of accepting criticism, now is the time to get friends, families and geeks to look at this and give you feedback, before you spend hours putting it in code and everyone hates it. If you need a geek to ask, feel free to contact me.

Once your mum has finished telling you to add more flowers, and you are happy with your design, you can move onto…


You now need to turn your image into a web page. The first step is getting rid of all your text. Simple click the “eye” symbol next to your text layer, and you should end up with something like the image on the right:

Now, this step is complex, time consuming and laborious. It involves making all your divs and everything. I have chosen a very complicated design here, and I will not explain how to do everything. I will upload a tutorial at some point explaining how I got my middle div working, because I’m quite proud of that.

But basically, you want to end up with a site where you have your template design set up, with text tags saying “Insert Menu Code Here”, and “Insert Content Code Here”. In my case, I have decided to have a difficult left hand menu, so I will have to manually code changes to it, rather than having the option of mediawiki manually inserting the code for you.

Either way, you should end up with somewhat that looks like this… Screenshot of the finished template You might notice that I have moved my footer bar into the middle, as I realised it will work better there. Aside from this, I have kept it relatively close to my original design. I have also tested in in Firefox, Chrome, IE6, IE7 and IE8, to ensure that the majority of people accessing the site get to see it correctly. Use browsershots.org to do this yourself (its awesome).


The final stage is making your theme do the things you want it to do. This can often take you as long, if not longer than everything else put together.

First off, go and read the MediaWiki manual on skinning.

Then start working through the article, changing it as you go through. I began by tackling the preheader. I used the following code:

* MedRevise skin
* @version 4.0.0
* @author Chris Lowry (http://allaboutchris.co.uk / me@allaboutchris.co.uk)
* @license http://creativecommons.org/licenses/by-nc/3.0/ Attribution-Noncommercial 3.0 Unported

// initialize
if( !defined( 'MEDIAWIKI' ) ){
die( "This skin file is not a valid entry point.\n" );

#Only needed for older MediaWiki instances

// inherit main code from SkinTemplate, set the CSS and template filter
class SkinMedRevise extends SkinTemplate {
function initPage( OutputPage $out ) {
parent::initPage( $out );
$this->skinname = 'medrevise';
$this->stylename = 'medrevise';
$this->template = 'MedReviseTemplate';

class MedReviseTemplate extends QuickTemplate {
/* hijack category functions to create a proper list */

function getCategories() {
$catlinks = $this->getCategoryLinks();
if( !empty( $catlinks ) ) {
return "<ul id='catlinks'>{$catlinks}</ul>";

function getCategoryLinks() {
global $wgOut, $wgUser, $wgTitle, $wgUseCategoryBrowser;
global $wgContLang;

if( count( $wgOut->mCategoryLinks ) == 0 )
return '';

$skin = $wgUser->getSkin();

# separator
$sep = '';

// use Unicode bidi embedding override characters,
// to make sure links don't smash each other up in ugly ways
$dir = $wgContLang->isRTL() ? 'rtl' : 'ltr';
$embed = "<li dir='$dir'>";
$pop = '</li>';
$t = $embed . implode( "{$pop} {$sep} {$embed}", $wgOut->mCategoryLinks ) . $pop;

$msg = wfMsgExt( 'pagecategories', array( 'parsemag', 'escape' ), count( $wgOut->mCategoryLinks ) );
$s = $skin->makeLinkObj( Title::newFromText( wfMsgForContent( 'pagecategorieslink' ) ), $msg )
. $t;

# optional 'dmoz-like' category browser - will be shown under the list
# of categories an article belongs to
if( $wgUseCategoryBrowser ) {
$s .= '<br /><hr />';

# get a big array of the parents tree
$parenttree = $wgTitle->getParentCategoryTree();
# Skin object passed by reference because it can not be
# accessed under the method subfunction drawCategoryBrowser
$tempout = explode( "\n", Skin::drawCategoryBrowser( $parenttree, $this ) );
# clean out bogus first entry and sort them
unset( $tempout[0] );
asort( $tempout );
# output one per line
$s .= implode( "<br />\n", $tempout );

return $s;

* Template filter callback for this skin.
* Takes an associative array of data set from a SkinTemplate-based
* class, and a wrapper for MediaWiki's localization database, and
* outputs a formatted page.
public function execute() {
global $wgUser, $wgSitename, <span style="color: #ff0000;">$wgTitle</span>;
$skin = $wgUser->getSkin();

// retrieve site name
$this->set( 'sitename', $wgSitename );

// suppress warnings to prevent notices about missing indexes in $this->data

Now, I’ll be honest, I didn’t understand most of that. However, the Mediawiki walkthrough explained it nicely, and pretty much all I did was change the FooBar and foobar tags to MedRevise and medrevise. I also added $wgTitle to the execute function. I needed that for my login menu later. That done, it was time to chuck in the HTML header:

/* compose XHTML output */
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="<?php $this->text('xhtmldefaultnamespace') ?>" <?php
foreach( $this->data['xhtmlnamespaces'] as $tag => $ns ) {
?>xmlns:<?php echo "{$tag}=\"{$ns}\" ";
} ?>xml:lang="<?php $this->text('lang') ?>" lang="<?php $this->text('lang') ?>" dir="<?php $this->text('dir') ?>">
<meta http-equiv="Content-Type" content="<?php $this->text('mimetype') ?>; charset=<?php $this->text('charset') ?>" />
<?php $this->html('headlinks') ?>
<title><?php $this->text('pagetitle') ?></title>
<?php /*** general style sheets ***/ ?>
<style type="text/css" media="screen,projection">/*<![CDATA[*/
@import "<?php $this->text('stylepath') ?>/<?php $this->text('stylename') ?>/main.css?<?php echo $GLOBALS['wgStyleVersion'] ?>";
@import "<?php $this->text('stylepath') ?>/<?php $this->text('stylename') ?>/contents.css?<?php echo $GLOBALS['wgStyleVersion'] ?>";
<?php /*** media-specific style sheets ***/ ?>
<link rel="stylesheet" type="text/css" <?php if(empty($this->data['printable']) ) { ?>media="print"<?php } ?> href="<?php $this->text('stylepath') ?>/common/commonPrint.css?<?php echo $GLOBALS['wgStyleVersion'] ?>" />
<link rel="stylesheet" type="text/css" media="handheld" href="<?php $this->text('stylepath') ?>/<?php $this->text('stylename') ?>/handheld.css?<?php echo $GLOBALS['wgStyleVersion'] ?>" />
<?php print Skin::makeGlobalVariablesScript($this->data); ?>
<?php /*** various MediaWiki-related scripts and styles ***/ ?>
<script type="<?php $this->text('jsmimetype') ?>" src="<?php $this->text('stylepath') ?>/common/wikibits.js?<?php echo $GLOBALS['wgStyleVersion'] ?>"><!-- wikibits js --></script>
<?php if($this->data['jsvarurl']) { ?>
<script type="<?php $this->text('jsmimetype') ?>" src="<?php $this->text('jsvarurl') ?>"><!-- site js --></script>
<?php } ?>
<?php if($this->data['pagecss']) { ?>
<style type="text/css"><?php $this->html('pagecss') ?></style>
<?php }
if($this->data['usercss']) { ?>
<style type="text/css"><?php $this->html('usercss') ?></style>
<?php }
if($this->data['userjs']) { ?>
<script type="<?php $this->text('jsmimetype') ?>" src="<?php $this->text('userjs' ) ?>"></script>
<?php }
if($this->data['userjsprev']) { ?>
<script type="<?php $this->text('jsmimetype') ?>"><?php $this->html('userjsprev') ?></script>
<?php }
if($this->data['trackbackhtml']) print $this->data['trackbackhtml']; ?>
<!-- Head Scripts -->
<?php $this->html('headscripts') ?>
<!-- Cufon Scripts -->
<script src="<?php $this->text('stylepath') ?>/<?php $this->text('stylename') ?>/js/cufon-yui.js" type="text/javascript"></script>
<script src="<?php $this->text('stylepath') ?>/<?php $this->text('stylename') ?>/js/Blippo.font.js" type="text/javascript"></script>
<script type="text/javascript">

I will be the first to admit that looks pretty awful. All you need to know is that you leave it basically untouched, simply adding the correct path to your style sheet, if necessary (I just had to rename mine to main.css), then add any scripts you want to add yourself at the end. I use cufon for font replacement, so I chucked that in at the end.

Next comes the nitty gritty, making individual bits and pieces appear exactly where you want them. I first decided to tackle the search bar, altering the code in the tutorial, and simplifying it because I only want one search button, not two.

I then worked out my login details section, and wrote some conditional code to do one thing when logged in, and another when logged out.

Thanks for reading, I hope its helpful to anyone who needs some (rather dated) hackery!

Crispy Potatoes Recipe

We all have Christmas traditions, and often that revolves around food. Katherine and I have spent our 6 years together slowly perfecting our Christmas selection.

I thought I would share how we make our awesome crispy Christmas potatoes (you can eat them when its not Christmas too, if you want!).

Disclaimer: I am a proud member of the chuck-it-in-it’ll-be-fine school of cooking. I firmly believe a happy cook just throws stuff in a pan, rather than measuring 18g of this and 3.5 medium egg yolks of that; so take my measurements with a pinch of salt, so to speak. This recipe makes as many potatoes as you need. I usually plan for 1-2 large potatoes per person.

Cooked Crispy PotatoesIngredients

  • Potatoes.
  • Flour.
  • Olive oil.
  • Salt and Pepper.


  1. Peel and chop up your potatoes. You want biggish lumps – cut big potatoes into 4 pieces, small ones into halves.
  2. Boil up your potatoes with a little salt in the water (helps them get softer).
  3. Check them after about 15-20mins: you should be able to stick a knife in them, but you don’t want them completely soft either.
  4. Drain the water.
  5. Chuck some in a metal colander, so there are about 8 pieces of potatoes in it (use a big bowl if you don’t have a colander). If you have lots of potatoes, you might want to do them in a few batches, 8-10 at a time.
  6. Jiggle the colander for about 10-20 seconds. This bashes up all the edges of the potatoes, making them uneven. This leads to lots of extra crispy bits.
  7. Have a bowl with olive oil in, and one with flour in.
  8. Potatoes before BakingRoll each potato in the oil, so its covered, then roll in in the flour. Oil + flour = more crispy.
  9. Sprinkle a little more oil on top, and grind loads of salt and pepper all over it.
  10. By now, your potatoes should look something like the photo on the right (click for bigger picture).
  11. Cook them at 180°C ish in the oven. You’ll want to take it out a few times and stir it around with a spatula so that it gets cooked evenly.
  12. When they are golden, with some crispy brown bits, cover them in gravy and eat them all up.

If you don’t like gravy, then I’m afraid you are a bad person, and you are not allowed to make my potatoes.

Low Cost Holidays – unbelievably bad customer service

lowcostholidaysA few years ago, me and Katherine went on holiday with a low cost company that managed to pretty much ruin our holiday.

They are called Low Cost Holidays. I think a more apt name is Low Quality Holidays, with terrible customer service thrown in

A bad start

Our apartment had:

I contacted the company after our third night with no sleep, after my wife started crying because of how little fun she was having. The representative I spoke to was friendly and understanding: “Go find some other accommodation, keep the receipt, and we will fully refund you on your return”.

That got worse

Our next week of holiday, in a self catering flat next to the beach, was great. My experience with Low Cost Holidays, on returning back to England, was less good.

They flat out denied my request for compensation. Repeatedly.

They denied that their customer service representative had spoken to me, or authorised me to stay in alternative accomodation. Even when I provided them with itemised phone records showing the exact time, date and duration of my 35 minute call to their number, on my mobile from the Canary Islands, they denied that the offer had taken place. They were uninterested in the photos documenting the poor quality of the hotel, nor my hotel stamped initial complaint letter.

Eventual success

Over the course of a year, I wrote 6 letters, and spent around 10 hours of my time on the matter. Eventually, after threatening to take them to the small claims court, they finally agreed to pay the £300 they owed my for the accommodation- but refused the £300+ that I was claiming for my time and expenses (such as filing small claims, lost time doing freelance work).

I decided that it was no longer worth my time fighting any more, and laid the matter to rest until…

A ridiculous request

In September, I received an email threatening legal action from the formerly mentioned untrustworthy holiday company. In the email they said:

Links from your site have been identified to us as malicious or spam content and we request the immediate removal of any links directed to lowcostholidays.com

We request immediate action or our legal team will seek removal. Please notify us with an email once action has been taken.

I explained that the link was probably in a post complaining about the terrible service I received. I asked they simply pay the money I was still owed, and links would be removed.

Making things worse

A month later they went to my excellent, high quality hosting company, and tried to get the links removed. In this email they lied and said “we haven’t managed to find the correct contact details for the site owner“, and asked them to remove the links.

In going over my head, and lying about previously contacting me, they clearly broke the law, as well as proved themselves to be the scumbag, disreputable company they had already proven themselves to be.

And then even worse…

They then offered my hosting company money to remove the links without my permission! Pretty sure that’s totally illegal, and definitely immoral regardless. They offered £25 per link. At this point, I was a bit angry. I think you can understand why.

However. I am currently volunteering in Africa, and I could do with the money, so here is my response:

Dear Low Cost,

In the above post, you can clearly see that your behaviour has been, at best, shady, and at worst, actually illegal. You still owe me around £350 for my time spent chasing your company after you broke your word.

That said, My family and I are currently volunteering in South Africa to help some of the poorest people in the world with healthcare. I don’t officially have a job yet, so I could do with a little extra income.

You offered my hosting company £25 per link. There are currently 14 links = £350. You already owe me £350 anyway, in case that wasn’t clear. Pay me that which you owe me, and I’ll remove all the links to your company, and, beyond an acknowledgement of your gracious behaviour, never publicly comment on the matter again.

How does that sound? Pay up, and I may even consider going on holiday with you again…

Dr Chris Lowry

Couch Surfing: my first experience

couch_surfingBack in 2013, I had to work all weekend in Grantham. Considering that I finished at 11pm, I didn’t really fancy over an hour of driving back to Boston, only to have to return a few hours later. So I decided to stay there.

This left me with three options;

  1. Camping,
  2. Sleeping on an empty hospital bed, or
  3. Spending rather a lot of money to stay in a Travelodge.

Uninspired by all of these, I went for hidden option number 4: Couch Surfing.

For those of you who haven’t heard of couch surfing, its based around a website: CouchSurfing.org. Its a simple concept: Someone puts up their couch on the website, you contact them, and then you go and stay with a random stranger. Its slightly scary, but also tinged with an excitement that the Travelodge rarely imbues to a trip.

What is couch surfing?

Before I tell you about my experience, here are a few quotes about the concept…

Couch surfing isn’t just a means of accommodation; it is an entirely new way to travel. You get to see the world through local residents, not hotel concierges or guidebooks. But what is most profound about the whole experience is the trust that naturally exists.
Time Magazine

Overall, my couchsurfing experience was amazing, and I would highly recommend that people give it a shot at least once.
Brendan’s Adventures

I cannot surf. Something about that spring up from the belly onto the board eludes me and I always end up losing my balance, crashing into the wave instead of riding it, and often also knocking myself in the head with the board.

Couch surfing, however, is another matter completely. At that, turns out, I am a natural.
Huffington Post

So, how did it go?

In summary, it was fantastic. I rocked up, late at night, to the house of a complete stranger, and felt ridiculously welcome.

The house was very unique – it had no heating – but a delicious wood burning stove in the lounge that warmed you right through. The lady kept pet chickens, and I was very interested in her excellent steel chicken feeder – a much better solution to the problem than the rubbish plastic one we had at home. (Looking back, a year later, I realise that we bought both a wood burning stove, and a galvanised chicken feeder as a direct result of this visit!)

For breakfast, she generously made me this amazing Indian grain breakfast. I’ve never had a spicy breakfast before, but its definitely something I could come round to.

All in all, free food, free wifi, a free bed, and excellent conversation: if I’m ever travelling alone, Couch Surfing is going to be my first choice

my other sites

Names Not Numbers charity - because individuals matter! MedRevise - free medicine revision for student doctors When Will I Be Sober? An alcohol sobriety calculator. Plenty of Room - The Lowry family and life.

board games

Cheap Ass Games - Inexpensive and Wonderful Tabletop Games! Cool Mini Or Not!