Use of Ubuntu and Debian as a base OS for other layers of the stack, including hardening, maintenance, user admission and other administration.
Use of Apache as a base for both general computing, and directing to various backends. This included setting up Virtual Hosts, reverse / SSL proxies, caching, endpoint security, rewrite rules and more to ensure a reliable service with high levels of uptime.
Ensuring that data was stored correctly and efficiently, in a way which was both secure and accessable. This involved taskes from general administration through to design and backups, to the end goal of increasing efficiency and relability.
Whilst generally this only involved writing code, this also included making configuration modification to allow for better service, implementing developer extension requests and implementing PHP in both Apache and non-Apache environments.
Generally, Docker worked well by itself, with my interactions being limited to the creation and management of services and containers, ensuring they interacted well with the rest of the system.
I however, orchestrated systems through Compose, to handle multiple containers per project (such as for isolated databasing), and finally managed these services across multiple hosts with Swarm.
My work with Node has ranged from single purpose micro-services and command line applications through to large systems incorporating multiple datasets to provide information to end users. This also included setting up management (for those systems not ran through Docker), and ensuring compatibility with pre-existing systems.
Working with the multiple technology stacks on the server, combined with DevOps software such as GitLab, my role as a developer shifted over to DevOps, writing code, ensuring it deployed, testing it, and making sure works.
This has included use of both GitLab CI and GitHub Actions, deploying to self-contained web-hosts, to Docker, or to external services such as Steamworks.
VCS ensures that changes can be tracked back, breaking changes can be reverted and everything is logged, whilst also improving productivity through branches, merges and other protections from overwriting code.
Whilst my work has mainly been in using VCS, I’ve also been called upon to manage VCS services and implement VCS specific code.
Throughout my development career, I’ve both had to ingest REST APIs to find data and make changes, whilst also writing REST APIs to expel data and ingest changes.
Webhooks are just REST APIs that push data, really. Just like with regular REST APIs, I’ve had to both write code that pushes webhooks and ingests them, including webhooks from multiple sources, such as GitHub, Ghost and GitLab.
Whilst I have only recently worked with Windows Server, it has been important in the development of my skills further, especially considering its use in SME.
Though only a recent addition to the Photon Core team, I’ve put in large amounts of effort,
from improving the use of VCS within the team,to building notification services.
This is combined with code provided to the Photon Lighting Engine core.
L² plates is a system written from the ground up in Garry’s Mod, using Lua as an embedded scripting language.
The plugin itself is sold on GModStore, with a more advanced build system having been built around it.
This system includes a set of docker containers, running a database and API service for the development tools,
and both GitLab and GitHub pipelines for building and deploying the addon versions,
alongside both the ingame system and development tools themselves.
Within Limelight, as the development lead, a major part of my role has been improving team efficiency.
Our team is compromised of a small number of developers, most of who work with Limelight as a secondary or tertiary job.
With this has led to an improvement in the soft skills: People management and conflict resolution.
This has been of key importance here, if one person leaving drops staffing by 15%, each person is key.
With our low staff levels, we’ve also have to develop custom tooling in order to improve our workflows.
For example, a system I developed was the suggestions management console,
a key system in improving our Suggestions Workflow.
This has led to a 50% decrease in the time spent processing internal suggestion reviews.
In addition, many parts of this system are also fully automated, from polls to requesting review to automatic closing.
Whilst for many a boring subject, data protection is of key interest to me, hence why I put myself forward for for the data protection role.
Within the role, I worked on improving compliance with regulations (including the GDPR), implementing workflows for subject requests and
training other staff to improve data protection throughout the company.
One of the major updates I worked on for Limelight was the Emergency Vehicle Update.
This involved working with myself and three other texture artists to create new liveries and configurations for
over 80 vehicles, creating over 70 liveries and hundreds of configurations.
Despite some issues with one of the texture artists becoming unavailable, and some disagreements between the artists and other staff members,
the update only released a few weeks late (impressive considering multi-week delays that happened during development),
this not only allowed me to work on other development skills such as texture work, but also allowed development of the soft skills.
One of my key pieces of work at Glorified Studios has been the development of
integrated build and deployment solutions.
For a varied range of engines, from Unity to Love2D,
my role has been to ensure that developers have the least amount of friction possible,
between them writing code and having those built changes deployed to consumers.
One of my most used pieces of software to date is the secure document store.
This Node.JS application was written to securely store documents,
providing selective access to users based on various criteria, such as group filtering.
Access to individual documents is controlled by an ACL,
with groups also having individual permission nodes for audit and management purposes.
These are all passed through to a backend secured with current best practices,
such as the use of non-incremental IDs and using external authentication sources
to remove the requirement for storing passwords locally.
Furthermore, access was also built into the application for automatic updating of documents from external sources,
such as our staff guidelines, which are automatically built from asciidoc source files, with built files deployed to the store.