Playing with Akka + Groovy + REST + Maven

First things first, I consider myself a polyglot programmer reguarly running the spectrum from Java to Groovy to JRuby to Python.  Scala is certainly interesting from the outside looking in, but I haven’t had the time to jump in with both feet.

My latest forays into Akka came as a result of some investigation I was doing for a new platform at work.  Basically, I was looking for something to handle job/task execution across a number of different physical machines.

One option would have been to rig something up with Groovy, a simple daemon exposing a RESTful API (or fetched jobs from a message queue) that used GPars behind the scenes to manage concurrency on each individual machine.  Job state would be bubbling up to an overarching service that could manage scheduling across a few machines.

We’re already using Groovy/Java on a couple other newish projects and ideally the solution to this problem would also fit in that box.  Scala, as interesting a language as it is wouldn’t be fair to thrust on a team who’s language of choice has historically been Perl (but is moving towards the JVM).

And so I set forth to survey the landscape for Akka + Java/Groovy examples.  In particular, I was looking for something that combined Remote Actors + HTTP/REST, perferably being built in Maven (but I’d take some Gradle).  I found a few, the chat server ones looked relevant but a little bit dated.  I ended up putting something together myself and pushing it to github.

https://github.com/ajordens/akka-job-scheduler-example

It uses Akka 1.3 and has a server component (runnable via mvn jetty:run) that hosts remote actors and a simple REST resource.  There is also a client service that can be run on multiple machines, it polls the server for jobs, executes them and fires a response back.

The example is trivialized but it does tie a number of different pieces together.  One bit of initial grief I had was around trying to get akka-http running in Jetty 8.0.4.  It wouldn’t fly, and I ended up having to fall back to 7.4.0.

 

Enjoy.

 

 

Facebook-style Feature Introductions for Web Apps

Onver the last short while, I’ve been putting together a new service aimed at delivering Facebook-style feature introductions to any web application/site.

You know, the little step-by-step walkthroughs of what’s new/changed.

In the interest of being lean, I’ve been focusing on getting a simple foundation in-place and building it out based on personal needs and feedback from the community.

 

The ONE Feature Introduction:  http://onesecondshy.com/one-feature-introductions

The ONE Feature Introduction walks a user through particular features or aspects of your site.

Think of it as a guided tour that helps ensure your users can effectively use your application.

 

At this point, I’m looking to broaden my reach and gather the next round of feedback as well as getting it rolled out and active on additional sites.

From the development side, it’s a fairly simple low-touch integration.  That being said, I’m more than willing to jump in and answer any questions / ensure that the integration remains as simple as possible.

So if you build web applications, or run a site with regular content updates, I’d love to talk more.

Happy Holidays!

iPhone 4S and iOS 5 – A night and day difference

Up until yesterday I was the guy you saw huddled in the corner at Starbucks basking in the pale glow of an iPhone 3G.

Everyone around me had upgraded, at _least_ to a 3GS, but my unwillingness to give the Canadian carriers any more money (early upgrade fees) kept me dated.

That is until yesterday when an unlocked 32GB 4S showed up on my door step, and I must say that the difference is remarkable… unbelievable really.

So it’s with pleasure that I can now dust off instagram, yelp, rdio, twitter, runkeeper and facebook on the phone. Constant crashes on the 3G basically forced me to use the phone as… a phone, for calls and text messages.

On the iOS 5 front, it’s definitely breathed new life into my trusty iPad (mind you I was running 4.2 previously).

Split keyboard, tabbed browsing, wifi sync and personal wifi hotspots to the rescue.

That’s it for now.