Doug Lea, Governing Board, OpenJDK
Doug Lea - Governing Board, OpenJDK
Wed - 01:30-02:30 PM, Salon C

Creating components based on concurrent and parallel algorithms and data structures often requires more attention to “engineering” issues not seen with most other libraries. Components created in the “obvious” way sometimes turn out to be wrong, to perform poorly, or are unusable in most applications, because the abstractions in which they are expressed are leaky, imprecise, or incorrectly specified. While many of these issues are encountered in other aspects of concurrent programming, the impact is accentuated when they continue to leak through to APIs provided by library components. This presentation surveys some examples and lessons learned from the design, implementation, and applications of the java.util.concurrent library, including those surrounding memory models, resource management and garbage collection, thread management, optimization, and code generation.

Jim Weirich, Creator of the Ruby build tool, rake
Jim Weirich - Creator of the Ruby build tool, rake
Tue - 11:30-12:30 PM, Salon D

Are you curious about Ruby? Perhaps you’ve heard fantastic things about how Ruby makes you 100 times more productive. Or maybe you’ve heard the hype about this fantastic web framework called Rails that allows to you build your complete app in 5 minutes during a coffee break. And all this talk about meta-programming and dynamic languages, is it really that different from what you are using now?

While there certainly is a lot of buzz surrounding Ruby and Rails, there is also some basis for the buzz. This talk will cut through the hype and get down to the real reasons you might want to make Ruby your next programming language.

Alex Miller, Founder, Strange Loop Conference
Alex Miller - Founder, Strange Loop Conference
Wed - 10:15-11:15 AM, Salon D

Clojure’s approach to data is significantly different than other popular languages, and somewhat different even than its Lisp heritage. On one hand, Clojure provides a small core set of immutable, persistent data structures. On the other, Clojure uses functional programming to provide a rich set of data manipulation functions. These two pillars of Clojure are fused together through the “sequence” abstraction. Because of sequences, Clojure developers expect that almost any function works with almost any composite data. This is a radically different approach than we see in popular OO languages like Java.

This talk will examine Clojure’s approach to both data and function and explore how sequences are the linchpin abstraction between them. We will consider how Clojure’s approach to data differs from object-oriented programming (particularly Java) and see how this approach changes the nature of your daily programming. We will also consider topics such as mutation, state vs value, and how to customize your primitive and composite data. You should leave this talk with new ways to think about the intersection of data and function in your program.

This talk is based on work in a large Clojure code base (70k+ lines) developed over three years at Revelytix. We have built several products in Clojure and have found the focus on the power of immutable data to be a significant asset in helping us build and evolve our code.

presentation video
Stuart Sierra, Core Team Member, Clojure
Stuart Sierra - Core Team Member, Clojure
Wed - 11:30-12:30 PM, Salon E

Clojure is a modern dynamic language for the JVM, ClojureScript is the same language compiled into JavaScript. This talk will introduce the ClojureScript compiler and explain how it leverages the Clojure language and best-of-breed JavaScript technologies to deliver compact, high-performance web applications. Discover how sharing both data and code between a Clojure back-end and a ClojureScript front-end can make complex web applications simpler, more powerful, and easier to develop.

Heather Miller, Scala Team, EPFL
Heather Miller - Scala Team, EPFL
Tue - 04:00-05:00 PM, Salon A

By now, it’s no secret that asynchronous and non-blocking code means fast and responsive software stacks that scale to the moon. The only problem? Asynchronous code usually means callback hell that’s impossible to write, impossible to reason about, and even worse to maintain. Not anymore— Scala 2.10 brings an asynchronous, completely non-blocking, composable Futures and Promises API. And best yet? Code using it looks sequential— nice and easy to reason about. In this talk, I’ll show you how to program in a powerful way— with composable “pipelines” that look sequential, but execute in a completely asynchronous, parallel way. I’ll also show you how to handle errors both for this asynchronous code as well as for normal sequential code, all in a new, clean, and composable way, with the new Try abstraction. Last but not least, all of this is available in a Java API too! So it doesn’t matter whether you have a Scala or a Java stack, there’s still a way to profit from the new Futures and Promises API!

Michael Bevilacqua-Linn, Author, Functional Programming Patterns
Michael Bevilacqua-Linn - Author, Functional Programming Patterns
Tue - 01:30-02:30 PM, Salon B

