From e6296df2d319c93e0a5f4302e987fec0c581d20b Mon Sep 17 00:00:00 2001 From: doylet <--global> Date: Fri, 11 Sep 2026 14:38:10 +1000 Subject: [PATCH] Revise the resume again --- index.html | 108 +++++++++++++++++++++++++++++++---------------------- 1 file changed, 63 insertions(+), 45 deletions(-) diff --git a/index.html b/index.html index 262b334..1983f7c 100644 --- a/index.html +++ b/index.html @@ -57,7 +57,7 @@ .bullet-points { list-style: circle; margin-left: 1.5rem; } /* - Helper classes for printing to PDF. A class with `print-show` will only show up in in + Helper classes for printing to PDF. A class with `print-show` will only show up in printing mode. `print-hide` will hide the tagged class when in printing mode. */ @media screen { .print-show { display: none; } } @@ -87,29 +87,32 @@
I'm a software developer who started programming professionally in 2018 and have - slowly come to enjoy low-level programming. I have an interest in building bespoke software - using my own libraries, developing a "tech garden" so to speak. That is a bunch of - foundational libraries[1] where I've written and/or - understood every line of code in them. Any bug is a bug in my source code that I can - go understand and fix. + slowly learnt the fundamentals of low-level programming. I have an interest in building + bespoke software using my own libraries, developing a "tech garden" so to speak. That is a + collection of foundational libraries[1] where I've written + and/or understood every line of code in them. Any bug is a bug in my source code that + I can go understand and fix.
Doing this is a nice forcing function that in turn provides an opportunity to learn about - different domains especially those involved in game technology. Game development involves - the marrying of many programming disciplines with a reasonably high bar of quality that is - expected by end users and making games is fun and interesting! + different domains, especially those involved in game technology. I am fond of real-time + interactive media and constraints. In particular, game development involves + the marrying of many programming disciplines where the consumer has a high standard that is + expected by default. Locked frame-rates, low-latency, interactive, a coherent design, a + stable world simulation and much more!
- I'm constantly learning and re-writing/improving[2] + I've made it a habit to constantly learn, rewrite, improve[2] my foundational libraries as a form of training and - practice[3]. In my experience each re-write has solidified my - understanding and improved the API design in that domain without fail. + practice[3]. It is my experience that each iteration has + unlocked new insights whether it be API design, an alternate perspective, learning new + domains and so forth.
- I learn and take inspiration from the design philosophies of: + I take inspiration from the design philosophies of:
- Session is a decentralised private messaging application that onion routes its messages - using the Session Node network. The Session Node network is a decentralised and - distributed messaging protocol powered by the Oxen blockchain which allows operators to - trustlessly join the network to store and route messages on behalf of Session. Operator - tokens are escrowed by smart contracts and are rewarded for routing messages successfully. + Session is a decentralised private messaging application with +1m MAU that onion routes + messages using the Session Node network. This network is powered by the Oxen blockchain + consisting of community operated nodes that can trustlessly escrow stake to join the + network and execute the Session messaging protocol. Operator stakes are escrowed by smart + contracts, penalised for bad quality-of-service and are rewarded for routing messages.
- I rejoined Session (formerly Oxen) in the blockchain team of 3 engineers, to assist the - network migrate its nodes from the Oxen blockchain to a layer 2 blockchain, Arbitrum. This - involves porting the trustless functionality from Oxen's C++ implementation into Solidity. - That is deployed on Arbitrum as well as designing and implementing the next stage, privacy - preserving subscriptions that grant access to premium messaging features. + I rejoined Session (formerly Oxen) in the blockchain team of 3 engineers to assist the + network migrate its nodes from Oxen to Arbitrum, an Ethereum layer 2 chain. This involved + porting the trustless functionality for operators to escrow their funds from Oxen's C++ + implementation into Solidity smart contracts.
- The migration had to occur on a live network in a way that minimises disruption of - the quality-of-service of users using Session. We migrated successfully in 2025 - atomically switching over 1000+ nodes to change their source-of-truth from Oxen to - Arbitrum and simultaneously migrated escrowed liquidity to Arbitrum. + In June 2025, Oxen successfully migrated a live network of ~1200 Session Nodes to Arbitrum + atomically converting over ~$2m USD (1.2k nodes × 25k stake × 0.7c/token) of liquidity + whilst preserving the quality-of-service of the Session messenger as the network + transitioned into the new paradigm. +
++ I designed and worked on the privacy preserving paid membership to Session Pro which + unlocked additional messaging capabilities such as larger file attachments and + larger message limits. This involved designing a protocol for anonymised Session Pro + certificates and privacy-preserving payment systems that interfaced with the iOS and + Google storefronts.
+ I worked on the in-house C++ kernel for BDI agents which was a real-time scheduler that + time-sliced, allocated goals and resources to agents (now open-sourced in Github; see + below) to execute their goals. I was also primarily responsible for the 2D discrete event + simulator using GLFW and Dear ImGui. This simulator tested the C++ kernel in various + scenarios such as solving games (like Tower of Hanoi) or agriculture use-cases for AOS's + in-house hardware branch working on autonomous off-road driving tech. The agent kernel + was designed with explainability in its core exposing an interface that allowed + GUIs and event simulators to hook into to use the kernel and explain the reasoning of + agents and/or build autonomous logic. +
The library is designed for trivial integration: a single amalgamated header and - implementation file with no external dependencies required. It targets Win32, POSIX, and - Emscripten/WASM, with compile-time feature toggles to include only what's needed. + implementation file with no external dependencies. It targets Win32, POSIX, and + Emscripten/WASM that can be configured with compile-time feature toggles.
Core modules include arrays, hash tables, string manipulation with optional @@ -398,7 +417,7 @@
It has continually evolved since the start of my programming career and has been a testing - ground for understanding the implication of different API designs, how common + ground for understanding the implications of different API designs, how common functionality is built and exploring different primitives (like learning about AVX-512 to use in string APIs).
@@ -471,18 +490,17 @@ web UIs.- The rewrite was a trade-off sacrificing latency for faster iteration. Chainflip has a - 6-second block time which makes sub-second latency less critical than - the ability to iterate quickly. The bot runs two strategies: a delta-neutral hedge - across Chainflip and Hyperliquid (perps and spot), and a basic Bybit spot strategy. Bot - pricing is configurable using averages over a lookback window with tools to identify - competing orders and to offer to beat or match them in real-time. + The rewrite traded-off latency for faster iteration given that Chainflip has a 6-second + block time. This gives ample time for decision making and hence sub-second latency is not + as critical. The bot runs two strategies: a delta-neutral hedge across Chainflip and + Hyperliquid (perps and spot), and a basic Bybit spot strategy. Bot pricing is configurable + using averages over a lookback window with tools to identify competing orders and to offer + to beat or match them in real-time.
The C++ GUI compiles to both a native desktop app and a WASM web build allowing for quick local iteration whilst allowing remote monitoring. It communicates with the Python backend - over WebSocket using a custom binary protocol. Features include a self-tuning swap window, - trading performance tracking and sends notifications via Session messenger webhooks. + over WebSocket using a custom binary protocol using asynchronous APIs.
@@ -641,7 +659,7 @@ Math Masher is a cross-platform mobile app that aims to teach basic arithmetic skills including addition, subtraction and multiplication by gamifying the learning experience. The app was developed in a team using the Cocos2DX framework in C++. My role in the - project is as the lead developer and assisting role with asset design. + project was as the lead developer and assisting role with asset design.
DCHIP8 aims to emulate the CHIP8 architecture to better understand at a lower level - operations between memory, cpu, input and output.
+DCHIP8 aims to emulate the CHIP8 architecture to better understand at a lower level + operations between memory, CPU, input and output.