adam johnson

Publo (2021)

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.

TwitchMusicID (2020)

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.

Vashtalk (2018)

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.

TNO (2020)

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.

VaeBot (2017)

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.

Enterprise Release Notes (2017)

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.