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

Strings, lists & gatherers

Problem statement: You need to send a dynamically constructed stream of bytes over some I/O channel. An illustrative example As always, I shall take an example in the internet space and more specifically in HTML. Let us say that you have a classical two dimensional array whose dimensions are not known at compile time. The contents of this array happens to be strings. This 2d array needs to be printed.. Read More

Why you can’t always just throw more hardware at it

A long time ago, people used to worry about the efficiencies of software they used to write. Then came a time when processors just kept getting faster every month the pace wouldn’t slow down even after crossing the 500MHz mark. Somewhere around this time, people started writing exceptionally bloated software and the bloat started to grow at a phenomenal pace. Then came the new catch phase hardware is cheap, we.. Read More