Sunday, December 25, 2011
CraigBlog is Back
Monday, December 19, 2011
ThinkRelevance: The Podcast, Episode 001
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
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 candera@wangdera.com 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.
Friday, December 24, 2010
2010 - The Year in Review
Forgive me, Internet, for I have sinned. It has been way too long since my last blog post. But I like to have an end-of-year post (here's last year's), so here at the end of 2010 seems an appropriate time to toss out something about what's been going on. This past year was ridiculously full, both from a personal and a professional standpoint. Any one of several of things that happened would have made the year notable.
For starters, we bought a new house and moved into it in June. I love the new place, but of course moving is always difficult, and months later we still have a significant amount of unpacking to do. By itself, moving would have been enough, but my wife and I seem to have a propensity for doubling (or tripling, or quadrupling) down. So at the same time we were moving, we did a major renovation of and rented out our old place, helped my wife's parents move, and took a cruise to Alaska. Right after that, my oldest daughter started Kindergarten, which was quite a shock to the daily routine.
Simultaneously with the move, I finished up at MSDN, having helped to ship VS2010. Having spent almost all of the last decade working in .NET, it made it a great time to make a major change. None of you who read this blog will be surprised that I wanted that change to involve doing Clojure. Clojure is a really interesting language, but also a very new one. We're seeing lots of growth right now, but of course it's a small market compared to what we hope it will be in a year or three. So I was fortunate that I was able to find some Clojure consulting work at Relevance.
Relevance is a fascinating place. Even aside from the opportunity to do Clojure on a daily basis, I find it to be truly different from anywhere else I've ever worked. They take Agile seriously and (IMO) do it right. And where they don't do it right, well, they have a process for changing the process. It quite literally took me weeks to get used to the pace at which they get stuff done: it is a high-intensity, hard-core, hacker (in the best sense of that word) culture where they also manage to keep doing the right thing by the customer a top priority.
Which is why I am pleased to announce that I will be starting there as a full-time employee on January 3rd. See, I told you that 2010 was a big year: among all the other stuff, it also marks the end of an eleven-year span of being an independent consultant. It was a great run, but I'm genuinely excited about the opportunity to work at Relevance in a full-time capacity. I simply could not pass up the chance to participate in the unique combination of culture, technology, and people. And the people include, of course, my good friend Tim Ewald, who started at Relevance last month. This marks the fourth time we have worked together at one company or another, but the first time we've ever both been employees at the same time.
So 2010 was a year of big changes for me and my family, almost all of them good. What will 2011 bring? I have no idea, but I'm going into it in a pretty good mood. :)
Saturday, September 25, 2010
An Updated Nerd’s Halloween
[Update: corrected a minor typo. Also, I find it heartening that Peter is 70% of the way to his donation goal. Thanks to those that contributed.]
I don’t blog much any more. Partly that’s just blog fatigue (I started in 2003), and partly that’s having two little kids (one of whom just started Kindergarten), a new gig (at Relevance! Doing Clojure!), and having just moved to a new house. But I came across something that’s a pretty interesting, and a bit too long to do full justice to on my Twitter account.
Once upon a time, in a small way, I helped a guy make an awesome Halloween. He emailed me the other day to let me know about his latest project, which is even crazier and more amazing. Check out the picture of what he’s going to try to do:
But he needs some help raising funds. In his own words:
Craig,
It's me again, the guy who likes Halloween more than most humans! This was the post you did on your blog:
If you don't remember me [Ed: how could I forget?!], check out the quoted material at the bottom of this email. I noticed that you're not blogging much lately, but you are using Twitter. I was hoping you could blog and/or tweet about a project I'm trying to do this year. I'm trying to get the word out about my fund raising efforts to build this giant steampunk drilling machine prop (see attached photo) for Halloween this year. Someone who had emailed me on my site (www.SoCalHalloween.com ) a couple of years ago created this entry on his blog:
http://superpunch.blogspot.com/2010/09/help-fund-building-of-giant-steampunk.html
A plug on your blog (or a tweet) would really help.
I'm using a site called "Kickstarter", which is designed to help do fund raising for any sort of creative project, using Amazon for payments. The rules are really simple: If you make or exceed your funding goal by the specified deadline, you get the money. If you don't make the goal, you get nothing. In my case, my deadline is October 14, so there are 21 days to raise the money. Also, people get gifts to thank them for pitching in. Any amount is helpful. $10? Sounds great. $20? Even better. $50? Say, you *do* care!
Please go to my Kickstarter page for Halloween 2010 to get more information, see how the fund raising works, and (hopefully) donate if you're so inclined: http://www.kickstarter.com/projects/1163328321/halloween-2010-journey-from-the-center-of-the-eartIf there are any problems with line wrapping, here's a shortened URL that will take you to the same page: http://tinyurl.com/2879mqk
I have also modified the main page of the SoCalHalloween website to carry the video, a link to the Kickstarter page, and some pictures. It also has all the rest of the video and pictures that are always available: http://www.socalhalloween.com
So if, like I do, you think this is a really great idea, consider helping Peter out with a few bucks. Thanks!