BlockingQueue from java.util.concurrent package

There are times when you want, for performance reasons, one thread to produce objects and another one to consume it in parallel. You can definitely achieve this with the bare-bones thread API. But it might get a little messy depending on your exact use case (all that synchronize/wait/notify could drive you insane). And then what if the producer produces too fast and the consumer consumes too slow. Now you have too many objects queuing up in memory all waiting to get processed. Fear not – JDK Concurrent API is here to help.

Continue reading

CouchDB – The Schemaless Database

Most corporate databases used today are relational in nature. You have tables, columns, rows, column indexes, relations between tables using associated columns, etc. All this means you are dealing with structured data. Think banking systems, mortgage systems, customer and order tracking systems. These systems are well served with relational databases.

Now think about the systems that a lot of us deal with nowadays. Unstructured or semi-structured data as available in Social sites (facebook), wiki, blogs, news sites,etc. This data is clearly not relational in nature. Instead they are document-centric in nature. While some RDBMS can store this type of data, its not natural for them.

Continue reading

Apache Camel

Integrating systems in a complex enterprise landscape can get tough. You have all kinds of interactions going from one system to the other. Many of them taking in and spitting out different data formats. Which means you have to not only worry about the routing between these integrations but also the transformations between them. Updated to use Camel 2.11., Spring 3.2.2 and ActiveMQ 5.7.0. Continue reading

GIT for Version Control

I generally do not get into version control wars. Working in large firms often means you are told what to use. It is less often the case that you get to choose. A whole ecosystem is then stood up around version control – people to support it, specialized hardware, processes, separation of duties and what have you. All for a good reason, but developer productivity falls over time. Continue reading