A collection of things I’ve written.

600+ of the best WordPress Plugins

13 min read

Here is a list of Wordpress Plugins that are currently very popular and well worth investigating. While I don’t use all of these plugins, I do use a good few of them to bring you this Wordpress blog.

Wordpress Plugins by Category

600 Wordpress Plugins

Ad Management

Admin Tools

Advertising Plugins

Affiliate Marketing Plugins


Author Box

AWeber / Newsletter



Coming Soon / Under Construction


Contact Forms


Database Management



Events / Calendar




Live Chat




Photo / Image








  • Login Security Solution…rity-solution/


WP Security Scan


Shopping Cart / E-Commerce







User Management




Job Interview Assessment Form Template

3 min read

Back in the days of old, we used standard templates for a lot of company documents to ease & standardise communication throughout the business. Here’s an example of a job interview form that was used to summarise an interview and share it around the various departments who needed to know various aspects. This document was often referred to through the initial probation period.

Name of Candidate

Jose Smith

Date of Interview

Thu 8^th^ May 2028


Stuart Programmer, Richie Programmer

Role Interviewed for:

AI Programmer

Results of Tests [poor, average, good]

(please show your rating score if undertaken)

C Test

Math Test

Java Test


Skills/Knowledge [poor, average, good]

Pretty good; plenty of experience with a variety of games and platforms.

Communication skills [poor, average, good]

English wasn’t excellent, but he got his point across very well nonetheless.  He was quite verbose and not at all shy about talking, which is a good sign.

In your opinion will the candidate fit in with the team i.e. team dynamics?

I can’t see why not.

In your opinion can the company satisfy the candidates career aspirations?

He appeared to want to work in an English speaking country, which we can certainly satisfy.

Overall impression of candidate [attitude etc]



He came across as someone willing to turn his hand at everything, but at the same time concious of his limitations.  He has crafted AI systems from scratch and likes to stick out projects to the end.

Current Salary, plus bonus payments etc

Was on approx £50K in Singapore

Salary Expectation:

£35-40K, with relocation expenses

Candidates preference for Studio:

Sheffield, he has Spanish friends nearby

Period of Notice with current employer:


Availability to start:

Immediate (pending relocation)

Will the candidates journey to work be long/difficult?


Will the candidate require relocation assistance?

Yes, this was asked about specifically.

Overall summary of the interview:




If I’m honest, the interview was hastily held (due to Jose turning up unannounced) so there wasn’t the time to prepare appropriate technical questions for him.  As such, we can only make an assessment based on what he had to say about his roles elsewhere.

Given how much he has moved around over the past few years, I’d be concerned how long he might stick around, especially if he’s dumped straight onto a deathmarch project.

He will need relocation expenses paid.

Suitability to be offered employment:

(a) Applicant not suited to the role.  I would not recommend for employment (Give reasons)

(b) Applicant on hold until further interviews have been undertaken for this position

(c) The applicant is a strong candidate however not suitable for this position.  Should be considered for other roles if available, alternatively candidates details to be kept on file for the future (Please give indication of role applicant would be suited to)

(d) The applicant should be invited for a 2nd interview

(e) The applicant will do well in this role and I would like to recommend employment - provide brief outline of proposal (salary, grade, start date).

 Please complete the Request to Make an Offer form(Intranet/HR/Forms) and send for approval (cc to HR)

Jose would add value to the team and the studio, bringing much knowledge about building AI systems from the ground up.  I have a few reservations about whether he’s an ideal candidate, but we have to take a few risks to ensure we build up a solid team for the future.

I suggest we bring him in somewhere in the middle of his desired salary range, offer to pay relocation expenses, subject to him repaying them pro-rata if he leaves within 12 months, and have him on a 6 month probation period.  He’d probably come in as a grade 8 or 9.  To start early June.

Additional comments from Interviewer on suitability of candidate to be interviewed


Studio Policy Bible

5 min read

Every business needs some policies to keep teams aware of everything they need to know and working smoothly. Here’s one of our old policy documents that’s a little skewed towards a game development studio but most of it should apply to most types of business

A central repository for all the bits of miscellaneous policy staff should be aware of:

1.   HR Policies

