Recent Music Purchases  

Here's the every couple of months update of what music I've bought lately.

Sufjan Stevens - Illinois (or Come on Feel the Illinoise!)

This is a really good album, with only 1 or 2 songs that I'll probably listen do with any regularity. It's all poppy and orchestral and quiet. Honestly, it requires to be listened to in one sitting, so you can hear it play like a classical piece, with arrangements that happen early in the album echoing in later songs. There's a significant lack of hooks, but it doesn't really hurt the album, just makes it tough to pick up and listen to randomly.

Sondre Lerche - Two Way Monologue

I've dug the main single off this album, the title track, for a while. It's a fantastic pop song. However, I've only given this album one listen so far. The big takeaway for me at this point is that for some reason the drive in my computer won't read this CD, so I can't rip it and throw it on my iPod. I need to listen again, but from what I recall, it's a jazzy pop album with lots of strings and some horns and some slightly unintelligible Euro-lyrics.

The Subways - Young For Eternity

I had a couple of people recommend this album. I really dug "Rock and Roll Queen" when they played it on FNX, and it's still an awesome 3 minute rock song. This is pretty much a straight out UK rock album. You can hear some Oasis and some Kaiser Chiefs and pretty much any other British rock act you can name. That said, it still kicks ass. "Oh Yeah" is right up there on the list of great, danceable rock songs.

Mittens - Mittens

A bit older, Mittens are a local act who I've seen live and thought they were pretty good. Sort of an Elvis Costello/Jonathan Richman meets The Shins. The album is kind of uneven, but it's got some gems and you can see how they'd be a fun act to see live (which they are). Mittens has a new album out, so I'll probably pick that up at some point soon.

Nada Surf - The Weight is a Gift

The Weight is a Gift is an album I've had my eye on for a while, but simply never broke down and bought. I love the version of "Your Legs Grow" on the Future Soundtrack for America, and completely love the big single "Always Love", which may be one of the best pop/rock songs of the last couple of years. So I ponied up the money to Newbury Comics, and goddamn if this isn't a great album. There's probably 3 or 4 awesome songs, and a bunch of really good ones. Hooks, and some crunchy guitars, and some harmonies, and the occasional "fuck" --- what else could you possibly want?

It's Official and Inarguable  

Scrubs is hands down the best show on television. Tonight's episode was just absolutely pitch-perfect. From the ridiculous humor ("We should have sex sometime") to the absolute gut-wrenching low that ended the show, every note was played perfectly.

I'm not kidding. I'll fight you if you disagree. Punch you right in your stupid face.

Old Timey TV and Some Newfangled Technology  

I just finished watching Season One of The Adventures of Pete and Pete which arrived from Netflix a week or so ago. If you've never seen Pete and Pete, it's a show that aired on Nickelodeon in the early-to-mid 90s about two brothers named ... Pete. The show started out as some 60 second shorts, which were popular, so Nick said "here's more money, make some 30 minute specials," which were more popular, which lead to Nick saying "just make us lots of shows." And they did, and it rocked.

It rocked because it was this surrealist, absurdist kid's show, teaching a moral in each episode, but doing it in a style that was edgy for the time (and holds up surprisingly well 10 years later). Topping it off, the creators/writers (who've gone onto stuff like Newsradio, Shrek, King of the Hill, and Buffy) worked in as many pop culture references and jokes as they could. What other show would have Juliana Hatfield as a cafeteria worker, Steve Buscemi as a nerdy dad, and Iggy Pop with a recurring role as a dad who acts remarkably like Iggy Pop. It's the type of show where the family finds a car buried at the sand in the beach, uncovers it, and drives it home ... like it's completely normal.

Watching it now it reminds me a lot of Scrubs. So much so that I don't think it's possible to say that Scrubs wasn't at least partially influenced by Pete and Pete. Both shows about a nerdy character who narrates the show, with a dizzying array of transitions into fantasy/surreal situations, that play as if they're completely common place. Both shows featuring a soundtrack of the "indie" rock sound of the time, and playing basically with the single camera format.
All of this made me think about how cool it is that a show like this can survive and live on in DVD format. Poking around this weekend, I found that there's two really cool video podcasts on iTunes that send out an old cartoon that has entered the public domain a few times a week. The coolest one is ReFrederator. A few times a week you download a 5-10 minute cartoon of Bugs or Daffy or Mighty Mouse. It's insanely cool and a wonderful way to keep those old cartoons fresh. The same idea is done by Vintage Tooncast, though they seem to be focused more on showing things that you wouldn't see today (because of the racial and cultural sterotypes that were so pervasive). It's an ingenious use of syndication technology.
It also made me think about how cool it would be if networks did this with more content. Sure, the big networks are putting there shows on iTunes for 99 cents a pop. And Fox has talked about putting shows online with ads for free. All fantastic stuff. However, wouldn't it be great if networks (especially networks that own most of their own content) put up old shows on iTunes? NBC has done this with some stuff, but I'd love if Nickelodeon let me grab an episode of Welcome Freshmen or Disney let me grab an episode of Duck Tales at my leisure. Pay them $30 and get a weekly podcast of shows automagically downloaded to your computer until they ran out of shows. Or pay the 99 cents to get the ones you want.

Outside of content clearances and figuring out how royalties and whatnot are paid out, there's not a legitimate reason not to do this. Well, other than fracturing an already fragile television landscape. The first network to really embrace this is going to make lots of money (assuming they do it right).

Another Wedding, Another Wolfman  

Off to the wedding of my friend Kurt, one of the guys I've pretty much known forever. Should be a good time. However, weddings make me feel old. It wasn't too long ago that we were building forts in his attic and eating 3 for a $1 hot dogs at Four Corners.

Four Corners is sort of gone, moved around the corner into a bigger, slightly more upscale version of the snack shack we grew up with. Obviously the forts are gone, replaced by stereo equipment and HDTVs (something Kurt and I share an affinity for).

Somethings, however, don't change. Our home town's resident nutjob, "The Wolfman", made the news again today, this time for exposing himself. Since the Worcester Telegram and Gazette sucks and takes their articles off-line after a day (or, at least they used to), I'll quote the fun parts.

Donald T. Bornholz, 53, known by his neighbors as “The Wolfman” because they say he howls at the moon, has been unnerving Ms. Nunnari and other residents in his neighborhood for as long as many of them can remember. He was arrested Wednesday, for the second time this week, after police received reports that he was exposing himself to neighbors. ... The two empty lots are now littered with “keep out” and “no trespassing” signs, as well as Mr. Bornholz’s eclectic mix of personal belongings. They include a beach umbrella, rat traps, sneakers, an embroidered pillow that reads “kind words conquer,” boxer shorts decorated with the text “uniformity is boring,” collections of pennies and two suit coats hung from a tree.

“He’s been sleeping outside,” said Ms. Nunnari, who lives next door to Mr. Bornholz. “He went to jail last winter, but I think he did it on purpose because he couldn’t live outside.”

Maybe I don't feel so old after all.

P.S. Congrats Kurt and Trish

P.P.S. Seriously, I grew up in a town with a guy they call The Wolfman.

Some Thoughts on TV  

It's been a while since I rambled on about TV. Given that this season is almost over, seems like a good time to ramble anew ...

Lost has been good. But, as much as the writers said "no no, we won't be the X-Files, we won't drag things out", this has been a season of lots of reveals amounting to nothing. The structure of the show is still fun, with the backstories mixed with the island, but they've gone to the well a few too many times with some of these characters. Topping it off, the rhythm of the show has become utterly predictable. Outside of the map on the blast door, I don't think I've had a real "OMG! LOST ROOOLZ" moment in a long while.

On the other hand, Veronica Mars has been fantastic, and I think has moved into #1 on the "best hour-long on tv" list. Each twist of the bus crash mystery, each reveal of a hidden character motivation fills in some gaps and sheds a new light on the mystery. No, we don't really know much more about who caused the crash than we did at the beginning of the season. But it feels like we do. And that's something that Lost hasn't been able to replicate. Plus, the show has continually brought the funny.

It's very possible that The West Wing has also surpassed Lost this year. The final season is certainly the best season since Aaron Sorkin left, and might even be better than Sorkin's final season. It's the whole "Luke becoming a Jedi" arc with Josh Lyman's character as Luke, and it really has offered a nice closure to the whole series.

Want to talk about two hour-longs that haven't been great? How about The O.C. and Gilmore Girls? The two shows that have fallen further in one season than anything I can remember. The O.C. has reached the point where I can't even really watch it. I TiVo it and then do 30 second skip through the whole show (stopping at Seth/Summer stuff, skipping past anything with Marissa). Seriously, this show spent the season on Johnny and Marissa's sister and Seth the pothead and Marissa being a giant bowl of douche? Ugh. I'm pretty sure I won't be watching this show next season unless they kill off Marissa. She sucks, and sucks, and sucks some more. The Girls haven't been nearly as bad as the Marissa-suck-fest, but I don't think there's been a less fun season. It feels like an entirely new writing staff took over and decided that the characters should act completely different. There was a moment when it looked like the season was turning around (Rory ditching Logan and Luke/Lorelai on a happy path) but they've decided to revert to the prior stories of super-intelligent Rory being the dumbest girl on earth, and the L&L tandem being the dumbest couple on earth. Blah.

Five shows. One going out on top. One being so good that it inevitably will get cancelled. One desperately needing to get on with it. One sucking bad enough that I probably won't watch it next season. One needing to wrap some storylines up so they can get back on with doing things that people like to watch.

And this is just the hour-longs. Haven't even talked about the greatness of The Office and Scrubs and the utter shite that is Family Guy.

It's possible I watch too much TV.

Being a Dork, Perl, and Basketball Stats  

For the past year or so, I've been dorking around with some of my friends with the idea of a basketball statistic that attempts to measure what a player brings a team. You know, take his points, his assists, rebounds, blocks, etc., and throw them all into one big number. It's been a fun diversion, and an excuse to think about math and some web programming again.
The idea is based on the work done at sonicscentral.com towards something that's been called Points Created (an attempt to parallel Bill James' baseball stat "Runs Created"). It's not perfect, but I've had some dorky fun, and, quite frankly, the ratings have come out moderately ok.
Recently, when I realized I could dynamically update this from the web rather than doing it via Excel, I set out to create a Perl script that would enable me to run it, have it grab the latest stats from the invaluable dougstats.com, and then generate the stats for everybody in the NBA.

A few hours later, I had something working.

#!/usr/bin/perl
use LWP::Simple;
use CGI;
my $query= new CGI;
print $query->header;

The basics: the hash-bang, and includes for LWP (to get the data over the web) and CGI (so I can pass in parameters).

my %Data;
my @row;
my @PlayerStats;
my $PlayerName;
my $PlayerStatsString;
my $url = "http://www.dougstats.com/05-06RD.txt";

my $PointsCreated = 0;
my $PCperG = 0;
my $PCper48 = 0;

Here we set up all of the variables. A hash to contain the player data. Arrays for handling a row of data and a row of player statistics. Scalars for the player name, the string of text representing the data, the URL to get the data, and then some internal values for calculating statistics that aren't in the downloaded data.

my $sort = $query->param('sort');

my $stats = get($url);
die "Couldn't get data" unless defined $stats;

@row = split(/n/, $stats);

shift @row;

Here we get the data. We grab the sort parameter (so I can determine which value to sort on -- more on that later). We go out and get the data (or die, if we can't get it). We split the data on new lines into rows of data in the array—each array element is a full row of text data. Finally, we shift off the top row, since it's the category text and we don't want that in our stats.

foreach (@row) {
($PlayerName, $PlayerStatsString) = split(/s+/, $_, 2);
@PlayerStats = split(/s+/, $PlayerStatsString);

my $DefRebs = $PlayerStats[11] - $PlayerStats[10];

$PointsCreated = $PlayerStats[18] + (0.75 * $PlayerStats[12])
+ (1.03 * ((0.75 * $PlayerStats[10]) + (0.25 * $DefRebs)
+ $PlayerStats[13] + (0.5 * $PlayerStats[15]) - $PlayerStats[14]
- (0.71 * ($PlayerStats[5] - $PlayerStats[4]))));
$PCperG = $PointsCreated / $PlayerStats[2];
$PCper48 = ($PointsCreated / $PlayerStats[3]) * 48;

$Data{$PlayerName} = [@PlayerStats, $DefRebs, $PointsCreated, $PCperG, $PCper48];
}

delete $Data{"Player"};

Ok - here's where some of the magic happens. I iterate through each row of data, and split the row into components: the player name and then the combined player stats. Then I split the player stats into individual stat buckets. I build some of the intermediate stats that aren't in the dataset—defensive rebounds, and then the Points Created and Points Created per Game and per 48 minutes.
Toss everything into a big hash, with the hash key set as the player name, and just make sure there's not an element that is the row of column headers (the delete line). I could probably toss this last line ...

I won't get into the details of the Points Created formula right now, but there's some (limited) intelligence behind those coefficients. Basically, it's an attempt to quantify how many possessions a player creates or loses, turn that into points, and then add in the points the player actually scored to come up with a final total. I've been working on a more refined version with some other folks that better integrates assists and the fact that not all hoops are created equal.
Quite frankly, that's about it. The rest of the script is just output, dumping the data in a simple table to the screen, and throwing in some links to allow some basic sorting. If you check out the Points Created display (or the possibly improved adjusted Points Created), you can see the results of the work.

The basics: both metrics say that LeBron James has created the most overall points this season. The adjusted method has Allen Iverson edging out James for PC/G, whereas the original has James edging out Iverson. The adjusted method likes point guards a lot more than the original method. Part of me thinks it likes them too much, but what do I know.

In summary: I'm a dork, but not a big enough dork to do this stuff as anything more than a part-time hobby.

Hamachi and uTorrent  

Just as a public service to myself, in case I forget how to get uTorrent's DHT to work when I'm using Hamachi:

By default, uTorrent binds the uPnP address to the first network adapter it finds, which happens to be the Hamachi virtual adapter. So, DHT won't work through the firewall (and uTorrent performance is generally worse).

In uTorrent, Options->Advanced, set the net.bind_ip and net.outgoing_ip to the IP address that uTorrent should put in the firewall/router via uPnP (i.e. the IP address of the computer). Restart uTorrent, and everything's happy.

Why Nintendo is Awesome  

The Nintendo Revolution was already on my "must buy" list the moment it is released. New Zelda game, probably new Mario Kart, and probably new Mario Party with the cool-ass Nintendo controller. Plus, it's backwards compatible with the Gamecube, so I can keep playing all my games and finally finish Wind Waker and Eternal Darkness.
Then they announced that it would be able to download and play Nintendo games like old school Super Mario 3 and Tecmo Bowl.

Then they announced that it would be able to download and play Super NES games like Super Mario Kart and Ken Griffey Baseball.

Then they announced that it would be able to download and play Nintendo 64 games like Mario 64, Mario Kart 64, and Goldeneye.

So, at launch, you'd spend $200 and get a system that could play Revoluion games, Gamecube games, N64 games, SNES games, and NES games. That rocks, especially if the old games are like $1.99 or something.

Yesterday, at GDC, Nintendo announced that the Revolution would also play Sega Genesis games and TurboGrafix 16 games. Basically, almost any game I played as a kid up through college is going to be available to me. That, my friends, rocks. Who needs Grand Theft Auto or ridiculous life-like graphics when I get get a bunch of people together to play 3 different versions of Mario Kart?

Last Ditch Effort?  

Yesterday, my former employer put out a press release that they're offering ClayTools systems at a steep discount for attendees of the Game Developers Conference. They've also partnered with a game development studio who will incorporate ClayTools into their development pipeline.

On the one hand, I've reached the point where I'm legitimately glad to hear that the company is making strides to still hit the game developer market. When I was last at the company (about 2.5 years ago), it was the plan then, but there was a hesitance to take a stab at it because the prices would need to come down significantly, and doing that would be the other product lines at risk. Unfortunately, I think that sometimes, you need to take those risks if you want to succeed. The delay in developing both a low-cost haptic device and a low-cost and solid API allowed competitors like Immersion and Novint to catch up in their offerings or increase their market share (Immersion becoming big by suing Sony and Microsoft, Novint introducing a low-cost haptic device called the Falcon that has been extremely well-received).

It's sort of painful to watch. I've still got some good friends at the company (though, sadly, it's much smaller in size, and a good number of talented, intelligent people have left). The company still seems to be muddling through the same problems it faced in 2000-2003, and these problems stem directly from the desire to create a new market segment, while not touching the existing one at all. I think that's a foolish and short-sighted proposition -- the market for high-end haptic devices is a niche, and it's been a profitable and consistent niche for the company. The mass-market is the low-end, low-cost device; by not committing to that goal, it feels to me like things are just on a slow burn towards obsolescence.

Compounding this problem is the fact that a high-tech, high-idea company like SensAble really needs to spend a tiny bit of money and pay a college kid to redo the website. I was involved in the last redesign (and the upkeep of the site), and that was in 2002. Four years later, the site is a mish-mash of bad ideas, poor web writing, and a complete misunderstanding of how to use the web to help your business. It's the site of a company that looks like it's either a) out of business, or b) about to be out of business. A "What's New" article from August 2005? Mismatched fonts and graphics? Just painful, not to mention damn near impossible to tell when there is actually any new news to report.

