Sevenspace

Jonathan Allcock

I'm a predominantly self-taught programmer with 10+ years of personal experience and roughly 4 years of professional experience. Dedicated and passionate, I started out reading textbooks and writing tutorial code in school to learn how to make my own video games.

Over the years, the theory-based approach I took to my initial learning allowed me to grow into a highly adaptable developer. I pride myself on being able to quickly assimilate new fields, systems, languages and frameworks - and with a strong underlying theoretical knowledge, I'm able to solidify learning into expertise fast.

I've worked with a large variety of tools to serve a number of intersts - from amateur game development (including work on a custom JavaScript/WebGL engine); to both small and enterprise scale web applications; to DevOps-style deployment strategy implementations; to both front and back end web development. While I tend towards the technical, I'm enthusiastic about improving my design skills too, and have a growing interest in organisational concerns and efficient collaborative best practises.

Metalhead | Gamer | Animal Lover

Skills

A quick glance at what I can do

Languages

Frameworks & Libraries

Tools

Learning

Professional Experience

Relevant industry roles

Tidy Design

Web & 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 CM

Apprentice + 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.

Projects

A small selection of my work

Professional

Personal

Eleven Magazine

Link
WordPress WooCommerce Advanced Custom Fields User Meta Pro Blog Page Templates Bespoke Functionality Guided Web Design
Work completed as an employee of Tidy Design

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.

Urlaub Cornwall

Link
Brochure Website Content Updates WordPress Plugin Management Collaborative Web Design Application Development Project Management Technical Documentation
Work completed as an employee of Tidy Design

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

Link
WordPress WooCommerce User Meta Pro Bespoke Functionality Guided Web Design WordPress Multisite Data Migration Architecture Maintenance
Work completed as an employee of Tidy Design

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

Link
Software Development Electron AngularJS MySQL MSSQL SQLite Project Organisation Technical Documentation User Documentation WordPress Bespoke Functionality
Work completed as an employee of Tidy Design

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.

ProtoGL

Link
JavaScript WebGL Game Development High-level architecture

ProtoGL is a personal-use JavaScript/WebGL game prototyping engine developed over the course of a number of Ludum Dare 48-hour and 72-hour game jam projects.

The concept and implementation evolved as a culmination of common functionality implemented in my Ludum Dare projects, moving from Java to Python and eventually to JavaScript as my language of choice changed over time. Early on in programming, I developed a taste for the technical and decided to use my game development to explore the complex challenges of performant rendering and simulation, adopting OpenGL and eventually WebGL for low-level rendering.

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.

The engine is capable of rendering in 2D and 3D, with textures, a custom font and basic lighting, and follows the Entity-Component-System architecture. Built-in is a basic physics system, comprehensive interaction handling, as well as a suite of default geometry and shaders. The API is designed to be simplistic so as to make game prototyping in the context of a short-term jam as quick as possible. It's possible to define an entire simple game - represented as a series of distinct states - with a single JavaScript file, hooking into engine lifecycle stages.

Follow the link for a Desktop only 3D demoscene.

Sharpshifter

Link
JavaScript WebGL Game Development 48-hour Jam

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.

Thruster Pack

Link
JavaScript WebGL Game Development 72-hour Jam

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.

Samplemogul (WIP)

Node.js Vue.js React.js Project Organisation

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.