personal, process comments edit

This is going to be one of those entries that sounds like I’m whining about a bunch of little insignificant things, and you’re probably right. Unfortunately, it’s the aggregation of all of these little things that’s making me nuts right now.

Dead Battery Thursday night I left the dome light on in my car, resulting in a dead battery Friday morning. Jenn left for work early, before me, so when I got in the car and found it not willing to start, I was alone and screwed. Luckily we have AAA, so I called the roadside assistance number to get someone to come out and give me a jumpstart. They told me they’d be there in 45 minutes.

An hour and a half later, the guy finally showed up. It took two minutes for him to hook a portable charger up to my battery and get the car started. Lesson learned: don’t be in a hurry if you need roadside assistance.

Power Windows Due to the battery going out, my power windows started acting wonky. They’d still go up and down, but I have this feature where you push the button down until it clicks and the window goes all the way down without you having to hold the button. That feature stopped working.

I figured it was a fuse or something and started picking about in the fusebox trying to figure out which one was burned out. There are like five fuses for the power windows (which is weird because I only have two windows that do anything). Thinking there might be some advice in the power window section of the owner’s manual, I flipped to that section to find no discussion of fuses at all.

Of course, there’s a tiny blurb in the middle of everything that tells you that if the battery goes dead or power becomes disconnected, the “auto power window” feature will disable. It further provides instructions about holding buttons down for a certain period of time to “reset” the system. Grrrrrr.

Instant Messaging I use instant messenger a lot. We use it at work, I use it at home… I have three messaging clients installed (Google Talk, Windows Live Messenger, Office Communicator) to make sure I can get in touch with people and people can get in touch with me.

What I have noticed is that there are two types of people using instant messaging clients: those that mind the status message and those that see it but somehow believe it doesn’t apply to them.

What do I mean? Tell me you don’t have that friend or relative who will send you an instant message and expect you to chat chat chat even though they know you’re at work and you have your status set to “Busy” or “Do Not Disturb” because you’re trying to get stuff done.

Here’s a quick primer for the people in the cheap seats:

Status Windows Live Communicator Google Talk
DO talk to me - I’m available Windows Live Communicator online status indicators Google Talk online status indicators
DON’T talk to me unless it’s super important Windows Live Communicator busy status indicators Google Talk busy status indicators

Yeah, this makes me look like a big dumb antisocial jerk, and I guess I’m going to have to live with that. But when I’m at work, I’m generally working and, especially lately, under the gun to get a product ready to ship. Email is a great way to catch up or drop me a link to the latest gadget site you found online that I need to see. When I’m at a stopping point or take a break, I’ll be sure to check it out.

Motivational Difficulties We’re at the tail end of the product release cycle so the work lately has been extra boring. Fixing defects like “this label contains a spelling error” and “this field has a rounding error” and whatnot is the spit-and-polish that’s gotta be done for the product to ship but it’s not the most stimulating work, to say the least.

I’m bored. Bored, bored, bored.

And, yeah, I’m sure it’s affecting my attitude. I’m not feeling terribly motivated to go the extra mile on fixing defects that, in many cases, shouldn’t have been there in the first place. I suppose I should be glad that really all we’ve found are little stupid defects and not some colossal “holy crap the site doesn’t work” sort of thing - it speaks well of the great team I work with - but it doesn’t make it any more interesting. I find it harder and harder to wake up and get motivated to get in here.

It’ll pass when we get out of this rut, but it’s a long tunnel to travel down to get to the light. They have free soda at work… I’m thinking they might want to put, say, free vodka in along with that. Heh.

Lack of Coordination I just finished up playing Lego Star Wars 2 (good fun) and have returned to Gears of War. I played through the single-player campaign on the easy difficulty, but before I jump online I want to play it through on the medium/normal difficulty.

The thing is, I haven’t got the coordination.

I have a great time playing the game, but in all seriousness, I’m having a hell of a time getting through the thing on the medium difficulty setting. I like playing games, and I like playing with other folks, but it occurs to me that if this is just the average difficulty, then it’s not going to be any fun for me. I don’t mind losing, but I do like to win sometimes, too. Hence the reason I wanted to get through at least the medium difficulty - to get good enough to maybe compete a little.

What I’m starting to realize is that I generally just suck at first person shooters. I can hold my own in racing games or fighting games or what-have-you, but I just don’t have the coordination to run around and aim and shoot that, say, your average 14 year old has.

That said, I’m not super great at racing games or fighting games or what-have-you, either. I’m passable. I lose more than I win, but I’ll win enough to keep me interested. I guess I just don’t have the time or inclination anymore to dedicate to any single game and get good like that. I get bored with it too quickly. I get tired of reaching that point at which frustration breaks you and you realize you’re just not going to be able to finish the level.

Anyway, I don’t know if I’ll be able to get through Gears of War on the medium difficulty as much as I’d like to be able to. I guess that’s nothing new - I couldn’t get through even the second level on GRAW on the medium difficulty. It’s just frustrating.

Lip Sync and Automated Dialogue Replacement (ADR) I reached a point where I could no longer handle watching videotapes because of the sound and picture quality. I couldn’t put up with it anymore because it was too obvious and annoying on my home theater system. That very day I ran out and bought a DVD player and have never looked back.

As time goes on and I get better equipment - better speakers, better TV, etc. - I start noticing more and more things that bother me. Once I notice it, it’s over. I can’t not notice it anymore.

The thing that I’ve noticed lately is that the lips on the people on television and movies are not always actually synchronized with their words. Sometimes it’s dead on. Sometimes it’s just a little off. It might vary even through a single movie or TV program - one second it’s on, one second it’s not.

The problem is, it’s not any single cause. It might be the TV taking too long to decompress the image. It might be the cable box sending the audio and video signals with bad synchronization. It might be the cable feed sending the audio and video signals with bad synchronization. It might be crappy ADR work.

I’m actually noticing bad ADR work more and more. I have to chalk it up to bad ADR when I’m watching a standard-def movie on DVD that will have proper lip synchronization in one scene but be just slightly off in another. Generally when I notice it, the picture is actually just slightly ahead of the sound, so there’s nothing I can do. If it was the sound ahead of the picture, I’d pipe the whole thing through my receiver and add a delay to the sound. But it’s not - there’s no way I can add a “video delay.” It’s gotta be bad ADR. And just about the time I’m really annoyed by it, the scene changes and there’s no issue anymore.

Anyway, I’m just annoyed by a lot of little things lately. No one of them is very big, and they all sound stupid and petty, but it doesn’t make them less annoying. Here’s to turning things around, eh?

General Ramblings comments edit

Went to lunch at Sonic with Scoble today. Unfortunately, wasn’t able to leave Sonic because my battery - fresh from being jumpstarted - was dead. Again.

A quick trip to Les Schwab fixed me up, but that was $50 worth of battery I really wasn’t prepared to spend over lunch. And it doesn’t enhance my mood any. Could’ve been worse, I suppose. Might have been a starter or alternator or something. Then again, the day ain’t over yet.

downloads, vs, build, net comments edit

I use NAnt to do my automated builds both at home and at work. As such, I decided to start keeping a little library of custom NAnt tasks that help me get things done. I’ll add to this library of custom tasks as things get fixed and new things get added.

To use the tasks, add a standard <loadtasks /> line to your NAnt build script and reference the custom task assembly. After that, you can use the tasks just like you would any other built-in NAnt task. It’ll look like this:

<loadtasks assembly="Paraesthesia.Tools.NAntTasks.dll" />

The available tasks include:

alpharesx: The <alpharesx /> task is used to alphabetize resource files (*.resx) by resource ID. This is helpful in an environment where automated tools are used to merge resource file contents (like the built-in merge facilities in many source control products). Since many diff products don’t do XML data differencing, odd merging tends to happen, especially when several developers are working in the same .resx file. Keeping the resources in a fixed order, in this case alphabetical, reduces confusion for the diff tool and makes automated merging much simpler and more reliable. It also helps when hand-editing the .resx file to be able to find what you’re looking for in an easier fashion.

