🎉 My handy new app for expanding text snippets, Snippet Pixie, is now available in the @elementary AppCenter!

While you’re re-skinning your web app with NES.css you should definitely be listening to Pretty Eight Machine by Inverse Phase, which is an excellent 8-bit tribute to probably my favourite album of all time, Pretty Hate Machine by Nine Inch Nails.

Just received a nice t-shirt and a couple of lovely “Sammy the Shark” stickers in the post, thanks @digitalocean!

If anyone’s still looking for an Initiative Q invite, I’ve still got some going spare.


WP Cron Pixie 1.4 Released

Just released WP Cron Pixie 1.4, the latest update to my little dashboard widget to view the WordPress cron, and run an event now rather than later.

In this release we have the following changes…

  • Added checkbox to control whether example cron events should be added to cron.
  • Added checkbox to control whether the display should auto refresh.
  • Added “Refresh” icon for manual refresh of data.
  • Fixed not all strings in UI being translatable.
  • Elm 0.19 frontend.

A couple of things not mentioned in the changelog are that the “Refresh” icon does a nifty little spin as data is being refreshed or events are being run manually to give a little UI feedback, and this version has been tested with WordPress 5.0 beta 2.

It’s available from the WordPress plugin repository, or from its GitHub repository.

I had a lot of fun developing this version, using the Elm language for web development is so fast and efficient. Elm is a small language packed with power, the combination of a functional and static typed compiled language with a well thought out application architecture make for a great development platform.

So now we know what @robwalling’s next adventure is!

TinySeed. The First Startup Accelerator Designed for Bootstrappers.


Big day for me today, after months of work, we at Delicious Brains released WP Offload Media 2.0, our plugin for offloading your WordPress Media Library to cloud storage.

It used to be called WP Offload S3 as it worked exclusively with Amazon S3, but now that we’ve added support for offloading your WordPress Media Library to DigitalOcean Spaces too, seemed like a great time to change the name!

I made a lot of changes to the internals of WP Offload Media in preparation for this release, previously the plugin was scattered with S3 specific code, now it’s much more adaptable to alternate storage providers. In fact it should be a lot easier to work in a different SDK than the AWS PHP SDK that we’re currently using for both Amazon S3 and DigitalOcean Spaces, you know, should we decide to add something like Google Cloud Storage support via the Google Cloud Client Library for PHP.

Office invasion!

Just found the Two-Bit History blog, and found myself saving pretty much every post to Instapaper.

Its Timeline page is a great idea.

Nice one @TwoBitHistory!

As a family we have now also watch MiB3. My wife says that was her favourite as it fills in some of the back story, but Abi and I still think it’s narrowly beaten by the original as our favourite.

Every weekend we settle down to watch a family friendly movie that Abi hasn’t seen yet. We watched Men in Black one and two back to back last night, so good, just great fun movies. Abi’s favourite bit? The talking pug of course!

Apple’s Podcast Connect is working again, yay!

Umm … oh dear, I … umm … just listened to my … umm … new microcast episode, and I umm … did a lot of … umm … umms, sorry!


Listening to @cheesemaker on Micro Monday just now made me wonder when I first started blogging. Turns out it was February 2002, via the now defunct CityDesk desktop application. In that first blog post I make mention of having been building some now long lost CMS of my own, I don’t even remember that!

It’s just occurred to me that one of the reasons I’ve been drawn to moving my site to Micro.blog is the shear simplicity of the writing experience and themes. It’s all about the words, while pictures stand out as real content rather than necessary decoration.

Switched Personal Site to Micro.blog

I’ve bitten the bullet and switched my personal site to be hosted on Micro.blog.

It’s been a long time coming, I should have taken the plunge over a year ago when I first got the bug, but decided at the time to keep my WordPress site and cross post to Micro.blog. You can tell from my distinct lack of posts that I never really got into that, I mainly used the old site for announcing stuff (a bit like I’m doing now I suppose!), and only sporadically posted to Micro.blog itself, or Twitter for that matter.

So this move is part of an attempt to be more social, something that Brad Touesnard has said I suck at big time!

It’s also prompted by a desire to consolidate and clean up a few of my “web properties”, with an emphasis on simplifying my hosting etc. There’s some stuff coming down the pipe from Delicious Brains that I intend to use for my business stuff, but this personal stuff should hopefully flourish here.

New WordPress Plugin: WP Table Pixie

What’s this now? A new WordPress plugin called WP Table Pixie? Why yes, Options Pixie and Meta Pixie got together and made a baby!

So, when I introduced Meta Pixie my friend and colleague at Delicious Brains, Ashley Rich, had just two comments…

Nice, it supports user meta and everything. How come you decided to make it a separate plugin?

Apart from obviously loving it ;-), his second comment was basically asking how come I released a brand new plugin for accessing metdata tables rather than adding the functionality to the Options Pixie plugin?

My answer boiled down to how the WordPress database’s “options” and various “*meta” tables are a different structure, the name “Options Pixie” didn’t really fit for tables like postmeta, and frankly it was nice to have more plugins for people to be able to purchase a Pro addon for and for me to cross promote.

A year and bit later, my opinion has changed in a number of ways, and I’ve decided to reboot work on my personal WordPress plugin development by merging Options Pixie and Meta Pixie into a single plugin called WP Table Pixie.

At first, WP Table Pixie supports the following tables: commentmeta, options, postmeta, termmeta, sitemeta (multisite) and usermeta. However, the name “WP Table Pixie” is obviously a little more generic than that initial list of tables might suggest. I’m not promising anything, and I haven’t figured out a good UI yet, but I’m keen to try and expand the plugin to handle more than just those options and metadata tables, plenty of plugins have custom tables that it would be nice to be able to drill down into and manage. If that’s something that appeals, let me know! However, I realised that although the options and metadata tables have obviously different structures, I could mung things a bit in the UI and swap out column labels such as “Related ID” and “Autoload” as appropriate as long as I did some jiggery pokery in the background to make things sane.

I’ve come to very much dislike how having two free plugins with Pro addons means a total of four plugins needing to be installed when wanting to inspect and edit both options and metadata for a customer (I use these plugins a lot when doing support for Delicious Brains).

WP Table Pixie Screenshot

Hence WP Table Pixie is now a single free plugin that can do the job of the free Options & Meta Pixie plugins to VIEW ALL THE THINGS, but can also be replaced by the Premium version to also EDIT ALL THE THINGS.

This means customers need only install the one plugin, there’s no need to install the free plugin before installing the version of WP Table Pixie they receive after purchase. And believe me, there’s a lot of benefit to developing a free and expanded premium plugin rather than an addon for a free plugin, I squashed many subtle and not so subtle bugs during the development of WP Table Pixie from a single codebase.

With WP Table Pixie I’m moving away from running my own store on my business site, and instead I am using Freemius for both in-plugin upgrades and sales initiated from the (really rough at the moment) product page. There are a few reasons why I’ve made this move from an Easy Digital Downloads based sales site to using the Freemius service, it feels like I should probably go into those reasons in a follow-up post.

If you’re an existing customer that’s bought the Pro addon for Options Pixie, Meta Pixie or both (thank you), am I leaving you out to dry? Of course not! By now every Options or Meta Pixie Pro customer should have received an email with a WP Table Pixie license for a multiple sites plan (because the previous plugins started at 10 site licenses) that expires a year after their current license expires. If you had bought both of the previous Pro addons, then you’re getting a two years extension to your license as big thank you!

If you have any comments or questions about WP Table Pixie, please drop me a tweet.

New Xojo Web SDK Control: ToastrIJ

I’ve created a little open source Xojo Web SDK control called ToastrIJ.

It’s a thin wrapper around the most excellent toastr JavaScript library to enable the display of notifications. You know, those little “growl” like notifications to display information, success, warning and error messages.

It’s under the MIT license, and you can grab it from GitHub.

Meta Pixie Pro Released

What? Really? So soon after releasing Meta Pixie?

Yep, just one week after releasing Meta Pixie I’ve managed to finish off and release Meta Pixie Pro.

To be honest, I was already working on the Pro addon for Meta Pixie when I announced Meta Pixie’s release last week, as I had to wait for Meta Pixie to be approved and added to the WordPress Plugin Directory. It took a few late nights of development and much testing, but I wanted to get it out before Christmas and I’m pretty stoked at how well development went.

Meta Pixie Pro adds the following features to Meta Pixie:

  • Add, edit, delete records.
  • Fix broken serialized values.
  • Bulk deleting and fixing of records.
  • Priority email support.
"List, sort, search, view, add, edit, delete and fix your WordPress site's commentmeta, postmeta, termmeta, sitemeta and usermeta records with style."

Like Options Pixie Pro, you can pick up a Meta Pixie Pro license for 10, 25 or 50 sites, starting at the super low price of $39. If you want a license for more than 50 sites, drop us line.

If you stick both Options Pixie Pro and Meta Pixie Pro in your cart, you’ll get a 20% discount on the second item! (tip: if you’re buying a larger pack for one of the plugins, stick it in your cart second for a bigger discount!)

New WordPress Plugin: Meta Pixie

Ever since I released Options Pixie to enable easy viewing of options records in a WordPress database, my colleague at Delicious Brains, Ashley Rich, has been bugging me virtually non-stop to create something that lets us look at postmeta records. It’s really handy for us when working on WP Offload S3 to be able to see the metadata attached to a Media Library item.

Well, a couple of weeks ago I finally found a few spare evenings to work on a new plugin that enables viewing of not only postmeta table records, but also commentmeta, termmeta, usermeta, and on multisite installs, sitemeta too.

Meta Pixie is now available from the WordPress Plugins repository, and once installed you’ll find a “Meta Pixie” menu option within the “Settings” menu.

Now you can inspect your WordPress metadata records to find out what’s really going on. For example, you can easily check that a Media Library item has the correct thumbnail metadata.

You can also check the integrity of serialized values, Meta Pixie will highlight broken serialized values (i.e. where it expects a string to be 256 characters long but its actually 255).

For us on the WP Offload S3 team it’s awesome to be able to view the plugin specific metadata that we need to generate, as well as settings stored in the sitemeta table of a multisite without having to resort to database admin tools. The rich view means we can easily see the structure of a serialized record without having to unpick plain text.

I’m considering creating a Meta Pixie Pro addon that enables add, edit, delete of metadata records, as well as fixing of broken serialized values. If this sounds like something you could use, please let me know by adding your vote to its product page.

ActorDB for Docker

Last weekend I re-stumbled across ActorDB, a very interesting distributed database system that scales near linearly by scoping work to “Actors”. Every database action, whether that’s an insert, select, update, delete or whatnot, always starts by specifying the Actor. This effectively scopes the changes to a single database, which then replicates to its sibling databases on other ActorDB nodes in a cluster. There’s a lot more to it than that, as you can of course work with multiple actors within a transaction, and can connect to any node, in any cluster, and the data will be routed properly. In short, think user centric databases all clustered and replicated together, using the SQLite engine backed by LMDB storage and using Raft for consensus. There’s a little buzz-word bingo for you.

After reading everything I could find on ActorDB, and still having a bit of time to kill before having to go transfer our daughter from one place to another yet again, I figured I’d have a quick play with it.

As is rapidly becoming my norm, I went to Docker Hub to find a Docker image to spin up. To my utter shock and horror (there might be a little bit of exaggeration there), there was not a single image for ActorDB to be found!

My first thought was that maybe there was a very good reason for there not being a Docker image available, but after a little look around that there interwebs I came to the conclusion that it was simply because it’s a young project, and generally run on real machines in production. Nothing made me think it was a terrible idea to run ActorDB in a Docker container, so why not give it a bash? ActorDB for Docker was born!

The Dockerfile

Having recently done a bunch of work for Delicious Brains that involved using Docker, I wasn’t too phased by the idea of spinning up a new Dockerfile, and luckily there’s an ActorDB package for Debian.

I built a basic image based on Debian Jessie, and then logged into it and experimented with the steps I needed to run to get ActorDB installed and running. It took much less time than I expected as ActorDB is pretty self contained, the biggest issues I had were with making sure curl had all its dependencies in place to actually download the .deb file from within the running container (it needs some extra root certificates installed via a package).

I also rather stupidly forgot that the actordb program runs as a daemon by default, so the container kept just running and exiting cleanly. Once I realised what was going on, I simply ran the container with –entrypoint /bin/bash and then ran actordb without any arguments to get its usage info. Turns out you can run actordb forground rather than actordb start to get it to run in the current shell. Just what I needed.

I’ve been working with a PhantomJS image recently, and noticed that it used a script to ensure that the phantomjs binary did not run as the first process in the container (PID 1) as it may cause issues with shutting it down. So I nicked that idea.

The final Dockerfile is pretty simple, makes sure to expose the required ports and volume primary paths that ActorDB uses, and the image is available as an automated build on Docker Hub.

Docker Compose

A distributed database is no good without multiple nodes to distribute its data around, and of course I wanted to ensure the image could be used in a network of containers. I used Docker Compose to set up a very rudimentary cluster of three nodes, you can see the setup in the project root’s docker-compose.yml file.

