Wednesday, December 1, 2010

Commonly used patterns for designing Scalable System

Designing a scalable system can be a tricky thing, before you jump into action check out a great post by Ricky Ho where he describes the eight common design patterns:
  1. Load Balancer
  2. Scatter and Gather
  3. Result Cache
  4. Share Space
  5. Pipe and Filter
  6. Map Reduce
  7. Bulk Synchronous parallel 
  8. Execution Orchestrator
I think Rick done a wonderful job. Thanks ! Can you think of anything else?

Wednesday, August 11, 2010

Adventures with ØMQ and Java : Installation

ZeroMQ - "fastest. Messaging. Ever." - well we'll see about that :)

Anyway, first thing first...we need to install ZeroMQ and ZeroMQ Java bindings in my case.

I am using Ubuntu 10.4:


First. install  ZeroMQ ( follow the instruction from the webiste http://www.zeromq.org/area:download#toc1)

Next, install Java Bindings (read this http://www.zeromq.org/bindings:java) - 
Important, make sure your JAVA_HOME is set to JDK location before you run autogen.sh script run ldconfig -v  at the end if you get:
"...cannot open shared object file: No such file or directory" 
when you trying to run your application  (thanks to this post)
Don't forget to include :
java -Djava.library.path=/usr/local/lib


That's it - Happy messaging!



Thursday, August 5, 2010

Tip: Akka 0.9.1 release (Scala 2.8) with Netbeans 6.9 (scala plugin)

I love Scala, for many different reasons - Scala actors is one of them.

However, it seems that Scala does not have a built in support for alternative serialisation (e.g., Google Protocol Buffers)

So I've decide to try Akka:
Akka supports using Google Protocol Buffers to serialize your objects. Protobuf is a very efficient network serialization protocol which is also used internally by Akka. The remote actors understand Protobuf messages so if you just send them as they are they will be correctly serialized and unserialized.  - from Akka website
Sounded good to me, so I've tried to compile some Akka sample code with Netbeans 6.9 IDE (did I mention that I also love Netbeans? well I do). Akka website gives you instructions how to set-up your developing environment. Basically you have several options:
  1. MVN option (maybe next post)
  2. Simple Build Tool (SBT)
  3. Add Akka jars to classpath

Personally, I think SBT is awesome, really do but it doesn't help me when I want to work with Netbeans IDE, not by much anyway (in my opinion).

Anyway, so back to the tip part: If you want to include Akka jars to your Netbeans project you need to follow the list of Akka's core jar files:

These are used in the core of Akka, so you need these.

  • configgy-X.jar
  • netty-X.jar
  • protobuf-java-X.jar
  • multiverse-alpha-X.jar
  • jsr166x-1.0.jar
  • geronimo-jta_1.1_spec-1.1.1.jar
  • jgroups-2.9.0.GA.jar

This didn't work for me until I've also included akka-jta-X.jar and akka-core-X.jar.

Hope it helps and saves you some valuable coding time :)

If you had  better luck or other experiences compiling Akka based project on Netbeans 6.9, please do comment.

Monday, July 19, 2010

myregexpr - regular expression just got easier

I am working on parsing a large set of linked data. It is tricky as you end up trying to find the right regex pattern to fit them all - sounds impossible!? Well, we'll see about that :)

Anyway, I would like to point you to a great tool that comes as a Java applet and as an Eclipse plug-in

http://myregexp.com/eclipsePlugin.html

It allows you to specify a regex pattern and enter a sample text that highlights the matched sections - cool!


Well, back to parsing now...

Sunday, March 28, 2010

Surfing the Google Wave

Last Tuesday, I've attended on of Google's Tech talks on the new GO language and Google Wave. As to GO language, well I wasn't that impressed, but I'll probably need to dedicate a separate post for that.

Google Wave talk was ok, I mean it was short, but it was enough to get a general idea on the topic. I believe Google Wave as communication tool has a lot of potential, but even more as a collaboration one. Inspired by the talk I am now looking at implementing my first Google Wave robot and extension the API is still very limited, but the new version is much better than the previous one....

Tuesday, March 9, 2010

Okular - Ubuntu pdf viewing just got better

How often you  find yourself reading a paper and having the sudden urge to highlight something, to make a comment or just draw a circle around the text.

Well, today I've discovered Okular that has all of the above features and more:

"Okular is a universal document viewer based on KPDF for KDE 4.

Its development began as part of Google's Summer of Code program. The description of the project is located at KDE Developer's Corner. Okular combines the excellent functionalities of KPDF with the versatility of supporting different kind of documents, like PDF, Postscript, DjVu, CHM, and others.
The document format handlers page has a chart describing in more detail the supported formats and the features supported in each of them."

- from Okular website

ENJOY! :)

Sunday, January 31, 2010

Kademlia implementation

Up until now, I have used opedChord as my DHT middleware. It is written in Java and Scala, as previously posted has a good compatibility with it, however, it limits Scala functionalities. I have decided to try an implement my own DHT (Kademlia).

It is not a common practice to implement something yourself, if there is a perfectly good open source project available. However, I believe I can learn a lot from the experience both about DHTs, in particular Kademlia and Scala of cause.