1.1.  Please see company general HR policies, available on intranet.

1.2.  Please note that your employment contract will also contain details on certain policies (e.g. working hours)

1.3.  All holiday/unpaid leave etc. forms should pass up the line manager chain before final approval/rejection when they are sent to HR.  Project Managers may finally approve all holiday forms themselves, without need for Exec Producer approval unless holiday is for more than 1 week in which case Exec Producer approval is still required.

1.4.  All recruitment forms should pass up the line manager chain before final approval/rejection by the Studio Head

1.5.  All interviewees should complete an NDA and this should be provided to Studio Head, or sent direct to HR, for filing

1.6.  Any information provided for purposes of advertising vacancies that relates to potential clues as to the nature of the project or identity of the client should be cleared with Studio Head before being sent to HR

2.   IT Policies

2.1.  Please see company wide IT policies, available on intranet.

2.2.  New Starter forms should pass up the line manager chain but  (assuming requirements within agreed standard range) may be approved and sent to IT by the Project Manager (CC Exec Producer / Studio Head)

2.3.  Install forms should pass up the line manager chain but may be approved and sent to IT by the Project Manager.  The Project Manager may agree that Leads can approve install forms directly.

2.4.  All Purchase Requests Forms and Network Request Forms should pass up the line manager chain before final approval/rejection by the Studio Head

2.5.  Please note that Richard Heasman is responsible for switching and storing back-up tapes under direction of IT, Richard will appoint cover for when he is absent.

2.6.  All software install media to be stored by Studio Manager (staff to hand over any install discs that are ‘loose’)

2.7.  Exec Producer(s) and Project Manager(s) will have IT helpdesk accounts and be responsible for logging IT requests from their staff.  Help desk accounts may be requested for other members of staff and will be granted / withheld on a case-by-case basis.

3.   PR

3.1.  All PR content (including draft material) to go through Studio Manager on way to external or internal (i.e. other staff) destinations.

4.   Expenses

4.1.  When possible staff to seek confirmation from Studio Manager that expense claims will be accepted in advance of spending money

4.2.  It can be assumed that reasonable travel expenses (e.g. standard class train tickets or mileage) for meetings which staff have been asked to attend will be accepted

4.3.  Both electronic versions and hardcopies, with attached receipts, to be handed to Line Manager in advance of monthly deadline

4.4.  Line Managers to collate expenses forms and send on to their Line Manager etc. until reach Studio Head who can actually approve expenses and send them to Finance

5.   Absence / Lateness

5.1.  Should you be absent due to sickness or any other reason or late for work (in respect to agreed working hours) you should telephone both HR at head office and your Line Manager to inform them in advance of your expected time of arrival

5.2.  Please note other general HR policies in this area

6.   Line Manager Misc.

6.1.  Please note Line Management policy separately available from the Studio Head, this covers staff supervision and similar meetings.

6.2.  All Line Managers to ensure that on the first working day (or the next practical opportunity) of each month that timesheet information is provided to the Studio Head.  The nature of the information required will vary from time-to-time and therefore Line Managers expected to clarify requirements with the Studio Head.

6.3.  All Line Managers should appoint a deputy to cover their essential duties during absence.

7.   Office Misc.

7.1.  The last person to leave must: ensure all windows are closed, turn off the lights, lock both locks on the door

7.2.  If you sign for any delivery, please get a receipt and give that to Studio Head, also please email Admin and IT to inform them of the delivery.

7.3.  Keep desks reasonably tidy

7.4.  Don’t ‘store’ food / drink etc. anywhere but in the kitchen

7.5.  Tea, coffee, sugar and milk will be provided by the company.  Whoever uses the last of the milk will need to buy more (and claim cost back via expenses until petty cash system established).  Everyone is encouraged to pre-empt the potential disaster of temporarily running out of milk by buying some when it is convenient.  Also please alert Studio Manager if tea, coffee or sugar supplies are running low.

8.   Telephone

8.1.  Please answer the phone when it rings

8.2.  Say ‘ – how may I help you?’ or similar with appropriate upbeat, professional telephone manner!

8.3.  Find out who is calling and check that the person requested can take the call before handing it over (there is a C/Mute Icon button that mutes the call!)

