Phil Norton

Phil Norton speaking at a conference

Expertise:

Years of experience: 20

Phil is the founder and administrator of #! code and is an IT professional working in the North West of the UK.

Graduating in 2003 from Aberystwyth University with an MSc in Computer Science Phil has previously worked as a database administrator, on an IT help desk, systems trainer, web architect, usability consultant, blogger and SEO specialist. Phil has lots of experience building and maintaining PHP websites as well as working with associated technologies like JavaScript, HTML, CSS, Apache, MySQL and Linux.

Phil's site credits include West Yorkshire Police, Walk4Life, Wave, Julia Gillard, BAFTA, People's History Museum, The Bookseller, The Macallan Whisky, Co-op Insurance, STEM, Wellcome Trust, WaterAid, First Class Holidays, WhatCar?, AutoCar, in addition to numerous other projects.

In his spare time Phil uses his skills to give something back to the web community by writing plugins for content management systems like Wordpress and Drupal, writing articles on #! code and contributing to local programming events.

His experience with numerous programming projects and apprentice mentoring over the years means he knows how to break down complex subjects into examples that you apply to your own projects.

Latest From Author

Drupal 11: Migrating From Jadu Into LocalGov Drupal: Part 1

This is the first post in a series of posts looking at migrating content from a Jadu site into a Drupal site running the LocalGov Drupal distribution. The site I was migrating content into was the new site for Central Bedfordshire, and whilst other implementations of Jadu may differ from what I describe here, it should be enough information for you to understand the process.

Jadu is a proprietary CMS application that is mostly written in PHP. Back in 2011 I went to a talk by one of the developers from Jadu at the PHPNW11 conference, so I was aware of the system. That talk, by the way, was interesting as they built a system called Phalanger that allowed PHP (and Jadu) to be run on a .NET environment. That project is now called PeachPie and it looks like it is still under active development.

LocalGov Drupal is a Drupal distribution that combines Drupal, some configuration, and a collection of modules with the aim of making it easier for councils to create websites.

LocalGov Drupal: Rewriting Waste Collection Data Provider Classes To Alter Data

LocalGov Drupal is a Drupal distribution that combines Drupal, some configuration, and a collection of modules with the aim of making it easier for councils to create websites. The functionality provided includes content pages, news pages, bus timetables, and waste collection systems. What's more, it's maintained by a vibrant community of people.

The LocalGov Drupal Waste Collection module is a module that allows local bin collection schedules to be displayed to users. This uses a combination of an address lookup and collection data to show users the bins collection schedule for that address for the next few months.

A plugin interface is used to allow different banks of data to be used in the bank end of the module, with CSV and Whitespace API integration coming with the module. Whitespace is a company used across the UK to manage waste collection systems and the Whitespace plugin interfaces with a SOAP API to pull bin collection data into the site.

Tufty2350 LCD Badge: A Review

The Tufty2350 LCD badge is a 2.8 inch screen with a rechargeable battery in a sturdy case. It comes with a lanyard so you can hang it around your neck and the case is shaped so that it also doubles as a desktop stand. I bought the Tufty2350 LCD badge during the Pi Day sale a few months ago, but I've not really done much with it.

That was until a few weeks ago. I went to LocalGov Drupal Camp 2026 in Sheffield recently and decided to use it as a badge for the conference. I spent a few evenings before the event writing come MicroPython code to create a badge application that I used at the event. I was impressed with the badge itself, and it was certainly a topic of conversation from a few people over the event.

I also added a bit of extra functionality to the badge where users could scan a QR code that would take them to a form on this site, where they could enter a short message. That message would then appear on the badge within a few seconds.

LocalGov Drupal Camp 2026

LocalGov Drupal Camp 2026 was held on 11th and 12th June in the city of Sheffield in the north of England. I drove over the Pennines from my home in Cheshire to attend the camp for the two days.

LocalGov Drupal, in case you weren't aware, is a Drupal distribution that is set up in a way that makes it easy for councils to publish their content. Since it's built on Drupal the sites can also make use of the many Drupal modules available. There are also lots of additional LocalGov Drupal modules that integrate with waste collection systems, bus timetables, election results, and many more.

Last year, LocalGov Drupal was being used by 57 council websites across the UK. This year, that figure has jumped to 73! A fantastic achievement, with that number only set to get bigger.

The camp itself consisted of a Wednesday night social night, a day of talks and other sessions, followed by a day of workshops and sprints.

Drupal 11: Building A Link Directory: Part 2

In the last article in this series I looked at creating a link directory on a Drupal site. In that article I looked at how I set up the links and took screenshots of the sites using a headless Chromium browser as the links were added.

The issue I had was that when I used headless Chromium to take screenshots of the sites the success rate was not very high. In these days of AI attacks, site captcha checks, and cookie popups it turned out to be quite difficult to take a clean screenshot of a site without being blocked either by a CDN or a cookie popup. In fact, most of the time the screenshot would be just a CDN error page.

I therefore looked for a different mechanism. Since I wanted to take a screenshot of a website it made sense to me to use a browser to do this, and because I am already using a browser why not get the browser I'm using to take the screenshot. After a bit of research I realised that creating browser plugins to do this was actually pretty simple. Plus once the screenshot has been taken I can post this to the Drupal site using a REST resource.