Clojure is great for manipulating data and much of our curriculum reflects that: introducing arithmetic, then vectors, then some functions, then more data types, more data structures and more functions.
We'd originally settled on a data manipulation web app to reflect that, and chose the World Bank Indicators API for the "data science" angle. The web app idea was to enable students to show off what they'd learned to their friends.
Starting from ground zero in Clojure, to create a full web app, is a lot of work for beginners because Clojure's strength is not really in "web development".
Minneapolis chose a different web app: a simple chat app that could be woven into the modules so students built it up alongside learning the base curriculum. We can see the whole app here:
https://github.com/clojurebridge-minneapolis/chat/blob/master/src/awesome/handler.clj
It certainly has the benefit of being nice and small but it does a lot of HTML construction and very little data manipulation so it doesn't really mesh with what we're trying to teach about Clojure. One of the guiding principles for the curriculum was to cover everything needed to complete the WBI app so that app determined some of what went into the curriculum and what didn't.
Some basic questions for discussion:
* Is building a web application a reasonable goal for ClojureBridge at all?
* Is it reasonable for beginners?
* Is it reasonable for experienced programmers? (I hope the answer is "yes" here, at least)
If we decide that a web application is still a good goal for the curriculum, do we perhaps want to consider some Clojure "web frameworks" to make it more tractable? (at least in terms of reducing boilerplate)
Specifically in that area, is it worth looking at something that doesn't require explicit declaration of routes and/or something that uses a more template-based approach to HTML views? There's no Rails in Clojure but there are small frameworks that take us part of the way there for small applications.
As an example and straw man, here's a small contact list web app:
https://github.com/framework-one/fw1-clj/tree/master/examples/usermanager
Model:
https://github.com/framework-one/fw1-clj/blob/master/examples/usermanager/model/user_manager.clj
Controller:
https://github.com/framework-one/fw1-clj/blob/master/examples/usermanager/controllers/user.clj
View:
https://github.com/framework-one/fw1-clj/blob/master/examples/usermanager/views/user/list.html
No need for routes, no building HTML as data structures, "standard" mustache-style HTML views.
Back to some questions for discussion, assuming we still think a web application is somewhat realistic:
* Is data science the way to go?
* Can we figure out a better showcase for Clojure's data manipulation that reflects what we'd like to teach?
Sean Corfield --
http://clojurebridge.org
"ClojureBridge aims to increase diversity within the Clojure community by
offering free, beginner-friendly Clojure programming workshops for women."