Notable Projects

Adding an NVIDIA OptiX-based Ray-Tracing Propagation Model to FERS

2026
  • GPU Programming
  • C++23
  • Radar
  • Optics
  • Electromagnetics

Refactoring FERS for alternative propagation models and adding a Geometric Optics model implemented with GPU-accelerated ray tracing for advanced radar simulation of environments including complex terrain, cluttered environments, occlusion, multi-bounce propagation.

Adding an NVIDIA OptiX-based Ray-Tracing Propagation Model to FERS

  • GPU Programming
  • C++23
  • Radar
  • Optics
  • Electromagnetics

Overview

Refactoring FERS for alternative propagation models and adding a Geometric Optics model implemented with GPU-accelerated ray tracing for advanced radar simulation of environments including complex terrain, cluttered environments, occlusion, multi-bounce propagation.

Talc: A Dynamic Memory Allocator for Embedded & WebAssembly

2024
  • Rust
  • Memory Management
  • Efficient DSA
  • Virtual Memory
  • WebAssembly

Crates.io Downloads Stars docs.rs A dynamic memory allocator designed to maximize performance and efficiency while being small and flexible enough for use on a wide variety of systems. Talc was created to address a niche in the Rust community that wasn't filled well at the time, and become popular as a result. View Details

Talc: A Dynamic Memory Allocator for Embedded & WebAssembly

  • Rust
  • Memory Management
  • Efficient DSA
  • Virtual Memory
  • WebAssembly

Overview

Crates.io Downloads Stars docs.rs A dynamic memory allocator designed to maximize performance and efficiency while being small and flexible enough for use on a wide variety of systems. Talc was created to address a niche in the Rust community that wasn't filled well at the time, and become popular as a result.

Key Objectives

  • Fill the gap of a fast and efficient allocator with flexible heap management.
  • Originally developed the allocator algorithm for my hobby OS unikernel.
  • Eventually I pivoted towards making Talc's flexibility usable by anyone.
  • Now, I pursue keeping Talc a top-performing allocator and maintaining it.
Talc random actions performance matrics
Random actions benchmarking
Talc heap efficiency benchmarking
Heap efficiency benchmarking
Talc random actions performance matrics
Random actions benchmarking
Talc heap efficiency benchmarking
Heap efficiency benchmarking

Pipelined Processor Design & Implementation

2026
  • RTL Design
  • Verilog
  • CPU Optimisations
  • High-Performance Systems

Proposed and implemented a fully pipelined custom processor in Verilog, beyond the scope of the course. Includes branch prediction, data hazard mitigation, flush minimisation, and critical path optimisation.

Pipelined Processor Design & Implementation

  • RTL Design
  • Verilog
  • CPU Optimisations
  • High-Performance Systems

Overview

Proposed and implemented a fully pipelined custom processor in Verilog, beyond the scope of the course. Includes branch prediction, data hazard mitigation, flush minimisation, and critical path optimisation.

Custom Reliable Transport Protocol, Media Access Control, and GUI

2026
  • Rust
  • GUI
  • UX
  • Robust Networking
  • LoRA
  • ESP-NOW
  • Embedded Systems

Subsystem for Antarctic remote data extraction module. Designed, implemented, and tested a custom network stack for long-distance LoRa communication and bulk ESP-NOW transfers at range. Developed a rugged, user-friendly GUI. Designed for low-connectivity and extreme Antarctic conditions.

Custom Reliable Transport Protocol, Media Access Control, and GUI

  • Rust
  • GUI
  • UX
  • Robust Networking
  • LoRA
  • ESP-NOW
  • Embedded Systems

Overview

Subsystem for Antarctic remote data extraction module. Designed, implemented, and tested a custom network stack for long-distance LoRa communication and bulk ESP-NOW transfers at range. Developed a rugged, user-friendly GUI. Designed for low-connectivity and extreme Antarctic conditions.

InfiniRail: A Complete Game Made in 96 Hours with Talented Friends

2025
  • C#
  • Godot
  • Game Design
  • Teamwork
  • Full Product Launch

Dusting off the game and graphics programming skills with C# and Godot for GMTK 2025. I convinced two talented friends to join me, Lulama Lingela (3D art) and Michael Dickinson (3D art & audio) without which this would not have been possible. View Details

InfiniRail: A Complete Game Made in 96 Hours with Talented Friends

  • C#
  • Godot
  • Game Design
  • Teamwork
  • Full Product Launch

Overview

Dusting off the game and graphics programming skills with C# and Godot for GMTK 2025. I convinced two talented friends to join me, Lulama Lingela (3D art) and Michael Dickinson (3D art & audio) without which this would not have been possible.

Key Objectives

  • Design and deliver a novel, fun, and complete puzzle game for GMTK 2025.
  • Engineer a dynamic puzzle concept with good UX while retaining challenge.
  • Achieve good scores in the community ratings in all applicable measures.
  • Patch the game post-jam to refine the game into its final state.
InfiniRail start screen
Opening scene of InfiniRail
InfiniRail
InfiniRail Level 4 "Lock Step"

Digital Logic Design & Implementation of 64-bit RISC-V Processor

2022
  • Digital Logic
  • CPU Arch
  • ISA Implementation
  • Gate-level Optimisation

Built a functional RISC-V processor in a digital logic simulator, including a Brent-Kung carry-lookahead adder and Dadda tree multiplier. Set up C and Rust toolchains, ran algorithms, and verified output. Done independently in high school.

Digital Logic Design & Implementation of 64-bit RISC-V Processor

  • Digital Logic
  • CPU Arch
  • ISA Implementation
  • Gate-level Optimisation

Overview

Built a functional RISC-V processor in a digital logic simulator, including a Brent-Kung carry-lookahead adder and Dadda tree multiplier. Set up C and Rust toolchains, ran algorithms, and verified output. Done independently in high school.

Infrared 2: A master-ish level chess engine in Rust

2022
  • Rust
  • Thread Management
  • Bit Twiddling
  • Instruction-level Optimisation

I endeavoured to deepen my Rust and x86_64 knowledge through an optimised chess engine implementation for x86_64-v3, improving on my old C# implementation in many ways. View Details

Infrared 2: A master-ish level chess engine in Rust

  • Rust
  • Thread Management
  • Bit Twiddling
  • Instruction-level Optimisation

Overview

I endeavoured to deepen my Rust and x86_64 knowledge through an optimised chess engine implementation for x86_64-v3, improving on my old C# implementation in many ways.

Key Objectives

  • Create a master-level chess engine using minimax with alpha-beta pruning-based techniques.
  • Improve at Rust, systems-level, and performance-sensisitive programming.
  • Implement magic bitboards with and without BMI2 PEXT/PDEP, sliding attack table generation, transposition tables, PVS/NegaScout + MVV-LVA, iterative deepning, killer move heuristics, futility pruning, null move pruning, quiescence search, delta pruning, piece-square tables, opening book generation from historical grandmaster games, support Syzygy endgame tablebases.
  • Efficiently thread the above implementation to fully utilize multicore CPUs while handling asynchronous Universal Chess Interface protocol commands for use with chess GUIs and engine v engine games.