ML Engineer · Builder · Curious by nature

Alex Mathew John

Senior ML Engineer at AsmiovX

I dive in first and figure out the tools as I go. My work is in computer vision and on-device ML, but the curiosity goes much wider than that. I like understanding how things work at the level below where most people stop, and building things that actually matter to me.

What's here
Technical domains
Computer Vision On-Device ML Neural Architecture Design Physics Simulation Camera Geometry CoreML / iOS Deployment PyTorch · TensorFlow AWS Infrastructure Self-Hosted Systems Data Engineering

Based in Kerala, India. Open to interesting conversations.

Projects

What I build

Professional work, personal tools, and infrastructure. All built by figuring things out along the way.

Professional
Experience & Education
💼 Work
August 2022 – Present
Senior Machine Learning Engineer
  • Built a real-time golf shot analysis platform from scratch as part of a two-person team. No prior models, datasets, or benchmarks existed
  • Designed and implemented a 6-stage on-device inference pipeline: ball detection, impact classification, flight segmentation, 3D speed and angle computation, physics simulation, and CoreML deployment
  • Achieved sub-5% error against professional-grade launch monitors (Foresight GC2/GC3) at sub-5ms inference on iPhone
  • Built the full camera calibration system, per-device distortion profiles, and 5 independent distance estimation methods benchmarked across thousands of shots
  • Designed data infrastructure on AWS (S3 + DynamoDB), automated dataset generation pipelines, and a 5-path evaluation framework
🎓 Education
September 2021 – December 2022
MSc in Data Science · 2:1
University of Exeter, UK
Postgraduate study in machine learning, statistical modelling, and data engineering. Graduated with a 2:1.
💼 Work
March 2020 – July 2021
AI Engineer
Accubits Technologies
  • Built face mask detection system using ResNet50, 25K samples per class, 96% accuracy, with automated data collection and augmentation pipelines
  • Developed food image classification pipeline with automated labelling, improving model accuracy by 20% over baseline
  • Deployed ML inference services on AWS using Docker, Lambda, and EC2 for scalable, production-grade serving
🎓 Education
2015 – July 2019
B.Tech in Computer Science
APJ Abdul Kalam Technological University, Kerala
Undergraduate degree in computer science and engineering.
Personal
Moirai
Live · self-hosted on NAS

A local-first, privacy-focused journaling app with AI-powered insights. Rich markdown editor, voice transcription via Whisper, mood analytics, semantic search, and weekly reflections. Works fully offline, with optional LLM integration for analysis. PWA-installable, multi-user, 7 colour themes.

Next.js · TypeScript SQLite · Drizzle Whisper · LLM Personal
ExpenseTracker
Live · self-hosted on NAS

Built because I wanted something that actually fit how I track money, without my data sitting on someone else's server. Multi-account, investment tracking, Plotly dashboards, 7 colour themes. Runs on my own hardware.

Python · Flask .xlsx storage Plotly Personal
This Site
Live · l3xj.com

This site started as a homelab documentation project and grew into a full portfolio. Interactive infrastructure diagram, machine catalogue, live uptime status — all in a single HTML file I own and run myself.

HTML · CSS · JS Single-file nginx · VPS Personal

More in the works, watch GitHub.

Lab

Home Lab

Five machines, a private WireGuard mesh, and 30+ self-hosted services running at home. Part practical, part curiosity. Understanding how things work by running them yourself.

💡
What's a homelab?

A homelab is personal infrastructure you run at home. Instead of relying on cloud services like Google Drive or Netflix, you run your own versions on hardware you own and control. For me it started as a storage experiment and became something much bigger: a way to understand how the internet actually works from the inside.

