Go · Kubernetes · Platform engineering · Automotive firmware
I got into this because I liked taking things apart to see why they broke. That instinct got me into automotive: bootloaders, AUTOSAR, diagnostics, secure boot. A world where you can't just redeploy on Friday afternoon, because your code is now inside somebody's car doing 120 on the AP-7.
Somewhere along the way I discovered platform engineering and realised the cloud people had reinvented everything I already knew, but with better tooling and much nicer error messages. Signed firmware? Signed container images. A bootloader refusing to run unverified code? Admission webhook. Watchdog timer? Liveness probe. So now I do both, and I'm slowly leaning cloud-ward.
What I actually enjoy is the unglamorous half: the failure path, the runbook, the error message somebody has to read at three in the morning. Everyone gets the demo working. I'm from Barcelona, so I do all this in Spanish, Catalan and English, and I will complain about mutable image tags in all three.
| Every day, happily | |
| At work, in automotive | |
| Also comfortable with | |
| Currently learning |
|
Admission control that ties a workload to the build that produced it. Not this image is signed, but this image was built by the workflow that belongs to this service. The third attempt in that recording is the whole point: an image signed for real, by the same trusted builder, from the wrong workflow, refused anyway. A control that only catches unsigned images tells you nothing you didn't already know. |
A Kubernetes operator. You write one small Admission webhooks, Prometheus metrics, a Grafana dashboard, and scale numbers I actually measured instead of vibing. |
|
An Internal Developer Platform. Fill in that form and, before you finish reading the confirmation page, you have a GitHub repo with CI and a live workload in Kubernetes. My favourite part isn't the demo. It's the README section on what happens when it half-fails. Turns out that's the interesting engineering. |
One OpenAI-compatible endpoint in front of every provider you use: routing, streaming, failover, distributed rate limiting, caching and per-provider metrics. Your client never learns which vendor answered. Started as an excuse to write concurrent Go harder than a worker-pool tutorial. Ended at v1.0.0 with a Helm chart and a published container. |
|
My final degree project at UPC, built with a local environmental association. Point a camera at a drinking trough, or upload a video, and it tells you which bird species showed up, where and when. Two-stage YOLO12 training (101 species, mAP@0.5 of 0.910 on my own validation split) and an RTMP→HLS pipeline that draws boxes on a live stream. Live demo. |
My portfolio: one static page, no client framework, a few kilobytes of inline JavaScript, and real recordings of each project instead of stock illustrations. Have a look. |
Byte counts straight from the GitHub API, regenerated weekly by a script in this repo rather than a hosted stats card, so it cannot break when somebody else's free tier does.
Barcelona · open to remote

