
Python Visual Tutorial - prog
http://people.csail.mit.edu/pgbovine/python/
======
Maro
To my surprise, a lot of people don't know there exist things called
debuggers. Debuggers are tools that let you step through code, see variables,
set break points. Debuggers are common for compiled languages, less common for
scripting languages. For example, you can debug Java code from most IDEs, or
C++/C# code from Xcode or Visual Studio.

<http://en.wikipedia.org/wiki/Debugger>

~~~
pgbovine
hi (i'm the guy who created this app) ... the purpose of this app is to be an
educational tool (e.g., visualizing how data structures change over time), so
it's not really filling the same role as a symbolic debugger.

~~~
jayliew
when I first saw this, I was thinking to myself "great, someone threw PDB into
a web app" and was going to write it off until I saw that on every step of the
way, you actually also visually output the contents of all the variables. In
PDB, you have to manually know what's there and explicitly type in the command
to inspect it. People learning how to program don't know where all the knobs
are, much less which one to push.

There's power to such simplicity, and I immediately forwarded it to people I
know are new learning programming in Python right now. Good stuff, keep it up!

~~~
tjpick
pylons web framework has something akin to PDB in a web app

------
pgbovine
hi (i'm the guy who created this app) ... if anyone finds security
vulnerabilities, please email me (and don't rm -rf my account hehe). i put
this up a few months ago as a small hack to teach people Python, so it wasn't
meant to be pounded by 1337 h4x0rz. thanks!

~~~
fgimenez
I KNEW that nick looked familiar. Though this probably isn't the place for it,
I felt the need to tell you that your "Advice for Grad School Applications"
essay was my bible for apps last December. I just moved to palo alto and will
buy you a beer any time you want.

~~~
pgbovine
cool, thanks. please email me personally (i can't find your email addr from
your HN profile)

------
pgbovine
One of my goals is to use this app as the foundation for some free online
introductory programming tutorials. Unfortunately, I don't have much free time
right now to pursue this goal; but if you're interested in getting involved,
please email me!

~~~
jayliew
I might be interested, do you plan on open sourcing this ?

------
apgwoz
The idea of a code stepper is pretty cool. Two other projects that come to
mind after seeing this: <http://jonnytran.com/machina/> and the Macro Stepper
in Racket: <http://docs.racket-lang.org/macro-debugger/index.html>

------
dinedal
I'm teaching someone Python on the side, and this is a great help! Thanks!

~~~
brg
I'm thinking about how this would change my niece's learning path.

Obviously it would omit things like argv, files, the os module. I've seen
working with IO to be extremely valuable. She was able to quickly write fill
in the blank form letters and simple interactive scripts. But there is plenty
one can do with just print and loops.

Unfortunately I see that raw_input(), dir(), and __builtin__ all raise
problems. My niece was extremely excited to find out about all the 'hidden'
objects that she could play with.

~~~
pgbovine
sorry, those modules were omitted due to obvious security concerns ;)
raw_input() sounds like something reasonable to include, though, since it
could simply pop up a text box and ask the user to input a string. please
email me if you have other suggestions for how to improve this app. thanks!

~~~
brg
I support your idea of supporting raw_input through a pop up. You may run into
problems with the browser supporting them. For one thing it will not be the
result of a user action. If it isn't an acceptable experience, perhaps a
dynamic inline form in the "output"?

~~~
thristian
A full HTML popup window shouldn't be necessary:

    
    
        javascript:alert("hello, " + prompt("what is your name?"))

