PHP / Java development
I create object-oriented software systems, primarily using PHP and Java. I first worked with Java in 1998 and with PHP in 1999 (before then my primary languages were Perl and JavaScript). More recently I was a senior developer and technical lead at Yahoo! for eight years, working in London and Silicon Valley. I love design patterns and elegant reusable code.

I have written full MVC applications for The BBC, Unilever, Time Out, CitiPages, Yahoo! and many others. Because I create application frameworks from scratch, I understand the principles and patterns that drive them, and I can happily work with existing frameworks.

Project Code and Best Practice Consultancy
I provide consultancy on development best practice. I help clients design new systems and reconfigure existing ones so that code can be cleanly shared, built, installed, and tested. I also advise on documentation and team selection.

Since I returned to consultancy I have been pleased to encounter many clean and elegant systems. But I’ve also seen good code failed by poor development practice. This can place a project or even a business at risk.

There are some core elements that most developers should consider for their project. Does your system have these features?

  • Effective separation of concerns
  • Version control
  • Automated build and install
  • Package and dependence management
  • Configurability to support different machines and modes
  • Inline and project level documentation
  • Snapshotting of data state for backups and to recreate bug conditions
  • Upgradable and downgradable database schemas
  • Continuous integration

Each of these features incurs an upfront cost in planning and implementation, but can save time and protect you against expensive bugs down the line. Do you have a roadmap that will get you to a testable, installable and flexible system? As a senior developer at Yahoo! it was part of my job to ensure that the projects I designed fulfilled these criteria. Equally importantly, I have refactored many legacy systems.

I can assess your codebase and provide recommendations for refactoring. I can also undertake or manage the work.

Technical writing and editing
My book, PHP Objects Patterns and Practice, has run to three editions so far, and I’m currently working on the fourth. I have also written for Pearson (SAMS Teach Yourself PHP in 24 Hours), Linux Magazine, IBM DeveloperWorks, Zend, Linux Magazine and PHP|Architect.

Full site development
I designed my first website for the ancient Mosaic browser back in 1994. Since then I have managed the full design and build process for dozens of dynamic web environments. With partners in design and front end build I have worked on web environments for Time Out, The Credit Card Research Group, Virgin Clothing, the Office for National Statistics and many others.

Training
I have taught students to program and to build Websites since the 1990s. Over the years I have taught courses in HTML, JavaScript, PHP, Java, and Agile project management. Currently I specialise in PHP and Java courses, covering the full range from beginner to advanced level. I also teach courses on object-oriented design and design patterns.