Sunday, December 25, 2011

CraigBlog is Back

Well, it was painful, but I appear to have gotten the ol' blog back on the air, including all my old posts going back to 2003, and something like 90% of all comments. The formatting has not survived the trip intact, but everything I've looked at has been at least readable. Here's hoping that my new home is the last one I'll have for a long, long time.

Monday, December 19, 2011

ThinkRelevance: The Podcast, Episode 001

I recently had a chance to sit down with Justin Gehtland, CEO of Relevance, Inc. to talk about everything from how Relevance got started to why Relevance is a B Corporation.

Check it out at our company blog.

And yes, I'm still working on getting all the content from my old blog moved over here. I haven't hit any blockers yet, and have been making good progress.

Tuesday, December 13, 2011

Interim Post

Unfortunately, my old blog has rather unexpectedly gone off the air. I have all the old posts, and I'm scrambling to get them moved here, but it's going to be a little while before I can complete that process.

Sorry about that.

Update: I managed to get everything moved over. Links should be working, but if you're looking at this post, the chances are that the one you followed didn't. Might I suggest you search for it, including the term "CraigBlog"? The search engines should have indexed everything in its new location by now.

If all else fails and you can't find something, feel free to email me at and I'll dig up whatever it is you're looking for. Thanks, and sorry again!

Monday, July 25, 2011

Announcing ShadowSpawn

One of the great things about working at Relevance is having every Friday to work on non-client work. I've been spending mine on various open-source projects, like Artifact and a core.logic port of The Reasoned Schemer. But I haven't forgotten my Windows roots entirely. One of the things I've been trying to do is to continue to improve hobocopy, the open-source backup tool I wrote that can copy in-use files. I initially released it about five years ago, and in that time it has been downloaded something like 100,000 times. In the half year since I re-launched it on github, it has been downloaded around 15,000 times. So clearly, people are using it, and this is a reasonably successful open source project. 

But as the project has picked up steam again I've noticed that the things people want tend to fall into two categories: 1) fixes for mysterious issues with the Volume Shadow Service that I can't do much about, and 2) feature requests around the copying part of hobocopy. I'm sort of stuck on #1, but on #2 I could actually roll up my sleeves and implement copying of streams, or correctly enabling the SE_BACKUP privilege, or any one of the myriad other things that go into correctly copying a file from point A to point B; it's a surprising complex problem. 

Or I could cheat. 

For a long time now, I've been contemplating an alternate approach. Rather than have a piece of software that would make a shadow copy of a volume and then make copies out of it, I thought it would be handy to have a piece of software that would simply make a shadow copy, temporarily make it available on some drive letter, and then run an arbitrary command [1].  If that arbitrary command happens to be Robocopy, then you've got all the advanced copying ability you could ever want. But you could just as easily use notepad if all you wanted to do was look at a file that was locked. 

Thus was born ShadowSpawn. I worked with the ever-excellent Kim Wolk, and this last Friday we got everything to the point where it works reasonably well. We've slapped a 0.1.0 version label on it and made it available for download. I'm not using it in my nightly backups at home yet, the way I do with hobocopy (I plan to make the switch soon), so consider it to be beta: we expect issues, but it should generally work.

Here's a simple example of how to use it: 

shadowspawn C:\some\directory Q: robocopy Q: D:\some\other\directory

That would snapshot your C: drive, mount the snapshotted version of C:\some\directory at Q:, run the robocopy command against it, and remove the Q: mapping when robocopy finished. More details are available at the website.

Anyway, we hope you find it useful. Feel free to ask for help on the mailing list, or to make a feature request or bug report on the issue tracker.

[1] Indeed, a tool called VShadow lets you do exactly that, albeit in a slightly different way. But I had additional reasons for wanting to take on this project. 

Friday, January 28, 2011

Hobocopy Lives!


It’s hard to believe it has already been almost over four years since I wrote
a little tool called hobocopy. The name was a pun on the truly-awesome robocopy, which does a great
many things and is a truly useful tool. Hobocopy doesn’t do a tenth what
robocopy does, but it does do one thing that robocopy can’t:
copy files that are currently in use. It does that by using the Volume Shadow
Service, which is the same facility Windows uses to create Restore Points. You
can read more about hobocopy here
and here.

I worked on hobocopy for a while, but as often happens, I got pulled onto
other things. I tried to see if someone else would pick up the torch, but was
unable to find anyone. Still, at least some people were able to get some use out
of it: there have been something like 100,000 downloads from SourceForge as of
this writing, and I get regular but infrequent questions about its use. So I
felt bad that I had let development languish.

Well, now I work for Relevance, and
they have a
very progressive policy on open source work
. Of course I have far more
projects I want to tackle than I could do in a decade of Fridays, but still, I
figured that hobocopy deserves some love. So I’ve been spending a bit of time on
it lately. I've created the hobocopy Google group, and I've moved the code to its
new home on GitHub

As you might imagine, there’s still a lot to do, but I’ll be
chipping away at it as I’m able to. Help of any sort (including bug reports!)
is, of course, welcome.