About
Who I am, what I work on and how I prefer to build software.
- Main language
- Java
- Domain
- IAM / IGA
- Languages
- ES, EN
- ayyoubamjahed@gmail.com
I’ve been writing backend code for close to four years. The most recent ones in identity and access management inside a banking environment, which is a place where things break slowly but expensively: a badly propagated permission doesn’t show up until the audit.
Outside work I build my own projects and document them whole, with the decisions and the reasons behind them, so I don’t have to argue with myself again about what I already decided three weeks ago. A good part of what I publish here comes out of that record.
Right now
- Turna, week 1: wiring the Android app to the extraction backend, which already reads rosters at 313/313 days correct.
- NOVA, phase 2: the face obeys the backend over WebSocket and all 32 gestures run on the board with mouth, body and sound synthesised on the chip. NOVA no longer talks: it gestures, makes sounds and obeys commands. Next is the timer end to end.
- Homelab, finished and in use: it now hosts NOVA’s backend. The off-site backup copy is still pending.
- Offensive security, as a daily habit, in a VLAN-isolated lab inside the homelab.
What I use
| Area | Tools |
|---|---|
| Backend | Java 21, Spring Boot 4, PostgreSQL, WebSocket, JUnit 5, Maven |
| Identity and access | Authorisation platforms: profiles, group synchronisation, permission connectors towards client applications |
| Mobile and embedded | Kotlin, Jetpack Compose, ML Kit; ESP32-S3, ESP-IDF, LVGL |
| Infrastructure | Proxmox VE, OPNsense, Tailscale, Docker, Debian, Proxmox Backup Server, Nginx Proxy Manager, Cloudflare |
| Evaluation and data | Python, test benches with hand-annotated ground truth, vision models |
| Security | Kali Linux, VLAN segmentation, external labs over VPN |
| Before | Vue on the client side of an internal platform (2023–2025) |
How I work
I’d rather measure than have opinions. On the shift-roster extraction project I built a test bench with real cases annotated by hand before writing a single line of the app, because without it “it works better” means nothing. And I hold to the rule that no change goes in without running the full bench again.
I also document the mistakes. The mistakes section of the infrastructure project has more entries than the wins section, and it’s the most useful part of the whole document.
Background
Backend developer, IAM
2025 — · Banking
Authorisation platform: what each user is allowed to do once authenticated. Group synchronisation driven by technology profiles, and permission connectors towards client applications.
Software engineer, R&D
2023 — 2025 · Technology consultancy
Internal platform built end to end with Java and Spring Boot on the backend and Vue on the client.
Contact
Write to me at ayyoubamjahed@gmail.com. I read everything, even if I don’t always reply quickly.