Tim Hilliard

Website Development, Optimisation and Analytics

Flower

Power to the people

So having been in the web caper for a little while now I thought it was time to discuss my experiences of open source.

Probably my most profound experience in the open source arena came about when I was asked to do a project in Drupal, a highly configurable and customisable CMS package. After a little experimentation I was soon able to harness the true potential of Drupal and now use Drupal for all of my standard CMS installations. With a user base of over 400 000 users, Drupal has become a powerhouse in the world of content managed systems. Overall I would say that Drupal was a truly positive experience for me and has allowed me to grow significantly in the last 2 years as a developer.

I could keep going on about different open source packages but then this post would become infintely long so instead what I will do now is list all of the open source packages that I use and give a brief overview of why I like it.

  • Drupal – as mentioned before a powerful CMS solution.
  • Magento – a truly fantastic ecommerce solution that gives store owners a fantastic set of tools out of the box for setting up their own online store.
  • Wordpress – a great piece of blogging software that is also being used to run this blog.
  • jQuery – a powerful set of javascript classes and functions that make writing javascript for your web applications a breeze.
  • Apache – probably the greatest web server going around (in my opinion anyway).
  • PHP – an Apache extension that allows for powerful serverside scripting.
  • MySQL – my favourite database.
  • WampServer – a great WAMP (Windows, Apache, MySQL and PHP) stack for development on a Windows machine.
  • Notepad++ – a quite powerful text editor that is great for coding.
  • Subversion – quite possibly the most important backup / versioning tool for any developer.
  • USVN – a great interface to Subversion which has project and user controls.
  • CentOS – my personal favourite linux distro, of course there are a lot of great ones out there but this one is essentially RedHat rebranded and repackaged.
  • TortoiseSVN – an excellent windows shell extension for using subversion.
  • FileZilla – relatively powerful FTP program.
  • Poderosa – great for creating a secure shell connection.
  • 7zip – a great piece of software for compression, is compatible with most formats.

I hope some of these packages can be useful to you.

http://www.timhilliard.com/wp-content/plugins/sociofluid/images/digg_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/reddit_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/dzone_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/stumbleupon_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/delicious_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/blinklist_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/blogmarks_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/furl_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/technorati_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/yahoobuzz_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/mixx_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/twitter_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/jamespot_48.png

Consider using a managed DNS

Ok so this may seem trivial to some but in my opinion worth doing. Consider Moving your domain to a dedicated DNS hosting solution such as DNS Made Easy. Not only do these dedicated DNS hosts offer better domain resolution times than most ordinary DNS’ bundled with normal hosting solutions, but they also give you excellent domain control such as simple sub-domain management and the easy ability to point to multiple servers on the same domain. The last and probably most important benifit is scalability. As soon as you grow too big for your old hosting solution it is as easy as changing the IP to move your site to your new server.

http://www.timhilliard.com/wp-content/plugins/sociofluid/images/digg_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/reddit_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/dzone_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/stumbleupon_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/delicious_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/blinklist_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/blogmarks_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/furl_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/technorati_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/yahoobuzz_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/mixx_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/twitter_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/jamespot_48.png

Embedding Flash into webpages

Alright guys, I know this has been a thorn in your side at least once in your life if you work a little bit with flash, I know it has for me at least. The stucture required for a correctly formatted set of embedding tags seems a bit weird, not to mention not really W3C legal either and is frustrating knowing that you will have to write all of your variables in twice.

Time to make this all a bit easier. Try using SWFObject 2, a javascript library for embedding your flash movies using a small amount of javascript. Not only can this make writing your code easier, it is the most optimised flash embed method available and promotes the use of web standards and alternative content.

http://www.timhilliard.com/wp-content/plugins/sociofluid/images/digg_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/reddit_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/dzone_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/stumbleupon_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/delicious_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/blinklist_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/blogmarks_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/furl_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/technorati_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/yahoobuzz_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/mixx_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/twitter_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/jamespot_48.png

Moodia goes Live!

After much blood, sweat and tears from the team at Moodia, we have relaunched our new website aimed at capitalising on the emergence of Conversion Rate Optimisation in the rapidly changing environment of websites.

Moodia website

Moodia website

The new site presents a striking yet clean interface with a focus on usability and in particular the navigation. Although not live yet, the Moodia site will also include a blog which will be a place where our intelligent team of optimisers can share their wealth of knowledge. If you are looking to get better results out of your website, head on over to Moodia and see what website optimisation can do for you.

http://www.timhilliard.com/wp-content/plugins/sociofluid/images/digg_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/reddit_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/dzone_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/stumbleupon_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/delicious_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/blinklist_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/blogmarks_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/furl_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/technorati_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/yahoobuzz_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/mixx_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/twitter_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/jamespot_48.png

Use a repository!

I don’t know how many times my friends have said they lost their work and they had no way of going back. This may sound harsh but I have no sympathy for them. They should have used a repository.

It is very easy to set up a local repository using subversion. Subversion allows you to check in your changes and have a way of rolling back. For those that are working collaboratively and would like to extend themselves, they can look into using subversion as an apache extension. This is quite a bit more tricky but much more rewarding. An easier way of setting up the extension would be to use svnadmin, a web based administration console for you subversion server.

Collaboratively subversion allows teams of developers to work on the same project concurrently without having to worry about merging code. 

So now you know about subversion you have no excuse to lose your work ever again!

http://www.timhilliard.com/wp-content/plugins/sociofluid/images/digg_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/reddit_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/dzone_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/stumbleupon_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/delicious_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/blinklist_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/blogmarks_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/furl_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/technorati_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/yahoobuzz_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/mixx_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/twitter_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/jamespot_48.png

MySQL Administrators

So how do I create another user for MySQL that has administrator privileges using the MySQL AB GUI Administration Tool?

I had wondered how we were supposed to do this with the GUI tool until recently. Of course you can create another user using the command line and then apply the following query to the user.

GRANT ALL PRIVILEGES ON *.* TO ‘user’@'host’ IDENTIFIED BY PASSWORD ‘[password]‘ WITH GRANT OPTION”

But not everyone likes to use the command line. To do this with the GUI tool all we need to do is go to Tools->Options and then make sure that “Show Global Privileges” option is checked.

MySQL GUI Global Rights

MySQL GUI Global Rights

Now when you select a user there should be another tab appear called “Global Privileges” that will allow you to apply global rights to a user thus allowing you to create another administrator.

http://www.timhilliard.com/wp-content/plugins/sociofluid/images/digg_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/reddit_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/dzone_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/stumbleupon_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/delicious_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/blinklist_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/blogmarks_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/furl_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/technorati_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/yahoobuzz_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/mixx_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/twitter_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/jamespot_48.png

PHP accelerators

PHP acceleration is a method of boosting your server performance by around 2-10 times without the need to make any changes to your code. When we write PHP code, it is written in what can commonly by described as pseudo-code, a way of representing what we want our program to do in english. Of course there lays a problem in this, a computer doesn’t know english. This is where a compiler comes in. In our case this is the PHP compiler which translates our english pseudo-code into machine readable byte-code. Now compiling PHP is not a lengthy process at all but none the less it does take up time and resources from our server. When we add hundreds of simultaneous page requests into the mix the load really starts to build up. Luckily we have a way to fix this problem through PHP acceleration. What this does is cache the compiled byte-code from a PHP script. Once a script is cached, the next time someone goes to access the same script they get to skip the compiling stage as this has already been performed by a previous access to the script and stored in memory. Voila we are able to increase our server performance by up to 10 times.

Ok time for a case study. You may remember back to the project where I first go my hands dirty with Drupal. Well on this project I was also put in charge of finding suitable hosting. When it came time to switch the server to live things started out well. Unfortunately over the next fews hours the load kept gradually building until around 4 hours passed at which time the server crashed. I immediately jumped on the case of hosting support who promptly suggested adding APC (Alternate PHP Cache) onto the server. This was swiftly done and less than half an hour later the server was live again. Over the next 72 hours we closely monitored the server load. The load from now on has only ever reached around an eighth of that shown when the server crashed.

So there are several options when it comes to choosing a PHP accelerator. Some of these include APC, Zend and XCache. For more information I recommend starting with the wiki entries for php accelerators. Looking to the future it has been announced that PHP version 6 will include APC php acceleration by default.

So if you are looking for an easy way to boost performance I would definitely recommend looking into php acceleration.

http://www.timhilliard.com/wp-content/plugins/sociofluid/images/digg_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/reddit_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/dzone_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/stumbleupon_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/delicious_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/blinklist_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/blogmarks_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/furl_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/technorati_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/yahoobuzz_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/mixx_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/twitter_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/jamespot_48.png

jQuery Brilliance

Over the past year I have been writing more and more javascript. This element can give your website real power. The only problem is that javascript can be at times cumbersome to write. This is when I decided to start searching for javascript libraries to include into my code to take a lot of the heavy lifting out of my javascript development.

Enter prototype, a javascript framework to do exactly what I wanted. Now I had started using this framework for a few months when I came across my first problem. Prototype was good at accessing elements and manipulating them but kinda sucked at generating visual effects such as sliding windows. I didn’t really want to write my own as this would take time, so I started searching. What I found were a few more libraries that hook onto prototype that allow you to do this. Excellent I was now in business. So I’m now happy using prototype and other 3rd party plugins.

Along comes my drupal project that I mentioned in an earlier blog. Drupal already has these really nice javascript elements built into it. I didn’t really pay much attention to them as I just figured that the guys at Drupal had really pushed themselves and come up with the code themselves. This was until I was forced to delve into the javascript code to create a nice javascript effect for myself. This is where I came across jQuery. At this point I was just wondering what this was so I started searching. “jQuery is a fast and concise JavaScript Library that simplifies HTML document traversing, event handling, animating, and Ajax interactions for rapid web development.” is what jQuery’s site says and after using it for a while I would have to agree. Although I did like prototype i did find it a bit buggy at times, jQuery has only proven to be stable whilst also including a great deal more functionality.

Overall I would have to say that jQuery is what it says it is and I now use jQuery in all of my websites as it speeds up my javascript development.

http://www.timhilliard.com/wp-content/plugins/sociofluid/images/digg_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/reddit_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/dzone_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/stumbleupon_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/delicious_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/blinklist_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/blogmarks_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/furl_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/technorati_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/yahoobuzz_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/mixx_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/twitter_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/jamespot_48.png

The power of Drupal

So I’ve been working at Moodia for a few months now and its time to take on something a bit more challenging. So far I’ve worked on nice small projects where I am really only dependent on myself and a bit of graphics brilliance from one of the designers. What comes next wasn’t really what I had in mind. I was asked to partake in a project that spans more than 3 months, requires several developers and should be written in Drupal, a CMS I quite simply had not used before.

So the first few weeks were a bit shaky as I was coming to grips with this new coding language of sorts, but after that everything clicked into place and things were now coming together. What I began to see was that Drupal was a well written CMS that allows websites to be created in the blink of an eye whilst giving developers the opportunity to write highly complex modules for achieving even the most difficult task.

http://www.timhilliard.com/wp-content/plugins/sociofluid/images/digg_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/reddit_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/dzone_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/stumbleupon_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/delicious_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/blinklist_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/blogmarks_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/furl_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/technorati_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/yahoobuzz_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/mixx_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/twitter_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/jamespot_48.png

My Big Move

So I packed my bags not so long ago and headed over to London where I now live. Wow, what a change, a great change though. But by far the biggest surprise for me was the job I managed to land, I think I’ve hit the jackpot. My hat goes off to the staff at Moodia for their positive and enthusiastic approach.

http://www.timhilliard.com/wp-content/plugins/sociofluid/images/digg_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/reddit_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/dzone_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/stumbleupon_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/delicious_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/blinklist_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/blogmarks_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/furl_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/technorati_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/yahoobuzz_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/mixx_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/twitter_48.png http://www.timhilliard.com/wp-content/plugins/sociofluid/images/jamespot_48.png