Web developer, usually in PHP on a scalable LAMP platform.
I work as Platform Architect for Frog, a VLE provider in Halifax, UK. The product has over a million active users within the UK education sector, and we deploy to over 500 embedded servers.
I like the integration opportunities of the HTTP environment: I have worked with most popular APIs (e.g. Google Maps, Facebook Graph, Twitter); and building/consuming web services is the focus of my work at Frog. I run my own simple web service to generate CAPTCHA logic questions.
I particularly enjoy working with geographical information: cataloguing UK rivers as a kayaker was a good excuse to work with Postgres/postGIS and integrate with Google maps.
But production dev must have solid foundations with an eye on long-term maintenance. I work with OO PHP, using concepts and patterns gleaned from popular frameworks like ZF/Symfony, and wrote my own full stack framework as a learning exercise.
Much of my work is concerned with code quality: reviewing other's code, defining conventions and systems that are sustainable (i.e. simple and sensible!). I work with tools like PHPUnit and in-house reviewing tools to try and ensure code stability and cleanliness.
While no sysadmin, I am capable enough in the shell to build and maintain isolated production servers. I am taking advantage of the shift towards commodity computing (that 'Cloud' thing) and my personal projects are served from Amazon EC2.
Parallel CURL requests in PHP (multi_curl)
Using CURL in PHP is easy, but a lesser known feature is the ability to make parallel non-blocking requests using multi_curl. This article contains the skeleton implementation of a CURL request queue.
Why Load Javascript Asyncronously?
Loading javascript asynchronously is all very smart and clever. But why do it? It's such a pain. Caching, CDNs, and JS aggregation improve page load times; in this article I explain why asynchronous javascript can do even better for perceived page responsiveness.
Nginx/PHP-FPM on Ubuntu
Nginx is a alternative to Apache, and PHP sits on top using FPM (Fast Process Manager). This article documents how to build a debian-based distro (specifically Ubuntu Natty) with these services.
PHP Object Decoration: Runtime Inheritance
Decoration is a term used to describe the addition of functionality to an existing object instance at runtime. It is extremely powerful but perhaps too complicated: this articles outlines pros and cons from my experience.
Coming Soon...
- Generating UUIDs in PHP
- Queues and Jobs
- Caching with APC/Memcached
- oAuth: PECL makes it Easy!