Engineering for human perception. Why 100 milliseconds is the boundary between "instant" and "waiting", and how we stay under it.
The human brain perceives delays differently at different thresholds. Understanding these boundaries defines our performance targets.
User feels in control. Cause and effect are directly connected. This is our target.
User notices delay but stays engaged. Acceptable for non-critical interactions.
User loses focus. Mind wanders. In trading, opportunities are missed.
100ms isn't much. Every component gets a slice, and there's no borrowing from tomorrow.
Price update arrives
↓ 15ms network
Process & calculate
↓ 5ms processing
Internal service hop
↓ 20ms network
Broadcast to client
↓ 15ms network
Render update
↓ 8ms render
Total: ~73ms ✓ Under budget
Every millisecond was earned through specific optimizations.
Binary serialization eliminates parsing overhead. 10x improvement in serialization time.
HTTP/2 multiplexing and persistent streams reduce connection overhead.
Native TypeScript execution and optimized V8 bindings.
Memoization, virtualization, and surgical state updates.
Performance isn't a one-time achievement. It's a constant discipline.
CI/CD fails if P95 latency exceeds threshold. No exceptions, no overrides.
Synthetic benchmarks lie. We measure from real users, real networks, real devices.
Latency spike at 3am? We know about it before our users wake up.
In real-time trading, latency isn't just a technical metric, it's the difference between seeing an opportunity and missing it. We obsess over milliseconds so our users don't have to.


Book a call with the founders to talk about Rthmn
Engineering for human perception. Why 100 milliseconds is the boundary between "instant" and "waiting", and how we stay under it.
The human brain perceives delays differently at different thresholds. Understanding these boundaries defines our performance targets.
User feels in control. Cause and effect are directly connected. This is our target.
User notices delay but stays engaged. Acceptable for non-critical interactions.
User loses focus. Mind wanders. In trading, opportunities are missed.
100ms isn't much. Every component gets a slice, and there's no borrowing from tomorrow.
Price update arrives
↓ 15ms network
Process & calculate
↓ 5ms processing
Internal service hop
↓ 20ms network
Broadcast to client
↓ 15ms network
Render update
↓ 8ms render
Total: ~73ms ✓ Under budget
Every millisecond was earned through specific optimizations.
Binary serialization eliminates parsing overhead. 10x improvement in serialization time.
HTTP/2 multiplexing and persistent streams reduce connection overhead.
Native TypeScript execution and optimized V8 bindings.
Memoization, virtualization, and surgical state updates.
Performance isn't a one-time achievement. It's a constant discipline.
CI/CD fails if P95 latency exceeds threshold. No exceptions, no overrides.
Synthetic benchmarks lie. We measure from real users, real networks, real devices.
Latency spike at 3am? We know about it before our users wake up.
In real-time trading, latency isn't just a technical metric, it's the difference between seeing an opportunity and missing it. We obsess over milliseconds so our users don't have to.