Teach web programming #79

amalloy opened this Issue Jun 5, 2011 · 3 comments


None yet

3 participants

amalloy commented Jun 5, 2011

Web programming with Ring and Compojure is difficult for beginners to learn. We could set up some Compojure routes for serving user code, and then write problems that involve building a simple web service.

amalloy commented Jun 5, 2011

Compojure and Ring both support def-less models, so that won't be a problem. Likewise, defining the Compojure routes for user code is fairly simple. I think the part that I'll need help on is clearly defining for the user exactly what outputs we expect for given inputs, and what context their code will be run in. The Ring spec is small, but the minimal request map is still pretty bulky, so it won't be a great fit for our existing fill-in-the-blank model. We /could/ go that way because it's def-less, but it would be awkward and ugly. So I think we need something like "We'll be GETing /test.clj with the following headers, please return any <html> document"

A possible backend issue is how we sandbox requires of libraries, especially compojure. At the moment users can use whatever libraries happen to be in our classpath (minus mongodb), but it's been basically an accident and something we're planning to fix eventually. We want to expose Compojure for them for some more advanced problems, so we need to work on improving the sandbox to allow that in a clean, safe, flexible way.

I would love to work on this myself, but I'm still getting moved, back up to speed, and my computing environment configured, so it'll be at least a week before I can touch it. If anyone wants to take a stab at this, please do, and feel free to pester me with problems.



bitops commented Dec 27, 2011


Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment