About
Hi, I'm Charan.
I'm an AI & automation engineer in Bangalore who ships production LLM systems — from a Springer-published model that reads chest X-rays well enough for a radiologist to take seriously, to document pipelines that quietly run themselves. Before any of that, I wrote real-time control code for jet engines at DRDO, where a millisecond of lag isn't a bug — it's a flameout. Tracewave is what happens when that instinct for things-that-must-not-stall meets a public data firehose and a free weekend.
This is one project. There are 18 more (and a few jet engines) over at charanreddy.dev. Fair warning: it's a bit of a rabbit hole.
What I learned building this
Real-time UIs live or die on the small stuff
Tabular figures so digits don't jitter on every tick, a capped and interpolated chart redraw, cards that slide-and-settle instead of popping. None of it shows up in a screenshot — all of it is the difference between "looks live" and "looks amateur."
Write the core so transport is an afterthought
The Processor doesn't know if its events come from an in-memory queue or Redis Streams, or whether history lands in a ring buffer or TimescaleDB. That one decision is why the whole thing runs as a single process in dev and a distributed stack in prod without a rewrite.
Confidence is a product decision, not a formula
Three detectors will disagree constantly. The interesting work was making the ensemble reward agreement — so one twitchy detector can't cry wolf, but three nodding together escalate to critical. That math is a UX choice wearing a lab coat.
Backpressure isn't optional when you don't own the tap
The firehose bursts whenever it feels like it. Bounded buffers that shed the oldest events and count every drop as a metric beat unbounded queues that quietly grow until something falls over.
A link that's alive beats ten perfect notebooks
So this deploys with a self-contained simulation that kicks in when there's no backend — the same detector math, clearly labelled as synthetic. A portfolio link should never greet you with a spinner that never resolves.
Elsewhere
Want to build something — or break something interesting? Let's talk.
Have an idea? Let's talk.
Want to build something — or break something interesting? I'm available for new projects. The fastest way to reach me is a 30-minute call; otherwise drop a line below and it lands in my inbox.
Curious how this was actually built? Read the project story →