Archive

Archive for May, 2010

The language of data

May 13, 2010 Leave a comment

As internet grows and more and more of (our) data gets uploaded to sites like Picasa, Facebook, Orkut etc. the more is the need for statistical knowledge growing and who knew statistics could be an important subject to study?

Here’s a nice article on why we should learn the language of data.

Categories: General

Internet OS

May 12, 2010 Leave a comment

If you are a software developer, you must have used one of the OSes on the desktop / laptop on which you do your everyday development. And even if you’ve done web development, chances are that all the data you were working on was owned by the company you were doing the development for.

But times have changed and there is a wealth of data available on the internet, much of it for free. So are you aware of the internet OS? No? How about Google, Amazon, Facebook? 🙂

Go read this and this.

Categories: Programming

THE irrational choice

May 12, 2010 1 comment

Do you ever dream of being self employed or opening a start-up (and quitting your day job)? If yes, then you might have thought of ‘n’ number of reasons to do it and another ‘n + x’ or ‘n-x’ (depending on whether you’re an optimist or pessimist) number of reasons not to do it.

So here’s the killer answer to that dilemma from Joe Heitzeberg, CEO of Snapvine – “I’ve come to realize that doing startups is mostly an irrational choice. Just effing do it.”

And if you don’t know the meaning of the word effing, please do consult a dictionary 🙂

Categories: Business

Are you committed, or just involved?

A few days back, I had downloaded a Scrum Guide from InfoQ. Yesterday, while going through it, I came across this beautiful piece – here’s straight from the book –

The Scrum Team consists of the ScrumMaster, the Product Owner, and the Team. Scrum Team members are called “pigs.” Everyone else is a “chicken.” Chickens cannot tell “pigs” how to do their work. Chickens and pigs come from the story –

“A chicken and a pig are together when the chicken says, “Let’s start a restaurant!”

The pig thinks it over and says, “What would we call this restaurant?”

The chicken says, “Ham n’ Eggs!”

The pig says, “No thanks, I’d be committed, but you’d only be involved!”

So are you a pig or a chicken (not just in your job, but in whatever you do)?  😉

Homoiconic – or code is data and data is code

If you are in software and if you haven’t heard this term before, chances are that you don’t know LISP, or you just have a cursory knowledge of this “mother of all computer languages”. Surely, I’ll prove why LISP is THE MOTHER OF ALL LANGUAGES –

Let’s take a look at the evolution of C# (and the features that were introduced in it at certain times or that are being introduced in it even now) –

Feature C# version Year of introduction
Predicates 2.0 2005
Closures 3.0 2008
Lambda Expressions 3.0 2008
Linq 3.0 2008
Lambda Statements 4.0 2010

And when did Lisp originate? As per Wikipedia – 1958 🙂 And in Lisp (or Clojure), everything is an s-expression, so any piece of code can be turned into data (or code as data)

Most certainly, if I show that C# borrows heavily from Lisp, doesn’t mean that every other language does; but C#, as a language (which was originally a Java clone) has come far ahead of Java, and I am sure Lisp is the super set of the most current mainstream languages (I’d love to be proven wrong).

So wouldn’t you like to drink directly from the (free) source (instead of a paid derivative) 😉 But this post is not meant to be a war on which language is better right, so let’s move on…

The term homo-iconicity, means that code can be represented as data without having to resort to a different syntax (homo = same; iconic = appearance) –

So in Lisp (or Clojure) it is: (list 'GetPathsOfAllFiles folder file-filter)) [notice the tick "'" mark]

And in C#:  Func<int, int> twiceD = x => x * 2;
Expression<Func<int, int>> twiceE = x => x * 2;

The whole point is that when you use an Expression<> in C# code, that particular piece of code instead of being directly compiled in byte code and getting executed normally gets compiled into AST (abstract syntax tree) form, the advantage being that we can extract any information out of this AST.

This “extract any information” forms the basis of whole DSL magic using statically-typed languages like C#. This is the very same technique I used to achieve this – https://mmwaikar.wordpress.com/2010/01/24/wpf-magic-strings-and-some-linq-love/

For a deep dive into this whole homo-iconic fun, and other great C# stuff – please refer to the excellent blog post by Bart De Smet – http://bartdesmet.net/blogs/bart/archive/2009/12/29/more-linq-with-system-interactive-exploiting-the-code-data-relationship.aspx

So if Clojure becomes a hit in the .Net world (less likely), then I would love to work on it, else looks like I’ll have to move to JVM as a platform (of course with Clojure) 🙂

Categories: Programming

Does Bengal have some connection to Spain?

You might scoff at the title of the above post 🙂 but don’t you find some similarity between –

Tomatillo, Habanero, Poblano, Serrano (Mexican or Spanish names of different kinds of chillies) and Candido, Benito, Donato (some Mexican names)

VS.

Anindo, Aurobindo, Dhirendro (some Bengali names) and the propensity to “O”ify names like Roshogulla etc.

Also most babu-moshais like footballl and so do most South American nations 😉

Categories: General