Revise the resume again

This commit is contained in:
doylet
2026-09-11 14:38:10 +10:00
parent 9e3fee942c
commit e6296df2d3
+62 -44
View File
@@ -57,7 +57,7 @@
.bullet-points { list-style: circle; margin-left: 1.5rem; } .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. printing mode. `print-hide` will hide the tagged class when in printing mode.
*/ */
@media screen { .print-show { display: none; } } @media screen { .print-show { display: none; } }
@@ -87,29 +87,32 @@
<h3>G'day!</h3> <h3>G'day!</h3>
<p> <p>
I'm a software developer who started programming professionally in 2018 and have 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 slowly learnt the fundamentals of low-level programming. I have an interest in building
using my own libraries, developing a "tech garden" so to speak. That is a bunch of bespoke software using my own libraries, developing a "tech garden" so to speak. That is a
foundational libraries[<a href="#about-dn-library">1</a>] where I've written and/or collection of foundational libraries[<a href="#about-citations">1</a>] where I've written
understood every line of code in them. Any bug is a bug in <i>my</i> source code that I can and/or understood every line of code in them. Any bug is a bug in <i>my</i> source code that
go understand and fix. I can go understand and fix.
</p> </p>
<p> <p>
Doing this is a nice forcing function that in turn provides an opportunity to learn about 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 different domains, especially those involved in game technology. I am fond of real-time
the marrying of many programming disciplines with a reasonably high bar of quality that is interactive media and constraints. In particular, game development involves
expected by end users and making games is fun and interesting! 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!
</p> </p>
<p> <p>
I'm constantly learning and re-writing/improving[<a href="#about-reinventing-the-wheel">2</a>] I've made it a habit to constantly learn, rewrite, improve[<a href="#about-citations">2</a>]
my foundational libraries as a form of training and my foundational libraries as a form of training and
practice[<a href="#about-practice">3</a>]. In my experience each re-write has solidified my practice[<a href="#about-citations">3</a>]. It is my experience that each iteration has
understanding and improved the API design in that domain without fail. unlocked new insights whether it be API design, an alternate perspective, learning new
domains and so forth.
</p> </p>
<p> <p>
I learn and take inspiration from the design philosophies of: I take inspiration from the design philosophies of:
<ul class=bullet-points> <ul class=bullet-points>
<li><strong><a href="https://handmade.network/manifesto">Handmade</a></strong> communities and friends (C. Muratori, R. Fleury, Wookash) for their initiatives to teach and cultivate high quality software.</li> <li><strong><a href="https://handmade.network/manifesto">Handmade</a></strong> communities and friends (C. Muratori, R. Fleury, Wookash) for their initiatives to teach and cultivate high quality software.</li>
<li><strong><a href="https://tinygrad.org">TinyGrad</a></strong> for democratising ML through the relentless pursuit of simplification.</li> <li><strong><a href="https://tinygrad.org">TinyGrad</a></strong> for democratising ML through the relentless pursuit of simplification.</li>
@@ -131,7 +134,6 @@
<li>C++11 onwards</li> <li>C++11 onwards</li>
<li>C99</li> <li>C99</li>
<li>Ubuntu</li> <li>Ubuntu</li>
<li>Python</li>
<li>DDS</li> <li>DDS</li>
<li>Docker/Ansible</li> <li>Docker/Ansible</li>
<li>Build Systems (Makefiles/CMake/Ninja...)</li> <li>Build Systems (Makefiles/CMake/Ninja...)</li>
@@ -143,7 +145,7 @@
<li>Platform Abstraction Layers</li> <li>Platform Abstraction Layers</li>
<li>Immediate Mode UIs</li> <li>Immediate Mode UIs</li>
<li>Atomics/Intrinsics/SIMD</li> <li>Atomics/Intrinsics/SIMD</li>
<li>Virtual Memory Data Structures</li> <li>Virtual Memory</li>
</ul> </ul>
<h3>A "Me" Primer</h3> <h3>A "Me" Primer</h3>
@@ -178,7 +180,7 @@
</tr> </tr>
</table> </table>
<small> <small id="about-citations" style="scroll-margin-top: 20vh">
<ul class=citations> <ul class=citations>
<li id="about-dn-library">[1] Foundation Libraries <a href="https://git.doylet.dev/doylet/dn">git.doylet.dev/doylet/dn</a></li> <li id="about-dn-library">[1] Foundation Libraries <a href="https://git.doylet.dev/doylet/dn">git.doylet.dev/doylet/dn</a></li>
<li id="about-reinventing-the-wheel">[2] Reinventing the Wheel <a href="https://youtu.be/4B00hV3wmMY?t=292">Solving the Right Problems for Engine Programmers - Mike Acton @ 4:52</a></li> <li id="about-reinventing-the-wheel">[2] Reinventing the Wheel <a href="https://youtu.be/4B00hV3wmMY?t=292">Solving the Right Problems for Engine Programmers - Mike Acton @ 4:52</a></li>
@@ -210,24 +212,30 @@
<li class=job-role style="border-color: #519A8B">2024 - 2026: C++ Senior Software Engineer</li> <li class=job-role style="border-color: #519A8B">2024 - 2026: C++ Senior Software Engineer</li>
</ul> </ul>
<p> <p>
Session is a decentralised private messaging application that onion routes its messages Session is a decentralised private messaging application with +1m MAU that onion routes
using the Session Node network. The Session Node network is a decentralised and messages using the Session Node network. This network is powered by the Oxen blockchain
distributed messaging protocol powered by the Oxen blockchain which allows operators to consisting of community operated nodes that can trustlessly escrow stake to join the
trustlessly join the network to store and route messages on behalf of Session. Operator network and execute the Session messaging protocol. Operator stakes are escrowed by smart
tokens are escrowed by smart contracts and are rewarded for routing messages successfully. contracts, penalised for bad quality-of-service and are rewarded for routing messages.
</p> </p>
<p> <p>
I rejoined Session (formerly Oxen) in the blockchain team of 3 engineers, to assist the 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 network migrate its nodes from Oxen to Arbitrum, an Ethereum layer 2 chain. This involved
involves porting the trustless functionality from Oxen's C++ implementation into Solidity. porting the trustless functionality for operators to escrow their funds from Oxen's C++
That is deployed on Arbitrum as well as designing and implementing the next stage, privacy implementation into Solidity smart contracts.
preserving subscriptions that grant access to premium messaging features.
</p> </p>
<p> <p>
The migration had to occur on a live network in a way that minimises disruption of In June 2025, Oxen successfully migrated a live network of ~1200 Session Nodes to Arbitrum
the quality-of-service of users using Session. We migrated successfully in 2025 atomically converting over ~$2m USD (1.2k nodes × 25k stake × 0.7c/token) of liquidity
atomically switching over 1000+ nodes to change their source-of-truth from Oxen to whilst preserving the quality-of-service of the Session messenger as the network
Arbitrum and simultaneously migrated escrowed liquidity to Arbitrum. transitioned into the new paradigm.
</p>
<p>
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.
</p> </p>
<ul class=bullet-points> <ul class=bullet-points>
<li>Built smart contracts[<a href="#session-smart-contracts">1</a>] to allow operators to escrow a stake to join a decentralised network, receive rewards.</li> <li>Built smart contracts[<a href="#session-smart-contracts">1</a>] to allow operators to escrow a stake to join a decentralised network, receive rewards.</li>
@@ -269,6 +277,17 @@
scheduling and de-conflicting of agent intentionality, its execution and distributed agent scheduling and de-conflicting of agent intentionality, its execution and distributed agent
communication to improve resilience in adversarial situations. communication to improve resilience in adversarial situations.
</p> </p>
<p>
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.
</p>
<ul class=bullet-points> <ul class=bullet-points>
<li>Coordinated multiple toolchain upgrades of our in-house AI frameworks, end-to-end.</li> <li>Coordinated multiple toolchain upgrades of our in-house AI frameworks, end-to-end.</li>
<li>Added virtual-memory backed allocators for cache locality, reduced sys-calls and memory profiling.</li> <li>Added virtual-memory backed allocators for cache locality, reduced sys-calls and memory profiling.</li>
@@ -382,12 +401,12 @@
My personal foundational libraries for tools in C-style C++ that replace the C/C++ My personal foundational libraries for tools in C-style C++ that replace the C/C++
standard libraries for my projects. It provides a set of primitives designed around standard libraries for my projects. It provides a set of primitives designed around
explicit memory control with allocator-aware APIs, zero-allocation patterns, and explicit memory control with allocator-aware APIs, zero-allocation patterns, and
arena-based memory management where appropriate. arena-based virtual memory management where appropriate.
</p> </p>
<p> <p>
The library is designed for trivial integration: a single amalgamated header and The library is designed for trivial integration: a single amalgamated header and
implementation file with no external dependencies required. It targets Win32, POSIX, and implementation file with no external dependencies. It targets Win32, POSIX, and
Emscripten/WASM, with compile-time feature toggles to include only what's needed. Emscripten/WASM that can be configured with compile-time feature toggles.
</p> </p>
<p> <p>
Core modules include arrays, hash tables, string manipulation with optional Core modules include arrays, hash tables, string manipulation with optional
@@ -398,7 +417,7 @@
</p> </p>
<p> <p>
It has continually evolved since the start of my programming career and has been a testing 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 functionality is built and exploring different primitives (like learning about AVX-512
to use in string APIs). to use in string APIs).
</p> </p>
@@ -471,18 +490,17 @@
web UIs. web UIs.
</p> </p>
<p> <p>
The rewrite was a trade-off sacrificing latency for faster iteration. Chainflip has a The rewrite traded-off latency for faster iteration given that Chainflip has a 6-second
6-second block time which makes sub-second latency less critical than block time. This gives ample time for decision making and hence sub-second latency is not
the ability to iterate quickly. The bot runs two strategies: a delta-neutral hedge as critical. The bot runs two strategies: a delta-neutral hedge across Chainflip and
across Chainflip and Hyperliquid (perps and spot), and a basic Bybit spot strategy. Bot Hyperliquid (perps and spot), and a basic Bybit spot strategy. Bot pricing is configurable
pricing is configurable using averages over a lookback window with tools to identify using averages over a lookback window with tools to identify competing orders and to offer
competing orders and to offer to beat or match them in real-time. to beat or match them in real-time.
</p> </p>
<p> <p>
The C++ GUI compiles to both a native desktop app and a WASM web build allowing for quick 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 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, over WebSocket using a custom binary protocol using asynchronous APIs.
trading performance tracking and sends notifications via Session messenger webhooks.
</p> </p>
</div> </div>
@@ -641,7 +659,7 @@
Math Masher is a cross-platform mobile app that aims to teach basic arithmetic skills 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. 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 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.
</p> </p>
<ul class=bullet-points> <ul class=bullet-points>
<li>Project management (Trello, minutes meeting, code review etc.)</li> <li>Project management (Trello, minutes meeting, code review etc.)</li>
@@ -665,7 +683,7 @@
</tr> </tr>
</table> </table>
<p>DCHIP8 aims to emulate the CHIP8 architecture to better understand at a lower level <p>DCHIP8 aims to emulate the CHIP8 architecture to better understand at a lower level
operations between memory, cpu, input and output.</p> operations between memory, CPU, input and output.</p>
<ul class=bullet-points> <ul class=bullet-points>
<li>Fetch, Decode, Execute Opcodes</li> <li>Fetch, Decode, Execute Opcodes</li>
<li>Modelling memory, registers and basic CPU architecture</li> <li>Modelling memory, registers and basic CPU architecture</li>