Monday, 20 June 2016

DevNation 2016: Galder Zamarreño on “Building reactive applications with Node.js and Red Hat JBoss Data Grid”

Earlier this month I did an interview with the DevNation 2016 organizers to talk about my talk on forthcoming talk on building reactive applications with Node.js and JBoss Data Grid, the Infinispan version for which Red Hat provides professional support, certified integration, patches...etc.

The talk will be happen next Tuesday, 28th June at 3:30pm PDT, so if you're in DevNation and want to find out more about Infinispan and our new Node.js Javascript client, make sure you join us then!


Originally posted in:

Building reactive applications with Node.js and Red Hat JBoss Data Grid

JBoss Data Grid is a distributed in-memory key/value data store from Red Hat, which can be used for caching, temporary and permanent storage. Although Java developers were its primary audience initially, the team has been expanding its appeal to C++, C# and even Javascript developers.
The latest JBoss Data Grid release includes a fully asynchronous Node.js client for interacting with JBoss Data Grid servers and my talk at DevNation is focused on how Javascript developers can make the most of the client to cache or store their data.
The talk has been designed around a web application that promotes JBoss Data Grid talks in forthcoming conferences, user groups… etc. The application will contain a Node.js component whose job will be to interact with the backend JBoss Data Grid servers to store and retrieve data, as well as receiving events when new information has been added to the backend. Through the live coding of this application, the audience will get an understanding of how to interact with the newly released Node.js JBoss Data Grid client, and after the talk they’ll have access to the code to be able to try it themselves.
3:30 p.m. to 4:30 p.m.
Room 133
About the presenter:
This will be my first time speaking at DevNation and I’m really excited about it because it brings together speaks and attendees not only from the Java/JVM space, but from other important developer communities such as Javascript.
Although I started as a Java developer, over the past decade I’ve become more and more interested in other programming languages, in particular functional programming languages such as Scala and Javascript, which I’ve been able to apply directly at my job.
These days I’m hugely interested by the purely functional ones such as Haskell, Elm or Purescript because the lack of mutability makes their solutions both elegant and easier to reason about. I’m also keeping a close eye as well on the Erlang ecosystem, e.g. Elixir, because I feel that the predictable latency offered by the Erlang VM is something that it’s not so easy to achieve in Java Virtual Machine.
I think learning other programming languages is one of the best things a developer can do, because it opens your mind to different points of view, different ways to solve problems, and widens the solution space.

Monday, 6 June 2016

Node.js Javascript Client 0.3.0 out with improved stability and API docs

Earlier today Infinispan Javascript client version 0.3.0 was released whose primary focus has been stabilising and tightening existing functionality, deprecating some older methods, and documentation:

  • Multiple fixes around remote execution, remote listeners and iteration.
  • Improved failover handling logic to correctly deal with socket error and remote disconnect situations.
  • Removed getVersioned, getBulk and getBulkKeys methods since these are deprecated in favour of getWithMetadata and getAll. The examples in the README file have been updated.
  • Added API documentation for Javascript client. Online API docs for Javascript client can be found here.
If you're a Javascript user and want to store data remotely in Infinispan Server instances, please give the client a go and tell us what you think of it via our forum, via our issue tracker or via IRC on the #infinispan channel on Freenode.


Wednesday, 1 June 2016

HotRod C++ Native Client 8 Series

The Infinispan Team started the development of the new HotRod C++ Client (version 8) with two main goals in mind: update and refresh the code and reduce the feature gap between the C++ client and its Java big brother.

The work is still in progress, but since we're close to the 8.0.0.Final release, I would like to describe, in this and in the following posts, what's changed as of today.

Although there are a lot of changes and improvements in the code (protocol updates, segments topology, configurable balancing strategy... you can have a detailed view of the activities stream browsing to the Jira issues), I would like to focus on the following three big changes:
  • C++11 Standard
  • Remote Execution
  • Queries

C++11 Standard

Activities grouped under this title are motivated by the change in the development approach of the new features. Until version 7 we have followed the approach of keeping the baseline compiler requirements quite low to ensure a broad client portability, even to platforms with old compilers/libraries, but when we started development for the 8 series we felt that this principle would excessively complicate the implementation of new features.

With this in mind, we have fully embraced the new C++11 language feature (such as lambda function in the asynchronous interface method, or variadic templates) and pushed for extensive use of standard library container classes in lieu of our custom ones.

We know that in this way we may have limited use of the client to more recent platforms (bye bye RHEL 6) but fortunately the source is open and we have a very good build procedure based on cmake that can easily generates builder for the most used pair <compiler model, compiler version>.

The work on C++11 language adoption is still in progress and the goal on this front is to update the code wherever it results in improved readability (i.e. the auto keyword is a simple but powerful way to reduce code verbosity).

Because in this cycle we have added a few new features that required the introduction of some library dependencies and automatic code generation, the build process has become more complex, but we're doing our best to keep it manageable. We want to ensure that our packaging structure is what users expect on all of our platforms with respect to libraries, headers and documentation.

I will be glad to hear from any of you about any thoughts and suggestions, especially on the portability issues.

In the next post I will show an example of the new Remote Script Execution features.


Thursday, 26 May 2016

Back from GeeCON 2016

Thanks to everyone who attended the Distributed Streams with Infinispan talk at GeeCON 2016!! It was a blast to give the talk and although there was a small hiccup with one of the demos, I managed to fix it and the both demos were successfully delivered. The code from the demos can be found in this git repository, and the slides can be found here.

I presented at GeeCON back in 2011 and it was great to be back once again! The organizers keep doing an amazing job and can't wait to come back. I particularly enjoyed how GeeCON was embracing other programming languages outside the Java Virtual Machine. For example, there were talks on Julia and Elm programming languages, both of which were superb and I really enjoyed them :).

As always I could not attend all the talks I wanted to but heard good things about Tomer's "How Shit Works: Storage" and Martin Thompson's final "Top 10 Performance Mistakes" keynote. I hope to catch those when the videos are released.

Hope to come back to GeeCON next year! :)


Tuesday, 17 May 2016

Infinispan 9.0.0.Alpha2 (and 8.2.2.Final)

Dear Infinispan users,

we have baked two fresh releases for you today.

First off we have a new micro release of our stable 8.2 branch which fixes 57 issues. If you are using any other 8.x release, please upgrade to 8.2.2.Final as this contains a bunch of bugfixes and performance improvements in all areas.

On top of that we have a brand new Alpha release from our development branch: 9.0.0.Alpha2 which comes loaded with a few goodies:

  • SNI support for HotRod, which paves the way for server multi-tenancy
  • JDBC cache stores can use upsert (one of our oldest bugs !!!)
  • An httpd-style access log for server
  • The new sequential interceptor architecture
  • Lucene query caching
  • A grand total of 138 issues were resolved
Don't forget to check-out our roadmap to see the schedule and the things we want to do

Download it now, try it and tell us what you think on the infinispan forums or come and meet us on IRC: channel #infinispan on Freenode. 

Monday, 9 May 2016

Infinispan coming to GeeCON 2016!


GeeCON 2016 is taking place in Krakow this coming week and I'll be speaking about data processing with Infinispan's distributed streams on Thursday, 12th of May. So, if you are interested in how to analyse your data using standard Java Streams API in a distributed environment, make sure you come to my talk! :)


Friday, 15 April 2016

Infinispan Spark connector 0.3 released!

The Infinispan connector for Spark allows to use Infinispan server as a datasource for Spark stream and batch jobs. This release brings compatibility with Spark 1.6, and also to Infinispan 8.2.1.Final, that contains a fix to allow proper failover when nodes leave and join the cluster during the job execution.

For the list of changes please see the release notes, for instructions on how to get started go to the documentation, and report any issue to JIRA.