free html hit counter
Posted on: Friday, December 15, 2006 by Rajiv Popat

Are you 'On the Bench'?

Shhh, don’t say those words! They’re like dark-dark-black-phase of a programmer’s life when his ego and self-respect have already fallen down to an all time low. Don’t make it worse for him. If you're in India, at around this time of the year, you can see so many young software engineers literally playing the change-your-job-musical-chair as they jump from one firm to another. Ask anyone of these young, talented engineers why they are looking for a change and chances are, the answer will be pretty similar this one I heard during a recent interview I was taking:

"I haven’t been assigned to any project for the past three months! Which is why I started thinking about moving on to a different company… you see, I want to work with the latest cutting edge technology and face bigger and better challenges, but in my current organization, I have been on the bench for the last three months!"

“And, what’s wrong with being on the bench?” – If you’re like me you will be tempted to ask, but don’t. Shhh, don’t say those words! They’re like dark-dark-black-phase of a programmer’s life when his ego and self-respect have already fallen down to an all time low. Don’t make it worse for him - You’ll insult an already insulted developer. You’ll hurt an already hurt engineer. Don’t you get it? The guy is on the bench! And he has nothing to learn or do because he’s not working in a project.

But wait, isn’t that just… stupid?

Ok, go ahead, say those words, and ask that question. This isn’t an interview where I can hurt someone’s feeling. This is my blog where I can speak my mind! So go ahead, ask that question – “What’s wrong with being on the bench?” – Seriously. I don’t know about everyone else, but I don’t get it. Honest.

I’ve heard the words “on the bench” being mentioned as if they are evil. When they're on the bench, I've seen a lot of developers translate that into some pretty conventional (and in my personal opinion: stupid) interpretations. Based on my conversations with a few programmers who are looking for a change because they are on the bench – being on the bench is equal or synonymous to a few things. The list of these interpretations is long, but some of these, I've heard are:

  1. You’re on the bench = you don’t have enough opportunity to learn new technologies, so you should move on.
  2. You’re on the bench = your company isn’t doing well and is going to shut down, so you should move on. 
  3. And last, but not the least, you’re on the bench = you’re not important and there’s nothing you have to offer to the company, so you should move on.

Long story short being a lot of Developers feel that being “On the Bench” means you’re literally “on-the-bench”. In other words, being on the bench is like:

(Only, not just as cute :))

In a recent conversation / discussion / friendly debate with a person who works in the HR department of a software development firm, I was told:

"You’re thinking from your perspective which is very different, maybe slightly more mature than a typical junior developer. You might be able to work on your own project, work on your company's intranet website, write your own blog, articles, conduct trainings and think of a thousand other things to do, but a normal developer comes to office to work on projects and code for clients. If he doesn’t get that opportunity he is going to leave and find a place where he gets exposed to a real life project."

Yet another person who heads the accounting department and participates in HR related decisions, of a solution provider explains in another healthy discussion:

"Yes, I understand when you talk about self development, personal initiative, training, blogging, articles, starting personal frameworks and everything else. It sounds nice and good for 1 month. 2 months, maybe - but tell developers to keep doing that for more than that and you’re sure to see their resumes floating around in other companies."

After all these conversations and discussions with people from different companies, different departments and different roles I still don’t get it. If you do, please explain it to me like I’m a six year old, will you? Maybe I am just dumb. If you’re on the bench, isn’t that a golden opportunity?

A chance to write what you always wanted to write, an opportunity to work on what you always wanted to work on, an opportunity to read, learn, teach, discuss, have fun and offer help to departments within your own organization and the community in general (if nothing else, answer a few questions in a technical forum)? Just so, that I don’t digress, let me think and write about each point:

> You’re on the bench = you don’t have enough opportunity to learn new technologies and it’s bad for your career.

So all projects that all developers work on use the latest cutting edge technology, right? Wrong! There are Non-IT companies out there who still haven’t got over Visual Basic 6.0 and many more that are still a little reluctant to move from .NET 1.1 to 2.0.

"We already have MySQL so it would be nice if we can just use that for the project instead of moving to SQL Server 2005. We already have .NET 1.1 and will not be upgrading to 2.0 until next year. We don’t want to use WPF since it’s still in Beta and RC stages."

Any of that sounds familiar? I’m not saying there’s anything wrong with these statements. It’s a part of the job to provide the best solutions to clients using the tools that are available at hand and keeping the project cost minimum. But being on the bench for a couple of months gives us an added opportunity to go wild, pick our favorite tools and develop what-ever-it-is that we want to develop!

It gives us an opportunity do more-than-just-code. It gives us time to read articles, read blogs, write articles, blog a little more actively, learn things we always wanted to learn and strike out items on both – our Professional and Personal TODO lists of life.

Given the choice, I’m curious what a developer (just for the sake of discussion, let's assume he's a DotNet developer) who makes a lot of noise about being on the bench, would prefer - working in a Visual Basic 6.0 project and billing a client or being on the bench and have fun working on .NET 3.0 pieces? Personally, I would prefer the later; but I haven’t had the pleasure of enjoying some On-the-bench time for the past few years – so, I have no right to pass judgements and we're using .NET 3.0 pieces in the project I'm involved with so I can't even complain! :)

> You’re on the bench = your company isn’t doing well and is going to shut down.

In one of my first jobs, I worked in a company that shut down a few months after I switched jobs. When a firm is about to shut down, it’s usually pretty easy to make out. The stock prices, the ambience, the announcements, the changes in policies, cuts in budgets and everything else that happens in a company about to shut down is very different than things that happen in the normal course of business. Based on what I know, It usually begins to suck and as an employee you can feel it, even if there are no formal announcements! Organizations with huge numbers of employees don't just shutdown one-fine-morning! Unless of-course, you can feel it that your company is about to close operations and pack up, isn't connecting your being on the bench with your company shutting down, being way too paranoid and a little dumb?

> You’re on the bench = you’re not important and there’s nothing you have to offer to the company so you should move on.

Personally, I find the most frustrating. Every client office I’ve visited, every firm I’ve worked at, (I haven’t worked at many - I’m not very good at the change-your-job-musical-chair game :)) there are always things to automate and problems that technology can solve. Walk up to people in different departments. Talk. Offer help. Some of the Excel COM EXEs in .NET, I’ve written for the finance department of our firm, in my free time and weekends have been the most logically challenging and rewarding pieces of code I've written. I continue to support them in my free time, because it’s a rewarding experience. If nothing else, go ahead and participate in an open source project. It’s a Win-Win situation because it helps others and gives you challenging problems you can solve!

Write re-usable components, frameworks, user-controls, web services or anything and post them on the company intranet, or maybe publish them out to the whole wide world. Lookup the Bug Tracking system of an on-going project in your organization and offer them SVN patches, conduct trainings, clear certifications, train others, blog, conduct presentations, participate in forums… seriously, how can you run out of things to do, just because you're not officially assigned to a project?

Coming back to where I started, what is wrong with being on the bench and not working on a real project for a few months? While I ask what’s wrong in not writing code for a client, for couple of months, Jeff Atwood goes one step further and questions: Does writing Code Matter? He advices:

"Try to spend some time talking to people instead of the compiler… Of course, this isn't a zero-sum game. You can have it both ways. Ideally, you'd write code, and then write or talk about the code in a way that inspires and illuminates other people. But we don't have an infinite amount of time, either."

Being On-The-Bench for a couple of months, gives us some time to do just that – it lets us stop talking to a compiler and do whatever it is that we want to do. Including perusing ideas and initiatives we always wanted to pursue. 

If you are someone who looks for a change everytime you're on bench for a couple of months - The next time you’re on the bench,  may I suggest not playing the change-your-job-like-you're-playing-musical-chair game.

Instead, why not strike out a few items from your Professional and Personal TODO lists of life and get them done, so that you can be a better professional and a better person? You do have Professional and Personal TODO lists for life, right? If not, now is a good time to start making them. :)

posted on Friday, December 15, 2006 10:53:12 AM UTC by Rajiv Popat  #    Comments [2]
Posted on: Saturday, December 2, 2006 by Rajiv Popat

Hello Atlas Article at Code Project

I Posted this Hello World Article on Atlas (of-course, now called "Microsoft ASP.NET Ajax") on Code Project a few months ago. Recently, I've been receiving multiple emails / comments telling me that the article was helpful but I should think about updating it since Atlas is undergoing a lot of changes (including the name:)).

I've spent some time during this weekend to update the article based on the Beta 2 of Atlas (Microsoft ASP.NET Ajax 1.0) and resubmitted it to CodeProject for updation. The article has been updated and is available at CodeProject.

However, if are looking for one single zip which allows you do download the latest copy of article, and source code, you can get it here. This post will be updated when further changes are made to the article.

Thanks to everyone who read the article and commented on it.

posted on Saturday, December 2, 2006 12:33:08 PM UTC by Rajiv Popat  #    Comments [0]
Posted on: Wednesday, November 29, 2006 by Rajiv Popat

Enabling ASP.NET 2.0 Debugging on Visual Studio 2005, IIS 7.0 and Vista

For the past couple of years my desktop ran on a Windows 2003 Server which was tweaked to make windows look like a Mac. I loved my desktop, but I also loved everything that had been going on the Windows Vista side and had been trying things out on VMWare instances and other non-work machines since the Beta 1 days. I had always stated that I would move to Vista as soon as Microsoft comes out with a Released version. Just wasn't adventurous enough to run a Beta version of an Operating System on my primary work machine. Yesterday, I finally made the move to Vista.

As a developer / geek, there were a few minor hiccups in 'getting up and working' and I'll probably post about all of those and their workarounds in other posts but this post is focused on getting Visual Studio 2005 to run with F5 / Play based Debugging on ASP.NET 2.0 Web-sites. I thought I would post about and document this, since this was the most tricky part and 'almost' kept me awake all night, trying to figure out what the heck was going on.

The Vista Install itself was a Smooth install. Minor hiccups here and there. Surprisingly, there were no drivers issues (things have come a long way since the Beta 1 days, when I had a bad time with the drivers). I didn't have to install a single driver manually. It detected everything on my Dell 700m and pretty much installed it, automatically. Sweet! Most hiccups were compatibility issues with 3rd Party tools, which is expected anyway, because of the enhanced security. Workarounds and alternate tools that work in Vista were pretty easy to find. Yes, there were some very minor issues with the default display drivers - which work fine with extended monitors but somehow, will not let me run on a external projector. I think I can live with that till Dell comes out with their own drivers. [This was resolved. If you googled to this page, in search of Intel-Adaptor-on-Dell Display Driver issues for Vista, see update at the end of the post.]

The real "Opps!" moment however, came when I was done with installing IIS 7.0 and started installing Visual Studio 2005. This is when I was warned that Visual Studio 2005 has known compatibility issues with Vista. I ignored the warning and the installation continued smoothly. Finally I decided to test my installation by making a simple ASP.NET 2.0 Hello-World website. Apparently, Studio would not let me open a website from the Local IIS.

The Warning Said: "You must be a member of the Administrator group on the local computer to access the IIS..."; This however, is a known issues and has to do with the Vista's On-Demand Administrator (i.e. UAC) feature. Installation of additional IIS components, A right click on Studio's Shortcut, followed by a "Run As Administrator" fixes this issue. There's a detailed post on this both as Scott Guthrie's Blog and MSDN. Both of these are pretty helpful and elaborate; So I won't repeat that information here.

After I did everything mentioned in the MSDN / Scott's Post, I could now open web sites from the local IIS. But wait, that was not the complete Fix. Once those steps were applied there were issues with Visual Studio which wanted me to have Integrated Windows Authentication in the Virtual Directory. Now this is something that is not installed by default with IIS 7.0. Which means that I had to explicitly go to "Turn Windows features on or off" and install Integrated Authentication for IIS. (I went ahead and installed all three since I am used-to and use all three - Integrated, Digest and Basic, in different projects. With this done I configured the virtual directory to use Integrated Windows Authentication using IIS Manager.)

So, was that it? Not Really. I still wasn't able to Debug my website. This time Visual Studio showed a security Dialog Box telling me that wasn't able to start debugging on the web server:

The workaround for this is to configure the site / virtual directory (depending on what you're trying to debug from Visual Studio) to run under the "Classic .NET Pool". To Do this just right-click the site on the new IIS Management console and click "Advanced Settings". In the Property Pane that opens up, change the Application Pool Setting to "Classic .NET AppPool" instead of "DefaultAppPool". 

With this done I opened my sample site in Visual Studio.NET 2005 and clicked the Play button (F5 key) and the Debugging worked, just like it should!

Yet another tricky Gotcha here is that changing the Application Pool for the website to Classic .NET pool doesn't seem to change the pool for all virtual directories under it. In other words, if you moved your entire site to DefaultAppPool but are trying to debug a specific virtual directory, you still need to go ahead and manually change the Advanced settings of that Virtual Directory to run Classic .NET AppPool, to enable debugging on it.

There were some 'really convincing' posts out there, that I came across, in a couple of Forums (I can't seem to find the link to those) where people suggested that F5 / Play and Debug is something you cannot do in Vista. I guess, that information is either old (from early beta builds) or just inaccurate. I would have liked to post a reply there and clear this up, but I can't seem to find the link again after reaching the right answer. So, I'm going to post this article here and hopefully Google will index it and help others who're trying to get this to work. 

Update [12/29/2006]: If you are looking for more details and other approaches, Mike has recently provided detailed step-by-step instructions on various approaches you can take and has described several tradeoffs associated with each approach. His detailed post is available here.

Update [02/07/2007]: Even though this post is not directly related to Dell 700m Intel Display Cards and Vista drivers for these cards a lot of people seem to be googling their way to this page in search of similar answers. This update might help. If you are running Intel(R) 82852/82855 Graphic Adaptor on Your Dell 700m and are having problems switching to clone mode with Dual Monitors or running on a Projector by pressing Fn-F8 key, start your Add New Hardware Wizard on Vista, select the manual driver installation process, choose Display Adaptor in the type of device and from the list of drivers Vita offers, choose Intel as Manufacturer, and "Intel(R) 82852 / 82855 GM/GME Graphics Controller (Microsoft Corporation - XDDM)" as your driver, even if Vista had detected your driver successfully during installation. Complete the Wizard and Reboot. Once the reboot is complete, you should be able to see two display adaptors with the same name installed in your Device Manager. Now disable Extended Desktop and should be able to switch to a projector or clone your desktop on your second monitor using the Fn-F8 key.

posted on Wednesday, November 29, 2006 10:52:23 AM UTC by Rajiv Popat  #    Comments [0]
Posted on: Tuesday, November 21, 2006 by Rajiv Popat

Skin PowerShell (Monad) to Customize it's Look and Feel

If you feel that typing "Start / Run / Notepad.exe" is faster than clicking on the Notepad icon or if you spend more than 15 minutes on the Command Prompt everyday you probably know a lot about Monad / Powershell by now. I fell in love with this one the day I saw it in it's Pre-Release versions. Of course I didn't see the light instantly, but it grew on me - slowly - over time.

I won't waste a lot of your time posting about the things that can make you fall in love with this tool - for example - the fact that it returns objects instead of strings, or the fact that it could change the world (No kidding!), or the fact that you can access .Net DLLs from within PowerShell. I won't even state the fact (ok, personal opinion :)) for example, that it's way cooler than any Linux console I've ever worked with.

I could write tons of posts on PowerShell because I've been hooked on to it, but then in all probabilities, if you're here (and are still reading this), you're hooked on to it too and you probably know all that stuff already. And if you aren't hooked and you're just the curious type, go ahead, click some of those links I mentioned above and read a little. The learning curve will be a little steep at first but I guarantee that you'll "see the light" soon. Honest!

I can go on and on about Powershell basics, for a very long time. But then, I've been busy, and now I realize that I'm a little late on posting about that. People everywhere have been doing an awesome job at writing about PowerShell and most of the basic stuff anyone wanted to find out about, is already out there.

People have been building Utility Scripts, Powershell Analyzers and some are even developing Sharepoint Providers for PowerShell (neat idea!). But being the stupid guy that I am, for the past couple of months that I've been playing around with PowerShell, there's just one thing that has been pinching me:

"Okay, All this is cool and I get-it, but on a slightly different note, How do I Skin this thing and make it look nice so that I can show-it-off to everyone else while I am working inside a Powerhsell window?"

And then there were others who were asking similar questions. On the Powershell team blog there are remarks like:

"Absolutely no improvement over the ugly looking command window. With the name change if someone in your group maybe can push for tabbed Power shell?"

And the reply is pretty much a shout to the 3rd Parties to build-this-thing that lets you Skin PowerShell:

"We share your pain. We Really do. This just fell into the 'to ship is to choose' category. We designed it so that 3rd parties could do this. (3rd parties - do you see how many people would be interested in a great PowerShell Host?)!"

That's how most of us are - aren't we? We just want to see the Dancing Banana in our Development IDEs! What the IDE or the Product does is just so irrelevant! If it can't show the dancing banana we just aren't happy! :)

And I've been looking for this thing, because this-thing-that-lets-me-customize-PowerShell-Look-and-Feel is something that "has to be developed" by someone! I mean, come on! People have written IDEs for this thing! Somebody must have written something that let's me skin Powershell!

Since Google started crawling this site I'm seeing a jump in visitor counts from around the world which is kind-of interesting and fun. So, If you've landed on this page from Google just because you were looking for a similar answer you're in luck! Yes, it's possible to skin PowerShell and make it look like the way you want it to look like.

Turns out, there is, in-fact an Uber-cool free and open source application that let's you do just that. It's called Console and even though I've used console before, for quite some time, I didn't quite figure out that Console is NOT just a Command Prompt replacement. Console works with Virtually anything - CMD.EXE, Cygwin and a host of other Shells. So basically, there's no reason what-so-ever why it shouldn't work with Monad / Powershell.

Since I like the Mac look so much - Let's make Powershell have some background-transparency so that we can see my Mac'ish wall-paper behind it. Long story short, Let's make Powershell look something like this:

The steps are pretty simple and straight-forward:

  1. Get Console.exe (Don't get the 2.0 "Demo" version because that's WIP and doesn't do much. Get the stable release instead.)
  2. Go to Control Panel / System / Advanced Tab / Environment Variables and create a new variable called "COMSPEC". Set it's Value to "Powershell.exe"  (Assuming you have PowerShell installed already. You can also do this from Console Configuration Files, but this is the easy way).

That's it. You're Done. Start Your Console and it starts up by skinning Powershell instead of the usual command prompt. You should now be able to skin it and theme it using all the rich options Console provides in it's configuration files. And if this isn't enough, go ahead, see if you can have The Dancing Banana in PowerShell! :)

posted on Tuesday, November 21, 2006 11:23:29 AM UTC by Rajiv Popat  #    Comments [2]
Posted on: Sunday, November 12, 2006 by Rajiv Popat

A Different Perspective to Programmer-Poetry

A few months ago, I was presenting in a New Employee Orientation Seminar. I was expected to speak about my professional experiences in past 7+ years of software development and 4+ years of work @ eFORCE. It was the last presentation in a three day program and everyone looked a little tired and bored so I decided to speak about my stupidities in the past 7+ years of software development and 4+ years at eFORCE instead. It was all about all the stupid mistakes I had made in the past 4+ years and what I had learnt from them. It was fun giving that presentation and the audience was great.

During the presentation I asked a few fundamental questions to the audience:

  1. What do you do?
  2. Why do you do it?

Answers like - "I'm a Tester", "I am an Engineer" or "Because it's what my job requires me to do" were not allowed. It's always interesting to hear some other answers. Some of the other answers I've heard are quite interesting. Once you remove the standard answers out, the question becomes as interesting as "Why do people write open source software?" (ok, that post is for some other day :)).

Michael Hunter seems to answer the first question right on his blog title. What does he do? He has been Making Developers Cry since 1995. That's the kind of answer that makes my day! :) Seriously!

People writing / testing / coding / designing and analyzing software today, are here for different reasons. I've discussed this with friends, strangers, colleagues, acquaintances and pretty much anyone who has anything to do with Software, that I've had a chance talk to. What do you do? And Why do you do what you do?

