Two Trends Towards Partial Programming Language Freedom Everywhere

Two common backends seem to be emerging that enable programmers to choose a language and system suitable for their work irrespective of whether they’re developing server side code or client side code. Programmers who develop services that sit behind communication protocols such as HTTP have always enjoyed the freedom to choose the programming language and system that best supports what they need to develop, because clients who use system requirements placed by these languages do not get passed on to clients who make use of these services. Client-side programmers have, however, had limited options when it comes to programming language choice for various reasons, the most significant of which is perhaps accessibility to APIs for doing various things on the client device. Hence if you program for iOS, pick Objective-C. Android? pick Java. Windows? Perhaps C# .. or F# if you’re adventurous. Web browser? You got Javascript. For once, two common performant backends - Java byte code and LLVM bit code - are emerging as the common ground enabling portability and hence programming language diversity.

Read on →

Wash Dishes. Don’t Collect Garbage.

In computer science literature, “garbage collection” refers to the process by which unused computer memory is reclaimed for use by a program. Such memory is usually referred to as “garbage” and the “garbage collector” periodically runs to do this job. Though I understand the process to some extent, I’ve never been happy with the metaphor since it doesn’t help at all with suggesting possible techniques for doing the task and is just used to label this part of a programming system with automatic memory management. In this post, I explore “dish washing” as a metaphor for the same process and argue why it is a better one to adopt for teaching purposes.

Read on →


Recent writing in the field of ethnomusicology has re-asked the question of “what is music?”. Christopher Small coined the term “musicking”, which to me expresses that there is no such thing as “music” that is apart from the act of “musicking”. Music and mathematics have shared a historical bond with each other - with mathematicians finding fascination in musical patterns and musicians relishing in artistic construction using mathematical patterns, more recently involving computational patterns. The relationship that both these activities bear to the functioning of human cognition also share great similarities. Mathematicians have long declared the activity of “doing mathematics” as a creative process that is not steeped in certainties, as a naive view of mathematics might suppose. Paralleling that, musicians also often demonstrate intellectualization of the activity of musicking that resembles a mathematical theory of the constructs that they are building. In consideration of such deep connections, in this essay, I explore the parallel thesis - there is no such thing as mathematics, there is only mathematicking - and where I name the joint activity “mathemusicking”.

Read on →

Being the Change I Want to See in Chennai

Was it Gandhiji who said “Be the change you want to see in the world”?

There are quite a few things about Chennai traffic that I would like to see change … and where better to begin than with myself?

Read on →

Bye Bye Javascript Promises!

In my previous post, I explored how programming with promises can be made close to programming with values. After some more work on it, and some learning from bluebird, I came to conclude that my brain doesn’t think well with promises. So I wrote a macro for Javascript that expands “tasks” into async state machines that communicate using channels (i.e. CSP). I want to talk about the specific options for error management implemented in the task macro.

Read on →
comments powered by Disqus