Enter into the Matrix!

A friend of mine was trying to get in contact with me but could not because my phone’s battery was dead. I later bumped into him coming back from Friday prayer and as soon as he saw me he said; “Did you see the email I sent you?” and I go; “No, what email?” and he goes: “Well, check your email. I’m expecting your call 8 minutes later.” and he gives me a big smile.

In my left hand there is the blue pill!

It turns out he sent me the link for a movie, or a look into the future (by a Google fanatic). It really does feel like I’m in the Matrix! Or the first 10 minutes of the ‘Terminator’ movie. Anyway, I’ll leave you to see for yourself: http://www.albinoblacksheep.com/flash/epic.

You think this is air you’re breathing!

Enjoy the movie!

Take Control of Your System

First a personal piece of information: my MVP status has been renewed! Wooohooo! I’m happy :-)

Now for the real stuff; the other day I was trying to uninstall WDS (Windows Desktop Search) and since I did not find the uninstaller in ‘Add or Remove Programs’ I had to do it manually. I found an entry on the net that explains in detail how to remove WDS and it involved removing the installation folder in the ‘Program Files’ directory.

When I tried to delete the folder, I could not because it was ‘locked’. A quick search online turned up this utility that enables you to unlock ANY folder and subsequently delete it. Lovely tool indeed. It will also give you of all locking threads and you can decide which to kill / remove.

On other news, remember a company called Sysinternals? Well, Microsoft acquired the company back in 2006. (You will be redirected to a Microsoft Technet site.) Sysinternals had some extremely wonderful tools that enabled you to monitor literally everything on your computer. You can monitor the entries to your registry (RegMon) in real time! You can monitor your hard disk activity (FileMon). You can monitor the processes running on you computer (Process Explorer); it even shows .Net assemblies and other JIT (just in time) information.

The one I liked most, was Autoruns which allows you to view and switch on or off all the applications that start with Windows. Please note that RegMon and FileMon have been replaced by Process Explorer which, apparently, will do the same job.

Check it out!!

Links:
http://ccollomb.free.fr/unlocker
http://www.sysinternals.com
http://www.microsoft.com/technet/sysinternals/ProcessesAndThreads/Regmon.mspx
http://www.microsoft.com/technet/sysinternals/ProcessesAndThreads/Filemon.mspx
http://www.microsoft.com/technet/sysinternals/ProcessesAndThreads/ProcessExplorer.mspx
http://www.microsoft.com/technet/sysinternals/ProcessesAndThreads/Autoruns.mspx

A lesson in Project Management

I’ve had my fair share of failed projects. Not as little as I’d wanted, but nonetheless, fair. One day, I realized I’ve had one too many and have since then embarked upon a number of project management courses.

My main area of trouble was properly estimating the timeframe for a project, and then sticking to that timeframe. Seems easy enough, only it ain’t. You see, there is a very large number of unforeseen variables, that kinda pop up on you.

First of all, allow me to introduce 2 facts. One: a project is a set of tasks. Two: a successful project is one that is completed on time, within budget and meets the defined specifications / features it was set out to complete. Anything other than that is deemed a failed project.

According to that latter piece of information, almost 75% of all software projects are failures. In fact, according to that fact, all my projects are failures.

Now, when planning for a project, the simplest and perhaps the most important piece of information you should know is that there are 3 pivots to every project; features, timeframe and resources.

  • Features: what is the project set out to complete. In other words ‘the scope of the project.’
  • Timeframe: the period of time within which the project should be completed.
  • Resources: the budget within which the project is to be completed and / or the number of people involved.

When communicating with project sponsor (the owner of the project and most importantly who will pay for it) you should say “You have 3 important factors; features, timeframe and resources; pick any two?” What this means, is that if 2 factors are set, the third factor is affected either upwards or downwards.

To explain this better, here’s an example. A project has 20 tasks, and must be completed within 3 days. This means that the number of people to work on this project should be increased to 5. The same project, but to be completed in 10 days would require only 2 people.

Another project with 50 tasks, where ONLY 4 people (maybe because of money shortage) can work on, would require 30 days to be completed. Get the drift?

Another issue to take care of is: scope creep. Scope creep is when the number of features / tasks in the project seems to increase as time goes by. This would result in a never ending project, and a sure failure.

One parting piece of information: if you fail to plan, you plan to fail.

Enjoy!

Quickie: SQL 2005 Service Manager

Remember the service manager in SQL 2000. Yes, that nice little icon near the clock in the system tray that showed the status of the SQL Server service. Well, it went missing in the 2005 version of SQL.

Well, some cool dude has created one for SQL Server 2005. I have to say, WOW! It looks absolutely astounding and supports versions 2000 and 2005 of SQL.

Now, this guy is an SQL expert and he’s even posted a few articles such as ‘SM0 2005 – Populating a list of SQL Servers‘ which I’ve always wanted. How cool would it be to add it to your application?!

Enjoy!

Links
http://www.sqldbatips.com/showarticle.asp?ID=46
http://www.sqldbatips.com/showarticle.asp?ID=45

Hold on sugar!

Mahed Chand blogged about why he thinks developers should choose C# over VB.Net here. I commented on his blog and am hereby repeating my response here.

I’ll cut to the chase. I strongly disagree. I have nothing against C# but VB is still the language of choice.

Here is what I think;

  1. If you are migrating from VB, then migrate to VB.Net. You’re still gonna have to learn a lot, but the syntax is still 70% the same. Unlike C# where the syntax is 90% different.
  2. The VB developer environment is at least twice as productive as that of C#. A bit more verbose, but still more productive.
  3. Compiled VB code is smaller than that of C# (even though by a very small margin).
  4. Where I live, VB developers average salary is MUCH higher than that of the C# counterpart.
  5. Both VB and C# can do 99% of what the other can do.
  6. In Orcas (the new Visual Studio from Microsoft, set to be released later this year) VB.Net supports a wider range of Lambda expressions.
  7. More people have downloaded the Express edition of VB than C# (Source: Microsoft at MVP Global Summit).
  8. Your sister site is VB .Net Heaven :-)


Enjoy!

Links
http://www.c-sharpcorner.com/Blogs/BlogDetail.aspx?BlogId=151

Quickie: SQL 2000 with SQL 2005

Here’s a quickie; if you need to interoperate two SQL servers, one version 2000 and the other version 2005, then you must ensure that Service Pack 4 is installed on the 2000 version.

Otherwise it won’t be able to recognize the other SQL server.

Just thought I’d let you know.

Thanks!

My.Settings

Back in the VB6 days, when creating applications that required specific settings unique to a particular machine (such as screen sizes, fonts or even connection strings), I used to use either an INI file or the registry for storing these settings.

A few days ago, when writing an application on .Net v2, I needed to store similar settings and it had me thinking; should I use an INI file, the registry or even an XML file. The logical answer seemed to be to use an XML. So, I started searching the internet for possible solutions.

For the better part of half-an-hour I went through a number of articles, knowledge bases, forums and blogs and then it struck me. A pure and simple answer on the Microsoft MSDN forums (http://forums.microsoft.com/msdn). Why not use My.Settings?

When using My.Settings, you are actually saving the settings in the app.config file in XML format. Simply double click on ‘My Project’, select the ‘Settings’ tab and enter the settings you require for your application. Remember these settings are unique for the local machine and shall NOT be available on any other machine.

Now, when adding new settings, you need to add a name for the setting, which cannot include spaces. You need to select the type, which is the data type. You also need to specify the scope. For this you have 2 settings, either ‘User’ which means that this setting is a ‘read-write’ setting, or ‘Application’ which simply means that this is a ‘read-only’ setting. You also need to specify a value.

Now, in code, whenever you need to read a particular setting then simply use My.Settings to access the setting value. You can also save a new value to pre-defined setting. Lost? Well, so was I at the beginning; so lets show an example. Lets assume we have 2 settings, named ‘Username’ and ‘Password’ (you would NOT usually save the username and password in a settings file; this is only for demonstrational purposes). Lets also assume that we have a textbox called ‘tbUsername’ and another called ‘tbPassword’.

In code, to read the settings into the textboxes you would simply write:

tbUsername.Text = My.Settings.Username
tbPassword.Text = My.Settings.Password

Now, assuming the user changes these and you’d like to store the new values, you’d write:

My.Settings.Username = tbUsername.Text
My.Settings.Password = tbPassword.Text

and then you’d type:

My.Settings.Save()

Read more here and here

Enjoy!

Links
http://msdn2.microsoft.com/en-us/library/saa62613(VS.80).aspx
http://msdn2.microsoft.com/en-us/library/ms379611(vs.80).aspx