On Java, Agile, Open Source, Architecture and anything in between

I’m currently working on a project that involves using Apache Shindig. As you may know Shindig relies heavily on caching. While generally a good thing caching is a pain during development. See my post at the Avisi blog on how to disable this in Shindig.

Putting Talend Open Studio projects under version control

When you are working on OS X - I’m not sure if other OS’es have the same issue - your Talend Open Studio workspace is located under


That’s right the workspace is placed inside, which isn’t a very convenient place. Although Talend Open Studio is based on Eclipse it isn’t keen on moving your workspace to a different location. The easiest way around this issue is to replace the above workspace directory with a symlink: 

ln -s ~/workspace

From now on all your Talend jobs are created in a workspace under your home directory. To put the contents of this workspace under version control I recommend the following principles (source:

First, avoid Subversion/CVS as they will likely get you into trouble since they add info to each directory that is in version control. Talend Open Studio (TOS) tends to wipe out directories and recreate them, so you will have problems with those two tools complaining that they have lost information. Try to use a tool that does not add per directory entries (like git). I chose git.

You will need to enter the entire workspace into version control, including the hidden metadata and compilation directories (.metadata, .JETEmitters and .Java). With each commit, make sure you grab all of those files that have changed.

For each commit, do not commit until after you have exited TOS.

If sharing across platforms, or with other developers, you may need to keep track of the different paths on your machines:
For example, when you export a job, it will successfully export, but with previously compiled classes if the .classpath file in the .Java directory contains paths not on your local machine. Another way to put it, If someone else commits the project, you check it out, you make changes, you export it, the running code will not reflect the changes you made, even though the source does reflect those changes.

While versioning an entire workspace isn’t ideal it’s the one solution that’s guaranteed to work. If you can suggest better alternatives please let me know.

Finally to verify whether your workspace is still valid after performing the above, just open a job and click on the ‘code’ tab. If you see generated Java code you know your workspace isn’t corrupted.

Good luck!

Healthy RSS addiction

I’ve been a long term fan of RSS feeds. It’s ideal when following tech news. In the past I used to read my feeds on a computer - using a mail client - but nowadays I prefer my iPad.

The following screenshot from Google Reader shows my addiction over the past year. 

Hmmm a little over 7 tech articles/blogs a day, that sounds about right. Although… this doesn’t include my reads on Hacker News. Perhaps it’s more serious than I thought ;)

Cross posted to

Has Facebook silently killed Open Streams in favor of Open Graph?

I was looking at the JSON Activity Stream specification today. Facebook is listed as one of the parties to support this format. Indeed I’ve found a blog post written in April 2009 that confirms Facebook has implemented JSON activity streams. Facebook calls it Open Streams.

In the meantime all references to the Open Streams developer documentation have been removed. Looking at the current Graph API it doesn’t seem to conform to the JSON activity stream 1.0 format. Did Facebook (silently) stopped supporting this format?

Currently I’m using the build-in HTTP server in Java 6 for (integration) testing RESTful services. Although this has the advantage of adding zero dependencies, the API of REST-assured looks cleaner. Something to keep in mind when you need to test (many) services.

This book is available for free online under the Creative Commons license.