Surprising learnings from my 4 year old daughter

Today, my daughter surprised me multiple times (ofcourse she does it every day, but today was something special) with her actions. She reminded me about the fundamentals of computer programming in simple and easy steps. This post is not for something you can learn, but to find "Inspiration" from surroundings and applying them in your programming life. This helps you to enjoy and appreciate both "Work" and "Personal" life.

A new position in software job market “Code Quality Engineer”

Software Industry is emerging, and new terminology, acronyms and positions have replaced the old ones. Every change has a purpose, just calling the same old practice with a new term doesn’t make any sense. Recent past we are hearing about new roles in the job descriptions as Individual Contributor, Quality Engineer, DevOps and many more. If you consider the old word “Quality Analyst” and its replacement “Quality Engineer” we can understand  the mind shift. In this article I am trying to make a point that the new terms are not just the replacements but are new proposals with their own traits. Later on explaining about the new position I wanted to have in every company caring about the software quality.

What is meant by developing Testable code?

“Testable code” one term majorly used but merely defined. In this article I wanted to touch up on some of the aspects to consider for creating testable code along with demy perspective on how to achieve it. In today’s market, the only buzz word you hear is automation. Automate this, automate that, automate everything (end to end). When you want to automate something left, right and center then you need to develop the application using certain principles and following some best practices. The code developed by following these principles is called Testable Code.

What is a Test Double?

“Test Double” a term that has a wide reach in the programmers, following TDD approach. If you are new to this term then you will be taken aback immediately, just like me. My first impressions on reading this term are “it has something to do with Double type”, “A well known example for approach to automation testing”, “an algorithm to be followed for testing a specific aspect” etc., but after reading some more about it, I realized none of my impressions are correct.

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.