Research & AI Projects
9 projectsOn-Device Gaze & Pupillometry — Real-time & Offline Analysis
Full on-device eye tracking pipeline running entirely from the front camera — no server, no wearable hardware. Re-engineered 6DRepNet on a mobile-optimised RepNeXt-M4 backbone, then ported the 3DeepVOG 3D eye geometry pipeline to Kotlin with GPU-accelerated TFLite.
- Outperforms both 6DRepNet baselines (RepVGG-B1 4.05°, ResNet50 3.97°) with fewer parameters
- Full 3D eye geometry reimplemented in Kotlin; neural components exported to GPU-accelerated TFLite
- Parity test harness caught a geometric sign bug, collapsing gaze error from 73° to ~1e-4°
RayNet — Multi-Task Gaze, Landmark & Pupillometry
Lightweight multi-task network predicting 3D gaze, iris/pupil landmarks, and metric pupil diameter from a single normalised eye image using a RepNeXt + PANet architecture.
- Optical axis prediction with calibratable kappa handling; sub-pixel landmark regression via heatmaps + soft-argmax
- Resolves adversarial multi-task dynamics with gradient-isolated head-pose backbone (6D rotation + 3D translation)
- Production-level dataset pipelines built with MosaicML on Databricks
COVID-19 Detection & Content-Based Image Retrieval
CT scan-based COVID-19 detection using transfer learning on VGG16, combined with a CBIR system that achieves high accuracy using only 18% of features via chi² selection.
- U-Net lung segmentation with CLAHE enhancement and Hounsfield adjustment
- CBIR system achieving high accuracy using only 18% of original features
IMU Chair Stand Test Biomedical Toolkit
Android app + MATLAB pipeline for clinical chair stand test analysis using IMU sensor fusion.
- 100Hz+ sensor sampling via low-level Android API
- Kalman filter-based sensor fusion and quaternion-based world coordinate rotation
- Algorithm for removal of gravity vestiges from raw acceleration signal
OpenFace Real-Time Extension
Extended OpenFace to stream real-time head pose and gaze vectors via WebSocket, enabling integration with external systems without modifying the core library.
Audio Source Separation in Music
Vocal extraction model using bidirectional LSTM with STFT processing and mask-based source separation. Data augmentation addressed the scarcity of labelled open-source music datasets.
Process Mining for Emergency Department Optimization
Applied process mining to real ED event logs to discover, analyse, and redesign patient care pathways — combining multi-objective model selection with patient clustering to surface actionable, cluster-specific recommendations.
- Pareto-based multi-objective optimisation across 27 process model configurations (Inductive, Heuristics, Alpha Miner), selecting the best model at F1 = 0.933 and generalisation = 0.974
- K-Medoids clustering with Hamming distance on 12-dimensional binary clinical profiles reduced the variant space by 76% (1,000+ → 238 patterns), enabling cluster-specific process redesign
Decision Trees ML Library
scikit-learn-compatible implementation of ID3, CART, and C4.5 decision tree algorithms, plus a RandomForest built from scratch with Bayesian hyperparameter tuning and multi-threading.
Professional Work
3 roles- Real-time football tracking visualization at 60fps with interpolation algorithms
- Cross-platform app for football analysis and player clustering; WebCodecs API for MP4/WebM export
- Lightweight temporal models for trajectory prediction in-browser via WebGPU acceleration
- Football analysis workspace integrated with LLMs using MCP servers (OpenRouter, OpenAI)
- Secure WebSocket server with custom RSA/AES handshaking protocol and key rotation
- Security assessments identifying DDoS/MITM vulnerabilities; on-site server maintenance
- Football tracking/event data pipeline using MosaicML for production-level temporal model training
- Trajectory prediction models and tokenisation of football actions for LLM analysis
- Inverse Reinforcement Learning (IRL) for detection of explainable football tactics
- Business automation tools and CRM integration with server-side rendering
- Customisable recruitment chatbots and a React.js rich-text editor library
- Express.js/MongoDB backend for complex sensor queries; Arduino microcontrollers with custom drivers (CO2, smoke, humidity)
- Android app for real-time sensor data visualisation via WebSocket
- Cross-platform medical app with Android native module for Google Maps pathfinding
- Film festival app with live streaming via NGINX RTMP/FFMPEG and MPEG-DASH playback [GitHub]
- Cross-platform trivia quiz app for real-time competitions [GitHub]
- Live streaming microservice with NGINX RTMP authentication and FFMPEG encoding
- Ported an Android messenger app to desktop (Java) for deployment of containerised bots
Systems & Infrastructure
3 projectsIaC Provisioning of MooseFS + Web File Manager
Fully automated 4-node MooseFS distributed storage cluster on bare-metal KVM using Terraform/Libvirt and cloud-init — no public cloud dependency.
- Deterministic, version-controlled deployment with cloud-init hostname/IP/service bootstrapping
- Microservice-based web file manager: stateless FastAPI backend + React.js frontend
Distributed Storage in Bare-Metal Kubernetes
Bare-metal Kubernetes cluster with automated VM provisioning via Terraform/Libvirt, Longhorn distributed storage, and MongoDB replicaset for high availability.
Meckz — Online Multiplayer Game Netcode
Real-time multiplayer netcode for a Unity3D game, built in Go with Reliable UDP, dead reckoning for lag compensation, and NAT hole punching for peer-to-peer connections.
- Binary game-state encoding with Flatbuffers for minimal packet size
- NAT hole punching to bypass routers without port forwarding
Early Career
2012HTC Sense 2.1 Port
Cross-manufacturer ROM port from HTC Hero to Samsung Galaxy Gio. One of the earlier community contributions to Android custom ROM development.
Custom Kernel — Undervolting Mechanism
Advanced undervolting kernel for battery optimisation, compatible with CM7, AOSP, and Stock ROMs.