Relevant industry roles
Tidy DesignWeb & Software Developer
Over time, my role at Tidy Design became more and more multifunctional. Starting out with website updates/implementations and progressing into more technical and software-oriented projects, I served as the go-to contact for technical questions and ideas for the team. I brought my technical knowledge and programming skill to the table and took control of a number of complex Wordpress/WooCommerce sites, as well as some more webapp-like projects, and even a desktop software project implemented with Electron and AngularJS.
While at Tidy Design I picked up a good sense of client communication and was involved in discussions about the business model, overall practice and organisation. I had the chance to implement a version control and front-end tooling strategy, manage a client over the course of an involved technical project, educate my team on programming and technical subjects, and have my voice heard on many key organisational topics.
Clearvision CMApprentice + Junior Software Developer
Starting at Clearvision as an apprentice, I worked a 4-day week as part of both the web and software teams while achieving an NVQ in IT and Telecoms. During this time, I was exposed to a number of key skills, concepts and experiences so as to provide me with a range of useful knowledge. I learned and practised the Agile methodology applied through the Atlassian suite, got involved in planning and review meetings, picked up Git at an advanced level, and worked on the company's website as well as plugins for Atlassian's JIRA and the company's core Java/Swing webapp product. A key contribution was to rewrite the application's front-end, transforming it from the traditional JSP to a single-page AngularJS implementation.
After the apprenticeship I was hired to continue my role as a key member of the development team. I continued work on the core product, taking a multifunctional role implementing features through the whole stack - from additions to a RESTful API to database modelling to a fluid user experience on the front-end. I also had the chance to experiment with the early releases of Docker to implement new deployment strategies, and added complex new features to the company's Wordpress website.
A small selection of my work
Eleven Magazine is a complex Wordpress/WooCommerce site comprising of a blog; reusable and unique page templates; custom post types; custom settings pages; and a members-only buy-in competition system with public and private voting capabilities. The site focuses on admin usability, implementing the Advanced Custom Fields plugin to ensure that most aspects are editable in a user-friendly way.
Blog posts fit into distinct categories and sub-categories and are displayed on a paginated main archive on the home page, with a more granular custom-filtered archive available.
The competition system is highly bespoke, comprising a custom post type for competitions themselves. Competitions proceed through a lifecycle of stages and sub-stages, with their template and interaction options changing to match. Users can register to purchase competition entry - implemented through a customised WooCommerce checkout - and then create an entry through a hidden entry portal. During the voting phase, the public can vote on entries with a "like" system, and the site administrators can set up a Jury Panel to vote privately through another hidden portal.
My contribution to Eleven Magazine was to overhaul, re-implement and improve the entire competition system on top of WordPress and WooCommerce, and to create and update page templates to match and compromise on the client's given designs.
As well as regular brochure and WordPress site updates, for Urlaub Cornwall I contributed a rebuild of an existing web application. Originally created a number of years ago, I planned and executed a four-phase project to fully overhaul the system to future-proof the product and provide new features.
The system facilitates a web affiliation model for the site owner by scraping, caching and transforming various cottage-related XML feeds and building out configurable listing and cottage pages. To the user, the system presents a search-and-filter form which acts on the cached data to provide tailored results. To the admin, the back-end provides cache rebuild and page generation features, and a way to update the system's internal automatic English to German data translation utility.
Written in pure Object Oriented PHP, over the course of the project I overhauled every aspect to improve the code and its performance; clean up and add features to the admin interface; revamp the static pages and dynamic results; add dynamic filtering functionality and completely redesign the translation method for ease-of-maintenance. Web standards adherence and search engine performance of the generated pages were a consistent concern throughout development, as was boosting conversion by tailoring a clear user experience.
As part of an end-of-phase handover process, I created comprehensive system documentation and guided a new developer on the system's features and codebase.
My.VanWalt is a highly bespoke WordPress/WooCommerce members-only shop with unique pricing structures, per-user and per-product-type discounts, and custom shipping cost calculation functionality.
Presenting "Rental" products with configurable timed price bands, customers make purchases by requesting a certain rental period and paying a fully dynamic calculated price. If the user is eligible for discounts, they're applied visually in the cart, where they also request a particular delivery date and time band to calculate and pay a dynamic price based on admin-configurable parameters.
My.VanWalt makes use of every avenue of WooCommerce customisation from hooks to template overrides, and performs complex rewiring to replace standard prices with dynamic prices. It also supports "normal" products and a more advanced form of up-sells where different classes of product are filtered into separate types of recommended items.
All of the bespoke functionality is produced without any WooCommerce-affecting plugins.
The site is part of a larger WordPress Multisite network, which I contributed to architecting in collaboration with the rest of my the team. My key contributions to this process were to manage the migration of data from old individual sites to the networked multisite, and to help architect a shared-resource pattern for multiple networked theme developments.
ASSIST-CKD is an internal NHS desktop application designed to provide easier, cheaper and more reliable intervention for at-risk patients suffering with Chronic Kidney Disease. Implemented with Electron and AngularJS and supporting MySQL, Microsoft SQL Server and SQLite databases, I came on board with the project after a period of initial third-party development and acted as sole developer through the rest of the development phase. Overseeing multiple distributions to a number of NHS Trusts, I implemented new features, maintained the application through bug fixes, provided support to users and wrote comprehensive user-facing documentation. Additionally, I helped build the project's WordPress site featuring custom user roles.
Throughout my involvement with the software project, I was responsible for keeping organised by selecting and implementing fixes and features for new releases and maintaining a comprehensive Trello board. Communicating with the project manager and acting as support for users across the country, I contributed to planning efforts by collating my own knowledge with the most prominent issues to produce regular releases moving the product forward.
Towards the end of the development phase of the project, I produced comprehensive technical documentation to aid in a handover process, and continued to provide user support where necessary.
The project has been dormant for some time, but I occasionally revisit to work on reconceptualising the architecture to fit modern module-based ES6 patterns and to support mobile devices.
Follow the link for a Desktop only 3D demoscene.
Sharpshifter is a simple game prototype created for Ludum Dare #35, built with ProtoGL in less than 48 hours.
A 2D shoot-em-up inspired by Geometry Wars, this project introduced mouse-handling capabilities and a number of shape geometries to the ProtoGL utility suite and overhauled geometry retrieval and rendering capabilities.
Follow the link for the Ludum Dare submission version, playable on Desktop.
Another simple game prototype, created for Ludum Dare #38 using ProtoGL in 72 hours, Thruster Pack is a physics-based "lander" type puzzle game focusing on gravity as a core mechanic.
This project overhauled ProtoGL's 2D physics system and added accurate Newtonian gravity.
Follow the link for the Ludum Dare submission version, playable on Desktop.
Working with a friend, my latest spare-time project is an eCommerce platform built with Node.js on the back-end and Vue.js or React.js on the front-end.
Samplemogul will provide services for both sellers and buyers of musical samples, comprising a unified platform facilitating direct sales and intra-platform marketing. For myself, it's an opportunity to branch into some more modern web development practices and gain practical experience with Node and either Vue or React. In the planning and research phase, I've been brushing up on these tools and producing initial project documentation and organisational resources.