I work out whether ML systems actually do what the numbers say: LLM evaluation and monitoring, inference performance, and parallel code that holds up on a supercomputer.
Most of my work lives somewhere between ML and systems: training pipelines that actually run fast, parallel code that doesn't embarrass itself on a supercomputer, APIs that hold up under load.
I've just finished an MSc in High Performance Computing with Data Science at EPCC, University of Edinburgh, and I'm now based in Bristol. Before that I built a lightning-prediction research prototype at ISRO's National Remote Sensing Centre and shipped client software in two internships.
I care about the stuff underneath the model: memory, scheduling, latency. If it runs on a cluster, I've probably optimised it.
Measurement studies, research, and deliberate engineering experiments.
Deliberate prototypes and targeted engineering experiments.
An interactive Raft Consensus Cluster visualising elections, replication, partitions, and state recovery.
package raft
import "sync"
type State int
const (
Follower State = iota
Candidate
Leader
)
type LogEntry struct {
Term int
Command string
}
type Raft struct {
mu sync.Mutex
id int
peers []int
state State
// Persistent consensus state
currentTerm int
votedFor int
log []LogEntry
commitIndex int
}
// AppendEntries RPC handles log replication & heartbeats
func (rf *Raft) AppendEntries(args *AppendEntriesArgs, reply *AppendEntriesReply) {
rf.mu.Lock()
defer rf.mu.Unlock()
// Reject outdated leader terms
if args.Term < rf.currentTerm {
reply.Success = false
return
}
// Reset election timer
rf.heartbeatCh <- true
// Truncate logs if conflict exists & append new entries
if len(args.Entries) > 0 {
rf.log = append(rf.log[:args.PrevLogIndex+1], args.Entries...)
}
// Commit and apply to state machine
if args.LeaderCommit > rf.commitIndex {
rf.commitIndex = min(args.LeaderCommit, len(rf.log)-1)
}
reply.Success = true
}
University of Edinburgh · EPCC
Parallel programming on ARCHER2 (the UK national supercomputer), MPI and OpenMP, CUDA, and data science. Dissertation on catching container memory leaks early, evaluated at a fixed false-alarm budget. Submitted August 2026.
ISRO: National Remote Sensing Centre
Trained a ConvLSTM encoder-decoder in PyTorch on WRF weather-model output fused with ground-sensor records of 163,000+ lightning strikes, comparing three architectures, with a React and Leaflet dashboard. Submitted as a research prototype to ISRO's internal research library.
Clustor Computing
One of a team of five on financial time-series reporting. I built ETL stages and the Power BI and Tableau dashboards that five non-technical colleagues used daily, and rebuilt them twice after asking what they actually read. The team's forecasting pipeline reached 84% directional accuracy.
Develoscope Software Solutions · remote, concurrent
Shipped four Java web applications (JSP, Tomcat) to paying clients, taking requirements from them directly and staying on as their support contact after handover.
Microsoft
Valid to 2027Microsoft
Valid to 2027Microsoft
Valid to 2027Microsoft
FundamentalsMicrosoft
FundamentalsGoogle / Coursera
CompletedLooking for someone who can tell you whether a model is really working, and prove it? I'm based in Bristol and open to full-time roles in the UK and remote.