Saturday, May 12, 2007

funny cartoons

The daily cartoons in the newspapers here are very shabby.

Here are some of the funniest cartoons I've come across:
http://www.cagle.com/

Especially the ones about the Queen's visit:



Saturday, May 5, 2007

remembering wisdom

Something my father keeps telling me that his father used to tell him:

Pay as much as you need to for things that matter, and as little as you can for things that don't. And never borrow money to pay for something that goes down in value.

Also seen at sethgodin.typepad.com.

Friday, May 4, 2007

aswan (part 4)

[Part 1] [Part 2] [Part 3]

Now that we've planted our feet firmly in the ground, let's try and see what it could mean if all this were possible.

There would be millions and millions of code snippets floating around each doing some small specific task. Think of these as genes. Many code snippets would be doing the same thing and the community would evaluate these and tag and rate these. The better ones would automatically become more popular. If one considers these as genes competing with each there, only the fittest survive.

Tags and descriptions provide us with a fair idea of what the purpose of the code snippets is. These also make it easy to search for the code snippet you are looking for. Now, if we could represent this description of functionality in a formal manner (a Functional Description Language, perhaps?) it would be really very easy for each such gene to announce what it can do and for really very easy for someone to say what they want done. In fact, a computer would be able to match one with the other and making available code (in terms of functionality) easily accessible.

And so one could define entire components in terms of smaller functionalities that the computer would fetch for you and piece together – a software that create software.

[Part 1] [Part 2] [Part 3] [Part 4]

Tuesday, May 1, 2007

aswan (part 3)

[Part 1] [Part 2]

As I envision this forum of co-operation and collaboration, I see that there are a number of problems associated with this model.


Firstly, in trying to be a rewarding system, it has suddenly given incentive to benefit unfairly or hurt others. A malicious user may copy the code snippet posted by someone else and submit it as their own. And it would be difficult to verify the origins. As a solution one could propose that relying on the community in such scenarios is a good option but there should be some way to solve disputes in a fair manner. You don't want any user to think he/she has been sold a lemon.

Another problem is that most of the code we write, we write under strict intellectual property frameworks put in place by organizations we work for. I don't see large or even mid-sized corporations wanting to take the risk of allowing developers to make some of their code public. There would be too much control needed to ensure that IPRs are not breached - one errant developer could put the company at stake.

I haven't figured out a solution yet, but it would be truly amazing if we could collaborate at this level, at a global scale.

[Part 1] [Part 2] [Part 3] [Part 4]

aswan (part 2)

[Part 1]

What can be shared are pieces of functional code that are generic, re-usable, commonly used and do not encapsulate business logic. And, most importantly, it need not be complete in itself. Notice that I say “code”. I am sure I will not use a chunk in binary created by anyone just because they claim it does what I need. It is important to have the code so I am assured that I can fall back on myself in case things don't work, and because I can tweak it to suit my needs.

Am I talking about Open Source? In a way, yes; but it is not free. No, I'm not thinking of a SourceForge clone where you have to pay for the projects. There are two large differences: Firstly, I don't want entire projects. I just need pieces of code that fill up holes in my system by providing certain functionality like the ones mentioned earlier. Secondly, I don't mind paying a little bit for it, perhaps even a little more if there is some a sense of confidence for that code.

Looking at it from the other end, since I've already written the two utilities mentioned above, I don't mind sharing that code with someone who needs it. I don't expect to be paid much by the first few people using the code. After all, they have no idea how reliable or useful it is. But as more and more people use it, they have the cumulative sense of usefulness and quality due to the people who have used it before. If my code has proven itself to be good, I would expect to be paid somewhat more by the later users because they already have some assurance for it.

[Part 1] [Part 2] [Part 3] [Part 4]

aswan (part 1)

I can't even count how many times I've written code knowing fully well I really don't need to. Once it was a utility to read a tab-separated file and insert the data into a table with the same name as the file and column-names specified by the first line of the file. Simple enough, except that I had to do that in a language I didn't really know and took half a day. Another time it was a no-frills quota management system for a number of clients trying to access the same resource. Not as simple, but by now you're probably wondering why I am cribbing about this being code I needn't have written so let me explain that first.

I needn't have written all that because I AM SURE SOMEONE ELSE HAS ALREADY WRITTEN IT. These are really common, non-intelligent pieces of functionality I am talking about. When such a large populace is sitting at their desks writing code, what are the chances that most of it isn't being duplicated. So I think, how about having a way for someone to share their code as functional pieces. I don't mind paying a bit for saving my time from drudgery. And if there are enough people like me, economies of scale will step in to make it cheaper for all of us while at the same time ensuring that the original code writer gets his due.

[Part 1] [Part 2] [Part 3] [Part 4]