Devlog December 10, 2011

  1. Looks like I’m going to be rewriting SelectionSifter’s UI a lot. No more QuickTemplates, as I found TablePager. Mediawik definitely needs to fix Bug #1 soon.
  2. Added proper i18n for SelectionSifter.
  3. Redid FilterRatings page completely.
  4. Went through PhoneGap documentation, checked out state of its Photo handling API. Looks good.
  5. Checked out patch to official Wikipedia app that adds upload functionality. Needs lot more polish.

DevLog December 7, 2011

  1. Redid Blog template. Recategorized all blog posts
  2. Finally enabled mobile banking on ICICI. Still need 8 days for Internet activation. Sigh.
  3. Ordered HyperJuice 60W battery + Airline Adapter
  4. Read through the WPBannerMeta template (and its subtemplates), figured out where to get the assessment markers in. Poof that was hard. These templates are perfect examples of ‘hacks’ – initially ‘designed’ for templating text, they’ve grown into homebrew programming languages that are worse than PHP. True evolution :)
  5. Read through, replied to very detailed questions about MW development from the KovaiGeeks folks. Both me and Sumanah were amazed at the enthusiasm shown. Should be one fun workshop!
  6. Fixed arbit bugs in in SelectionSifter, moved away from anything in QueryPage
  7. Started using SparrowApp and WunderList. Amazing they are.

Story of Average Indian ‘Techie’

Note: I am just reformatting + putting this in one piece rather than have it split across multiple comments on reddit. Am not the original author

Beautifully laid out by someone in the under-trafficked r/india:

my state has 300+ engineering colleges and my parents decided that i am going to be an engineer. so, i wrote an exam and got into one institute (luckily i can make it into a good institute where there are campus interviews.. the luck being i might have gotten 2 multiple choice questions correct than an unfortunate guy who will be discarded by our society)

Here i am in college. Nothing big here, professors are very friendly and if you are good to them(i always made it a point never to refuse whatever they ask ,,, please do not think i am homo), they will give marks, or you can later request them and because your future is at stake they will give you some marks.

when the admin password for our oracle installation did not worked, my professor in DB class wondered if we could have tried it with some more s (**) instead of 6 *s(as in **). This is one of the A+ rated institute in the country and the professor is a phD in CS. No, the password is not made of * characters.

In the examination we are supposed to write the code (yes, the code) on paper and submit it. Most of the guys did scored more than 80% by writing an universal program (includes, defines, main (), some function names related to the problem, the usual i j k and l, loops and finally adding fflush () and return at the end ) nobody can dare try to understand what is in between.

We had this big campus placement drive, when we got the usual aptitude (if ram worked for 4 days and shyam for 5 days, in how many days the work is completed) and tricky questions ( can you write a one line c code to find if a number is even) and the most complex of them (string reversal, tree traversal) questions, leaked one day before from the previous college the company went to recruit. we all prepared well and some got lucky. most of the times, even if fail to answer any of the questions, but smile pleasantly, you got in. sometimes, even the smiling part it not necessary, you just have to act how stupid they are to ask such questions to you..

when we joined this big company, we got trained in how to use the PC and every programming language and every operating system and every technology, each one not taking more than a couple of days. We worked hard and successfully completed the training. the test is on a PC, but the question bank is known (airtel friends ad).

Now, we are put into a project, we are given a contact number of the manager and office location and were told to meet him there. we, group of 3 people (we are friends by now) try to locate the manager hard for 2 days and finally get hold of him. we explain him that we are sent by Ms.knowallthingsbutactuallydumb to work in (t)his project.

He jovially introduces us to the technical lead. TL says he will give work after some time, but meanwhile asks us to 1) collect all the birthdays,contact number, mail id, designation details of all the team members, make an excel sheet and mail it to everyone. 2)sit with a senior engineer who is doing testing (pressing keys and entering some form data in a webpage and checking the output) and we enter the data all day and give him the screenshots at the end of day.3)attend team meetings (why we are the only ones to get there first and wait for everyone for 30 mts) make MoM and email it to every one and track the action items (yes, now we know these terms.. you cant put us in noob mode)

