Archis's Blog

May 23, 2007

Build24 – an old new idea

Filed under: Uncategorized — Tags: — archisgore @ 7:34 am

Not having done anything exciting in a while, I was pondering on a new contest concept and wanted to run it by you and see where it goes. All of this is just a beginner’s draft and we can modify stuff quite easily. :-) Please “reply all” if your feedback is important. Feel free to loop in anyone you might want to. This is all transparent and open.

The reason this is an old idea, is because it’s done internally in many companies regularly (including Microsoft), in student contents like the Imagine Cup, or Topcoder Marathons. In short, the idea of a 24-hour coding contest isn’t new. However, such a contest conducted in a format for students is probably new.

The purpose of this contest is to give students confidence and make them stronger when they come out of it, and not only to distribute prizes or to gain publicity. There is a subtle difference between the two. The Olympics are for people who’re already confident and strong. It’s just a contest. People compete and someone wins. However, the aim of build24 is more like an activity as opposed to a contest. And the only reason we call it a contest is because we will give out some prizes.

The reason I’m posting this is to see if we can formulate a new contest of our own. A contest not affiliated to any institution like the IEEE or ACM or CSI. A contest not affiliated to any college (or even the university). A contest not organised by any “great” personality. Simply a contest – organised by us (us means anyone interested in organising the contest). They can be colleges, or computer societies, or anyone, but they come to the table only as parties interested in organising the contest – nothing more, nothing less. Think of it as purely for the academic interest of conducting a great contest where everyone has fun.

An interesting revelation at LinuxAsia was that not one single student from the entire state of Maharashtra registered for Summer of Code. Now I am not willing to accept that no student in Pune is interested in working at Google. Prove me wrong if you can! It simply means that we gratified some stupid idiots for nothing, and they never gave the students the information that we gratified them for in the first place.


Purpose of this contest:

1. There’s really no contest that is student-centric in Pune. Sure, we all like to pretend that they’re helpful, but we all really know that all contests are mostly cheap marketting scams. I really don’t see anyone going home after a contest being able to truly say they will do something differently as opposed to what they would have done previously. I haven’t seen a single contest in Pune where the question papers were carefully designed to measure any kind of specific ability. Many people, it seems, fail to realise the fine difference between an examination and a competition. And hence, students never learn to differentiate between beer and champagne.


2. Very few contests held in Pune really prepare anyone to compete in the ACM ICPC, or Google’s CodeJam or the MS ImagineCup, or Code4bill, or the IPSC or the Topcoder Challenges, and so on…. the list is endless. And yet with all the “industry”, and coaching classes, and guest lectures, not one person in my college is even aware of these openings. I know this sounds ironic, but today, it’s a lot easier to get into Google and IBM due to all these open and transparent contests, than it is to get into any other company where such
openings aren’t available.


3. The industry is predominantly non-committing (my theory of the two-player no-win game). They’ll go around showing off their ego and telling students what they should do, but when students really do it, the industry won’t commit to hiring them. Very few companies like IBM (ACM ICPC) or Google (CodeJam), really commit to their contests. Well, at some point, everyone needs to be held accountable. Otherwise we sound like some 70′s-hindi-movie politician.

4. Though we all demand students to follow “industry standards”, do we ever give them industry standards? In the industry, we’re allowed to work whenever and however we want, so long as we provide results. What student is given this previlidge? In fact, colleges pride themselves on the “strict rules” that they have. What’s sad is that the “strictness” of these rules has nothing to do with output. No college has a rule saying that a program for simplex not giving a correct answer to the 10th decimal place will be rejected. Every college has a rule stating that the student needs to sit in the lab at least six hours a week.

In the industry, we have the state-of-the-art equipment. What student is given this previledge? And then who are we to demand that they produce a project that is “industry standard”?


Parameters:

1. It should be inherently college-neutral. No politics. One completely-neutral institute might provide us the venue. :-) It’s not about whether a college can be neutral or not (I’m sure they can be). It’s more about being transparent and proving that we really are transparent.

2. It should be educational (I was thinking of a half-hour talk every four hours during the contest to give contestants important feedback on what they’re doing). It should not just be a competition where people already are confident. In that case, we would have teams already competing in the ACM ICPC. The purpose of this contest is to give people to confidence to compete in the ACM ICPC. No contest so far gives contestants a feedback on what they did wrong, where they need to improve, how they could have done things differently. We should give this feedback.

3. It should be purely industry standard – we should give them industry-standard facilities, and then demand without compromise that they give back industry-standard performance.


Format:

1. Contest begins at approx 9:00am at some common, central, easily accessible, place like CCD or Barista. Let’s give contestants some coffee and breakfast to get them started. Here we give them a briefing of the rules once more (though they’ll know everything before).


2. Approx 10:00am we take them to the contest venue (whatever institute graciously agrees to be the host).

3. Here they will be given a “theme”. The theme will be necessarily concept-oriented such as “Education”, “Social Networking”, “Storage”, etc. but nothing technology-dependent such as “C#” or “Java”.

