Archis's Blog

May 16, 2008

The real heroes behind India’s (alleged) reverse brain-drain

Filed under: Uncategorized — Tags: , , , — archisgore @ 12:55 pm

While chatting with a friend who was debating whether or not he should pursue his Ph.D. degree (or any higher studies, for that matter) in India, the topic turned to the changing conditions in India (or more appropriately, the change in observable behaviour of Indians – since I don’t presume to know all conditions in India).

Much is made in newspaper articles, media, and in social circles about the alleged reverse brain drain. I say alleged, simply because I don’t want this article biased in either way – I do have an opinion about the brain drain situation, but that’s for another day and another time. Here we shall simply assume that there does exist such a thing as a reverse brain drain (without debating its veracity – or definition for that matter).

You might have noticed a steadily increasing trend in media reporting two major themes:

  1. Prominent/Successful people of Indian origin returning to settle down in India after having achieved fame/success abroad.
  2. The young generation of Indians not leaving India after getting prominent degrees, as used to be the “hip thing” back in the 80’s.

What bothers me most is the complete disregard shown to those who really caused about this change. Surely the change is in India that makes people want to come back or remain here; which is far more likely than America or Europe having become an unsuitable place to live in (last I heard, India has gained shopping malls and multiplexes, rather than Europe or America losing them). Correct me if I am mistaken, but in my personal opinion, this change was brought about not by those who are coming back today, but by those who never left 30 years ago!

Someone had to live in this country when the cream of our country was leaving with much fanfare and praise. Someone had to improve the conditions. Someone had to build multiplexes and malls. Someone had to build airconditioned seven-star hotels. Someone had to build the 1 lakh car that many (if not most) Indians will afford. Every year, media praisee those from the premier (and in many cases, tax-payer-funded) institutions of the country hired abroad. We conveniently ignore to report on those who stayed back and brought about a change here – in this country – to make it suitable for our elite to come back and live in.

Where is the praise to them? What have we done to encourage them? When we write an article praising youngsters studying in India for higher education, why can’t we spare one line to say, “thanks to the heroes who toiled for 30 years to make India a great place to live in…”? When we comment on the great people returning, why can’t we add the line, “thanks to the people who worked through hardships to bring multiplexes, and malls and air-conditioned homes, and water and electricity and flyovers to our cities…”?

So far as I have seen, I don’t know many (if not any) who returned from the US to live in a village or even a non-metro (although I do know Americans staying in villages for volunteer work.) Let’s face it, they didn’t come back for travelling in public transportation and to have only one hour of tap water every day.

For some reason, our culture loves redemption stories; always has. We completely ignore people who are just doing good work – I don’t say that we criticise them, we simply just don’t care. However, take a guy who goes on the wrong path initially and years later chooses to turn towards the rigth path? We love him! We praise him! He’s like a God to us. Lest we forget that wrong path and right path are completely subjective to begin with.

I think it’s time we did justice to all that “traditions” and “philosophy” and “family” and “loyalty” crap we like to boast in front of westerners. Let’s stop speaking and show it for once! Let’s see some respect for those who made this a great place to live in. Someone brought about this change in India – it wasn’t just physical – it was also psychological. Someone stayed here and worked hard to change the attitude of people.

I think we can all spare at least one newspaper article, or even a small one-liner when discussing reverse-brain-drain amongst peers, in praise of the heroes who made it all happen!

May 12, 2008

A thought experiment for Open Source fanatics

Filed under: Uncategorized — Tags: , , , , , , — archisgore @ 10:33 pm

Update: I got a response from the FSF which is quite satisfactory and makes sense.

Yes — but from a technology standpoint, we don’t know how to provide
that yet. Even if a search engine provided you with all of the source
you needed to run your own implementation, and modify it, it’s unlikely
that you have the resources to do so. Keeping track of all this data
for the entire web requires a lot of storage. Keeping your index
up-to-date requires plenty of bandwidth.

The FSF recently hosted a summit to discuss this issue and consider
options for moving forward; see
<http://www.fsf.org/news/FreedomForWebServices>. The group that was
convened will continue this work, and we expect to be publishing more
details about it shortly. Keep your eye on our web site for updates.

Best regards,


Brett Smith
Licensing Compliance Engineer, Free Software Foundation

Original Post:
Today, I read this article titled, Google’s open source problem is Affero on Zdnet. Frequent readers will know my previous article titled, “GPLv3: Is Stallman taking sides?” which got me the standard mails teaching me “philosophy” and “greater purpose of life” (read: made absolutely no sense whatsoever).

The reason I brought this up again is because I still don’t have an answer to this question I have – and for all the openness and ask-me-anything nature that everyone attempts to project, people have been remarkably un-open and ask-me-anything-but-I-won’t-answer on this issue. If any readers would like to offer me answers, I welcome them.

