Skip to content


Total Slider 2.0

Total Slider Banner

I am very excited to be able to announce that Total Slider 2.0 has been released!

Version 2.0 is a significant milestone in the plugin’s history, and brings a very important behind-the-scenes change to the way your slide information is stored. In addition to that, and a lot of cleanup work in the code itself, there is now the capability of having draft slides as well as auto-saving of those drafts, making it much more difficult to lose data!

Total Slider 2.0 draft functionality

Being a side project that has to fit in around my day job and other work, this has taken much longer to get out there than I would have liked, but I am very happy with the result. The particular challenge of making sure the data format upgrade goes without a hitch involved some extensive testing, but I’m pretty confident (about as confident as you can be!) that the upgrade process will be very smooth. In the unlikely event there is an issue, you can roll back the plugin to v1.1.5 without any loss of data. Obviously, taking a database backup is a good idea, though! 🙂

With this big infrastructure change out of the way, I’m looking forward to the future of this plugin. I hope we can deliver more graphical goodness (a slider template previewer would be nice!) and a greater variety of templates that ship with the plugin to support the different preferences people have for their sliders.

It’s really exciting to finally get this released to the 1,000+ active users (according to its WordPress plugin page) this software has, and I’m looking forward to making it even better as and when I can!

You can download Total Slider from the WordPress Plugins Directory.

Working on Total Slider 2.0

Total Slider Banner

I’ve been fortunate this week to have a little time to work on Total Slider, my (and Van Patten Media’s) open source WordPress plugin for making those neat little slideshow things, like so:

Example Total Slider slider

I have been meaning to get to this project again for a while, so it is great to get a moment or two to give it the love and attention it deserves.

My focus thus far has been on a complete overhaul of Total Slider’s data storage format — away from using wp_option records and using a custom post type.

This change is not only the right thing to do to clean things up and follow best practices, but it opens doors to other neat features that will make Total Slider feel like it fits into the WordPress Way even more. Without making undeliverable promises, I’d love to see automatic saving of slide drafts make it into 2.0! 😉

One of the things I have found that is pleasing is that much of the code I have already written is sufficiently abstracted that ripping out the fundamentals of the data format has been a lot less painful than it could have been!

It is nice as well to use this blog for one of its original purposes, to give updates on the projects I am working on. 🙂

You can follow progress in the unstable branch on the project’s GitHub page.

Cleaning up the IP.Board url4short mess

XDebug to the rescue…

The condensed, I-just-want-to-fix-my-site version:

On your server, try:

grep ‐ri \$mds /wherever/your/website/folder/is

to locate the injected code, and while file it resides in. You can then go into that file and remove it.

Also try re-caching all the skins and languages in the Admin Control Panel. Make sure all IP.Board updates and patches are applied to prevent the compromise happening again.

Reset your passwords and keys. Take measures to detect and continue detecting other infiltrations.

My friend Niall Brady dropped me an email, saying that some of the users of his Windows-Noob forums were reporting getting redirected to a spammy-looking site (url4short dot info) when clicking on search results to the site.

The forums run the Invision Power Board (IP.Board) software. There had been some reports of vBulletin boards being hit with this kind of spammy redirect, but fewer suggestions that this was an IPB problem. There had been a patch for a critical IPB issue released in December, but that had, obviously, been applied to the site as part of normal good practice.

Nevertheless, I was concerned. Clicking on a search engine result should definitely not be redirect somewhere other than the result page!

Without evidence that the issue was not limited to one machine, or one connection, however, it could not be ruled out that it was just malware on that visitor’s machine.

» Read the rest of this post…

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 and download Total Slider from the WordPress plugin directory.

The Very Simple PayPal Bridge

Just a quick note to say that I’m proud to announce the release of some more open source code, as part of my collaboration with Van Patten Media.

The Van Patten Media Labs site has all the details of the Very Simple PayPal Bridge — a simple way to connect to the PayPal API.

Interacting with the PayPal NVP API is something that a lot of e-commerce websites need to do. If you’re writing your own code for a bespoke e-commerce solution, rather than shoehorning in generic ‘Shopping Cart’ software, there is quite a lot to think about in order to communicate successfully with the API and provide a great payment experience for the site’s customers.

The Very Simple PayPal Bridge is a PHP class that, as the name suggests, provides a very simple interface for the PayPal NVP API.

In any situation where you need to interface more directly with the PayPal API, the VSPB provides a clean interface for the other layers of your code, dealing with all of the implementation details of sending requests via cURL, encoding and decoding the arguments, as well as offering full support for graceful error handling with PHP exceptions. It is great as a lower-level component of a wider PHP e-commerce solution.

