top | item 5493880

PythonMonk – Learn Python in the browser

162 points| akshat | 13 years ago |pythonmonk.com | reply

47 comments

order
[+] gkoberger|13 years ago|reply
Interesting, however I feel like learning to code in a browser (even if it's JavaScript) doesn't work.

Sure, you may learn how to do a for loop or how variables work. But, you don't learn how to actually use the language. Setting up a development environment, and understanding how everything is connected is much more important.

Let's say you ace everything here, on CodeAcademy, etc. You still can't actually build anything.

(For more on this, see this article from HN a few days ago: http://blog.zackshapiro.com/want-to-learn-to-code-start-here)

[+] metaphorm|13 years ago|reply
this kind of thing is a good resource for people who already know how to code, but need a fast and elegant syntax guide. its not useful for teaching beginners because, as you've said, it doesn't deal with the tool chain or project organization, etc. but if you know Ruby and want to learn Python, this is a great resource.
[+] lostnet|13 years ago|reply
The next step would be an ipython notebook verses showing the student the debugger console with prepopulated state in Javascript.. In fact, later lessons as modules to interact with in a notebook would be kind of cool.

I really don't buy the "you have to own a car to drive one arguments" and the whole point of modern software engineering is to pull you away from the assumption of full system control and the ability to make problems go away with shell skills.

But, I would like more immediate source code management integration. That is the essential reality I always see lacking..

A non-programmer that understood git basics would be more helpful to me as a colleague than a competent programmer that doesn't.

[+] speedyrev|13 years ago|reply
I tend to disagree. It works in a sense that it can take a person with no knowledge of the syntax and flow of a language and remove some of the fear of getting started. I think it is a great non-intimidating way to get an overview of a language. Yes, they are going to need more instruction, but it's a start.
[+] kaiwren|13 years ago|reply
We're building our way up to this. For now, we are focussing on helping more people teach how to think in a particular language.

We'll get to the rest fairly quickly, though that would likely be in the form of screencasts.

PS: I'm on the CodeMonk team, the folks that are behind PythonMonk.com and RubyMonk.com

[+] phleet|13 years ago|reply
The first thing I always try on sites like these is stuff like this:

__import__('commands').getstatusoutput('ls /')

or

__import__('subprocess').call(["ls", "-l"])

which gets blocked by the interpreter somehow with

exceptions.OSError - [Errno 11] Resource temporarily unavailable

I'm curious as to how you managed to do this - I've always been interested in how to sandbox something like this.

[+] emillon|13 years ago|reply
This particular behaviour can occur because the process is disallowed to call fork() and can be done with setrlimit() (see RLIMIT_NPROC). There should be other protections, though, because forking a "ls" is not the only way to access the filesystem.
[+] xbryanx|13 years ago|reply
This is beautiful and the usability is great. But can anyone recommend some online interactive Python learning that starts at the intermediate level? I need Pai Mei to whip my sorry skills into shape, starting with OOP, sockets, image handling, and maybe data persistence?
[+] kaiwren|13 years ago|reply
We already support teaching most of these - if you know anyone that would like to create courseware around any of these topics please let us know.

Our courseware marketplace is still in a private alpha, but we are actively soliciting awesome hackers that would like to teach online.

[+] cglace|13 years ago|reply
"Your turn now - go on and change the following code to compute the sum of the numbers 1 through 5."

If you input 15 and submit, it says the answer is correct. Do all online code courses just check for the retured value?

How do these services deal with someone running sum(i for i in xrange(1000000000000000000))?

[+] wodow|13 years ago|reply
But of course that is a valid piece of code!

"15" completely matches the specification you give.

[+] aroberge|13 years ago|reply
Tried the test to define unique. Wrote

   def unique(s):
       return list(set(s))
and it gave assertion errors. Nice presentation ... but incorrect Python implementation.
[+] metaphorm|13 years ago|reply
maybe you had a typo? or they have corrected this in the meantime? I just tried this problem and it was error free.

def unique(values): """Finds all unique elements of a list.

        >>> unique([])
        []
        >>> unique([1, 2, 1])
        [1, 2]
        >>> unique([1, 2, 1, 3, 4, 2])
        [1, 2, 3, 4]
    """
    # your code here
    return list(set(values))

it also works without the coercion to list. return set(values) is fine.
[+] anandology|13 years ago|reply
Thanks for pointing the mistake. Corrected the tests now.

Solution to that problem is correct. Sets weren't introduced yet.

[+] pc86|13 years ago|reply
Both GitHub and Google signins failed for me and I lost progress in the first section. May just be the work network; I'll try it at home.
[+] mmwanga|13 years ago|reply
I think this is a great way to get beginners / students coding, but the end product might be what we now know as "bolt-on" engineers. They put components together and build beautiful functional products, until it breaks and they have no idea what's "under the hood"
[+] niels_olson|13 years ago|reply
This is really cool. I think the assertions that this learn-in-the-browser thing doesn't work is because folks on HN have seen so many entry-level courses at this point.

More interestingly, can I get transfer credits from Codecademy instead?

[+] pekk|13 years ago|reply
It is 2013. Why are you teaching Python 2?
[+] teach|13 years ago|reply
"A programmer may try to get you to install Python 3 and learn that. You should tell them, 'When all of the python code on your computer is Python 3, then I'll try to learn it.' That should keep them busy for about 10 years."

- Zed Shaw, "Learn Python the Hard Way"

[+] metaphorm|13 years ago|reply
while I agree that we should be more proactive about migrating to Python 3, if you're trying to be pragmatic it is most useful to teach Python 2.7 since that is the most widely used version.
[+] smonff|13 years ago|reply
Very far away from Perl Monks.
[+] lsiebert|13 years ago|reply
This probably isn't for experienced developers, but it looks gorgeous.