Angled and More

Well, looks like it’s time for the annual “great summer” report!

I managed to finish my GSoC project for Plan 9 from Bell Labs this year well in time, and I’m quite pleased with myself. I learned so much, and got to spend time with some of the most brilliant people in the field of computer science… it’s been so amazing that I’m at a loss for words.

I had so much fun implementing the 9P protocol in JavaScript that I almost immeditey began a native PHP implementation; right now I’m polishing it for inclusion in PEAR. And hopefully, someday, my bindings over libixp might get included as a bundled extension in the PHP distribution.

Another cool thing I managed to do this summer was build a firefox extension. Nothing too fancy, but I’m still happy with what I managed to do. Times like this, I can’t help but bow to the IRC and Usenet overlords – couldn’t have done it without the help of those dozens of people!

After working with Plan 9 for a while, I got this crazy idea of trying to build a toy OS of my own, just for kicks. Really, looking at the source code for Plan 9 makes you believe that you don’t have to be a rockstar to build an operating system. Sure enough, after some help from the folks at osdev, I managed to get “Hello World!” on the Parallels virtual machine screen. I feel good.

Freed.IN is coming up (formerly known as Freedel), and I sent in a proposal on creating synthetic file-systems with (guess what) 9P. Irrespective of whether my talk is chosen or not, I’m going to Delhi; there’s too much fun involved to even think about missing :)

Oh, and, I got myself a job (tee-hee) at the Computer Sciences Corporation. But, well, Yahoo! is visiting our campus on the 4th… let’s see what the future holds for me.

Also, if you’re wondering why I haven’t posted in a while, you’re reading the wrong feed. Allow me to point you to my aggregated feed – you’ll see that I have, infact, been posting stuff whole summer :)

And so it begins

Yay, the Summer of Code has officially started! The last one month has been really fun for me – I’ve been hanging out with the folks at Plan 9 from Bell Labs and it’s been an amazing experience.

The Plan9 philosophy is a lot different that any of the other UNIXes. I mean, a *lot*. Not surprising though, since Plan9 is meant to *replace* UNIX. The one thing I love about Plan 9 and its associated applications is the way that the code is written. Almost all of the UNIX applications were re-written in Plan 9, and all of the code is written precisely with the notion that other people are going to be reading it. Plan 9 subscribes to the KISS philosophy (critics of Plan9 call it the Worse-Is-Better philosophy!), and would rather maintain cleanliness and readability of code than anything else. Again, not surprising; the chief architects of the Plan 9 system are also the authors of “The Practice of Programming“, an awesome book that teaches you how to write *good* code :)

Plan9 is also rich in documentation. It’s split into two Volumes: Volume 1 consists of the traditional programmer’s manual – the whole set the manual pages in the system, while Volume 2 is basically a collection of papers written by several people involved in the development of Plan 9 over the years on variu

Every time I ask a question on #plan9, the response is almost always RTFM. Not all projects can claim that, you know! Coming in from “lunix-land” (that’s how the Plan 9 developers put it), I was bound to have a lot of questions. Apparently, using Linux over the years has clouded my thinking ;)

It feels great to be working on something that is the direct product of some of the greatest people in the field of Computer Science. While looking through the 9fans mailing list, I came across some really great posts. Here’s a sampler: this one is by John Carmack on whether porting Quake to Plan9 will be a good idea, and this one by Charles Forsyth on why Plan9 is different from Linux.

Just yesterday, I had a rather long debate with my mentor on whether patents were actually evil or not. Which goes to say that we don’t always talk about technical stuff – conversations in #plan9 are always animated.

I’m loving it!

Another great summer ahead!

Been a while since my last blog post, and a lot has been happening. Somewhere around March, I became an official Gentoo Developer, which is totally awesome. Secondly, my proposal to Plan9 from Bell Labs was accepted for the Summer of Code this year. This year the ride was a bit more bumpy though; Google’s new methods of resolving duplicated acceptances almost got me orphaned. Anyway, all is well that ends well!

I’ll be doing some blogging relevant to the project at the same place as last year. If you’re tired of keeping track of so many feeds, use an aggregator or try out the feed from PlanetKiX; I just set it up to aggregate all my blog posts.

On other news, I played around a bit with OpenID, and it sounds really great. I got myself an OpenID at myOpenID and setup KiX to redirect OpenID authentication requests. Now, signing in to websites is as easy as typing www.kix.in; I wish more websites start supporting OpenID logins. WordPress, are you listening?!

The all new Thunderbird 2.0 looks and feels great, but I’m getting the feeling that all changes are purely cosmetic. And what the hell is up with the intro screen trying to download the TB logo everytime I start it up? The super-glossy new-mail notifier is great though and I’m really beginning to enjoy it.

Well, final exams are approaching (they start next friday), and I can’t wait for them to get over. I have my work cut out for the summer and I’m really looking forward to it! In fact, so much that I almost forgot that I have to perform a compulsory 45-day internship during the period :-/

Later!

Thoughts on Writing Good SoC Applications

Lately I’ve been spending some time on writing my SoC applications for this year’s edition. I’ve applied to 3 organizations so far, mainly because of the fear that just one application isn’t good enough to ensure a slot. A lot of students are frantic about how they must prepare their applications, and so I thought I’d give my 2 cents on the topic.

