How-To: Tail Apache logs to Ubuntu Notifications

Like many other developers I aspire to write clean, efficient code and while I don't always achieve that goal I am always on the lookout for ways to help me in that pursuit.


It always makes me a little sad when I look at an error log file to try and diagnose a problem only to find it bloated with deprecation and notice warnings which are easily preventable with a little care and attention. I know you can turn off logging for these types of errors but I feel it is better to fix these issues rather than ignore them.

Read more

My Top 10 Linux Commands

Over the last couple of years my role has expanded significantly and I have really had to pick up some good tips and tricks to try and make me as efficient as possible.  One area that has had to grow has been my familiarity with linux, terminal and my comfort with the command line and so I thought I would share my top 10 linux commands which I use on a regular basis. 


Read more

Composer & Git Branch Names - A Doh! Moment

It was one of those moments of clarity followed quickly by a doh! from everyone.


We were trying to include a branch of one of our Symfony bundles in our project using composer but composer refused to see the branch.  We checked the repository and the branch was definitely there so we could not understand why composer was not able to check out the branch.

Read more

Sencha Touch for the PHP Developer

The beginning of the year saw me working on the latest version of the Herald Scotland app (both android and iOS versions were released at the beginning of May) using Sencha Touch and PhoneGap. App development is not one of my primary skills and the learning curve from my comfort zone of PHP to Sencha Touch has been a steep one and one which I'm still far from conquering, however I thought it might be useful to share some of what i have learned and hopefully steers others away from some of the issues I encountered.


If you only take away one thing from this article then it should be to forget everything you know about web development and start again... Sencha Touch is an entirely different beast to what you are used to.

Read more

Using setSharedMaxAge() with HttpCache in Symfony2 always returns s-maxage=0

When implementing HttpCache within one of our Symfony2 projects I came across a curious problem in that regardless what I set the shared max age to it would always show as s-maxage=0 in the network inspector and the cache result was always a miss.  This puzzled me and so to try and isolate the issue I broke it down to the most basic example I could, but even then I still experienced the same s-maxage=0 problem.

My simple example was

Read more

"-":4: bad minute when installing crontab from a file

I recently had to migrate a rather messy crontab from one server to another and to try and simplify things I wanted to split the crontab into managable chunks.  

Unfortunately the crontab does not have any import / include functionality and I didn't want to use different user accounts to have different crontabs (this would likely cause permission issues, a management headache, and I would be replacing one messy solution with another) so after a quick Google I found that the solution was to create the separate files and concatentate them into the crontab. i.e.

Read more

Installing and configuring Symfony2

Getting a Symfony2 project up and running is fairly easy but I did come across a few bumps in the road when I first attempted it so I am hoping to smooth those bumps out a bit for some of you first timers.  The basic process is:-


Make a folder on your web server for your Symfony2 project.  I will assume we are using /home/chrisshennan/public_html/symfony2.chris.home.internal/ as our root directory for this tutorial.

Read more

#htmlmovies - A bit of nerd humour

A colleague of mine pointed me in the direction of a humorous twitter hashtag of the IT variety which, with being a web developer I found quite amusing, especially on a friday afternoon.  The hashtag was for #htmlmovies.

If you've not already guessed, the basic idea is to convey a film is a clever way using html tags such as

Read more

Import Product Attributes into Magento

I have recently taken on a new web project which is to move an e-commerce website from a custom 3rd party solution over to Magento and before I even got started I hit a road block (you have got to love Magento for that!).  I found that I had to import around 200 product attributes (colours, sizes, etc) from the old online shop to the magento installation and obviously I did not want to enter all these by hand, but where to begin?!

Luckily I came across a post on the Magento forums which details a method for bulk importing product attributes into Magento and although it did not allow me to automate the whole process, it was sufficient for my purposes.

Read more

VPN Issues with O2 Wireless Box II - Firmware Download

I wrote an article in April 2010 about VPN Issues with O2 Wireless Box II and it has come to my attention that O2 are now putting firmware version on their routers which is supposed to resolve these VPN issues. Apparently this is not always the case and O2 are no longer downgrading the firmware because it is "fixed" in the version.  Some people are finding it difficult to get any support, and the O2 CD which you can download no longer has the older firmware.

Fear not though... I did a little digging around and managed to located the firmware (RT-585v7_74K4EJ.exe) and I have upload it for you.

Read more

Reading List


TechCrunch Brings Its Bare-Metal Servers To The US Brings Its Bare-Metal Servers To The US, a hosting company with a focus on dedicated bare-metal servers that launched in Europe in 2005, today announced the opening of its first U.S... Read more



PHP in a JavaScript world

PHP in a JavaScript world

What is the fate of PHP in a JavaScript-dominated world? Will the two continue coexisting? Stephen Heron, PHP Developer at Blonde, shares his thoughts. Read more


Digital Ocean