July 2007 Blog Posts

Washington County Fair Parrots

We went to the Washington County Fair on Saturday and had a blast.  There's something about going to the fair that's just generally fun.  This time, they had this great show called "The Pirate's Parrot Show" going on when we got there.

The Pirate's Parrot show is this great show where this guy brings out something like 15 parrots of different varieties and, dressed as a pirate (of course), shows you different tricks with the parrots and educates you about them.  None of the parrots are caged - they all just wander around however they want to - and the highlight of the show is him letting them fly freely around the area, passing very close overhead.  It's definitely not something you see every day.  The whole audience was sort of baffled about why the birds wouldn't just make a break for it, but he explained that with an analogy: "Why do your kids come back when they wander off?"  At the end of the show, he lets you hold and pet the parrots and answers any questions you might have about them.  All in all, a fantastic show.

Of course, we also had to partake in the fair food - BBQ pork sandwiches, fresh lemonade, and funnel cake.  It really doesn't get much better than that, though I'm glad we walked all over the place so at least I could say I worked off two or three bites of that funnel cake.  I'm sure my arteries are still irritated with me.

A heck of a lot of fun, and, as Tom Peterson says, "Free is a very good price!"

New Car Stereo - Alpine iDA-X001

For my birthday, my lovely wife Jenn saved up and got me a new car stereo - an Alpine iDA-X001.  I've been wanting a stereo that has direct iPod integration for quite some time now so she took me to Car Toys and we picked this one out.

iDA-X001

It's more of a controller than anything else, relying on external peripherals to supply the music source.  It's got a USB connection that you can use to connect pretty much anything to (they have adapters) - iPod, USB memory stick, Zune.  It's also got an iPod-specific connector that you have to use with older generation iPods (that's what I have to use).  It doesn't have a CD player on it, but that's okay because I don't really listen to CDs anymore - basically they're only around long enough for me to put them on the iPod, then they get archived.

What I like is that you control it just like your iPod - you can browse your playlists, listen to your podcasts, the whole bit.  Love it.  The thing that sold me, though, is that this unit has this "MX" feature ("Media eXpander") that takes the music and "rebuilds" it, making compressed sources (like MP3s and such) sound much closer to the original source.  It's definitely noticeable, and it's one of the features I was specifically looking for.  It's very similar to the functionality of the DFX Audio Enhancer plugin for Windows Media Player.

It also has the ability to plug into a bajillion external devices and control them - Bluetooth, XM Radio, HD Radio... it seems like it can control just about anything.  Only downside is that each of the boxes that you have to get to enable these features run around the $200 - $250 range.  So, like, if I want to control my phone through Bluetooth, I have to buy a $220 box.  If I want to listen to HD Radio, that's another $250.  You get the idea.  They really get you coming and going on that stuff, but I can't really complain - the modularity of the thing makes it such that you only really have to buy the bits you want and ignore the stuff you don't.  I'd consider getting the Bluetooth box, for example, but probably will pass on the XM Radio.

While I was there, I also got an amplifier and a 10" subwoofer with a custom box for the trunk.  I had the stock Bose stereo that came with my car, and it was decent and all, but the bass... sounded great when you were sitting still but disappeared as soon as you'd start driving down the road.  The new amp/sub combo has me back in action.  Thanks, Jenn!

SNInfo 1.1.0.0725 Released

For those using my little assembly strong name reading tool, I:

  • Updated it for .NET 2.0.
  • Added an option to copy/paste a generated binding redirect block out for the assembly you're looking at.

Free for the taking!

Pragmatism Is Not An Excuse To Avoid Work

When you're working on a software project, there are times you're faced with decisions:  Do I implement this functionality or not?  Do I add this feature or not?  How far do I take the feature I'm working on?

Since you're trying to ship product, sometimes you have to take shortcuts in the name of pragmatism.  What will get me to a shipping state faster?  Decisions get made on the YAGNI (You Ain't Gonna Need It) principle:  If the functionality doesn't get me to the goal, I won't implement it.  In an agile environment, this can sometimes mean "If this doesn't get us to the goal of the end-of-sprint-demo, add it to the backlog."

