Last weekend I read the latest Horus Heresy novel from Graham McNeill and Black Library: Angel Exterminatus. What follows is a quick review. I’m trying to avoid spoilers, so don’t go into much depth about the plot.

Angel Exterminatus focusses on the the Iron Warriors legion and their Primarch, Perturabo. Although they are the main protagonists, the plot is setup and driven by another Primarch, Fulgrim, and the Emperor’s Children legion. Also making an appearance are 2 Eldar, and a few battered “loyalist” Space Marines.

Fans of Warhammer 40,000 – and the Horus Heresy in particular – will be lured into Angel Exterminatus by the promise of finding out more about Perturabo and the Iron Warriors. Up to now they have been typecast as rather mundane, if somewhat psychotic bullies. They’re the go-to guys when you have to besiege some fortress in a crawl-through-the-mud, ground-pounding war of attrition – as opposed to the other legions who grab all the glory for daring strikes into the heart of enemy territory. Beyond this stereotype their background hasn’t really been filled in much, leaving us thinking they’re pretty boring, bitter, and only concerned with blowing things up with the biggest gun possible.

What we learn from Angel Exterminatus is a very different picture. The Iron Warriors and Perturabo become interesting, multi-faceted characters. Perturabo is an master craftsman and artisan who can (and does) design and build devices and architecture of dazzling skill and intricacy. He has an unparalleled grasp of physics, mathematics, and strategy. He also has a volatile, murderous personality, but we come to understand where it comes from, and that he is very much more than he appears. The Iron Warriors largely reflect their Primarch. They are straight-forward warriors who excel at far more than they get credit for. They are logisticians, strategists… even geologists and engineers. They just happen to apply those skills to warfare and in a manner which is blunt and brutal, but extremely effective – applying the maximum force with the least amount of effort.

The overall plot can be summarised as: Fulgrim, with the aid of a mysterious Eldar “historian” convinces Perturabo to take his legion on an expedition to the heart of the Eye of Terror, to an ancient, dead Eldar world which is home to a mythical super-weapon which could end the war quickly in favour of Horus. Some Loyalist survivors of the opening battle of the Heresy discover the plan, and are led by another Eldar in a bid to thwart this possibility. Along the way we get to find out just how far the Emperor’s Children and Fulgrim have descended into excess and the worship of Slaanesh, and also how much it sucks to be a loyalist Space Marine right now. Mid-way through the book there’s even a Iron Warriors version of a game of Warhammer 40,000.

Overall, the plot flows nicely, and works well. There a very few, minor snooze moments, but nothing which totally detracts from the rest of the story. The payoff at the end gives us several things which old-timer fans might have been wondering when they would appear in the series, leaping some plot threads considerably.

In summary I’d say Angel Exterminatus is a great addition to the Horus Heresy series. If you’re a fan then you definitely want to pick it up. Newcomers might find it a bit difficult as it refers to a lot of threads in previous books, but it’s not so bad as I would say you should avoid it. It’s still a great read… One that once I started I didn’t put down until I’d devoured the whole book.

Things said about the iPod Mini:

  • Competitors are cheaper
  • Competitors have more features
  • Competitors are smaller
  • It’s not “open”
  • It’ll never sell (or, my favourite: “the only people who’ll buy it are Apple ‘Sheeple/fanboi’s/posers’ with too much money”)
  • You’re paying an “Apple Tax” just because it looks pretty/has an Apple logo

Things said about the iPad Mini in the 24 hours since it was announced:

  • Competitors are cheaper
  • Competitors have more features
  • Competitors are smaller
  • It’s not “open”
  • It’ll never sell (or, my favourite: “the only people who’ll buy it are Apple ‘Sheeple/fanboi’s/posers’ with too much money”)
  • You’re paying an “Apple Tax” just because it looks pretty/has an Apple logo

Even though I doubt I’ll be buying one in the short-term, make no mistake – I think the iPad Mini will sell in droves, just like the iPod Mini went on to.

I confidently believe it will outsell the Google Nexus 7, and probably also the Kindle Fire (the biggest competition in my mind) this Christmas, despite the much higher price. Apple has shown consumers will pay that extra “tax” for the overall experience. Not only that, Joe/Jane Consumer can now see the name brand iPad on sale below £300 for the first time. That’s a really big deal for anyone not trapped in the Tech Bubble.

Dear Viewer,

By the time you read this, I will be dead.

When I started out in 1974, I was the future – TV’s first robot newsreader. But what once seemed cutting-edge is now regarded as hopelessly old-fashioned, and I have been frozen out by the powers that be, yet another victim of BBC ageism.

I can’t take it any more. It’s a struggle to get up for the nightshift, and my poor pixels are tired. My friend Oracle said it would end like this.

Goodbye, cruel world.

The Last Broadcast from BBC Ceefax.

Foreword

If it wasn’t plainly apparent, I’m a big fan of the Warhammer 40,000 game and the surrounding universe. Warhammer 40K has some of the best “fluff” in science fiction. It is vast, covering everything from inter-personal conflict within the massive cities of the future, to vast inter-planetary war never-ending. To me, it’s not “just another” dystopian future, it’s the dystopian future. Mankind stands on the brink of an abyss; the only thing stopping it from plunging head-first into oblivion are the vast armies of the Imperium of Man, where death-in-service isn’t so much an occupational hazard, as expected. You will die for the Imperium, and you’ll bloody well be happy about it.

Life wasn’t always this bad for humanity though. 10,000 years earlier, the human race was at its peak, conquering vast numbers of worlds, rediscovering forgotten technologies, and generally unifying the galaxy under the banner of the Emperor. Religion is stamped-out, cast out by secular belief in science and reason (and large amounts of military force, if required). There are no Gods. Technology is a tool largely viewed with distrust and suspicion. Leading the charge of expansion throughout the galaxy are the genetically engineered legions of the Space Marines, led by their demigod-like Primarchs – the “sons” of the Emperor, created using arcane science to lead humanity into a better future.

Chief among the Primarchs is Horus, and the Horus Heresy series of novels from Black Library tell the story of what happened when he fell to corruption and turned against the Imperium1.

WARNING Mild spoilers from now on.

Fear to Tread.

It’s against this background we have Fear to Tread.

Fear to Tread, by James Swallow, is the 18th(!) novel in the series, and the first to exclusively focus on the Space Marines of the Blood Angels legion. Other legions show up, but mostly just as plot devices. I’ll talk a bit more about that later. James Swallow has written most of Black Library’s other Blood Angels books, which try as I might, I just could not get in to. This left me a little unsettled coming in to Fear to Tread. The Blood Angels are one of – if not my most – favourite Space Marine “Chapters”2. How much? If I couldn’t finish any of the other Blood Angels novels by the same author, was I be disappointed by Fear to Tread? Find out at the end of this review.

Plot Summary

The basic plot of Fear to Tread is: Sanguinius, the angelic Primarch (no, seriously; he has wings, and he glows) of the Blood Angels, undertakes a mission given to him by his most-trusted and beloved brother Horus – not knowing that Horus has turned traitor. The mission is – of course – a trap to destroy the Blood Angels. Remember I said there were no Gods? Unfortunately that was a lie, and a secret the Emperor has kept from everybody. There are four malevolent Gods who are behind Horus’ corruption, and they’re pissed at humanity. When the Blood Angels reach the planets they’ve been sent to they don’t meet the aliens they were expecting, but the previously unknown, supernatural horror of daemons. Along the way we discover the dark secret about the Blood Angels which Sanguinius has hidden from his legion and everybody else. This secret threatens to destroy the Blood Angels and turn them into a parody of all they stand for.

Context within the Series

One of the first things to strike me about Fear to Tread was how much it references other books in the series, and even a limited edition novella which released a couple of years ago. I found this a mixed blessing.

On the one hand, it was great to see how the events in the other books are having an effect in the wider story arc. On the other, it makes Fear to Tread harder for a new-comer to just dive right in. The best example of this is the important character of Apothecary Meros. If you haven’t read The Book of Blood novella you’ll have no idea what it means to when the story mentions his time in a sarcophagus, the visions he had, or the warnings he received about Horus and the future. It’s glossed over very quickly, and is quite confusing out of context. At least with the Space Wolves we get an explanation for their presence which makes sense even if you haven’t read A Thousand Sons or Prospero Burns. Overall though, I’d say this is a relatively minor nitpick.

The Players, and Characterisation

