This portfolio was written in an effort to get a job and so you can see it smacks of desperation, but the write-ups are still interesting. Its content was last updated March 2021. Projects since then are on my GitHub page, and include this website.


Henlo. This website aggregates my history in software with a bunch of write-ups.
The write-ups have diverse styles; ☆s denote the most interesting ones.
Another thing I wrote is a Q&A, to help get to know me from a work perspective.
My document CV is a skeleton of this here page.

Work History
  • MNV Capital: Junior Analyst [Oct 2018 – Oct 2019]
    I was managed by the founding partners, Mahan Namin (mn@mnvcapital.com) and Nathan Varughese (nv@mnvcapital.com). The work I did is described in two entries in the listing below.
Education History
  • University: Cambridge (Churchill College), BA Maths 2:1 [2013–2016]
    I did pure maths courses in third year: analysis, algebra and discrete maths (graph theory, computation theory and automata/formal languages). I learned functional analysis in depth and wrote detailed lecture notes.
  • School: Latymer Upper School [2006–2013]
    A-Levels: 3A* (Maths, Further Maths, Physics), 1A (Economics)
    GCSEs: 10A*, 1A; FSMQ Add. Maths: A.

 

Streams Bot (Go) [Mar 2020 –]

→ Repo. This is a bot that conveys information about Twitch streams on Discord. It’s much the same as my old Pokémon Go notification bots, except done in a more-suitable language, and is a work-in-progress as I continually assess its use-cases and work on stable releases with docs. I’d say I’m not learning much new with this project, but it gives a good snapshot of where I am right now as a programmer.

Zelda: Skyward Sword Practice Cheat Codes (PowerPC ASM/Gecko) [Nov 2019 –]

→ Repo. This is a set of cheat codes for Zelda: Skyward Sword to help practise speedruns of the game. It was born from reverse engineering, from classic cheat-engine techniques using an emulator and RAM viewer, to code decompilation with Ghidra. Certainly one of the most interesting things I could write up, but this is the project that was most driven by raw exploratory problem-solving, which is hard to retrace.

Market-Making Bot @ MNV Capital (C++) [Mar 2019 – Oct 2019]

I worked at MNV Capital Oct 2018–Mar 2019, then again Jul 2019–Oct 2019 (I think the intervening lay-off was due to the price of bitcoin). I ended up making a market maker from scratch – it was the only thing I worked on and nobody else collaborated on it. The task was to aggressively trade at the going rate, so it became a problem of tracking prices and placing orders with the lowest latency possible. This write-up focuses more on design than programming technique, talking about clever methods and abstractions for making a reliable low-latency bot based on anticipation and resyncing with reality.

HFT Work @ MNV Capital (C++) [Nov 2018 – Feb 2019]

Before my solo market-making bot project, I worked collaboratively on optimising the existing infrastructure MNV Capital had for low-latency trading, which covered many topics like ring-buffers for communication across threads, hacking libraries to cut down allocations, and designing good practices for build processes and such. This write-up focuses mostly on C++, and the ins-and-outs of many aspects of low-latency programming discussed through code snippets from this period, some of which formed my later market-making bot.

MIT Distributed Systems Practicals (Go) [May 2018 – Sept 2018]

This (and concurrency more generally) are my favourite topics in computer science to think about, so when I spotted the idea of learning distributed systems via MIT’s labs (thanks Reddit), I did just that, and streamed the whole process, to develop my teaching and interview skills. I ended up implementing the Raft consensus algorithm and learning what became my favourite language.

Pokémon GO Spawn Notification Bots (JavaScript) [Mar 2017 – Mar 2018]

This project started as a plug for an obvious use-case gap, and evolved into an expansive user-driven project, which had the most dynamics of me talking to clients and adapting around their needs. The aim was to convert changes in visual map data into push-notifications effective for users’ gameplay.

This write-up is in two parts, the main part discussing how a set of needs was met with creative design ideas, the other part presenting how it evolved along with my skills, since this is the project where I really cut my teeth as a programmer.

Uni Maths Computational Coursework (Python) [Dec 2014 – Apr 2016]

In the beginning, I took the plunge to learn a non-recommended language to do my coursework, and it paid off. Prior to this, my programming experience was entirely messing about with a Visual Basic Windows Forms program at age 13 that did some misc stuff like moving a square around the screen. This project was all about using Python’s unbounded integer type to implement maths algorithms, and was an early exploration into algorithms like exponential and breadth-first searches.