Hacker News new | past | comments | ask | show | jobs | submit login
FlowStorm: Omniscient time travel debugging for Clojure (flow-storm.org)
25 points by jpmonettas 9 months ago | hide | past | favorite | 5 comments



I have been using FlowStorm heavily for the past several months and it's been a game changer for me.

The software I'm building is very data-intensive, so I can't do full-program tracing. Instead, when I find a problem, I simply add #trace tags to the handful of spots I think may be relevant, re-eval them in the live environment and rerun the failing code. My workflow for solving even tricky-seeming issues has become so fast that fixing bugs doesn't even break me out of the flow I'm in working on whatever it is I'm building. It's really improved my productivity.

The performance impact of tracing has also been surprisingly light. Even when I'm tracing functions that may be called many thousands of times and producing 100,000+ time steps and testing the limits of my 12G heap (I'm generating large amounts of temporary data), the performance overhead of using FlowStorm is only barely perceptible, and in most cases it is not noticeable at all.

Because it's so powerful, I've also started using FS to help me read and understand code. I find it very helpful when I'm reading code to be able to click around and see the data flowing through. Overall this is just an incredibly useful tool!


Haven't tried this yet, but seems like a fantastic concept. Not shown in the landing page gifs but the "value search" and "tracking backwards in time from exception" features seem really cool. The gifs on the landing page are great but for an even bigger wow-effect maybe these features could be shown off too.

edit: in the Videos section there's a short value searching YouTube video linked: https://www.youtube.com/watch?v=CwXhy-QsZHw

Are there similar themed time travel debugging systems for Python or JS?


Author here. Thanks for the feedback! and yeah I agree adding those features to the landing page is a good idea. I'll add them.

Regarding tools that offer similar capabilities in other languages, I'm not aware, and I have my opinion on why this could be https://github.com/jpmonettas/flow-storm-debugger#arent-omni... but I could be wrong.

But there are time travel debuggers for other languages for sure, and some omniscient debuggers too, but with different capabilities.


I definitely identify with addressed concerns over the hassles of my go-to debug approach, viz. print statements. I have a rather intense state engine that, when things go awry, can be brutal to debug with prints. But now I am doing ClojureDart, which I know is on the FS roadmap. The state engine is stable these days, but if it misfires before you get to CLJD, forgive me if I swipe your idea and roll my own ad hoc, informally-specified, bug-ridden, slow implementation of half of FlowStorm. Maybe a tenth.


Hi Kenny! Go ahead! There is a ton to explore in this area, so looking forward to whatever works for you.

ClojureDart is still on FlowStorm roadmap, just waiting for the self hosted version there.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: