What coding in C feels like in 2016

It has been close to a decade since when I had to code in C/C++ as part of my job. The only occasions where I had in indulge in C++ was in various algorithmic coding contests that used to take part in a few years ago. The only thing that helps me keep in touch with C is writing modules for the nginx webserver. I happen to be the creator.. Read More

Relevance of concurrent v/s parallel systems

It appears that making a distinction between concurrency and parallelism is something that is becoming a topic of discussion in itself. The second post in this series is not an original content. It is actually a year old post that I just stumbled upon that talks of the fundamental differences in the kind of problems that concurrency and parallelism could solve. Here is the link without much further ado: Parallelism and concurrency.. Read More

Understanding web server cluster performance from first principles

As systems become complex, our ability to understand, and more importantly foresee why things behave in a certain way diminishes. Hence we resort to symptomatic treatment as a tactic to resolve problems. This is commonplace when it comes to tuning the performance of large scale systems. Our willingness to disproportionately value benchmarks over theory is proof that we are losing ability to reason about emergent behaviour of non-trivial systems. This article.. Read More

Is indexing a form of caching?

A good amount of software engineering goes into an activity that people describe as “make code run fast“. What people usually mean by that statement actually is “make code run inexpensively“. The reason why I say this is performance improvements are usually attempts at better overall resource utilization. There are a few situations wherein the objective is to actually make the code run faster even at a higher cost but.. Read More

Pointer internals reinvented: Go

I have finally started dabbling with Go to the point where I’m fairly close to taking my first project live in a heavy duty production environment. The first post on the language happens to be on the language internals i.e. something that is not visible to the programmers for the most part. The C programming language was when I was first introduced to pointers and the concept there was fairly.. Read More

Languages & IDEs; what begets what

The tools at our disposal to punch in source code & then run it seems like topic that would have been interesting in 1990s but irrelevant in this day & age. But being someone who did start programming at the dawn of the said decade and as someone who does see new languages evolve to this day, the armchair exercise did seem worthwhile. Disclaimer: this post is quasi-autobiographical in nature;.. Read More

What the hell is dependency injection?

Hazard warning: this post is not about Java though it might appear to be so if you go through the first few paragraphs. If anything, it is about how we call the same thing by seemingly different names. One of the worst hellish concept that any programmer has to learn when moving over to the world of Java is the notion of dependency injection. The beast itself goes by many.. Read More

Type erasure misconceptions in Java

Generics were added very late in Java (J2SE 5) and one of the challenges with it was to maintain backward compatibility. Type erasure is a technique that the language and runtime designers chose to overcome this problem. Here is a simple demonstration of type erasure in action. import java.util.ArrayList; import java.util.List;   public class Erasure { public static void main(String args[]) { List<String> ls = new ArrayList<String>(); System.out.println(ls.getClass().getName());   List l.. Read More

IDE provided illusions for Java

Lambda functions, or more specifically the lack of it has always been an annoyance in Java. The closest alternative has been implementation of interfaces as an anonymous class. Here is an example: IntelliJ does a nice folding of this code to give an illusion of closures. This makes reading of the code a little more fun as seen here: