Print Me!
GitHub
Work
2022 - Present
C++ Senior Software Engineer, Agent Orientated Software (AI)
2020 - 2022
C++ Software Engineer, Agent Orientated Software (AI)
AOS creates creating trustable and explainable AI using multi-agent systems with the cognitive framework, Beliefs, Desires and Intentions (BDI). My role involves improving the AI toolchain such as improving cross-agent collaboration, forward planning, scheduling and de-conflicting of agent intentionality, its execution and distributed agent communication to improve resilience in adversarial situations.
- Coordinating multiple toolchain upgrades of our in-house AI frameworks, end-to-end
- Added virtual-memory backed allocators for cache locality, reduced sys-calls and memory profiling
- Co-implement protocol to distribute agents onto different routing technologies (DDS & Kafka)
- Responsible for the docs website with APIs & manuals, end-to-end for production releases
- Implement multiple discrete event simulators for verification of agent behaviours
- Documenting best practices, patterns and tutorials for designing effective multi-agent systems
- Implement real-world system specs in a multi-agent architecture to highlight deficiencies in the development methodology leading to new protocols, e.g. researching interfaces for humans to effectively contribute into the agent decision making.
- Agent Orientated Software aosgrp.com
2018 - 2020
C++ Software Engineer, Oxen (Blockchain)
Oxen is a non-for-profit, open-source company developing privacy protocols and tools. I implemented[1] a decentralized layer of servers known as the Service Node[2] network that distributes the blockchain and maintains layer access-control. They coordinate peer-to-peer to evict underperforming and malicious peers whilst generating entropy for securing blocks using checkpointing[3] and a commit-reveal scheme known as Pulse[4].
With over 1k+ servers and growing, the Service Node network provides a sybil-resistant foundation to facilitate a privacy preserving onion routing network, Lokinet, and, a privacy preserving messenger, Session.
- Rapidly learning & up-skilling as their first developer in the startup to form a development methodology and hiring practices
- Implement a resilient server layer over new P2P gossip protocols: node de/registration & rewards, service metrics & voting
- Form immutable checkpoints to secure blocks using shared consensus to provide faster finalization of transfers on the network
- Create an on-chain DNS registry to map cryptographic keys to human readable aliases (e.g. Lokinet domains, Oxen wallets and Session aliases)
- Transition from Proof of Work to Proof of Stake live in production, deprecates miners for a commit-reveal scheme to generate entropy for minting blocks
- Ownership of release process (build/package/distribute) end to end.
- Patching of 0-days and exploits & recovering from consensus failure on a live production network
- Improved the test framework for including re-write of Monero's framework and adding integration tests using IPC over named pipes
- Oxen Website oxen.io
- [1] Git Commits github.com/oxen-io/oxen-core/pulls?q=is%3Apr+author%3Adoy-lee+is%3Aclosed
- [2] Service Nodes oxen.gitbook.io/oxen-docs/about-the-oxen-blockchain/oxen-service-nodes
- [3] Checkpointing github.com/oxen-io/oxen-improvement-proposals/blob/master/LIPS/LIP-3.md
- [4] Pulse github.com/oxen-io/oxen-improvement-proposals/blob/master/LIPS/LIP-5.md
2017 - 2017
C++ Intern Software Engineer, Wargaming Sydney (Game Dev)
Game development company most popular for developing World of Tanks. I was in the tools team assisting with the development of the editor for the asset pipeline.
- Wargaming Sydney wargaming.com
2014 - 2017
B. Computer Science, University of New South Wales
- UNSW unsw.edu.au
Projects Summary
2018 - Present
Dqn: C/C++ personal standard library github.com/doy-lee/dqn
2020
intc: Software u128/256 bit port to C github.com/doy-lee/intc
2020
RaylibSIMD: SIMD Software rendering in C github.com/doy-lee/RaylibSIMD
2017
DTRenderer: 3D Software rendering in C++ github.com/doy-lee/DTRenderer
2017
Math Masher: math game for mobile doy-lee.github.io/luneaustralia
2017
DCHIP8: Chip8 interpreter github.com/doy-lee/dchip-8
2016
Dengine: 2D engine for asteroids github.com/doy-lee/dengine
Projects
2018 - Present
Dqn, C/C++ personal standard library
My personal standard library used in personal projects that focuses on simplicity, transparent data structures void of crazy C++ features with minimal dependencies on the standard libraries. The library is orientated around avoiding unnecessary allocations e.g. minimal calls to malloc and non-pessimized implementations.
- Custom memory routines: arena allocator, virtual memory containers, TLS scratch allocators
- Allocation-less string slices and string manipulation routines
- Linear probed and chained hash tables in 400~ LOC
- Fixed sized arrays and strings containers
- Dqn Repository github.com/doy-lee/dqn
2020
intc, 128/256 bit software implementations in C
intc is a port of calccrypto's uint128/256 library into a single header file library to allow u128/256 calculations. This port is primarily C first and provides C++ helpers like operator overloads that are opt in.
- intc Repository github.com/doy-lee/intc
- calccrypto's uint256_t github.com/calccrypto/uint256_t
2020
RaylibSIMD, Accelerated software rendering using SIMD in C
Raylib is a game-engine by Raysan5 whose main focus is to make game engine programming simple and enjoyable. In this project, I rewrote the software-rendering routine to use SSE2/3 instructions to attain the expected 4x speed-up by taking advantage of data-parallelism offered by SIMD.
- RaylibSIMD Repository github.com/doy-lee/RaylibSIMD
- Raylib Website raylib.com
2017
DTRenderer, 3D software rendering from first principles
DTRenderer is an attempt to build a simple software renderer from the ground up. The main goal is to build an intuitive understanding of graphics mathematics, rendering pipeline and core concepts. It runs as a Win32 program with minimal dependencies.
- 2D Software Rendering
- Alpha Blending
- Bilinear Filtering
- Correct Color Space Pipeline (SRGB <-> Linear)
- Rasterisation
- Texture Mapping
- Translation, Rotation, Scale
- 3D Software Rendering
- Full Bright, Flat, Gouraud Shading
- Orthogaphic, Perspective Projections
- Translation Rotation Scale
- Custom Wavefront Obj Loader (minimal subset)
- Hot Reloadable DLL for Renderer Code (taken from Handmade Hero)
- DTRenderer repository github.com/doy-lee/DTRenderer
2017
Math Masher, Educational math game for mobile
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 management (Trello, minutes meeting, code review etc.)
- Game engine architecture (Gameplay, UI, shopping mechanics, debug)
- Basic sound editing (Compressor, EQuing, normalisation)
- Asset designs (Creating graphical assets with Photoshop)
- Math Masher website (archive copy) doy-lee.github.io/luneaustralia
- Trailer youtube.com/watch?v=AUozUZ8aY7g
2017
DCHIP8, Chip8 interpreter
DCHIP8 aims to emulate the CHIP8 architecture to better understand at a lower level operations between memory, cpu, input and output.
- Fetch, Decode, Execute Opcodes
- Modelling memory, registers and basic CPU architecture
- Software Rendering and interaction with Win32
- Minimal dependencies, single file executable
- DCHIP8 repository github.com/doy-lee/dchip-8
- Specification Sheet devernay.free.fr/hacks/chip8/C8TECH10.HTM
2016
Dengine, Simple 2D game engine for asteroids & minimal dependencies
Dengine is a solo project, 2D game engine developed with OpenGL and low-level libraries in C. The main goal of Dengine is to facilitate learning from many aspects of Computer Science. Alongside Dengine, Asteroids is being built which guides the development of features for the game. Dengine is inspired by Handmade Hero, with a focus on developing as many features with minimal libraries, such that it is not too time-consuming and counter-productive to do so.
- Asset Management (load data into intermediate representations)
- Audio API from OpenAL
- Basic 2D Game Mathematics/Physics (Vector, Trig, Explicit Euler)
- Collision Detection (Single Axis Theorem, Minkowski Sum/Diff, AABB)
- Debug Services & Displays
- Entity Component Systems
- IMGUI Systems
- Input Parsing
- Push-Buffer Memory Systems
- Small Size Array Optimisations
- Standard Library Replacements (e.g. atoi, strlen, itoa, string)
- Texture Atlas Support, Runtime Font Packing
- OpenGL 2D Rendering Pipeline & Batching Render Calls
- Dengine repository github.com/doy-lee/dengine