4. They will be given one hour to think on the concept, identify the current open problems, figure out rough solutions (they’ll have access to internet-connected PC’s at all times). We will give them total freedom to find their own problems and decide what they will do.

5. They will get 15 minutes beginning at 11:15am to talk to an “industry expert” (:-D I love using that phrase). What we won’t tell them is that these experts will be their judges later. There are three things that they learn here:

Time management: when you have only 15 minutes with an expert, can you phrase the right questions and utilise his time to the max?

Feasibility analysis: In one hour can you figure out what’s feasible and what’s not?

Talking to your boss: We’ll introduce the judges as casual people guiding them. Most people can’t speak frankly and clearly with their bosses regarding their apprehensions.


6. We serve lunch during which they can work out their strategies once more. Maybe another 5 minutes after lunch with the experts.


7. At approximately 2:00pm, they begin coding. They will have exactly 24 hours till 2:00pm on the next day to code. This is the catch: No rules! They can use whatever technology/platform/code they want. When I say no limits, I mean it quite literally. We won’t look at code. Do whatever you feel like. Steal it, borrow it, write it, we dont care! Naturally, lunch, dinner, etc. will be provided on time. :-) and lots of caffeine too.

8. At 2:00pm the next day, they have to DELIVER! We never limited them, and now they must not disappoint us. They must deliver the solution. Not code, not documentation, not excuses, not apologies, not explanations, not references, not guidelines: only the solution. They must provide the answer to the question they set out to answer. If we don’t see the answer, they lose! If it’s a program, they need to run it. If it’s a search engine, it has to give us the search results.

This is the most important aspect lesson people need to learn. They’re too used to giving explanations, and comments such as, “But I used the method listed in Bach”, or “My program is logically correct”, or “This is the method everyone uses.” Such crap doesn’t work when you’re on the cutting edge. It’s easy to depend on Bach or Korth, and to blame them later. But even the toppers in Thomas/Finney have difficulty depending on themselves. Hardly do we hear someone saying, “I know this method is right, and hence I used it.”


Judging and Prizes:

I had an interesting idea of judging. Let’s not have a set of absolute winners. Industries today complain about not finding good talent. Well, we can have the industry sponsor the contest and provide a panel of judges. This is the diabolical genious of my plan. Any company send a judging team. Each judging team will give a general idea of what they will look for. (I have given a fairly good idea of what my team will look for above). In the process, they might end up finding some good talent.


So there will be “XYZ Winners”, and “ABC winners”. Let each define their own winners. Let students also know not to be depressed by just one company’s criteria. Besides companies might get good talent. They can measure real ability to perform. If they need mathematical geniuses, let’s challenge them to implement the Karmarkar Algorithm for linear optimisation, instead of holding tests with puzzles.


What’s in it for the students?

1. They learn how to quickly work out solutions to problems and turn them into working code as fast as possible.

2. They learn to understand that there is no such thing as “industry standard”. Each company looks for different things and getting rejected isn’t the end of the world.

3. And most importantly: they see that what the industry does is NOT AT ALL DIFFERENT from what they do already. Hopefully, we give them some confidence in themselves and teach them not to be beaten around by some bigshot blazer-wearing freak.

4. They just might get a job offer that they wouldn’t have gotten through conventional channels. We basically give them a second chance.


Additional remarks:

1. Part of the concept is to keep the contest as informal as possible. There should be minimal felicitations and stuff. Let’s break that 16th century european dark-ages format being promoted by everything-Pune-University.

2. Contestants should look at judges as their friends until the actual judging round begins. Judges will be encouraged to tell contestants what will make them win. No contest today gives this feedback. You just get a “you won” or “you lost” response.

3. Let’s see if some companies get some good talent in the process. We all know they’re despera
te.

5. Let’s get some people employed while we’re at it. :-)

Any thoughts and comments will be appreciated and welcome.

May 14, 2007

GPLv3: Is Stallman taking sides?

Filed under: Uncategorized — Tags: — archisgore @ 12:46 am

An year ago, way before I had joined Microsoft, I had a discussion with some friends regarding the “Software as a service” scenario. Most specifically, the discussion began at LinuxAsia where some of my friends were saying that it’s sad that nobody from Maharashtra competed in the Summer of Code that year. Google, as you might know, is the great supporter and promoter of open source software, uhmmm…, just so long as it competes only with Microsoft.

I have asked this question on numerous mailing lists repeatedly, only to get the standard freedom-fighter response: you’re crap, you don’t know anything, we know everything, you can’t oppose us, anyone who raises doubts against Stallman is stupid, and so on and so forth….. (if you’ve been in the FOSS guys long enough, you might have seen this a lot of times already). The question is quite simple, “I want to study how Google searches the web. Kindly point me to the tarball.”

There was a nice, but highly ignored, article on Slashdot about a hypothetical “Honest Public License”, where software-as-a-service would also need to be open sourced. They had intended to add a clause in GPLv3 that would have made things interesting in the Patents vs. Stallman vs. Proprietary vs. Google vs. Microsoft vs. Torvalds vs. Raymond camp. The clause was justifiably removed due to technical reasons (and I rather agree with them).

