Author Archive

Making it easy to work with Open Source Projects… [Update]

Posted in About on April 11th, 2012 by Abhishek RakshitBe the first to comment

Whoops! We made a mistake.

We invited everyone to signup for access to our new website. Due to some permission settings some of you were not able to access the signup form. Please submit your name here:


Making it easy to work with Open Source Projects…

Posted in About on April 6th, 2012 by Abhishek Rakshit2 Comments

We have been trying to build something amazing to help developers quickly understand how to get moving with large projects. As we have been doing that, we have been hearing a growing set of requests for help with Open Source Projects.

We have spent the last last few months improving our engine and building a couple of cool features to help the users with open source projects – in large part based on ideas that were sent to us. Well, it’s Spring, and it’s time to pull the covers off.

We are almost ready for our public release, but before that we want feedback from the community on what we have built. Want to be one of the first to find, sign up up now here:

Update: Some of our initial visitors had some issues while completing the feedback form. We apologize for it and the issue has been fixed. If you face any issues please drop us a note at Thanks!


Eclipse Tabbed Editor Extended.. Embedding a GEF Editor

Posted in Eclipse, Java, User Experience on March 17th, 2011 by Abhishek RakshitBe the first to comment

Finding the right format for users to edit and view your Eclipse plugin’s data can be tricky. Eclipse provides many different types of editors for modification of its resources. Some examples of these are the Java, Text, JSP, XML, Ant editor etc. It also provides tabbed editors like the Plug In Manifest Editor which can have multiple sub editors as tabs in one editor. A simple example template to extend the tabbed editor when creating a new plug-in, is provided in Eclipse by default. For our project we needed to add a compare editor and a GEF editor as sub editors. This post should help you become more familiar with creating custom tabbed editors in Eclipse.

read more »


REST Architecture – Simplified

Posted in Agile & Development Methodologies, Design Patterns & Architecture, Java on November 14th, 2010 by Abhishek Rakshit7 Comments

Recently, while working on some collaboration functionality for our suite I got a chance to work on a REST (Representational State Transfer) based web server. There are many great resources about REST out there but most of them are quite technical and it took a me a while to get it. So, in this post I am trying to explain in some simple terms what I have understood about REST. read more »


Commands and the MVC architecture

Posted in Design Patterns & Architecture on June 12th, 2010 by Abhishek RakshitBe the first to comment

Most of us agree to the benefits of using commands to provide the undo-redo functionality in an MVC based application. Working on one such highly interactive application, the question which often arises is where in the code base do the commands belong: in the model, in the controller or as a separate entity. This issue has been discussed before and people seem to have quite disparate views implying a vague understanding of this problem. In my view commands should be considered separate from both the model as well as the controller. This becomes really important while organizing your code to have clear abstraction boundaries and conform with the principles of cohesion and couplingread more »


Cohesion and Coupling in Large Projects

Posted in Design Patterns & Architecture on June 1st, 2010 by Abhishek RakshitBe the first to comment

Cohesion and Coupling are commonly used metrics to gauge the design quality of a software project with regards to maintainability, reuse and understandability. These issues are commonly faced by developers working with large codebases. The mantra for these issues is to have a highly cohesive and loosely coupled codebase.

Simply stating, Cohesion means placing related code in one particular unit and Coupling is the degree of dependency between two or more units. If the code is highly coupled i.e. different units depend a lot on each other and modifying one feature can cause unwanted side effects. To avoid these the developer has to understand each of the related classes to update the behavior safely. Loosely coupled code is easier to reuse and on modification does not have undesired ripple effects in the code base. Adding to the benefits highly cohesive code promotes easy code understandability as everything is placed closely together. These aspects are not restricted to classes but apply to everything from methods in a class to packages in a project.

read more »


Dependency Injection, Frameworks, and You

Posted in Design Patterns & Architecture, Libraries & Frameworks on May 6th, 2010 by Abhishek Rakshit2 Comments

3D Character and Question Mark
I have previously tried explaining Dependency Injection and how it can be beneficial to any project. This leads us to an important question about whether to use a framework or to do injection manually. Using a framework all the time may not provide you with additional control, rather at times it may further complicate the code. On the other hand implementing dependency injection manually can sometimes become more time consuming and painful. So how do we actually choose?
read more »


Types of Dependency Injection

Posted in Design Patterns & Architecture, Libraries & Frameworks on May 4th, 2010 by Abhishek Rakshit1 Comment
In continuation with my effort of trying to simplify Dependency Injection, I want to elaborate on the different types of injection. Dependency Injection is decoupling an application and service so that the application does not need to know anything about the service implementation. Dependency injection can be broadly classified in three categories: Constructor, Setter and Interface.

Object dependencies when passed as parameters to a constructor is termed as Constructor Injection.

public class Account {
  public User user;
  public Account (User user) {
   this.user = user;

Pico Container is a framework which prefers constructor injection. Constructor injection ensures that the application object is created with all its service dependencies satisfied. read more »


Navigate through Large Projects with Ease using Eclipse

Posted in Developer Tools, Java on April 27th, 2010 by Abhishek Rakshit2 Comments

When working with large code bases, finding your way around can sometime get quite challenging. In such cases, Eclipse makes a developer’s life a lot easier with its shortcuts and quick navigation features. Below is a compilation of a few shortcuts that I have found really useful.

Quick Navigation in the Workspace

While working with a large projects one of the challenges we face is to quickly find resources in the workspace. A very useful shortcut to find any kind of Java resource is Ctrl+Shift+T. It opens a dialog box to search for the needed resource and wildcards can be used in cases where you are not sure about the name of the class. Similarly Ctrl+Shift+R can be used to find any type of resource (even non Java) present in the workspace like jsp’s, xml’s etc. read more »


Simplifying Dependency Injection

Posted in Design Patterns & Architecture, Libraries & Frameworks on April 14th, 2010 by Abhishek Rakshit5 Comments

A lot has been written about Dependency Injection (DI) however, it still remains a complicated topic. The main articles on this topic are quite thorough and provide really good information but in the process, the basic principle behind DI becomes hard to comprehend. DI is in fact fairly simple – its main goal is removal of a class dependency on some code. This class dependency is then ‘injected’ into the code where it is needed. Using dependency injection helps in code maintenance, re-usability, testability, and improves code readability.

An Explanatory Example
In one of my projects, we needed to use DI to inject different implementations into a core service. Our project needed to be deployed to multiple types of servers while we wanted to share large portions of the core code and at the same time have different functionality for users.

read more »