jonathans blog

Portfolio – Jonathan Mitchell MSc BSc MBCS

Jonathan Mitchell

Portfolio

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 also a professional
member of the British Computer Society (MBCS)

I am Head of Technology 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 a number of private clouds 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.

From concept to launch and beyond

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

Planning stage:

    • Initial meetings
    • Functionality Specification
    • Architecture Choices: SOA / Monolithic / MVC
    • Architecture Choices: Functional / OO
    • CASE tools (Computer Aided Software Engineering)
    • Diagrams: Use-Cases, Scenarios, BCD
    • Diagrams: Service Interaction, Service Definition
    • Diagrams: ERD (Database), Class Diagrams
    • 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

Dev stage:

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.

Technologies used to build things:

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

Testing stage:

Testing

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. Continuous integration (custom build scripts on gitlab, etc)

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.

Code Optimisations

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.

Launch stage:

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.

Maintenance stage:

Maintenance

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

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.