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’m Certified by the ILM in Managing People for Growth. I’m a Certified Scrum Master.

I’m currently CTO for cyber security Start-up ShadowDetect.

As Head of Technology for a web design agency (Adeo Group) in Glasgow. I worked for Adeo Group for 12 years. I have delivered over 1000 sites for clients in that time. 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.

As head of Technology, I was responsible for managing the in-house and remote development and support teams in addition to scoping, planning and overseeing development, security, integrations and launches, I was responsible for defining and maintaining CI/CD devops workflows and technologies, frameworks and architectures, tools and stacks across our product ranges, in development, staging and production environments and research and development work and general project management for clients. I maintained, secured and administered the companies servers.

Adeo have a number of private clouds running LAMP stacks serving a few million requests every couple of days. I also implemented and maintained the companies internal DevOps servers (CentOs, lamp stack, gitlab and continuous integration) and was 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 favourite to do a case study, This portfolio will detail out my processes, tools and favourite 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

ajax-checkout-presentation

Ajax one-page checkouts

Hand-built custom one-page responsive ajax basket process with quick checkout

ajax-search-brandon-presentation

Ajax one-page search

Hand-built custom one-page responsive ajax search results

filters-presentation

Product Filters

Configurable product attributes and filtering system

ajax-search-brandon-presentation

Sage 200 integration

Product and order integration to sage 200 back-office CRM + ERP

Planning stage:

New-Mind-Map_4sx1l
  • 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

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

Dev stage:

Screen Shot 2014-04-17 at 19.15.11

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.

Screen Shot 2014-04-17 at 19.15.11

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:

Screen Shot 2014-04-17 at 19.15.11

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)

Screen Shot 2014-04-17 at 19.15.11

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.

Tools: Firefox / Google Chrome / IE / Safari / iOS / pagespeed, ySlow!, w3c validator,
nibbler / silkbeam / etc
Screen Shot 2014-04-17 at 19.15.11

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.

Tools: Firefox / Google Chrome / IE / Safari / iOS / pagespeed, ySlow!, w3c validator,
nibbler / silkbeam / etc

Launch stage:

Screen Shot 2014-04-17 at 19.15.11

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.

Tools: centos, ubuntu, midnight commander, diff viewer,
various hand-coded scripts.

Screen Shot 2014-04-17 at 19.15.11

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.

Tools: Gitlabci, various hand-crafted scripts.

Maintenance stage:

Screen Shot 2014-04-17 at 19.15.11

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.

Tools: Google Analytics, W3c Validator, Google webmaster-tools, bing webmaster-tools

portfolio

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.

Tools: Nessus, Vega, wpScan, kali linux, Trustwave, etc