What bothered me most was this quote on the FSF’s FAQ on GPLv3: However, some companies that develop and rely upon free software consider this requirement to be too burdensome.

Since when did a company’s “burden” bother the FSF? Since when did “making sure a company keeps making money” become the reason for compromising on the FSF’s definition of Freedom (I say “FSF’s definition”, because I allow every human being the freedom to choose their definition of freedom).

I take the comment below back (I haven’t figured out a way to “strike out” text yet). As Joe has pointed out in the comments, ASP refers to “Application Service Providers”. This is the kind of constructive answer that helps. :-) Thanks man!
An interesting fact pointed out by Stallman is the popularity of ASP though. He calls this the “ASP loophole”. It appears that any webservice whose code you don’t have access to, runs on Microsoft-developed ASP technology. Now that’s cool…. I don’t really have access to Google’s code you know. :-) Isn’t that something to think about – so much for all you guys who claim PHP/Perl/whatever are also popular. “Also” just doesn’t cut it – unless a site has it’s code out in the open, it’s running Microsoft ASP – Stallman has spoken! He didn’t call it the “PHP loophole”, or “server-side scripting loophole”. It appears ASP is so damn popular above all those pathetic alternatives, that “server-side scriptiong” is analogous to “ASP”. Wow!

In the meantime, here’s a thought experiment for you.

  1. We can all agree, that the HTML page you get are really rendering instructions at worse, and some kind of scripting at best. In essence, it is data which tells the browser what you see. For all we care, it could be any format. HTML is just the format that we incidentally came up with or began to use.
  2. And you get prophet-certified by GPLv3′ing all code. Hence it only makes sense that you only use GPLv3′d code on your desktops. I can live with that.
  3. Now, if a company developed a GPLv3′d OS with remote desktop capability that ran on their data centers, it too becomes prophet-certified saving-the-world pure. Then they distribute the client-code to you which allows you to remote onto a desktop on the cloud – and you have all the freedom – all 100% baptiz…uhh… I meant certified! (Lest you flame me, the company should also publish specs of the remoting protocol.)

And there you go – you have a completely free software story. Personally, when someone claims it’s supposed to allow me to “learn, modify, experiment, etc.”, I can’t do that without the source code, GPLv3′d or not. But I guess there are a bunch of hyper-intelligent people out there who, merely by the application of a licence to the code (also indicative of the awesome heavenly power of the licence in question), can study, learn or modify the code – without having access to it!

Amazing, simply amazing!

May 10, 2008

A MacGyver movie in the making?

Filed under: Uncategorized — Tags: , , , — archisgore @ 2:36 pm

Damn! This is just so awesome! There are rumours around the internet (read: digg and slashdot) claiming that a new MacGyver movie is in the making!

Fans of the old TV series (includes me) are going ga-ga over the news already! It would be so amazing to see our scientifically-inclined secret agent back in action saving the world using creativity, physics, chemistry and the MacGyver-touch.

For the uneducated, MacGyver was a very popular TV series running in the 80’s about a guy named Angus MacGyver who hated guns and could build handy and useful stuff out of easily-accessible material. The handy and useful stuff was generally used for escaping from tight spots, or building cool equipment, or diffusing bombs, or at times, complex machines like restoring airplanes.

I first saw this series when I was seven years old (before I watched Star Wars for the first time), and it was the coolest TV series EVER! It was what really got me interested in all kinds of sciency stuff in school – building electronics gadgets, mixing chemicals, etc. It made science look cool – something that’s severely needed in today’s world of “IT” crap (don’t get me wrong – I have nothing against software-developers and computer scientists being called “IT professionals” – but the loss of respect for the conventional sciences like physics and chemistry and mathematics does make me mad). MacGyver was, and still remains, a hero to many, many people.

Given this speech in what got me interested in science, MacGyver actually used advanced science very few times – mostly relying on common sense, creativity and logic to build stuff. It was something anyone could do with the materials available to them in the given situation, knowing what we know about the world. Only in very few cases such as when he uses the freon from a refrigerator to freeze his prison’s bars, or when he mixes ascetic acid and ammonia in gaseous forms to create a smoke screen to blind a motion detector, do we really feel we just wouldn’t have known those facts without an intense study of inorganic chemistry.

MacGyver, apart from being an inspiration, was also very very educational and kid-safe. All the dangerous MacGyverisms were certified by the creators of the series to be slightly altered to ensure they couldn’t be reproduced at home, while the cool tidbits were ensured that kids in fact could enjoy playing MacGyver at home. They could build these cool little gadgets from household waste without hurting themselves and learning a bit of science in the process.

