Vista Defrag Woefully Inadequate - Enter O&O Defrag

Being rather new to Vista this week, I was sorely disappointed to see the severely dumbed down defrag utility in Vista. A pathetic effort. Really! So after a few highly scientific Google searches, I settled on O&O Defrag and could not be happier.

Here's the lame, incredibly useless UI in Vista's Disk Defragmenter. Note, if you are going to use some other defragmenter on a schedule, which I would recommend, be sure to disable the regularly scheduled Vista defragmenter by unchecking the box. One way of getting there is to go to the Control Panel and then Performance Information and Tools and then Advanced Tools.

And here is only part of the incredibly useful O&O Defrag UI, a shot taken as it defrags my drives:

Of course there are other suitable defrag tools such as DiskKeeper and others. Perhaps Microsoft wanted the Vista tool to cater only to the basic, uninformed user. If so, they certainly left the market wide open to the more sophisticated tools vendors such as O&O.

 

From XP Pro to Vista Ultimate x64

I finally took the plunge. Now I get to use 4GB out of 4GB except that the bare minimum I seem to be able to get Vista x64 down to is a 1.2GB footprint. And that's after hours and hours of experimentation and disabling some visual enhancements, though I feel no loss there and am experiencing a significantly reduced sense of loss.

Now I'm happy to be able to test on x64 virtual images using VMWare's Workstation, I'm afraid I may need to buy four 2GB sticks of RAM now. Despite the fact that the additional memory is available now, the larger footprint nearly wipes out the gain.

And that's without running any significant applications, except IE, which is quite a memory hog. I guess the old 640K upper limit days are over.

Yes, RAM is cheap. A quick check on Newegg.com and I found 8GB (4 x 2GB DDR2 800) for $174. I can't even buy three tanks of gas for my SUV for that.

Virtual PC 2007 vs VMWare Workstation 6.5

I'm getting ready to do some serious MOSS 2007 architecture and development work. In the past, I've used Virtual PC 2007 to host a virtual development environment running a Windows server operating system, SQL Server, MOSS and Visual Studio all running in the same virtual machine. And I've never been very happy with the performance of that virtual machine.

So today I decided to give VMWare a try and downloaded VMWare Workstation 6.5. I installed Windows Server 2008 Standard x86 (full install) on a new virtual machine with the same disk space and memory as I had allocated for the same operating system install using Virtual PC 2007. I gave both virtual machines 30GB of disk space and 1GB of RAM. I'm running on a Core 2 Duo 6600 on an ASUS P5B at factory default speed with 4GB of RAM with virtualization support enabled. Both virtual machines virtual drives live on the same drive.

The major advantage of VMWare is its ability to utilize both cores where Virtual PC is stuck with using just one. I'm sure there are additional reasons for the differences in performance. I used PerformanceTest 6.1 from PassMark. I'm sure there are other ways to test virtual machine performance, but this seemed to be a reasonable though unscientific approach. I made sure my machine was running the same processes and completely idle except for the virtual machine host application.

I only ran the tests that mattered to me: CPU, 2D, memory, and disk. I don't care about 3D and CD performance for the virtual machine. Here's the results:

vmware

test 1

test 2

avg

ratio

cpu: 326.6 344.4 335.5 2.2x
2D: 28.7 32.2 30.45 3.3x
Memory: 96.7 96.2 96.45 1.2x
Disk: 469.1 454.5 461.8 6.4x
Total: 921.1 927.3 924.2 2.9x
vpc 2007
cpu: 150.7 154.1 152.4
2D: 9.2 9.3 9.25
Memory: 83.3 83.2 83.25
Disk: 69.6 73.8 71.7
Total: 312.8 320.4 316.6
 

I was amazed to see that overall, the VMWare virtual machine ran 2.9 times faster than the Virtual PC machine. Even more amazing was the performance improvement of the 2D and disk tests, 3.3 and 6.4 times faster respectively.

I am now completely sold on the value of the VMWare Workstation license. The best price I found after a quick search was $161. For all the saved frustration in working with a slow virtual machine development image for MOSS, the product is well worth the price. But don't take my word for it, run your own tests if you don't believe me. Of course, if you aren't running a multicore machine, and what self respecting developer isn't, you probably won't see any improvement. On the other hand, if you have at least two cores, choosing save a few bucks seems to penny wise but pound foolish!

 

Some Things are True Whether They are True or Not

I get a lot of forward email from friends and relatives. I've never felt compelled to do anything with any of them until, bored this evening, I read this one from my father-in-law. I don't know if any of these stories are true or not, but whether they are or aren't, they are. In a time when America seems to be taking much criticism from within and without, it's good to have reminders like these.

When in England, at a fairly large conference, Colin Powell was asked by the Archbishop of Canterbury if our plans for Iraq were just an example of empire building by George Bush. He answered by saying, 'Over the years, the United States has sent many of its fine young men and women into great peril to fight for freedom beyond our borders. The only amount of land we have ever asked for in return is enough to bury those that did not return.'

There was a conference in France where a number of international engineers were taking part, including French and American. During a break, one of the French engineers came back into the room saying 'Have you heard the latest dumb stunt Bush has done? He has sent an aircraft carrier to Indonesia to help the tsunami victims. What does he intended to do, bomb them?' A Boeing engineer stood up and replied quietly. 'Our carriers have three hospitals on board that can treat several hundred people; they are nuclear powered and can supply emergency electrical power to shore facilities; they have three cafeterias with the capacity to feed 3,000 people three meals a day, they can produce several thousand gallons of fresh water from sea water each day, and they carry half a dozen helicopters for use in transporting victims and injured to and from their flight deck. We have eleven such ships, how many does FRANCE HAVE?'

A U.S. Navy Admiral was attending a naval conference that included Admirals from the U.S., English, Canadian, Australian and French Navies. At a cocktail reception, he found himself standing with a large group of Officers that included personnel from most of those countries. Everyone was chatting away in English as they sipped their drinks but a French admiral suddenly complained that, whereas Europeans learn many languages, Americans learn only English. He then asked, 'Why is it that we always have to speak English in these conferences rather than speaking French?' Without hesitating, the American Admiral replied "maybe it's because the Brits, Canadians, Aussies and Americans arranged it so you wouldn't have to speak German.'

An elderly American gentleman of 83, arrived in Paris by plane. At French Customs, he took a few minutes to locate his passport in his carry on. 'You have been to France before, monsieur?' the customs officer asked sarcastically. The man admitted that he had been to France previously. 'Then you should know enough to have your passport ready.' The American said, 'The last time I was here, I didn't have to show it. 'Impossible. Americans always have to show your passports on arrival in France !' The American senior gave the Frenchman a long hard look. Then he quietly explained, 'Well, when I came ashore at Omaha Beach on D-Day in 1944 to help liberate this country, I couldn't find a single Frenchmen to show a passport to.'

Seven Days Past the Layoff

A week after being laid off finds me wondering why I've neglected this blog. I'm currently experiencing the self recriminatory state one goes into at the end of the dead end street having recently passed the Dead End sign. Brake, execute the multi-point 180 and head back to find the turn you missed. And then realizing that the turn you missed should have been as obvious as the nose on your face.

My conscience tells me not to be too hard on myself. In one week I've had an interview or two. Have another scheduled for tomorrow. And one or two inquiries from other potential employers. Met with more than one recruiter and talked with several more. Polished the resume a bit more and started working the neglected network of friends and former coworkers--neglect as a result of me working from my home office with little real world interaction. Note to self: get out more and talk with humans face to face.

I've even taken more than one meeting from possible business partners with ideas that may or may not pan out, but I'm not taking anything off the table until I replace my mainstream income.

So if anyone needs a C# dev guy with some architecture leanings, grab my resume and give me a shout.

TylerJensen2008web.doc (47.5 KB)

Url Utils Helper Class May Be Helpful

Sometimes the odd helper class is useful. This one might even be a decent candidate for some .NET 3.5 extension methods. These URL utilities are quite self explanatory and by no means are a complete set of URL helper methods that would be useful, but who knows, they might have something you're looking for.

using System;
using System.Collections.Generic;
using System.Text;

namespace HelperCode
{
    internal static class UrlUtils
    {
        internal static string GetTldFromUrl(string url)
        {
            string tld = UrlUtils.GetHostFromUrl(url);
            if (tld != null && tld.Contains('.'))
            {
                string[] parts = tld.Split('.');
                if (parts.Length > 0)
                {
                    tld = parts[parts.Length - 1];
                }
            }
            return tld;
        }

        internal static string GetHostFromUrl(string url)
        {
            string retval = null;
            try
            {
                Uri uri = new Uri(url);
                retval = uri.Host.ToLower();
            }
            catch
            {
                retval = null;
            }
            return retval;
        }

        internal static string GetSchemeFromUrl(string url)
        {
            string retval = null;
            try
            {
                Uri uri = new Uri(url);
                retval = uri.Scheme.ToLower();
            }
            catch
            {
                retval = null;
            }
            return retval;
        }
    }
}

If you have a better way to do it, please, by all means, let us know. There are no doubt better ways. :)

Complexity is the Enemy of Success

Whether it be in code or business deals, complexity kills. If you're an architect and you love the elegance of endless inheritance where everything is a descendant of MyCoolRootObject or an venture capitalist trying to tie off every risk with carefully structured language that leaves a founder in the lurch and you in the driver's seat of the getaway car, you are the enemy of success. If you flout the team's style guild and name your class members with freaky names and patterns only you can recognize, you are an enemy of success. If you're a framework developer and you believe you have to add every possible toy feature in the universe to your framework, you are an enemy of success.

And enemies of success lose! Lovers of complexity may win a battle here or there, but the ash heap of history is full of them. Consider any number of technologies that have become so overbloated and difficult to work with that developers and architects look for simpler solutions. Examine the many thousands of failed startups killed by pencil pushing pinheads with no other agenda than to make the deal difficult in hopes of making it perfect, only to kill the deal with a stulted obsession with detail and gaining the advantage in every paragraph.

Simplicity is the key to success.

Process Magic Booch Style

I recently picked up Booch, Jacobsen and Rumbaugh's new book Object Oriented Analysis and Design with Applications. It's like the textbook I never had in the OO classes I never took. (Yeah, I'm just another self taught bozo who knows the difference between a five minute class exercise and a multiple month enterprise development project.)

Among others, I have especially enjoyed Chapter 6 called simply Process. Let me quote the opening paragraph and you'll know why.

"The amateur software engineer is always in search of magic, some sensational method or tool whose application promises to render software development trivial. It is the mark of the professional software engineer to know that no such panacea exists. Amateurs often want to follow cook-book steps; professionals know that such approches to development usually lead to inept design products, born of a progression of lies, and behind which developers can shield themselves from accepting responsibility for earlier misguided decisions." pg.247

There's more and the book is a treasure trove of wisdom, but when I read this paragraph, it was nice to feel as if I had met the estimeed Booch, Jacobsen and Rumbaugh definition of professional software engineer.

I do remember looking for magic bullets when I first started teaching myself how to do software development. Fortunately through long trial and error and even greater opportunities to learn from true professionals, I gave up on looking for magic solutions long ago. Since then my life has been easier and busier and much more rewarding with regard to software development.

To their credit, the authors in Chapter 6 review the strengths and weaknesses of both agile and more traditional plan driven (sometimes called waterfall) process approaches. They begin their thesis in this chapter in addressing the traits of a successful project. Now having this is true magic. Here they are:

  • "Existence of a strong architectural vision."
  • "Application of a well managed iterative and incremental development lifecycle."

The killer qualifiers in those two statements are: "strong" and "well managed." Yikes! These are qualifications that are difficult to come by. When you do, grab them up and hold on to them for dear life. I think most of us can agree that "weak" and "poorly managed" will result in disaster every time.