Then this goes on for 4 months, still no real IT work. we are wondering why we are not given any work (this is the 8th month we are in the company, drawing salary). we try to get some real IT work from the seniors, but they always seem not to notice us and not taking us serious. But, being new to the environment and in doubt of our capabilities, we let this go. we make merry of the free time, enjoying the cafeterias, making (cute) friends from other teams, roaming around the big campus and then one day, the manager calls us all in. this is not the typical meetings we are experienced with, because the manager talked to us into the meeting and scheduled it as high priority calendar invite, only to us, the freshers.

Wondering if any of us did anything wrong (it is a relief to find ourselves not doing anything at all, still) we walked into the meeting. The manager is very blunt. Higher-ups (client and Delivery manager) is questioning about the productivity and inquiring what the freshers are doing in the project. Manager tells us that we need to show output and contribute to the project work. One member replies him that we never got any work assigned. Manager becomes more serious. he questions our lack of initiative and tells us that we should deliver results. He calls the team leader into the meeting and tells him that we should be working on any pending issues and asks him to track our progress.

We are scared, confused, and do not know what to do. then the TL takes us to his desk and on a white paper strip (of size A8) draws a diagram (Euclid would know better shapes) explaining to us the product, process, standards, and every other thing (you should never touch the code, you should never email anyone without it being shown to me first …) and gives all of us guest permissions to a directory/machine.

We are all happy now, we got into real IT work somehow (may be the manager is angry, but we can impress him with our work later and change it). we also heard, if we perform better we will get sent to the USA and can stay there for 3-6 months. this really motivated us. we immediately logged into the machines, started reading the code.

We could understand nothing. The code is nothing like we wrote or tried to write during our college days, it is not even like whatever is taught in training. everyone of us scared now, we the freshers. now we talked among ourselves, first to know if other guy had any answers and then to know if they dont. to approach the seniors, who always seem to be busy, either at their workstation or at the printers (i do not know why such a rush at the printer area) and to disturb them with our silly questions seemed like bad to us. so we turned to GOOG.

everyday we gone through each source file (php, html, JS, shell) and googled the meaning of everything we do not know and that is everything. the TL never bothered us after the first meeting. we are also making notes of the things and looking back, i think we could have made a wikipedia then. such was our effort, but at the end of a couple of months it did not made any sense to us, except that we now know how to write a hello world alert page in IE (sorry, it is in HTML, JS).

So, we completed 1 year in the company. our reviews are coming up but we have not done anything yet. again we are in a panicky stage. Meetings are going on, but we are just continuing taking the MoM and distributing it. Now and then, we are hearing some terms (forms, tables, elements, script, position, width, validation, anchor, cursor, layout …) we learnt from exploring GOOG. it made us feel good, but we thought we are not IN yet.

Somehow we finished our annual reviews, all of us got mid-rating and manager explained to us later that we do not get much hike as our ratings are average. One of us who stayed late hours in office because he came late everyday(he lived in some faraway place) got 1% more hike than us.

This went on for 3 more months, we using GOOG to learn some terms, and doing some job works to other team mates. like one day, i stayed overtime, took printouts of the client webpages (pages and different instances) and stacked them neatly, so the senior engineer can go through them (i do not know the need for this yet), and like this another day, when i have prepared this big excel sheet and entered Pass/Fail from another automated report and this excel sheet generated some more sheets with nice charts. Another friend of mine tracked the billing hours similarly..

Then, one day the Manager again called us. Asked us what we are doing, and it is good to see that he is very satisfied with our work. The TL also gave a good feedback and told the manager that we worked independently and always helped the team. The manager nodded, and told the TL to send our resumes to client and put us into billing. Again, we are worried. Tension is on our faces, what to put into the resume, how to answer any questions from the client…

TL asked us for our resumes immediately, we prepared them and sent it to him, but prayed to god, there be no client interview. TL called us in and told us that he modified our resumes (what a relief, but wait) and added Web technologies (meanwhile clients also know our names as we are in CC list and in some group mail lists) experience and Enterprise Apps (Oh, its time for GOOG again, for us) so that it will seem relevant to the client. We wondered what will happen, if the client asked us questions on those and we do not get selected. TL told us not to worry, he will take care of it…(this time we are courageous enough to ask the TL, because we do not want to bow our heads before a white guy)

Then, after 5 weeks (client manager is busy or on vacation hence the delay) it is informed to us that we got selected into the team. As we are already there for the last 1.5 years and working in the project and familiar with web and enterprise technologies, the client had no objection for us to be in the project. we felt so happy, manager and TL both congratulated us, and it felt like a new job joining day for us..

Now, everything is set. forget the education, trainings, friends, politics in office,, Now all that is left on the highway is to cruise at whatever speed we allow ourselves. We are all so happy, and one of the friends is already planning to move to a better paying company after 1 more year of working in Web and enterprise technologies. I am already thinking about when to ask for onsite opportunity, whether i should wait for couple of months or make my wish known to the manager right now itself?…

So, the D Day has arrived. it is the day(remember, the speech in Independence day movie).Hence forth, i will no longer be known as just me, but as a techie (forward 1 year i can add Sr. before that).

My assignment and the Project?? Usability Project.. testing the clients web platform for its usability and generating metrics and reports in rich media formats.(now, you know why the rush at the printer)

– anonymous

Sounds very true, from second hand experience of people who are working there. Anyone with first-hand experience to corroborate this?

DevLog: December 5, 2011

Am migrating to per-day posts now. More granularity + I can fit more info in. The ultimate aim of the DevLog is to keep me on my toes and make sure I don’t relapse into no-productivity hellholes. Daily DevLogs should do a better job at them.

  • Spent some more time trying to get Kiwix to compile under OS X. Macports issue fixed, but more issues persist. It’s one damn complicated build system :| Not to mention that OS X sucks balls. Still no luck.
  • Moved my extension from GPoC to SelectionSifter, as picked by Sumanah (and remembered by Siebrand)
  • Added more content to my ‘How to become a mediawiki hacker‘ page. Outline in shape, needs content. (This is the page I am rewriting)
  • Cleaned up my Mediawiki.org userpage. Added stuff I’m working on there. Archived lots of older pages.
  • Published livetrains to GitHub. As expected Kishore cleaned it up a bit. Have figured out how to do the time modelling (Thanks lifeeth!). Should finish up when I get time

Need.To.Be.More.Productive!

 

Devlog December 2011

With me back to a place where I can be completely open about what code I am writing (yay!), I think it’s time I restart my devlog :)

Last time, I was using my old blogging engine, and hand-wrote them in a markdown file on my netbook. Things have changed a lot since then, and this time I’ll be directly writing/publishing them daily from WordPress

Dec 4

I finally grokked Indexes in databases. It all makes perfect sense now. Yay! (And this was thanks to being able to read on the Kindle, so yay for that too). Nothing productive done though.

Dec 3

Serious push to get livetrains project out within a few days. GeoJSON output done properly. Moved from OpenLayers to Leaflet.js on geohacker’s suggestion. Don’t regret that a bit. Also, coffeescript is fun!

I got to a point where I’ve got GeoJSON rendering routes. No live animation yet. Spent some time trying to find a easy screenshot saving app, found none. All the ones I found suck. Sigh.

Dec 1 – 2

Kindle arrived. Loading it up with books to read. SICP is good enough on it. Loading up as much as I can find about Hacker Culture/History.  Moved my entire vim setup to vundle. Not bad.

 

 

What I learnt from reading “Javascript – The Good Parts”

Just finished reading ‘Javascript – The Good Parts’. Here is what I learnt:

  • I knew jack shit about JavaScript. I was able to get along so far simply because I knew jQuery and understood how closures work.
  • Holy shit that’s one fucked up language. Quite schizophrenic, saved by almost limitless extensibility/monkey-patchability/watcha-gonna-do-write-a-java-applet-hahaha .
  • If you’re going to write Javascript, you’ll have to subset. Subsetting/augmenting has its own share of problems – primarily that map in your code might not be the same as map in someone else’s code, even if they seem to be working on the same ‘type’
  • jQuery is incredible. I guess it is sort of like a ‘Standard Library’ of sorts, atleast on the client side. I’m sure there exists something similar on the server side as well (underscore.js, perhaps?)
  • I haven’t written any sufficiently large Javascript program yet. Need to fix that.

Defensive Programming

When you’re writing PHP, you program defensively. The language is out to get you. Make one wrong step and it’ll fuck you over. Never assume anything, make sure you always check the documentation. You can’t trust the language. It’s not stupid, it’s schizophrenic.

I think I should start treating JavaScript also that way.

3 reasons why people join ‘IT companies’

Source: Friend of mine who is sadly ‘training’ at a big ‘IT company’ now (He wishes to remain anonymous, and I could see why)

  1. Because everyone else did
  2. Because parents told
  3. Because it will be very sophisticated and relaxing there, with lots of recreational facilities

I’m just going to leave this here, and hope that when this boom does bust, it doesn’t leave too many dead bodies in its wake.

Our Greatest Fear – ‘Flash and Fade’

HP:MOR is an awesome fanfic that anyone intent on improving themselves should read. It’s a bit like HHG2G – you don’t read for the storyline (which is jumbled) but for the characters, wit, rationality and humor. Quite a few of those things hit very close to home – if you are a geek, they would perhaps to you too. Highly reccomended.

Of the many quotable parts of that book, here’s one little nugget I found:

_[…] the simplest explanation for this unverbalizable fear of yours is just the fear of losing your fantasy of greatness, of disappointing the people who believe in you, of turning out to be pretty much ordinary, of flashing and fading like so many other child prodigies..

_ – The Sorting Hat, Ch 10, HP:MOR

A few friends were discussing this a while ago, and I think this phrase succinctly explains our greatest fear.

Here is to hoping that I don’t just ‘flash and fade’ :)

Interview with Sriram Krishnan (5 years old)

5 years ago, I was in my 10th and new on the Internet. I had been coding for about 5-6 years already, but mostly with TurboC and VB6/C# (thanks to MSDN CDs I steal from Sudar). And then this interview happened and pushed me farther out into geekland :)

Presenting a reprint from 2006, my interview with Sriram Krishnan, then Microsoftie. Note that the opinions here are of a Sriram 5 years ago, and do not necessarily represent what he thinks now :D And the questions are obviously the questions a younger, naiver (and stupider) Yuvi would’ve asked, so bear with that. I was incompetent then (I probably now am too :P) – but notwithstanding all that, I still think this makes for good reading.

First, tell us about yourself

I was afraid of that question :)

I’m Sriram Krishnan – I work as a Program Manager here at Microsoft. I work on Visual Studio for Devices – that means I help people write software that runs on smart devices, mainly mobile phones but even refrigerators, washing machines, set top boxes are smart machines. I’m from Chennai, studied in SRM Engineering College and finished my BTech IT last year (yippeee!). I’m really tall (6 feet 5), really loud and have an unhealthy love for Star Trek and most forms of TV in general. I studied in Sir M Venkat Subba Rao Matriculation Higher Secondary School. It’s in T Nagar.

As a Program manager, what are your Job responsibilities at Microsoft?

I need to explain this a bit as a ‘Program Manager’ is a unique beast to Microsoft. In short, PMs have all the responsibility and none of the authority. Basically, we ‘own’ the feature. This means that we figure out how the product/feature should look like. This means talking to customers and finding out what they want. We then own the ship cycle – so we have to figure out how many features can we build given the limited time and people we have. We then go write ‘specs’ or specification documents. The developers take these and turn this into code. We are always the external face for our feature.

Now, this doesn’t mean that we control the developers in any way. All the 3 roles (developer, tester, PM) are equally important. If my developer doesn’t like my spec, he’ll tell me so. That’s why my title is interesting- I ‘manage’ the program rather than any people. Folks get confused due to the ‘Manager’ part of my title :) Hope that explains what a PM is in short. You really have to be here to understand the full scope of what a PM does :)

Now, tell us something about Microsoft…

Microsoft is a weird and interesting place. Kind of like Never Never Land (if you know Peter Pan). It is big – the people here are really smart. It is scary how many people your software can touch. Imagine if you were the guy writing the Start Menu in Windows – imagine the number of people who are using your code. The sheer amount of responsibility you have is incredible

Another interesting thing is – for whatever interest you have, you can be sure to find some team in Microsoft working on it

Most of all, I like the people. Incredibly, scary smart. I love the fact that I can say I work in the same company as Dave Cutler (the guy who lead the development of the NT kernel).

Tell us about your College Life.

It was awful. Seriously though, I now think that I wasted too much of my time and energy worrying about things like exams and college. When I recently went back to college for my convocation, I told my HOD that the only useful time I had spent in college was the time I had bunked and stayed at home.

If you’re a geek or a creative person, I would urge you – spend time on what you’re good at and what you like doing. Spend time drawing or writing or coding. Don’t spoil your health too much by killing yourself for your exams

When you reach 12th standard and all throughout college, people will always tell you “This is the most important exam of your life”. That is nonsense – no one at Microsoft has ever asked me how much marks I have got

What matters is what I did in my spare time in school and college. I liked to play around on my computer – and that’s what has helped me

College was awful. I spent a lot of time learning subjects I hated and that were useless to me. School was better in that there wasn’t the pressure we had in college (except for 10th and 12th public exams). The best part about school for me were the culturals I attended. I got over my fear of the public, of strangers. The public speaking I did then helps me till this date.

If I could go back in time, I would tell myself before the 10th exams “Don’t worry about it – no one will ask you about this even 2 months from now”

I would tell myself before the 12th exams ‘Don’t kill yourself’. Don’t spoil your health. It’s not worth it. No one cares”

I would tell myself “Spend more time having fun. Go play more. Spend more time on your computer. Spend more time dreaming. Spend more time idling away time. Spend more time reading good books (not related to studies)

Spend more time discovering yourself”

And finally, spend more time not growing up

Any Advice on following your footsteps and cutting classes? Tips and Tricks?:D

Let me be clear by what I meant there. I didn’t go to college a lot because I did a lot of creative stuff at home. In all my 4 years of college and the many, many times I bunked college, I don’t think I ever went to a movie, for example.

If you’re looking for me to say “skipping class is ok”, I’m not going to say it. I’ve seen too many people waste their college lives by skipping class and wasting their time.

I’m saying – do what you want to do and what you think will hold you in good stead later. Follow your passions. Don’t go party :-)

One of the reasons I got away with a lot of this was because I had a great academic record and I had a long history of doing well at inter college symposiums and so on. That kind of credibility helps

What do you think of Marks?

Don’t put too much weight into them. Don’t spoil your health or your peace of mind over them.

And please don’t judge people based on them.


Loaded question and one that I pontificate on at length all too often.

I think it is broken. Here’s why.

Human beings think. They are good at it too. However, no school or college encourages you to think. Human beings are good at doing new things. The greatest things in our history have come from someone asking ‘What if’ or ‘Why’

But in school, you’ll probably be branded as a brat if you ask ‘Why’.

All throughout school and college, I saw people being taught to be the same. I saw individualism suppressed. Being yourself was bad – being like everyone else was good.

College was worse than school. If you need to have 250 engineering colleges in Tamil Nadu, what chance do you have of getting quality lecturers? So you make do with what you have – which is mostly lecturers who couldn’t get jobs anywhere else.

And then they force students through 4 years of mindless torture, while the college authorities devote time to useless things like banning jeans for women and cellphones on campus.

I’ve always dreamed of someday setting up a school where people would be encouraged to think for themselves. Where they would be taught to question everything.

I told someone recently ‘The most useful time I spent in school and college was in the time away from class. In school, the most valuable thing I learnt was how to speak on stage, thanks to all the culturals I went to. In college, it was all the days I bunked and wrote code at home’

Question Everything. That’s a good mantra for everyone.

 

If the Education System is broken, why ain’t it fixed?

Because the people who can don’t care. And it is the ‘broken-ness’ of the system that keeps them in place.

 

If you were the Education Minister, what would you do?

I’m going to sum up everything in one line.

Teach people to think. Don’t teach them to be like everyone else.

Have them write essays like ‘Why is Isaac Newton wrong’ rather than essays that conclude with ‘And thus, we conclude that so and so is true’.

Teach them to question. Teach them irreverence for the status quo :-)


Being a programmer is hard. It means days, weeks of debugging the same problem. It means having to constantly relearn your tools and your materials. Compared to doctors, the human body doesn’t spout new limbs every decade or so, does it? But, you get new programming languages, new operating systems, new tools and technologies almost every day.

So don’t do it unless you love it. Please don’t take up computers because it is fashionable or because it is an easy way to make money. Take up computers because you love it at a very deep level.

Be curious. Poke around your machine. Try to understand programming at all levels. Know how to make a button spin. Know how Windows allocates the memory for that button and the data structures involved.

Code for fun. Write programs that you will use. Write programs that your friends will use. And then write more. The more code you’ll write, the better you’ll get. Read good code. You’ll learn a lot.

Read good books. ‘Structure and Interpretation of Computer Programs’ and almost all of Tannenbaum’s books are must reads.

Code more. Learn a new programming language atleast every 6 months.

Remember this – no other profession can create so much with so little. You can’t create an iPod or a Ferrari or even a small pencil from your bedroom. You can create an operating system though :-)

Try everything – atleast once :-)

Eric S Raymond and Peter Norvig have written great articles on similar lines. I would strongly recommend you to find them and follow them.

What’s your advice to students on choosing Colleges?

Thanks for asking me this!

  • Choose a college with good transport facilities. If you need to leave and come home, you should be able to quickly
  • Choose one that lets students go attend symposiums, culturals without any restrictions
  • Don’t join one that imposes these moronic ‘boys and girls shouldn’t talk’ rules. Inter-gender communication is important in the workplace.
  • Apart from the IITs and Anna University, chances are low that you’ll find good faculty in other engineering colleges. Yes, there are a lot of gems out there but they are few and far between. So you would do well to ignore claims of a great faculty
  • See what the former students of the college are upto. See how many have gone on to join Microsoft or Google or pursue a Phd.
  • Join a college for the quality of the students, not for the education or the faculty. Trust me it is the people around you that will make the most impact on you
  • Pick one that doesn’t enforce attendance so strictly (i.e. they won’t fail you because you have 74.95%)
  • Pick a course that you know you enjoy. Don’t join a course because it is the ‘in thing’ right now or because your parents said so.

In fact, the last point merits some more explanation.

I see a lot of students doing this – joining non-computer science departments and then getting a job in an IT company. Please don’t do this. Why? For it’ll be a long time before you’ll get all the CS background required to be a good programmer. Computers are like art – no one can ‘train’ you in 6 months.

I need to tell a story here.

When I wrote my engineering entrance exams, I had to wait a few days for my counseling. I remember watching on Sun TV, an interview of the guy who had scored the highest marks and who was Rank #1.

He had picked some electronics related course at Anna University. When the reporter asked him ‘why’, he said ‘Because anyone can learn computers by going to a class for a few weeks’.

I remember shaking my head and thinking ‘what an idiot’. For you cannot learn computers by going to a class for a few weeks.

Pick a course you already enjoy.

Python? And the Visual Studio Express Editions;-)

Seriously though, students should be taught how to debug. And how to code iteratively. I never understood why you have to write code on a piece of paper and then present it to your examiner – that’s not how you write code in real life.

And most importantly, students need to understand the in-depth working of whatever they’re using. What is the processor doing when you do a printf? You need to understand stuff like that

What do you think of “Computer Institutes” like CSC, especially for non-entry level courses?

 

I shouldn’t be too hard on them since I would have never got into computers if it weren’t for one of these institutes. It really depends on the expectations you have.

Please don’t join an institute because they’ll get you a certificate or because they’ll get you a job. That’s the worst motivation ever. Join to learn something. Don’t expect them to teach you everything though.

What first hooked you on to computers?

This is quite an interesting story. Until 12th standard or so (sometime in 1999), I had never touched or used a computer apart from a few DOS commands we used to learn by rote for our exams. I had wanted to be a writer or get into graphics and animation.

My life changed one day in 12th grade when my Computer Science teacher summoned
me during a lunch break. It turned out that there was an unknown institute (called Comp-U-Learn) that was doing a free, promotional “Introduction to Computers” course.

Guessing that it couldn’t hurt (and it was free after all), I trotted happily to this computer institute where we learnt things like how to create a folder, how to draw in Paint and so on.

One incident there changed me forever. One particular class, we were being taught how to copy-paste and the instructor happened to say ‘Please right-click on the ‘My Computer’ icon on the desktop’. Puzzled, I shot up my hand and eagerly asked ‘Sir, where is the desktop?’

Everyone in the class, including the instructor, burst out laughing.

I was hurt. In an almost cinematic fashion, I vowed to myself then that no one would ever laugh at me regarding computers again.

The ‘course’ was for 15 days and the institute wanted students to sign up for an additional 30 day course on C/C++.

I was the only student who signed up for the additional course. Since I was the only guy around, the bunched me with a bunch of older people who were studying Java and I got introduced to wonders like ‘import java.awt.*” and so on.

I finished 12th standard and the day after my TNPCEE engineering entrance exams, my dad bought me a computer. It was a P3, 850 MHz machine with an astounding 256 MB of RAM.

I was hooked throughout the holidays. I spent the entire holidays writing code in VB6 and have been coding ever since…

Why do I love computers so much? I’m really not sure. I think it has something to do with the sense of creating something, molding something from nothingness into a work of beauty. I tell my non-programmer friends that one of the greatest pleasures of life is seeing something finally work correctly, to track down that last pesky bug.

I’m also seduced by the idea of so many people using code that I’ve written. How many artists get to mass deliver? :-)

Which Programming language do you respect the most? And, which one do you find the most useful?

 

Well, one of the things that you learn over time is to appreciate different things in different languages. People ask me all the time ‘Which programming language do I learn?’ and that is a fundamentally incorrect question.

A programming language is like a tool in your toolbox. You don’t use a screw driver alone and refuse to use anything else, do you?

Anyway, here’s a list of some programming languages that I respect and why I like them.

– My first love. Made programming accessible to the masses. I love the idea that normal people could now code, even if it was only an Excel macro.

– My current favorite. I love its simplicity and the idea of ‘batteries included’. I think this should be the first language taught in school.

– My bread and butter. Anders Hejlsberg is a genius – I love where he has managed to take C# without making it inaccessible to people who want their curly braces and their semi colons

– Twists my head in some very interesting ways. When you code something in Scheme and you see it work, you get a sense of achievement – the same thing you get after you’ve written an exam well. Someday I hope to understand macros. Maybe a day after that, I’ll understand continuations.

came close to being on this list but I decided against it. Weird, considering that I write so much code in them.


Interesting question – I’ve always had too much of an ego to acknowledge anyone as a role model.

However, of late, I’ve realized that I do look up to two people. One is Bill Gates and the other is Steve Jobs.

With BillG, there’s this whole side of him that people outside Microsoft never get to know. I am amazed at his depth and breadth of knowledge – I’ve read stuff from him on topics as varied as database query processing techniques all the way to virtual worlds and search engines. I’m amazed at his sheer smartness and intelligence – there are a lot of stories in Microsoft of ‘BillG reviews’ which talk of how smart he is.

I also love the fact that he’s so passionate about software, and of late, solving the world’s problems.

With Steve Jobs, I love his eye for beauty and perfection. And I would someday like to get his ‘Reality Distortion Field’.

Kind of politically incorrect for a Microsoft employee to admire Steve Jobs, isn’t it? :-)

               Lord of the Rings, Hitchhiker’s Guide to the Galaxy, anything by Frederick Forsyth and Michael Crichton. And Peter Norvig’s AI book All of Ayn Rand’s work deeply influenced (and comforted) me as well.

Your Favorite Authors

Apart from Forsyth and Crichton, I loved Conan Doyle as well. I love Joel Spolsky and Paul Graham. Robert Scoble is a friend and so is Don Box – I love to read them as well. Of late, I’ve loved reading Guy Kawasaki. Closer home, India Uncut (Amit Verma) is always fascinating. Am I allowed to list myself? :-)

Your Favorite Music

 

Anything by U2, Scorpions, mostly classic rock. And a lot of movie themes – I love the John Williams score to the Superman movies

]

 


Dave Cutler. Barry Bond (he works on my team :-) ).Raymond Chen. Peter Norvig. Rob Pike. Andrew Tannenbaum. Guido Van Rossum


Visual Basic 6. Python. Winamp.


For an infinite number of wishes. Hey, we at Microsoft think big :-)

What would you like to say to the Students?

Question Everything. Never Belong. Ask yourself ‘What can I do that I’ll be remembered for the next 1000 years’.

And work towards that.


Don’t teach unless you love to.

What’s your advice to the “normal guy” on becoming a geek?

Be curious. Enjoy technology and poking around technology. Ask yourself the question ‘How does that work?’ and ‘What if X could do Y’ and so on.

Be a tinkerer!

My Vim setup

I moved from emacs to vim a while ago, and have been steadily accumulating a series of plugins in my .vim. They’re all up in my rather messy dotfiles repo. Here’s a slightly more neatly organized list of the plugins I currently use:

  1. command-t – File opener and buffer switcher. In-fuckin-credibly useful.
  2. vimpress – What I use to blog since moving to wordpress.
  3. matchit – Lets % work with html tags
  4. commentary – Generic commenting and uncommenting script NERDCommenter has replaced commentary due to being more flexible and having more options.
  5. fugitive – Incredibly awesome git wrapper for vim. I rarely go to the commandline for git these days
  6. tagbar – Useful code-exploratory plugin when I’m looking around a codebase trying to familiarize myself.
  7. supertab – Buffer completion in insert mode only when I need it.
  8. gist – Put stuff up in gist to pass it around
  9. BufClose – So I can close a buffer without messing up my splits
  10. extradite:Glog replacement that builds on top of fugitive. I don’t understand why this isn’t bundled with fugitive
  11. TwitVim – Yes, so I don’t have to go to the browser (and be consumed by chat/reddit/hn) just to post a tweet.
  12. ack.vim – Ack integration for vim. Do yourself a favor and use ack instead of grep.
  13. Syntastic – Automatic syntax checking so that I don’t miss a semicolon and not know about it
  14. php-doc – Insert boilerplate PHP doc compatible strings in my PHP files whenever I want to. Very PHP specific, need to find something that works across languages. (Note: This plugin has quite some identity crisis. It’s named PDV but it’s filename is php-doc. Since php-doc is more descriptive, I’m using that)
  15. delimitMate – Automatically closes quotes, parens, braces, etc for you. I initially thought this would be super annoying, but in fact it is rather very pleasant.

I’m also on the default desert color theme – haven’t found anything better. Suggestions welcome – both for the color scheme and for new/replacement plugins. After trying out wombat and jellybeans color schemes, I have settled on wombat for now.

Suggestions for more plugins still welcome :)

This is the list as of 24 Aug 2011. Updated as of September 2 2011 (added 10, 11, 12 since last update). Updated as of September 5 2011 (changed 4, added colorscheme change). Updated as of September 12 2011 (added 13, 14, 15). I am moving quite fast, am I not? Will keep this post updated as and when things change.