I am confused..

Three days back there was a talk by Mr. Himanshu Kumar here at Penn organized by AID Philadelphia. I happened to attend the talk. There he spoke about the harsh state of tribals in Chattisgarh. How the govt is committing atrocities on them. How people are being killed and the killings are labeled ‘encounters’. The details of what is happening there is well presented in the link above. People are not being allowed into the area. Mr. Himanshu spoke about how he was made to flee from his own home. How his ashram was demolished by the police and how he is in constant fear of being arrested.

After his talk we moved on to a more interactive discussion about why the state govt is acting the way it is and how the situation can be improved and what can we do to improve the situation. Mr. Himanshu said that this scenario is because the govt is trying to forcefully grab the land of the farmers and sell it to industries and corporations. He also mentioned that the current model of industrial development wouldn’t work and that an alternative development model has to be adopted. Although, I do not completely agree with this statement about the development model, I can understand how this is causing problems to the tribes. He mentioned that the govt is not ready to hold any conversations with these tribal farmers and is falsely labeling them as Naxalites and Maoists. At this point one lady asked Mr. Himanshu, “What can we do as common men and women?”. Mr. Himanshu went on to say that we must first realize that there is a problem. The first step has to be to acknowledge that the govt is on the wrong side here. The govt is the invader and the oppressor here. “Uske baad?” I asked. “Action.” he said. And this is where my confusion lies. How are we supposed to take action against this? In what way do we have the power to influence and mend the state? Voting? Don’t think so. As of now voting in India is a matter of choosing one corrupt leader over another. You don’t even have the choice of saying I don’t want either of them. Those few people like Himanshu Kumar, Binayak Sen, Arundhati Roy and Medha Patkar who have the courage to raise their voices are tortured and put in jail. So my confusion still remains. What do we do? What can we do? Still in search of the answer.

What if..

About 5 months back, Madhu and I were chatting casually and he happened to ask me this question.

imagine maadkoLakke duddu kodbekidre hegirathe?

come on lets do a movie in competition to Christopher Nolan :D

The first sentence translates to “What if we had to pay money to imagine?” And this led to one of the more fun and entertaining conversations we’ve had. Now imagine what if there was a world where imagination could be genetically disabled in people and what if the control over enabling it was under corporations. We came up with a business plan to actually exploit such a possibility. It is most amazing to imagine such a world (thankfully I don’t have to pay anything to imagine, yet).  We figured there needs to be some kind of a measuring device that measured people’s imagination – let’s call it an Imagination Meter. And anything anybody imagined would be measured and charged for based on some kind of a scheme – ‘Pay as you go’, ‘Unlimited – full bandwidth’, etc. Now imagine if everyone’s imagination was disabled, our business would obviously fail because nobody would be able to imagine, how it would be to imagine. So in order to counter this flaw what we’d do is enable imagination for free on a select few individuals. These people would be our promotional advertisements. Now that’s a great business strategy right there! Although this was fun, I strongly hope that we don’t see such a day. Also if at all there’s a movie based on this idea sometime in the future, please remember Madhu and I came up with it first. This blog post is so that we can sue those filmmakers. Anyway, I better get back to studying now, finals less than 48 hrs away.

So I wrote a mail server..

This Spring semester I have taken up 3 courses, out of which one is called Software systems. Now why the course is titled that? I don’t know. It’s a distributed systems course and one of the most hectic courses that are offered here at SEAS, UPenn. This course has 2 course projects, 3 homeworks and 2 exams. The first project was to solve the Dining Philosophers problem using semaphores. The second one was to build a distributed mail server application. This post, as is evident from the title, is going to be my rant about this second project, which incidentally I finished submitting on wednesday and whose in class demo was held on Friday. Firstly, I worked with a team of 3 others on this project over a period of 5 weeks to write this mail server. We had to read 3 RFCs – rfc2821(SMTP), rfc1939(POP3), rfc0822(Email message headers). The project had 2 milestones:

1. One server that provides SMTP and POP3 functionality and a client that can access this server to send and receive mails – due 2 weeks from the start of the project.

2. Clusters of many such servers which interact within and outside of the cluster – Total distributed environment – that can exchange mails among themselves.

The basic task flow was divided as:

1. SMTP functionality.

2. POP3 functionality.

3. Replication among the servers within a cluster – all servers within a cluster must be identical, that is, must contain the same data.

4. Relaying among clusters – all clusters must communicate with each other relaying requests. Effectively a client can connect to any cluster and still be able to get data from any other cluster. The relaying has to be transparent to the client.

Overall, I must say this project has been a simply wonderful experience, except for the week before the submission of sleepless nights. This project was completely written in Java, which isn’t particularly a favourite language for me, so this project has given me the confidence of programming in Java, thanks to over 1500 lines of code that I wrote. Conceptually, I have learnt far more. This project exposed a lot of inherent challenges of distributed systems. The major challenge of a distributed environment is to establish ordering of events – in this case mails – among the servers within a cluster. Since each server has its own clock which may or may not be in sync with those of other servers, there is no standard notion of time. Another challenge was to implementing the standards right. The project demo involved testing our system with those developed by other groups, hence implementing standards right was extremely important. And the fact that the SMTP rfc ranges from vague to utterly indecipherable didn’t help. Although the demo on friday was not flawless, it thankfully wasn’t a complete flop. There was one particular bug that showed up which was completely bewildering. Other than that things were pretty much smooth. Now I have to concentrate on getting a good score in the finals.

KDE Kontributions

There have been quite a few posts by people better than me about how to start contributing to KDE. I myself haven’t done any code contributions to KDE and I know nothing of Qt (except that it’s pronounced `cute’). But I think I can call myself a KDE contributor. This post is intended to provide a platform to those people, who like me have zero knowledge about Qt and the KDE code base, to start off by getting involved with the community(read my brother. Supreeth, I hope you’re reading this). This post is certainly not intended to discourage people from contributing code. Code contribution is definitely the greatest way you can contribute to any FOSS project. Let me first tell you how little I have contributed to KDE and how much I have gained from it. My first contribution came in the form of the KDE handbook that was released in 2008. My name does appear in the contributors list. I must admit that book has traveled far and wide across the world. We released this book at FOSS.in 2008 and we all got a lot of praise for it. Later on, I worked in marketing and organizing the logistics for KDE at FOSS.in 2009. That is probably it. Like I said, I haven’t done much. What have I gained from this? I have met some truly amazing people, made some awesome friends and of course loads of goodies including the KDE hoodie that protects me from the harsh Philly winter :P . It is through KDE that I’ve been fortunate enough to meet studs from IITM like Akarsh, Naveen, Kashyap and others. It’s while designing the KDE handbook that I met Kamal, the design genius! And of course Pradeepto. What I am trying to say here is that you too can get involved with KDE in such ways. If you’re good at writing, help out with the documentation of the tons of kool KDE tools and apps. If you’re good at good at Photoshop/GIMP, who knows, you may get to design the logo for Conf.KDE.in next year. Also whenever you feel like contributing code you have all your friends in the community to help you out in starting. Log onto #kde-in on freenode to feel the KDE love. And there could be no better time to get involved than now, with GSoC 2011 just round the corner.

So where to start? Conf.KDE.in! Go check out the website http://kde.in/conf/.

When? March 9th to 13th.

Why should you attend Conf.KDE.in?

Well, there are two reasons that I can think of:

1. A lot of talks are focused on beginners and there’s a whole lot of things you get to learn.

2. You get to see how a good FOSS community works and get to involve in some of the work yourself.

Life in a big country

It’s been close to 5 months since I moved to Philadelphia. Most people I’ve spoken to have told me that it’s a big deal, that I have moved to a different country and I should expect problems(big problems!) adjusting here. Surprisingly for others (read my parents), and not so surprisingly for me, I am doing quite well. I like the university atmosphere and life is too busy here to think about missing home. Nevertheless, there are things that I notice have changed. Some of these changes are positive and some negative.

Life here seems very punctual. I was used to local trains arriving on time, so the Philly subway being punctual wasn’t a big surprise. But the buses here being on time was surprising. Another thing that was surprising was the structure of the cities. Most of the cities I have been to, be it Philly, New york or Washington DC, have very well planned streets. All streets are grid like and the blocks are rectangular. Philly, for example, has all the streets running from East to West named after trees and all the streets running from North to South numbered. Finding places in these cities is very simple, considering having searched for addresses back home. We have winding streets, streets within streets, and sometimes no streets at all!

Things here are huge! Tall buildings, big cars, freakin’ huge brinjals(or should I say eggplants) too! Also things are very sophisticated and convenient. There’s continuous water supply and electricity. Sometimes I feel things are too convenient and the people here don’t understand the value of these things. Lights are left switched on even if no one is around. Hallways have too many lamps and so on. I have a cousin here in Connecticut whose place I frequent. While, over at his place I found this device that is used to remove seeds from an apple without cutting it open. I still don’t understand the necessity of such a device. There are many more such things.

People here are very polite. It was very unnerving the first few days of my stay here. If you make eye contact with people while walking on the road, they say hi, or smile or ask you how you’re doing. It made me wonder why we don’t do the same thing back home. It’s nice to see people smile at you. Now, I’ve started doing the same too. On the other hand, people here are super-paranoid. They look at everything with suspicion. A brown guy with a camera isn’t really a comforting sight I guess :-P . And to add to it, things here seem very mechanical. It’s as though the human element itself is missing. Everything has a protocol, a procedure to follow. Every place has a thousand sign boards. Sometimes I feel the whole country is one big Dwarka hotel. Bathrooms in restaurants have signboards that say “Employees must wash their hands”. Yeah right, like this signboard will make them wash their hands if they don’t want to. Buses won’t move unless everyone is seated. Try doing that in India! People use their own judgment more in India. This is one aspect where I sort of miss being in India. Things are more human back home. Anyway, this has been my experience here thus far.

Of SoPs and Personal Statements

Quite a few people have asked me to review their SoPs and personal statements in the last couple of months and it’s time for me to start working on mine as well, if I have any hopes of applying for PhD by this year end. Hence this post. This is intended more as a reference for me, so that I have a clear outline of steps to follow when writing my SoP and personal statements. If any of you have anything to add please leave a comment. So here goes.

Lessons learnt:

1. Start early. A presentable SoP will take at least 3 months to write. And that is not even a good one. The last time I wrote one, I took about 2 and a half months, got it reviewed by at least 20 people, did about 20 edits (18 is what bitbucket tells me, but I’m sure there have been more than that) and still it turned out to be full of $h1t. Mental note, mistake not to be repeated.

2. List out points that you want to say/brag/show off about yourself. Not to be done overnight nor in a day not even in a week. List out the points as and when you think about them. Do it before you forget about it.

3. Maintain versions of it. This is the one thing that I did right the last time round as well. In fact my SoP and personal statements and every other thing related to applying for higher studies is actually in a public mercurial repository (So does Madhu. Punch was amazed that we had public repositories :-P ). Anyway, the point is that you never know when you might have to revert to something that you had written earlier. Or you never know when you accidentally delete that folder which contains all your applications related files. If you think putting it in a public repo is overkill, definitely make the repo private.

4. Use LaTeX. It’s extremely powerful and has hundreds of templates – so the amount of code you need to write is minimal. Also it is easier to maintain and since it is text based you can easily get diffs of your versions which is very helpful to see what changes you’ve made from the previous version. Personally, I would recommend org-mode which is even simpler than LaTeX and can be converted to LaTeX as well, but Emacs itself has a pretty steep learning curve.

That’s all I can think of as of now. But will keep updating this post whenever I can think of something else.