Skip to content


One Decade

I made my first blog post on this day ten whole years ago.

Back then it was all pre-self-hosting, and the blog (sans the rest of the website) lived over at Blogger. Beyond just the technology, I think my blogging style and the content that I have focused on has evolved quite a lot since my first few posts as well!

The years brought a migration to WordPress, upon which the blog still runs, and four major design revisions too.

pwdb_decade_pwdb2  pwdb_decade_2009  The new site design screenshot  PWDB 5.0 Mobile display

Here’s to the next ten years!


As I move closer to the significant milestone of one decade of having this personal blog, I felt that it was time for a significant overhaul of the look and feel of this site, as well as some of its non-blog post content.

Enter the 5.0 release! :)

Responsive and Refined…


Rather than evolving the existing stylesheet and making changes, I actually started over, using a new SASS-based CSS workflow. If you look really hard, you will see bits and pieces of the old CSS hanging around that I have migrated forward for the moment. In the fullness of time, though, any of the old code should be gone!

The result is a site that is truly responsive — it is designed for small screens first, then it scales up to larger displays, rather than having a full-size only layout, but removing content for display on smaller screens. I did have a retro-fitted responsive system before, but this approach is much cleaner and delivers a more consistent result.

PWDB 5.0 Mobile display

A Font First!

Adding to the use of Colaborate for headings from my last design refresh, this design actually débuts my first experiment with editing fonts.

Thanks to the GPLv3 licensing terms of Colaborate, I was able to take it into TypeTool, and tone down its rather characterful lowercase ‘t’ for use as body text. The result is a custom font that, while it has its imperfections with kerning and missing ligatures, is an exciting first experiment for me — putting my interest type design to some practical use. I hope I will look back upon this first experiment with embarrassment later on when I have learned so much more, but for the moment it is very gratifying to have something to say “I did this” about!

You can download my source files for this font. This font, as it is based on Colaborate, is also licensed under the GPLv3 with font exception.

A More Modern Portfolio

The content on my Portfolio page had definitely aged, and was long overdue an overhaul. It now focuses on four main areas — Devops and Automation, Systems Administration, Web Development and Software Development.

More to Come!

As mentioned, this is a big change, but that doesn’t mean I am done! There are various other places where older content and design still might be evident, and I hope to get to more in the coming weeks.

Time for a Refresh

New site design screenshot

I have had a few design overhauls in my time here on this site. I haven’t, however, done anything significant to the site’s design since the beginning of 2012!

I have just finished another unrelated web design project with which I am very pleased, and, as frequently happens, it threw into sharp relief just how tired this site looked!

I am well aware that this site is also in need of a fairly generous content refresh as well — and I hope I will make some time to do that soon. For now, though, I hope the visual refresh keeps things going.

It is primarily a typographical refresh this time around. You might notice:

Who Shot the Serif, Part 2!

All serif fonts are gone!


Colaborate font sample

Colaborate, by Carrois Type Design, replaces Charis SIL for the header at the top of the page, and also does significant service for header text across the site.

Body Text

Roboto font sample

Colaborate’s funky looking ‘t’ character adds… well, character… but it wasn’t working for me across all the body text. Body text, then, loses its traditional Helvetica/Arial choice from before, and uses Roboto by Christian Robertson. It’s being included via Google Fonts, which should keep things nice and speedy!

There’s More… (I Hope!)

I have further ideas to tweak and refine the design, and of course, a desire to get some new content out here as well. With any luck, there will be a bit of time soon to act on those things. Watch this space.

Nginx, Linux sendfile(), and Problem Solving

Engine room, by Maggie Stephens

In “A Tale of Stale Content”, on the Van Patten Media blog, I take a somewhat philosophical look at IT problem solving, told through the story of an intensely frustrating issue with Nginx serving up stale content in virtualised environments. Apparently, the sendfile on; setting in Nginx will cause it to deliver old versions of files you have since updated on disk.

Sometimes a problem comes up that is just weird. It seems completely illogical. But these computery things are supposed to be nothing but logic, right?

When we eventually arrive at the solution, after many hours of hair loss and bad language, we are reminded of the sheer complexity of these systems. Our assumptions about how something at a higher level should behave are entirely dependent on the premise that the lower levels are all doing exactly as expected too.

It’s humbling, in a slightly odd technical sense. We all need to be humbled sometimes.

Read the full post over on the Van Patten Media blog.

Image is “Engine room”, by Maggie Stephens (Pot Noodle) on Flickr. Licensed under CC-BY.

Announcing Total Slider

Total Slider icon

I’m really pleased to announce that the WordPress plugin I have been working on with Van Patten Media, Total Slider, has now been released!

Total Slider is a plugin for WordPress from Van Patten Media that will transform your experience with sliders forever. Build your own templates in PHP and CSS, then preview the output in a beautiful WYSIWYG interface designed to blend seamlessly with the WordPress core.

Total Slider is released under the GNU GPL version 2 or later. We’d love your feedback, ideas, bug reports, translations and more.

Here is a quick 2-minute video introduction:

You can find out more at, and download Total Slider from the WordPress plugin directory.

Now Blogging ‘For Mac Eyes Only’

For Mac Eyes Only logo

I have actually been meaning to announce this here on my blog for quite some time, but just had never got around to it! Oops…

Anyway, I’m pleased to announce that I am now blogging for esteemed podcast For Mac Eyes Only‘s new Articles section. This is a great opportunity for me to get back into more regular blogging (I hope! 😉 ), which is something I love doing — and it’s a great opportunity to share some of my Mac knowledge with others.

