net, vs comments edit

CodeRush (and Refactor! Pro) from DevExpress are my Visual Studio add-ins of choice. They’re based on the “DXCore” engine, which makes writing your own Visual Studio add-ins a breeze.

DevExpress has released a free version of their CodeRush tool called “CodeRush Xpress” for users of Visual Studio

  1. It includes 60+ refactorings as well as a host of additional helpful functionality. If you have not treated yourself to trying these amazing tools, this is a great way to give it a run - huge value, no cost to you.

Once you fall in love with it, check out other plugins that are available - also free - like CR_Documentor and the DXCore Community Plugins.

I’m working on getting my Windows Media Center to play my iTunes files (by installing codecs and tag readers) and one of the things I’m doing is setting the album artist on all of the tracks because that’s something Windows Media Center needs set to get album art properly. While doing it, I found there were basically two classes of track that didn’t already have the album artist tag set - those that fell into “Various Artists” (like soundtracks and such) and those where the artist should also be set as the album artist.

To make it easy and less tedious, I wrote a script to set the album artist field to the artist. I figured I’d pass it along for other folks to use at their own risk. No promises this won’t corrupt your library or anything. Keep backups.

First, make sure you’ve set all of the tracks that are “Various Artists” as such. This script doesn’t take care of that for you. It’s not smart, it just sets “artist = album artist” for tracks missing album artist. Once you’ve taken care of all of your “Various Artists” tracks, run this script:

    var ITTrackKindFile  = 1;
    var iTunesApp = WScript.CreateObject("iTunes.Application");
    var numTracksWithoutAlbumArtist = 0;
    var mainLibrary = iTunesApp.LibraryPlaylist;
    var tracks = mainLibrary.Tracks;
    var numTracks = tracks.Count;
    var foundTracks = new Array();

    WScript.Echo("Checking " + numTracks + " tracks for missing album artist...");
    while (numTracks != 0)
    {
      var  currTrack = tracks.Item(numTracks);

      if (currTrack.Kind == ITTrackKindFile && !currTrack.Podcast)
      {
        if(currTrack.AlbumArtist == null || currTrack.AlbumArtist.length == 0)
        {
          numTracksWithoutAlbumArtist++;
          foundTracks.push(currTrack);
        }
      }

      numTracks--;
      if(numTracks % 1000 == 0)
      {
        WScript.Echo(numTracks + " tracks left to check...");
      }
    }

    if (numTracksWithoutAlbumArtist > 0)
    {
      WScript.Echo("Found " + numTracksWithoutAlbumArtist + " tracks missing album artist. Creating playlist and updating artists...");

      var playList = iTunesApp.CreatePlaylist("Fixed Album Artists");
      for(var trackIndex in foundTracks)
      {
        var currTrack = foundTracks[trackIndex];
        currTrack.AlbumArtist = currTrack.Artist;
        playList.AddTrack(currTrack);
      }
      WScript.Echo("Playlist created.");
    }
    else
    {
      WScript.Echo("No tracks missing album artist were found.");
    }

What it does is:

  • Iterate through all of the tracks in your library and find the ones that aren’t Podcasts that have no album artist.
  • Creates a playlist.
  • Sets the artist as the album artist on the tracks it found.
  • Adds those tracks to the playlist so you know which tracks were updated.

In the event it does something wrong, you can always select all the tracks in the created playlist and set the album artist back to empty.

Again, YMMV, use at your own risk… but it worked great for me.

media, movies comments edit

Yesterday I finally finished ripping all of the DVDs I own to date. I didn’t rip discs with only special features on them and I skipped a few that I didn’t think we’d be watching again.

All told, I have 770 VIDEO_TS folders taking up 4.91TB of space on my Windows Home Server. That’s about 6.7GB per disc image.

If you want to know more about my Media Center solution - what I was trying to accomplish, why I chose VIDEO_TS instead of MPEG or some other compressed format, etc. - check out the overview of my Media Center solution.

I’ve been reading documents here and there recently and have run up against something that seems to be confusing to some authors: when and how to use bullet point lists.

For those who are unaware, here’s the shocking rule of thumb for using bullet point lists: If you have a list of things, you can use bullet points (or numbers, as appropriate). If it’s just a paragraph of prose describing something, it’s not a bullet point list.

For example, say you’re describing the process by which you take out the trash. This is not a good bullet point list:

  • I go in the kitchen and pull out the garbage can.
  • Sometimes the garbage stinks a little because of the food in there.
  • Other times it doesn’t stink, but it’s OK because there’s air freshener in the room next door.
  • I might go get the air freshener, but not yet.
  • I pull the garbage bag out of the trash can and walk it outside. Then I stick it in the large trash can outside.
  • Now I might get the air freshener.

Again, that’s not a good bullet point list. It’s a series of sentences that, with some help, would make a prose paragraph describing the trash removal process. Bullet point items should be self-contained. They should generally be short and to the point - again, it’s a list, not a story in bullet form. That crap about the garbage stinking in the above list - what’s that doing there? Why is the thing written like a story? No, no, no. That’s just… painful.

A decent bullet list is more like this:

  • Go in kitchen.
  • Pull out garbage can.
  • Get bag out of garbage can.
  • Take bag outside and place in large can.
  • If necessary, spray air freshener in the kitchen.

Short, to the point. A list of self-contained thoughts.

Another use of bullets might be in denoting section breaks in short, self-contained text blocks. Like a question/answer thing:

  • Question: Where is the garbage can? Answer: In the kitchen.
  • Question: Where do I take the garbage bag? Answer: To the large can outside.

Here you see the individual thoughts outlined by the bullets, while slightly longer, are still fairly self-contained. I also added a little white space between each item to help that visual delineation of thoughts. I didn’t write an essay and throw a bullet in front of it. I didn’t take a story and make each sentence in the story into a bullet item.

It’s okay if you’d rather describe things in a prose paragraph or three. Bullets have their uses and maybe the thought isn’t conducive to the bullet treatment. That said, bullets don’t necessarily make your thoughts more intelligible. Use them where appropriate. When in doubt, maybe err on the side of not using bullets. I mean, if you don’t know if it’s a bullet list or not… it’s probably not.

Note: This is particularly applicable to the folks who think Excel is a word processor. It’s not. Just stop. Now. Seriously.