by Jonas Bonér and Martin Odersky
Today's world of parallel and distributed computing poses
hard new challenges for software development. A rapidly increasing
number of developers now have to deal with races, deadlocks,
non-determinism, and we are ill-equipped to do so. How can we keep
things simple, in spite of the complexity of the underlying runtimes?
In our keynote we present some of our core technology to deal with the
parallelism challenge: Parallel collections, actors, and parallel
domain-specific languages. They have in common that each involves a
sophisticated implementation, yet provides a simple, intuitive toolkit
to the developer.
by Jonas Bonér
by Sebastian Nykopp and Markus Hjort
This session is a hands-on introduction to Scala, where we will write a small console application in pairs. The aim of the session is to teach basic language syntax and also touch on such topics as case classes, pattern matching, higher-order functions and type inference. All the things that make Scala such a great language. Participants are expected to have prior programming experience with some other language.
In this hands on session you'll get an inside view of Scala's
collections framework. We will cover the following topics:
The overall design of the collection library
The roles of user-facing base classes and template classes
How implicits are used to determine the result of methods
How higher-kinded types are used in collection factories
How to write your own collection classes
How to make use of parallel collections.
by Otto Hilska
Real-time web brings some awesome opportunities, but there’s lots of
complexity in the implementation side. Which client-side technologies
are mature enough? How much server resources does it consume when tens
of thousands of users are connected to the server at the same time?
Otto Hilska discusses some solutions to these problems and presents
Flowdock’s architecture as an example.
We might talk about:
- Who uses real-time web technologies, and who should be using them
- Client-side standards and their problems: Websockets, AJAX
streaming, AJAX long-polling, AJAX polling
- Server-side problems: memory consumption, C10k, concurrency
- Solutions: Rack middleware, JRuby, JVM/Scala, Actor model,
independent Comet servers, node.js
- Flowdock architecture: Rails, jQuery, Scala, Akka, MongoDB, all things cool
Everybody needs a mobile app, right? The challenge that many companies face
going online is the variety of mobile platforms in the market. Some accept the
reality and develop natively for the iPhone, natively for the Android, and politely
ignore the rest. Some choose to reject this reality and continue to look for a better
option for cross-platform mobile development. This session explores PhoneGap,
an open source platform that lets developers create native mobile applications
in JavaScript, HTML and CSS – the web's very own lingua franca.
There's javascript everywhere. even where you wouldn't expect it, or
want it. dom xss is cross site scripting that doesn't come from the
server hosting the web application, but rather from JSON, the url bar,
xhr headers and image file names! this session will cover what dom xss
is, what attackers can do with it, why it's everywhere and how to find it.
by Laura Snellmann-Junna and Tuomas Nikkinen
Arranged by Reaktorians for fellow Reaktorians, the code camp is a traditional element in the learning culture of Reaktor. The camp is a safe learning environment without the usual constraints of customer projects. The code campers dive into shared coding flow with bleeding-edge and non-main-stream technologies.
This session provides an inside look into the how’s and why’s of the code camp, both from the organizers’ and the participants’ point of view.
Join us on a journey that lands in advanced regex in Scala. We start in the
1940s AI research, passing the 1970's Unix pioneers, and soon end up in
pattern matching of text in modern programming languages like Scala.
Regex is the often forgotten super tool, that you can benefit from every day
-- on the command line, in your code editor and in your programs.
This introduction will teach you both the three compulsory operators and
some more advanced concepts like lookarounds and lazy quantifiers. You'll
also see how to use regex in Scala extractors.
Spotify is widely renowned for it's usage of a clever combination of servers and P2P for music distribution. This is what usually gets the credit for keeping latency low enough for users to enjoy a next to instant playback experience.
But while transferring music files fast is a major priority, if the backend services can't keep up, then we're still left with a bad user experience. So this time, and since I'm a backend guy, we'll shed some light on the server side.
We will talk about decoupling and how to tear down a product into small services in order to:
I'll share some real world examples, problems and learnings from my experience and, of course, how we chose to tackle them at Spotify.
by Scott Chacon
Git is the version control system most of us use every day. However, there are some strangenesses to it. Raise your hand if you really understand the ‘reset’ command. When it comes down to it, this is one of the most interesting, fundamental and amazing commands that Git has, yet nearly everybody is afraid of it. This is just bad marketing. This talk will de-mystify the ‘reset’ command so that you are not only comfortable using it, but can do new and interesting things with it and in doing so will arrive at a better understanding of the entire Git system. We will explore the Three Trees of Git (HEAD, index, work tree) and all the cool and mind-bending fun you can have with them.
by Jari Mäkelä and Ville Peurala
API design is one of the most fundamental skills of a great developer. This session will explain the principles of API design, such as abstraction layers, atomic operations and simplicity. We will also talk about viewing the API as a user interface. Key points will be demonstrated with code examples.
Reactive Extensions for Javascript gives you Monadic Functional Programming Superpowers for building your event-driven Javascript killer app. I'll teach you these powers by building a simple game for you, step-by-step. Check out Worzone (http://juhajasatu.com/worzone/) for a teaser.
Slides and sample code already available at http://github.com/raimohanska/de...
Even after few years of active development, the Node.JS platform is
still quite new for most of its users. The platform has some very
powerful features, but some of them can be easily used incorrectly and
thus resulting hard to debug bugs later on. This session will teach
some of the most common pitfalls where new developers usually stumble
when doing server side development with Node.JS and Javascript. This
session will be in Finnish.
by Scott Chacon
Open Source is a powerful tool that companies very rarely harness to it’s full potential. GitHub, a leading open source software hosting company, is fortunate enough to be on all sides of this issue – building a business model around open source tools, releasing several of their own libraries and services as open source and hosting the open source projects of several large companies (such as Facebook, Yahoo, Digg and Disney).
This talk will cover how open source can benefit your existing business – how to identify existing projects that can be open sourced, how to build a community around them and handle patches for them. We will also talk about how to build a business around open source tools successfully – what to do and not do and how the larger OS community will react. Finally, we will look at how open source projects manage themselves and what lessons we can take from them to apply to our professional development practices.