Hacker Newsnew | past | comments | ask | show | jobs | submit | bayonetz's commentslogin

In this thread, people making all sorts of claims about print() debugging being better because of speed, efficiency, less overheard, “debuggers are too hard”, etc. on and on, but not actually providing evidence for their claim. For example, how do you know it’s faster for you? Less overheard by what comparison? Like did you give a debugger an equal and fair shot for some appreciable amount of time? I routinely probe these type of assertions from my coworkers about print()’s superiority and find that ~75% of the time, they’ve never given the debugger a fair trial or invested in understanding all it’s strengths and capabilities. ~25% of the time they’ve done a fair comparison and print() debugging is indeed the right choice for their context. Fine. Good for them! Every now and then someone takes me up on teaching them how to use a debugger effectively though and they are almost without exception, albeit begrudgingly, astounded at what they’ve been missing out on only using print().


The problem with using debuggers is it's weakness: debuggers don't scale — they're very human centric, interactive and people are slow.

If I can produce a printf() log/trace + grep, picking out needles in concurrent haystacks is incredibly efficient. 1 in 1000 events are very detectable. Breakpoints would wedge, possibly crash, and frequently mask/alter execution.

And I say this having been "the guy who can debug anything" at a few places using debuggers, having written programmatic debuggers, and built all sorts of contraptions to debug issues as needed.


I know for a fact that print() is faster than breakpoints because debuggers take so much longer to pause and capture the heap and the stack at the breakpoints, whereas printing (or even logging) is just another line of code to run without interruption.

Also, sequential console logs are much easier to comprehend than breakpoints when you’re debugging concurrent events.


A human interacting with a debugger can not compete with error detecting code printing out exactly when the application state is invalid. A human interacting with a debugger can not debug complex interaction bugs in a distributed system. A centralised printf log can. A human interacting with a debugger can not debug real-time timing bugs. But printf can. I could go on all day but hopefully you get the picture. Debuggers are fine in certain limited scenarios. But the systems I maintain every day are way too complex for that.


I use Sentry in development and find it indispensable. I'll also use the breakpoint embed from ipython to get a shell prompt from a hotspot of trouble. But I most often use prints. They are just too easy and 95% of the time expose what I need to know to fix the problem.


Build a shadow ban mode and assign them to it :)


Obviously it’s not useless if people find it useful such as the people who compete. By some metric you care about it may be “useless”, but who made you the arbiter of metrics? Competitive programming may or may not correlate with success at say software engineering, but that isn’t grounds to say it’s useless. An Olympic archer may or may not be a terrible bow hunter in the wilderness but they still have a clear skill that is useful by metrics such as people want to watch it, practice it, and compete in it. Dualist thinking like this where things are strictly good/bad, useful/useless, etc. is a really limiting thought pattern. How about instead of “is this thing useful OR useless?” we ask “in what ways is this thing useful? In what ways is this thing not useful? How can we best leverage these properties?”


A lot of overlap with Knime and Rapidminer. Why approach it with visual programming vs the direct execution graph approach like they do?


We're focusing more on education than building an AutoML tool, and we think visual programming helps the user understand more of what's going on behind the scenes.


If they aren’t “fastidious about truth” probably. If they are, and they know you are being “curious”, you will likely have a cool, engaging conversation on your hands.


Hey, nice comment! Please do this please.


The police are being told by the governors who are being told by the POTUS that the protestors must “dominated”. I’m not editorializing or interpreting here. Listen to Trump himself say it over and over again in the course of this phone call:

https://soundcloud.com/the-daily-beast-politics/trump-audio

I can’t stress how useful it is to hear this context first hand yourself.


Why would you de-escalate when the POTUS says stuff like this: https://soundcloud.com/the-daily-beast-politics/trump-audio


Absolutely chilling.


Chilling? He is absolutely right. The governors are weak. They have no problem arresting Christians and Jews for peaceably worshipping together during a pandemic, but sitting back while rioters burn down city hall, murder a federal officer (who was African American, btw), and destroy the few minority owned businesses there are in this country.

These police needn't charge everyone, just the violent, and detain the rest for 24 hours until the cool down, and keep doing it.

Everyone is outraged and sickened over the murder of Floyd, not just African Americans, not just Liberals. Everyone wants a police force they can trust. No one wants murderers patrolling the streets.

Conservative websites that support law enforcement 99% of the time, like PJ Media and Brietbart were outraged that it took 3 days to arrest Chauvin.


He's says "you've got to dominate them" like 5 times in the first 10 minutes of the call and he's not distinguishing or nuancing between the different types of protesters or allowing for a range of response. It's all "radical left" and "ANTIFA" to hear him tell it. He doesn't given a single acknowledgment in the whole call that these protests are happening directly because of systemic, pervasive police brutality and therefore some sensitivity and humbleness might also be in order here in responding to the situation. So yeah, chilling.


Looked up “HOPS (for Heuristic Optimized Processing System)” but didn’t find any good direct hits. Can you point me to some good starting points?


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

Search: