At first glance it seems silly to do batching in the reactive world. When I first started with reactive programming I thought I wouldn’t have to worry about things like resource starvation. After all, the reactive magic bullet was *magical*! But my magic bullet fizzled when it hit downstream resource constraints causing me to need batching. With a reactive web client library like Play Framework’s, I can easily spin up tens of thousands of web requests, in parallel, using very little resources.
Heroku recently announced early access to the new Heroku Kafka service and while I’ve heard great things about Apache Kafka I hadn’t played with it because I’m too lazy to set that kind of stuff up on my own. Now that I can setup a Kafka cluster just by provisioning a Heroku Addon I figured it was time to give it a try. If you aren’t familiar with Kafka it is kinda a next generation messaging system.
Lately I’ve built a few apps that have relational data. Instead of trying to shoehorn that data into a NoSQL model I decided to use the awesome Heroku Postgres service but I didn’t want to lose out on the Reactiveness that most of the NoSQL data stores support. I discovered ScalikeJDBC-Async which uses postgresql-async, a Reactive (non-blocking), JDBC-ish, Postgres driver. With those libraries I was able to keep my data relational and my app Reactive all the way down.
This year at OSCON I will be leading a hands-on lab and presenting about Reactive, Play Framework, and Scala. Here are two sessions: Reactive All The Way Down (lab) - 9:00am Monday, July 21 In this tutorial you will build a Reactive application with Play Framework, Scala, WebSockets, and AngularJS. We will get started with a template app in Typesafe Activator. Then we will add a Reactive RESTful JSON service and a WebSocket in Scala.
Modern web applications are a mix of a back-end services, dynamic web pages, custom static assets, and library-based static assets. To maintain a productive development process it is easiest to have all this stuff in one project. But in production there are a number of optimizations that can dramatically speed up the loading of the application. HTTP 304, Not Modified, responses enable the browser to not re-download an entire static asset a second time.
This week I will be presenting twice in San Francisco at SF Scala: Thursday April 10: Introducing sbt-web - A Node & WebJar Compatible Asset Pipeline for the Typesafe Platform sbt-web is a new web asset pipeline for Play Framework and other sbt-based frameworks. It can pull dependencies from both Node and WebJars. The pipeline covers all of the phases of client-side development, including: linting, compiling (CoffeeScript, LESS, etc), minification, concatenation, fingerprinting, and gzipping.
This week I’ll be circling around North America presenting about Play Framework and Reactive Apps. Here is the lineup: Tuesday Feb 11 in Boulder, Colorado at the Boulder JUG: 6pm - Intro to Play Framework 7:30pm - Building Reactive Apps Wednesday Feb 12 in Dallas, Texas at the Java MUG: 6:30pm - Building Reactive Apps Thursday Feb 13 in Vancouver, BC at the inaugural Vancouver Reactive Programmers meetup: 7pm - Building Reactive Apps It is going to be a fun week - I hope to see you at one of these events!
At Devoxx 2013 Stephen Chin interviewed me on his NightHacking video podcast about Play Framework, Scala, and Reactive. Here is the recording with some live coding fun:
IntelliJ IDEA 13 has been released! My favorite new feature is the sbt project support that alleviates the need to generate project files for Play Framework apps. Here is a short screencast that will show you how to create a new Play app with Typesafe Activator and then open that project in IntelliJ IDEA 13: Pretty sweet stuff!
Reactive apps are all the rage lately. The Reactive Manifesto now has over 2000 signatures and all of my recent presentations about Reactive have been packed. I’ve just recorded a screencast that explains the async and non-blocking aspect of Reactive. This screencast walks through how to do Reactive Requests and Reactive Composition with the Typesafe Reactive Platform. Using Play Framework it is easy to handle async and non-blocking requests (Reactive Requests) and compose them together.