Christian Juresh

London, UK

I’m a software engineer on an integration team, shipping work end to end — backend, platform and frontend.

Clivia in bloom
30 St Mary Axe, London
Kew Palm House glasshouse
Red pomegranate blossom
Dome of St Paul’s Cathedral
Hanging catkins, Kew Gardens
Riverside towers through a telescope
White blossom
Red Thames Clipper on the river
Spiral aloe succulent
Tower of London turret with a Union flag
White umbel flowers
Domed building framed through a window
Pink anthurium flower
Curving railway tracks
Cherry blossom branch
White observation tower against the sky
Sunset over the rooftops
Cross-shaped arrow slit in a stone wall
Ornate turret with flowers
Treetop walkway, Kew Gardens
Port of London Authority building beside a crane
Shipping cranes at the docks
Bare tree against a blue sky
The Shard with a passing plane
The moon in a dark sky
Statue of an archer atop a tower
Contrails over rooftops at dusk
Glass towers of the City of London
Hazy countryside view
The Shard beyond rooftops, with a train
The moon above a tree at dusk
Canal and skyline
St George Wharf towers, Vauxhall
The London Eye across the Thames
Riverside skyline from the water
A single rose in low light
Kew Palace and lawn
citizenM hotel facade
Red flower in shade
White umbel flowers
White blossom
Red-brick lodge, Kew Gardens
Glasshouse across the gardens
Deckchair in the park
Kayakers on the river
Modern glass building
White office building
City office buildings
Countryside view
Countryside view
The London Eye from the water
Glass roof, London

Work Experience

Third Bridge Group LimitedThird Bridge GroupThird Bridge2024–Present

Royal College of RadiologistsRCR2022–2024

Education

BSc (Hons) Computer Science, QMULBSc Computer Science, QMULBSc Comp Sci, QMULComp Sci, QMUL1st · 82%2021–2024

Contact

Projects

Projects

Self-stackingphoto gallery

Twenty years of photographs had turned into 1,374,328 file paths across overlapping backups. I built the system that reduced them to one library holding a single copy of every file, and a website that browses it and stacks repeat shots of the same moment into one. The rule for what counts as a repeat was tuned against my own judgements, and changed when the results stopped matching what I wanted.

  1. Tuned on my own labels

    Stacking set from photos I sorted by hand: 97.0% precision, 93.2% recall

  2. Two-pass duplicate matcher

    Screens 3,632,211 pairs fast, then checks 566,522 point by point

  3. Safe, verified deletion

    Each delete logged first, then all 435.6 GB re-hashed to check

  4. Instant triage rules

    1,374,328 paths re-checked in 220 ms

Projects

Every Eaterguide inLondon onone map

Eater's London guides are superb but scattered across hundreds of articles, each with its own small map. This collects all of them, merges the duplicates into one entry per restaurant, and puts them all on one map you can install on your phone. Put it in airplane mode on the Underground and it all still works.

The Eater map over Soho and Covent Garden, restaurants marked across it and the rail network drawn over the streets in the lines’ own colours.
  1. Search

    Find any of 2,336 restaurants by name, guide, address or description, or jump straight to a place in London.

  2. It works on the Tube

    About 90 MB of map is stored on the phone. Browsers cannot serve part of a stored file, so the app’s service worker slices out the pieces itself.

  3. Every rail line

    The whole rail network in each line’s official colour. Where lines share track they are drawn side by side, so none hides another.

  4. One record per restaurant

    4,043 guide entries merged into 2,336 restaurants; 665 of them carry write-ups from more than one guide.

Other work