I’ve already posted my initial thoughts on the Mac App Store as well as begun a Mac security series — and there should be much more arriving in the coming weeks.

I’ll be writing in the Articles section alongside fellow Mac-head Eric Erickson.

If you’re interested, please do go ahead and take a look!

Twitter Principles

Twitter logo

Its status as a relatively novel communication medium means that Twitter doesn’t necessarily have a clearly defined set of social expectations attached to it just yet. I think even now, post mainstream popularity, it is very much a service that you can use in the way that works best for you. Everyone doesn’t have to participate in exactly the same way.

Twitter is a useful tool for businesses to promote their products and actually connect with their customers. I think it’s great when a brand steps into this space and really ‘gets’ the nature of the service. It can make a brand feel a lot more human, enhance how you feel towards it; it serves as a great advertisement.

There are some practices on Twitter that I really can’t stand, however.

Now, as I said, one of the great things about the service is that there aren’t necessarily set rules which everyone follows in the same way. I don’t intend this post to be telling people what they should and shouldn’t do with the service, but I do want to point some things that really bug me. In short, this is somewhat of a rant.

Competitions Done Wrong: Hashtag Abuse

Twitter competitions are a marketing device that is becoming increasingly common. You convince people to follow your business’ profile, or tweet about the business or product, in exchange for a chance to win said product. Simple enough concept.

Some competitions in recent weeks have encouraged Twitter users to tweet anything they would normally tweet, but add a hashtag to that tweet relating to the product or promotion. I disagree quite strongly with this.

A hashtag is a short word or phrase starting with the # character.* You can add a hashtag anywhere in your tweet if you want to associate that tweet with that particular topic. It makes searching for tweets on a particular topic or event easier; it’s a great tool for hearing a collective voice on something.

Screenshot of Twitter search results for #snowleopard

Hashtags work because tweets that are related to the tag are the only tweets tagged with it. Encouraging users to randomly tag unrelated tweets breaks this model. And you’re ‘selling out’ your thoughts!

Twitter competitions can be done right, and I actually don’t mind seeing people tweeting something that promotes a business or product. But I’d like it if those tweets are clearly separate from other stuff and that you actually do care about the product as well and don’t just want free stuff.

Automated and Excessive Re-Tweeting

If you have something cool you have to share, whether you made it or just stumbled across it, I’d love to hear about it via Twitter. But once or twice a day for each cool thing is enough.

If people consistently tweet exactly the same tweet, or constantly re-promote something in case others have missed the last tweet, I get pretty frustrated, pretty quickly.

People will miss tweets. That’s the nature of the service — it’s dip in and dip out. If they do, tough. It’s not fair to keep constantly banging on about something to the people that heard you the first time and the second time and the third time!

“Please, Sir, Retweet!”

This is somewhat less of an emotive issue than the other two, but I think it’s still worth me saying.

If you put “please retweet” in your tweet, I won’t. With maybe a couple of exceptions.

If I’m going to retweet something (which is pretty rare) it will be on its own merit. I might help promote something a friend has done, but that will be because I believe in it, not because I’m told to.

Wrapping Up

These issues have been on my mind for a while. Twitter is constantly evolving and I personally think there really are roads that we shouldn’t go down and principles that we should uphold.

Integrity, honesty and loyalty are very important to me. If I stop ranting for a moment about specific issues, what I really want is that principles like these be respected, upheld and defended in the online world, as they are offline.

* Which is most definitely pronounced ‘hash’, not ‘pound’. This is pronounced ‘pound’ — £.

WordPress 2.7

Just a quick note to say that I’ve updated my personal blog here to WordPress 2.7.

This is also an excuse to test out the new QuickPress feature on the dashboard to write a post really really quickly.

QuickPress screenshot

XHTML 1.1 Compliant Feedburner Email Subscribe

Like many, I use FeedBurner to handle the RSS feeds for this blog, which gives me the benefit of all of FB’s special features, including detailed statistics on my feed’s usage.

I also make use of its email subscription service to allow people not familiar with feed technology to subscribe to the blog and have updates delivered to their inbox (Publicise > Email Subscriptions in your FeedBurner account).

My recent redesign means that my pages are now served as XHTML 1.1, rather than 1.0 Transitional*.

The code that I use in the sidebar to show the email subscription box (the code provided by FeedBurner) won’t validate under XHTML 1.1, though, which annoyed me. So, I fixed it.

You may wonder why anyone in their right mind would care if a little snippet of code doesn’t quite validate, since it doesn’t make any user-visible difference. Aesthetics are one reason and also some mobile browsers can be really fussy about validation.

So here’s how to use my fixed code if you want to have the email subscribe feature – but also have valid XHTML 1.1 markup.

First of all, log in to FeedBurner, click the relevant feed and go to Publicise > Email Subscriptions. Under Subscription Management, there should be a box with the default code, which should be something like this (line breaks added by me for readability):

» Read the rest of this post…

New Design

It’s been quite a long time since my site and blog have seen any major visual changes. I thought it was about time to give it a visual refresh, so over the past few days, I have put together this new design.

Hopefully, it retains much of the visual identity of its predecessor, while giving a welcome refresh, making things visually cleaner and making it a little less bland than previously.

I particularly like the new main navigation bar, which I think is more attractive and clearer than it used to be, while also removing the old hack I used to get the ‘button’ effect (there is no more ‘button’ effect)!

There are also a lot of changes behind the scenes to make the integration between the non-WordPress portions and the WordPress blog a lot easier.

Anyway, let me know what you think of the new design. Comments and suggestions for improvement very welcome!