Skip to content


WordPress, Custom Field Suite and the WP REST API as a Middleware Platform

WordPress logo

Over the last five years or so, I’ve worked a lot with WordPress — developing custom plugins as well as piecing together pre-existing components to build (hopefully) really great websites.

But WordPress is more than just a blogging tool, and can be more just a tool for websites.

My most recent WordPress-related endeavour has been in my day job.

I have been looking at taking various bits of information about business processes that thus far have been disparate and disconnected and structuring and centralising that information so it can be more useful.

I’ve been using custom post types in WordPress for different types of information. Custom Field Suite makes describing the metadata we want to store a breeze, and effortlessly provides a beautiful and usable interface for “mere mortals” to input and manipulate the data later in the WP-Admin interface.

I work in an education environment; a simple example of one of these entities is the lunch menu (formerly just a Word document with no meaningful machine-readable structure at all). This was a nice, easy and public entity to start with.

So, we have a:

  • Custom post type for a lunch menu
  • A Custom Field Suite field group attached to the custom post type
  • Members plugin to control read and write access to that custom post type 

The final piece of the puzzle is using the WP REST API to be able to expose this data to other systems.

With a very small amount of code, the REST API can be convinced to enable access to these custom entities — and of course we still retain WordPress’ access control (with a little help from the Members plugin) to ensure we’re not too free with our data!

Now we have somewhere where non-technical users can go to input data and the ability then to export that data through the REST API into any other application. Because we’ve formalised the structure of the information, we have the flexibility to display it in all sorts of different ways that are appropriate for the medium.

So our lunch menu can be:

  • Exposed via the web
  • Displayed on a screen in public areas
  • And more!

The lunch menu design was an exciting proof of concept of the idea. I’m now moving on to slightly more ambitious projects which involve using a little bit of custom ‘glue’ in PowerShell (but whichever programming language is appropriate could be used!) to write data from other external systems into WordPress for later use.

Getting information out of big proprietary information systems using their provided tools that require… shall we say patience… has been a challenge. But, once liberated, this information is now stored, structure, and now can be queried simply and securely for all sorts of uses.

Back in 2011 when I started developing for WordPress with Chris from Van Patten Media, I remember thinking to myself, “yeah, I can probably figure this out”. It perhaps wouldn’t have been so obvious then that building a skill set with a ‘blogging tool’ would prove useful five years later in a quite different context, but this is testament to the versatility of the WordPress platform and what it has become!

Merry Chris-TLS-mas

Just a quick note to wish you, dear reader, a very Happy New Year. As I enter my 11th year of blogging, I hope I will be able to make a little bit more time in 2016 for more regular posts!

Also, I’m pleased to note that thanks to the wonderful folks at the Let’s Encrypt project, the whole of my site is now served over HTTPS. Given my more recent security focus, that was something that was long overdue. I’m very grateful to the Let’s Encrypt project sponsors, as the project offers a solution that provides equal, if not better, verification that traditional Domain Validation TLS certificates, at the cost of precisely zero.

Here’s to 2016!

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