Tools for the home server, tools for the way I work, and two pieces of coursework.

  1. The Record Engine’s dark interface previewing a scroll of an example page, with a frame scrubber underneath and sliders for the motion’s timings on the right.

    Record Engine

    2026TypeScript · Chrome DevTools Protocol · ffmpeg

    A screen recording of a website cannot be taken twice: the next time the page changes, so do the scroll, the timing and the take. Here the motion is committed as TypeScript and the capture is deterministic. Chromium is stepped one compositor frame at a time over the raw DevTools socket, since Playwright cannot pass the flag that needs, and ffmpeg encodes the frames. 23,600 lines, one dependency.

    Source
  2. Film Index in dark mode: a filter sidebar of decades, colour and genre beside a grid of posters with gold rank badges, led by Citizen Kane, Vertigo, 2001: A Space Odyssey and Tokyo Story.

    Film Index

    2026SvelteKit · SQLite · Rust · Tauri

    They Shoot Pictures, Don’t They? ranks 26,552 films, and no streaming service carries more than a fraction of them. Film Index turns the list into a private cinema: browse and filter the ranking, track what each of us has watched, send a film to the home library in one click, and play it in the browser through the server’s GPU or natively in mpv. The public demo is the catalogue half, with the home server switched off.

    Live demo
  3. The TF2 Cosmetics Catalogue: a grid of Team Fortress 2 characters rendered wearing hats and cosmetics, each priced in keys, refined metal and dollars, beside filters for class, slot, price and sort order.

    TF2 Cosmetics Catalogue

    2026Next.js · Blender · Cloudflare Workers

    Every Team Fortress 2 cosmetic, worn on a class, with its trade price in dollars and in keys. The wiki’s pictures stay on the wiki, so it renders its own in Blender, from the game’s own models. Paste a Steam profile and it shows only what you own, through a Worker that holds no API key. A non-commercial fan project, built in two days by agents working its own issue board.

    Live site
  4. The JD Review Form: a checklist of a job description’s requirements, each with a tick for present, a page reference, the Trust’s evidence note and a box for the College’s comments.

    RCR Job-Plan Automation

    2024Django · SvelteKit · TypeScript

    Before an NHS Trust can advertise a consultant radiologist’s post, the Royal College of Radiologists reviews its job description. That ran on a 44-column spreadsheet, Word forms and email across more than a hundred Trusts, and I was the one running it while I studied. My dissertation automated the job: a portal for each role, a state machine that draws its own diagram so everyone can see where a post stands, and checklists edited without code. 92.7%, and the EECS Final Year Project Prize.

    Source
  5. a3watch

    2026Python · SvelteKit

    Home-server monitoring that never wakes a sleeping disk. SMART pollers spin drives up and resident agents burn watts, so this is a standard-library sampler with a command allowlist that makes waking a disk impossible by construction. Every spin-up and every rise in power is traced to the process behind it, with a confidence and the evidence, and the dashboard prices its own electricity.

    Source
  6. One change, one worktree

    2026Python · Node · Claude Code

    A rule that asks an agent whether a change is small enough to make in place fails at once, because every change is small while it is being made. So this one does not ask. A hook checks a single fact — .git is a file in a worktree and a directory in the main checkout — and refuses every write and every history-changing git command on the wrong side of it. This site is built under it.

    Source
  7. Training curves over 150 epochs: test accuracy rises unevenly from about 21% to 95.03%, past the brief’s 94% target, while train accuracy reaches 97.63% and both losses fall towards zero.

    A gated CNN on CIFAR-10

    2024Python · PyTorch

    The brief set an unusual block, in which every convolution is several parallel ones blended by a small learned gate, and a bar of 94% on CIFAR-10. I implemented it from scratch and then worked on the training: a fourth stage, SGD with momentum and cosine annealing in place of Adam, and Cutout. That took a 91.07% baseline to 95.03% test accuracy. Graded 100%.

    Source
  8. paperWiz

    2021–2026C# · WPF · Bash

    One wallpaper never fits every screen. paperWiz takes the dominant colour of the picture you choose, paints your other monitors with it, and frames small or portrait pictures so they look intended on a wide display. It began as a Bash script over feh and pywal and is now a native Windows app that talks straight to the wallpaper COM API, puts your setup back after you sign in, and installs without admin rights.

    Source