Ben Christensen discusses the mental shift from imperative to declarative programming, working with blocking IO such as JDBC and RPC, service composition, debugging and unit testing.
The panelists discuss the Scala compiler fork (typelevel.org): Is this a positive and natural outgrowth of a growing language or will this development cause irreparable rifts in the Scala community?
Brian Shirai proposes using different interoperable languages throughout the life of a product, how to build reliable systems from less reliable components, along with examples from Rubinius 3.0.
Dave Thomas keynotes on how people approach emerging technologies, many embracing the new in spite of its shortcoming, proposing to find a balance between the new and the old.
Diana Larsen advises on how to get the most from retrospective practices, introducing a framework for getting better outcomes from retrospective meetings.
Allen Wirfs-Brock answers questions on ECMAScript 6: Why do we need it? Why did it take so long? What’s in it? When can you use it? What comes next?
Todd Montgomery explores questions related to WebSocket, HTTP/2, CoAP, MQTT, XMPP, and the way these protocols change how services communicate.
Jeremy Saenz discusses the use of web frameworks, suggesting that libraries, such as his open source project Martini, can better serve the needs of web development.
Paul Butcher discusses difficulties with concurrency and some of the alternatives that help with this, focusing on Actors and how they help deal with threads and locks and make code clearer.
Yehuda Katz introduces Rust: the ownership system, automatic memory management which guarantees at compile time that a program will never segfault, making Rust code resilient against memory leaks.
Stuart Halloway discusses the design of core.async and some of its capabilities: channels, put and take, go blocks, alts! and alts!!, timeouts, showing their use through code.