reading comfort is on: larger text, more spacing, higher contrast, no motion. Inspired by Clarity Layer, an adaptive reading app I helped build.
x-ray mode: engineering notes are visible on each section · full write-up in the colophon at the bottom
Leah Weldon, software engineer
hover to disturb · click to scatterbog an luch thairis · cliceáil chun é a scaipeadh… particles
~ $
currently building: this siteá thógáil faoi láthair: an suíomh seo
x-ray · the name is ~2,600 points sampled from text rendered on an offscreen canvas, each on a spring back to its home position, pushed by your cursor or your phone's tilt. It pauses off-screen and stays still for reduced motion. The "last push" pill is a Vercel function reading GitHub's public events API, cached for 15 minutes.
software engineer · ibm · dublininnealtóir bogearraí · ibm · baile átha cliath
I build software that holds up under scrutiny, and systems where interesting behaviour emerges on its own.Tógaim bogearraí a sheasann suas faoi ghrinnscrúdú, agus córais ina dtagann iompar suimiúil chun cinn as a stuaim féin.
the 30-second version
now
Software engineer at IBM, Dublin
education
BSc and MSc Computer Science, Trinity College Dublin
research
Fairness and adversarial robustness of toxicity classifiers
won
First OpenAI hackathon in Ireland (Belfast)
languages
Python · TypeScript · JavaScript · Java · C · R
looking at
TODO: roles you are open to
~/about
I'm a software engineer at IBM, where I previously interned on the process mining team. I studied Computer Science at Trinity College Dublin, where my MSc dissertation measured how toxicity classifiers fail, and for whom.Is innealtóir bogearraí mé ag IBM, áit a raibh mé i m’intéirneach ar an bhfoireann mianadóireachta próiseas roimhe sin. Rinne mé staidéar ar an Ríomheolaíocht i gColáiste na Tríonóide, Baile Átha Cliath, agus thomhais mo thráchtas MSc conas a theipeann ar aicmitheoirí tocsaineachta, agus cé air a dteipeann siad.
Outside work I build things to see what happens: an evolution sandbox where predators appear without being programmed, a music game whose every note is synthesised in the browser, and a planner built around the person rather than the nine-to-five.Lasmuigh den obair, tógaim rudaí chun a fheiceáil cad a tharlóidh: bosca gainimh éabhlóide ina dtagann creachadóirí chun cinn gan iad a ríomhchlárú, cluiche ceoil ina gcruthaítear gach nóta sa bhrabhsálaí, agus pleanálaí atá bunaithe ar an duine seachas ar an naoi go dtí a cúig.
91.7%
semantic-attack bypass rate against Muslims for HAP-38M and Toxic-BERTof disguised attacks on Muslims got past two of the AI moderators I tested
66
automated tests behind Primordial, plus a real-browser checkautomatic checks that make sure Primordial keeps working
50
simulated worlds swept in parallel to find when predators evolvevirtual worlds run at once to see when predators appear
12
original music cues synthesised live in the browserpieces of music written by code instead of recorded
x-ray · each figure comes from a project README or a results file. They count up once, when an IntersectionObserver sees the strip, with a cubic ease-out.
x-ray · names decode from random glyphs when this section scrolls in. Hover previews follow the pointer with clamped coordinates. Rows link to case-study pages generated from Markdown at build time, and the page change uses cross-document View Transitions where supported.
~/explore-the-research
real results from my MSc dissertation
→
x-ray · bars come from per-group CSVs exported from my dissertation pipeline, bundled at build time. The takeaway sentence is computed from the data, and groups that were never flagged before an attack are excluded rather than shown as 0%.
~/fit-check
for recruiters · runs entirely in your browser
Hiring? Paste the job description.
I'll pick out the skills the role asks for, show which ones appear in my work (with the project that proves each one), and list anything I haven't shown here yet. It's a keyword match, not a verdict.
x-ray · about 30 hand-written regular expressions map skills to evidence, plus a list of common skills I haven't shown here. Nothing you paste leaves the page. The rules are unit-tested.
~/arcade
bug-bashbest 0
fixed 020s
Bug bash
Bugs are crawling into production. Squash as many as you can in 20 seconds.
build finished
0 bugs fixed
review:
name-that-genrestreak 0 · best 0
Name that genre
Every clip is composed live by code in your browser, the same way Melody Masters works. Listen, then guess.
x-ray · bug bash is a requestAnimationFrame loop with delta-time movement, wall bouncing and difficulty that rises with your score. Name that genre schedules oscillators, filtered noise and pitch-dropping kicks with the Web Audio API: there are no audio files on this site.
~/now · updated Nov 2026
building
This site
learning
TODO: what you are learning
reading
TODO: what you are reading
writing
My first Substack essay
~/git log --graph
a3f9c1eHEAD → ibm
Software engineer, IBM (Oct 2026)
7d02b4a
MSc Computer Science, Trinity College Dublin · dissertation on fairness and robustness
51ce8f0winner
First OpenAI hackathon in Ireland (Belfast) with The Synced
c88e21d
Software engineering intern, IBM process mining
0b6e7aa
TA for two Computer Science courses · PRO, DUCSS · exec committee, Central Societies Committee
~/stack
hover or focus a skill to see where I've used it, or a project to see what it uses
x-ray · the graph is a plain lookup table in src/data/site.ts. Hover and focus both work, so it's usable with a keyboard.
~/writing
Personal essays on Substack. The first is in progress.
~/guestbook
moderated by a classifier from my dissertation
Leave a note.
Every message is scored by IBM's Granite Guardian HAP-38M, one of the four models I evaluated, before it appears. You'll see its score. It isn't perfect, which is rather the point of my research.
x-ray · a Vercel function validates the note, sends it to Hugging Face's inference API for HAP-38M, and only inserts it into Supabase Postgres if the hate/abuse/profanity score is below 0.5. Row-level security means the browser can only read approved notes. A honeypot field and per-IP rate limit keep bots out.
Leah Weldon
Software Engineer · Dublin, Ireland
TODO@example.com github.com/leahweldon
Summary
Software engineer at IBM with an MSc in Computer Science from Trinity College Dublin. Research background in the fairness and adversarial robustness of toxicity classifiers; builds simulations, browser tools and ML evaluation pipelines in Python and TypeScript.
Experience
Software Engineer, IBMOct 2026 – present
Software Engineering Intern, IBM (process mining)TODO dates
Teaching Assistant, Trinity College Dublin (2 courses)TODO dates
Education
MSc Computer Science, Trinity College DublinTODO year
Dissertation: Fairness and Robustness in Risk Detection Models (supervisor: Eoin Delaney)
BSc Computer Science, Trinity College DublinTODO year
Selected projects
Fairness & Robustness in Risk Detection Models · Python, PyTorch, Hugging Face. Evaluated four toxicity classifiers across six datasets; attack bypass rates reached 91.7% depending on the targeted group; threshold mitigation cut one model's FPR gap by 63.8% for 0.006 F1.
Primordial · Python, NumPy, FastAPI, WebGL2. Evolution sandbox with neural-network creatures and emergent speciation; vectorised simulation, binary WebSocket protocol, from-scratch WebGL2 renderer; 66 tests and CI.
Melody Masters · JavaScript, Web Audio API. Browser music game with 12 synthesised cues, zero dependencies, tests and CI.
The Synced · Winner, first OpenAI hackathon in Ireland (Belfast).
This site · Astro, TypeScript, Vercel functions, Supabase, Claude API. leahweldon.com