Most answers are interesting. Not all sound as interesting as Hunter's blog line, but I "get them". They make sense. I've been lucky. I have never met a programmer, tester, technical architect, project manager or business analyst who is really sorry that he is, what he is. Most of the ones I've met or talked to, like what they are doing.

Some haven't really thought about it. That's ok. But I've not yet met a software-person who's sorry or apologetic about being a programmer or what-ever he / she is. Maybe it's just because of the place I work at. Maybe it's because our interview process kind-of makes sure you like what you're doing before you get in!

So, long story short - I don't know any programmer who's pathetically sorry about being a programmer and I don't know what it would be like to meet one.

A couple of days ago however, I received this email forward which had been sent by a Senior Engineer I know. This was just a casual forward of a random poem he had found somewhere on the web. It was sent to a dozen other good developers, good testers, good business analysts and other people who were pretty good at what they do. You know, the kind of forwards that you get, and then you forward them to others because you find something in it interesting, funny or casually amusing. Yes I did find it a bit funny which is why I guess it was sent to all of us so that we could get some kick out of it! Here is the poem from the email which was signed by the name of "Author Unkown":

If I could meet the guy who wrote this poem, I would have a lot to say to this "Author Unknown". Here's how it would go:

"Wow! You sound so pathetically helpless, you're almost funny!! Dude! You joined Software Development for all the wrong reasons! Actually, you would have written similar poems for anything else that you might have done in life.

Let's Analyze the above lines a bit, shall we? On one hand you claim that the software world has made you wealthy and on the other you 'need' the money this profession pays you! Even you poem lacks logic, I'm sure your code is no better.

You need to stop everything else and start learning how to code. Now! But I don't think you'll do that, because you don't seem to like anything that requires any form of hard-work anyways. Which kind-of explains why you can't get away and find something else to do.

You're just a good for nothing, confused little cry-baby. But don't worry, if you keep composing contradicting poems like these, which we all find funny, and can forward to each other, we'll all have a charity fund for you so that you can go out and have fun with your honey and not have to work too hard!

On a side-note: I think there are plenty guys in India who could genuinely use that charity fund. So cancel that idea. You don't deserve it, you depressing insect who doesn't even have a name!!" :)

Jokes apart, that just sounds like a mean and controversial thing to say and I'm not a mean person. And of course, there was no way I could meet this "author unknown" guy and fix him like a major bug resulting out of bad design should be fixed. So I decided to pack my objectivism in a box and not even try to think about what I would say to this guy if I could meet him. It was nearing Friday and I had builds to push and work to do!

It was within a few hours, yet another email dropped from in my inbox. Apparently, I was not the only person who had problems with this poem. This was from a mentor, who also happened to be in that list of all people who just happened to have received that email. He had seen the poem, and had hit the reply-to-all button.

His email was a really motivating poem he had composed in a short span of time (I'm not sure if he would be ok, with me posting his poem on my blog. So, I'll just wait till he says it's ok to post it here or till he posts it on his blog or something and then I'll update this post with the text / link or something more about it.)

Okay, now that we had a discussion going, and my build had been pushed, it was time to hit a reply-to-all and post my very own personal version of this poem, which would have otherwise remained in my personal journal. Here's how my poem / email went:

After seeing the poems, this one was mostly composed for my personal journal. But since we have 2 versions of the same poem already – here’s mine. It’s a little long though… I get carried away when I write for myself :)

I start my mornings
Thinking about last night's error-codes and warnings

It's an hour's trip to the workplace.
The streets are like a mad rat race.
But I am happy, a smile on my face
Because last's night bug...
Oh, that was just the database!!

I figured it out!!
I'm a better coder now.
When I see the same bug again,
I'll know the “why” and the “how”.

With 32 new emails, my laptop is finally on.
Good! I say. 32 new battles that can be won.
Time is short; I must pick the wars I fight,
And just like my life, keep my code,
Processes and philosophies light :)

I must manage, I must learn,
Make mistakes, and definitely earn,
No, not money! The money will come!
Let me chase something that's chased by none.

The crazy day moves on, I take a pause.
To look back at the day that "was".
Teachers, Friends and strangers say,
That I should follow their way.

But I took a turn I wanted to take
For No-one else, but my own sake.
I think It was the monitor's light,
Or maybe the curly brackets and the semi-colon’s might :)
But it felt, and still feels like, love at first sight.

With no big degrees and no big college names to write,
I knew it would be a difficult fight,
But why do easy crap, I thought...
I'll simplify and get the difficult stuff right!

Then I snap out of reflections and stop thinking about the past.
It's time to get up and move ahead. Steady, yet fast.
Mustn't think way too much,
Just solve anything, that’s thrown my way, as such!

Give Presentations, Contribute, Argue, Write Blogs, Articles, Code, Document,
Design stuff and be an Analyzer.
The day moves on and I'm just a little wiser.

Its late at night and the street-dogs bark at my car.
As it speeds towards my home that's far,
I wake my family up at midnight,
And on their faces, I see a smiling light.

We laugh, we joke, we eat and talk.
The weekend's near, we’re planning a long walk.

The day finally ends…
With a tired body, a heavy head,
I go to sleep and sleep like the dead.

But the sleep brings me bliss.
Because doing my karma, is what I didn’t forget or miss.
Tomorrow is going to be another day,
And if you've got a thousand new battles for tomorrow…
well, bring them on, my way!

The way the divine and me choose together,
And at times, it’s a little bumpy just like bad weather.
But fighting the bad weather is just a part of the game.
If I did anything else I would go insane.
Little, but Quality time, spent with the ones I Love,
tell me that my efforts aren’t in vain.

(Ok, that was the philosophy part – now, just like life, let’s have some raw objectivism… :))

And then there are guys that say –
“But you work for money and fame”
“Yes”, I say – I bloody well do!
Money, fame and a big fat name,
And I wish anyone, who loves what he does,
just the same! :)

It’s not “just a profession”! It’s who I AM!

And It goes on and on for many more lines… but I think I’ll stop here! At the end of the day it’s all about the perspective :)


P.S. – I think I’ll blog this! :)

And then I received more than one emails telling me that I should in fact, seriously, blog this.  I’ve seen other poems in the past that are a little depressing, (some of them are even cute or funny in their own way and they mean no harm) but this one was just way too depressing to not criticize blatantly. So, here it is. Officially blogged. My poetic reply, thoughts, views and stand on the so called, Programmer-Poetry from Mr. "Author Unknown" who is nowhere close to being a programmer. Something that would otherwise go to my personal journal, published live.

This poem, which started as a fun-email-forward, helped. Becuase it gave a chance to everyone in the mail trail, to take a pause, and ask themselves the two important questions, which I'm going to ask again, to everyone reading this post.

So, what do you do? Why do you do it? Have an interesting answer? Drop me a comment poem! :)

posted on Sunday, November 12, 2006 5:21:40 PM UTC by Rajiv Popat  #    Comments [4]
Posted on: Saturday, November 4, 2006 by Rajiv Popat

It's a Mac Mac World!

Since the rest of the Software, Hardware (and Nothing-To-Do-With-Both-Hardware-And-Software guys too), seem to be talking about this I thought I might as well chime in and put in my insignificant two cents. This is the picture of my desktop:

A couple of years ago I worked on a Mac for an hour or two. I liked a thing or two about the UI and went searching for utilities and tools that would let me tweak my windows and let me have the parts of the Mac's UI that I liked. I came pretty close to the Mac. Then In a few months I missed my start button. So I changed the skin, tweaked a couple of things, and a little bit of the Windows flavor started showing up again on my Windows desktop which was now looking pretty close to a Mac.

After about two years, the desktop of my work laptop is a perfect Hybrid that looks somewhat like Mac but is 100% PC (running on 100% Windows). For me that's going to stay like that (At-least till Microsoft throws a Vista Release at me. Not running Beta and RC Versions of an OS on my work machine. Just not that adventurous, anyways, I digress... so I'll come back to the point!).

There was a time when Mac Ads used to have a little bit of "something" in them. Remember the "Here's to the crazy ones" Ad? Ok, I'll admit, I never figured out what that Ad had to do with Apple but I kinda liked it. I was always into Microsoft Tools and Technologies so I wasn't going to spend cash on anything which doesn't run Visual Studio (or QuickBasic at that time)! But to an outsider like me, who has nothing to do with the Apple world, Apple looked like it was decent company making good products (that had nothing to do with my life) and good Ads.

Recently, Mac seems to have a sequence of Ads which the entire world seems to be talking about. Why? You have to see them to figure out why. Go ahead, click on that link! But if you just want a quick one line description of these Ads, the most accurate one I've found till now is Rory's comment on his own Blog:

"The ads aren't witty. They aren't clever. They aren't creative... with such a small market share, I suppose they have to be careful with their marketing budget, eh?"

Some of these Ads try to depict that a Mac never crashes. Honestly, I've never used one long enough to figure out the truth, but Greg Riaz shows a Screen shot of the Blue'ish Screen of Death on a Mac.

Rory explains his reactions to this Ads using his Artistic Skills. Hilarious! But Not as funny as some of the other Reactions out there. He says, he's trying to be the "Nice" Rory instead of the "Mean" Rory. He keeps his Artistic Skills objective and makes a perfectly valid point, quite elegantly and humorously. Well, others haven't been as Nice on Apple as Rory and Greg have managed to be.