First off, relax. If there’s something I’ve learnt from last year, it’s the fact that if you’re really serious about the project you’re applying for, you have nothing to worry about. However, there are a small number of applications that are excellent in quality, but don’t make it because the organization doesn’t get as many slots. That place is not a good one to be in. So, it turns out that being excellent isn’t enough. You need to do better to make sure that you’re really on the top of the list.

Last year, I had applied to 6 organizations and 4 of those proposals were selected. In my opinion, all the 6 proposals had the same quality; they were all, after all, written by me and used the same “template”. So what was the reason for the 2 rejections? Gnome didn’t accept my proposal because my idea wasn’t very appealing to them – the proposal was great, but the project itself wasn’t something that was on their “priority list”. Portland State Univerisity didn’t accept my proposal because the idea was completey irrelevant to them – it even probably got marked as “spam”!

That means, the idea itself is as important as the application. To create a winning application, you first need a killer idea. I can safely assume that >80% of the applications selected last year were for ideas that were provided by the organization itself. Let’s face it, it’s difficult to come up with a killer idea that is *relevant* to the organization in question without being intimate with the organization beforehand. If you feel you’re not the creative type and you’re applying to an organization you haven’t been involved with before; play safe and go with one of the ideas posted on their ideas page. The mentors go through a lot of brainstorming to decide what ideas make it to that page. However, be warned that not all ideas may be really important to them: Gnome has divided their ideas page into three categories of decreasing priority.

Consequently, choosing a high-priority task also means that you’ll be facing stiff competition; and you’ll have to work extra hard to make your application stand out. But that’s what it takes to make a winning application. The organization is guranteed to pick their high-priority projects, unless there are *no* good applications for it (which is very unlikely), and that means the odds are higher here anyway.

Once you’ve chosen your idea, you need to sit down and write the application itself. Which, in my experience, just boils down to answering the 5 fundamental questions:

1) What? Be as detailed as you possibly can about what exactly you’re trying to do. Giving detailed explanations of what the problem at hand is all about, gives mentors the confidence that you know what you’re talking about. Some students have asked if they should start mentioning functions names or minute technical details; but in my opinion that’s a no-no. Detailed means a surface review of what problem you’ll be solving, or what feature you’ll be adding – not the exact technical details. In fact, in many proposals, figuring out those technical details may be a part of the project itself.

2) Why? If you’ve chosen a high-priority task, this answer should be easy. But it’s important to send a message to the organization justifying why this proposal is important to them, and how it would benefit them and the FOSS community in general. If you’re proposing one of your own ideas, this part is all the more important.

3) How? Here’s the part where you explain what your strategy for solving the problem is. Again, there’s no need to mention function prototypes or the nitty-gritty of implementation details; but you certainly must say enough to convince the mentors that you have the technical prowess required to complete the task at hand. As I’ve said before, in certain cases, working out these technical details is part of the proposal itself. In which case, include the various options that you intend to pursue. What happens if one of these options don’t work out quite right?

4) When? A timeline is an important part of any application. You don’t have to get it down to the date, but a rough outline in terms of weeks should be Ok too. Remember, mentors are looking for *quantitative* ways of measuring your progress. Give them milestones and spread out the project evenly across the given time. Also remember that this time around Google has given a whole month to get familiar with the project and working with infrastructure common to open source projects in general – So don’t say stuff like “Getting familiar with the codebase” or “Learn how to use CVS” in the coding time allotted. You need to do all that *before* you get down to business – on the 28th of May.

5) Why You? Summarize your application with a brief biography. Who you are and what makes you suitable for this project. You don’t need to repeat your whole resume here – certainly link to it – but be rather informal and focus on your *specific* skills or experience that are relevant to completing *this* project. The mentors can read your entire skillset in your resume anyway, use this space to convince them you’re the right one for this job instead. Give links to previous relevant work you’ve done. Show them you’re serious about this, and convince them that you will finish what you start.

A typical proposal is around 1000 words in length, 3 pages long maybe. Atleast mine are! Don’t be too brief nor too explanatory. The average amount of time a mentor will pay attention to your proposal is 2 minutes, so make sure your proposal can be read and understood in that time.

The applications I sent in last year are available here, and I’ll be posting this years soon. All the best, and most of all, Have Fun! FOSS is all about community and having fun, after all :)

Summer of Code, 2007 Edition

It’s that summery time of the year again. Yep, welcome the latest avatar of Google’s Summer of Code. All geared to be bigger and better than last year’s edition.

A whoppping 131 organizations have been selected this time around. Not many surprises; all the big fish like Apache, KDE, Gnome, Fedora, Debian, Gentoo, PHP, Python et. al. are mentoring organizations this year. However, there are also a lot of new interesting faces: Vim got a whole slot to itself and so did Git. Nice to see OpenSolaris joining the gang. Also looks like my efforts at canvassing the Macports team to sign up paid off, they’ve made it to the list too!

The webapp to handle all of the application process has been considerable spruced up for both the students and mentors. Also looks like mentors get an indication of students who are likely to accepted by multiple organizations. Too bad ;)

All in all, a pretty great line up of organizations and an awesome time ahead. Students, get your thinking hats on and start writing your proposals: Deadline is 24th. All the best!

Follow

Get every new post delivered to your Inbox.