-> Technical -> Strange Loop 2014

Posted 2014-09-21.

The halls of the Hilton at Union Station are a bit of a labyrinth. As we rounded a fifth corner in search of our room, a passing stranger tried to encourage us: “Don’t worry, the room numbers are monotonically increasing!” Clearly, we’d made it to Strange Loop.

jessitron gave a good introduction to the JVM’s threading system, and compared and contrasted the concurrency abstractions available in Java, Scala, and Clojure. Sadly, it sounds like Scala came out looking a little better than Clojure in this.

Visualization is a recurring theme at this conference; one place it showed up is Sarah Groff-Palermo’s discussion of data art. My favorite example from this talk is Stefanie Posavec’s First Chapters, a visualization of the writing styles of various novels.

Leo Meyerovich gave a neat talk on “The Sociology of Programming Languages”. He found that, when developers are choosing what language to use, factors such as the availability of open source libraries, personal and team familiarity, and whether it was already used by their organization were more important than intrinsic characteristics of the language. The talk also included a very comforting slide titled “Knowledge is Age-Invariant” in rebuttal of the idea that older and younger developers specialize in different development stacks.

Incidentally, Leo’s talk last year blindsided me with the topic of program synthesis, and that subject seemed to be getting more visibility at this year’s conference. There was a miniKanren workshop (I missed it), and a talk by Joel Galenson about his project CodeHint, an enhanced code completion system. CodeHint does breadth-first search over possible Java expressions (a Javascript version has been started as well) and evaluates them to find candidates that meet the user’s specifications (a desired data type or value condition). Joel also talked about incorporating a probabilistic model built from open-source code to help avoid proposing expressions that are very rarely seen in real code.

It might just be me, but there seemed to be more love for static typing this year. There’s been increasing buzz about the concept of dependent types and the language Idris, which Brian McKenna spoke about. Bodil Stokke presented on PureScript, a nice-looking Haskell-like language that compiles to Javascript and has a tiny runtime. And if “Haskell-like” isn’t sufficiently Haskell-like for your tastes, Eric Swenson-Healey and James Cooper gave a talk on a Haskell-to-Javascript compiler called Haste.

Amanda Laucher and Paul Snively didn’t hold back their feelings at all: “Not relying on type safety is unethical (if you have an SLA)”. In my opinion it’s not that simple; for a particular project you generally must choose among the available languages and evaluate all the pros and cons of the language - and its ecosystem and community - as a package. So even if static typing considered in isolation improves reliability, that may be outweighed by other factors. But, it might not be, and this is worth thinking about. If you’ve ever had a production defect due to a null pointer, remember: that probably wouldn’t have happened if you were using Haskell.

This was a really enjoyable conference, just as it has been the last two times I attended. I met some very cool people, learned about interesting projects, ate some good food, and overall had a great time.