7.2 KiB
title | date | draft | aliases | |
---|---|---|---|---|
Dev & Engineering | 2021-01-17T22:59:40+00:00 | false |
|
{{% image-box-link src="/posts/visual-search/mapSurfaceWithMax2.png" href="/posts/visual-search" title="Visual Search" caption="MATLAB" %}}
{{% image-box-link src="/posts/lpss/hood_m_gram.png" href="/posts/lpss" title="Speech Synthesiser" caption="MATLAB" %}}
{{% image-box-link src="/posts/markov/StateTopology.png" href="/posts/markov" title="Hidden Markov Models" caption="MATLAB" %}}
[Infrastructure]({{< relref "infra" >}})
I manage my local and cloud infrastructure with Terraform + Ansible + Docker. I've found this stack incredibly powerful so I've written a post about my patterns and what I love about it.
{{< figure src="/posts/infra/grafana.png" alt="grafana dashboard" >}}
Basically, Terraform creates and destroys infrastructure, Ansible manages the OS-level stuff and then the services I run use docker compose. I use a bootstrap Ansible role instead of golden images.
[Read More]({{< relref "infra" >}})
Holoportation
C++ [Kinect SDK, OpenCV]
C# [Winforms, Unity 3D]
Holoportation is an area of research exploring the ability to livestream 3D environments over the internet. The technology has many applications for AR/VR experiences like 3D sports and music events or smaller-scale applications like a 3D Twitch.
The holograms are captured in the form of a point cloud, a cluster of coloured dots that, when presented correctly, can appear like the original object.
{{< figure src="/images/holo-avatar.jpg" >}}
My undergraduate dissertation documented extending the LiveScan3D holoportation platform to allow multi-source streaming. The existing capabilities allowed a single scene to be captured in real-time and streamed elsewhere for viewing, multi-source allows multiple independent scenes to be received and composited at the same time (a many-to-one system).
{{< youtube NP0aVjuk5fU >}}
{{% image-box-link src="/posts/draught/checkers-board.png" href="/posts/draught" title="Draught" caption="Rust + Js" %}}
{{% image-box-link src="/posts/game-of-life/gameoflife1.png" href="/posts/game-of-life" title="Game of Life" caption="Rust + Js" %}}
Mixonomer
Python [Flask]
JavaScript [React]
Mixonomer is a web app for creating smart playlists for Spotify. These playlists watch other playlists to use them as sources of tracks. These tracks are filtered and sorted before updating a Spotify playlist.
Updates are run multiple times a day or on-demand. Additionally, Last.fm integration provides listening statistics for your playlists.
{{< figure src="/posts/mixonomer/cloud-structure-3.png" alt="cloud structure" >}}
The project began as an exercise in recreating the functionality of Paul Lamere‘s Smarter Playlists app. This tool had become a really important part of my daily listening habits as a way of combining my smaller sub-genre playlists into larger mixes.
The app has a Python back-end written in Flask. The front-end was built using a Node + Webpack + React stack.
The system is now deployed with a fully serverless architecture.
Selector
.NET [ASP.NET, Redis, Docker]
TypeScript [Vue]
A Spotify listening agent which watches what you listen to and presents related data and information in a live dashboard. Spotify presents some interesting track data that isn’t visible in the official clients such as its beats-per-minute, key signature and a musical descriptor.
{{< figure src="/posts/selector/dashboard.png" alt="dashboard" >}}
Listening Engineering
Python [scikit-learn, Jupyter]
Spotify and Last.fm are two powerful platforms for music data and consumption.
I wanted to explore what insights could be found in my 3 years of Last.fm scrobbles when augmented with Spotify data. Ideally, I also wanted to be able to apply the intelligence to the Mixonomer playlist pipeline.
Spotify provides audio features for the tracks on its platform. These features describe a number of qualities for the tracks including how much energy it has and how vocal it is. I investigated whether the set of audio features for my larger genre playlists could be used to classify tracks by genre.
Signal Processing
Throughout my studies I found myself particularly interested in the signal processing and AI modules, these have included:
- Computer Vision and Pattern Recognition
- Visual Search Report
- Robotics
- ROS Labs
- Speech & Audio Processing & Recognition
- Linear Predictive Speech Synthesiser
- Hidden Markov Model Training
- Image Processing & Deep Learning
- CNN Training Coursework
- AI & AI Programming
- Shallow MLP Coursework
I've been coding for 8 years and I now work as a software engineer in fintech. Day-to-day this is in C# and TypeScript but I also like working with Python and Rust. I keep all of my projects on GitHub.
Alongside development I also enjoy working on infrastructure, I have 5 years experience using Linux and managing networks. I have experience working with cloud technologies – from virtual machines, web server PaaS and serverless functions to NoSQL, Big Data SQL and pub/sub messaging. Much of this experience was gained during my Mixonomer project and during my Disney internship. As part of my dissertation, I used a global cluster of virtual machines as an environment to measure and experiment with holographic video QoS over long distances.
At university, I was particularly interested in the software side of the field including modules in programming, signal processing and AI. I also took a set of modules in semiconductors and nanoscience.
Awards
Throughout my time at university, I earned multiple awards for academic achievement
- Dean’s List for Academic Achievement (2018)
- Awarded for overall academic performance as part of my international exchange program with the California State University, Los Angeles
- Lumentum Award (2020)
- Awarded for achieving the highest mark in my third year Semiconductors & Optoelectronics module
- Atkins Best Oral Presentation – 2nd Prize (2021)
- Awarded for giving second best oral presentation for multi-disciplinary design project. Project involved designing a fully renewable ship and depot to repair sub-sea fibre optic cables.