Building from the ground up

I recently carpet-bombed my main work laptop and built it from scratch. Not something I do very often but the time had come. Here’s what went back into the box (the box being my trusty Dell D830) :

OS : Windows 7 Ultimate 64-bit

Productivity Stuff :

Development Stuff :

System Management Stuff :

Utils & Misc :

Observations :

  1. Wow ! That’s a lot of stuff. Now I remember why I don’t do that very often.
  2. Development stuff still outweighs everything else by far.
  3. Why do I still have an optical drive on this laptop? During all of the above I never once used a CD or DVD.
  4. When I started developing I used TextPad and a compiler and I hated IDEs. I still occasionally use TextPad but now I have two versions of Visual Studio with a zillion plug-ins. My daughter once asked me “What’s that game you play where all the words pop-up and change colour.” It took me a while to work out she meant Visual Studio 🙂
  5. I really only installed Snippet Compiler for old time’s sake as development seems to have stopped. I use LINQPad for that stuff now.
  6. Outlook 2010 is amazing.
  7. Visio 2010 drives me nuts because I have LIVED in previous versions of Visio way too long and now everything has moved. It’s like my house has been burgled by Feng Shui experts with OCD. I’m learning to live with it though 🙂
  8. When the hell is LiveMesh going to get out of Beta ?
  9. My beloved Paint Shop Pro disappeared up its own arse around the time it was acquired by Corel (coincidence ?) and since then I have stubbornly stuck to version 6 which is next to useless on Windows 7. Paint.Net is a worthy and FREE replacement. Nice one guys.
  10. I want to love SketchFlow, but I also want to beat it’s stupid head in with a brick.
  11. Reflector is still way cool and it now has a “PRO” version for £125 – OUCH ! Guess how many new cool features the free version will be getting from now on 😉
  12. Loving LINQPad. It has more or less replaced Snippet Compiler, SQL Management Studio and a bunch of other little utilities on my machine. Take the LINQPad Challenge today.
  13. Nearly half my development stuff is now for mobile. Scary 😮
  14. Previous problems with Security Essentials have not manifested themselves. Hmmm….

What price security ?

For the past couple of weeks I’ve been trying out Microsoft Security Essentials. This is Microsoft’s new, free anti-virus, anti-spyware and anti-malware tool. For a long time I’ve been using either NOD32 by Eset or Sophos as my AV of choice but I figured I’d give this a go.
My primary requirement of any tool like this is that I should not even know it’s there. I will, at a push, concede to having a single, small icon in the system tray but there had better not been any popups or nags or hellos or splash screens or any of that crap unless there’s an actual, real live virus emergency. And, it had better not interfere with the normal running of my machine or my productivity. I don’t ask much, see ? Both NOD32 and Sophos are excellent in all these respects. Completely reliable when you need them and virtually invisible when you don’t.
The machine I ran Microsoft Security Essentials on was my 2 year old work-horse laptop, i.e. the machine I use most of the time, most of the day. It’s a Dell Latitude D830 with a 2Ghz Core 2 Duo CPU, 4GB of RAM, a 200GB 7200 RPM disk and a wide screen 1680 x 1050 TFT driven by a 256MB NVidia Quadro NVS 140M graphics card. I am running a fairly clean build of Windows 7 which performs like lightening and is an absolute joy to use.  It is, in short, a pretty good laptop.
Microsoft Security Essentials behaved impecably to begin with. It was quick and easy to download, install and configure and it ran silently in the background without seeming to get in the way. But then the trouble started. Specifically, I noticed a problem with audio playback. It was most apparent with video and especially flash. What I was getting was frequent, irregular buzzes, blips and judders in the audio. This was happening in flash, video players and even in media players when I was just playing MP3s. In Windows Media Player I could actually produce the problem by resizing or moving windows around on the desktop while audio was playing.
I tried various configuration changes, killing as many other processes on the system as I could, reinstalling audio drivers etc but all to no avail. Needless to say Microsoft Security Essentials has now been uninstalled and the problem vanished instantly. Obviously this may be a very isolated case related to my specific setup but I’d be ineterested to know if anyone else has similar problems.

Windows 7 RTM…the adventure.

I couldn’t face doing another complete rebuild on my machine so soon after having done one for the Windows 7 RC. So when I got the RTM I did a bad thing. I upgraded. This is not officially possible but if you copy all the source files off the DVD, edit the file sources\cversion.ini and set the MinClient setting to the same as the RC build number (7100) it will work just fine…well almost. Here’s a list of the stuff that didn’t.

1) Windows Virtual PC 2007 SP1. This does not seem to work on Windows 7 as Windows 7 has it’s own spanking new virtualisation. So I uninstalled the old one and set about trying to configure the new one. A couple of things about this though.intelutil

The new Virtual PC on Windows 7 requires hardware virtualisation support, i.e. your processor must support this. Then, as this is almost invariably disabled in the computer BIOS, you have to get in there and find the setting to activate it. In my case – Dell Latitude D830 – it was pretty well hidden in with the POST settings. To find out if your Intel processor supports this you can download the Intel® Processor Identification Utility from here. Once installed and run, look on the CPU Technologies tab under Intel® Virtualization Technology. If it’s set to Yes, you’re OK.

adaptersettings2) If you are a developer and you develop for Windows Mobile and you have the Windows Mobile SDK installed with its device emulators you may have a nasty shock at this point. The emulator uses the Virtual machine Network Services driver that is part of the old Virtual PC to allow it to piggy-back on your network connections. Once you uninstall Virtual PC 2007 this is all over. The fix for this is fairly straightforward since although Virtual PC 2007 does not work on Windows 7 it’s virtual network driver does. So, before you uninstall Virtual PC 2007 make a copy of the  Microsoft Virtual PC\Utility\VMNetSrv directory. Once the uninstall is complete go into your network adapter settings, pick any adapter and view its properties. Click on the install button, select Service and click Add… You should then be able to reinstall the driver from the copy of the directory you made.

3) Windows Mobile Device Center (WMDC). I previously had WMDC 6.1 installed on the Windows 7 RC and it worked fine. Again, no such luck on the RTM. So, I uninstalled it as the RTM is supposed to come with its own WMDC installed by default. Uninstalling the old one however seemed to knock the new one for six. It eventually started working again after a couple of reboots so I’m not sure what happened there.

In fairness to the RTM it did warn me that these thing wouldn’t work during the setup. Guess I should have taken more notice 🙂



The Rule of 8 : High Performance Scalable Systems

Wille Faler has an interesting article on his blog where he highlights 8 core principles for building high performance, scalable systems. It’s an extension to the list of Best Practices for Speeding Up Your Web Site, but Wille is focussing on general principles for any scalable system rather than just websites.

In short, we have :

  • Offload the database – Avoid hitting the database, and avoid opening transactions or connections unless you absolutely need to use them.
  • What a difference a cache makes – For read heavy applications caching is the easiest way offload the database.
  • Cache as coarse-grained objects as possible – Coarse-grained objects save CPU and time by requiring fewer reads to assemble objects.
  • Don’t store transient state permanently – Is it really necessary to store your transient data in the database?
  • Location, Location – put things close to where they are supposed to be delivered.
  • Constrain concurrent access to limited resource – it’s quicker to let a single thread do work and finish rather than flooding finite resources with 200 client threads.
  • Staged, asynchronous processing – separate a process using asynchronicity into separate steps mediated by queues and executed by a limited number of workers in each step.
  • Minimize network chatter – Avoid remote communication if you can as it’s slower and less reliable than local computation.
%d bloggers like this: