Projects / Built and shipped

Work across different layers.

Products, research tools, and engineering experiments. Each project has its own constraints and a story about the decisions behind it.

Project 01SvelteKit / Svelte 5 Runes

SortPedia: The Interactive Sorting Algorithm Encyclopedia

An interactive encyclopedia for 30+ sorting algorithms, featuring a real-time visualizer, side-by-side racing, and a browser-based performance benchmark engine.

SvelteKitSvelte 5 RunesTypeScriptTailwindCSSWeb WorkersKaTeX
Explore engineering notes

Overview

SortPedia is a modern, interactive encyclopedia that bridges the gap between abstract computer science theory and intuitive visual understanding. It allows users to watch, race, and benchmark over 30 sorting algorithms—from industry standards like Quick Sort to esoteric ones like Thanos Sort—directly in the browser, providing a comprehensive educational tool for students and developers.

Objectives

  • Develop an interactive visualizer to render algorithm execution step-by-step, with full playback controls (play, pause, step forward/backward, speed adjust).
  • Implement a side-by-side 'Algorithm Racing' feature to visually compare the performance, stability, and access patterns of any two algorithms on identical datasets.
  • Build a performance benchmarking tool using Web Workers to run thousands of iterations off the main thread, measuring raw execution time without freezing the UI.
  • Create a comprehensive library for each algorithm, complete with LaTeX-rendered complexity analysis, detailed explanations, and clean, copy-pasteable JavaScript implementations.

Core challenge

The primary technical challenge was capturing the precise state of an algorithm at every critical operation (e.g., a comparison or a swap) to enable step-by-step visualization. This was solved by implementing each sorting algorithm as a JavaScript Generator Function (function*). This approach allowed the sorting logic to yield control back to the visualizer engine at each step, passing a detailed event payload that described the operation performed. This enabled robust and accurate playback, pausing, and stepping capabilities without complex state management or code instrumentation.

Project 02C++23 / Rust

The Flexible Extensible Radar Simulator (Masters)

A comprehensive suite of tools for signal-level radar simulation including a C++23 core and React/Tauri UI.

C++23RustTauriReactTypeScriptCMake
Explore engineering notes

Overview

FERS is a signal-level radar simulator structured as a monorepo containing a high-performance C++23 simulation engine (libfers) and a modern desktop UI (fers-ui). It enables the construction and visualization of complex radar scenarios with a unified event-driven architecture.

Objectives

  • Modernize the legacy C++98 engine to C++23 with a unified event-driven architecture.
  • Develop a cross-platform desktop UI using Tauri and React for scenario visualization.
  • Implement a stable C-API and XML schema contract for interoperability.
  • Ensure high-performance simulation of mono/multistatic and pulsed/CW systems.

Core challenge

Balancing performance optimizations with code maintainability during the modernization process. Designing an intuitive UI that effectively visualizes complex radar scenarios and data.

Outcome

Successfully designed and implemented a modern radar simulation suite with significant performance improvements and an enhanced user experience. The project demonstrated the viability of using modern C++ and web technologies for complex simulation tasks.

Project 03Flutter / Dart

RainVu: Rainfall Logger & Analytics

A modern Flutter app for tracking rainfall data with powerful local-first analytics.

FlutterDartRiverpodSQLiteFirebase
Explore engineering notes

Overview

RainVu is a privacy-focused mobile application for farmers and weather enthusiasts to log and analyze rainfall data. It features a local-first architecture using Drift (SQLite) for offline capability and custom charting for historical analysis.

Objectives

  • Build a robust local-first architecture using Drift and Riverpod.
  • Implement complex analytics for MTD/YTD totals and seasonal trends.
  • Ensure data portability with JSON/CSV export and import features.

Core challenge

Designing a responsive charting interface that handles large historical datasets smoothly on mobile devices. Managing complex state synchronization between local databases and UI states.

Outcome

Released a fully featured app with secure local storage, diverse chart visualizations, and a seamless user experience across Android and iOS platforms.

Project 04C++20/23 / GitHub Actions

Modernising the FERS Software Package (Undergrad)

Dragging a legacy radar simulator (FERS) from C++98/03 into the C++20/23 era.

C++20/23GitHub ActionsCMakeValgrindHDF5
Explore engineering notes

Overview

This project focused on updating the Flexible, Extensible Radar Simulator (FERS) to meet modern C++ standards. Originally developed in C++98/03, FERS is a vital tool for the Radar and Remote Sensing Group at UCT. The modernization enhanced performance, readability, and maintainability.

Objectives

  • Upgrade codebase to C++20/23 features (concepts, ranges, modules).
  • Implement performance optimizations (multithreading, smart pointers).
  • Ensure backward compatibility for simulation integrity.
  • Conduct thorough regression testing and profiling.

Core challenge

Ensuring backward compatibility while refactoring core memory management logic. Managing complexities of new C++ features and mitigating regression risks during extensive overhauls.

Outcome

Achieved speedups ranging from 1.46x to 3.55x. Eliminated memory leaks via smart pointers. Achieved 90.5% line coverage and 95.8% function coverage in regression testing.

CPU Usage
Figure 1: CPU Usage Comparison
Speedups
Figure 2: Speedup Benchmarks
Project 05C / Python

Encryption and Compression on Resource-Constrained Embedded ARM MCs

Implementing LZSS compression and Blowfish encryption on an STM32 chip for Antarctic buoys.

CPythonSTM32 HALAssembly
Explore engineering notes

Overview

Designed for secure data transmission from Antarctic sensor buoys over the Iridium satellite network. The goal was to minimize transmission costs via compression while ensuring data security.

Objectives

  • Implement LZSS compression and Blowfish encryption on STM32F051.
  • Ensure data integrity with CRC-32 checksums.
  • Optimize for extremely limited memory and processing power.

Core challenge

Limited memory (8KB RAM) and 48MHz clock speed restricted algorithm choices. Debugging logic errors between Python prototypes and C firmware implementation.

Outcome

Achieved average compression ratio of 1.812 and encryption throughput of ~910 bytes/sec. Successfully validated against acceptance test procedures.

System Diagram
Figure 1: System Operation Diagram
Compression Stats
Figure 2: Compression Speed Graph
Encryption Stats
Figure 3: Encryption Speed Graph
Project 06C++ / OpenCL

Comparative Analysis and Optimization of MD5 & MD6 Hashing Algorithms

A digital cage match pitting MD5 against MD6 using C++, OpenCL, and Verilog.

C++OpenCLVerilogVivado
Explore engineering notes

Overview

Evaluated the performance trade-offs between software (C++), parallel computing (OpenCL), and hardware acceleration (Verilog) for cryptographic hashing.

Objectives

  • Implement MD5 (sequential) and MD6 (parallelizable) across all platforms.
  • Benchmark execution time and throughput.
  • Analyze the efficiency of GPU offloading vs FPGA synthesis.

Core challenge

MD5 is inherently sequential, limiting parallel gains. OpenCL implementations faced bottlenecks in kernel data transfer. Verilog implementation was fast but limited by input size constraints.

Outcome

Parallel C++ MD6 achieved significant speedups on multicore CPUs. Verilog MD5 was fastest for small inputs but lacked flexibility. OpenCL proved overhead-heavy for this specific workload.

Execution Time
Figure 1: Execution Time Analysis
Throughput
Figure 1: Throughput Analysis
Project 07C++ / Arduino

Enviro-Sense: Biomonitoring Grid for Apex Predators

Wireless sensor grid using ESP32 and Pi Zeros to monitor raptor nesting sites.

C++ArduinoRaspberry PiESP32
Explore engineering notes

Overview

A low-cost Wireless Sensor Network (WSN) designed to monitor temperature and humidity at remote raptor nesting sites to aid conservation efforts.

Objectives

  • Develop a cost-effective monitoring node (<$20).
  • Ensure reliable wireless transmission to rendezvous nodes.
  • Maximize battery life via deep-sleep cycles.

Core challenge

Balancing cost vs. data accuracy. Managing power budgets for long-term deployment without maintenance. Ensuring data integrity over lossy wireless links.

Outcome

Prototype successfully gathered and transmitted accurate telemetry. Validated low-power operations suitable for field deployment.