Devon-based full-stack developer by night, available for hire by day, when I'm not taking in the breath-taking landscapes. Originally a desktop application developer, I broadened my horizons to start working on web applications in my spare time and haven't looked back since. Despite only having built a few applications, I'm eager to learn and always excited to solve new challenges.
Having worked on various web and desktop projects over the years, I've developed a broad skillset which allows me to tackle anything thrown at me. I've solved a number of problems in both domains, and I don't quit until I've solved problem I'm currently on.
Daytrader
Commercial Java application for a client, the story was automation of his hand-written stock day trading strategy.
It is a soft realtime application which recieves stock information from a 3rd party API every 5 seconds,
performs some checks on it and performs follow-up actions if those previous actions passed
for up to around 100 objects. This data is cached if the current bar either doesn't exist or has changed a value since the last
call. Each of these operations run on different threads and utilize a stream-based API to run the various tasks. It is also
possible to run any of the stages manually for testing purposes.
The main library is a Java application
(this is how the API is called) and the main GUI is written in Kotlin and uses KotlinFX. The API we used is by Interactive
Brokers, and works via a Java library which connects to the local running workstation client via a socket. It is overall
very cumbersome and tricky to use but I was able to create a sane wrapper around their functionality with error reporting
and a much more consistent API.
Project Ascension
Open source C++/Qt game launcher, designed to unify Steam, EA Origin, Ubisoft uPlay and other game DRM platforms into a single application.
This is a unified game launcher (UI is prototype, not designed by me) which is able to launch games from a variety of platforms. I was mostly responsible for implementing the backend of the client, and I was brought into the team for my implementation of a wizard which is able to find games for Steam, Origin and uPlay on any computer for any compatible OS (OS X was untested, at the time nobody had access to it).
Blackarch Linux
Open source minimal penetration testing Linux distribution
Aimed at being essentlially a lighter version of Kali Linux,
the project created a simple base for users and allowed them to install whichever packages/groups
they wanted to, such as blackarch-webapp
,
blackarch-forensic
,and blackarch-recon
.
After I joined the project, it expanded to include pre-built ISOs and offered an installer, though this was not supported as it went against the vision that we originally had.
Much of the build scripts and such were simple bash, as was the installer. There was talk of moving things over to another language, however as I have been absent
from the project I'm not sure how that went.
Daytrader
Commercial Java application for a client, the story was automation of his hand-written stock day trading strategy.
It is a soft realtime application which recieves stock information from a 3rd party API every 5 seconds,
performs some checks on it and performs follow-up actions if those previous actions passed
for up to around 100 objects. This data is cached if the current bar either doesn't exist or has changed a value since the last
call. Each of these operations run on different threads and utilize a stream-based API to run the various tasks. It is also
possible to run any of the stages manually for testing purposes.
The main library is a Java application
(this is how the API is called) and the main GUI is written in Kotlin and uses KotlinFX. The API we used is by Interactive
Brokers, and works via a Java library which connects to the local running workstation client via a socket. It is overall
very cumbersome and tricky to use but I was able to create a sane wrapper around their functionality with error reporting
and a much more consistent API.
Project Ascension
Open source C++/Qt game launcher, designed to unify Steam, EA Origin, Ubisoft uPlay and other game DRM platforms into a single application.
This is a unified game launcher (UI is prototype, not designed by me) which is able to launch games from a variety of platforms. I was mostly responsible for implementing the backend of the client, and I was brought into the team for my implementation of a wizard which is able to find games for Steam, Origin and uPlay on any computer for any compatible OS (OS X was untested, at the time nobody had access to it).
Blackarch Linux
Open source minimal penetration testing Linux distribution
Aimed at being essentlially a lighter version of Kali Linux,
the project created a simple base for users and allowed them to install whichever packages/groups
they wanted to, such as blackarch-webapp
,
blackarch-forensic
,and blackarch-recon
.
After I joined the project, it expanded to include pre-built ISOs and offered an installer, though this was not supported as it went against the vision that we originally had.
Much of the build scripts and such were simple bash, as was the installer. There was talk of moving things over to another language, however as I have been absent
from the project I'm not sure how that went.
Daytrader
Commercial Java application for a client, the story was automation of his hand-written stock day trading strategy.
It is a soft realtime application which recieves stock information from a 3rd party API every 5 seconds,
performs some checks on it and performs follow-up actions if those previous actions passed
for up to around 100 objects. This data is cached if the current bar either doesn't exist or has changed a value since the last
call. Each of these operations run on different threads and utilize a stream-based API to run the various tasks. It is also
possible to run any of the stages manually for testing purposes.
The main library is a Java application
(this is how the API is called) and the main GUI is written in Kotlin and uses KotlinFX. The API we used is by Interactive
Brokers, and works via a Java library which connects to the local running workstation client via a socket. It is overall
very cumbersome and tricky to use but I was able to create a sane wrapper around their functionality with error reporting
and a much more consistent API.