George V. Reilly's Technical Blog

November 2008 - Posts

#1 Technical Blog, revisited
#1 Technical Blog on Google, revisited

A week ago, I said that my technical blog somehow comes up as #1 technical blog on Google.

Several people pointed out that in my screenshot, I was logged in to Google. As you can see if you click on this screenshot, I can reproduce this result even when I'm not signed in.

I'm still confounded by that ranking. My content is good, but largely unremarkable—though I'm unduly fond of A Use for Octal; my style is understated; my traffic is uncongested; and my top billing is undeserved.

But none of the technical blogs listed on that first page are of the first order, except Mark Russinovich's.

If I thought it made sense, I'd be flattered. Alas, I cannot make it so.

Hardware Lazarus
Maxtor OneTouch III disassembly

My formerly trusty Casio Exilim EX-Z1000 camera went berserk one night in September. The zoom lens wedged open and nothing I did would persuade it to retract into the case or take more photos. The zoom had grown a little tempermental in the preceding month, but I didn't expect catastrophic failure.

The other hardware failure was far more upsetting.

From Christmas until August, I ripped most of our CD collection with Exact Audio Copy to FLAC (Free Lossless Audio Codec). Since FLAC is lossless and open source, I figured I'd never need to rip the CDs again. I also wrote a Python script to convert the FLACs to MP3s with LAME, since MP3s are far smaller and all players handle MP3s. I stored the FLACs on a Maxtor OneTouch III drive, twin 750GB SATA drives configured as NTFS on mirrored RAID 1.

A few minutes changing CDs here and there; a few more minutes entering album metadata into Readerware AW. Over the months, it really added up: 775 albums, 250 GB of FLACs, 45GB of MP3s. The MP3s were replicated on several machines, but the FLACs and the Readerware AW database were stored only on the OneTouch's mirrored drives. This drive became my primary backup solution. When I had copied the latest data to it, I'd power it down and store it in the fire safe.

You can guess what's coming next. The OneTouch stopped working one day. Refused to do a damn thing on any machine that I connected it to. I was very unhappy.

I was going to return it to Maxtor, until I read the fine print. They'd replace it, but they'd send me back different drives and would make no attempt to get the data off the old drives.

Well, that was completely unacceptable! I found the Maxtor OneTouch III disassembly guide online, but didn't get around to doing anything about it until tonight. I bought two 3.5" external enclosures at Fry's yesterday. A couple of hours ago, I voided the warranty by prising the case off, extracting the drives, and putting them into the enclosures.

They worked! Both of them appear to be fine and the data is accessible. Until tonight, I wasn't completely sure that I would be able to get the data off the disks even if they were okay. I had visions of having to extract sectors and rebuild the files by hand.

Presumably it's the RAID controller or something else in the Maxtor case that died. I'm going to throw that piece of crap away. One of the drives is undergoing a full chkdsk; the other will get the same treatment tomorrow.

Not only that, but I also plugged the camera in for the first time since it had died. The battery had completely drained and I had to reset the clock. And now it's decided to work too. I'm not sure that I trust it, but should it die again, it's no great loss.

Posted: Nov 18 2008, 01:21 AM by george_v_reilly | with no comments
Filed under:
#1 Technical Blog
#1 Technical Blog on Google

A friend whom I haven't heard from in a few years googled for technical blog this evening, and my technical blog somehow came up as the very first hit!

I have no idea how I achieved such high page rank, nor how I eclipsed Mark Russinovich.

Distributed Version Control Systems on Windows
Distributed/Decentralized Version Control Systems

At work, I've been experimenting with the big three Distributed Version Control Systems, Git, Mercurial, and Bazaar, on Windows over the last ten days.

Pavel and Eric have been singing the praises of Git and git-svn on their Mac and Linux boxes respectively for the last few months. Git allows them to check in small changes locally without perturbing the build. The ease of branching and merging allows them to work in more than one branch at a time at a lower cost than Subversion did. Most of our dev team continue to work in Subversion on Windows boxes. git-svn allows Pavel and Eric to easily interoperate with the Subversion server. Pavel is also a big fan of git-stash: he stacks away in-progress work and switches easily to other patches.

Although I've worked primarily in Python on Linux since the summer, I've been working on our forthcoming mobile client recently. It's ASP.NET-based, hence I'm working on Windows again. I'm in the throes of a major refactoring, extracting the mobile client out of the main webclient and hoisting other code into shared projects, while other developers continue to work on the main webclient and the mobile client.

This seemed like a perfect opportunity to bite the DVCS bullet, since I knew that branching and merging would be less painful with git-svn than with Subversion.

Getting git-svn working on Windows turned out to be a major headache. The Cygwin version of git-svn simply doesn't work for me. And msysGit doesn't currently support git-svn. (Eric has had some success with an older version of msysGit and git-svn, but I found it to be wretchedly slow.) Moreover, Git's integration with Windows is poor. There's nothing like TortoiseSVN to ease developers into using Git.

Having written off Git on Windows for now, it was time to try Bazaar (bzr), which has its own Subversion plugin, bzr-svn. The version of bzr-svn that was available for Windows the week before last was ancient, and promptly crashed. Jelmer, the developer, mailed me yesterday to say that there should be an up-to-date copy of bzr-svn in the brand new 1.9 release of Bazaar. I'll try it at work tomorrow. Windows doesn't seem like an afterthought for Bazaar; indeed, TortoiseBzr offers Explorer integration.

On to Mercurial (hg). Alas, this has the weakest integration with Subversion. There are instructions for doing it by hand (which is what I'm doing). The hgsubversion extension looks promising, but is still immature.

Even so, Mercurial is what I've ended up using for the last week. Partly because it didn't bite me. Partly because I like it best of the three. The Mercurial book takes much of the credit for that. Windows is a first-class client and TortoiseHg offers half-way decent Explorer integration.

I'm not impressed with Git as software engineering; it strikes me as an incoherent mess of C and Perl. The attitude of superiority from some Git proponents is off-putting. I watched Linus Torvalds' Google techtalk about Git on Friday; he came across as a major jerk, repeatedly calling anyone who uses Subversion an idiot. I'd still recommend watching the video: it gives good insight into the social aspects of distributed/decentralized VCSes, how very different they are from traditional centralized VCSes, and how they afford a different way of working.

Watching my compatriot Bryan O'Sullivan's Google techtalk on Mercurial this afternoon was a far more pleasant experience. He talks more about workflow and implementation.

Both Bazaar and Mercurial are written in Python and seem to be fairly well architected. Frankly, if I do have to get my hands dirty in the code (e.g., hgsubversion), I'd much rather hack in Python. I did C/C++ for fifteen years and I'm sick of unmanaged code.

Anyway, Mercurial is where I'm going for now, though I won't categorically rule out Bazaar or Git.

More Posts