I have been programming as a hobby since 2013 and my first paid job was in 2016. I like to explore a variety of different areas in computer science and solve challenges that come up in each project. I have many personal projects on my github.
Cartographer:
Full Stack Developer | Contract
(May 2022 - Present)
For the front end, I assisted with the development of a cross-platform
form engine for a geographical data collection platform with web and
mobile client apps. The project involved work on multiple projects for web
and mobile using TypeScript, React, using a variety of build tools and
other libraries.
The API server uses Scala with the cats library and the play web
framework, as well as postgresql for any database interaction/migrations.
Voxel Studio:
Full Stack Developer | Contract
(May 2024 - May 2024)
I created a software solution for an Adidas football event, where I was
tasked with hooking up a big LED display (showing leaderboards/current
game stats), alongside two tablet displays (one for team registration, the
other for choosing which teams are up next), as well as a laptop display
(for adding/removing goals scored and game functionality). I used an
action/event system or communication over sockets as well as a REST API,
where I created a few nodejs local packages, and wrote it all in
typescript. I used a SQLite database for data storage about teams as well
as games.
I worked under a lot of pressure, as I only had 8 days to complete this
but managed to get everything working on time, even with many last minute
changes.
University of Goldsmiths: Software Engineer | Contract
(October 2023 - April 2024)
I developed a peer to peer streaming app which handled Motion Capture
data, where there would be various producers of this data from different
motion capture software. This would then be retrieved (over either a UDP
connection, or directly through a DLL) by the app itself, which is written
in electron. Next it would be sent over webRTC to the connected computers
running the same app. Finally this data would be then sent from the app on
the other end, to a data consumer, like the unity game engine.
For the unity side of the service, I developed some custom scripts to then
take the motion capture data and animate a custom unity character.
University of Exeter: Map Embed Development | Contract
(July 2023 - October 2023)
I created an interactive map embed, which displayed publication data (containing location data) provided by the university, to then be shown as points on a map. On the project I went from doing requirements analysis, to building a quote from doing time estimation for each feature. One of the requirements was to create a universal solution for any dataset. So I created a configuration, as well as a templating language in the form of markdown with some context processing, so that they had control over how the publications were being shown. This configuration was all contained within a single file, with YAML as front matter, and then markdown being the publication rich text format.
Photobot: Python
Django Development/Google Firebase Development | Contract
(April 2021 - March 2022)
I started work on an existing codebase as the sole developer, where I accomplished a number of tasks and worked across a few products. One of the tasks involved upgrading the Heroku stack from cedar-14 to heroku-18, where I also upgraded the minor Python version and it's dependencies. I also worked on custom Python client code, which communicated with the server's API, which I was also working on. I also introduced many unit tests, to help ensure reliability and give confidence that things work the way they should. Another one of the products I worked on was using the Firebase stack to host embeds, where they would be able to seamlessly fit into any page. These embeds would be able to receive custom styling/text content from the parent page to not disrupt the user experience/webpage interface.
Buzzshot: Python
Django Developer | Contract
(July 2019 - August 2021)
I added a complete new feature to the app all the way from specification
to deployment to end users, with coding in Python, HTML and CSS and
including automated testing. I learnt about using Django in the industry;
implementing services and interacting with APIs. I learnt how to
contribute and work with an existing codebase and also adhere to the
standards already in place.
I also developed a new app for Buzzshot from idea to launchable product,
on my own where I got handed a brief and I had control over the rest
(including UI - front page as well).
Peer Assisted Learning Program: Leader/Mentor | Contract
(September 2019 - June 2021)
Throughout 2nd and 3rd years at university, I worked in the peer assisted learning program, helping other students in computer science with their understanding, and assignments, and exam preparations. The learning was mutual - while I helped them, I also learnt about the many different approaches to solving a given problem.
UXBrighton: Front-end
Web Developer | Contract
(August 2019 - September 2019)
Worked directly on the UXBrighton website using HTML, Javascript and CSS. When working, I had to keep in mind responsive web design principles and have learnt how to use them. I also helped getting the website to comply with the WCAG-A accessibility standards.
Buzzshot: Lua Script
Developer | Contract
(August 2018 - August 2018)
I wrote Lua code to run on an embedded system housed in an SD Card to allow direct integration between DSLR Cameras and the Buzzshot system. I overcame the challenges of poor existing documentation and a small, niche community.
Google Fonts:
Software Developer in Test | Contract
(August 2017 - August 2017)
I worked over the summer for google fonts as a developer in test using Python to write unit tests, as well as other miscellaneous tests. I learnt how to use git in a professional environment on a project with multiple contributors.
Codebar: Programming
Coach
(October 2017 - January 2019)
I volunteered for a while at Codebar in brighton, an organisation whose goal is to get more under-represented groups into tech roles. I think it's a fantastic cause which is why I did it. I found teaching there incredibly rewarding and also educational for me as I learned things when coaching.
Howreadable:
Experiment Development
(December 2018 - December 2019)
I helped design the second iteration of this experiment which aims to collect empirical evidence on whether certain coding constructs/standards are more readable than their alternatives. I helped in defining the experimental method, the UX of the participant facing website, and designing and writing the code snippets used as test cases.
Computer Science and Artificial Intelligence BSc (Hons); University Of Sussex
Grade Received: 1st (79%)
College Education; Bartholomew's Tutorial
College (Brighton)
A-Level results obtained:
A: Computer Science
A: Mathematics
B: Physics
Wish Studios
(August 2018 - August 2018)
I worked with the Unreal Engine where I made my own personal game mechanics. I had an insight into the games industry as well as how work might be for a games developer.
Pragmatic WordPress Agency
(April 2017 - April 2017)
I had the opportunity to shadow many people working at the web agency. As a part of the work experience, I worked on my own personal portfolio website using wordpress with a little bit of PHP, HTML and CSS.
Web Animation Template: Personal Project
I created and I'm continuously improving this template, which I have made for all of my web based projects. Inside of it I have a Vector class, Time Analysis (used for benchmarking/profiling certain methods), a complete parameter configuration class, which will let you create custom inputs for the animation and then hook them up to URL parameters. It is all written in Typescript, and has many type derivations/type-safe concepts.
Platformer Map Compression: Presentation
I gave a talk at a programming meetup (mainly about Javascript, but can be anything to do with programming) here in brighton called asyncjs. The talk was on how the map compression for my platformer game works, including the algorithm and the file format. I covered areas as complex as bit manipulation to an audience with different levels of experience in computer science. When I was talking to people afterwards, everyone seemed to understand the content in the presentation.
Programming Languages
Lua:
I started off programming with Lua, creating scripts in the Minecraft
mod: Computercraft. I created more and more complex scripts until I
eventually had an entire working
GUI for
interacting with the in-game computers. I later found out about the
Love2D game engine for Lua where I created many projects including my
platformer game.
Javascript:
I moved on to NodeJS projects with the help of a tutor where I created
many projects. I also do a lot of codegolfing using Javascript. I love
doing HTML canvas animations, including: a
rainbow I made for celebrating pride,
having fun with circles, and a
cellular automata sandpile simulation,
cellular automata particle system written using convolution.
Python:
I started learning Python for my GCSEs and also used it for my
A-Levels. I have since done many projects with it, including a
Discord bot
which offers many miscellaneous commands. One of the commands is a
text to emoji text
translator which works like
this. I
have also done some
Project Euler
challenges and have made a
repository containing my solutions
to them.
Java:
In my first year of university, we learnt Java. To better understand
linear algebra (which I also learnt at that time), I created a
library
to do vector/matrix manipulations. I also challenged myself to create
a
genetic algorithm for the game of life
in Java.
GLSL:
I have experience with GLSL when using the Love2D game engine for Lua.
One of my projects was to create a
hypnotic spiral
for fun and it turned out to be pretty cool - I figured out how to
make spirals in a 2D plane. Another project where I used GLSL for
shading was my Platformer game, where I created a
shader
to create scenes in the game like
this.
I also have learnt HTML, CSS through work and I'm very familiar with Jquery, bootstrap, react, SASS, and chakra UI.