Let's get serious then.
Good afternoon. This section is for employers, admissions officers, and anyone evaluating my work.
Web Development
I've done full-stack development for over 4 years. I build applications that function correctly and perform well. My core stack is React, Next.js, TypeScript, and Tailwind CSS. I have also used vanilla HTML, Astro (this site is a static Astro build), and Vue. I use Zustand for state, Supabase, Firebase, and IndexedDB for databases, and Redis for caching. I have also used Three.js, Monaco Editor, Recharts, and KaTeX. I test with Jest, check cross-browser compatibility with BrowserStack, and check responsive layouts with Polypane.
NLP & Computational Linguistics
On the Deep Past Challenge, a Kaggle competition to translate Old Assyrian cuneiform transliterations into English, our team placed in the top 2% (silver medal). We fine-tuned a byte-level ByT5 sequence-to-sequence model, re-aligned document-level supervision into sentence-level pairs to match the test distribution, and applied metric-aware normalisation and beam-search post-processing optimised for BLEU × chrF++. I have also benchmarked small language models against a Shannon-entropy solver over 6,000 Wordle games with custom rule- and clue-violation metrics, implemented a hybrid BM25 + FAISS retrieval engine over exam papers, and written a paper describing a four-stage ASR pipeline that converts Hakka broadcast media into annotated speech corpora for a six-tone Sinitic language.
Python & Machine Learning
I've written Python for 7 years, focusing on scraping, browser automation, and machine learning. For web-related tasks, I inspect network traffic with DevTools and Burp Suite to write scraping and automation scripts that run quickly and avoid bot detection. For machine learning and reinforcement learning, I use PyTorch to implement DQNs, LSTMs, MDN-RNNs, and CNNs, including diffusion model training on cloud GPUs and work at the Research Institute of Tsinghua University in Shenzhen.
C++
I use C++ exclusively for competitive programming. I do not have the same breadth of software development experience in C++ as in my other languages. I focus on algorithms and data structures for competitions rather than general software development features.
Rust
I use Rust for tooling. My largest project is an interpreter for Cambridge International 9618 pseudocode, with a hand-written lexer, parser, and evaluator supporting records, named pointers, enumerations, bounded multi-dimensional arrays, classes with inheritance, and random-access typed file I/O.
Reverse Engineering
I only work where reverse engineering is legally permitted. For web traffic, I use Burp Suite and Wireshark to intercept traffic and reconstruct undocumented APIs. For Android, I use Ghidra, JADX, Frida, APKTool, and Burp Suite as a proxy, usually inside a virtual machine, to decompile applications and inspect them at runtime. I also analyse binary files with undocumented formats: reading raw hex in ImHex, identifying encryption or compression schemes, and determining the file format.