Aug 242011

I typically do not share articles on this blog but I found this white paper today which was very enlightening and doesn’t seem to have gotten the deserved attention. The author has done an excellent job of explaining the shortcomings of GNU Make. I now question why I use Make:-)


Below is excerpt and a link to the article. Since the original post doesn’t have space for comments, we can use this post for our discussion.


GNU make is a widely used tool for automating software builds. It is the de facto standard build tool on Unix. It is less popular among Windows developers, but even there it has spawned imitators such as Microsoft’snmake.

Despite its popularity, make is a deeply flawed tool. Its reliability is suspect; its performance is poor, especially for large projects; and its makefile language is arcane and lacks basic language features that we take for granted in other programming languages.

Admittedly, make is not the only automated build tool. Many other tools have been built to address make’s limitations. Some of these tools are clearly better than make, but make’s popularity endures. The goal of this document is, very simply, to educate you about some of the issues with make—to increase awareness of these problems.


Read more

Aug 092011

Similar to other prediction mechanisms, branch predictors are also better at predicting strongly biased branch outcomes.

This rule is well-understood and commonly used, e.g., the Intel Itanium compiler assumes that prediction accuracy = MAX(percentage_taken, percentage_not_taken) when performing its profile-guided optimizations. Thus, to improve branch prediction, we must increase the number of biased branches while reducing branches that are oscillating. This post shows a simple trick to do so.

Continue reading “Quick Post: Software Trick to Improve Branch Prediction” »

Aug 072011

Big-O gives us a tool to compare algorithms’ efficiency and execution times without having to write the code and do the experiments. However, I feel that many people misuse the analysis unknowingly. Don’t get me wrong. I am also a big fan of analytic models and understand that they provide insights that cannot be found empirically. However, in case of Big-O, I feel that it has underlying assumptions that were true when it was formed but have since become false. Thus, we need a revision of how Big-O should be taught. This post explains why…

Continue reading “Why Big-O needs an update” »

Aug 072011

The purpose of this post is two fold. First, I want to raise awareness about the transformations a problem goes through before it can be solved by the electrons running around  in the hardware. It is common knowledge for many of you but listing this can be useful for the younger readers. Second, I want to share Prezi, a web-based tool to make presentations. This is my first experience with Prezi and I liked the interface and options better than Powerpoint. I figured I will convey some useful information with the demo.

Continue reading “Quick Post: Levels of Transformation in Computer Programs (+Prezi)” »

Aug 052011

In a weak moment last July, I paid $99 for an Apple Developer Account with the intent to learn iPhone app development. However, I didn’t use it for 11.5 months. When I learned two weeks ago that I was about to lose my investment, I decided to salvage it. It has actually been a great experience and I don’t regret spending the week playing with iPhone apps. I have not become an expert by any means but I think I have learned enough to have some opinions. I am writing this article to share what I learned as it may interest some other “traditional” computer scientists to explore iOS.

Continue reading “iPhone App Development (for Old School Coders)” »