Curious kid who never stopped
taking things apart.
I'm Philip. 22, based in Denmark. I've been writing code since I was 16, shipping production work for most of it, and I'm at my best when the problem in front of me is something nobody's solved yet.

How I got here.
I started in 3D, not in code. Younger me discovered Blender and got obsessed with the question every 3D artist eventually asks: how do you actually build a real-time experience, not just a still render? That question pulled me into Unreal Engine 5 — Blueprints first, then C++, then the deep end of rendering pipelines and shader graphs.
Somewhere in the middle of those years, I noticed the gap that bugs me to this day: artists fight their tools more than they should. The same five clicks, a hundred times a day. Blender lets you script it away with Python — so I did. One pie menu became another, and another, and now I've got eight addons live on SuperHive that solve real workflow problems for 3D artists. Not the kind of addons that demo well — the kind that make a Friday afternoon end an hour earlier.
The web came later, but it stuck. Once I'd shipped a site end-to-end — Postgres schema, API, frontend, deploy, monitoring — I realised the full-stack loop was the same loop as the artist loop: see a problem, build the thing that makes it go away. Just at a different scale.
Problem-solving is the through-line. I don't care whether the problem is a slow SQL query, a janky cloner setup in Geometry Nodes, or a UI that makes the user click three times to do one thing. I care that it's solved cleanly, shipped, and the next person who picks it up doesn't curse me.
AI changes everything —
and it changes nothing.
The next era of software engineering is about architecting LLMs to do the work while you orchestrate and direct. Boilerplate, scaffolding, glue code, unit tests — all of it compresses toward zero. What's left is the part that was always the interesting part anyway: deciding what to build, how the pieces fit, and where the risk lives.
So the ground shifts, but the job sharpens. Architecture, stack choice, and security stop being things you get to after shipping the feature — they become the feature. When models can type faster than any human, the scarce resource is judgement: knowing which abstraction will still make sense in six months, which dependency will bite you at scale, which attack surface you just opened.
That's the work I want to do. Not prompt-engineering for its own sake — agent orchestration, system design, and the quiet discipline of keeping a stack honest while it grows. Models do the typing. Humans still decide what's worth typing in the first place.
Four principles, non-negotiable.
Not slogans — these decide what I build next and when I stop.
A half-written plan is not a product. I favour cutting scope and shipping a real thing over perfecting a spec nobody uses.
I can touch anything between a Postgres index and a pixel. Full-stack means full responsibility — auth, DB, API, UI, deploy, monitoring.
Postgres beats whatever dropped last week. I reach for proven tools unless there's a real reason to deviate.
Every site I ship targets Lighthouse 95+ across the board and works from a 390 px iPhone up. Accessibility is a shipping requirement.
Where my time goes.
- Full-stack web apps — Next.js, TypeScript, Postgres, edge runtimes
- AI product engineering — LLM agents, RAG pipelines, inference glue
- Creative tools — Blender addons, WebGPU rendering, 3D-for-the-web