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 @@

G'day!

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:

A "Me" Primer

@@ -178,7 +180,7 @@ - +

- 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.