Algorithm Analysis & Metrics

Algorithm, a famous yet underestimated word used by every programmer in the software industry. There will be no interview without using the word “algorithm”, there will be no day in a programmer life without thinking of “algorithm” he is implementing. What is the meaning of this famous; infamous word, why is it so important, why do some of us feel its utter non-sense, and why do many others ask so many questions in the interviews..and so on and on.

Don't you think we have a lot of “WHY’s” to answer even before starting this topic?

Difference between final, finally and finalize

Every java interview might have this question asked for a beginner. Probably this is the most known question and well sort for answers. Though there are tons of other articles explaining the differences about these, I am planning to put those difference in a slightly different and more understandable. I am expecting that I will definitely reach my objective, while it’s the perception of the reader that is really important.

GIT Cheat Sheet

GIT is a distributed source code management system. It helps in versioning the code we write in day to day life. And yes GIT is not just for the programmers to store their thousands of lines of code and put them in the SCM repository.
GIT can be used by anyone and everyone. Its ease of use, minimal foot print and distributed storage helps many people who need versioning. For example, an author can write a book, using git, he can commit his changes for each chapter and if needed, he can rework on the previous versions. A civil engineer can make his blueprints and store in GIT so that he can work from several versions if at all any changes are to be done.
Due to the elegance, and ease of use the GIT is the most popular and powerful SCM available on the market as of today.

Maven Introduction

Maven is an open sourced project supported by Apache Software Foundation, which is gaining most importance in the software development industry currently. The main reason for the increasing adaptation of maven in most of the companies is because of its easy to use and maintain features.
Some of the features that makes it more interesting are
  • Dependency management
  • Distribution management
  • Versioning
  • SCM Integration
  • Site generation
  • Test Integration
  • Hundreds of plugins to customize
  • and of course, huge community support

Syntax highlighter sample post


Today am working on several ways for highlighting the syntax I write on my blogs, after some good research I found this simple library from Alex Gorbatchev. His library is awesome and very easy to work. I have used his library and hosted on my cloud server to use the syntax highlighting as and when needed in my blogs.

Have integrated the scripts and css elements in my blogs layout, and the only thing I need to do while posting any code in blogger is to properly align my code in the <pre /> tags.

I am sampling one program for the testing purpose in this post.

Steps I followed :

  1. Write a blog post
  2. Where ever I need to embed some code, copy the code from an IDE
  3. Paste the code in the “Source” tab of the Live Writer editor and
  4. Wrap the code with <pre class=”brush: java”> </pre>
  5. Ola! the code will be highlighted and formatted in the blogger. 



import static org.hamcrest.Matchers.containsString;
import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertThat;


import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.methods.GetMethod;
import org.junit.Test;

public class HttpClentCall {

public void callSimpleURL() throws HttpException, IOException {
String url = "";
HttpClient client;
client = new HttpClient();
HttpMethod method = new GetMethod(url);
method.addRequestHeader("Authorization", "xyz");
InputStream bodyIS = method.getResponseBodyAsStream();
StringBuilder buffer = new StringBuilder();
BufferedReader bsReader = new BufferedReader(new InputStreamReader(
String line;
while ((line = bsReader.readLine()) != null) {
assertNotEquals("", buffer.toString());
assertThat(buffer.toString(), containsString(""));


Hope this works for me.

Difference between Abstraction and Encapsulation

Abstraction in OOPS is well articulated, and states clearly of hiding the unnecessary details from other Components. Abstraction and Encapsulation comes hand in hand and often lead to misconceptions. In this article I would love to clear out all the ambiguity you ever had in mind about Abstraction and Encapsulation and their implementation in Java.

Wikipedia Definitions:

“In computer science, abstraction is the process of separating ideas from specific instances of those ideas at work. Computational structures are defined by their meanings (semantics), while hiding away the details of how they work.”

Encapsulation is the packing of data and functions into a single component. The features of encapsulation are supported using classes in most object-oriented programming languages, although other alternatives also exist. It allows selective hiding of properties and methods in an object by building an impenetrable wall to protect the code from accidental corruption.”

In layman terms, abstraction means hiding, and encapsulation means packing / gluing things together.

Factories in Software Development

From our childhood, we hear a lot of things about “Factories”, some are good and most of them are bad. That too if you are coming from a country like India, you will hear more bad stories of the factories destroying the communities and health.

In my own experience, I have heard a lot of criticism on factories, like they spoil the environment, contaminate the water, air and soil and devastation of the crops. When compared to the opportunities these give to the jobless the devastation gains and protests start.

Luckily, in Software development the “Factories” are doing the quite opposite of the physical “Factories” around the globe. As I have said above the “Factories” we are talking about reduces the pollution, improves the quality and gives more opportunities. (Ok finally one thing in common).

Sorting Binary Array with O(n) complexity

Welcome back, today am going to discuss about a solution I came up when solving a sorting problem given by my colleague. The problem statement is very simple and straight “Sort an Array of Binary Digits, with O ( n ) complexity (without using extra memory)”.

Novice Info: Uninstalling Software From Eclipse

Today, I am planning to present a small tip, which I wanted to share from a long time. Many of us use Eclipse for all our development needs. The main reason being, it is well organized and has the wonderful framework for adding any capabilities for building on more features to it. In my opinion the awesome feature of writing and adding Plugins and Features of the eclipse for its extended support is the main reason for its penetration into the developer market.

Importance of Data Structures and Algorithms in Programming

Today, I had a discussion with my colleague (Raveendra Chikkala), about Data Structures. It was a really interesting and motivating discussion, and today I wanted to share it with all of you. I have never taken the complexities of the algorithms seriously till date in my day to day programming, though I cared a lot on the design patterns and worked hard on making the system loosely coupled and having high cohesion.

Gist of the discussion is as follows:

Question: Why do we need to think of Data Structures, what do you mean by Data Structures. I know we use the data structures to store the data, and faster retrieval.