Take a look at this spoof for instance. I was a little confused about this spoof though, It starts off with Mac being better at PodCasts and PC's being better at Pie-Charts and then turns into a confusing fight between... well, are Pie-Charts more important or Pod-Casts. None-the-less, it's two minutes of completely insane entertainment worth wasting your time and Bandwidth on. And if you have more than 2 minutes, go on, read the comments under the spoof. You might see a couple of Zealots - both from the Apple and the PC side (you'll be able to spot them easily).

Entertaining? Wait, there's more! There's a whole host of spoofs at YouTube. For Example, there's one on Gaming on PC Vs. Gaming on Mac. No Offence to the Linux guys (I was one, almost for a year) but the inclusion of Linux in this spoof is "Sofa King" (to be read very fast, three times over) Hilarious! If you've made it this far you just have to waste some more time and see it to understand what I mean.

So you thought that's the end of it? No way! Follow the links on the Connected Video or just search for 'Mac Ad Spoof' on YouTube and you'll find tons of them. Some of them seem to be as good as the Originals (only much more funnier). In fact, with Linux and BSD in there for the added humor (example: this one), some of them seem to have a bigger Marketing Budget than Apple's Advertisement which just have the Mac and PC. :)

And I'm sure by this time, if you're into humor that's completely void of sense but really funny you would have found some Spoofs like this one. Keep browsing on YouTube. There are more!

In one of his comments Rory remarks:

"They make me embarrassed to be a Mac owner... I've still spent about $10,000 on Macs over the past several years, and these ads have actually strongly negatively impacted my capitalist-driven consumer joy... It's just Apple throwing its own feces at the other side of the fence, and it's ridiculous."

But then, every action has an equal and opposite reaction. And if you want to get some kick out of some of this feces being thrown back into Apple's backyard go visit YouTube and see the spoofs! It's a Mad Mad Mac Mac World!!

And Btw, I'm keeping my slightly Mac'ish Desktop till I move to Vista. Why? Because I like mixing the best of all world when-ever I can. If there's a Mac Zealot somewhere who feels that Mac is better just because I used some UI tools and skins that look like Mac, go ahead, get happy! I won't make a spoof! Honest! :)

posted on Saturday, November 4, 2006 12:01:29 AM UTC by Rajiv Popat  #    Comments [5]
Posted on: Tuesday, October 31, 2006 by Rajiv Popat

Analyze This!

When I first came across Microsoft development Platforms, in the QuickBasic days, I was hooked. Because the tools allowed me to produce results. Single handedly. In a short span of time. I could write proto-types and see things happening.

Even today, my reasons for sticking to Microsoft tools and technologies (and trying to bring developers from the "other side" over to Microsoft tools and technologies :)) remains the same - Productivity.

A couple of days-to-a-week and I can cook up POCs that convey the fundamental vision of a huge module to everyone involved. We can have brain-storming sessions, take notes. They don't like what they see? I can move big chunks around and give them something they want in a matter of hours!

Whiteboard meetings / Conference calls > light weight documentation > quick releases (every month or so) > Feedback (cycle). That's how most Microsoft Developers (me included) love working.

A few days ago, an ex-army officer who is now a HR person in a software development firm, wanted some help on how to do Business Analysis asked for my help. He wanted me to review the detailed Use-Case Documents he had written for an internal project that he was analyzing for his company.

This was his First Attempt at Business Analysis and he had already prepared:

  1. Lengthy Use-Case documents.
  2. Visio Wire-frames that were as detailed as capturing widget level validation!
  3. Detailed Visio Flow Diagrams.

He was a smart individual taking his first steps towards Business Analysis and has asked for genuine advice. It was time to take a pause and have a little bit of discussion. My sole objective was to convince him about a few things:

  1. Writing complicated documents and making complicated diagrams, has nothing to do with "Business Analysis".
  2. Business Analysis is no different then rest of Software Development, where Occam's Razor and Kiss are the only two principals that work. Not Waterfall.
  3. Knowing what you are doing is more important than making really complicated diagrams on what you are doing.
  4. Use simple tools. (Unless of-course, in very rare situations, when you have to use complicated ones!)
  5. The best Analysis and Design tools ever are White boards, PostIt Notes and the Human Brain! :)

Steeve Yegge is his long Rant about agile says:

"Most great software developers around the world don't use Agile. They just work hard, they stay lightweight, and they ship great stuff. Most developers still have no idea what Agile even is. Think of that!"

It's interesting to know that even something as light and flexible as Agile doesn't sound light enough to Steeve. I wonder what he would have to say about Waterfall, RUP and writing a detailed 12 page Login Use-Case document :) Anyways, I digress. On a serious note however, isn't the same statement valid, in practically anything you do in life, including Business Analysis?

Being lightweight in a Software Development firm like wearing casuals at work. In a more mature organization / teams / work-cultures they'll understand. In lesser mature ones - they'll look at you with knitted eye-brows when you walk into office with that black T-shirt and Blue jeans. But that's OK. As long as you keep shipping quality builds on time.

I've always believed in putting some thought into what you're building before you start building it. But, I was never quite a Use-Case document guy myself. So what do I feel about some other techniques of documenting requirements:

  1. White board diagrams? - Definitely!
  2. User stories? - Sure, as long as they don't go more than a couple of paragraph each.
  3. HTML Mockups? - Sure! (As long as someone else makes them based on white board diagrams :)).

Scott W. Ambler makes an interesting point:

"The longer your project team goes without the concrete feedback of working software, the greater the danger that you're modeling things that don't reflect what your stakeholders truly need"

I've heard of projects, in so called Huge Indian Software Consultancy firms, where there are specialized teams for synchronizing Use-Cases with code, Specialized guys for just filing bugs (These are guys who file bugs NOT find them!) and specialized guys for Formatting these Use-Case documents and versioning them. I've heard stories of projects failing in these environments from friends and I am told that when they do fail it's a very ugly process basically focused towards: "We have the documentation and the proof! Let's track down the culprit!"

A friend who works in one such Large Indian Software Development Firm describes their check-in process:

"We're not allowed to check-in code or fire builds. We check-in to a different source control and email the Build Manager. Who reviews our changes and commits them to a QA source control system. A Business Analyst runs those changes and verifies that they confirm to his Use-Cases. Then the tester runs Test-Cases, which are built based on Use-Case documents and does manual testing after which the Build Manager checks our changes into the Primary Source Control System which only he has access to. All changes including caption changes of labels go through this process. We build based on Requirements that have been analyzed carefully!"

I had to quote him on this one. It's been weeks since that discussion with him and even though the words aren't exact, but the idea is precisely that.

Then there are companies where people have one meeting and start writing code. A person I was interviewing explains their Process and how they Analyze Requirements and Develop software:

"Some of us use Visual Studio 2003 while some have moved to Visual Studio 2005. We are all free to choose our own IDE, frameworks and do our thing with code. We have a couple of meetings with the clients... and then we code."

Wow! Both aspects sound equally scary to me. The first one, more often than not, leading to Analysis Paralysis followed by a search-for-the-guilty phase every time something unexpected happens and the second one... let's not even talk about that. 

Walking on the middle path is difficult. You need focus, balance and a team that takes work seriously. At the end of the day, if you really think about it:

  1. Shipping regular weekly builds and having Continuous Integration and letting everyone "see the status" is difficult - Sending weekly status reports in word files is easy.
  2. Shipping a fully functional POC is difficult - Making Use-Case diagrams and Flowcharts (which, most of the time, don't cover all flows) is easy.
  3. Having a white board brainstorming session with the stake holders and managing scope are difficult - Writing a 26 page Use-Case document that confuses your client is easy.

Didn't we all come here because we wanted simplify and get the difficult stuff right? Analyze this! And btw, please don't write a detailed lengthy Use-Case document on this Post! :)

posted on Tuesday, October 31, 2006 8:02:56 PM UTC by Rajiv Popat  #    Comments [4]
Posted on: Friday, October 20, 2006 by Rajiv Popat

A huge Trace.Log file deleted and a couple of Gigs reclaimed!

There is one thing good about windows. What can be done, or sometimes... what happens ("seemingly automatically"), can be undone (and explained). Last week one of the 3 power-horse machine that I work on mysteriously slowed down. I'm a multi-tasker who has three instances of Visual Studio.NET open with at-least 10 other applications running simultaneously at any given point of time.

So, initially, this slow-down seemed "normal" and the tendency was to monitor the RAM usage. But Task Manager and Process Explorer did not reveal anything peculiar. After some more investigation and using FileMon it was evident that the bottle-neck was actually the HardDisk which kept constantly thrashing. The Instant reaction was to Defrag the disk which pointed out the real problem. The Defragmenter completed "successfully" with an error :)

The error (included in the Defragmenter report) was that it wasn't able to move a particular file "C:\WINNT\system32\LogFiles\WMI\Trace.log" (No, I'm not using the primitive Windows NT - that's just how I like to name my Windows folder :))

But the real shock came when I tried to get to the file using explorer and see what's going on. Here's what I mean:

Now, I have three problems with this picture here:

  1. That is a 80 gig disk that has cost Money to buy. If there's going to be a 2.5 gig file somewhere on that disk, I'd better know about it.
  2. What-ever wrote that darn thing on this disk, wasted quite a bit of processor and RAM writing it.
  3. I couldn't delete it. Apparently, some process seemed to be using it and locking it!

A little more Googling on Large trace files revealed that there's some utility out there let's you disable trace logging and then allows you to delete these files. Back, in my MCSE days and days of NT 4.0 people like me, who were both into IT and Development, used to talk a lot about Resource Kits and Option packs and things like that. But not a lot of people seem to be talking about Resource Kits these days.

As it turns out, there's a Resource Kit for Windows 2003 available here. And in that long list of tools and utilities is a tool called TraceLog.exe. A quick "TraceLog.exe -l" told me what was occupying the file and writing away to it. A quick "TraceLog.exe -stop" allowed me to stop the NT Kernel Logger from Trace Logging.

Once trace logging stopped I was able to Delete the Log file off my disk and re-run the defragmenter successfully without any errors.

What really bothered me was not knowing what had Enabled Trace logging and the creation of a 2.5 Gig file on my disk. With the file now wiped off and the problem solved I decided to read a little more and do some investigation into the possible causes of this problem.

Discussion threads like this one revealed that the real problem was BootVis

BootVis is a tool which is supposed to provide faster Boots with Windows XP. I Had played with it a few days ago and realized that it does NOT work very well with Windows 2003.

BootVis had started Trace Logging. And in all probabilities, the NT Kernel Logger had diligently continued logging since then (even after BootVis was uninstalled) just because no-one told it that it was ok to stop logging now.

Long story short, I have a couple of gigs won over from a Zombie file that I wasn't going to need / read anyways and the Defragmented disk seems much faster than yesterday; and that makes me a happy man for today.

posted on Friday, October 20, 2006 10:53:08 PM UTC by Rajiv Popat  #    Comments [5]