(david-mcneil.com :blog)

2010 October 25 10:19am

Aaron Bedra - Clojure in the field

A couple of the main issues to address:

Stuart Sierra - Macro Club


clojure.test uses macros. This is confusing at times. For example, “thrown?” is not a var. It is interpreted by the “is” macro. This is surprising because it looks like a function call when it is used and this is one of the down-sides of macros: surprising behavior.

lazytest is Stuart’s replacement for clojure.test. He went through macros, protocols, etc. looking for good abstractions for tests and ended up falling back to the powerful, core Clojure constructs:

He is still struggling with test contexts that perform setup/teardown around tests. The problem is having a good way to get the context state into the tests. There are macros to accomplish this but they are surprising because they establish new scoping rules.

In summary:

Lightning Talks

Zach from Runa talked about Aleph. An asynchronous web server built on “channels” which are unidirectional pub/sub queues.

Alex Miller from Revelytix described how to use Clojure zippers to process trees of Records. Great talk.

Infer from Bradford Cross is a very approachable machine learning library for Clojure.

limelight is a rich client GUI framework.

Hazelcast is a Java dynamic clustering library.

Mark McGranaghan - Ring

Model web requests and responses with Clojure concepts:

They produced ~120 line “spec” and from there an entire ecosystem of libraries and frameworks has grown. Now it is possible to deploy a Ring app that mixes in components from a variety of locations and they all work together in one stack.

The essence of Clojure is composable abstractions

If you want to build powerful apps you need to get the underlying abstractions right.

Rich Hickey - Keynote - Step away from the computer

When was the last time you thought hard about a problem for an hour, day, month, year?

When have you confidently sat down to implement something for the first time?

The point he made by the end of the talk was something like: if you will think hard and well about a problem and write down what you learn then you will position yourself to confidently implement a solution on your first attempt

We commonly talk about the cheapest place to fix bugs is at development time. But, it is cheaper to fix bugs at design time. The biggest problems in software are ones of misconception. The developer has wrong ideas about the problem or the solution. Automated testing cannot provide a direct answer for the question of “whether this is a good idea?”

Analysis and Design

We should be solving problems, not adding features. Will the features solve a problem? Or will the features create a problem? Avoiding a problem is not the same as solving a problem.

Problem solving is a skill which can be learned and practiced. See "How to Solve It" Is it better to be good at problem solving or methodology X?

Understand the problem:

Be discerning:

Focus is needed to think well:

Once an idea for a solution has come:

David Liebke - Concurrency to parallelism

The slides are very well down and contain much of the content of the presentation.

Concurrency is about managing access to shared state.

Parallelism is about making use of multiple processors.


fork join

Chas Emerick - Continuous deployment


First principle - get your beautiful creating into the hands of your customers

Paths to deploying your apps:

Varying levels of community standards:


Don’t deploy to production on Jetty (ok to use it for development). Instead use Tomcat, JBoss, or Glassfish, etc.

Automate the build, test, and deploy process.

Stuart Halloway - Simplicity


The word “simple” has been severely abused:

So is the definition hopelessly subjective? No. It has an objective definition that should inform our designs and is fundamental to what we are trying to do.

Simple means: not compound

See "Studies in Words" by C.S. Lewis in which he talks about verbicide and how the meaning of words change over time. Specifically it examines the history of the meaning of the word “simple”

[… I had to leave early, so I missed the 2nd half of the presentation.]

Edit - Added link to Chas’ slides. Edit - Added link to Stuart Halloway’s slides.

past life