Horus Heresy books have a lot of characters in them, including several recurring characters. If you thought the A Song of Ice and Fire series by George R.R. Martin was character heavy, you haven’t seen anything yet. Partly this is due to vast scope of the universe WH40K, and partly because of the scale of the armies and worlds involved. Fear to Tread is probably one of the “lighter” books in this regard, with only a handful main characters to keep track of.

By and large, these characters work very well, each fulfilling a purpose, and each depicting a facet of the Blood Angels “persona” fans have come to know over the years. If anything, the Blood Angels of Fear to Tread are a little more “fun” than those we see in later stories (later in the 40K timeline, that is). These Blood Angels aren’t so much the “emo vampires in space” stereotype I’ve seen other reviewers mention when introducing Fear to Tread. They’re a brotherhood who will bend the rules sometimes for each other, when they feel it is the right thing to do; they’re noble and heroic, willing to risk their lives for just a handful of trapped survivors; on the flip-side, they are absolutely Angels of Wrath, capable of such extreme violence it even makes the “barbarian” Space Wolves take pause3.

Sanguinius would be a hard, complicated character for any writer to handle well (and still made likeable), yet James Swallow manages to make him relatable; flawed, but not overly so, and I found myself sympathising with the choices forced upon him during the course of the story. Not easy when the character is a 12-foot tall angel-winged super-human!

While I feel the “Good Guys” are well-rounded and relatable characters, I wasn’t so much of a fan of the villains of the story, apart from the daemon Ka’Bandha. For being a being of pure hate and violence, Ka’Bandha is actually pretty well laid out, and not the one-dimensional caricature he could have been. His scenes with Sanguinius are key moments of the book. The remaining villains are generally a bit uninteresting unfortunately.

Horus’ depiction  (in the few times we see him – I don’t count him in the villains group because he’s only seen a few times) in Fear to Tread was somewhat new. Up to now, Horus has retained a bit of “tortured nobility” in his character, like he regrets the path he has started down. Here we get to see just how much of an inferiority complex he has comparing himself to Sanguinius, and more and more of the cruel, evil, twisted creature he will become. In contrast to this, the flashback scenes to times before the Heresy are quite poignant, particularly the scene after Horus is given control over all the crusading expedition fleets.

What I Liked

The building sense of dread as the Blood Angels fleet moves further into the planetary system, and encountering more and more things which just do not make any sense to them works well. You really get the feeling this is nothing they have ever faced before, and for the first time they are unsure how to meet their foe. They are uncomfortable and out of their element. Nerves begin to fray, and distrust starts to seep in. The tension does genuinely mount as you wonder just what horror will they come across next?

Swallow seems to have a knack for scene building. Every place and character within gets described in just enough detail as to allow us to picture it vividly, but not so much the story drags, weighed down by too much information.

Character interactions feel natural, and their personalities play off each other in a way I could believe in. No part of the dialog felt forced, or overwrought – not something I could say about some of the other books in the series.

It wouldn’t be a Warhammer 40,000 book without big climactic battles, and Fear to Tread does not disappoint. From the prologue to the conclusion, every battle is well written, with a good blend of pace, scale, drama, and grit. Even the smaller fire-fights – perhaps especially the smaller ones – are quite gripping to read. There were times I genuinely didn’t expect some characters to make it out alive. The confrontation between Ka’Bandha and Sanguinius (as depicted in the cover art) is particularly enjoyable, and lived up to expectations.

What I Didn’t Like/Understand

The big thing which did not sit well with me was the end of the book, when the Blood Angels end up in the Ultima Segmentum instead of at Earth, meeting Roboute Guilliman and the Ultramarines legion. I can understand how it happened from a in-world mechanics viewpoint, but I don’t get why it happened, knowing how the wider story plays out. The Blood Angels end up at Earth in time for the last battle with Horus (with Sanguinius playing a very, very, important role in that), but the Ultramarines do not. They get trapped in their far corner of the Imperium, as Warp travel becomes almost impossible. As a result the Ultramarines largely escape the Horus Heresy intact (aside from the events in Know No Fear) and lead the rebuilding after the war. So it made no sense to me to have the Blood Angels end up where they did. I can only surmise there is another book imminent which will directly follow on from the end of Fear to Tread. Unless it has a very good explanation or way to resolve this, then it just doesn’t make sense.

The Word Bearers Space Marines were pretty much unnecessary to the plot. Apart from acting as messengers, they didn’t do anything of note. We get to see one of them pining to “ascend” by joining with a daemon, but otherwise they were replaceable with some sort of “macguffin” which could have fulfilled their messenger role, and cut down the character count. In the end they come off as unnecessary and incompetent evil henchmen with delusions of grandeur.

The Space Wolves are slightly better used than the Word Bearers in that they are able to relay important information of what’s been happening outside the confines of this novel. Beyond that though, again, they don’t do much. Their plot is “hang around Sanguinius ‘suspiciously’, later give him some important information, then get butchered in a horrible fashion unbefitting their character.”

A few too many loose ends are left dangling for my liking. I’m avoiding being too spoilery, so I’m not going to say more, but (along with the above quibble with the ending) it feels like this is a “part one-of-two” story within the series.

Conclusion

It might seem from the above I have more negative things overall to say about Fear to Tread than positive. That’s absolutely not the case. Fear to Tread continues the recent trend of the Horus Heresy series getting back on track after a few fairly lacklustre books. As part of the series it is excellent instalment, and as a fan I thoroughly enjoyed the Blood Angels portrayal. The characterisation is largely top-notch, and the pacing pretty good. The bread-and-butter of Warhammer 40,000 fiction are the battles and conflicts, and Fear to Tread handles these very well, highlighting the unique ways the Blood Angels fight compared to the other Space Marine legions. There are a couple of key battles which had me gripped, frantically reading the pages to see what happened next.

Where I think Fear to Tread falls down, is reliance of other books to fill in the gaps. Compared against Know No Fear – the other recent high-watermark in the series – Fear to Tread is harder to understand out of context. This could be off-putting to the casual reader who has no earlier exposure to the series. I shan’t too hard on Fear to Tread because of this… it’s always a fine line between advancing the overall plot and making it accessible to newcomers, within such a long-running series.

If I must give Fear to Tread a rating, I’d give it a solid 4 out of 5. But more importantly for me it’s good enough it’s given me a determination to finish the other Blood Angel books Swallow has written.

And maybe start a new Blood Angels army. Again.

  1. As a personal side note: before this series, the Heresy was an unexplored but important part of the background of the Warhammer 40,000 setting, so it’s great to we’re finally getting to read about it. 
  2. After the events of the Horus Heresy, the vast Space Marine legions get split into much, much, smaller organisational units, called “Chapters”. So Legion = Pre-Heresy Space Marines, Chapter = Post-Heresy Space Marines. 
  3. The scene where the Space Wolves realise the levels of violence the Blood Angels have in their nature, buried underneath such a calm and noble exterior, is one of may favourite passages in the book. 

* By “The Right Way”, I mean following the guidance and practices at the PHP: the Right Way website. I make no claims this is the “best” way 🙂

Works n my machine badgeMac OS X is a pretty good web developer OS. It comes as standard with PHP, Ruby and Apache all out of the box, and the underlying UNIX system makes it easy to add in other languages and components to suit your needs. On top of that, some of my favourite development tools are on the Mac, so unless I’m writing .NET code, nearly all my development is on an (ageing) Mac Mini.

Now, while all that stuff comes as standard on OS X, lately it seems Apple has made it harder to get to. The versions shipped with OS X also tend to be a little behind the latest releases. As a result, most Devs I know use something like MAMP to make the server-side of their environment as easy as running an app. Personally, while I think MAMP works, and is a good time-saver (and I’ve been using it for the last year or so), but I like to get into the nitty-gritty of the system and get things running “native”. So last night I fired up the terminal and got PHP set up on my Mac with the latest version, and following the Right Way Guidelines. As a result I have PHP 5.4, Composer, the PHP Coding Standards Fixer, and MySQL all setup quite slickly (i.e. to my preferences).

The whole process was pretty easy, but does involve the command line. If this makes you uncomfortable, then it might be best to skip the rest of this post.

This all worked on my Mac, but I make no guarantees about it working on yours, and I’m not responsible if you break something.

If you find any glaring problems with this guide then leave a comment/get in touch, and I’ll make any required edits.

Step 1: Setup Your PATH

Edit the hidden .bash_profile file in your home directory. If you use Sublime Text 2 you can use the following command:

subl ~/.bash_profile

TextMate has a similar mate command, or you can use vi(m)/nano/emacs/whatever.

It’s possible you already have a line defining your PATH variable. It’ll look something like export PATH=<something>. I’ve found it most useful to change the PATH so /usr/local/bin is at the start, making sure anything you install there is used over the system defaults in /bin. Add this as a line below your existing PATH definition (or just add it in, if you don’t have an existing line):

export PATH=/usr/local/bin:${PATH}

Step 2: Install Brew

Strictly speaking, Brew (aka Homebrew) isn’t required, but I used it to install MySQL later, and it does make it stupid easy to install stuff into OS X. I think you should install it. The best instructions are found on the Homebrew home page, so go have a read there. There are a few pre-requisites, but nothing too difficult.

Step 3: Install PHP-OSX

Now we’re beginning to get somewhere! PHP-OSX is the latest versions of PHP compiled for OSX by Liip. Installation is a real doddle, from the command line:

curl -s http://php-osx.liip.ch/install.sh | bash -s 5.4

Follow the prompts given, including entering your password. After a few moments everything will have installed. For convenience I created a symbolic link to the newly installed PHP binary in /usr/local/bin:

ln -s /usr/local/php5/bin/php /usr/local/bin/php

Step 4: Install Composer

Now we have PHP installed, it’s time to look at the nice-to-haves, like a good package/dependency manager. Composer is relatively new on the block, and allows others to download your code and automatically grab any dependencies by running a simple command.

You can install Composer in your project, or you can install it globally. I prefer globally. As with PHP, installation is simple, from the command line:

curl -s http://getcomposer.org/composer.phar -o /usr/local/bin/composer
chmod +x /usr/local/bin/composer

Step 5: Install PHP Coding Standards Fixer

Another nice-to-have, this little tool will try to find and fix parts of your code where it does not conform to one of the PHP Coding Style Guides. Installation is almost identical to Composer:

curl http://cs.sensiolabs.org/get/php-cs-fixer.phar -o /usr/local/bin/php-cs-fixer
chmod +x /usr/local/bin/php-cs-fixer

Step 6: Install MySQL

If you installed Brew in step 2, then you’re good to go with this little command:

brew install mysql

It’ll take a few minutes, but you shouldn’t need to intervene at all. Once done you will need to run two more command to setup the MySQL tables:

unset TMPDIR
mysql_install_db --verbose --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp

If you didn’t install Brew, then you will need to install MySQL through some other means, such as packages on the MySQL website. I can’t help you with that, I’m afraid.

For managing MySQL, I use the excellent Sequel Pro, which is a successor to the venerable CocoaSQL.

As a next step you should look into changing the root password of your MySQL setup. This is a local dev environment, and likely only used locally by yourself, but it’s the proper thing to do.

Errata

  • Pear doesn’t seem to work, which is slightly annoying, but (to me) no real biggie. I didn’t test this with the built-in version of PHP, so I don’t know whether it worked beforehand. I’ll post an update once I figure it out.
  • I’d like to make bash script smart enough to stop MySQL when the PHP web server stops, but my early attempts haven’t managed to get this working (most likely due to the Ctrl-C used to stop the web server also stopping the script).
  • Throughout this process we’re running scripts directly from the web. This is pretty risky behaviour, especially with unknown/untrusted sources. You should always take a look at the raw script before running it, so you don’t get hit by something malicious.

Today was a good day – I managed to hit one of my work goals, and when I did I made sure I gave credit those that helped me.

My current role is a mix of support and development. For the last year and a bit it has been mostly support because a) I was the only person who knew the technical-side of the application, b) documentation was lacking (so I was learning as I went along) and c) the application had a very large user base spread across the globe. Support queues were general pretty busy – 30 or so open issues was common, and with only myself able to work on things there was seemingly no end in sight. Further developments and bug-fixes were always being pushed back because I just couldn’t find the time away from support. I resolved that I would get things under control; one day, the incident queue would read zero.

Today, 10 months or so after making it, I hit my goal. I literally did a little jig of excitement in the office (thankfully very few people were able to see me) when I closed out that last support ticket.

It’s important to celebrate life’s little successes, and it would be a good highlight to give the client, so I decided to write an email to my manager about the milestone. It’s also important to give credit where it is due, so I wrote the email first and foremost to the two offshore colleagues I had been working with recently, thanking them for their hard work, copying in their line manager so they could get the recognition they deserved. To be honest, I’m not sure what I felt better about – to reach my goal, or to give someone the recognition for helping me.

Over the weekend I started a fun little project. I’m tracking down and integrating as much of my old blog content as I can, across all of the sites I’ve written over the years.

When You Were Young cover artI’m not going to integrate every last bit of content I find, just the “highlights” (some things are best left forgotten…). Linkblog entries, and projects with no relevance will be left behind. So far I’ve added around about 26 entries covering from 2003-2009. No doubt I’ll go back over these years and add more, as the content resurfaces. Where possible I am preserving the original formatting and links, though in some cases I will have to link to an Internet Archive page.

The impetus for this little personal project came from realising I had neglected and discarded a lot of my history. As I’ve moved from site to site, platform to platform, I’ve usually wanted to “start fresh”, to see if it gives me that impetus I need to keep the blogging habit going. So far that approach has rarely worked, so why allow the old content to disappear? It’s a shame I thought of this so late. There’s large holes in 10 years of content charting my growth as a person lost to the void.

In the content I have found I have noted a marked difference to how I am now. I used to be quite open, generally had a more upbeat, less formal tone, and was more inclined to create something for the sake of releasing it to the world. Entries were generally short, and more frequent, but punctuated occasionally by something more in-depth. It’s interesting, and definitely something I’m going to reflect on.

As a side-note, with the content moving over, I’ve redirected traffic visiting the old domains to a landing page on this site. Although most of the sites had been inactive for a while, or the content otherwise not available, it would be wrong to just leave them to expire without giving someone the chance to find what they were looking for. Besides, Fickle Me might decide to reuse the domain in the future!

Of course, if you want to check out the “historical” content, head on over to the Archive page.

MG Siegler has – much like myself – converted to using the iPad full time as his mobile workstation:

A couple weeks ago, I wrote a quick note signaling my intent to predominantly use my iPad as my main computer when I travel going forward. What started as a successful two-day experiment led to a long weekend away last week. That went well enough that I’m confident in my choice. The iPad is my new road machine.

MG went for the Logitech Ultrathin Keyboard Cover, which was my second-choice after the Apple Wireless Keyboard. He believes Apple will eventually release their own “keyboard in a cover” accessory, citing the Microsoft Surface as a potential reason/influence. I don’t think Apple will release their own accessory – for one, it’d be a bit “me too”, with several options available on the market for quite some time (not to mention following in the wake of the Surface announcement); secondly, as one of the most-touted features of the Surface, I’m pretty sure Microsoft would see their “Smart” keyboard cover falling under the “don’t copy” patent licensing agreement held between the two companies.

After getting fed-up of not being able to read sites in Reeder on my Mac without getting bombarded with ads I looked around for a good hosts file I could use to block the buggers at the network level, rather than rely on plugins such as AdBlock at the application level.

I tried a couple, but the file available at Someone Who Cares was the most comprehensive and most up to date I could find.

So what does it do? Basically it takes a (huge) list of known ad/spy/malware domain names and tells your computer their IP address is 127.0.0.1, i.e. your own computer, rather than their actual IP addresses, so their scripts/ads/viruses/trackers/etc won’t ever load. As a side effect, ad-enabled websites should load faster.

Did you know you can use custom PHP extensions on Heroku? Neither did I, cos I can’t find it in the documentation. But you can:

https://gist.github.com/1288447

I came across this while searching for a way or workaround to use the MongoDB PECL extension on Heroku (don’t get me started on that…).

If you can’t be bothered checking the link, the summary is this:

  1. Create a folder in your app called ‘ext’ or similar.
  2. Copy your extension into this folder.
  3. Create a php.ini file with the following contents:
    extension_dir = "/app/www/ext/"
    extension=mongo.so
    
  4. Deploy

the CodeIgniter logoMost of my small personal projects tend to get built with CodeIgniter (CI), which is a simple to use, fast, lightweight PHP5 MVC framework.

the Facebook logoFor a while now I’ve had an itch to build something fun against the Facebook API so I can start learning how Open Graph works, and as a primer to building a “proper” Facebook integrated application. I also realised I hadn’t actually tried using CodeIgniter 2.x since it was released (quite some time ago). With an abundance of free time this weekend it seemed like the perfect time to get hacking!

Before I could build anything I would need to know one thing: just how do you connect a CodeIgniter app to Facebook?

Continue reading