This is generally not a bad thing.  After all, you want to be successful, and success is meeting your goals and shipping.  That said, you have to use this as a general guideline, not a hard and fast rule.  You have to adapt your view of what pragmatism means in light of current circumstances.

For example:  While it isn't something that can be demonstrated at the end of a sprint to a business user, setting up your source code repository structure and other infrastructure items (build server, etc.) is not generally something you can put off until later just because it's not demonstrable.

Another example:  If a change to the codebase has half the team in a non-functioning state, it's probably not OK to push forward on development until the whole team is productive again, even if it's only a week until your demo and even if it means you might not make the goal.

In some cases, you may have to adjust your sprint goals.  That's what it means to be agile - to be able to adjust and accommodate change, not use the principles as a crutch.  If you're demonstrating the UI of the application and you don't have a solid deployment mechanism, that's probably OK.  On the other hand, if it's only building on your local development machine and the rest of the team can't get it to work, that's a little less OK.

Don't use pragmatism as an excuse to avoid work.  Let common sense prevail.

Review: Transformers

We went out last night to see Transformers for my birthday.  I had heard from some friends that they liked it, so I went in sort of interested and came out feeling like this was the coolest thing ever.

The idea is that the Transformers are robots from another planet that have come to Earth in search of an energy cube called the All Spark that gives them life.  If the evil Decepticons get ahold of it before the friendly Autobots do, the world's in serious trouble.

Yeah, it sounds sort of lame.  But it really wasn't.  For people even mildly interested in sci fi robot movies, I really don't think you'll be disappointed.  There was all of the robot battling and transforming you would expect to see - it was an effects extravaganza.  Lots of action, as expected from Michael Bay, and at no time did I feel like I was bored or losing interest.

