I’ve been having a bit of an odd experience with some backup software that came with an external hard drive I bought for the purpose. The software in question is Dantz (now EMC) Retrospect Express 6.5, which I’d have to recommend as a great solution for personal data or small networks. Except a couple of days ago, I’d have greeted its mention with a hollow laugh.

It was easy to blame Retrospect.

The problem started a couple of months ago after a hard drive crash (my second this year – I’m starting to feel cursed). I meticulously reinstalled XP and restored data from backups. I prefer not to “ghost” system disks as I regard XP reinstalls as an opportunity for spring cleaning which should not be missed.

When I started to use Retrospect for incremental backups as normal, I discovered the problem. The external drive to which I was backing up would grind and grind for days (yes, days) before finally starting the backup process. You couldn’t kill the Retrospect process, either (not even with taskkill /im retrospect.exe /f. The only way to halt the interminable vibration transmitted through my desk to my mouse hand was to wrench the USB plug from the drive. Backups progressing from scratch worked normally, so my only workaround was to simply back up everything in my list of folders which I must not lose. This inevitably led to a decrease in the frequency of my backups (daily became weekly, excepting my source control database which is small relative to everything else and while slow, could easily complete in under half an hour).

I’d been researching this problem for two hours of every week since the crash, and I’d been getting nowhere. Today I started to get a “bad block” warning from a second machine accompanied by a wonderful scratchy samba beat in sync with the drive light. Uh-oh, I thought. Impending hard drive death (It’s like a sixth sense now). I couldn’t put it off any longer – I simply had to fix the problem.

But where to start? Try putting together a Google search for “my backup never finishes using Dantz (now EMC) Retrospect 6.5 on an external USB drive and I’m about to embed one of my extremities into a solid object” and you’ll be sifting through results until Jeff Atwood writes a boring blog post. It’s easy to Google hard errors like “Windows Delayed Write Failed” – just put the wording in quotes and review the possibilities. It’s less easy when a piece of software just sits there quietly shortening the service life of one of your USB devices. I have a small cache of words I trot out for Google to consume in these situations: “(hangs OR crashes OR freezes)” for simple lockups and “(grinds OR thrashes)” for hard drive activity.

In the end, when you’ve been using these kinds of search combinations for weeks with no luck, you resort to brute force searching. And this is what I did, trawling the Dantz/EMC support forums post by post. By about page 18 of posts I had an answer, and the blame wasn’t going in the expected direction.

System Restore. Great, isn’t it? Sits there, quietly monitoring everything, making sure nothing untoward can happen to your system. Including untoward things like backups, it seems. This is why even taskkill didn’t work – it seems to be MS-process aware when it comes to System Restore. This is why I’ve been risking the life of my external HD by pulling the cable out, because you couldn’t even log out or shut down. System Restore is only good on system drives. Yet by default, XP monitors every “fixed” drive you have in your system (I know, I know, I’d been sticking it out with 2000 until late last year). Why should this be the case? Why can’t XP ask you for each drive you install a program on instead of assuming that big dumpster full of ISOs, RARs and RBFs you’ve got hanging off your USB bus needs watching like a hawk?

So in a backup situation to an external drive, System Restore is the last thing you want turned on. Right-click My Computer, hit Properties/System Restore, and turn it off on a per-drive basis – which in my experience means any drive you don’t add/remove programs to/from with Windows Installer.

I’m happy to say Retrospect is right back up there in my estimation. And MS’s position in my estimation hasn’t changed a great deal.

Håkon Wium Lie, the original proposer of CSS, answers questions from Slashdotters about the origins of the language, why it’s not progressing as fast as web designers would like, and why he lies about the pronunciation of his first name.

If you have even a passing interest in CSS, this is a good read. Of particular interest is the answer to the question:

> by Dolda2000

> If you were allowed (perhaps by court order, which wouldn’t be
> unthinkable) to force Microsoft to do one (1) change in Internet
> Explorer, what would that be?
I would force them to support one (1) single web page before shipping IE7, namely Acid2. By using a tiny amount of resources to get Acid2 right, Microsoft can save web designers and users endless amounts of frustration in the future. It would also be an honorable thing to do.

However, in answer to another question further down, he tells us why this dream scenario will never happen:

It’s quite clear that Microsoft has the resources and talent to support CSS2 fully in IE and that plenty of people have reminded them why this is important. So, why don’t they do it? The fundamental reason, I believe, is that standards don’t benefit monopolists. Accepted, well-functioning, standards lower the barrier of entry to a market, and is therefore a threat to a monopolist.

From that perspective, it makes sense to leave CSS2 half-implemented. You can claim support (and many journalists will believe you), and you also ensure that no-one can use the unimplemented (or worse: buggily implemented) features of the standard. The only way to change the equation is to remind Microsoft how embarrassing it is to offer a sub-standard browser. And to use better browsers.

So there you have it. IE7 might help a little – and frankly it would be a relief just to be able to use the years-old child and attribute selectors, even if we have to wait a few more years before IE7’s penetration is such before it’s safe – but IE as a browser is going to drag its feet because MS doesn’t want the web to compete with Windows as a platform. So we as web developers must continue to use ASP.NET 2.0 with Firefox, Firebug, the Web Developer Toolbar, CSSVista, and all the other nifty little tools which are growing into the space which MS steadfastly refuses to occupy. And all the while, we must embarrass MS into some semblance of standards compliance.

Just think about for a moment though – as an ASP.NET web developer, wouldn’t you love to be able to ditch the “code for Firefox, fix for IE” mentality, and have a fully integrated AJAX IDE where you could debug your JavaScript in an integrated manner in Visual Studio and not have to worry about a separate browser for CSS? Wouldn’t it be nice if Visual Studio was your CSS IDE and you could see your changes live and be certain that your layout would render the same in any browser?

Jon Skeet has a nice (and long) response to Eric Gunnerson’s call for programmers to write their own “7 Deadly Sins of Programming”. Really my post here is just an extended “oh, certainly, yes” nod to Jon’s #7 Deadly Sin:

Some of the worst Java code I’ve seen has come from C++ developers who then learned Java. This code typically brings idioms of C/C++ such as tests like if (0==x) (which is safer than if (x==0) in C as missing out an equals sign would just cause an accidental assignement rather than a compiler error. Similarly, Java code which assumes that double and Double mean the same thing (as they do in C#) can end up behaving contrary to expectations.

I know I’ve picked up habits from ten years of Delphi. The one that took longest to go away (and I still do it if I’m not mindful – even after four years) is my (ex-!) habit of prefixing argument names that collide with a class property name with an A, for example void Foo(string aMyProperty) { MyProperty = aMyProperty; } instead of
void Foo(string MyProperty) { this.MyProperty = MyProperty; }. Even though Delphi could disambiguate by using ‘Self’ where I used ‘this’, the VCL used the ‘A’ convention, so I did too.

I still speak with an accent whenever I’m evaluating a new language. However, if I know I’ll be sticking with a particular language I’ll seek out the way of doing things that doesn’t make me look like a badly dressed tourist with a tatty phrasebook.

Microsoft have finally done the decent thing and released the Consolas font as a standalone download. I’ve been using it for a few months snaffled from a Vista beta and it’s far and away the nicest programming font I’ve ever used (even beating my previous favourite, ProFont).

Consolas in action

Caveat: requires ClearENGINE in order not to look like badly designed Tetris pieces, which means whenever I have to use Windows 2000 (not often these days) I fall back to ProFont.

Also, if you don’t like it there are a list of good fonts here.

© 2014 ZephyrBlog Suffusion theme by Sayontan Sinha