Filed under: code

Keep it Simple, Stooopid

I fell for a trick question today when demonstrating my technical ability. I don't feel too bad about it - it was all in good spirit, and it was designed to catch people out (and it was first thing on Monday morning...). The question was deceptively simple.

"What's your most efficient way of printing out all the odd numbers between 1 and 1000?"

Immediately I gave the same answer as - according to the Askee - everyone else: with a loop and the mod operator. Pseudo code:

Simple, obvious, and pretty efficient, no? With a grin the Askee wrote "i+2" on the piece of paper, and left it at that. After a moment my eyes went wide and I'm sure I physically slapped my forehead when the realisation hit. While the answer above is how 99.99% of developers would answer the question, it's over-engineered. This would have been a much simpler solution:

Each odd number is two more than the last one. Duh...

In the follow-up discussion we talked about how most developers tend to over-complicate things almost on instinct. Our solutions may be correct and (usually) robust, but often if we step back a moment there would be a much more straightforward way to solve the problem. So I may have felt stupid for a moment, but it led to an interesting discussion about the nature of programmers, where hopefully I saved face!

"IIS Express Website Here" Shell Extension

One of the cool things released earlier today by Microsoft was IIS Express - A lightweight but fully-featured and self-contained version of IIS 7.5. It runs on Windows XP and above, even if you already have IIS or another web server installed.

What's really cool (I think) is it can be run a) from the command line, and b) from any directory. This makes it incredibly flexible. That said, I don't want to have to fire up a command prompt every time I want to start a server instance in a particular directory... Wouldn't it be much easier to have a right-click "IIS Express Website Here" context menu option in Windows Explorer? Of course it would :-)

I've thrown together a shell extension using some registry edits, adapted from original work here and here, so all due credit to Phil Haack and Tuna Toksoz. What it does is add an option to your Windows Explorer context menu to start IIS Express in the selected directory, using a random port number. You can then use the handy System Tray icon to launch the site in your favourite web browser.

There are two versions of the .reg file in the Zip file - one for 64bit Windows, and one for 32bit. Only the 64bit version has been tested (certified working on my machine), using a standard WPI installation of IIS Express. Only run the .reg file suitable for your platform. Use at your own risk - I am not responsible for anything which breaks!

Download IISExpressHere.zip