For the record, I do want the company to succeed. I have no stock in the company, no vested interest in their success. But, it was my first job out of college, and I'm still close to a lot of people who have passed through the company. They gave me a chance to strech my legs a bit as a product manager, which has lead to my current role as an engineering project manager at a web hosting company, which I'm just utterly digging. It was also my first experience with a company at a crossroads, having an identity crisis. Management getting pushed out. Layoffs of long-time employees, followed with hiring people who've worked with the new management before. Spending about two years becoming a company that marketed technology without actually creating it. It was painful, frustrating, and made me want to run as far away from technology as I could.
In short, I really disliked a lot of what the company had become, and how it had gotten there. Almost 3 years later, the company is doing what many of us had suggested (low-cost device with low-cost/free API, aimed at integration with other applications), and that's mildly refreshing. I just hope it's not too late.

I think this is post #1 in my job history series. I've been thinking a lot about work, and how I've gotten to where I've gotten, and yesterday's press release kinda was the tipping point. Post #2 will be about how I did run away from technology for about a year and a half, and how I don't think I could have ended up at a worse place in my entire life. I mean, like, legitimately, the skeeviest, nastiest, weirdest, most fucked up place I've ever been.

I'm Avoiding My Front Door  

Someone just rang my door bell, and I have no desire to donate money to anyone's damn cause. Seriously, I hate that it is legal to harrass people into donating to your cause. My cell phone has gone off like twice a day from the same batch of Colorado numbers trying to get me to send more money to the Human Rights Campaign (who I will not link to because they've been a pain in my ass).

So, here I sit, waiting out the person at the door who could be here to give me a giant million dollar check, but is more likely hoping I'll become a member of their organization for the low, low price of only $20 a month. And then I'll get a sticker and a newsletter.

Whee.

It's the year 2006. I've got multiple computers. If I want to give you money, I'll do it over the interweb. Please leave me alone.