While the containers seemed to work (on second start, see issue #1 for details), could ping each other by their service names (e.g. “actordb-server-1” could ping “actordb-server-2”), I spent ages trying to get the instances of ActorDB to actually replicate data between them. I eventually sorted it out with the following two important realisations:

  1. The -name setting in each node's vm.args file must have a unique name before the "@", the ip address/domain name after the "@" doesn't make it unique.
  2. You must update your initialisation script that is run on the "leader" to also register the other nodes in the cluster (you can register them manually later, but will need to copy the leader's lmdb file to them first).

Once I’d worked that out, I was super happy to have a fully working cluster of ActorDB nodes!

Quick Example

The following text is a quick run through of bringing up a cluster, initialising it, writing some data to the first node, switching to the second node and showing the data replicated from the first, creating some more data, and then showing it all on the third node, but using the MySQL client. Enjoy!

Ians-MBP:actordb-for-docker ian$ ./up.sh 
Creating network "actordbfordocker_default" with the default driver
Creating actordbfordocker_actordb-server-1_1
Creating actordbfordocker_actordb-server-2_1
Creating actordbfordocker_actordb-server-3_1

actordb-server-1 - Use actordb_console to run the SQL script that initialises the database:

Ians-MBP:actordb-for-docker ian$ docker-compose exec actordb-server-1 actordb_console -f /etc/actordb/init.example.sql
Config updated.
Config updated.
Schema updated.

actordb-server-1 - Use actordb_console to show the schema, create and select some data:

Ians-MBP:actordb-for-docker ian$ docker-compose exec actordb-server-1 actordb_console -u myuser -pw mypass
use config (use c)  initialize/add nodes and user account management
use schema (use s)  set schema
use actordb (use a) (default) run queries on database
open         (windows only) open and execute .sql file
q            exit
h            print this header
commit (c)   execute transaction
rollback (r) abort transaction
print (p)    print transaction
show (s)     show schema
show status  show database status
show queries show currently running queries
show shards  show shards on node

actordb> actor type1(hello_world);
actordb (1)> insert into tab(id, txt) values(1,'Hello World');
actordb (2)> c
Error: {error,{nocreate,<<"Query without create flag was attempted on an actor which does not exist.">>}}
actordb> show
sql                                                                                                                                                 type       |
$CREATE TABLE tab (id INTEGER PRIMARY KEY, txt TEXT);                                                                                               type1      |
$CREATE TABLE tab1 (id INTEGER PRIMARY KEY, txt TEXT);                                                                                              type1      |
$ALTER TABLE tab ADD i INTEGER;                                                                                                                     type1      |
$CREATE TABLE tabx (id INTEGER PRIMARY KEY CHECK (typeof(id) == 'integer'), txt TEXT CHECK (typeof(id) == 'text'));                                 type1      |
$CREATE TABLE asdf (id INTEGER PRIMARY KEY AUTOINCREMENT, txt BLOB);                                                                                type2      |
$CREATE TABLE actors (id TEXT PRIMARY KEY, hash INTEGER, val INTEGER) WITHOUT ROWID;                                                                counters   |
$CREATE TABLE actors (id TEXT PRIMARY KEY, hash INTEGER, size INTEGER)  WITHOUT ROWID;                                                              filesystem |
actordb> actor type1(hello_world) create;                 
actordb (1)> insert into tab(id, txt) values(1,'Hello World');
actordb (2)> c
Rowid: 1, Rows changed: 1
actordb> actor type1(hello_world) create;                 
actordb (1)> select * from tab;
actordb (2)> c
i    id txt         |
null 1  Hello World |
actordb> q

actordb-server-2 - Use actordb_console to see the data created on actordb-server-1, and create some more:

Ians-MBP:actordb-for-docker ian$ docker-compose exec actordb-server-2 actordb_console -u myuser -pw mypass
use config (use c)  initialize/add nodes and user account management
use schema (use s)  set schema
use actordb (use a) (default) run queries on database
open         (windows only) open and execute .sql file
q            exit
h            print this header
commit (c)   execute transaction
rollback (r) abort transaction
print (p)    print transaction
show (s)     show schema
show status  show database status
show queries show currently running queries
show shards  show shards on node

actordb> actor type1(hello_world) create;
actordb (1)> select * from tab;
actordb (2)> c
i    id txt         |
null 1  Hello World |
actordb> actor type1(hello_world) create;
actordb (1)> insert into tab(id, txt) values(2, 'ActorDB Rules!');
actordb (2)> c
Rowid: 2, Rows changed: 1
actordb> q                                                    

actordb-server-3 - Use the mysql client to connect to actordb-server-3’s MySQL protocol port:

Ians-MBP:actordb-for-docker ian$ mysql -u myuser -p -h127.0.0.1 -P33337
Enter password: 

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 0
Server version: 5.5.0-myactor-proto 5.5.0-myactor-proto

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> actor type1(hello_world) create; select * from tab;
Query OK, 0 rows affected (0.01 sec)

| id   | txt            | i    |
|    1 | Hello World    | NULL |
|    2 | ActorDB Rules! | NULL |
2 rows in set (0.00 sec)

mysql> actor type1(hello_world) create; update tab set i = id * 100;
Query OK, 0 rows affected (0.00 sec)

Query OK, 2 rows affected (0.02 sec)

mysql> actor type1(hello_world) create; select * from tab;
Query OK, 0 rows affected (0.01 sec)

| id   | txt            | i    |
|    1 | Hello World    |  100 |
|    2 | ActorDB Rules! |  200 |
2 rows in set (0.00 sec)

mysql> exit;

Options Pixie Pro Released, Finally.

Well, I finally did it, I got Options Pixie Pro 1.0 for WordPress finished and released!

After many late nights (but no weekends), I finally got to a point where I was very happy with how Options Pixie Pro was working, and confident that it provided enough value to be worthy of release.

It’s pretty awesome to have a new product out in the wild, it’s been over 10 years since I released my last product on my own, through pinching time here and there in the evenings.

It feels a bit weird too when I realise that Options Pixie Pro is new to everybody. I’ve been using it for months during my normal work day, especially when testing WP Offload S3 as it’s been perfect for inspecting the options records created for its settings and processing queues. It’s very handy too when you need to add, edit or delete options records to mimic various scenarios while testing a plugin.

Favourite Feature

I think one of my favourite features of Options Pixie Pro is how you can edit a Base64 encoded serialized array, or fix a broken serialized array hidden behind Base64 encoding. Options Pixie Pro lets you see the hidden serialized string, edit or auto-fix it, and re-encodes it for you on save. I can only assume that the reason theme developers Base64 encode their settings is to preserve extended character sets regardless of MySQL’s character encoding settings, but now you can edit and auto-fix those values. And if you can’t be bothered to count the number of characters in the string you’ve just edited deep within a serialized array or object string, no problem, as long as the format is still valid Options Pixie Pro will fix those pesky character counts for you on save.

Row Actions

Of course, there are row level and bulk actions for fixing serialized values…

Options Pixie Pro - Fix Serialized Row Action

Options Pixie Pro - Fixed Serialized Record

Bulk Actions

And the same goes for row and bulk actions for deleting records…

Options Pixie Pro - Delete Row Action

Multisite Support

And if you manage a multisite install of WordPress, you can inspect, add, edit, delete and fix options records across all your subsites…

Options Pixie Pro - Multisites Supported

Quick Demo

Below I’ve embedded a quick animated gif of me exercising some of the features of Options Pixie Pro, click it to get a larger format version.


Learning Experience

It’s been quite some learning experience. There’s a lot involved in developing any kind of software product that you intend to sell and support. Apart from the actual software development, getting a website set up to sell direct downloads is generally more involved than it might look at first. But the good thing is, once it’s set up for the first product, the second should be a lot easier to add.

If you’re looking to “List, sort, search, view, add, edit, delete and fix your WordPress site’s options records with style”, then please pop over to my business site and take a look at Options Pixie Pro!

My First WordPress Plugin: Options Pixie

There’s been a number of times when I’ve wanted to quickly check the value of a record in the wp_options table of a WordPress site’s database, but not had easy access to the database, usually when the site and database are on a remote server. I’ve tried using the /wp-admin/options.php page, but it’s not ideal and does not show the contents of serialized values, which of course is where so many interesting values lie in wait.

There are of course a few existing WordPress plugins for working with the wp_options database table, but none have quite fit my needs, either by not showing values in a usable way, not having good search and sort, or simply throwing a million errors when in debug mode (which you always seem to want on when the need arises for checking your options records).

Although I’ve been developing WordPress plugins for Delicious Brains since mid 2014, I’ve never actually released a plugin of my own. That doesn’t seem right, especially as most of my team mates have excellent plugins of their own.

So I’ve scratched my itch as they say, and have developed and released my first open source WordPress plugin called Options Pixie. Options Pixie List View

Options Pixie Rich View Actually, as I write this, Options Pixie has been released and available from the WordPress plugins repository, GitHub and my own business site for over 7 months, as I released it at the beginning of July 2015. I guess the fact that I haven’t spoken about it here, only once on twitter, is a testament to my awesome marketing skills. Maybe not.

I’m not sure why I haven’t been jumping up and down and shouting about Options Pixie, as I’m really quite proud of it. It works very well for what I need it to do, and I went to great pains to make it a very high quality and robust WordPress plugin. Maybe I can just blame my natural and very British reserve?

Regardless, I’ve finally finished off this post (I started it just a few days after releasing Options Pixie, 7 months ago), and encourage anyone that finds themselves in the position of needing to check the contents of their WordPress site’s options table to search the WordPress plugins repository and install Options Pixie. It’s currently at version 1.0.1 having had a few bug fixes, and there’s a new version in the wings which improves some of the behind the scenes functionality, enhances working with base64 encoded values, and is tested with the latest versions of WordPress.

Here’s the highlights of what Options Pixie offers:

List, filter, sort and view options records, even serialized and base64 encoded values.

  • List, sort and search options
  • “Rich view” of serialized and JSON string values
  • Works with base64 encoded serialized and JSON string values
  • Highlights broken serialized values
  • Supports Multisites

With Options Pixie you can find out what is really going on with your WordPress options.

I’m also working on Options Pixie Pro, a paid addon that adds bulk actions such as delete and fix serialized, add, edit and delete functionality, and of course priority email support.

My First iOS Game: Missed Three

Today I had an email from Apple to say that my first iOS game, Missed Three, had entered “In Review” status, which I thought was pretty good as it’d only been submitted for review a week ago. Then, just 30 minutes later I received another email to tell me that Missed Three was ready for sale through the App Store.

I guess when you make what is probably the simplest game on the App Store, it doesn’t take very long to review! ;-)

It really is a very simple game, keep tapping the targets as they appear, when you’ve missed a total of three the game is over. Of course, it starts off at a reasonably slow pace, giving you a little while to tap a target before it disappears, but as the game goes on the targets disappear in an ever shorter time. It really does get pretty hectic if you’re doing well.

If you get a new high score, you get an opportunity to share it with a friend by sending them an email. I intentionally did not add sharing by Twitter, Facebook or any other social media as I don’t like seeing those kinds of things pollute my timeline, so why would I make it easy to do that in my game? Just challenge your friends directly, you know who will or will not take up the challenge, so why annoy anyone else?

If you’re looking for something short and sweet to challenge friends with, you can purchase Missed Three from the App Store.


Recently I was able to buy ianmjones.com, a slight upgrade to my existing ianmjones.net domain.

On re-appraisal of the old ianmjones.net as was, I felt that the site did not reflect who I am now, so I made the decision to start from scratch, to reboot if you will.

You are now reading the first post on that clean slate.

Some might say starting again with a clean slate is not in the spirit of blogging, surely a blog should morph and transform over time as you do, and still others might comment that at the very least I will be losing valuable search ranking.

I’m in the process of cleaning out and simplifying many aspects of my life, and this site is most definitely needing my attention, along with all my other web sites.

The majority of traffic to this site over the last couple of years has been to “off topic” posts about matters that have no long-term interest for me from people who in general won’t have any reason to ever return. That’s not very useful, to me, or to those visitors arriving by searches that I would never have occasion to try myself.

As the last post on the old site notes, my old site succumbed to the WordPress worm that has attacked older versions of WordPress and laid dormant until just recently. It’s a good time to clean house.

Also, you may or may not have noticed, but this site does not have any form of commenting mechanism. This is not an over-sight, it is intentional. If you would like to comment on anything I should put up on this site, please feel free to send me an email, tweet, IM or even a dead tree letter, or better still write something thought-provoking on your own site.

Often, when this site has been re-born I’ve made some promises or shared some hopes as to what I expected to do with it, this time I make no such promises or declarations of intent.

Previous versions of this site can be found at: old.ianmjones.com (covering dates 2004-09-30 to 2009-09-16) old.ianmjones.net (covering dates 2002-02-11 to 2004-09-30)