Currently, I'm employed at Frontier Science Scotland as a Statistical Programmer!
Before I worked at Frontier, I undertook a Graduate course, achieving a SAS Base Programmer qualification and learning Python and R. I then took on a six month placement at Frontier Science Scotland, which grew into full-time employment.
Decision Network is a modern media opportunities platform. I began writing it in 2022, and it's grown to be my largest project yet, utilising all the skills I've garnered over the years. It utilises a Spring Boot backend with Vaadin for server-side rendering. It is connected to a network via Docker to a Grafana instance for Observability of logs collected by the Loki service, a Keycloak instance for OAuth2 Single Sign-On, and a Postgres database with three separate schema for each of these services, with the Spring Boot application using Spring Data JPA and Hibernate to handle data objects.
I wrote this website in SvelteKit in order to hone my Typescript and Web Development skills. After using React for Pomodoroiser, I wanted something more intuitive for a quick project like this. I was delighted to find SvelteKit to be so simple.
Turning my hand to Python software development, I wrote an application to automate the creation of graphics for a media outlet I was working with on the side. I was working on a per-graphic basis and found the work to be repetitive, so I automated it using Tkinter, Javascript, and a community package called Python Photoshop API!
Inspired by the Politico Playbook, the PlAIbook is an attempt to make political news concise using AI, as well as for me to learn a thing or two about Django and AI. With a Vue frontend and a Django backend, this project scrapes the RSS feeds of news websites, sends the result off to a large language model, and condenses it down into less than ten sentences, with the exact quotes from the article included so you can know exactly what was said.
The Pomodoroiser is a tool to take a YouTube playlist and convert it into a 'pomodoro' - a 25 minute work time broken up by a 5 minute break. The project also allows you to define how long you want your work sessions, and how long you want your breaks! This was my first foray into modern frontend development, and using React alongside node.js showed me just how powerful functional programming could be. Coming from the world of verbose and strongly-typed Java to succinct and untyped Javascript on the backend made me question a lot of my understanding and thoughts on what programming could be. While Python remains my go-to language for quick scripts, I always find myself drawn back to Javascript every so often for the speed at which I can progress a task.
At this time, I began my Graduate scheme which was an intensive one year course to learn SAS, Python, and R. Following that, I undertook a placement with FSS. Doing 8 exams in 12 months meant I had to quickly develop problem-solving skills to ensure I could get through the course content at a speed which ensured I would pass, and being exposed to three languages at once broadened my horizons on just how many different ways there were to solve difficult data analytical tasks. A lot of these skills proved to be highly useful once I undertook my 6 month placement after achieving my SAS certification.
To practice my Python, I decided to write Discord bots for some friends, these projects introduced me to data structures such as N-ary trees, which were perfect solutions for assigning hierarchical roles. I also learned more about Application Programming Interfaces, as well as asynchronous processing via the web.
A Java game engine written with the Lightweight Java Game Library with graphics from OpenGL. I decided to throw myself in the deep end and try and write a game engine with Java. I learned a great deal about object-orientation, but the project ended up dying as after 2000 lines of code I only had a very rudimentary project, and I began my full-time employment.
For Java's 20th anniversary, the Oracle foundation offered Java qualifications for just £20. I applied, having already written some Java in my free time. For the next few months, I spent my evenings solving Java problems in order to ensure I was ready for the exam. Alongside this, I also worked on VoidEngine to give myself something I was passionate about to motivate me to write Java outside of rote problem solving. In those months, I learned a great deal about Object-Oriented Design, SOLID principles, as well as design patterns.