20 December 2014

Reactive programming with Reactive Extensions (Rx)

Reactive programming is seeing a lot of interest these days. Reactive Extensions is one way of adressing the problems of asynchronous, event-driven programming. Originally developed in Microsoft, it is one of the libraries that they have open sourced and it is now quite popular also outside of MS. Netflix is now the poster boy for Reactive Extension and they run the Java version.

I have put together some resources for people wanting to have a look at it.

Here is a short interview with Erik Meijer, creator of LINQ and Rx.NET, where he explains Reactive Extensions in less than 15 minutes. High ROI!



http://reactivex.io/
This is the homepage of all the variants of reactive extensions. It is actively developed and now is nicely branded. Their resources page is extensive and worth a look : http://reactivex.io/tutorials.html.

https://gist.github.com/staltz/868e7e9bc2a7b8c1f754
This excellent blog post is what made reactive programming start to click for me. This is concrete, clear and well written.

http://reactive-extensions.github.io/learnrx/
Netflix' online tutorial for Rx.js. This is very good. It takes a while to get through the excercises where you implement map, filter, etc. but after that it is a very good intro to practical use of Rx. Highly recommended!

http://www.introtorx.com/
A series of blog posts turned into e-book that gives an intro to Rx.NET. If you're on the .NET platform this might be just what you need.

http://www.infoq.com/presentations/netflix-rx-extensions
http://www.infoq.com/presentations/Netflix-API-rxjava-hystrix/
A couple of presentations by people on Netflix about how they are using Rx.Java. Jafar Husain and Ben Christensen are very good presenters and give a good overview.

http://blog.danlew.net/2014/09/15/grokking-rxjava-part-1/
A blog series about Rx.Java on Android but it explains Rx generally. Well written and helps you grok Rx easier.

https://www.youtube.com/user/reactconf
There was a mini conference about reactive programming in London called React 2014. For all of us that could not attend the presentations are on YouTube.


13 December 2014

Reactive programming with actors

I have looked into reactive programming lately. Here are a few resources I've put together during my research.

The first resource is an introduction to the theory of actors from the horses mouth. Erik Meijer interviews Carl Hewitt, father of the actor model. They have fun and the explanation is clear and straightforward.



http://www.infoq.com/presentations/traits-reactive-applications
This presentation shows Jonas Bonér explaining the tenets of the Reactive Manifesto and how the Akka actor system adresses reactive programming.

https://www.coursera.org/course/reactive
https://www.coursera.org/course/progfun
Coursera has two courses that are relevant. The top link is about the Principles of Reactive Programming. Unfortunately the course has run and it has no future sessions scheduled yet, but it looks good. The other course is a "prereq" for the reactive course that teaches Scala.

http://www.javalimit.com/2010/01/actor-thinking.html
Kresten Krab Thorup writes about how to think about actors when making actor systems.

http://www.scottlogic.com/blog/2014/08/15/using-akka-and-scala-to-render-a-mandelbrot-set.html
A very nice practical write-up about using actors for parallell computing of a mandelbrot set. Well written and easy to understand.

http://www.manning.com/kuhn/
Roland Kuhn is writing a promising book about Reactive Design Patterns. It is currently in the Manning Early Access Program but the first chapter that is an intro to reactive programming is freely available already.

http://www.slideshare.net/jboner/building-reactive-applications-with-akka-in-scala
Slideshare from Jonas Bonér. It isn't the same as watching the guy give the presentation but on the other hand you can get through the slides quicker.

https://parleys.com/channel/53a7d269e4b0543940d9e535/presentations
The presentations from Scala Days 2014 are out on Parleys. There is a bunch of presentations on reactive programming which in Scala basically means actors.