Java backend developer, IAM · Banking · Málaga
I build identity backends and document what breaks.
I work on a bank's authorisation platform: who can get in where, and why. Outside of that I build things and document them whole, including the decisions I had to revisit.
This is where I write about what I learn by building. Less tutorial, more record of what failed, why, and what ended up working.
Projects
- Homelab
Nine machines, four segmented VLANs, daily backups with a tested restore, and every service over valid HTTPS without opening a single port to the outside.
- NOVA
A desk creature with eyes, sounds of its own, memory and a personality. Not another app, not another chatbot, not a voice assistant: an object with a face that reacts to what happens around it and wakes up when you say its name.
- Turna
Take a photo of the shift roster you get at work and it lands in your calendar, split day by day, in under ten seconds.
Recent notes
- The state lives outside the model: how a desk pet knows you haven't talked to it in three days
An LLM with memory gives you a friendly chatbot. A state machine with an injected clock gives you a creature. The line "I know" is only funny if it's true.
- I spent days tuning the prompt, and what actually moved accuracy was changing the model
I went from 30.7 % to 100 % of days correct reading shift rosters. Almost none of that gain came from the prompt, and the metric that mattered wasn't accuracy.
- Three layers, two problems: a GPU passthrough that stopped halfway
The device was in the container, the check confirmed it, and the app still couldn't see it. Because the app was running one layer further in. And once it could see it, it had no permission to open it.
- Three times it "looked configured": verify by reading the result, not by assuming
A sysctl that didn't persist, a udev rule that would never have fired and a sed that edited a comment. No command returned an error. The habit that catches all three is the same one.
- A backup you never restore is a big folder with a reassuring name
I set up automatic backups for nine machines and everything showed green. The photo library, the only irreplaceable data, was left out. What gave it away was a backup that finished too fast.
How I work
-
Measure before having opinions
A test bench before the first line of the app. Without it, "it's better now" is an impression; with it, it's a number.
Read the note → -
Verify by reading the result
A command without an error isn't a configuration done. It gets read back afterwards, and if it's an automation, the opposite state is forced and the reversal checked.
Read the note → -
Document the mistakes
The mistakes section has more entries than the wins section, and it's the most useful part of the whole document.
Read the note →