Las Palmas de Gran Canaria, Spain

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

Two kinds of deadline

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

Open source · since Apr 2026

LibreTracks

A multitrack DAW and live-playback workstation. Free and open source.

  • 90GitHub stars
  • 30releases shipped
  • 3,500downloads
  • 5platforms
The LibreTracks arrangement view: several songs laid out on one timeline with coloured audio tracks, waveforms, section markers and an automation lane.
FIG. 01Arrangement view — several songs on one timeline, with the section markers a player jumps between mid-set.

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.

REACT 19 · TAURI v2 Editing · timeline canvas · remote UI Zustand stores · 60 fps playhead COMMANDS RUST CORE Domain model · validation · persistence Session and project orchestration FFI C++ AUDIO ENGINE v2 Scheduler · mixer · pitch and warp · devices ASIO / WASAPI / CoreAudio / ALSA / AAudio REALTIME THREAD — NO LOCKS, NO ALLOCATION
One rule, three layers. The thread at the bottom never waits for the two above it.
The LibreTracks session view showing clip slots grouped per song above a channel mixer strip.
FIG. 02Session view — clip launching over a full mixer.
The LibreTracks browser remote on a tablet, with transport buttons and a grid of section cues.
FIG. 03Remote — a stage layout the player arranges, in any browser.
  • C++17
  • Rust
  • React 19
  • TypeScript
  • Tauri v2
  • Zustand
  • CMake
  • Android NDK
  • Swift
  • FFmpeg
  • GitHub Actions
  • Vitest
  • WebdriverIO

Field work

Tools for live production
  1. 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.

    Kotlin Android Camera Remote API
  2. 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.

    Python YOLO · ONVIF NDI · TensorRT
  3. 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.

    JavaScript REAPER Web API Tablet-first UI
  4. 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.

    C++ / Kotlin JNI NDI SDK
  5. 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.

    C OBS plugin API CMake
  6. →

    Everything else

    Pad packs for LibreTracks, an AI translation tool, katas and assorted experiments.

    github.com/otonielpv

History

2016 → present
  1. 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.
  2. 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.
  3. 2023Graduated

    B.Eng. Computer Engineering

    Universidad de Las Palmas de Gran Canaria (ULPGC)

Stack

What I reach for
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