Otoniel
Pérez.
Backend Software Engineer — .NET / Azure / Realtime
I build the parts of a system that other teams build on top of. Shared libraries, internal APIs, deployment tooling, and the instrumentation that tells you when any of it breaks. The rest of my time goes into software for live events — rally timing since 2016, and LibreTracks, an open-source DAW with a C++ audio engine now running on five platforms.
- Current role
- Backend Engineer
Cross-Cutting Team - Experience
- 4+ yrs professional
.NET 3.1 → 10 - Ships on
- Windows · macOS
Linux · Android · iOS - Status
- Open to remote
Spanish / English
Profile
Platform work
I sit on a cross-cutting team, which means my users are other engineers. I design core services and shared libraries that several product teams depend on, so a clear contract matters more than clever code and a breaking change is somebody else's outage.
A large part of the job is keeping a long-lived codebase current — we moved it from .NET Core 3.1 all the way to .NET 10 without pausing delivery — and making the system legible once it is running. Traces, dashboards, and alerts that reach a human before a customer does.
- .NET / C#
- Azure
- Microservices
- Event-driven
- Kubernetes
- OpenTelemetry
Realtime work
It started in 2016 with timing systems for rally motorsport — software that has to be right while a car is crossing the line, with no second attempt — and it never really stopped. Now it is audio engines, camera control and video transport.
The deadline changes shape (a 5 ms audio callback instead of an HTTP timeout) but the discipline is the same. Know exactly what runs on which thread, and never make the critical path wait for anything it does not control.
- C++
- Rust
- Audio DSP
- NDI
- Computer vision
- Android NDK
Featured
LibreTracks
A multitrack DAW and live-playback workstation. Free and open source.
- 90GitHub stars
- 30releases shipped
- 3,500downloads
- 5platforms
The problem
Musicians playing to backing tracks need something a normal DAW is not built for. They need to jump to the next chorus on the beat because the room is still singing, hold a vamp until the band is ready, or transpose a song because the vocalist is tired, and none of it by walking back to a laptop three metres away.
What it does
Non-destructive arrangement, beat-accurate section jumps and vamps, per-region transpose and time-stretch, a click and guide-voice bus that never reaches front of house, ambient pads, MIDI output, and a browser remote so the whole session can be driven from a tablet on stage.
Why the architecture matters
Everything hangs on one rule. The audio thread must never block and never allocate. So the realtime engine is C++ and owns nothing but playback; Rust owns the domain model, persistence and orchestration; React and Tauri own editing and presentation. Each layer knows only what it needs to — which is what makes it possible to add a feature to the UI without putting a click in someone's in-ear monitor.
- C++17
- Rust
- React 19
- TypeScript
- Tauri v2
- Zustand
- CMake
- Android NDK
- Swift
- FFmpeg
- GitHub Actions
- Vitest
- WebdriverIO
Field work
-
01
SonyLiveMonitor
A wireless monitor for Sony mirrorless cameras whose live view keeps running while the camera records — which the official app will not do. It also browses the SD card and pulls JPEG or RAW/ARW straight to the phone, and ships a one-click camera patcher for Windows, macOS and Linux so nobody has to touch a command line.
-
02
AI Tracking PTZ
Auto-tracking for PTZ cameras. RTSP or low-latency NDI capture, YOLO person detection, target selection weighted by persistence, area and confidence, and a PID loop that recentres the camera over ONVIF slowly enough to be watchable. Sends MIDI cues to presentation software, with a TensorRT deployment path.
-
03
REAPER Live Remote
A touch remote for REAPER, built before LibreTracks existed and for exactly the same reason. A musician can run backing tracks and section jumps from a tablet instead of leaving the stage mid-set.
-
04
Android NDI Player
A native NDI receiver for Android — automatic source discovery on the network and fullscreen realtime video, with a JNI bridge down to the NDI SDK doing the BGRA frame handling.
-
05
Delayed Fade for OBS
An OBS Studio transition plugin that holds the outgoing scene for a configurable delay before starting the fade — the timing you want when a cut has to land after a musical phrase rather than on the operator's reflexes.
-
→
Everything else
Pad packs for LibreTracks, an AI translation tool, katas and assorted experiments.
History
-
Jul 2022 — presentFull time
Backend Engineer / .NET Specialist
AIDA — Cross-Cutting Team
- Cross-cutting core. Shared libraries, APIs and foundational services used across multiple product teams, including modernisation from .NET Core 3.1 through .NET 10.
- Infrastructure automation. Built DeploymentTool end to end — an internal platform that manages, standardises and automates deployments across Windows Server and IIS environments.
- Architecture & security. Designed and delivered a Centralized Configuration API, and took ownership of the corporate API-key authentication service that standardises secure service-to-service access.
- Distributed systems. A Streaming API for realtime event processing over an event-driven approach, plus a centralised email delivery service.
- Cloud & CI/CD. Azure services, Docker and Kubernetes deployments, and Azure DevOps pipelines that took manual steps out of delivery.
- Observability. OpenTelemetry and Application Insights instrumentation, Grafana dashboards, and a company-wide alerting system delivering operational notifications into Microsoft Teams through Power Automate.
- Applied AI. An internal chatbot over confidential corporate documentation, built on LLMs, Azure AI Search and a RAG architecture.
- Mentoring. Guided software engineering interns through technical reviews and team practices.
-
2016 — presentAlongside
Rally Timing — Development & Operations
A Todo Motor
- Platform modernisation. Contributed to migrating the timing system from a desktop application to a Node.js web platform, with a maintainable architecture behind it.
- Architecture & quality. Applied TDD and CQRS as the platform grew, keeping testability and separation of concerns ahead of feature pressure.
- Live operations. Still develop, maintain and support the system during live motorsport events — timing data and publication of results while the rally is running.
-
2023Graduated
B.Eng. Computer Engineering
Universidad de Las Palmas de Gran Canaria (ULPGC)
Stack
- Languages
- C#·TypeScript·JavaScript·SQL·Rust·C++
- Frameworks
- .NET Core 3.1 → .NET 10·Entity Framework Core·Node.js·Vue.js·React
- Cloud & containers
- Azure App Services·App Configuration·Key Vault·Application Insights·Azure DevOps·Docker·Kubernetes·GitHub Actions
- Architecture
- Microservices·REST APIs·Distributed systems·Event-driven architecture·CQRS·AuthN / AuthZ·API keys·Centralised configuration
- Practices
- TDD·Clean code·Code review·Application modernisation·Mentoring
- Observability
- OpenTelemetry·Application Insights·Grafana·Power Automate·Microsoft Teams·Windows Server·IIS
- AI & search
- Azure AI Search·LLM integration·RAG architecture·GitHub Copilot
- Spoken
- Spanish — native·English — upper-intermediate
Let's talk.
I'm based in Gran Canaria and open to remote work. If you're building backend platforms, developer tooling, or anything that has to stay correct in realtime — I'd like to hear about it.
Usually replies within a day