For more information, see the post on Van Patten Media Labs and check out the code at GitHub!

Amalia is Now Open Source


I am very pleased to announce that Amalia, the content management system I helped to develop for Van Patten Media, has now been released as an open source project!

Amalia is designed to be a content management system ‘for the rest of us’ and to make it easy to manage a small website. Amalia is a database-less CMS, so it doesn’t need the complexity, maintenance, and expense of a MySQL server, making it possible to run on even many of the most limited of web hosting packages.

There are, admittedly, some missing pieces in Amalia — and it certainly isn’t perfect. I am excited, however, about the possibilities of Amalia and its future potential as an open source project. We would certainly love your feedback, ideas, Core code, plugins, and any other contributions you might want to make.

Please head on over to project’s GitHub page for the code and to get involved. You can also check out the install guide (PDF) and an install video on YouTube.


Argh. I really need to find more time to update this more often. It’s suffering right now and I’m sorry about that.

I’m here today to talk about a few things. First of all, projects. WPGet and SleekTabs still have had no time on them – right now stuff is just too crazy and it’s currently impossible to fit them in. I haven’t abandoned them and don’t want to, I just don’t know when the next time I’ll get a chance to sit down and work on them will be.

For my work on Vaveo, and just anyway, I actually have a couple of small projects that I might want to release in the future. First of all, there’s a JavaScript based image and text rotator script (I’m not sure the best way to explain it, but sort of like Jeroen Wijering’s script but not in Flash and supports text along the image) that I wrote for the Vaveo homepage.

I’m really happy with how simple yet elegant the code is and I think it might have utility in a lot of other situations and for a lot of other people too. What I don’t want to do though is just throw the code out there and not be able to commit to supporting it if people need help and updating it. Is it better that it’s out there though or not out there until I can be sure I can deal with it?

I don’t know the answer to that. Thoughts?

The second project I have is a home-grown download tracking system I use here on my site. Basically it’s a fairly simple PHP script that records information about people who access it, and then transparently passes them onto the file download. Now this one I won’t throw out there immediately; at the moment it’s quite tailored to my needs and would need a proper reporting interface built to view the logs and a lot more attention to make it portable. Still, I’m keen to get that out there too at some point as it’s nice to contribute back code.

On a completely different subject, I am going to be away and offline from the 18th-25th of this month inclusive. That might mean I may possibly get some time on my other stuff (albeit without an internet connection), but that is definitely not a guarantee. 🙂

Announcing the death of Megaphone

It’s never easy to give up on a project. Unfortunately, it’s something that we have to do from time to time. I’m here today to announce the official death of the Megaphone project.

From the start I must admit it was poorly defined and doesn’t really seem like something that made sense as a part of the then strategy for Oratos.

It has also succumbed to the somewhat inevitable technical obsoletion as I gain more experience with PHP. Having now worked quite significantly with the MySQLi library in PHP, it is clearly vastly technically superior to the standard MySQL library. On top of that, I just don’t want to work with the underlying architecture of Megaphone any more.

Add to that current time constraints and it isn’t feasible or worth continuing, I’m afraid to say. In the coming weeks, I’ll slowly phase out the Megaphone project page. It and the last source release will remain up for the foreseeable future, but I don’t plan to link to, publicise or support it any more.

It’s a bit frustrating to have left a project, but it’s also worth remembering that without failure there would be no success and that nothing is really lost as every line of code you write makes you more experienced.

It’s not an easy thing to do – but I think it’s right that it officially is given dead status rather than continuing to stagnate. I remain committed to WPGet and SleekTabs, but progress will be slow while Vaveo continues.

Go PHP 5

Go PHP 5 logo

I love PHP. More specifically, I love PHP 5. All the web development I do is in the latest stable version of PHP 5, and this server also runs the latest and greatest PHP as well to bring you all the stuff here.

A lot of web hosts and systems still run on the much older PHP 4 however. Frankly, it’s about time we all moved into 2007 and moved over to PHP 5. It’s too late/early for me to eloquently go into all the details, but the point is, PHP 5 is better and is where the future of PHP is.

That’s where comes in. It’s a campaign to kick start people into moving into PHP 5. I’m fully behind this and encourage everyone else to put pressure on developers, hosts and users to start thinking about moving to PHP 5 if they haven’t already.

Anyway, it’s pretty late, so I’m off to bed (to start full time Vaveo development as of tomorrow).

[via Jacob Peddicord’s awesome looking redesigned Drupal blog (aka Code Chunk for the rest of us)]