Joël
Deffner.
CS master’s student in Trier. I build the site or tool I actually need myself, then keep at it until it’s worth handing to someone else.
Open full CV →

Education.
Reserved for a working-student role now, or the first job after the M.Sc. The reel has room.
Get in touch →Skills & about.
I pick up new AI tooling the week it ships and keep whatever survives contact with a real project. This site is the test bench: agents do a lot of the typing, I do the judging. The sheet on the right is grouped by what I actually reach for, not by how good I claim to be at any of it. Where public source exists, the link sits in the caption. Open it and check.
The Paradox toolkit's language server is strict TypeScript with 783 tests across 69 files, licensed GPL-3.0. ai-form-fill is the same discipline in a library with zero runtime dependencies, published to npm. Neither test count needs taking on trust: clone the repo and run it.
Selected work.
How to browse
- Click
- The page corners and the arrows below turn one page. Arrow keys work too.
- Swipe
- On a phone, swipe sideways. Up and down still scrolls.
- Tabs
- The tabs jump to a project. Click any print for full size.
The stamps
Every project carries one: how much of the work a model did.
- AI use: NO AINone at all.
- AI use: SOME AIResearch, and the odd snippet.
- AI use: MEDIUM AIBoth of us together. I know every line.
- AI use: HIGH AIMy idea and rough approach; the model did most of the execution.
Nothing printed from this one yet. It runs on a headset over a cable, and a flat screenshot of a VR scene tells you very little about it.
Passthrough does not photograph well, and the graded build lives on the headset. The repository carries the state diagram and the full controls table.
No print in the album for this one. The repository on the facing page is what is left of it.
No print. The repository on the facing page is what survives from 2023.
Speak a scene into VR
2026 · Master's project, two people · Unity + Python
You say what you want and the world changes around you, one instruction at a time. A Python agent plans, Unity executes and checks the result, and the two argue over a WebSocket until the scene is right. Nine scene operations, frozen early. The planner runs on a local model, so a study session costs nothing per token.
- Unity
- Quest 3
- Python
- FastAPI
- WebSocket
- Ollama
The rule I care about most: Unity validates every layout the model proposes and may refuse it. The model suggests, the engine decides. Everything else in the design follows from that.
Seeing Through Walls
2026 · Quest 3 cross-reality · Shipped July
You want to drill into a wall and you need to know what is behind it. Sweep a controller within 25 cm and the cables and studs inside light up where they are, one haptic pulse per hit. Grab a copy of the wall in VR, scale it up, place your drill points, and the plan goes back onto the real surface. Moving the copy moves its root transform, never the data, so a pin on a doubled-up wall still lands on the right millimetre.
- Unity 6
- Meta XR SDK
- MRUK
- Passthrough
- C#
The marker-tracking version was built and then deleted. Camera access only runs in an installed APK, so every iteration cost a twenty-minute build. Only the sensor reading is simulated now; the rest is real.
Paradox Modding Toolkit
2026 · VS Code extension and language server · GPL-3.0 · 783 tests
A VS Code extension and a standalone language server for Paradox script. Every piece of language knowledge is read out of the game install and its own log dumps instead of being typed into a table by hand, so a new patch needs no release from me. Crusader Kings III and Victoria 3 are first class. Europa Universalis V runs on community-sourced schemas, not yet checked against a live install. Deep validation goes to ck3-tiger rather than being rebuilt: annotate, never hide.
- TypeScript
- Language server
- VS Code
- ck3-tiger
- Monorepo
I went looking for decent highlighting and completion for Crusader Kings modding, asked around the community, and found nothing good. So I built it. The point was never the extension; it was to set a bar for Paradox tooling that other people can build on. It is the clearest example of how and when I build something.
FlightMeet
2026 · Team project · React 19 on CodeIgniter 4
Find a local flying meet, join it, coordinate in a group, and check the wind at the launch before you drive there. React 19 in front of a CodeIgniter 4 JSON API, about thirty endpoints behind one error contract. Wind is first class everywhere, speed and gusts and direction, because wind decides whether anyone flies. Chat polls every three seconds; the university host cannot serve websockets.
- React 19
- TypeScript
- CodeIgniter 4
- MySQL
- Leaflet
- Open-Meteo
The homepage is the part I actually cared about here. Milky glass over a sunset, a nav that morphs as you scroll, a photo marquee that eases to a stop under the cursor. I spent longer on it than on the admin dashboard.
ai-form-fill
2026 · Bachelor thesis · MIT, published on npm
It reads a JSON schema off the form itself, exact option values included as enums, and hands that schema to a model. The contract comes from the DOM and never from a config file, which is why it works on a form it has never seen. Values land through the native prototype setter plus synthetic events, the one trick that makes React, Vue, Svelte and plain JavaScript all notice the change.
- TypeScript
- DOM
- LLM
- Ollama
- Zero dependencies
Handing in the thesis was not where it stopped. I kept refining the library through July, and that pass is where the cross-framework write path really landed: same model, same 29 integration cases, 19 passing before it and 23 after.
Kanban board
2024 · Web Development course · Team project
CRUD through modals, drag and drop between columns, three roles with different rights. CodeIgniter, MySQL and plain JavaScript, no framework anywhere. Built with the team in the same year I was tutoring that course, which meant explaining a concept on Tuesday and getting it wrong myself on Thursday.
- PHP
- CodeIgniter
- MySQL
- JavaScript
2024, so the help here was a search box and the odd snippet. Everything structural was typed by hand. It is in the album because you can see the seam between this and what came after.
GazeFactory
2023 · Team of four · Unity, VR
A state model watches for operating errors and steers your eyes, through a full 360 degrees, to the next correct step. Four of us built it. It was the first thing I ever made in Unity, and the line running through the first two projects in this album starts here.
- Unity
- C#
- VR
- Gaze guidance
No model touched a line of this. It is here for the trajectory, not the code, and I would write most of it differently now.
Page 1 / 16
Contents
Teaching & involvement.
Web dev tutor
Ran exercise groups for the Web Development course: debugging student PHP, giving feedback on submissions, and explaining CodeIgniter’s router until it stuck.
Student government
Three elected mandates since 2023. Less politics than it sounds: mostly agendas, minutes, and defending the student angle in faculty meetings.