So in response, GNU is going for an Affero GPL that addresses the problem of “Software as a service”, or the “ASP Loophole” as the GNU website calls it. The AGPLv2 is quite appropriate to solve the problem in mind. On the “ASP Loophole” thing, I wonder if the GNU is publically declaring that ASP is the dominant and preferred method of developing webapps. If not, why not call it the PHP/JSP/Coldfusion/etc loophole? I’m not an expert, but I’m pretty sure people can prevent their PHP/JSP scripts from being visible on the web. But then again, not being a recincarnated Bilbical Prophet, what would I know?

Everyone in the FOSS world praises google for it’s webservices, and criticizes Microsoft for not following that model fast enough. Let us take this assumption to be true. If webservices are the future and there won’t be a space for Microsoft on the desktop, then the GPL is a “Library GPL” since your libaries will be on the web. In other words, the GPL is the LESSER GPL. If I used only SOAP webservices for my programs, I have effectively reduced the GPL to LGPL status.

What really bothers me is the fact that the GPL is still called the GPL. It begs to question whether the GNU is taking sides, and taking a softer stance towards the likes of Google just because they’re a threat to Microsoft. If so, I wonder if I’d really care to listen to “matters of principle” from such a crowd. And I’d encourage you to do the same.

Am I saying everyone should be forced to open up their webservices code? Heavens no! And I assure you, when I work at Microsoft, I wouldn’t either. But I’d certainly like Stallman screaming that people do so. I’d like Stallman to point out the names of companies and people who don’t do it today. I’d like Stallman to discourage people from using those services which they cannot study, modify or improve; the way he does towards Microsoft products.

Not everyone uses the GPL today, and not everyone will use the AGPL tomorrow. But if Microsoft is evil for not GPL’ing their code, then any webservice provider should be treated the same for not AGPL’ing it. If you spread FUD about how Microsoft might be stealing your data from their SQL Server, or through Office, _because you can’t see the code_, then how’re you so sure a modified GPL’d program isn’t doing the same on any webservice? Now I may not be a reincarnated Biblical Prophet, but I do have some common sense.

The ‘trick’ with using the AGPL is that nobody knows what the hell an Affero GPL is. They’ve never heard of it. This means that a proprietary webservice provider can always be a “GPL Promoter” and people won’t know any better. I suggest that the AGPL be made the GPL, and the current GPL be called the Lesser GPL.

And now most of you are going to respond about how some things are “acceptable” and some are “not acceptable” (where Microsoft falls under unacceptable and everyone else is acceptable). There are two responses I’d like to give here:

1. Effectively, Stallman has become the Torvalds of the ’90s. Torvalds quoted, “He who writes the code, should have the freedom of deciding its license.” The documentation on GPLv3 specifically states, “Those who want to open source their webservices can optionally use the Affero GPL License while others can continue using the current GPLv3.” Isn’t this the same thing with some fancy prophetic terminology as opposed to the simple human-understandable one Torvalds used?

2. Who get’s to draw the “line” between acceptable and unacceptable? Who gets the play God? Who gets the authority to judge what’s right and whats wrong? Who gets to say, “Anything that’s non-GPL’d is pure evil, but anything that’s not AGPL’d but GPL’d is okay.”? What about protecting my freedom to study what services I use and improve them if I want? What about my freedom to copy the code of those services on my own servers and running them on my intranet instead of wasting heavily-paid-for external bandwidth everytime I want to edit docs hosted online?

May 13, 2007

Dreams of Pizza Hut shattered!!!!!!

Filed under: Uncategorized — Tags: — archisgore @ 10:42 am

As some of you might have known, working at Pizza Hut was one of my life’s major ambitions. The job seems so cool and awesome! It’s probably the most incomparable job in the entire world! I’ve always wanted to do it for so many years. Ever since I was 12 years old. It was my dream job! One of the coolest jobs in the whole wide world. All that dancing on someone’s birthday and shouting out “Thank you” everytime someone ringed a bell; it all just seemed such fun.

Thanks to the Recruiters in Microsoft, that chance is now gone. I’m too old already and by the time I can get a break to work at Pizza Hut, they won’t want me. They’ve crushed my childhood dreams!

May 9, 2007

Pissed off at HRs!

Filed under: Uncategorized — Tags: — archisgore @ 12:57 am

Damn it! My original joining date of 16th July has now been preponed to 28th of May. This sucks bigtime.

All those plans, parties, konkan beaches, so many events I had planned to hold, and one major important mission that was in the queue.

Besides 28th May is desperately such a wrong date! Even one week later would have been better. But why oh why, did it have to be 28th of May?

And then again, got my exams and IT presentations back at college. Got to get my marksheets. Got the JRF NET exam. Damn it. I thought HR stands for human resources. They’re ruining my whole life!

Right now, in need of a good psychiatrist. Please suggest one if you can think of anyone.

Blog at WordPress.com.