Tom Butler's programming blog


About Dr. Tom Butler

I'm Tom, I work as a University Lecturer and Web Developer (Specialising mainly in PHP). I have had an interest in programming since messing around with the code for various computer games since I was about twelve. I consider it an art more than a science and love to explore the creative side more than the functional side of the subject.

For my PhD I created a novel metric to grade source code on how flexible it is by identifying known bad practices (e.g. singletons, global variables, inheritance, etc). To evaluate the metric, I created a tool Insphpect which, along with grading the code, shows the user which bad practices were identified and makes recommendations on how to fix issues found. And, as a proof of concept, for a couple of the bad practices it offers automatic refactoring.

The intent is to make code reviews quicker and easier by automating detection of issues sooner.

This tool is available to use at

My main interest in programming is best practices, separation of concerns, minimalist code and doing things well.

Some of my other interests are: Programming (obviously) Music (Favourite bands are VNV Nation, Sonata Arctica and Tool), Writing (hence the blog, though I'd like to condense all my ideas into a book one day), occasional photography, Technology, and enjoying life. For this blog, I'm going to keep it programming related. It's a place I can store my musings and share ideas with the world. I'm also not going to make any commitments as to how often I update it and I'll only write on topics which spark my interest... though suggestions are always welcome.


I've always wanted a single character domain name. I like the cleanliness and minimalism. There are only around 300 possible single character domains that are open to registration to anyone, so I like the obscurity. Sure I own but that's not nearly as interesting, easy to type or memorable as

Contact me

If you would like to contact me, please fill in my contact form or e-mail me at: I'm always open to answering questions, debating best practices and generally discussing the philosophy of programming.

Alternatively, I'm often found on as Tom_B, usually in the ##php channel or you can message me on Matrix: