Sunday 21 August, 2005

Everybody should Blog

Just as I have installed this new application called BlogJet to blog more frequently and easily, one of the millions of scintillating (mind you, this word has been corrected by BlogJet Spell Checking feature ;-)) neurons in my brain lit up and inspired me to write this post. Just think of all the possible uses of blogs. Actually, it is nothing more than a web site but the fact that with so little efforts the information can be published and shared by anybody and everybody is very important and powerful. Consider a group of grads sharing a blog for keeping in touch with their batch-mates, consider a group of people interested in The Taj Mahal sharing little snippets about its history with each other, consider a blog for citizens in a city for sharing their problems, consider a movie blog where people post their reviews on different movies, consider people from all over the world sharing their thoughts with each other on some special topic of interest. The possibilities are limitless.

One might think, “What different is this than having forums on different topics?” I think blogging is much less complex and much more flexible than forums like phpbb. Blogging is much cheaper (free of cost, so to say) whereas forums need to be hosted on web servers. Configuring forums require a lot of skills and understanding whereas Blogging is really one button publishing. Blogging has many features like RSS feeds, remote blogging through mail, mobile blogging, etc.

I have not researched on the web to see if such blogs already exist but here are a few blogs that I think are a must.

  • Blog by a local governing body in a city for updating it’s activities
  • Blog by large organizations to keep its employees all over the world in touch and also to keep them informed about the latest in the organization
  • Blog for TV series, Movies review n so on

Here, in India, people have just started blogging seriously. So, it may take a while for everybody to know n understand what a blog is. But, I see millions of new blogs being written in the near future and they are surely gonna help people communicate and share. (I hope, someone will use the web for what it should be used for ;-))

This is my First post with BlogJet

I’m currently trying Blogjet, an application that provides much feature-rich support for desktop blog publishing.

It’s like a little WYSIWYG HTML editor with adequet features like

  • Unordered Lists
  • Spell Checks
  • Recent Posts History
  • Other Formatting Features
  • Smilies, Images, etc

Saturday 20 August, 2005

Konfabulator is Fabulous



Looking at Windows Vista? Naah!!! It's Konfabulator.....

The idea is to use XML and perl to create cross platform widgets that sit on your desktop and may perform some functions. Currently I found a couple of good widgets like blogging wdget and Google Search Widget. Though not being used by many right now, this one is pretty cool and I suggest you to try it.

Saturday 13 August, 2005

Out of this World

My blog which has not been updated for some time now is now out of this world.....





This is what I got in my inbox in the morning....

Dear Humanoid:

Your attempt to contact extraterrestrial intelligence has officially begun. At approximately 7:43 a.m. on the morning of August 12, 2005 at a longitude of 28.3 North and a latitude of 80.6 West traveling at 186,000 miles per second, the speed of light, your message was beamed into deep space trailing the launch of Atlas V at Cape Canaveral Florida. (Again, something for the nerds; Pluto is 2.7 billion miles from Earth. That means your blog has far surpassed our solar system!)

Whoa!!! I wonder if they really do transmit all these blogs as they claim to do. Anyway, I'm still happy.....

Sunday 7 August, 2005

Flickr

This is a test post from flickr, a fancy photo sharing thing.

Friday 29 April, 2005

What a come back....

Imola was really one of the best races I have ever seen. Raikkonen finally had something to cheer about with a pole just ahead of to-be-crowned champion Fernando Alonso. Even with the launch of new F-2005, Ferrari seemed to have lost the glory of those old golden days. The car looked good last time but didn't show anything that can compete with in form Renault, Toyota and Mclaren. Ferraris finished in the 6th and 7th rows (mostly) in the second qualifying. All satrted well with Kimi having a good start ahead of Alonso and maintaining the lead for a first few laps. I couldn't believe that everything was so normal and so not unlucky in Kimi's life again. But it was not to be, as the race leader started slowing down and let all the others pass by him. Mclaren said It was a Mechanical failure yet again. After that it was something that we are getting very much used to this season; Alonso leading the race comfortably. When it looked as if Alonso will again be the star of the race, Schumi had some other plans.

Everything seemed so perfect for Schumi suddenly. The car showed that Ferrari challenge is still not over. It had speed, good handling and Bridgestones also worked extremely well with it. Schumi was racing in the third position after half of the distance covered, thanks to some great pit-stops carefully planned by the team. His car looked better than the car in front, Jenson Button's BAR-Honda. Under continuous pressure from Schumi, Jenson made a slight mistake near one of the shikanes and Schumi immediately took the opportunity to move to the second spot. Everything looked dramatic and hard to believe but what followed was a few laps of even more dramatic, skillful, aggressive and determined racing. The last ten laps showed how a perfect race should be. Alonso and Schumi, two great drivers in good cars finally reached the Chequered flag within fraction of seconds of one another.

Schumacher again looked to have a better car of the two with a better speed at the straights and carrying more speed through the corners. He put Alonso under a lot of pressure and managed to get a glimpse of Alonso's nose one or two times when he almost overtook the young veteran. Alonso however, kept his cool and brilliantly controlled the pace of the race by making use of better handling of the Renault. He drove very slowly out of every corner so that Schumi could never come out of any corner with full throtle. The brilliant strategy not only kept him ahead of Schumi but also kept him behind two backmarkers, a few hundread metres away.

All in all, a great race. Really fun to watch. Only thing not good in the race was the absence of Montoya. Who knows he would have made the race even more interesting to watch. I hear that he is probably not racing in the next race also. I wish he makes a good come back as soon as possible.

Tuesday 22 March, 2005

Renewed Renault

Sundays Sepang GP was another 'Renault dominant Race' as Fernando Alonso made it to the Top of Podium. Ex-Renault driver Jarno Trulli was second driving impressively throughout hinting at the bright future for this year's TF105. Nick Hedfield ensured a BMW-Williams podium place in third position. Ferrari once again failed to impress with Schumacher in 7th position and Baricehllo out of the race.

Renault really seems strong at this moment of time in F1. Looking at the performances till date in the new season, we are forced to think that 'Days of Ferrari dominance are over'. At the same time I think these are the days of Renault dominance. I have little doubt in my mind about Alonso n Renault being on top this year. This car seems to have a very powerful engine as compared to earlier Renault cars with as always great aerodynamics giving it an edge in handling over the other cars( At least this is what I hear from other people and I haven't driven the new car, Hehe).

However, there was one disappointing thing for me so far as this new season is concerned and that is "New Montoya" that we see on the track. No aggression, no bolt overtaking, no amitious rash starts, no heated word-exchanges. This is not the Montoya we've been used to looking at. This is a very sad thing if Montoya has changed his attitude towards driving. He said to a press conference that he has absolutely no problem with him being second driver in the team and that even he thinks that Kimi is a better driver. If Montoya really thinks that way, I think this is the end of a great driver which F1 once had. Perhaps, he is waiting and watching at the start of the new season, getting used to the new rules and his new team( I hope so..). I think even in 2005, he has had better results compared to Kimi and he is as good as any other driver (i am talking about the front-runners) in F1.

Talking of Kimi, he drove a good race and in the process I think he tried a bit too hard ending in a tyre failure. The new Mclaren is not as impressive as it should have been after 'very poor performance not suitable to Mclaren reputation last year'.

All in all a good demanding race. Not a bad result for Montoya. Excellent performance by Alonso and Renault.

Monday 7 March, 2005

Picture Perfect!!!

Everything seemed perfect this weekend. Everything seemed promising. There was no ferrari 1-2, there was no schumi dominance, there was an Indain on the track for the first time, Fisichella won a race (on his merit this time). Just as good a start as one could hope for, for the season. With the introduction of new rules in F1 this season the things aren't easy and not easy to anticipate either. TO summerize the major rules changes:

ENGINES
Engines must now last for two races, rather than just one, with any unscheduled change resulting in a 10-place penalty on the starting grid. That will put a premium on reliability. "Every second grand prix is going to be tough, particularly Malaysia
where we'll all be stepping into the unknown," says Williams'
Australian driver Mark Webber. The change is aimed at cutting costs and improving safety through reduced speeds. A two-race engine should be less powerful than one
designed for half the distance.

QUALIFYING
Qualifying will be held over two days, with the final session on Sunday morning. The Sunday and Saturday times will be aggregated. This will mean more action for the crowd at the circuit on Sunday but the starting grid and pole position will not be decided until shortly before the race.

AERODYNAMICS
Front wings have been lifted by 50mm, to reduce downforce, while the rear wings have been brought forward 150mm relative to the centre line between the rear wheels. The diffuser at the rear becomes shallower, at around 40 percent the height of 2004 levels. The changes, intended to cut downforce by about 25 percent to slow
cars on safety grounds, should make cars 'twitchier' to drive and more
spectacular to watch with less grip. "The focus in the factory has been to recover that downforce and obviously it won't be until the early races of the season that we'll see how well each team has done," said Williams' co-owner Patrick
Head. Testing has seen teams experiment with innovative aerodynamic parts,
notably McLaren with a horn-like wing on the engine cover.

TYRES
Tyres must last for qualifying and the race. The reason being that harder, and therefore more durable, tyres will reduce cornering speeds. This means that pit stops will look very different, with fewer mechanics involved as cars take on fuel without tyre changes, and will be less frequent. Tyres can be replaced in the event of a puncture or damage caused by debris, but not at a refuelling stop. Drivers would previously have changed tyres two or three times during a race, after around 70 to 100 km, in carefully orchestrated pitstops. They must now last around 350km.
All drivers will be allowed three sets of the same specification tyres for Saturday and Sunday. One will be used for Saturday practice, another for qualifying and the race while the third set is held back in case of a puncture. "The driver who can look after his tyres best, and has the feel for how to maximise tyre performance over a full race distance, will undoubtedly gain a performance advantage," says Renault's engineering head Pat Symonds. "I think we will see a change in the rhythm of races this year."

Now about the race, Indian rookie Narain Karthikeyan managed to do a decent job by completing the race in 15th position ahead of his team-mate and the running Minardi. He seemed pretty reluctant at the start though and Montiero looked better of the two in the initial stages.

About the front runners, Fisichella drove a perfect race without any mistake and really seems a contender of the driver's championship. However, personally I feel Alonso will end up higher than his team-mate and may even finish at the top of the leader-board.

Barichello managed to gain a few well earned positions through excellent ferrari strategy and so did Alonso. The driver who lost out on a podium position however, was DC who drove well only to end up 4th behind Alonso.

Surprisingly, Montoya did not make any move on anybody throuout the race. I wonder if the original, rash, daring Montoya is replaced by a more diplomatic, calm Montoya. I wonder what is it that these ESPNSTAR people have with Montoya. Heard one of the commentators saying that Montoya finally accepted that he is not the best F1 driver in a press conference and that he stands no chance even to beat his partner Kimi. I think if Montoya really thinks that way, he should have no place in F1 and as always if he has been pressurized to think and most importantly express himself that way, then everything is alright with F1 this year.

Sepang is next in the queue which demands maximus out of the car's engine. It could be one of the reasons why Montoya and some of the other guys did not push too hard may be.

Finally, Schumi as always managed to make another intelligent move. When he collided with Williams of Heidfield, he retired rather than continuing the race so that he may now use a new engine for the next race.

Hope that next race will also be as fun as this one.

Friday 25 February, 2005

Pirates of The Silicon Valley

Yesterday I saw this good movie named "The Pirates of the Silicon Valley". Excellent movie, I must say, for Computer Enthusiasts. The movie is centred around the life of 'Steve Jobs', founder of Apple, a very intelligent, energetic young man who dreamt of changing the world of Desktop Computing and succeeded to a great extent. I am not sure if all the incidents shown in the movie are true or not but it throws some light on the Microsoft Vs. Apple battle. 'Steve Jobs' always believed that his people at Apple were all great artists and was realy in a position to give ibm people a run for their money before a genius called 'Bill Gates' cheated and stole the show. 'Steve' always said, "Good artists copy but great artists steal". Bill and Steve were both not very rich n famous when the Xerox Company had developed world's first so called GUI with mouse. Though Xerox did not see any future for the technology, both these guys were very much overwhelmed by it. Steve Jobs at Apple developed worlds first successful and commercially deployable GUI n mouse in Macintosh but Bill Gates at Microsoft who was supposed to be working for Apple stole their technology and used it for himself instead. A pirate stealing pirated stuff from other pirate. When a slightly overconfident 'Steve' came to know about this, he told to himself and 'Bill' that he still had the best package and even though 'Bill' had stolen the things from Apple, Macintosh still had better things to offer. The Great Bill Gates then said, "You don't understand this Steve, it dosn't realy matter now." Great lines from great man that changed the world's history. Who knows otherwise, I would be using an Apple i-Mac instead of Windows today for writing my blog. A great movie.....Really!!!

Friday 7 January, 2005

A bit too late I guess...

I found this very good article on the net forwarded to me by a senior. A bit too late for me may be coz I have almost completed my graduation now. Nevertheless, I think fortunately or coincidently I have done a few things as per Joel's advice during my graduation. A lot many are still a problem which I can't change now. Huh!!!

Advice for Computer Science College Students
Joel Spolsky
Sunday, January 02, 2005
A part of Joel on Software, http://www.joelonsoftware.com
--------------------------------------------------------------------------------
Despite the fact that it was only a year or two ago that I was blubbering about how rich Windows GUI clients were the wave of the future, college students nonetheless do occasionally email me asking for career advice, and since it's recruiting season, I thought I'd write up my standard advice which they can read, laugh at, and ignore.

Most college students, fortunately, are brash enough never to bother asking their elders for advice, which, in the field of computer science, is a good thing, because their elders are apt to say goofy, antediluvian things like "the demand for keypunch operators will exceed 100,000,000 by the year 2010" and "lisp careers are really very hot right now."

I, too, have no idea what I'm talking about when I give advice to college students. I'm so hopelessly out of date that I can't really figure out AIM and still use (horrors!) this quaint old thing called "email" which was popular in the days when music came on flat round plates called "CDs."

So you'd be better off ignoring what I'm saying here and instead building some kind of online software thing that lets other students find people to go out on dates with.

Nevertheless.

If you enjoy programming computers, count your blessings: you are in a very fortunate minority of people who can make a great living doing work they enjoy. Most people aren't so lucky. The very idea that you can "love your job" is a modern concept. Work is supposed to be something unpleasant you do to get money to do the things you actually like doing, when you're 65 and can finally retire, if you can afford it, and if you're not too old and infirm to do those things, and if those things don't require reliable knees, good eyes, and the ability to walk twenty feet without being out of breath, etc.

What was I talking about? Oh yeah. Advice.

Without further ado, then, here are Joel's Seven Pieces of Free Advice for Computer Science College Students (worth what you paid for them):

Learn how to write before graduating.
Learn C before graduating.
Learn microeconomics before graduating.
Don't blow off non-CS classes just because they're boring.
Take programming-intensive courses.
Stop worrying about all the jobs going to India.
No matter what you do, get a good summer internship.
Now for the explanations, unless you're gullible enough to do all that stuff just because I tell you to, in which case add: 8. Seek professional help for that self-esteem thing.

Learn how to write before graduating.
Would Linux have succeeded if Linus Torvalds hadn't evangelized it? As brilliant a hacker as he is, it was Linus's ability to convey his ideas in written English via email and mailing lists that made Linux attract a worldwide brigade of volunteers.

Have you heard of the latest fad, Extreme Programming? Well, without getting into what I think about XP, the reason you've heard of it is because it is being promoted by people who are very gifted writers and speakers.

Even on the small scale, when you look at any programming organization, the programmers with the most power and influence are the ones who can write and speak in English clearly, convincingly, and comfortably. Also it helps to be tall, but you can't do anything about that.

The difference between a tolerable programmer and a great programmer is not how many programming languages they know, and it's not whether they prefer Python or Java. It's whether they can communicate their ideas. By persuading other people, they get leverage. By writing clear comments and technical specs, they let other programmers understand their code, which means other programmers can use and work with their code instead of rewriting it. Absent this, their code is worthless. By writing clear technical documentation for end users, they allow people to figure out what their code is supposed to do, which is the only way those users can see the value in their code. There's a lot of wonderful, useful code buried on sourceforge somewhere that nobody uses because it was created by programmers who don't write very well (or don't write at all), and so nobody knows what they've done and their brilliant code languishes.

I won't hire a programmer unless they can write, and write well, in English. If you can write, wherever you get hired, you'll soon find that you're getting asked to write the specifications and that means you're already leveraging your influence and getting noticed by management.

Most colleges designate certain classes as "writing intensive," meaning, you have a to write an awful lot to pass them. Look for those classes and take them! Seek out classes in any field that have weekly or daily written assignments.

Start a journal or weblog. The more you write, the easier it will be, and the easier it is to write, the more you'll write, in a virtuous circle.

Learn C before graduating
Part two: C. Notice I didn't say C++. Although C is becoming increasingly rare, it is still the lingua franca of working programmers. It is the language they use to communicate with one another, and, more importantly, it is much closer to the machine than "modern" languages that you'll be taught in college like ML, Java, Python, whatever trendy junk they teach these days. You need to spend at least a semester getting close to the machine or you'll never be able to create efficient code in higher level languages. You'll never be able to work on compilers and operating systems, which are some of the best programming jobs around. You'll never be trusted to create architectures for large scale projects. I don't care how much you know about continuations and closures and exception handling: if you can't explain why while (*s++ = *t++); copies a string, or if that isn't the most natural thing in the world to you, well, you're programming based on superstition, as far as I'm concerned: a medical doctor who doesn't know basic anatomy, passing out prescriptions based on what the pharma sales babe said would work.

Learn microeconomics before graduating
Super quick review if you haven't taken any economics courses: econ is one of those fields that starts off with a bang, with many useful theories and facts that make sense, can be proven in the field, etc., and then it's all downhill from there. The useful bang at the beginning is microeconomics, which is the foundation for literally every theory in business that matters. After that things start to deteriorate: you get into Macroeconomics (feel free to skip this if you want) with its interesting theories about things like the relationship of interest rates to unemployment which, er, seem to be disproven more often than they are proven, and after that it just gets worse and worse and a lot of econ majors switch out to Physics, which gets them better Wall Street jobs, anyway. But make sure you take Microeconomics, because you have to know about supply and demand, you have to know about competitive advantage, and you have to understand NPVs and discounting and marginal utility before you'll have any idea why business works the way it does.

Why should CS majors learn econ? Because a programmer who understands the fundamentals of business is going to be a more valuable programmer, to a business, than a programmer who doesn't. That's all there is to it. I can't tell you how many times I've been frustrated by programmers with crazy ideas that make sense in code but don't make sense in capitalism. If you understand this stuff, you're a more valuable programmer, and you'll get rewarded for it, for reasons which you'll also learn in micro.

Don't blow off non-CS classes just because they're boring. Blowing off your non-CS courses is a great way to get a lower GPA.

Never underestimate how big a deal your GPA is. Lots and lots of recruiters and hiring managers, myself included, go straight to the GPA when they scan a resume, and we're not going to apologize for it. Why? Because the GPA, more than any other one number, reflects the sum of what dozens of professors over a long period of time in many different situations think about your work. SAT scores? Ha! That's one test over a few hours. The GPA reflects hundreds of papers and midterms and classroom participations over four years. Yeah, it's got its problems. There has been grade inflation over the years. Nothing about your GPA says whether you got that GPA taking easy classes in home economics at Podunk Community College or taking graduate level Quantum Mechanics at Caltech. Eventually, after I screen out all the 2.5 GPAs from Podunk Community, I'm going to ask for transcripts and recommendations. And then I'm going to look for consistently high grades, not just high grades in computer science.

Why should I, as an employer looking for software developers, care about what grade you got in European History? After all, history is boring. Oh, so, you're saying I should hire you because you don't work very hard when the work is boring? Well, there's boring stuff in programming, too. Every job has its boring moments. And I don't want to hire people that only want to do the fun stuff.

I took this course in college called Cultural Anthropology because I figured, what the heck, I need to learn something about anthropology, and this looked like an interesting survey course.

Interesting? Not even close! I had to read these incredibly monotonous books about Indians in the Brazilian rain forest and Trobriand Islanders, who, with all due respect, are not very interesting to me. At some point, the class was so incredibly wearisome that I longed for something more exciting, like watching grass grow. I had completely lost interest in the subject matter. Completely, and thoroughly. My eyes teared I was so tired of the endless discussions of piling up yams. I don't know why the Trobriand Islanders spend so much time piling up yams, I can't remember any more, it's incredibly boring, but It Was Going To Be On The Midterm, so I plowed through it. I eventually decided that Cultural Anthropology was going to be my Boredom Gauntlet: my personal obstacle course of tedium. If I could get an A in a class where the tests required me to learn all about potlatch blankets, I could handle anything, no matter how boring. The next time I accidentally get stuck in Lincoln Center sitting through all 18 hours of Wagner’s Ring Cycle, I could thank my studies of the Kwakiutl for making it seem pleasant by comparison.

I got an A. And if I could do it, you can do it.

Take programming-intensive courses.
I remember the exact moment I vowed never to go to graduate school.

It was in a course on Dynamic Logic, taught by the dynamic Lenore Zuck at Yale, one of the brightest of an array of very bright CS faculty.

Now, my murky recollections are not going to do proper credit to this field, but let me muddle through anyway. The idea of Formal Logic is that you prove things are true because other things are true. For example thanks to Formal Logic, "Everyone who gets good grades will get hired" plus "Johnny got good grades" allows you to discover the new true fact, "Johnny will get hired." It's all very quaint and it only takes ten seconds for a deconstructionist to totally tear apart everything useful in Formal Logic so you're left with something fun, but useless.

Now, dynamic logic is the same thing, with the addition of time. For example, "after you turn the light on, you can see your shoes" plus "The light went on in the past" implies "you can see your shoes."

Dynamic Logic is appealing to brilliant theoreticians like Professor Zuck because it holds up the hope that you might be able to formally prove things about computer programs, which could be very useful, if, for example, you could formally prove that the Mars Rover's flash card wouldn't overflow and cause itself to be rebooted again and again all day long when it's supposed to be driving around the red planet looking for Marvin the Martian.

So in the first day of that class, Dr. Zuck filled up two entire whiteboards and quite a lot of the wall next to the whiteboards proving that if you have a light switch, and the light was off, and you flip the switch, the light will then be on.

The proof was insanely complicated, and very error-prone. It was harder to prove that the proof was correct than to convince yourself of the fact that switching a light switch turns on the light. Indeed the multiple whiteboards of proof included many skipped steps, skipped because they were too tedious to go into formally. Many steps were reached using the long-cherished method of Proof by Induction, others by Proof by Reductio ad Absurdum, and still others using Proof by Graduate Student.

For our homework, we had to prove the converse: if the light was off, and it's on now, prove that you flipped it.

I tried, I really did.

I spent hours in the library trying.

After a couple of hours I found a mistake in Dr. Zuck's original proof which I was trying to emulate. Probably I copied it down wrong, but it made me realize something: if it takes three hours of filling up blackboards to prove something trivial, allowing hundreds of opportunities for mistakes to slip in, this mechanism would never be able to prove things that are interesting.

Not that that matters to dynamic logicians: they're not in it for useful, they're in it for tenure.

I dropped the class and vowed never to go to graduate school in Computer Science.

The moral of the story is that computer science is not the same as software development. If you're really really lucky, your school might have a decent software development curriculum, although, they might not, because elite schools think that teaching practical skills is better left to the technical-vocational institutes and the prison rehabilitation programs. You can learn mere programming anywhere. We are Yale University, and we Mold Future World Leaders. You think your $160,000 tuition entititles you to learn about while loops? What do you think this is, some fly-by-night Java seminar at the Airport Marriott? Pshaw.

The trouble is, we don't really have professional schools in software development, so if you want to be a programmer, you probably majored in Computer Science. Which is a fine subject to major in, but it's a different subject than software development.

If you're lucky, though, you can find lots of programming-intensive courses in the CS department, just like you can find lots of courses in the History department where you'll write enough to learn how to write. And those are the best classes to take. If you love programming, don't feel bad if you don't understand the point of those courses in lambda calculus or linear algebra where you never touch a computer. Look for the 400-level courses with Practicum in the name. This is an attempt to hide a useful (shudder) course from the Liberal Artsy Fartsy Administration by dolling it up with a Latin name.

Stop worrying about all the jobs going to India.
Well, OK, first of all, if you're already in India, you never really had to worry about this, so don't even start worrying about all the jobs going to India. They're wonderful jobs, enjoy them in good health.

But I keep hearing that enrollment in CS departments is dropping perilously, and one reason I hear for it is "students are afraid to go into a field where all the jobs are going to India." That's so wrong for so many reasons. First, trying to choose a career based on a current business fad is foolish. Second, programming is incredibly good training for all kinds of fabulously interesting jobs, such as business process engineering, even if every single programming job does go to India and China. Third, and trust me on this, there's still an incredible shortage of the really good programmers, here and in India. Yes, there are a bunch of out of work IT people making a lot of noise about how long they've been out of work, but you know what? At the risk of pissing them off, really good programmers do have jobs. Fourth, you got any better ideas? What are you going to do, major in History? Then you'll have no choice but to go to law school. And there's one thing I do know: 99% of working lawyers hate their jobs, hate every waking minute of it, and they're working 90 hour weeks, too. Like I said: if you love to program computers, count your blessings: you are in a very fortunate minority of people who can make a great living doing work they love.

Anyway, I don't think students really think about this. The drop in CS enrollment is merely a resumption of historically normal levels after a big bubble in enrollment caused by dotcom mania. That bubble consisted of people who didn't really like programming but thought the sexy high paid jobs and the chances to IPO at age 24 were to be found in the CS department. Those people, thankfully, are long gone.

No matter what you do, get a good summer internship.
Smart recruiters know that the people who love programming wrote a database for their dentist in 8th grade, and taught at computer camp for three summers before college, and built the content management system for the campus newspaper, and had summer internships at software companies. That's what they're looking for on your resume.

If you enjoy programming, the biggest mistake you can make is to take any kind of job--summer, part time, or otherwise--that is not a programming job. I know, every other 19-year-old wants to work in the mall folding shirts, but you have a skill that is incredibly valuable even when you're 19, and it's foolish to waste it folding shirts. By the time you graduate, you really should have a resume that lists a whole bunch of programming jobs. The A&F graduates are going to be working at Enterprise Rent-a-Car "helping people with their rental needs." (Except for Tom Welling. He plays Superman on TV.)

To make your life really easy, and to underscore just how completely self-serving this whole essay is, my company, Fog Creek Software, has summer internships in software development that look great on resumes. "You will most likely learn more about software coding, development, and business with Fog Creek Software than any other internship out there," says Ben, one of the interns from last summer, and not entirely because I sent a goon out to his dorm room to get him to say that. The application deadline is February 1st. Get on it.


If you follow my advice, you, too, may end up selling stock in Microsoft way too soon, turning down jobs at Google because you want your own office with a door, and other stupid life decisions, but they won't be my fault. I told you not to listen to me.