About the service
I build systems on Erlang/OTP that should work for years, not hours. My profile — software where downtime means not inconvenience but the collapse of the entire business: payment gateways, messaging backends, real-time signal nodes, IoT device fleets, session brokers and telecom platforms serving millions of simultaneous connections. If you need a service that survives crashes, network breaks, and its own bugs without waking anyone at three in the morning — this is exactly the concurrency model I have studied for years.
My work relies on the OTP toolkit, not homemade processes. I design complete supervisor trees so that a failure is isolated in the smallest possible node and cleanly restarts rather than triggering a cascade of failures. I apply gen_server, gen_statem, and application behaviors as intended, model each connection or task as a separate lightweight process, and rely on the "let it crash" philosophy that simplifies code and makes recovery automatic. When load demands it, I distribute nodes across machines, add clustering and state transfer, tune schedulers and memory so throughput remains predictable under pressure.
Beyond the main scenario, I do what Erlang is chosen for: hot code updates with release handling that allow deployment without breaking live sessions, back-pressure and flow control so a spike does not crash a node, and observability through built-in tracing and metrics. I can take a project from zero through first release to production, rescue an existing Erlang codebase that has become fragile, or join your team for reliability. Each project is delivered with tests, load benchmarks, and clear documentation.
What you typically get:
— Architecture of supervisor trees and applications
— Process modeling gen_server / gen_statem and OTP releases
— Distribution, clustering, and node handoff
— Hot code updates and deployment without downtime
— Load testing, tracing, and battle readiness
My work relies on the OTP toolkit, not homemade processes. I design complete supervisor trees so that a failure is isolated in the smallest possible node and cleanly restarts rather than triggering a cascade of failures. I apply gen_server, gen_statem, and application behaviors as intended, model each connection or task as a separate lightweight process, and rely on the "let it crash" philosophy that simplifies code and makes recovery automatic. When load demands it, I distribute nodes across machines, add clustering and state transfer, tune schedulers and memory so throughput remains predictable under pressure.
Beyond the main scenario, I do what Erlang is chosen for: hot code updates with release handling that allow deployment without breaking live sessions, back-pressure and flow control so a spike does not crash a node, and observability through built-in tracing and metrics. I can take a project from zero through first release to production, rescue an existing Erlang codebase that has become fragile, or join your team for reliability. Each project is delivered with tests, load benchmarks, and clear documentation.
What you typically get:
— Architecture of supervisor trees and applications
— Process modeling gen_server / gen_statem and OTP releases
— Distribution, clustering, and node handoff
— Hot code updates and deployment without downtime
— Load testing, tracing, and battle readiness