Programming is all about decision making

As a programmer, you are continually making decisions when you program. Both at the macro level and the micro level. For any project, you have to select the programming language, the tools and the environment. Then as you design, you have to choose continually among multiple ways of doing anything. As you code, you continually are choosing among many ways to write the code. You are continually reformatting and rearranging code and even refactoring because you are not able to decide if one way
is  better than another. The problem is that, usually, the decision making required is trivial. But the sheer number of times you have to decide stuff is what slows down any programming task.
I think people who complete / finish projects are people who do not sweat over all details when programming. For most decisions, when the need to make a decision arises, they quickly choose one of the two or more choices without thinking about it and do not second guess their choice. So they continuously make progress and take one path to the end — they do not spend their time vacillating over what to do at each decision point. If some decision was really bad, it will become apparent enough — then you only need to decide (:-)) if you need to rewrite the part of the code starting from where a wrong decision was made.


What does the bis in the 2547bis RFC stand for?

Google search revealed that “bis” means “twice” in Latin and the bis in 2547bis refers to the fact that this is the 2nd edition of the original 2547 RFC with updated sections. Who would’ve thunk?


“Premature Flexibilization”

The author of  this coins a new phrase — Premature Flexibilization:

…the practice of adding complexity to your code to make it more “flexible”, in anticipation of future change.

The article, triggered an “yes” response in me 🙂 because I felt the same way many times.

In all my coding, I find that I waste a lot of time doing exactly what the author of that article calls “premature flexibilization” — trying to make code as generic as possible, trying to cover many cases that are currently not present, trying to cover all kinds of input. Though it is a good habit, I find that it contributes negatively to project completion and most times, all the genericity, etc was really not used. I have found that it is better to follow the agile practice of YAGNI and code to the current exact requirement and later go back to refactor code when another requirement for the same code comes it to make the code flexible and generic to cover the original and new cases. That way the code goes organically, does exactly what is required and the project gets completed.

One thing though is that it requires some discipline when revisiting the code the second time around to make sure that you test the original requirement is still being met.

I think one of the reasons for the effort spent in making the original code flexible is so that I don’t have to revisit code (mentally for me code maintenance is possibly one of the hardest thing to do).


“Run some cheap tests”

Interesting article on Mixergy with suggestions from other entrepreneurs on how to find an idea for a new startup. What stood out for me was this:

Run some cheap tests

Though this only applies once you have an idea, I thought it was an excellent suggestion on using Google AdWords to run ads based on your idea to see if there is some interest in the  idea.


Microsoft Outlook and disabled add-ins

I use the excellent Outclass plugin for Outlook which embeds the POPFile bayesian email classifier as a COM add-in to Microsoft Outlook. After about two years of trouble free use, suddenly it caused Outlook to crash. When restarted, Outlook crashed again. The next time I started Outlook, Outlook popped up a dialog asking me if I wanted to turn off the add-in that caused the crash on restart and I said “yes” to that, but failed to note something mentioned about how to re-enable the add-in if required after Outlook started up. This time, Outlook started up fine, but for the life of me I wasn’t able to figure out how to turn the Outclass plugin back on again. I almost panicked when I saw the tons of email that I was now getting that previously auto-classified into folders. Unfortunately the web-site where I got the Outclass plugin was down and there is no built in documentation. After a few different Google searches, I discovered that choosing the “Help — About Microsoft Outlook” menu item brings up a dialog with “about” info. This dialog has a “Disabled Items…” button. Clicking on this button brought up a dialog that showed a list of disabled items which had one sole item — the Outclass plugin. I chose to re-enable the plugin and now all is fine and normal with the world again :-).

Once more — the Outclass plugin for Microsoft Outlook is excellent. It is more than just a spam classifier. Since POPFile can classify mail as more than spam, you can train mail to be classified into more categories. With the Outclass plugin’s interface, you can set things up that classified mails get sent to specific folders. The training interface is super simple and is done from within Outlook itself.


Open Files on Windows XP

Many times when using CVS under Windows XP, I have the problem that a “cvs update” fails to update some file or the other without any apparent reason. Turns out that this is because the file in question is open in some application, which, for some reason has thrown out a dialog-box with the file held open waiting for my input (usually some simple yes/no query). I have this happen typically with source code browsers. A quick way to figure out if the file that didn’t update is being held open by some application is to use the Windows “openfiles” command. Go ahead, run it on the command line and check it out. It’s a neat command that serves a simple purpose. Note that you need to run “openfiles /local on” to turn on the monitoring of open files and that the monitoring has a performance impact.


How fast does Bing index web-sites?

It seems like Bing’s index is not as current as Google’s possibly because Bing doesn’t crawl web-site’s as fast as Google does. My first blog post to create a Firefox addon for Bing got indexed within hours by Google and showed up in it’s search results. But it is yet to appear in Bing’s search results (it is three days now since I blogged about it).

Google’s results:

Bings results: