10 Years

This blog is 10 years old. I’d planned to write a retrospective and publish it on the anniversary, but I completely forgot. I did post a new version of Chuckie Egg the day before which was far more entertaining.

In the first post, entitled “Go!”, the blog was running on WordPress and I complained that I didn’t have time to write my own blogging software. After 10 years and 518 posts, the blog runs on my own blogging software that is written in Go. I like to pretend that was clever foreshadowing.


Auto-Disable Gobble Comments

Here’s a neat new feature added to Gobble a couple of weeks ago: comments can be automatically disabled when a post reaches a certain age. I’ve enabled it in this blog and spam has dropped from a few dozen comments a day to zero.

I need to tidy it up a little. At present, it looks like comments are still enabled until you click through to the post itself. I couldn’t get my initial plan working, probably because I’m pushing the templating system too far. Also, I switched to a singleton for the config settings, which might not have been the best way to implement it.


Gobbling Dogfood

Welcome to the new Simian Zombie! It looks almost the same as it used to, and it works in pretty much the same way, but the back-end is now completely different.

The old Simian Zombie used WordPress as its blogging engine and was hosted on BlueHost. This combination resulted in terrible response times. Fetching and rendering the site took an average of around 5 seconds (testing suggested a range from 2 to 9 seconds), which is abysmal. Worse than using WordPress’ combination of PHP and MySQL was sharing a database server with a site that was either appallingly written or hugely popular; in either case, it kept taking down the database.

The new Simian Zombie is hosted on a VPS provided by Digital Ocean. It uses Gobble as its blogging engine, which is written in Go, uses the filesystem for permanent storage, and serves posts from an in-memory cache. A full render of the same blog page takes around 2 seconds on average (with a range from 1 to 3 seconds). Most of that time is used up by the JavaScript syntax highlighter; fetching the rest of the page usually takes around half a second. It probably helps that there’s 50% less HTML in the Gobble layout.

It took longer to re-format the content from the old site into correct Markdown than it did to write Gobble. Around half of the posts lost their formatting during the automated HTML-to-Markdown conversion process, so I had to add it all back in. I’ve been reluctantly working on fixing the posts since I announced Gobble, which was two months ago. After that was done, I had to ensure that all of the various downloads and images still worked (I’m sure I’ve probably missed a few links).

I’m hoping that Gobble holds up to being dogfooded. I’m also hoping that I haven’t lost anything during the transition.


Blogging Engines

I’ve been looking for a replacement for BitBlogger. It’s a neat little blogging system, but it has two problems:

  • AppHarbor applications get shut down after 10 minutes of inactivity;
  • It’s written in C#.

The first issue means that my BitBlogger site usually takes far too long to respond. BitBlogger is designed to use the cache exclusively to store all of its content. BitBucket notifies it of any data changes, at which point it sucks the latest version of the blogpost repository into the cache. This works well if the cache doesn’t get wiped, but every time the app gets killed the cache goes too. The application has to rebuild the cache by reloading everything from BitBucket when it gets restarted, which takes time.

I designed BitBlogger in this way to avoid spending a fortune on AppHarbor’s data storage plans, but I didn’t know about the shut down policy until later.

As for the second issue, using C# means I have to maintain a Windows virtual machine, an installation of VMWare Fusion and a copy of Visual Studio. That’s far too much overhead for something that could be written in a few hundred lines of Go and deployed on any cheap Linux server.

With hindsight, having a blog that is stored in Mercurial and gets deployed on each commit isn’t as useful as I’d hoped. There’s no way to write a post on an iPhone, for example. Something I’ve been considering lately is using DropBox for storage instead, and it seems that a few other people have had the same idea:

My favourite implementation so far is Scriptogram. Getting a blog set up is completely painless. Creating a post is as easy as writing a Markdown file in a specific DropBox folder, and syncing them just involves clicking a button on the Scriptogram website.

Scriptogram was so frictionless that I seriously considered moving this blog - I even wrote a WordPress to Scriptogram converter - until I realised that Scriptogram doesn’t have a comment system. I could add Disqus to the theme files, but I find that the comments are the best part of this blog and I don’t want to outsource their storage. It looks like we’re keeping WordPress.


Blogging with Mercurial from the Rocky Mountains

It’s been a while since the last update, but I do have a good excuse. I’ve upped sticks and moved from dingy Birmingham, in the UK, to sunny Littleton, Colorado, in the USA.

So, who’s hiring?

I’ve decided to start blogging about those experiences, but rather than flood this blog with personal posts I’m making a separate blog. But what blogging platform to use? It’s not going to have much traffic, I don’t want to put any admin time into it, I don’t want comments or tags or categories. All I want is to be able to post text as quickly as possible using Markdown.

It would be great if there was a blogging platform for Mercurial like the one available to Github users, but I’ve looked around and haven’t been able to find one. So why not write one?

Here’s my list of requirements:

  • Displays blog posts in reverse chronological order (newest first).
  • Posts are written in Markdown and reformatted into HTML automatically.
  • Posts are stored in a repository on BitBucket.
  • Pushing to the posts repository automatically updates the blog.
  • Allows paging through blog posts.
  • Includes an “Archive” page that lists all blog posts.
  • Has an RSS feed.
  • Maintains a cache of blog posts to minimise queries to BitBucket’s API.
  • Looks a bit like WordPress’ “TwentyEleven” theme, as that’s my favourite theme at the moment.

After a couple of evenings of hacking, here’s the result:

And here’s a demo:

A blog powered by BitBucket and Mercurial. Neat!

I’ve included instructions for getting a BitBlogger instance up and running on AppHarbor, a .NET hosting site that offers a basic freemium option. As BitBlogger doesn’t use any local storage or background events (BitBucket notifies it of changes, rather than BitBlogger needing to poll for updates), it doesn’t need anything above the free package.

I’ve copied bits and pieces of the TwentyEleven theme’s CSS file in order to replicate some of the appearance, so the licence for this application is the GPL rather than my preferred MIT licence. If anyone feels like putting together a simple and very legible theme to replace the current look and feel, I’ll be able to switch it over.


Website Changes

Things have moved around here at Zombie Towers. First up, this blog has moved from ant.simianzombie.com to simianzombie.com. It was originally in a subdomain because I shared the server with a few friends, but they got their own dedicated hosting years ago. There was no reason to be on a subdomain any more, other than inertia and laziness, so I’ve moved it.

Secondly, I’ve dumped the gtp.simianzombie.com subdomain. This was a collection of ancient Amiga software and music I’d written. The good stuff is available on the Aminet and the rest wasn’t worth hosting.


Spring Cleaning in Autumn

I haven’t updated the main part of this website since some time in 2004. This wasn’t such a problem in 2005, became more of an issue between 2006 and 2008, and now that we’re near the end of 2009 I had to stop procrastinating and do something about it. I’ve deleted the original site and moved this blog into its place.

Most of the worthwhile content on the old site has been or will be moved over to a section of this blog. However, the worthwhile content represents only a small fraction of the total content. As it was so old, most of it was outdated and irrelevant. To that end, the Flash demos are gone. Flash has advanced to the point where there’s even a port of Doom for it now, so there’s no point in keeping my antiquated Flash MX stuff around. I’ve kept some of the games, though, which have their own page, and some of the Java games too. I’ve thrown away the Cybiko code, some of the useless Nintendo DS code, the sourcecode for the old site and miscellaneous other stuff.

There were a number of links in various posts that were broken, all of which are now fixed (where possible; some link to sites that no longer exist). In moving the site around, I’ve probably broken a few links myself. I expect there’s quite a few sites embedding hosting my IK+ and Mario Bros ports that no longer work…


Theme Update

I keep an eye on Steve’s blog. He provided the original code to remove Woopsi’s dependency on PALib, for which I remain grateful. Anyhoo, he recently installed a swanky new theme called “Inove”. It’s something I’ve been after for a while: a clean, readable, two-column layout. I’ve stolen it, added a little more monkey to it, and installed it on this site.


Blog Upgrade - Fantastico to SimpleScripts

Finally got fed up of Fantastico’s diabolically bad release schedule. For some reason known only to the maintainers - if indeed Fantastico is still being updated - the latest version of WordPress available through Fantastico is 2.5.6. The latest stable version of WordPress is 2.7.1, and it has been out for months.

I’ve been putting off the switch because both automated installers change the default install. Swapping between them doesn’t sound too complicated, but I’m too lazy to put the effort in, particularly when I’m using slow web-based database tools. However, Simply have recently released a few scripts to automatically swap from Fantastico to their own platform.


The script doesn’t appear to work properly.


It screwed up the URL, so neither Fantastico nor SimplyScripts could work with the blog any more.

Fortunately I’d made a backup of the files and database before I started, so I:

  • Exported the blog content using WordPress’ “Export” function;
  • Deleted the existing database and files;
  • Created a new install using SimplyScripts;
  • Imported the content using WordPress;
  • Uploaded the wp-content/plugins, wp-content/themes and wp-content/uploads directories via FTP.

The blog is back and working again, and upgraded to the latest WordPress release. The only data I seem to have lost are the list of links (still got them in the DB backup) and the list of other users (99% of whom were spambot accounts anyway).

Lessons learned:

  • Backup before you start;
  • Fantastico is rubbish.