387 karma · joined September 15, 2010
Now, as it happens, I have some experience trying to get Java to compile and run on Google App Engine. Actually, at the outset I thought it was impossible because of the way the sandboxing works on App Engine (writes to the file system are disallowed and the javax.tools. package is not part of their white list). So straightforward approaches such as invoking the Java compiler from code will not work.
Here are various approaches that I have tried and the results:
1. Use Beanshell and approximate Java:
Beanshell is a scripting language for the JVM with Java like syntax. It also has a "strict" mode where it will behave like a strongly typed language.
Pros: you can run this on App Engine and can trust Google Engineers to worry about security of their sandbox. You also get the scalability of App Engine.
Cons: It is not really Java and language features like Generics are not supported. The error messages are also not as useful as what the regular Java compiler outputs.
2. Get users to compile code on their own machines and upload the .class file. Then write a class loader that will load this class and then execute whatever method you need to.
Pros: Works perfectly and no language issues.
Cons: The interactivity is lost to an extent. Also, beginners need to start worrying about installing Java and configuring CLASSPATH etc. from get go.
3. Use an in-memory compiler like Janino. Pros: Works like the Java compiler and error messages are useful.
Cons: it does not support generics and it also does not support other features like the for(String value : values) {} syntax.
4. Use Google App Engine as the front-end and then run a compiler-as-a-service somewhere else (Linode etc.).
Pros: Full language and you are in control.
Cons: You better know how to sandbox the code (chroot / SecurityManager etc).
5. Use Google App Engine as a front-end and outsource compilation and execution to some other service like Ideone.
Pros: Full language support and someone else worries about security issues.
Cons: Expensive (the Ideone API only allows 1000 free submissions per month).
If you know some other method, please let me know. I love trying to see how to make things work on App Engine (I learn quite a bit this way).
(minor edits)
"Our website has over 50,000 monthly hits - programmers from all around the world visit LearnJavaOnline.org to increase their professional programming expertise in the Java programming language."
However, I notice that the domain was registered very recently (on 19-Feb-2013) and there are hardly 15 tutorials on the site and most of these pages are blank.
Edit: looks like this site is just using a template. Please see the OP's response to this comment.
"Google Apps Script gives users a new level of control over Google products. Now you can access and control Google Spreadsheets and other products using JavaScript scripts that you write yourself and can share with others. Unlike browser-based JavaScript, the scripts you write run directly on Google servers in order to provide direct access to the products they control.You can also use Google Apps Script from Google Sites."
This online code editor seems to be a new and improved UI for creating / editing apps scripts. That said, this editor isn't proprietary. A quick look at the source shows that they're using CodeMirror (http://codemirror.net/). We've tried out various code editors for unclassroom.com (where I work) and code mirror has been the best to work with in terms of features, ease of use and comprehensive documentation. The second version (CodeMirror2) is really top notch compared to other alternatives out there.
http://blog.unclassroom.com/2012/03/getting-on-hn-front-page...
Thanks and you can also reach me at krishna@unclassroom.com.
The login is required because otherwise we can't save and pre-load the code for you the next time you visit the same activity.
Edit: what I mean to say is the app itself is secure and so is our sandbox that runs the code and this is more of a UI issue that we'll fix immediately by removing the login prompt.
Edit: The paywall is going away as well :).
That said, we're still very much in alpha so please excuse bugs (UI / otherwise) but we'd love your feedback.
You can also directly e-mail me at krishna@unclassroom.com or find out more at http://about.unclassroom.com/.
Also, just to be clear we have nothing to do with codecademy as zds has rightly pointed out in this thread. The title might be misleading so apologies in advance if it is. Unable to change it though.
Would love feedback!
They seem to be two different initiatives. I know for sure that the ones on the SEE page are recorded video lectures from the actual live classes.
How would you find out the point at which users are likely to pay?
We're an education startup and we want to inspire students to learn programming by making the initial experience fun and engaging.
Two key problems that we're trying to solve are:
a) Make learning to code fun & interesting:
To write interesting code, you need technical skills & domain knowledge. While students are currently taught the basics of programming, the lowest common denominator when it comes to domain knowledge happens to be math and so you have tons of exercises on displaying integers (0 to 100), or printing out the fibonacci sequence etc. This can be boring (not to mention many students already find math to be hard / boring).
We're replacing math with social data that students are intimately aware of (ie. their own social data). So on Code Pal, students will learn a for loop by listing the names of their Facebook friends (as opposed to printing out integers from 0 to 100 or some other similar, potentially boring, exercise).
b) Enable students to work with real world data:
Data in introductory assignments are usually fake and artificially generated. This is a pain for educators (they need to create this data) and it is boring for students. We allow students to work with real data and learn programming in the process. One huge side benefit is that we don't need to tell a student when there is a logic error. For example, if you have 500 friends and your program outputs 499 as the total count, you know there is an error. Another example: we have a Coke versus Pepsi assignment where we teach students the IF statement by asking them to use the number of likes the two drinks have received on FB to determine which drink is more popular.
-------- Addressing privacy: We don't ask for any extra Facebook permissions (except e-mail) and we don't store any data (again except e-mail). We request data from FB every time you run your code (that's the reason we require Facebook login). Also, we don't ask for a stream publish permission and so we can't (and never will) spam your newsfeed.
Will appreciate any feedback & feel free to ask questions.
The sad part is students who really learn programming end up being penalized because their solution in the exam will differ from what was originally written on the blackboard (most faculty members are incompetent and therefore have no way of knowing whether a student's answer is correct or not unless it matches that supplied in some sort of an answer key).
The linked document is a scanned notebook from a student in one of the (supposedly) best colleges in South India. One look at that document will tell you volumes about what is wrong with CS education in India.