5
Machines
30+
Services
33
CPU Cores
73 GB
Total RAM
~49 TB
Raw Storage
,
Status
Machines
VPS
Public IP
WireGuard hub & reverse proxy, the only public-facing machine
1 vCPU · 1GB RAM · 20GB SSD
nginx WireGuard Hub Ntfy Uptime Kuma
NAS
Primary Host
Main container host, bulk storage, and GPU transcoding
Ryzen 5 · 6c/12t · 32GB DDR4 · RTX A400 · 32TB ZFS RAIDZ1
Jellyfin Immich Nextcloud Vaultwarden Paperless +20 more
Mini PC
Monitoring
Always-on monitoring node and alert bridge
AMD GX-series · 4c/4t · 8GB DDR3 · low power draw
Prometheus Grafana Mailrise Homarr
Daily Driver
Dev + ML
Main development machine and ML training workstation
Core i9 · 16c/24t · 16GB DDR5 · RTX 4080 Mobile 12GB
PyTorch + CUDA node-exporter nvidia-exporter
Proxmox Server
Local AI
Old gaming laptop repurposed as a Proxmox hypervisor for local LLM inference
Core i7-8750H · 6c/12t · 16GB DDR4 · GTX 1060 6GB · LAN only
Proxmox Debian LXC llama.cpp Windows VM
Services
Jellyfin
Self-hosted media server. Movies, TV, and music to any device, GPU-accelerated transcoding via the RTX A400.
Media
Immich
Self-hosted Google Photos replacement. ML-powered face recognition, map view, automatic mobile backup.
Media
Jellyseerr
Media request frontend. Users browse and request content , automatically routed to the download pipeline.
Media
Jellystat
Analytics for Jellyfin. Watch history, user activity, stream quality tracking over time.
Media
Nextcloud + Collabora
Self-hosted Google Drive + Docs. File sync across all devices, in-browser document editing.
Cloud
Vaultwarden
Bitwarden-compatible password manager. All credentials stored locally, nothing leaves the homelab.
Cloud
Paperless-NGX
Document management with OCR. Scans, indexes, and tags documents automatically, full-text searchable.
Cloud
ExpenseTracker
Custom-built personal finance tracker. Multi-account, investment tracking, Plotly dashboards, 7 themes.
Custom-built
Sonarr + Radarr
Automated TV and movie library managers. Monitor feeds, grab releases, rename and move to Jellyfin.
Automation
Prowlarr
Centralised indexer manager. Single config synced automatically to Sonarr and Radarr.
Automation
qBittorrent + Gluetun
Download client inside a VPN network namespace. VPN kill-switch enforced at the container level.
Automation
Open WebUI
ChatGPT-style interface backed by llama.cpp on the Proxmox Server. Fully local, no external API calls.
Local AI
llama.cpp
LLM inference engine in a Debian LXC on Proxmox. GPU-accelerated via GTX 1060, serves Open WebUI over LAN.
Local AI
Prometheus + Grafana
Metrics stack on Mini PC. Scrapes 5 exporters every 15s, 90-day retention. Grafana dashboards + alerting.
Monitoring
Ntfy
Self-hosted push notification server on the VPS. Central hub for all alerts: ZFS, metrics, uptime, media requests.
Monitoring
Uptime Kuma
Service uptime monitor with a public status page. Fires push notifications on any state change.
Monitoring
Pi-hole
Network-wide DNS ad-blocker. All LAN devices benefit automatically via router DHCP, zero per-device setup.
Monitoring
WireGuard Mesh
Hub-and-spoke VPN connecting all machines. All inter-machine traffic is encrypted, including Prometheus scraping and nginx proxying.
Infrastructure
nginx
Reverse proxy on VPS. TLS termination for all *.l3xj.com subdomains via Let's Encrypt wildcard cert.
Infrastructure
Dockhand + Hawser
Centralised Docker management UI. Manages containers across all 5 machines via WireGuard-only agent endpoints.
Infrastructure
Architecture

Interactive infrastructure map. Click any element for details. Hover a legend item to highlight related components.

checking... · services · uptime 24h · checked
◆ status page →
Internet
VPS
WireGuard
LAN · Machines
Media
Cloud
Automation
Infra
AI
◈ INTERNET l3xj.com  ·  Public DNS  ·  Let's Encrypt  →  VPS nginx
▣ VPS 1 vCPU  ·  1GB RAM  ·  20GB SSD 10.x.x.1
nginx
reverse proxy · TLS termination · wildcard cert
WireGuard Hub
mesh VPN · 10.x.x.0/24 · 3 peers
Ntfy
push notification server · 4 topics
Uptime Kuma
status monitoring · public status page
WireGuard Mesh  ·  10.x.x.0/24  ·  All traffic encrypted
LAN  ·  192.168.1.0/24
Mini PC WG
AMD GX-series · 4c/4t · 8GB DDR3
Monitoring Prometheus Grafana
Services Mailrise Homarr
Agents node-exporter Hawser
NAS WG
Ryzen 5 3600 · 6c/12t · 32GB DDR4 · RTX A400
Media Jellyfin Immich Jellyseerr Jellystat
Automation Sonarr + Radarr Prowlarr qBittorrent Gluetun VPN
Cloud Nextcloud Vaultwarden Paperless-NGX ExpenseTracker
Infra Pi-hole Dockhand node-exporter nvidia-exporter
AI Open WebUI → Proxmox Server
pool-1: RAIDZ1 · 3×12TB IronWolf + NVMe L2ARC
Daily Driver WG
Core i9 · 16c/24t · 16GB DDR5 · RTX 4080 Mobile
Agents node-exporter nvidia-exporter Hawser
ML Workload PyTorch + CUDA OpenCV
Storage SMB → NAS pool-2
Proxmox Server LAN
Core i7-8750H · 6c/12t · 16GB DDR4 · GTX 1060 6GB
Hypervisor llmgpu LXC (Debian) Windows VM
LLM Stack llama.cpp GPU inference
LAN only · not on WireGuard mesh

    About

    Engineer and tinkerer

    Most of my life I've been a pattern finder. Give me something new and I'll have a mental map of it before I've read the manual.

    Professionally I work in computer vision and on-device ML. For the past few years that's meant being part of a small team building a real-time golf shot analysis system with no prior art to reference. Every component had to be figured out from scratch. It was a hard problem and it got solved.

    Outside of work, the same instinct takes over. What started as a small NAS slowly turned into a full self-hosted network. I run it for data privacy and control, but the deeper reason is wanting to understand how the internet actually works at a granular level. How systems talk to each other, where things break, what's happening under the hood.

    When in doubt, dig deeper. What does the physics actually look like? How does the network actually decide? That curiosity is what drives everything.

    Currently
    Senior ML Engineer at AsmiovX, based in Kerala, India. Building computer vision systems for sports and exploring whatever interesting problem comes up next.