■⠀■⠀■⠀■⠀■⠀■⠀■⠀■⠀■⠀■⠀■
■⠀■⠀⠀■■⠀⠀■⠀⠀■■⠀⠀■■⠀⠀■
■⠀⠀⠀■⠀⠀⠀⠀⠀⠀⠀■⠀⠀⠀⠀■⠀⠀■
■⠀■⠀⠀⠀■⠀⠀⠀■⠀⠀⠀■⠀■⠀■⠀■
■⠀⠀⠀■⠀⠀⠀■⠀⠀⠀■⠀⠀⠀■⠀⠀⠀■
■⠀⠀■■⠀⠀■■⠀⠀■⠀⠀■■⠀⠀■■■
■⠀⠀■⠀■⠀⠀⠀■⠀■⠀⠀⠀■⠀■⠀■■
■⠀■⠀■⠀■⠀⠀⠀■⠀■⠀■⠀⠀⠀■⠀■
■■⠀■⠀■⠀■⠀■⠀■⠀■⠀■⠀■⠀■■
Problem: Academic publications are scattered around the internet. For
Computer Science, you have repositories such as DBLP and CrossRef - services
independently storing publication data that is either unique to them or present across
multiple repositories. Sometimes, a repository's data can be incorrect; sometimes, the data
can be outdated on one service yet updated on another. Some publication
repositories have different rules as to which publications they should include and
which they should not. This lack of any repository standardisation
can lead to difficulty in finding relevant and up-to-date publications,
requiring the researcher to go from site to site whilst browsing papers.
Solution: Publo is a TypeScript-based centralized publication aggregator that
ethically collects and repairs data from various publication repositories across the
internet (such as DBLP and CrossRef). It compares their data for differences and repairs
the data based on what it heuristically believes to be the best version, storing it
with PostgreSQL for access via the React website. The project maintains and queries a
database containing over a million rows, hence there is a large focus on optimization.
It acts as a central location for Computer Science publications.
Problem: The streaming platform Twitch began enforcing DMCA strikes sent by record
labels against all content containing copyrighted music. This included not only new content,
but old content that had been stored prior. This put both Twitch and their content creators
into an awkward position where the most viable solution (to avoid legal issues) was to delete
all past content indiscriminately – a solution that was of course not desired.
Solution: I created a program that accurately detects music being
played in all previously created content on Twitch, storing the musical references using a
MongoDB database. It then allows content creators to bulk delete all of their
content containing music.
Problem: At the time of Vashtalk's development, Discord was quickly becoming one of the
fastest growing chatting applications in the world. However, there were several aspects where I
felt that the application was lacking.
Solution: This was never intended to be a serious project, but I decided to see
whether I could create my own version of Discord. This proved to be one of the
most interesting projects I have worked on due to the scope of areas covered
from the back-end to the front-end. Security and user privacy (both
internally and externally) were major focus points. It included a large range of technologies
such as JavaScript, Node.js, Redis, GraphQL, and PostgreSQL. The project reached a level
where I felt satisfied using it as a standalone service.
However, given that it was only ever intended as a fun concept, the development for it
stopped short of becoming something commercial.
Problem: The streaming platform Twitch has categories for viewing various games. However, each of these
categories is entirely generic. Regardless of the specification of the game, the
features available for each category on Twitch will be the same.
Solution: I enhanced Twitch’s functionality in this regard, picking the
popular GTAV category (popular due to a custom modification known as "NoPixel")
as the specific subject of improvement. I utilised Twitch’s API to create a REST
endpoint cross-referencing active streams with various GTAV-specific data. This
endpoint supplies a browser extension
(created by myself) with the means to modify Twitch’s GTAV page to provide more useful data in a
clear and practical manner.
Problem: When VaeBot was initially created, the (now) well-known chat application
Discord was still in its early stages. It lacked well-rounded bots that could make use of its API for
tasks that would improve each aspect of a Discord server. Most bots were for specific fields
such as music streaming or administration management and not many of them had much planning put
into their design.
Solution: I developed a Discord bot that acted as a well-rounded aide, aiming to
solve problems in every corner of assistance that I could think to reach
(administration, music, etc.) This became very popular at the time both on
GitHub and in various Discord servers. It was used to manage Discord servers totalling over 23,000 members.
On 19th November 2017, it rose onto GitHub's trending JavaScript repository page and placed me as the 8th highest trending JS developer.
Problem: The developers at Covéa Insurance wanted a system that could trace their CD (Continuous Delivery) builds
builds to the TFVC commits that went into them.
Solution: I developed a NodeJS and web-based service which utilized Octopus Deployment,
TeamCity and TFVC to track each deployment of a service to the delivered build changes relevant to it.
The service also displays the changes that will be going into the next deployment
(which are necessary to review before the build is deployed).
More projects can be found on my GitHub. Projects from 2016 and earlier (particularly Lua ones) are not present there because I was not actively using GitHub before that point. I will likely host them somewhere eventually but for now you can contact me to request them.