Wednesday, 15 October 2008

The Chicken Run

When I first moved down to London from Wales I shared a house with three other people. I think it has given more anecdotes than any other period in my life. One such story is the time when one of the guys came back with a frozen chicken from the supermarket just around the corner. He then proceeded to switch on the chest freezer under the stairs and place this solitary chicken in it. When I protested about the cost his reply was “My mum says it more economical to keep things in the freezer”.

I attempted to have a conversation about the use of electricity versus just being able to nip around to the shop around the corner. I also mooted that it may have been more economical for his mother to store things in the freezer as she lived 20 miles away from the nearest supermarket. I also pointed out one fatal flaw in his plan for a roast chicken dinner – our oven did not work.

Finally, I gave in but had one last attempt at economy, suggesting that we packed the rest of the freezer with blankets to reduce the volume of air. His retort was “Don’t be stupid that will keep it warm!”. When he finally got around to eating it he attempted to crush it so that it would fit under the grill, couldn’t be bothered to wait longer than 10 minutes for something to cook.

I often see parallels with this story in technology. I have read statements such as ‘web services improve scalability and security’, ‘Ajax improves web site performance’ and ‘.NET removes the need to worry about resources’. I have seen examples, in all cases, where these statements have been proven to be untrue. These technologies are enablers – you still have to apply good practice and common sense when using them.

Web services and performance are a good parallel to the story above. In this case I am talking about web services used as a tier in an n-tier architecture. If the cost of the transport is higher than the cost of production there clearly is no performance benefit from the additional tier.

Getting back to my house-sharing stories, in January when the weather was really cold my house mate came in and said ‘”It must be really cold in the back room – that chicken’s grown a fur coat!”

You are (probably) not in the majority

As I am in the market for a new laptop I have been keenly awaiting the news of the new MacBooks and reading various forums. I have a couple of requirements and wants for a notebook. Ideally, I want a 15.4” Widescreen laptop with a 1680x1050 display. I would settle for a 17” machine with the same or a higher resolution. I also want a 7,200 RPM disk as I do a lot of file-based work (SQL Server, etc).

It is interesting to see how many people make comments on sites about how Apple are stupid not to support feature X, Y, or Z. As some contributors are on a forum will also agree with a viewpoint, people feel more and more justified that Apple have got it wrong. The fact is that Apple, as a company, are interested in their bottom line. The more automatable a process is and the fewer different parts to construct the better the returns. Apple will have the data available to them to help them make the decision on whether removing feature X and adding feature Y will increase the general appeal and, therefore, profits. You also have the option as a consumer not to buy a product if it is not what you want. Of course, vendors do not always get it right and that is reflected in sales, usually resulting with a product update to address the issue.

Another case that comes to mind is the Linux versus other platform debate. What the majority of exponents don’t get is that it is not ready for less tech-savvy users. Even if there is a family member or friend to assist somebody non-technical users generally dislike learning something new and different.

As an example, take a look at a few of the arguments we put for technology and ask yourself honestly if the majority of users are interested if:

  • It runs faster
  • It is more configurable
  • It is not Microsoft (!)

One of the great aspects of the web is that it has enabled us to share our views with others. However, we should not misinterpret a wider (but still relatively small) community view as global consensus.

Thursday, 9 October 2008

Vista UAC – is it really so bad?

Ben Fathi has just posted an article on the background behind Windows User Access Control (UAC). I was one of the few who held the faith and not turned UAC off. The statistics support my experience that UAC has become far less intrusive over the last few months.

Many people who criticise Vista say ‘why would I want to upgrade from XP just for a different look and feel and less performance?’ One of Vista’s biggest strengths is the work that has been done under the covers to make it more secure. Unfortunately, it is not visible, except perhaps in the case of UAC where it has been visible in a way that users feel is intrusive. In my opinion, it is a good compromise between compatibility, and usability without too much compromise on security. I do tend to click the UAC box without reading it – although it is usually as a result of my clicking an application I know I can trust.

I only have two issues with UAC from day to day. The first is not a UAC issue but an issue that Visual Studio 2008 still needs to be started under an Administrative account for certain scenarios. Hopefully, in the next release we will see UAC properly supported for those situations where it is absolutely necessary to elevate your privileges.

The second issue is the users tab of Task Manager. In order to click either of the buttons to disconnect or log off a user you have to switch to the processes tab, click the ‘Show Processes from all users’ to elevate your privileges and then switch back to the users tab. Hopefully, we will see a fix for that in a later service pack.

Wednesday, 8 October 2008

C# Console Service Project Template for VS2008

Often, when I develop services I want to run them interactively from the command line. For example, for testing running under different user accounts with different privileges and for debugging purposes. After having written a few of these services by hand in a variety of languages I have finally had time to create a Visual Studio template for a ‘Console Service Application’. It is basically a modified version of the existing service template (with the implementation in a single class) with console properties enabled. In addition, there are a few lines of plumbing code to fork to the appropriate mode.

Simply drop the file into <your documents directory>\Visual Studio 2008\Templates\ProjectTemplates\Visual C#.