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.
Some of the cool things I’ve built
Ajax one-page checkouts
Hand-built custom one-page responsive ajax basket process with quick checkout
Ajax one-page search
Hand-built custom one-page responsive ajax search results
Configurable product attributes and filtering system
Sage 200 integration
Product and order integration to sage 200 back-office CRM + ERP
- 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
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
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
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.
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.
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.
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
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