For fans of the cartoons it's even better.  They got Peter Cullen, the original voice of Optimus Prime, to do the voice in the movie and it's definitely something you notice.  When he whips out the "Autobots! Roll out!" you get the shivers of positive childhood memories.  They throw in a couple of references to "More Than Meets The Eye," too, which is cool.  (When they say it, listen to the theater crowd.  The people who snicker are the kids who grew up in the 80's.)  And if you paid close attention to the names, you'll even notice that the original show had characters with the last name "Witwicky" (the main character in this movie was "Sam Witwicky," played by Shia LaBeouf).

The human actors (funny that I have to qualify that...) are also pretty good.  Shia LaBeouf is a great high school nerd character and Megan Fox plays a popular high school girl character.  Both are very entertaining to watch.  Josh Duhamel plays an Air Force captain and does a great job, too (I've only ever really seen him on Las Vegas).  You have to imagine Duhamel saw the script and didn't even read it before accepting - no child of the 80's could pass up the chance to be in a freaking Transformers movie.  No way I could.

At the end we clapped, because, you know, the actors can hear you clapping in the theater.  I think that's actually how you know you liked the movie - you feel like clapping at the end.  Jenn claims to have been slightly disappointed because they didn't play the original theme from the TV show at any point, but besides that, they gave us everything we wanted.

I definitely got my money's worth and I'm hoping this hits HD DVD sooner rather than later.  Good times.

posted @ Tuesday, July 24, 2007 9:34 AM | Feedback (0) | Filed Under [ Media ]

Birthday In The Lost Room

We celebrated my 31st birthday this weekend.

On Saturday, a small group of folks got together with me and we went to Ultrazone to play laser tag.  It was quite a bit of fun, and a slightly different setup than other places I've played laser tag, so it was a neat change.  I'll definitely have to go back there again.  After that, about half the folks came back and we had a barbecue at my place.  Jenn got me a tasty mint chocolate chip ice cream cake from Cold Stone.  I don't think I'd ever had an ice cream cake before, and it was great.

Sunday my parents came over and took us out for lunch at Buffalo Wild Wings and then to see Live Free or Die Hard.  Lunch was great, and the movie was actually a lot better than I expected.

The idea behind Live Free or Die Hard is, basically, that a hacker is trying to take down the entire country by shutting down anything run by computers.  Basically.  Now, I won't lie and tell you that you can go in and not have to work to suspend your disbelief - you're going to have to take some stuff on faith.  At times, you will find yourself laughing at how ridiculous some of the situations are.  That said, it's a lot of fun, and I never once felt like I needed to look at my watch and see how much longer it was.  It's a fluff piece, a great thrill ride, and if you go in understanding that, you'll have a blast just like I did.  Plus, they give some little rewards to the Die Hard fans out there, what with the daughter, Lucy, showing up.  (Remember her on the first movie?)  Anyway, see it and have fun.

My dad also made me a really cool Lost Room gift box.  If you haven't seen The Lost Room yet, definitely do - it was fantastic.  Anyway, he went to the trouble of cutting out all of this perfectly fitting foam to package up a copy of the DVD, prop replicas of the bus ticket and the pen, and an actual room key he got from a collector on eBay (so, no, it's not a prop replica, nitpickers; it's from a real hotel room, not the Lost Room).  It's super cool - check it out:

Lost Room gift box: DVD, bus ticket, pen, and key

I'm stoked - it was awfully thoughtful and a lot of effort went into it.  Very cool.

So I'm 31 now, and... well, it's not much different from 30.  A bit more experience under my belt (along with, probably, a few more pounds).  A lot of life change since 30.  I sense more change on the horizon, but I guess as a friend once told me, "life is change."  We'll see what the future holds.

Drink Your Ovaltine

At a recent conference I went to, I entered a drawing to win a prize from one of the sponsors.  Other prizes being given out by other vendors (and the conference host) were things like UMPCs, Xbox 360 consoles, Xbox 360 games, and so forth.  Pretty cool stuff.

A month later I got this email from the sponsor that told me I had won something and said, quote (emphasis theirs), "If you'd like to claim your fabulous prize, please respond to this email with your mailing address."

I was stoked.  Stoked!  I don't really ever win anything, so to win something on this level - especially if they have to confirm my mailing address after the form of entry was to drop my business card, complete with my mailing address, into a basket for the drawing - was pretty exciting.

I psyched myself up, wondering what it could be.  A UMPC would be cool, but - no, don't get your hopes up that high.  Maybe an Xbox 360 game.  I sure hope I don't have it already.  I suppose I could trade it in if I do.  Maybe a gift card somewhere neat.  Even if it's something like Amazon, hey, bonus.  What could it be?

The prize arrived today.  I saw it in my mailbox at work and walked over to it, wondering.  It was in a manila envelope, so it wasn't anything as big or bulky as a UMPC... but it could still be an Xbox game or a gift card.  I walked over and picked it up, slightly unnerved by the... soft... feel to the envelope.  But it could be packaging!  It could just be the packaging!

I took the envelope back to my desk and tore into it, no longer able to contain the anticipation, firmly ready to blog about how freaking awesome I am with this bitchin' prize.  I pulled it out and...

What the hell kind of happy horseshit is all this?

What is that? Golf club? Thumbs up? Speech bubble?My "fabulous prize" is a t-shirt of dubious manufacture.  No brand I've ever heard of.  Far too thin to wear without - you guessed it - another t-shirt underneath.  (Hey, not even my wife wants to see my man-boobs showing through, and I certainly don't blame her.  I wouldn't want to see that, either.)  Oh, and it's got this ad on the front for careers at the company that, frankly, I don't get.  There's this weird shape that is a cross between an upside-down speech bubble and the head of a golf club that I think is supposed to be a hand giving a "thumb's up" sign, but I can't be sure.  This weird image thing is intermingled with the phrase "[Vendor Name] Makes Work FUN."  Ummmm, okay.

I feel a little like Ralphie in A Christmas Story when he decoded Little Orphan Annie's secret message: "Drink Your Ovaltine."  Ovaltine?!

Message to vendors at all future conferences I go to:  Rather than give out crappy prizes, just... don't.  Don't give this junk away.  You're ruining the environment by consuming resources, and I don't need any more rags to wax my car with.  Instead, give away one good prize that you won't award to me because I'm a loser and save me the effort of another blog entry.

Storage Crisis

The latest minor crisis we're facing at home is that of storage, or the lack thereof.  We have 2300 square feet and zero closet space.  It's stressing me out.

It turns out Jenn an I are both sentimental, organized pack rats.  We keep things because [we might need it again someday | it could be worth something | it's been around forever and has sentimental value] (choose one).

The thing is, those arguments don't hold water for the majority of stuff we have stored.

We have boxes of books that we keep "in case we want to read them again" but they're such a pain to get to that we'll never get them out - more likely we'll just go find a different book to read.

And, honestly, I've got two pickaxes in my garage.  Two.  I don't think I've used one since I've moved in, and if I somehow need a pickaxe... well, I think maybe I'll just go to Home Depot.

Things we figure might be worth something really aren't.  The set of plastic "Disney's Hercules" plates from McDonald's that I've been carting around for years goes for $10 - $30 on eBay.  It's $10 worth of time and effort just to list the thing for sale and pack it up for shipping if it sells.  They're not worth anything.

The sentimental items are harder to deal with, but there's low-hanging fruit even in that area.  For example, I don't think we need every random photo we've ever taken if we have the negatives anyway and we're not in them.  We got rid of a two-inch stack of pictures this weekend.

Anyway, "the items you own will end up owning you" has started to become a more prevalent theme for me.  Overwhelming, too.  Whenever I think I should just deal with a box of stuff, I feel like I did in school when it was time to write an essay.  Where to begin? Is it even worth it? There are so many other jobs I could do...

Jenn, wonderful as she is, is not much help because a) she's afflicted by the same pack rat sickness I am and b) if it involves putting up racks or shelves or moving heavy boxes of our crap around, it's all me, baby.  To her credit, she was the one this weekend  that went through the box of photos and crap that's been in our dining room for two years now.

Slowly but surely, we're going to have to deal with this.  For anything that comes into the house, we need to figure out something that's going to leave.

EmbeddedResourcePathProvider - Binary-Only ASP.NET 2.0

I posted before about an ASP.NET 1.1 way to deploy in a close-to-binary-only format, embedding ASPX files as resources in your assemblies.  That way doesn't work in .NET 2.0... but it turns out they added something better in .NET 2.0 that lets you create a more complete solution - System.Web.Hosting.VirtualPathProvider.

The basic idea is that rather than talk directly to the filesystem, ASP.NET provides a "hosting environment" and asks for files from there.  VirtualPathProviders can register and respond to these requests.  By default, ASP.NET has a file system based provider registered, so everything works out like it always did.  While you can't virtualize everything (web.config, App_Code, and so forth all actually have to exist in the filesystem), other ASP.NET files (*.aspx, *.ascx) can exist in a virtual file store.

There's a great article on MSDN about how to serve your site from a ZIP file, but I wanted to take it one step further and serve from embedded resources.  Enter Paraesthesia.Web.Hosting.EmbeddedResourcePathProvider.

This VirtualPathProvider implementation allows you to register assemblies that are allowed to serve embedded files and specify on those assemblies which embedded resources are allowed to be served.  After you register the provider (programmatically at app startup), when ASP.NET asks for a specific page it will ask the provider.  If the provider finds that file in embedded resources, it's served from there; if not, it falls back to the filesystem as usual.

Detailed usage is included in the API documentation and an implementation can be seen in the included demo site.  On a high level, you need to:

  1. Set each page, control, or file in your web project that you wish to serve embedded as embedded resource.  (Normally these are "Content" files - switch to "Embedded Resource" in your project to embed them.)
  2. Add a Paraesthesia.Web.Hosting.EmbeddedResourceFileAttribute to your web project assembly for each embedded page.  This lets the VirtualPathProvider know which resources are allowed to be served (and allows you to differentiate files that get served from resources that are used for other purposes).
  3. In your Global.asax, at application startup, add a registration for the EmbeddedResourcePathProvider:
    HostingEnvironment.RegisterVirtualPathProvider(new EmbeddedResourcePathProvider());
  4. In your web.config, add a configSection called embeddedFileAssemblies that gets parsed by Paraesthesia.Configuration.StringCollectionSectionHandler. This section will contain the list of assemblies that the VirtualPathProvider should query for EmbeddedResourceFileAttributes.
  5. Optionally specify the ability to override embedded files with files in the filesystem by adding an appSettings key called Paraesthesia.Web.Hosting.EmbeddedResourcePathProvider.AllowOverrides and setting it to "true".

A demo web site with an installer is included to show the provider in action.  It will also help you see what the code/config/attribute declarations are so you can follow that pattern in your own usage.

This sort of thing, in combination with things like the WebResourceAttribute and WebResource.axd can get you ever closer to serving an entirely binary web site.

Caveats:

  • This won't work for sites that rely on file system security. I primarily work with forms authentication, so this isn't a problem for me. It may be for you.
  • Cache dependencies on embedded resource files are actually set on the assemblies that contain the files.
  • It doesn't support "directories" so if you use the HostingEnvironment to go directory browsing, you won't see the embedded files.
  • There's some weirdness with IIS where you can't set the "default page" for a directory to be an embedded file.  IIS detects it's not there and pre-emptively returns a 404.
  • Your site has to run in High trust mode for this to work. This is a requirement of the VirtualPathProvider framework.
  • This is going to be a one-shot deal. I'm not going to be posting updates or actively supporting it or anything. Take it at your own risk, your mileage may vary, etc.
  • The source bundle includes the source for the VirtualPathProvider, related attributes, support classes, a readme, and a demo web site illustrating the project in action. The compiled bundle is the compiled assembly, the XML API doc, the installer for the demo site, and a readme.
  • It's totally free and open-source. Do whatcha like.

Download EmbeddedResourcePathProvider Compiled Package
Download EmbeddedResourcePathProvider Source

Kid Nation == Lord of the Flies

Saw a preview for a new CBS show called Kid Nation last night.  The idea is that they set 40 kids up in an old west town with no adults around and see how they fare.

Anyone else think this sounds like Lord of the Flies, western style?  I'm waiting for the part where Piggy gets killed on national television.

Yeah, they'll probably edit that out.

Here's the preview video from CBS.

Pictaps

Found this nifty little thing via Penny Arcade.  It's a site where you draw a 2D character and they make it dance around in 3D using Flash.  I threw together this stick figure one to see how it works.  Sorta neat, and free.  But, damn, the music is annoying.

Note that I don't think they thought about scalability on the thing and it's become reasonably popular, so it seems to be hit or miss on whether the thing actually plays.

Copy Amazon Associates Product URL Bookmarklet

I'm a member of the Amazon Associates program and when I put links to products in my blog postings or in emails, I like to make sure they're referral links.  On a web site, that also means you can take advantage of the automatic popup link script they provide.

The problem is that you have to create links to particular products by going to their site and doing a search or plugging in the ASIN number so the URL can be generated.  But the URL has a pattern, so if you know the pattern and have it handy you can pretty easily create the URL yourself.

To make this way easier, I created a little bookmarklet that lets you navigate to a product page on Amazon and automatically copy the affiliate URL for the item to your clipboard for use in email, blog links, etc.

NOTE:  The bookmarklet is for IE ONLY. You can't easily copy data to the Firefox clipboard so I have a different mechanism (slightly more manual) for the FF users, below.

INTERNET EXPLORER:

Installation

  1. Download the zip file and drop the .url file in it into your Favorites folder.
  2. Open up the file in Notepad.  You'll find a really long line (line 4) that starts out like this:
    URL=javascript:aid='mhsvortex';if(!window...
    Change the value of 'aid' to be your Amazon Associate ID.  (By default it's mine - mhsvortex.)
  3. That's it - you're ready to go.

Usage

  1. Navigate to a product page on Amazon that you want an Associate link to.
  2. Select the bookmarklet from your Favorites list.  It will automatically parse the URL and create a product link using the product's ASIN and your Associate ID.  You will get an alert message telling you what link got copied to your clipboard.
  3. Paste the URL wherever you want to use it.
  4. If you try the bookmarklet on a non-product page or on a non-Amazon site, it'll prompt you for the ASIN of the product you want to link to.

[Download 'Copy Amazon Product URL' Bookmarklet]

FIREFOX:

Sorry, FF users, but the security and pain around copying to the clipboard means you have a slightly more manual process to endure.

Installation

  1. Right-click this link and create a bookmark to it: Build Amazon Product URL
  2. On the main toolbar, go to "Bookmarks" and find the bookmark you just created. Right-click it and select "Properties."
  3. In the "Location" field, you'll see a big string that starts like this:
    URL=javascript:aid='mhsvortex';ur=new...
    Change the value of 'aid' to be your Amazon Associate ID.  (By default it's mine - mhsvortex.)
  4. That's it - you're ready to go.

Usage

  1. Navigate to a product page on Amazon that you want an Associate link to.
  2. Select the bookmark from your Bookmarks list.  It will automatically parse the URL and create an alert that tells you what the URL is. Select this URL and copy it to your clipboard. (This is the manual part.)
  3. Paste the URL wherever you want to use it.
  4. If you try the bookmarklet on a non-product page or on a non-Amazon site, it'll prompt you for the ASIN of the product you want to link to.

Convert An Outlook Message Into A Task

UPDATED 7/11/2007: Added handling for email subject line or first line of body to be the task subject; also added Outlook security information to get this to work.

I'm not lucky enough to have a Blackberry so I don't have access to my task list via a mobile device.  I don't generally carry my Pocket PC around and I don't try to get the wonky synchronization to work on my crappy Motorola phone.  When I think of something and I'm out, I use the phone's email capabilities to mail myself a one-liner that has the task information in it, then when I come back to the office I use those as tasks.

To that end, I wanted to set up a rule that would just take those one-liners and process the mail into a task automatically.  Since I use Outlook, I can do that with a rule that runs a script.  Here's how to do this in Outlook 2003.  Not sure, but it might also work in 2007.  Haven't tried.

First, go to "Tools -> Macro -> Visual Basic Editor." This gets you to the script editor.  In the "Project Explorer" open up "Project1" and you should see a folder called "Microsoft Office Outlook."  Open that up and you'll see "ThisOutlookSession."  Double-click that to open it.

You should be looking at a VBA editor window.  If you've already got other scripts going, it might not be empty.  In that window, paste this:

Sub ProcessMailItemIntoTask(Item As Outlook.MailItem)
    Dim strTaskName As String
    strTaskName = Trim(Item.Subject)
    
    If Len(strTaskName) < 1 Then
        ' No subject - use the first line of the body
        strTaskName = Trim(Item.Body)
        Dim intCrLfPos As Integer
        intCrLfPos = InStr(1, strTaskName, Constants.vbCrLf, vbTextCompare)
        If intCrLfPos > 0 Then
            strTaskName = Trim(Left(strTaskName, intCrLfPos - 1))
        End If
    End If
    
    ' Trim TASK: off the line
    Dim intKeyWordPos As Integer
    intKeyWordPos = InStr(1, strTaskName, "TASK:", vbTextCompare)
    If intKeyWordPos = 1 Then
        strTaskName = Trim(Right(strTaskName, Len(strTaskName) - 5))
    End If
    
    ' Create the task
    Dim objTask As Outlook.TaskItem
    Set objTask = Application.CreateItem(olTaskItem)
    objTask.Subject = strTaskName
    objTask.StartDate = Item.ReceivedTime
    objTask.Save
    Set objTask = Nothing
End Sub

What that script does is process any message into a task. It uses the subject line of the mail (or the first line of the body if there is no subject) as the task subject and the time the mail was received as the start time for the task.  You'll notice it also pulls off the word "TASK:" at the beginning of the line - this is going to be a keyword for our rule.

Now that you've got the script, save it and close the VB editor.  Now, back in Outlook, go to "Tools -> Rules and Alerts..."

Select the "New Rule..." option and start from a blank rule.  Select "Check messages when they arrive" and click Next.  Select the conditions "with specific words in the subject or body" and "sent only to me."  For the "specific words" in the subject, use "TASK:" - this will be the magic flag that tells us that this needs to be turned into a task.  For the actions you want to take on the message, select "stop processing more rules," "run a script," "mark it as read," and "delete it."  This will handle the auto-processing feature of the message so it doesn't hang around in your inbox after it's been taskified.  Finally, for the script you want to run, select "Project1.ThisOutlookSession.ProcessMailItemIntoTask."  That will call your script to create a task item out of the subject line of the message.

Once you hit Finish, you're done.  Now when you mail yourself a message with the subject line like "TASK: Take shirts to cleaners" you'll get a task added to your task list with the subject "Take shirts to cleaners."  Pretty simple.  The only drawback is that it's a client-side rule so you have to have Outlook running to process the rule.  That's pretty simple, though - even if you don't have Outlook running all the time, when the client starts up it runs rules and will process all of the appropriate emails next time you fire it up.

Note that if this script tries to read the body of the message, you'll get that annoying "Something is trying to read email addresses in Outlook - allow for X minutes" dialog popping up.  Not sure why it thinks we're looking at addresses if we're only looking at the body, but oh well.

If you have trouble getting this to work, check two things:

First, make sure you've restarted Outlook once before trying it.  For some reason Outlook needs to shut down and restart to take macro changes into effect.

Second, you may need to change your macro security level.  Go to "Tools -> Macro -> Security..." to see your security level.  This will only run in "Medium" or "Low" setting because it's not signed.  If you change your security level, you do so at your own peril.  I'm not responsible if you get hit by the next big Internet worm.  If you don't want to change your security level, you can digitally sign your macro project.  The digital signature route is the recommended way to go to stay safe, but it's the biggest pain, too.

My Chemical Romance - The Black Parade

My Chemical Romance - The Black Parade

I'm a little late to the game on this one, but I've really been enjoying The Black Parade album by My Chemical Romance.

I think it started out by playing Guitar Hero II - one of the songs in there is "Dead!" which is from this album.  Jenn and I got 100% on that song (on "Easy" level) playing cooperative and it kind of stuck in my head.  I'd heard "The Black Parade" on the radio and liked it, so I figured I'd give it a run.

The album actually reminds me a bit of Pink Floyd's The Wall - it plays out like a story, with the music style changing with each song, and in many cases becoming very... theatrical.  "Dead!" and "The Black Parade" are my favorite songs on the album, but the whole album is generally pretty darn good and is a very easy listen from front to back without having to skip any of the songs.

I can't say I've heard much anything else by My Chemical Romance, but it does make me curious to hear more.  Maybe I'll have to pick up something else by them and see how it fares.  Regardless, this thing rocks, and I totally recommend it.

posted @ Tuesday, July 10, 2007 10:07 AM | Feedback (0) | Filed Under [ Media ]

Walla Walla 2007 Video

Greg posted some great video that one of the crewmembers, Cassie, took during the fireworks show we did this year.  It's pretty cool.  About 1:15 into the video, it zooms down and you can see the line of mortar racks and four people standing a few yards back from where it's all going off.  I'm standing in that group with a road flare on the end of a stick (not lit), waiting to ensure that everything goes off.  (If one of the shells doesn't go off electronically, I get to light up the flare and run out and light it by hand.  Fortunately that didn't happen.)

Walla Walla Fireworks 2007

Fireworks in Walla Walla, WAInstead of digging in crap this year, Greg hooked us up with a much bigger show (involving much less digging) in Walla Walla, WA.

Tuesday afternoon, Jenn got out of work at noon and I picked her up there and we headed straight for Walla Walla.  It's about a five hour drive and we got there early that evening, just in time to check into the hotel and head over to the site to take a look around.  We measured out where we would need to place the fireworks so there wouldn't be any fallout raining down on spectators and such.  That was interesting because the site, on the grounds of the Walla Walla VA, had some interesting features.  For example, we were right next to an elementary school that was built entirely underground (it was sort of a mound of earth, like a bunker).

After measuring things out, we headed out for some dinner.  Tuesday was the easiest day.

Wednesday morning we got to the site around 9:00a to start setting up.  Greg was there much earlier to take the delivery of the fireworks.  Once the whole crew was there (seven of us), we got things moving.

Setting up for a fireworks show is a lot of hard work.  We had all sorts of things to shoot - shells ranging from 2.5" to 4", multi-shot boxes with 1.5" and 2" shells, some candles (like the Roman candles you can get at stands, only way bigger) - and you have to secure all of the apparatus you're firing them from so it doesn't tip over and shoot, say, into the audience (or at you).  All of this apparatus gets unloaded off the truck, laid out, set up, and loaded.

Take, for example, a 4" mortar rack.  It's a set of 10 lengths of 4" diameter PVC pipe.  Each pipe length is about, oh, 30" long or so.  Lay those pipes out side by side and secure them in a wood rack made of two-by-fours.  Space them out with two-by-fours as well.  The whole contraption weighs probably around 35 pounds, give or take.  (I'm poor with estimation, so the lengths and weights are rough, but you get the idea.)

Anyway, we had about 20 4" racks, 50 3" racks, and 5 2.5" racks to unload off a moving truck, position, and stake down (you hold them in position with wood stakes you hammer into the ground and then use baling wire to keep the rack-and-stake combo together and unmoving).

We also had like 20 or 30 multi-shot boxes.  A multi-shot box is like a big cardboard box that has a bunch of pre-loaded mortars in them.  A 2" multi-shot box is like a 30" cube that has 144 2" tubes in it in a 12 x 12 configuration.  (The number, size, and configuration of the boxes vary, but you get the idea - it's a bunch of tubes that are jammed together and loaded with shells in a cardboard box.)  You basically just cut the top off the box and you're set to go.  All of the multi-shot boxes have to be unloaded, opened, and positioned inside a wood trough (so if they break open during the show, it's all contained).

Once it was all unloaded from the truck and set up, we loaded the shells into the mortar racks.

It was about this time that the 100°F heat out in the middle of this field really started to get to me.  I had a headache that was creeping up on me, but by this time (probably around 5:00p or so), I was dying.  The shade wasn't cool, the headache was pounding from my chest up, and every time I leaned over to drop a shell into a mortar tube, I felt like I was going to puke.  I ended up having to go sit in the car with the A/C on for quite some time, and Jenn busted out a prescription migraine pill she had to help me with the headache.  Meantime, everyone else was wiring things up so the show could be shot electronically.

When you shoot a show, there are basically three ways to do it.  Hand-lit is where you actually manually go down the line of mortars and light them with a road flare.  That's the sort of show we usually do.  Electronically-lit is where you wire all of the fireworks to blasting caps (basically) and each cap gets wired to a master panel where you can hit a button to send current down the wire, blow the cap, and the firework goes up.  That's what this show was.  Computer-controlled is an electronically-lit show where, rather than a person hitting the buttons to set off the blasting caps, a computer does it, usually synchronized to music or something.  The really big shows are computer-controlled.

So while I was laid out with a headache, the rest of the folks were wiring up blasting caps.  Jenn did some of that, then we both went to Taco Bell to pick up dinner for the crew.  Driving around with the A/C on was really good for me, and that with the migraine pill really got me back in the action.  I still feel bad for crapping out on the crew, but there wasn't much I could do.  I have a desk job for a reason, right?

Around 10:00p, we started the show, cued by the local band playing a specific song.  Greg pushed buttons, I sat next to him with a road flare at the ready in case any shells didn't go up, and a couple of the other guys on the crew waited at the ready with fire extinguishers.  The rest of the crew, including Jenn, sat on top of the underground elementary school and enjoyed the show.  The pictures we got are ones Jenn took from up there.

The show lasted about 25 minutes and was definitely the biggest and best one we've done.  High-fives all around after it finished, and after a 15 minute cool-down period and a safety inspection, it was time to start cleaning up.

We didn't get very far cleaning up before the sprinklers in the field kicked on (thanks, Walla Walla, for turning those off in anticipation that we might not be able to get everything picked up in 20 minutes) so we had to abandon the cleanup effort for the next day.

Thursday morning at 8:30 we were all back at the field, cleaning things up.  Pulling stakes out of the ground, raking up debris,  stacking racks back on the truck.  It was 102°F out there according to one of the clocks on a bank we saw.  Let me tell you - the cleanup never ended.  We just kept raking and picking up garbage.  Finally a bit after 1:00p we finished and headed out to get some lunch and start the five-hour-drive home.

Today I am exhausted, sunburned, and ridiculously sore from throwing mortar racks around.  I'm sure the exercise was good for me, but I'm not so sure the heat was.  I'm glad I took the day off from work; I'd be so unproductive.

I think if we end up doing this show again, we need a bigger crew.  Seven people is about right for the smaller show we're used to, but we need more folks, particularly for the cleanup effort.  Maybe twelve or so would be a better number.  That and some leaf blowers or something to move the debris around a little more efficiently than garden rakes.  I thought a riding lawnmower with a catcher on it would be ideal.

The crew we did have was awesome.  To Greg, Matt, Corey, Alex, Cassie, and Jenn - Good job, folks.  That was a damn fine show.

Check out the pictures.  It's good stuff.