Back at Clojure/West in March I gave a talk about World Singles' real world use of Clojure to do "boring stuff": general purpose web application programming. The recording of my talk is now available on InfoQ.
It's always a little odd to watch myself giving a talk, especially when it's the first time I've ever given a specific talk and, in this case, particularly when it's the first time I've ever had to give a 25 minute talk (instead of 40-60 minutes). It's a high-level talk. I show a couple of slides of code but I didn't have time to dig into how things really work at World Singles. I hope to get a chance to do that one day.
Apart from saying "Um" far too much, I think the talk went pretty well. Clojure is intended "to be a general-purpose language suitable in those areas where Java is suitable" according to the Clojure rationale and I think there needs to be more written - and spoken - about that general-purpose usage to show how approachable and productive Clojure can be. The big data / high scale stuff is very important, but I want people to realize Clojure can tackle everyday problems too, providing a concise (and FUN) way to solve those problems!

4 responses so far ↓
1 Marc Esher // Jul 31, 2012 at 9:04 AM
2 David Murphy // Jul 31, 2012 at 3:11 PM
3 Dave // Aug 10, 2012 at 12:40 PM
4 Sean Corfield // Aug 10, 2012 at 7:32 PM
I'll blog about it when I get time because we've just added a pretty cool enhancement to allow our "environments" to inherit settings from common configuration items.
The basics:
We have an array of structs. The structs have name, hostnames (array of hostnames to match) and setting (struct of actual settings for each environment). We also have a struct of default settings.
At startup, we get the machine hostname - using Java InetAddress.getLocalHost() - and walk thru the array looking for the first struct that has a matching (partial) hostname, then we merge that settings struct onto the default settings struct and - voila! - that's our per-environment settings.
In addition now we have an extends key in the struct with an array of configuration items to "inherit" in order, we merge all the inherited settings, then the per-environment settings, then merge that onto the default settings.
That allows us to have pieces of configuration specified just once, and reuse them across multiple environments, e.g., a local MongoDB instance (for each developer's environment), sandbox e-commerce credentials and live e-commerce credentials - reused in different environments as needed for testing.
Leave a Comment