Patterns and functional programming aren’t often mentioned together, but they’re related in a couple of ways. First, most of the classic object oriented design patterns fade away in languages with functional features. Second, functional languages have their own set of interesting patterns, which can often be given first class language support.

In this talk, based on the forthcoming Pragmatic Press book Functional Programming Patterns, we’ll examine a few of each type of pattern, and show how adding functional features to a language lets us solve the same problems that common object oriented patterns solve in a more concise, straightforward fashion.

Philipp Haller, co-author, Actors in Scala
Philipp Haller - co-author, Actors in Scala
Wed - 02:45-03:45 PM, Salon C

Ever wished the compiler could make asynchronous programming easier? Enter Scala Async. Do asynchronous I/O like “normal” blocking I/O, program with Futures and Promises even more naturally! Scala Async makes it possible to “suspend” at arbitrary points in a block of regular Scala code, and to “resume” from that point later— all without blocking. This not only makes it possible to make concurrent code look sequential, it makes it possible to actually use even the most unfamiliar asynchronous libraries in a familiar blocking style. What’s more, not only does it come out-of-the-box seamlessly integrated with Scala 2.10’s new Futures and Promises API, but you can also easily use it with any other event-driven Scala or Java library of your choice, like Java NIO, Twitter’s Finagle, or Dispatch.

video presentation
Nicolas Gallagher, Lead developer, HTML5 Boilerplate
Nicolas Gallagher - Lead developer, HTML5 Boilerplate
Tue - 02:45-03:45 PM, Salon D

HTML5 Boilerplate is an extremely popular front-end template that helps lay the ground work for building fast, robust, and adaptable web apps or sites. This project is the product of many years of iterative development and combined community knowledge. It tries to be agnostic of any specific, higher-level development philosophy or framework. Rather than adding features, the core project is now significantly smaller than when it was first released. The original creators of the project having long moved on but it continues to evolve and gain in popularity.

With ever increasing numbers of front-end developers collaborating on open source software projects – and moving into corporate software engineering roles – what are some of the successful approaches that projects like HTML5 Boilerplate have taken? This talk will look at a small, focused, open-source project in order to highlight some paths to maintaining “quality” code, facilitating teamwork and creating responsibility, sustaining a community of consumers, and aligning front-end software to the probable future of the web stack.

Dustin Getz, Architect, Wingspan Jason Feingold, Architect, Wingspan
Dustin Getz - Architect, Wingspan
Jason Feingold - Architect, Wingspan
Wed - 01:30-02:30 PM, Salon D

Both Clojure and Scala target enterprise-sized challenges, but the development styles are very different. We will live-code a small webapp in both languages, on two projectors, while demonstrating how each language influences our thought process, and the toolchain and library best practices. We will discuss how Scala makes you think in types, how Clojure’s interactive development lets you code without restarting your app, Scala’s query DSLs, plus Clojure’s secret weapon: Datomic.

David A. Black, author, The Well-Grounded Rubyist
David A. Black - author, The Well-Grounded Rubyist
Wed - 04:00-05:00 PM, Salon D

Change is a constant in the tech field, at many levels — from the introduction of major new tools and systems to the release of tiny updates for existing ones. Ironically, constant change results in a striking consistency over time. The view of our field from outer space, so to speak, remains remarkably stable. Meanwhile we have to decide what newness to master, what to quasi-master, and what not to bother with. Somewhere in that process we’re deciding how much, and in what, to specialize, and at what cost. We can’t all be experts in everything; and expertise is elusive, due to a kind of fractal quality to the field whereby whatever techniques one masters can be broken out into component or descendant techniques that have to be mastered on their own terms. Is specialization even a meaningful concept in our field? And can we even be good generalists, like decathletes, or do our simultaneous specializations fail to add up because of their often transient presence?

Blake Mizerany, Go Contributor
Blake Mizerany - Go Contributor
Wed - 11:30-12:30 PM, Salon B

Go programmers come from backgrounds you would likely not expect. The language was originally marketed as a “Systems Language”. But rather than being mostly composed of C and C++ programmers, many Go programmers come from Ruby, Python, Javascript, Erlang, and other popular dynamic languages; Much more than the Go authors had anticipated.

The creator of Sinatra ( will explain, in detail, why he has spent the last 2 years programming in Go full-time – using it not only for systems programming, but web and command-line programs as well.