lintrelativepaths: When you add a reference to an assembly from a project, a “HintPath” is added to point to the location of that assembly. If it’s a standard .NET Framework assembly, that “HintPath” will point to the .NET Framework assembly deep inside the WINDOWS folder. That’s not a problem… until you get multiple developers working on the same source but checking it out to different locations on their machines. The reason is that by default, references get added with relative paths - so you might see something like ..\..\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.dll. However, if that’s not the relative path to the .NET 1.1 System.dll from where I checked out the code, my build will fail. How do you solve it? I solve it by using absolute paths - rather than ..\..\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.dll, I put \WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.dll. (Not foolproof, but far more reliable.)

This task searches specified files using a regular expression and fails the build if you have relative paths to common locations like WINDOWS, Inetpub, or Program Files.

nunitexec: The <nunitexec /> task is a replacement for the built-in <nunit2 /> task. With NAnt and NUnit versions changing, there’s all nature of trouble in getting the built-in task to work using assembly binding redirects and so forth. Generally people switch over to use the NUnit console application to avoid the issue, but the <exec /> task doesn’t allow the nice syntax of the built-in <nunit2 /> task and changing working build scripts over is a pain.

<nunitexec /> has identical syntax to the built-in <nunit2 /> task, it just runs the console app. An option is included to allow you to specify the location of the NUnit console application. Refer to the <nunit2 /> documentation for a description of how to specify formatters and tests to run.

propertydelete: NAnt lets you create properties, change property values… but not delete them. That makes the property::exists test fairly limited. There are times when you might want to make a property not exist so you can better make use of simple tests like property::exists. That’s what the <propertydelete /> task does - it doesn’t just unset the property, it deletes it so it no longer exists.

Usage documentation is included in a CHM file in the binary distribution (or as XML doc in the code). It includes syntax descriptions and examples. You can get the source to the tasks as well. If you find a bug, send me email or leave a comment and give me a way to reproduce the issue.

Download Paraesthesia.Tools.NAntTasks 2.0.0

Download Paraesthesia.Tools.NAntTasks 2.0.0 Source

Version History:

1.0.0: First release. Includes nunitexec task.

1.1.0: Added alpharesx, lintrelativepaths, and propertydelete.

2.0.0:

  • Updated to .NET 2.0.
  • Updated to NAnt 0.86 beta 1.
  • Fixed nunitexec task to no longer output the “framework” parameter.
  • Fixed nunitexec task to properly quote only the value of command-line parameters.
  • Fixed alpharesx to output .resx files in 2.0 schema format.

media comments edit

In my continued research into how best to go about digitizing my movie collection and making it more accessible than it currently is (binders full of DVDs aren’t too accessible) I’m reconsidering my position on storing the movie as ISO and might now just copy the VIDEO_TS folders to a drive instead. (I like DVD Decrypter for this.)

It turns out that both MediaPortal and My Movies for Media Center will support ISO playback using Daemon Tools, but ISO doesn’t work for Media Center Extenders like the Xbox 360. Ideally you’d just store one copy of the movie, but with ISO not working, saving ISO would mean having to save two versions of it - the ISO and a MCE-compatible version. Talk about space usage.

My Movies has a document talking about which format to store movies in (they recommend VIDEO_TS over ISO) and the Xbox 360 as a media extender. Turns out Transcode360 can handle VIDEO_TS now, too, so from a “lossless” standpoint, it may be that VIDEO_TS is the way to go.

You can even burn VIDEO_TS to a watchable DVD later, which was my original notion of saving the ISO - so if the original DVD gets corrupted or scratched, I can re-create it. The only thing I don’t know is how the various audio tracks (commentary, etc.) and extras (menus, behind-the-scenes videos) live on via VIDEO_TS and/or manifest on the Media Center Extender.