media comments edit

After doing that Hanselminutes on network attached storage, Synology, and Windows Home Server, I figured I’d also talk about how we store our original media, in case folks were wondering.

As of this writing, we have somewhere close to 1000 individual DVD discs in various forms - single or multi-disc movies, multi-disc TV sets, etc. - and about as many CDs. Not all of the DVDs are on my Synology DS1010+ - I didn’t rip the “special features” discs, and in some cases where I have multiple editions of the same movie, I only ripped the one we like the most. That puts 890 DVD images in VIDEO_TS format on the DS1010+. All of the music is on the Windows Home Server in iTunes, but not in a consistent format - some is 256k MP3, some is 320k AAC, some is Apple Lossless. Lately I prefer Apple Lossless since it doubles as a backup copy of the music, but I haven’t gone through and re-ripped everything.

With all that media, how do we store it?

Basically, we gave up on keeping everything in the original cases because it’s just too much volume.

The CDs are in threeOdyssey CD storage cases, each of which holds 400 discs in thin “DiscKeeper” sleeves. I have them in alphabetical order by artist, except when it’s a compilation or soundtrack album, in which case it’s in there by title. I made small “dividers” by running some lettered file folders through a paper cutter.

Odyssey CD storage cases - click to
enlarge.

The DiscKeeper sleeves are extremely thin, which is good, because each box is packed pretty tight.

DiscKeeper sleeve with a CD in it - click to
enlarge.

For the movie DVDs, I’m using MSDN binders, but they’re basically like standard Case Logic CD binders that have individual CD-holding pages. I actually use the Case Logic pages in the binders, I just happen to have the MSDN binders available to me.

MSDN binders hold DVD movies - click to
enlarge.

Each page holds two movies, and each binder is pretty full.

DVDs in the MSDN binders - click to
enlarge.

I keep all of the original inserts to the movie DVDs in a box, and the cover art is in an expandable envelope, alphabetized by movie title. If the movie came in a special keep case or printed box, that’s stored in a giant tub in the attic; if it was just one of the standard plastic clamshell cases, it gets recycled.

The binders are just for movie DVDs. TV DVD sets are on a set of bookshelves, alphabetized by title.

TV DVDs on bookshelves - click to
enlarge.

We considered putting the TV DVDs in binders, too, but we liked being able to look at the discs like a library. Honestly, if I had a ton more space, I’d like to have all the discs out like a library so you could browse them, but we don’t have that sort of space.

We have very few Blu-ray titles right now, but those are on a different bookshelf. If we get too many more, I may switch them to binders as well.

Anyway, with all these discs, you can see how picking through binders to grab discs to watch or whatever would be sort of a pain, and if you wanted to browse for a movie, it’d be a similar pain. That’s why I ended up with my media center - so we could, basically, have our own “internal Netflix” with all the movies we own, on demand right there.

To keep track of our inventory (and to have a list for insurance purposes), I use DVD Profiler to track my video discs and Collectorz.com Music Collector to track audio discs. I’ll save details/evaluation on those packages for a different post, but if you’re looking for catalog programs, I recommend both of those.

UPDATE: For my Blu-ray discs, I’m using DiscSox HiDef Pro sleeves.

personal comments edit

Bigtrak. I had one of these when I was a kid, but I’m not sure where it went.

The idea is that you have this little tank-like rover that you can give instructions to and have it drive around.

Bigtrak Jr Programmable
Rover

The way you give it instructions is via a sort of abbreviated Logo programming language: You can tell it to move forward, backward, or turn; tell it to “fire its laser” (flash an LED and make sounds); pause; or repeat a set of commands.

What’s cool about this is that you give it to a kid and let them loose with it… and it basically teaches them simple programming. They won’t even know what hit ‘em. “Get the Bigtrak to go around the corner, shoot three times, turn around, and drive back.” BAM! You just learned a little programming.

The one I had as a kid was sort of a behemoth. The new version is “Bigtrak Jr.” and is a more manageable size.

They have these things over at ThinkGeek. I picked one up and got a couple of guys at work hooked, too. My daughter’s not old enough for this yet, but… I’ll keep it handy for her. They’re normally $40 but right now (as I write this) they’re on sale for $25. If you’re looking for a pretty cool gift for a kid that will teach them something, I totally recommend picking one of these up. They’re pretty sweet.

home comments edit

A few weeks back we had a rock [somehow/magically] hit the frame of the screen door that sits in front of our sliding glass back door. It tweaked the frame enough that we had to get a new screen door. After a trip to Lowe’s this weekend, I learned more than enough about screen doors. I figured I’d impart the knowledge, maybe save you a trip.

Make sure you actually need a screen door. If the screen is ripped, you can just replace the screen. New screen and spline (the cord-like stuff that holds the screen in) and maybe a spline tool (the tool to push the cord in between the screen and the frame) will run you less than $20. It’s not a five-minute repair job, but it’s not too bad and will save you some money. In our case, the frame of the door was messed up, so we actually needed a new door.

Take precise measurements of your door. Get the height, width, and depth. You’ll want a door that matches all three measurements and the store may or may not actually have them in stock.

Look at what kind of track the door sits in. Your screen door (and sliding glass door) are held in by a track. What’s that made out of? It’ll either be metal or vinyl. This is important because…

Universal screen doors only work in metal tracks. I learned this the hard way and had it confirmed by the guys in the door department at Lowe’s. You might find a door that is the proper height and width (I did) but when you try to put it into the track you’ll find it’s just a little too thick to properly sit in there. There went $45 and now I have a “spare” door in my garage that I can’t use.

For doors in vinyl tracks, you’ll probably have to custom order. It’d be awesome if there were universal doors that fit in vinyl tracks, but since there don’t seem to be, you’ll have to go into the store and see if one of the three or four models in stock will fit. Don’t buy a door that almost fits - you want a door with the exact same measurements as the ones you took. You can custom order a door if there isn’t one in stock. It will be more expensive than the universal door you wish would fit in the track. The one we ended up with was almost double the price, but it’s also a more sturdy frame. The “basic model” was still about 50% more than the universal door.

Doors come preassembled. This sounds like a dumb thing to mention, but if you don’t have a car/truck that can fit a full-sized door in back, you’ll need to arrange one. I always sort of thought screen doors would come in “kits” the way some picture frames do, so you can take the kit home and assemble it. A kit would have fit in the back of my car. Full size door, not so much.

My new door will be here in a couple of weeks. Looking forward to getting that installed.

dotnet, process comments edit

I was watching some Twitter stream by and caught a bit of a discussion asking about why people haven’t moved to xUnit.net yet for unit testing. It started here

Legitimate, good question. xUnit is a nice unit test framework.

The thing is, I see a lot of these things fly past - Why haven’t you updated to ASP.NET MVC3? Why haven’t you switched your project to .NET 4.0 from .NET 3.5? How come you’re not installing every third-party dependency in your project through NuGet now? What? You’re still on jQuery 1.5.2? But 1.6 is out! You’re still using Rhino Mocks? But Moq is totally the way to go now! Why aren’t you on the latest and greatest framework?

There’s no denying that there are some pretty compelling reasons to do technology upgrades. Easier and cheaper feature implementation is usually a pretty key driver. But I think some of the folks that push for staying on the latest and greatest sometimes forget some of the hidden costs of staying on that cutting edge. (Not that I’m saying @lazycoder, above, is one of these; that’s just a tweet that got me thinking.)

Upgrade costs. Using the xUnit.net example above, I have to question what the upgrade cost would be to convert 4000+ unit tests in NUnit to xUnit.net. Is it worth it? Probably not. So then you might say, “Oh, then only use the latest and greatest in new projects rather than existing projects.” I’m not sure where you work, but in companies with long-established product lines, my experience tells me that there’s not as much opportunity for new project work as there is in “adding features to existing projects.” So when you add features do you do it with the existing toolset or do you try to introduce a new tool/dependency at that time?

Too many ways to do the same thing. Continuing that thought - if you add a new dependency into the mix when you add a new feature in an existing product, you invariably introduce a new way to do the same thing. That is, say you switch from Moq to Typemock Isolator or something. You’ll be writing mocks in some tests one way and in some tests another. How do people know which way to go? You might laugh at that question, but if you’re on a large distributed team of varying skill levels, you can’t really have people “making it up as they go” because, while it may be “intuitive” to some, there are others who will “guess wrong.” To minimize the guesswork, you need to have some [minimal] development standards. Ever try to add an “if/then/else” to development standards? How’d that work out for you? (I’m not saying code should be rubber-stamped out or that you need guidelines for everything you do… just that diverse styles and skill levels become a larger issue the larger/more distributed your team gets and you can run into maintainability issues pretty quickly if people don’t at least have some sort of basic standard and common approach to things.)

Training costs. It’s really easy to say “people just need to raise their personal bars” when throwing a new version of a framework or tool into the mix, but the truth is, some folks adapt faster than others. If your team is reasonably small, you can probably get away with this a little easier than if, say, you have a 40+ team of engineers of all skill levels jamming on the same code base. There are going to be some road bumps unless you do a little training, which isn’t free, even if you do it in-house during lunchtime seminars or whatever. Not everyone out there is reading tech blogs daily, working on personal projects, and trying to “sharpen the saw” at every opportunity. I think this fact is pretty easily forgotten by people who have the luxury of staying up to date.

Other dependencies. In some cases, you have two dependencies in your product that also rely on each other. For example, if you want to integrate NUnit into TeamCity build reporting, the TeamCity build agent needs to have a compatible NUnit test runner (or you need to do some manual hackery for less than perfect integration). You may have every opportunity to update your code to the latest NUnit, but that other dependency requires you to stay back a version or two. That also may limit your choices of tools - if I have to take a component that only works if I use log4net for logging (arbitrary example), then I’m sort of stuck with log4net even if I want to use Enterprise Library logging.

Corporate policy. In large enough organizations you inevitably get some sort of review board that approves (or rejects) dependencies based on various policies/analyses - security, legal, or what-have-you. That, too, can limit your options.

Customer acceptance. Depending on your customer base, some customers don’t actually want to be on the latest and greatest. They want “tried and true.” The government and financial institutions come to mind here. Maybe you can’t upgrade to .NET 4.0 until SP1 comes out for it or something. Point being, your customers may not allow you to upgrade even if you want to.

I love working on the latest stuff. It keeps me interested. It keeps me learning. I encourage you to do the same. But I understand if your project is still stuck in .NET 2.0 in Visual Studio 2005 because sometimes there are really good reasons you can’t upgrade. Keep looking for opportunities to move forward. You’ll get there.

I recently had the opportunity to chat with Scott Hanselman about our experiences with Synology DiskStation products and Windows Home Server. Looks like the podcast is up now so go check that out if you haven’t already.

If you’re coming in here after having listened to the podcast, here are some links to related blog entries you may be interested in:

Also, if you’re a regular Hanselminutes listener, your trivia for the day (which we touch on in the podcast): The original definition of Hanselminutes.

Finally, thanks again to Scott for having me on the show. A good time was had by all.