

Visualizing Code to Fail Faster - dko
http://www.codinghorror.com/blog/2012/03/visualizing-code-to-fail-faster.html

======
haberman
This is why it's so shortsighted to say things like: "computers are so fast
nowadays that everyone should be using GC/dynamic-typing/etc." A person who
says this is limiting their thinking to the way we do things now. Parsers may
not be on the critical path of most compilers, but if you could run a
parser/linter/static-analyzer on every keystroke, you could start doing things
that weren't even possible before.

We'll _always_ be able to find ways to use extra CPU cycles to make things
more pleasant to use. We'll add more pixels or decrease response times or do
deeper or more frequent analysis. There will _never_ be a time when computers
are "fast enough" that low level languages and programming for performance
become obsolete.

~~~
gaius
_We'll always be able to find ways to use extra CPU cycles to make things more
pleasant to use._

That kind of thinking gave us Eclipse.

~~~
haberman
I must have been unclear, because Eclipse is exactly what I am arguing
against.

The developers of Eclipse made a choice to write Eclipse in Java. Java is a
language that trades performance for developer productivity with features like
memory safety, garbage collection, and machine-independent byte-code. Though I
wasn't there, I would suspect the rationale for this choice is that computers
are "fast enough" that this tradeoff is worth it.

The choice to use Java instead of C++ favored the productivity of the Eclipse
developers over the run-time performance of Eclipse, and the effects of this
choice are so painful that Eclipse has become the poster child of a sluggish
desktop app.

What I am arguing for is the idea that computers aren't "fast enough" to make
compromises like this. Data-intensive applications will continue to be written
in low-level languages. Even if a higher-level language could provide basic
functionality that is "fast enough," a lower-level language will free up CPU
resources that can be spent making the application even more compelling to the
end-user.

I hope this makes it clear why Eclipse is the antithesis of what I believe.

------
karol
You've got to have big ego to write, that Bret Victor's innovative ideas are
not "entirely abstract art house visualization nonsense". BV's demos set the
direction in which the whole field of working with ideas, including designers
and programmers should be going. In 2012 programmers shouldn't have to be
really good at running the code in their heads while writing it.

~~~
vdm
+1. I think many people feel threatened by these ideas, and the potential to
open up programming to a whole cadre of non-professionals who won't need them.

The opportunity is that the professionals get/have to work on Real Problems.

------
gfodor
Better to just link to Bret's work than some commentary that doesn't add much
to the conversation.

<http://worrydream.com/>

~~~
vdm
This comment adds the least to the conversation; why is it at the top?

------
siavosh
A tangent, but I like the fact that more and more people are seeing BV's video
and getting inspired by it. It's made a big impact for me, and I'm seing a
steady stream of folks referencing it almost a month after it was given.

What is just as interesting is that I've also heard incredibly negative
reactions to his talk, which is also telling.

~~~
haberman
Wow, what do the negative reactions say?

~~~
forrestthewoods
I was disappointed by the lack of practicality in a lot of the presentation.
In some ways there was more flash the substance. The ghost image/time rewind
isn't realistic for any real game development. The movie making ipad app was a
neat toy but totally impractical in a professional environment.

That said it was a great presentation because showing that flash gets the
brain gears turning on realistic ways to increase iteration times.

~~~
enjalot
I like how your handle reminds me of "forest for the trees" as it's pretty
appropriate ;)

Really though, disappointed? These are prototypes for the next generation of
interaction, most people aren't even close to doing just one of the 5 ground
breaking ideas he presented, and you expect him to release fully baked
products?

~~~
forrestthewoods
Ha. I don't expect fully baked products but the prototypes feel a little
avant-garde. Cool to look at but not actually useful or practical. Given the
amount of attention it's gotten I walked away disappointed.

~~~
unimpressive
_"If you want to build a ship, don't drum up people to collect wood and don't
assign them tasks and work, but rather teach them to long for the endless
immensity of the sea." \- Antoine de Saint Exupéry_

Show people the flash and the substance will follow. As I've said previously,
if seeing that demo pushes _me_ to try and implement it because it's painful
to code after having seen it; then theres certainly many able individuals
working on it right now. (I am a novice programmer in most respects, I
couldn't do it. But damn if I didn't try.)

EDIT: Push does not mean I actually tried. But I'm getting there. Every time I
sit down to code it nags at me that I can't see the code the way I always wish
I could see it when I'm debugging.

------
vdm
The game demo Bret uses is based on time mechanic concepts developed in the
2009 game Braid by Jonathan Blow.

I am not a gamer but I downloaded the game over the weekend because of the
talk, and highly recommend it, it's a real work of art with serious production
values, and easy to download for Windows, Mac and Linux.

<http://en.wikipedia.org/wiki/Braid_(video_game)> <http://braid-game.com/>

It is very inspiring to see such creativity and the courage to express it from
people like Jonathan and Bret.

------
szx
Am I the only one who feels like the game demo was so awesome that it
overshadowed some of the other parts of the presentation, parts that were just
as interesting yet probably more feasible? I would kill to have just the
algorithm evaluator part become reality.

~~~
unimpressive
No, your not. Personally I think that on a much more practical level the
algorithm evaluator would be a godsend. The animation app and the braid demo
just seemed too narrow in their application to really be useful in the real
world. The algorithm visualizer? I want it; now. It hurts to do code in my
head after seeing that, to the point where I almost abandon hope and try to
implement it.

------
lubutu
Something I would love to have is a debugger for an interpreted language which
visualises the program's state as a graph, say, and you can wind time forward
and back. Then, as you make changes to the code the visualisation updates
according to what the program's state would have been at this point in the
program had it been running the updated code. To me that would feel like
magic.

~~~
anamax
> Something I would love to have is a debugger for an interpreted language
> which visualises the program's state as a graph, say, and you can wind time
> forward and back.

see "debugging backwards in time" by Bil Lewis (yes, one "L" in each word.)
<http://www.lambdacs.com/debugger/AADEBUG_Mar_03.pdf>

~~~
kaens
He gave a talk at google on the subject, it's a great watch:
<http://video.google.com/videoplay?docid=3897010229726822034>

------
pella
canvas demo from Tobias Nurmiranta

<http://tnlogy.github.com/tnlogy/>

( over the number CTRL + Left Click )

~~~
vdm
That combines instant preview with a playhead slider for undo.

<https://github.com/tnlogy/live-coding> (not linked from the demo)

------
ylem
I think this also has applicability to other domains where quick iterations
can be extremely useful--for example, testing data modelling--unfortunately, a
lot of codes are too computationally expensive to run in such an interactive
fashion...

------
zdwalter
I build an interactive javascript learning website. <http://learnjs.info>
tries to help see how code runs and fails

------
poundy
Is this editor available publicly? Can I download it and use it for my
Javascript coding sessions?

~~~
no_gravity
Here is my take on it: <http://www.gibney.org/calculator>

You type javascript on the left and get the result on the right. I use it
myself all the time. You can type js right away or try the examples on the
bottom to get a feeling for what its doing.

~~~
dubya
This is pretty nice. I wonder how hard it would be to import a minimal stats
package. That and a table entry widget would make this a superb environment
for a 1 semester probability and stats class.

------
swalsh
Well here's one of those videos that will truly change the way you think.

