A mix of full-stack, embedded ML, and systems work — the common
thread is making something actually run end-to-end. Some of
these have public repos; a few are from coursework and live
only in my archive.
A full-stack web app for tracking pulse, blood pressure, weight, and free-text notes — with interactive charts and one-click CSV export for sharing with healthcare providers.
- Provisioned a Hetzner Cloud VPS and configured Nginx as a reverse proxy with HTTPS on a custom subdomain.
- Modelled the data layer in Appwrite (collections, access rules, auth) behind a lightweight backend API.
- Interactive charts help users spot trends over time.
Full-stack
Hetzner
Nginx
Appwrite
HTTPS
High-performance custom kernels for Huawei Ascend NPUs, built on the PTO (Parallel Tile Operation) virtual ISA from Ascend CANN. Tile-level operations for efficient, composable kernel development. I contribute to the upstream project as part of my work at Huawei Research.
- C++ kernel sources with Python bindings, packaged as an installable wheel.
- Build system via CMake; kernels target the Ascend AI processor family.
C++
CANN
AscendC
PTO-ISA
A cross-platform Discord Rich Presence integration for Plex Desktop — shows what you're watching as your Discord status. No external dependencies. I maintain this fork since the upstream has gone quiet.
- Cross-platform, single-binary Go build.
- Customizable via a
client_id parameter for swapping the Rich Presence assets.
Go
Discord RPC
Plex
A keyword spotting model trained on Google Speech Commands v2 and quantized to fit on a resource-constrained microprocessor.
- 93% accuracy on Speech Commands v2.
- Reduced model size to 173 KB via 8-bit quantization.
- Deployed on the MAX78000 with 1850 µs inference time.
PyTorch
Quantization
MAX78000
TinyML
A MIPS simulator written in C, supporting custom instruction execution, cache simulation, and a memory hierarchy — built to study real performance trade-offs.
- Integrated L1 and L2 caches, instruction prefetching, and a simulated processing-in-memory (PIM) architecture.
- Configurable cache policies and stall handling for realistic system-level behaviour.
C
Computer Architecture
Cache Hierarchies
PIM
A DistilBERT-based sentiment classifier fine-tuned on the IMDb dataset, with tokenization and preprocessing via Hugging Face Transformers.
- 87% validation accuracy on IMDb.
- Hugging Face tokenizers + DistilBERT backbone.
PyTorch
DistilBERT
Hugging Face
NLP
An image classification model trained on CIFAR-10 with preprocessing and data augmentation to improve generalization.
- 98% accuracy on CIFAR-10.
- Augmentation pipeline tuned for training stability.
PyTorch
Computer Vision
CIFAR-10