So here’s a big fan looking forward to watching the great science-using secret-agent save the world on the big screen!

May 2, 2008

Live Mesh! – the appeal to a guy like me.

Finally, the long-awaited unique take on what Live Mesh is all about as seen from my eyes. Live Mesh was announced publicly about a week-and-a-half ago with an entry by Amit Mital on the Live Developer’s Blog at 9:00pm PST. I hope everyone has read all there is to know about Mesh, and for any further information point your browsers to http://www.mesh.com/blog. Do ask questions and express comments on the Live Mesh Blog – there’s no such thing as too many questions. After all, when a team has worked for months to ship something so awesome, they are only eager to interact with the community.

The Technology Preview available on Mesh.com has a limit of 10,000 users which I think has been filled up by now. It has been quite fun to see how fast the word spread and filled up the positions. It is important to note that Mesh is still in a very early preview and as we approach the Professional Developers’ Conference (PDC) in October more details will emerge.

I will try not to re-hash all the stuff that’s been said and re-said about what Mesh is (or isn’t), and offer my own take on what this is all about from a very high-level perspective. One of the interesting things about Mesh in the first few days after announcement, was how it related to everyone in a different way – “It’s software, It’s a service, no….. It’s Mesh!” As Obi-Wan Kenobi rightly said (is there anything the Jedi philosophy doesn’t apply to?), “Many of the truths we cling to, depend greatly on our own point of view.”

Mesh is a piece of software, Mesh is a service (or a bunch of services) running on the cloud, and Mesh is an experience (Sharing of files and folders), and in my personal opinion, Mesh is, above all, a set of design principles or architectural decisions (enter the developer’s take on Mesh). When I joined the team an year ago, what really excited me to come work here was the very clear communication from higher-ups on what we were building.

People have been writing software for many, many years. Services are perhaps new, catching on only after the Internet became widespread, and yet they have been used more than ten years now. The concept of connected software isn’t all that new – Yahoo Messenger being a legend in my circle of friends from high-school days. What differentiates Mesh is the way everyone thinks about it – which is exemplified in Ori Amiga’s developer video.

Let me take a moment to clear up the definition of “Cloud“. The phrase Software + Services is widely misinterpreted as some kind of lame software using sockets to talk to some server. “Big deal!”, right? Well not quite. By cloud we don’t just mean one service running on a Microsoft server. Cloud is “anything that’s not you – but can interact with you”. When we say “Your files come down from the cloud”, we say so because there really is no other way we can phrase it. Sometimes they come from a peer desktop MOE, or from our own web services, or from a Feed Sync provider out there who wants to Mesh with you! When you connect to the Mesh, you literally connect to “the cloud” and not a specific end-point. The Mesh only always adds value, never takes away. It doesn’t “absorb”, it “sync”s – it’s bidirectional. You add value to the Mesh and the Mesh adds value to you – whether you’re a software, a service, or anything else we haven’t imagined yet. As long as you can do a “GET http://[some_url]“, you can talk to the Mesh, and by extension, anyone else that talks to the Mesh – tell me that didn’t just get you clamouring to be on our Developer SDK waiting list.

Look at the Live Folders experience – it wouldn’t be too difficult to write some TCP/HTTP code in Windows Explorer to make it to do all the stuff Mesh allows it to do. Similarly, shouldn’t be too difficult to write an app to share comments on files either. Moving these comments from one machine to another? Sure, how tough can that be? Now how about a list of friends? Pretty easy (I did all that in school). Then comes the interesting part – I have code to read my list of friends, can I use it to read my list of comments as well? Oh sure, all in a day’s work. Then how about allowing it to read any list of unknown data that I want to share? Perhaps slightly annoying, but doable. And finally, how’s about doing it in a format that the entire world understands and uses so often that it is crisply and clearly defined. Then comes a minor twist – even if I’m not connected to the Internet, I want my app to be able to send these lists across – and I want someone else to make sure it reaches the destination safely and securely. Why should every app write the caching/transport logic over and over again?

And that is what Mesh is at heart – the few guiding principles around which software and services were built. Rather than focus on “What will this service do to keep it extensible?”, the Mesh team focused on “How can we represent anything and everything so that anyone can read it anywhere in the world?”. The subtle difference here is the pivot point – for some, the pivot is the service, it is the hard absolute that cannot change. Everything else must be written around it to accommodate it somehow. Mesh has universally-readable data representation as it’s pivot – services and software were written around it. To put it another way, the software+services implementations are a natural consequence of the design, rather than interoperability being the consequence of the implementations. Enough abstract philosophy, let’s look at how these principles rendered themselves in practice:

  1. Everything works over HTTPS. Since almost any conceivable device that can do anything data-related can talk HTTP, this means all devices can talk to each other – across NAT’s, Firewalls, etc. The S at the end of HTTP guarantees encryption – and I mean good-enough-for-my-bank-to-use kinda encryption. Hundreds of millions of dollars in online transactions are protected by HTTPS every single day.
  2. Anything and everything is a feed. List of users? Feed! List of Devices? Feed! List of friends? Feed! List of all these feeds? Feed! Now at the core, all you need is a Feed reader, and you can read anything, anywhere. You might have seen Amit Mital or Ori Amiga demoing the cool Data Model Browser – it’s a feed reader on steroids and it can read anything in Mesh.
  3. What kind of formats are these feeds in? You name it! RSS? Yup! Atom? Yup. Something easy to use in my cool AJAX app? JSON! No more glue logic on the server to pull data from a SQL database, convert to JSON, send to AJAX client, and render it (I’ve developed many a website that did this in the past.) Now just point your RSS reader at the comments feed on the file you’re interested in, and voila – what was a software, became a service!
  4. Always use, what I like to call, Wikipedia Formats – due to Amit Mital’s inspiring description, “Formats that are not only standardized, but also can be described in a page or two and a large number of developers know how to use.” The Mesh team could have gone with some cryptic ISO/xxxx and then people would have spent a while reading about it, and then we’d have general chaos on how to resolve the boundary cases which the spec failed to anticipate. Instead, Atom’s been used and reused and talked about and discussed and spec’d the hell out of so much that you have ready answers on Wikipedia, hundreds of articles, tutorials, blogs, friends, etc.
  5. RESTful model – REST stands for “Representational State Transfer“. Think of browsing the Mesh using the data model browser as moving through a Turing Machine. Each state is represented in the URL you are currently at. What’s cool in this model is that you can now get to a specific location in the Mesh Data Model, and just copy that URL to a friend to allow them to view it too (so long as they have permissions, of course). This way “discovery” of data becomes easier. Imagine telling them to execute a few RPC commands to get to the same data.
  6. And thanks to the platform background of Microsoft – this one came quite naturally to all involved – never ask developers to compromise on their native environment. This is the real killer design principle that made .Net a success and will hopefully do so for the Mesh. There have been legendary historic debates around Editors (vi vs. emacs reached galactic levels in the 80’s), IDEs, Programming Languages, styles, paradigms, and API libraries. Each developer LOVES his specific environment – try and separate it from him and you’d sooner choose to steal candy from a baby. Yes, we developers, are opinionated and stubborn – and that’s what makes us so effective. If I run on a Mac, I want the full immersive Mac experience – using Mac metaphors. When I use a phone I want a full phone-like experience. Wouldn’t be much of a “Mesh” if it all looked and behaved the same everywhere, would it?

Now for stuff I’ve been dying to tell people – my personal favourite scenarios which Live Mesh simplifies (I’m sure everyone can think of hundreds of cool things to do once you’ve watched Ori’s video). Just look at how simple it is to develop rudimentary apps:

  1. My personal favourite: Mesh Mail. Mesh is much like e-mail already – MOE’s acting as SMTP agents forwarding data/feeds to other MOE’s. A rudimentary messaging platform would involve creating a Mesh Object between each contact of mine (yes it would lead to a Cartesian product of objects – but look at the simplicity). To “send a message” all I do is post a data entry to it’s “Message Feed” on my local MOE. Through Mesh Magic, the peer app on his machine gets the entry and he receives a message. Just like that! He isn’t on any physical machine? The same thing is available on the Live Desktop.
  2. Instant Messaging: The mail scenario extends to IM even more beautifully. Create a feed for a two-way chat. All you do is post data entries to a feed, and in your chat window, display updated feeds whenever you receive notifications. That’s it! IM across the web, across rich WPF experiences, low-end phone experiences, you name it!
  3. How about boasting about your AOE scores between friends? Just create a feed, post your scores!

As you can see, each “App” is a separate app and is also the same app. AOE scores are still data entries in a feed. But they are also a distinct app – displaying them as email is doing injustice to all the cool 3D desktop capabilities you paid for. This is where the “Software” from Software+Services comes into play. Today, we leverage the same old software for multiple applications due to the sheer start up overhead of writing connected software. We use e-mail for forwarding favourites, discussing movies, debating philosophy, sharing files, and boasting about our AOE scores. With Mesh its just the opposite – you may have the same feed storing all this data, but the experiences are customized based on the content – Movies might get you a complex and powerful mashup for commenting, rating, sharing, etc. AOE scores will give you rankings, statistics, etc. Sharing files – you’ve already seen.

That’s concludes my take on why the Mesh is so important and what turns me on about it. With all that Mesh can do, it still can’t use butterflies to focus cosmic rays to write code.

Technorati tags:

Blog at WordPress.com.