8.4.  Note, guide on how to use the phone system is on the studio wikki

9.   External documents

9.1.  Please send all external documents in PDF format

9.2.  All external documents relating to sales activity must be cleared by the Studio Head and final versions filed

  1. Confidentiality

10.1.      Unless explicitly told otherwise please assume that all information regarding company activity is confidential

  1. Server

11.1.      Only alter the contents of any network drive with permission of whoever is responsible for that drive.  The exception being Temp which is a free for all (within reason).  The Project Manager is responsible for a project specific drive, New Projects Lead is responsible for the New Projects drive, and the Studio Head responsible for the General drive.

  1.  Overrides

12.1.      The following policy from the Employee handbook is modified as shown:

Game Play

At the discretion of the management the use of company machines and the network for personal playing games is permitted during the following periods:

  • Before 9:00 am
  • between 12:3045 pm and 1:1530 pm
  • after 6:30 pm

Game Play during these periods must not interrupt any members of staff working in the same area – use of headphones rather than speakers is required.


200+ RSS feeds from carefully cultivated reading list

2 min read

Over the years I've found that RSS feeds have made it easier for me to keep up the latest news in my reading list. I have a carefully cultivated list of 200+ home & work related feeds that I patrol every day. Here's how to import my list for your own use.
The imminent demise of Google Reader on 1st June 2013 has prompted me to find an alternative reader. To be safe I exported my reading list in [OPML format]( I could take it with me (linked to this post).

How can I use your reading list?

Since most RSS readers sync with Google Reader you can use that as a way to get the feed setup. After which you can sync it with your favourite reader of choice

Here’s a quick way to use my feeds as a starting point: Google Reader settings

  1. Download my reading list in OPML format -
  2. Open Google Reader -
  3. Go to Reader Settings (via the little cog at the top right of the Google Reader window)
  4. Find the Import/Export tab in settings, then import my OPML file you downloaded earlier

Why Feedly?

After much investigation I chose [Feedly]( as my weapon of choice.
Feedly gives me everything I need for my reading list between browser & mobile in a clean, elegant way. *Feedly* enables me to send posts to *Pocket* too where I can read & share them at my leisure. I often patrol the headlines and my iPhone and then send interesting posts to *Pocket* where I can read them in comfort on my laptop or tablet.
![Feedly Browser](/assets/Screenshot_18_04_2013_14_12-1024x651.png)
**How do I import into Feedly?**
It really couldn't be simpler as you don't have to import anything!
1. Go to *Feedly*, register and connect to your account to *Google Reader* -  <> 2. *Feedly* will import all the feeds
That's it. **Stick with *Feedly*** as it supports 'Send to **Pocket**'
Obviously my feeds will only get you started as there's probably a lot of stuff in there you're never going to read but it's a start. :)
You can also install a *Feedly* plugin for [Firefox]( & [Chrome]( that makes curating your feeds ever so easy.
**Boom!** You now have an awesome easy way to keep up-to-date with everything that's going on around your favourite websites.


- Download my blog reading list - <> - Google Reader - <> - Feedly - <> - Feedly for Firefox - <> - Feedly for Chrome - <> **Related - Pocket - <> - [Feedly: Your Google Reader, Youtube, Google News, RSS News Reader - DevHD](


What I was responsible for as Studio Head

4 min read

I’m having a bit of a dig about in some old documents and I found my old job specification for when I was Studio Head for Kuju Sheffield.

Studio Head Job Summary

The Studio Head has ultimate responsibility for building and maintaining a profitable business based on creating quality products in a timely manner delivered to the market through long term business partners and developed by a balanced high caliber motivated team.

Studio Head (SH)  Responsibilities


  1. Manage the studio as a profitable business unit.
  2. Develop the studio’s Strategy working with the CEO for approval by the board.
  3. Develop the studio’s Brand strategy working with the CEO for approval by the board.
  4. Develop the studio’s BP working with the FD & CEO for approval by the board.
  5. Execute against the BP including responsibility for the studio’s financial performance.
  6. Agree accounts with F&A in advance of monthly studio board meeting.
  7. Complete the studio report for monthly studio board meeting.
  8. Attend and execute actions from the monthly board meeting.
  9. Liaise with the other SHs, Department Managers and Executives on all matters with a cross studio (including Digital Hobbies) element including sales opportunities, corporate intelligence, customer feedback, staff feedback, recruitment.


  1. Execute the timely, profitable, high quality delivery of all the studio’s projects.
  2. Manage the staff within the studio including team/project allocation, take direct responsibility for key team member selection. Ensure authority and responsibility is properly delegated and is transparent within the studio.
  3. Ensure appropriate development processes are in place for studio and are used effectively by development teams.
  4. Develop project budgets for approval by the CEO & FD.
  5. Develop project plans & designs with the team for approval by the CEO.
  6. Execute on production within these budgets & plans.
  7. Ensure that a clear creative and commercial vision for each project is maintained and is well understood by the team, especially the key team members and stars.
  8. Manage the level of creative ownership by the studio compared to the publisher.
  9. Take line management responsibility for lead team members, including staff development, time and attendance management, discipline and reward as required.
  10. Provide customer marketing and PR assets in a timely, high quality fashion.
  11. Evangelise the products within their publisher and to the consumer. Maintain interaction with any title’s player community.

Business Development

  1. Develop and maintain all commercial relationships for the studio.
  2. Specifically develop customer relationships to maximise product success and be responsible for sequel and follow-on business with existing customers.
  3. Ensure that the studio is professional, open and honest in all its relationships.
  4. Ensure that all new business is within the studio’s Strategy and complements the Brand strategy.
  5. Ensure that the studio has sufficient workflow.
  6. Prepare pitches, concepts and prototypes as agreed with CEO.
  7. Prepare quotes and other bid materials as agreed with CEO.
  8. Negotiate contracts including directing legal support.
  9. Negotiate deals for final approval by the CEO.
  10. Provide marketing & PR assets in a timely, high quality fashion, to the BDM following the processes laid out by the BDD.
  11. Provide timely assets to support the up to date maintenance of the company’s website to the BDM.
  12. Initiate and develop sales opportunities, work with the BDM & CEO on qualifying, prioritising and closing opportunities.
  13. Provide the BDM with timely accurate sales updates.
  14. Support the BDM to open new relationships and opportunities.
  15. Support group and other studio’s business development activities.
  16. Maintain awareness of the external perception of the studio’s brand.
  17. Execute on the brand strategy.
  18. Agree the BD budget for the studio with BDM and FD.
  19. Execute on BD tasks within the agreed budget.

HR & Recruitment

  1. Develop the staff within the studio including motivation, training, salary review, performance, morale and structure.
  2. Manage recruitment of new staff within the studio.
  3. Identify and nurture star staff.
  4. Identify under performing staff and manage remedial action.
  5. Ensure studio the staff understand the Strategy & Brand and objectives for the studio.
  6. Develop an effective studio culture.
  7. Agree studio staff sourcing plan with the CEO & HRM (covering full time, contract, outsourcing ratio, graduate recruitment and inter-studio cross charging).
  8. Execute on the staff sourcing plan.
  9. Operate within the processes laid out by the HR Department.
  10. Agree the HR Recruitment budget for the studio with HRM and CEO.
  11. Execute on HR Recruitment tasks within the agreed budget.

** **


Finance & Administration

  1. Provide timely accurate accounting information to F&A.
  2. Provide timely accurate staff allocation/timekeeping information to F&A.
  3. Agree accruals, deferrals and WIP monthly with FD.
  4. Manage the office and all facilities of the studio.
  5. Manage the administrative systems at the studio level (PRQs, sickness/holiday, etc).
  6. Operate within the processes laid out by the F&A Department.
  7. Agree the administration budget for the studio with FD.
  8. Execute on administration tasks within the agreed budget.


  1. Operate within the processes laid out by the IT Department.
  2. Ensure the studio’s staff operates within IT policies/practices.
  3. Agree the IT budget for the studio (not the projects) with ITM & FD.
  4. Execute on IT tasks within the agreed budget.


  1. Source tools, technology and supporting systems as agreed with Research.
  2. Present the games to Research (QA) at regular intervals in development.
  3. Present the plans/code/assets to Research at regular intervals in development.


SSH auto-login with shared key fails

I recently had trouble when my SSH auto-login via shared key failed and it took a while to figure out what was wrong. I’ve made some notes for posterity. It turned out to be SSH not being happy with the directory/file ownership and permission on both the target and client.

Finding the problem

When running Centos it’s important to ensure that SSHD logging is on so you can discover what’s wrong and also track login attempts.

Enable logging for sshd by editing the config file

$ nano /etc/ssh/sshd_config

Locate the following and make the changes:

# Logging
 # obsoletes QuietMode and FascistLogging
 SyslogFacility AUTH
 #SyslogFacility AUTHPRIV
 LogLevel INFO

Don’t forget to restart the service to apply the changes

$ /etc/init.d/sshd restart

Check the logs

With logging enabled you can now watch the end of the messages log where you should find the error messages. I did this with 2 boxes open. Box 1 was logged into the target and watching the logs while Box 2 attempt to login.

$ tail -f -n 100 /var/log/messages

In my scenario this immediately presented the following message:

 Authentication refused: bad ownership or modes for directory /root

Fixing The Problem

It turns out something had changed the owner and permissions on my /root directory and SSH didn’t like it. I have yet to find out how & when this happened but I suspect a system wide update via ‘yum update’ did it.

Here’s the commands I ran on the target:

$ chown root:root /root

$ chmod 755 /root

This immediately produced a new error on the client side when attempting the SSH

Permissions 0755 for '/root/.ssh/id_rsa' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.

This simple error was fixed on the client by issuing:

$ chmod 700 /root/.ssh/id_rsa

Fixing the above problems on the target and client enabled me to auto-login on SSH using shared RSA keys. Note: these fixes didn’t require any changes to the keys as they were purely down to permissions and ownership.


Pinterest pins fails to stick

Pinterest is a fantastic way to discover content, styles, products and ideas. As such, it’s crucial that websites make it as simple as possible for their content to be ‘pinned’ on Pinterest.

Sadly, it appears that many web developers are struggling to get their content on their due to silent errors. Many pages around the web give workarounds for clients but they don’t address the issues faced by the website itself.

I tried a few ways to find solutions for the websites I manage.

Pinning typically fails in 2 ways: When pinning via the common ‘Pin It’ bookmarklet or using the onpage embedded ‘Pin It’ button the Image and description appear OK for the javascript pop-up but when the ‘Pin This’ button is pressed nothing is pinned and the dialog refreshes with no content.

Directly pinning the content when on reveals “We couldn’t find any images” despite the javascript app clearly finding images.

Pinterest Pin "We couldn't find any images"

As a web developer I’ve attempted to fix this in a number of ways based on findings from around the web.

  • Is the image too small? Reports say minimum size is 109x109 and anything smaller will fail.
  • Strip parameters from image URLs such as timthumb ‘w=300&h=300 from URL’
  • Improved image quality and therefore image filesize on the ‘found’ images
  • Changed http headers for the images to ‘Cache-Control: public
  • Added/removed Facebook opengraph image hints ‘og:image’ meta tag
  • Double checked reverse DNS and other potential quirks.
 I also built a specific page that only included a 300x300 high quality image and some content for testing and this failed too.

To date, none of my changes have made any of the pins stick on Pinterest so I have raised a support ticket with them and I await some assistance from them. However, evidence from around the ‘net seems to suggest the Pinterest support is a blackhole for support tickets.

As a web developer, have you found a solution?

OSX reports incorrect disk usage

If you’re OSX disk usage is being reported incorrectly then you’ve probably got caught by a Time Machine feature introduced in Apple OSX 10.7. This typically happens where your free disk space erodes over time or when you delete some files and yet the disk still claims to have the same space usage as before.

This is a silently introduced feature where Time Machine can operate on on laptops (Macbook Air / Macbook Pro) when the TM volume isn’t available. The system essentially snapshots your changes for backing up later.

Read about it here

If you want to disable the feature and reclaim your space go in to Terminal and enter:

sudo tmutil disablelocal

**followed by return, and after entering you password and hitting return again, it should delete the local snapshots and free up the missing space.


Carbon Copy Cloner OSX - micro review

Carbon Copy Cloner - micro review

Carbon Copy Cloner a.k.a. CCC is a donation-ware disk duplication application for Apple Mac OSX. I recently used the app to successfully move my data from a HDD to an SDD and I decided to give it a go as part of my regular backup system. Here’s my mini review…

My gripe with the app is that while the scheduled events do start on time, even waking the computer up to do so, the app doesn’t keep the system awake. This means that your power settings are likely to cause your system to sleep and therefore the backup to pause in the middle. This of course means that it will resume when your computer wakes again and that will most likely be when you get back on your system in the morning to start work and be faced with the rest of the backup job.

Further to this last point, if you have ‘sleep when done’ as a setting then it will do just that. Good in one sense but not good when it’s resumed because you’ve woken it up and you’re in the middle of some work and then your system just drops to sleep. I appreciate this is as designed but the app should recognise who woke the system up and only sleep if it woke it up.


On the whole, it’s a great free disk duplication software for OSX with a few gripes related to scheduled backups that can be worked around.


Resurrecting a Synology DiskStation

3 min read

I walked into a minefield of problems when attempting to connect back to my Synology DS210j after a regular firmware update. The approved desktop application DSAssistant was used to upload and apply the firmware but something just went wrong. DSAssistant claimed the IP address was set, but the device wouldn’t accept web connections. I eventually found a solution that helped me get the device back up & running.


I retried to apply the firmware but during installing DSAssistant claimed to be unable to update the status and simply gave up. It advised me to check error logs via telnet but the default password is ** (despite setting this in the setup). A password won’t be accepted by telnet so that just wouldn’t work.

I tried different firmware versions, re-downloaded old ones to remove the possibility of it being a corrupt firmware download.

Nothing worked.

In hindsight, I can only assume the system software on the drives had become corrupt or badly configured and as the system was setup in RAID1 (mirror) it meant both drives had identical corruption.

My Setup

To give some context I have the following setup:

In my case, there’s no data on the system as I’d previously moved it off so everything could be reformatted.


After reading around the ’net, there wasn’t one solution but this one worked for me. I’ll list the process as-is but be aware that the firmware software changes so things may move around a little.

BEWARE this process destroys all your data

  • Physically remove the existing SATA drives and put them to one side
  • Install a single different old sacrificial SATA drive to force reinstall. I assume that this mustn’t have been already used without being reformatted to remove existing data. This must be installed in the upper slot as this has priority over the lower slot and the system will boot from it’s contents.
  • DSAssistant now installs the firmware properly
  • Connect over the web interface for the device
  • Leave the system to create a volume on the old SATA drive as we’re going to need a working boot drive. It will contain the seed we’ll use to resurrect the drives.
  • It’s worth ensuring that your admin password isn’t blank or you won’t be able to get in via SSH/Telnet incase of emergencies. Enable SSH & Telnet services to ensure we can connect incase of emergencies. Enable the required services under Control Panel -> Terminal
  • When the default volume is setup, power off the system.
  • Leaving the old drive in the upper slow, install the 1st of your desired drives in the lower slot. This will enable the system to boot and connect to the new drive
  • Remove any existing Disk Groups & Volumes. This will include removing the one that was setup a few clicks ago.
  • Create a new Disk Group and set to RAID1 to mirror the data from the older drive to the newer drive
  • Create a new volume with the previously generated Disk Group
  • Wait for the volume to build
  • Shutdown
  • Remove the old drive and move the newer drive up from the lower slot to the upper Slot 0 so it becomes the boot drive. Pop the 2nd drive in the lower slot. Power On.
  • The system will beep when beeping indicating a RAID failure, which is expected as we’ve just intentionally removed 50% of it. When you arrive in the web interface you will see the volume has been degraded. You’ll see the Storage Manager and you can press the ‘Beep Off’ button to shut it up while you work. :)
  • To establish a RAID with the newly added drive go to Disk Group > Manage > Repair and let it do it’s thing. Be aware that this can take a very long time.
  • It’s likely that the volume size isn’t what you’d like and you can now setup your system as you desire.


Hopefully this guide will help you resurrect a Synology disk station and get your system back up & running