jonathans blog

Portfolio – Jonathan Mitchell PHP Developer

Jonathan Mitchell


About Me

I have a BSc in Electronic Engineering, and an MSc in Advanced Computer Systems Development with Distinction

I was awarded the University Court Medal for excellence twice – in my PGDIP year, and in my MSc year

I am a senior level PHP Developer working for a web design agency (Adeo Group) in Glasgow. I have worked for Adeo Group for 7 years. At last count, we had ~180 active websites (with 8 under construction). I have had a hand in most, to varying extents.

I’m proud of the work I do, having designed and built great features for clients that help multiple clients turn-over 7 figures annually.

In addition to development work and general project management for clients I maintain, secure and administer the companies servers, currently we have 8 CentOs 6.6 and CentOs 7 boxen running LAMP stacks serving a few million requests every couple of days. I have also implemented and maintain the companies internal DevOps servers (CentOs, lamp stack, gitlab and continuous integration) and am responsible for full-stack development and operations from creating new projects to launch scripts / database migrations / responsive website builds and general site maintenance.

Rather than pick a favorite to do a case study, This portfolio will detail out my processes, tools and favorite features.

A typical project at adeogroup involves – from concept to finish:

Initial client meetings, Specification and proposal estimations, Liaising with design teams,
Building a staging server, Building a development server, Splitting development plan into phases, Detailing out sprints and features,
Building prototypes, Advising clients on content strategy, Implementing functionality,
Implementing design or handoff to design team, Tweaking functionality, Test phases, Integration of various services,
Site migration including 301 redirects from old site to new, Launching site, Analytics goal setup, W3c validation,
PCI compliance testing, Reviewing site after launch of each phase for further tweaks.

Selected Features

Some of the cool things I’ve built

  • Initial meetings
  • Functionality Specification
  • Provide time estimates for build
  • Prototypes / Proof of Concept / Wireframes if needed
  • Drawing on experience of previous bespoke functionality design and development in most cases

Tools: [mysql workbench, pen + paper, trello, mind map tool, whiteboard, balsamic, evernote]

Staging and dev environment

Build and configuration of a staging server and an in-house development server for the project, including setting up a source code repository and user access for developers and other stakeholders, test data and legacy database and asset importing and configuration.

Build features and databases

Hand-coding PHP classes, functions and features, building html pages, css edits, importing / migrating databases if need be, contact with clients and third parties to discuss business requirements and preferences, experiential and tactical prototyping.

  • Linux, Apache, Mysql, PHP
  • Dev environment with staging servers
  • PHP / html5 / jquery / ajax / bootstrap / wordpress / redback
  • Staying uptodate with latest tech and trends – responsive design, etc


Static code analysis / Security audits & scans / gitlabCI, PCI compliance.

Fixing issues as they arise in a stable environment and launching to the staging server on a continual basis.

Functionality tweaks, UI tweaks

W3 validator, nibbler, google page speed optimisations ySlow optimisations, SEO optimisations.

General tweaking of functionality and UI, eg basket processes or product pages based on best practices, recommendations from SEO / Marketing.

PHP optimisation using php mess detector, php LOC, php copy paste detector, php code sniffer.

HTML optimisation using w3c validator, wcag accessibility checker.

Other tools: nibbler, google pagespeed, firebug.

Manual Launch

Sometimes a manual launch is required – eg when updating an existing codebase or database or when a client has requested a staging server to change lots of content.

Scripted Launches

The adeogroup process allows for automated launches, part of our development cycle allows for continuous integration between code repositories and in-house development servers with scripts to push phased updates to staging.


Once a site has launched the process doesn’t simply stop, there are various analytic analysis and code compliance tests performed on an on-going basis and various refinements and modifications required. Updates of third party code is also dealt with in this stage, eg wordpress / tinymce / jquery and other tools used to construct the clients sites in addition to requests from third party SEO experts, recommendations form google webmaster tools, etc.


Security fixes, vulnerability scanning, identification and patching – nessus, etc.

Security plays a big part at adeo group, We have constant PCI compliance scans running, constant testing of new patches and configurations and daily updates to our servers.