I like building software end to end, from data pipeline to interface. This desktop is one of those projects.
This website: a macOS desktop in the browser (2026): A faithful macOS desktop experience built with Next.js, Motion and Zustand: window manager, dock with magnification, menu bar, and a full iOS mode on mobile.
Built with Next.js, React, TypeScript, Tailwind CSS, Motion, Zustand.
Wind-optimized road-cycling loops (2026): A tool that builds road-cycling loops aligned to the current wind: ride the first half into the wind and roll home with a tailwind. Wind (Open-Meteo), routing (BRouter) and the loop scoring all run client-side, with an animated MapLibre globe showing a live wind field, opt-in headwind/tailwind colouring, direction arrows and GPX export for Garmin and Komoot. Ships as a keyless static export.
Built with Next.js, React, TypeScript, MapLibre GL, Open-Meteo, BRouter.
Live siteML vs. classic models for day-ahead power prices (2026): Academic project comparing forecasting models for day-ahead electricity prices on the German market, from AR and SARIMA baselines over LEAR, random forests and XGBoost to LSTMs, built on SMARD market data, including a written thesis in LaTeX.
Built with Python, XGBoost, LSTM, LaTeX.
Forecasting hourly bike counts (SL challenge) (2026): Supervised-learning challenge: predicting hourly bike counts at +1h and +24h forecast horizons with linear, tree-based and neural models, with time-series discipline (lag features restricted to the forecast origin, cyclical calendar features) and a reproducible notebook build.
Built with Python, Jupyter, scikit-learn.
Source codeSelf-driving AI code-review loop (2026): Shell harness that automates the review-fix cycle between two AI models: multiple Codex review passes produce prioritized findings, Claude addresses them in single commits, and the loop runs until several consecutive rounds come back clean. Two different models, uncorrelated blind spots.
Built with Shell, Codex CLI, Claude Code.
Slang & lexical diversity across London boroughs (2026): Geospatial analysis of lexical diversity and slang usage across London boroughs, based on geotagged tweets from 2018 to 2022 with a focus on the COVID-19 period: an R pipeline computing lexical metrics (MATTR, MTLD, Shannon/Simpson) joined with census and income data, written up as a paper.
Built with R, Python, GIS, LaTeX.
Seminar paper: slang in London tweets (2025): Seminar paper analysing slang usage in London tweets with R and geospatial visualisation per borough, the compact predecessor of the larger londontwitterpaper project.
Built with R, GIS.