What I do
ZCE ( Zend PHP5 Certified Engineer) registration no: 222729251
I am an experienced and qualified PHP and Mysql application developer. A PHP5 early adopter, I have written and studied only OOP code for the last two and a half years and can provide evidence of this.
I started using PHP in hobby projects in 1999, and from 2002 used PHP extensively to solve problems for a local government customer on their intranet and website. Although I am mainly a back-end programmer, when designing for the public I know how to make sure that my output is accessible and usable.
I enjoy working with open source PHP software and in the past have used, reused and intertwined many open source applications. This includes things like blogs, forums, CMSs, template systems, MVC frameworks and many userland classes. With the exception of frameworks which I would tend to use for larger projects, I tend to write software from the ground up now - instead relying on a library of classes I have written myself.
I work with graphics and css and I can clone any graphic style from leaflets or just collaborate with and elaborate upon other people's ideas, but I am not a graphic designer. I can set up, configure, maintain and run a web-server, but I am neither a "metal-hugger" nor a "sysadmin".
My management skills are profound, but not in the software arena. That said, many management techniques I have learned help me a lot when listening to people, trying to discover key points like their motivation and measurements of success. These matters are just as important as functional specifications when drawing up detailed project plans.
Motto: "Software should fit people, not the other way round".
Programming skills
- Main : PHP, Mysql, accessibility standards
- Proficient : Javascript (and Ajax), usability, IIS, CSS
- Exposure to: Xml, XSLT, Apache, Linux OS, shell scripting
- Main development tools: Vim, CVSNT, Xdebug, Imaging software
Recent PHP5 / Mysql software projects
Meta data Management System (MMS)
A local copy of the LGSL, LGNL, IPSV, LGAL and other UK government taxonomies was manipulated and stored in a Mysql database. The information was interleaved and stored in such a way that associated intelligence could be efficiently derived from tree-like associations in the IPSV tables.
The main product of the MMS was to correctly mark up output from a simple hand-built CMS. The by-products of the MMS are improved navigational elements, and features like search "disambiguation" and "tag clouds" as well as creating an API into all known government services locally.
The user's meta data tagging screens were created using a PHP MVC Framework to which was added an PHP Ajax library to simplify interaction on some screens.
What is beautiful about this MMS is that it can produce around 2,400 "cool URIs", permanent, predictable URLs that lead to the main services a council, and "other partners" provides. Its all done from one page (script). It requires no maintenance apart from 6 monthly updates from the esd-toolkit, and accurate meta tagging of page content.
If you would like to know more about this MMS, or the data layer it represents, then attend one of my talks.
Could your organisation benefit from an MMS? Lets talk about it, contact me and let me know who you are.
Election night results service (March 2007)
A set of classes which output intelligent metrics and meaningful plain English summaries of election results as they were declared.
Once declared the results were transmitted as RSS feeds, on internal multi-screen plasma screens presentations in count centres and as plain webpages on the website. Minute by minute "State of the parties", ward by ward turnout figures, voter tendencies, plain English summaries and observations added value and "stickiness" for thousands who followed the results. Following lessons from previous elections, hardware resource and bandwidth use was kept to a minimum by the clever use of result caching. Technically the core classes feature a simple Observer pattern.
For a period of time prior to the elections, interest in the election was built by showing past results, RSS advocacy and practical information such as the location of voting centres. The results service was highly lauded locally, by political activists and commentators, councillors, staff and the public.
If you have election night results to broadcast, then please contact me for more details.
Performance Indicators
An application which allowed CMS users to create and edit performance information on a given service. This featured dynamic graph creation, and tabular data for those not able to see the graphs.
The graphing was bought in and used from a web service, reducing the strain on our single webserver.
The indicators appeared on webpages specified by CMS users, performance could be displayed in a variety of ways, with text explanations and could show the last 3 years, by quarter or by full year.
The Council benefited because the public could see it was displaying its own performance in a very transparent and accessible way. Performance summaries appeared on relevant webpages thus underlining their currency and relevance.
This application was originally requested an officer in response to her Councillors complaints that they could not find the Performance Indicators easily enough.
Sadly the project was withdrawn when the manager changed.
FAQ System
An application which allowed CMS users to create and edit FAQs on a given subject.
My view of FAQs is that they can provide an "alternative navigation system" inside high value and complex information websites such as local government websites.
The FAQ system must be intuitive, dynamic and easy to use. They FAQs themselves must be authoritative and also work as a "signposting system".
To this end the FAQ system I designed features the following:
- Multiple sub-categories within a main category
- Any given FAQ can be moved to another sub-category
- Any given FAQ can be linked to another answer
- Contains the date they were last edited and who by
- Contain an audit trail in order to protect the author
The FAQs are able to be sorted by :
- Category and subcategory
- By author
- By date
Each individual FAQ, can be updated hour by hour if needed by a named author and can therefore contain:
- Deep links into the mother site
- Deep links into other websites
- Links to other FAQs
- Time sensitive information about events etc
- Responsive to fast-changing situations like Foot and Mouth disease
I conducted a lot of research on FAQ systems prior to working on this project and I also made sure that the public could suggest new questions that they would like to see answered. When a new FAQ suggestion is made an alert is sent to the FAQ list author. Suggestions automatically appear on the CMS interface.
This FAQ system also featured "internal publishing" for use on an intranet, "external publishing" for publishing and FAQ on the website, and of course "publish to both". The intranet FAQs were searchable, and also featured "ranking" whereby the popular FAQs appeared at the top of the FAQ list.
The FAQs have proved to be very easy to use, added far more quality plain english content to the website and have proved their worth as an alternative navigation system. These pages seem to be ranked very highly by Google.
Layered Search
See the slides in my April 08 talk.
Current projects
I also maintain Content Management System aimed at Town and Parish Councils which features Agendas and Minutes management.
I am currently working on an alternative to MVC using Ajax, based on Fowlers representation of a PresentationModel which I intend to use on the CMS and other projects.
A simple Location Based Service (LBS) based on postcodes and street names. A reworking of an earlier online project I made in 1999 which is still running. This will provide the basic framework for a mashup-type application bringing together relevant local information streams for residents.
If your council would benefit from this simple kind of service, or your town or parish council is looking for a fully featured, but cheap and simple to run Content Management system (CMS) - please contact me.

