O NOES! My iPod Has Gone Tango Uniform!

We went to my mother-in-law’s house this weekend, because my wife was singing at her mom’s church yesterday morning. We had a nice time, and had some great Southern cooking for dinner yesterday.

But on the hour-and-a-half drive home, tragedy struck: my iPod started dying. We were happily listening to ABBA’s greatest hits, when suddenly, the song paused. Then it came back a second of so later, then went in and out a few more times. At first, I thought it was interference from a nearby radio station, since I use an FM transmitter to get music from the iPod to the car speakers. When we stopped at the Dairy Queen for treats, I inspected the iPod, which means I sort of looked at it longingly. I said to myself, “Self, perhaps it’s a bad spot on the hard drive, directly under ‘Gimme, Gimme, Gimme,’ that is causing your woe, and not the whole disk. Try a different song!” Agreeing with myself, I tried a different song by hitting Shuffle. What came up was “Sheila Nee Iyer” by Dervish. It started playing, but half-way through, it paused. I started clicking the button(s), and while they made their little “tick” sound, the UI didn’t respond. I immediately went into slow-mo, contorting my face in pain and screaming, “NOOOOOOOOOOOOO!!!!!!!”

Thus, I spent the last 40 minutes of the drive with no music, which is not something I like to do. I’m going to plug the mostly-dead iPod into my Mac and see if iTunes can diagnose it or fix it or anything. I don’t have much hope for it. I’ve had it for five years, and it’s been used almost every day, for at least an hour or so, sometimes as much as eight or nine hours, so it’s gotten quite a workout. I suppose I should be happy for the time we spent together.

So last night I went online to see how much a new one could cost me. The iPod Classic, which is a 120G system (mine was only 60), is $249. Ouch. That’s a bit much, right now. So, assuming mine is well and truly dead, I’m going to try to live with just the space available on my iPhone. I had already pared down my music collection from 110G to 60G to fit on the old iPod, so paring it down to 8G is going to be tough, but I’m going to have a go at it. Wish me luck!

02/02/2009 12:59:23 Update: I put the iPod into diagnostics mode, which didn’t tell me much. I then did a full factory restore on it, followed by a re-sync of all my music. Once that was done, I randomly picked some songs on it, and they all played fine. Here’s hoping that it was some bad sectors or something, and that the restore got around them.

Risky Business

The world after Day Zero.

The world after Day Zero.

Thomas and I started our first game of Risk last night. We got everything setup, I explained the rules, and then we began. As I was reading him the rules, when I got to the one that states that during an attack, a draw always goes to the defender, his response was, “Aww. That stinks.” Little did we know how much his opinion of that rule was about to change.

After we placed our initial armies, he moved first. He placed his new armies and decided to attack me in New Guinea from Eastern Australia, and it was bloody. I lost and he moved in. He then tried to take Indonesia from me, but there, he failed. He decided to end his turn, and then it was my turn to start a war.

I placed my new armies, and immediately set out to take Congo from him. I attacked from Egypt, we rolled and it was a draw. I lost an army. Undeterred, I decided to attack Congo from North Africa. Again we rolled, and again it was a draw. I then attacked Congo from South Africa. Again, a draw. I tried once again to take Congo, this time attacking from East Africa. Against all odds, it was another draw. I was stunned. He was highly amused.

We played through, I believe, four turns each, and then called it a night. Since we have cats, I decided to take a picture of the board, so that when we continue the war, we’ll know if anything has gotten moved.

I am thrilled that Thomas enjoyed the game. I had fun, too. But I’m no longer sure I like that “defender wins all draws” rule…

Neko Case And Anti- Records Give To Charity

I don’t usually believe it when I see emails or blog postings saying that for everyone who posts/forwards this email/blog posting that Company X will donate $Y to Charity Z.

But this one is for real.

The lovely Neko Case, and Anti- records are giving $5 to Best Friends Animal Society every time someone posts her new song on their blog. I loves me some Neko Case, so here it is. And if you have a blog, follow these directions to post it yourself. I like the song, BTW.

03/06/2009 Update: The player plugin was popping up errors on some browsers, so I removed it. If you want to hear the song, use one of the links above, or go buy the album. It’s great.

Netflix And Great Customer Service

I mentioned back in December how much I liked my Netflix player. I still do, but last week I ran into a problem. I have finally caught up with the rest of the world and realized what a great show Heroes is, and I’m happily working my way through season one. Everything had been going great, until I got to episode seventeen. The picture was flawless, as was the playback, but the dialog track was about two seconds behind the actors’ lips. I hate that. We soldiered through, pretending that we were watching a foreign film that had been dubbed into English.

Hoping for properly-synced dialog, we fired up episode eighteen. This one had music, but no dialog at all! I tried fast-forwarding, rewinding and restarting, but nothing worked. Since you can’t really skip an episode of Heroes and know what the heck is going on, we didn’t want to move on, but I did want to see if any other episodes were borked. I watched the first few seconds of episode nineteen and it suffered the same fate as eighteen: music but no dialog. Grrr…

I kept trying episode eighteen over the next few days to see if the problem would correct itself, but it never did. As a test, I tried viewing these same episodes from my Mac, just to see if it was a problem with the player or the source. Seventeen had the same sync problem, but eighteen did have dialog. Nineteen was silent, just like on the player. I decided the problem was on Netflix’s end, and that eighteen on the Mac had been served from a different server.

So, with this information in hand, I decided to contact Netflix. I assumed that all interaction with Netflix would be through email or “customer service” forms, like so many web businesses, but I was wrong. There’s a toll-free number that is staffed 24/7. When you check the support page and see the phone number, they give you a “priority code” and tell you how long the call queue is. On Sunday night, it was listed at “about a minute.” I called, entered the code, and in under a minute, I was speaking to a real, live human, who spoke perfect English (she sounded like a Texan to me, but I could be wrong). I described the problem to her and she checked their system to see what she could tell me. She said that the three episodes I reported, plus episode twenty-two, had already been reported and that they were already working to correct the problem.

Now, the call could have ended there, but here’s where the good customer service comes in. I asked if there was an ETA for getting them corrected. She didn’t just say “no,” or “not yet” or “we don’t know.” Instead she explained the process that Netflix has to go through to not only get corrected content, but to get the content in the first place. I had assumed, naively, that Netflix was just ripping DVDs to their servers and serving them up, but in fact, they get the content in ready-to-stream format from the studios, themselves. In the case of problems, they have to contact the studios, re-sign distribution agreements, and wait for the studios to provide them with corrected content. While I still didn’t have an ETA, her description of the process gave me a much better feel for how long it would be before the content was corrected. That’s good customer service.

So, in order to continue getting my Heroes fix, I figured out which discs I needed and put them on the top of my DVD queue. They should be here today.

Project 365: Days 1 – 7

I heard about Project 365 some time last year, but when it came back up after New Year’s Day, I decided to take a whack at it. The deal is that you’re supposed to take a picture, of anything, every day. Further, you can upload it somewhere, like Flickr, to share it with the world. I made it through the first five days, and then promptly fell off the wagon when the weekend came. 😦 I started back up again on Monday, so this will be more like Project 367 for me. And so, here are days one through seven for your viewing pleasure.

Project 365: Day 1 Project 365: Day 2
Project 365: Day 3 Project 365: Day 4
Project 365: Day 5 Project 365: Day 6
Project 365: Day 7

Dear Nintendo: A Wii Storage Solution, Please!

We have a Wii. We’ve had it pretty much since they hit the market. We love it, yes Wii do. Except for one thing: the unbelievably small amount of internal storage the thing has. It only has 512M of storage that is used for game save data. For people who don’t have a lot of games, that’s probably plenty. It was plenty for us, too, until we started buying lots of games and downloading games from the Shop Channel. I can’t tell you how many times we’ve wanted to download something new from the Shop Channel, only to be told we don’t have enough free space. Some of the games, especially the old console games, are tiny. Most take up only a single “block.” But some, like the episodes of Strong Bad’s Cool Game For Attractive People, and the save file for Super Smash Bros. Brawl, are huge. As in hundreds of blocks, huge.

So, what can we do? Well, there’s an SD slot on the front, and we have a 2G SD card in there. But that’s considered completely separate from the internal storage, and none of the games that we have can run with their data file on the SD card. On a few occasions we’ve moved things temporarily to the SD card to free up space on the internal storage, but if we ever want to play that game again, we have to shuffle files around again. Guitar Hero World Tour will, apparently, let you keep downloaded songs on an SD card, but the kicker is that you can only download them to the internal storage and then copy them. But when you already don’t have enough space on the internal storage, you’re still screwed. And last night when I fired up Rock Band 2 for the first time, it told me that it could store “extras” and such on the SD card, and was that OK? I said it was, and it then told me that I didn’t have enough free space to install the bits that would allow me to keep stuff on the SD card. Grrrrr.

There are two USB ports on the back of our Wii. I have an external drive that’s something like 150G that I’m not using for anything. It’s not even plugged in. If Nintendo would allow it, I could plug that into the Wii, and our storage problems would be solved. But they don’t allow that. Well, it’s not that they disallow it, it’s just that plugging the drive in won’t do anything. They have to patch the OS to make it look in other places for data files. And they can do that; they’ve just chosen to ignore the pleas of their users. Much the way Apple has turned a deaf ear to our demands for cut & paste on the iPhone, Nintendo has gone far too long without giving us a reasonable storage solution. My cynical friend is convinced that the solution will be to buy a new “Nintendo Wii Version 2, Now With More Internal Storage!” I sure hope he’s wrong.

Come on, Nintendo, give us a workable storage solution. Soon!

Objective-C 2.0 Properties Are Needlessly Verbose

I’ve been working in Objective-C for a little while now; not quite two years, off and on. I was really excited when Apple announced that Objective-C 2.0 was going to have generated properties, but the syntax they gave us leaves me flat, as it is needlessly verbose.

For those who don’t know, in Objective-C 1.x, if you had an instance variable in a class that you wanted to expose, you had to provide getter and setter methods for it, just like you do in Java, C++ and several other OO languages. You would see something like this in MyClass.h:

@interface MyClass : NSObject {
    NSString *name;
}

- (void) setName: (NSString *) aName;
- (NSString *) name;
@end

and then in MyClass.m, you would see this:

#import "MyClass.h"

@implementation MyClass
- (void) setName: (NSString *) aName
{
    [aName retain];
    [name release];
    name = aName;
}

- (NSString *) name
{
    return name;
}
@end

Objective-C 2.0 promised to eliminate all that boilerplate code in your *.m files for getting and setting variables. But they did it in a strange way. Now, in MyClass.h, you would see this:

@interface MyClass : NSObject {
    NSString *name;
}

@property(nonatomic, retain) NSString *name;
@end

and then in MyClass.m, this

#import "MyClass.h"

@implementation MyClass

@synthesize name

@end

Now, it certainly cut out quite a bit of code for the getter and setter, but why do I have to declare the type of the property twice? You have to declare the instance variable as usual, but then you also have to specify the data type again when you add the @property declaration. There’s no reason I can think of that those two lines couldn’t have been combined into the variable declaration. Objective-C already has tokens that are ignored, such as IBOutlet, so it shouldn’t have been an issue with breaking the parser. And the @synthesize declaration in the *.m file is annoying, but I guess it was necessary to keep the properties from being auto-created in the wrong place.  In my opinion, this is what property declarations should look like

@interface MyClass : NSObject {
    @property(nonatomic, retain) NSString *name;
}

@end

That’s it. No duplication. Simple. Elegant.

Can anyone think of a good reason why they didn’t do it like that?

12/28/2008 15:13:23 Update: As Ahruman pointed out in his comment, I misspoke about IBOutlet. It is not actually ignored, but is used to tag an instance variable for use by Interface Builder. Sorry for the confusion. And be sure to read his comment below. It’s packed with good info that I didn’t know.

Christmas Kindness At Red Robin

Tonight Thomas and I needed to get some victuals, so we decided to go to Red Robin. You may remember the last time we went there and were less than impressed. But Thomas wanted to go there and I was in the mood for a mess o’ fries, so I agreed.

After we were seated, our waiter came over wearing a Santa hat with “Bah Humbug” embroidered on the front. Thomas complimented him on it and he said that it actually belonged to his manager. We placed our drink orders and he left. He came back a few minutes later with the drinks, and told us that he was leaving for the night, and would be turning us over to someone else. I can’t remember her name. 

About ten minutes later, he came back over and put the Santa hat on Thomas’ head. He said that he had talked to his manager, and he said to give him the hat. It was quite a nice hat, actually. Anyway, Thomas thanked him and then asked who the manager was, so he could thank him, too. The manager, Kyle, came over and chatted with Thomas for about five minutes about topics including our plans for Christmas, his plans for Christmas, our new puppy, his dog called Leroy Brown (I asked if the dog was “bad, bad” and he smiled at my recognition of the reference), and the puppy he’s bought for his brother. Thomas thanked him for the hat again, and then he left.

I was really surprised at this gesture. Thomas didn’t compliment the hat in such a way that he was trying to get it; he just said that he liked it. It was very nice of both Kyle and the server to give it to him. We’ll definitely go back and eat there again. And Thomas has already told me he wants to ask if Kyle is in, so they can chat again.

Hollywood Release Windows Suck

A couple of weeks ago I extolled the virtues of my new Netflix Player. I’m still thrilled with it, but the other day I happened to be looking at my instant queue from a web browser, and I noticed several lines in the queue that looked like this

Netflix Instant Queue

Notice anything about that? Yeah, it’s the “Available Until Dec 31, 2008.” WTF? Out of 53 entries in my instant queue, 9 of them will no longer be available after January 1, 2009. That really, really sucks. According to this article and this one, the reason for this is something called “release windows.” These are time periods that the movie studios allow their movies and shows to appear in a given format. Basically, after a certain amount of time, the studios yank content from one medium, such as downloads, and make it available on another, such as broadcast TV. According to the articles, that’s what the studios think will rake in the most money. It seems to me that the best way to maximize profit for a movie or show is to maximize exposure. This means making it available in as many formats as consumers are willing to pay for, for as long as possible. This would give consumers the most flexibility in how they watch the content. And maybe, just maybe, if it were super easy to legally watch the content that people want to watch, piracy would decline. I’m just speculating on that one, of course.

I understand that businesses have to make money to stay in business, but I’m really not happy that 17% of my queue will evaporate on January 2.

Thanks, Hollywood.

Three Days With the Roku Netflix Player

My Netflix Player arrived on Wednesday. It was supposed to be a family Christmas present, but you know how those things go. When something this cool arrives this early, there’s no way it’s going to stay boxed up for three more weeks.

The box is very small, maybe 4.5 inches on a side, and about 2 inches think, and it will fit easily next to our DVD player. Installation was absurdly easy. I attached it to the A/V input jacks on our DVD/VCR and plugged it in. I was planning on connecting to the Internet using my WiFi router, and as the player was coming on, I told the family to pray that it supported WPA2, and not just WEP, because if it didn’t, I’d have to reconfigure the router. Fortunately, it did support WPA2, and within about 30 seconds of connecting the A/V wires, it was online.

After it phoned home, it gave me a code that I had to enter at netflix.com to tie the box to my account. I did this on my laptop and almost before I could pick up the remote again, the screen had changed and was telling me that everything was now set up.

The first screen you see is your “Instant Queue.” This is a CoverFlow-like page which shows you the covers of all the videos in your Instant Queue. This is the one thing that I don’t like about the player: you can’t search for things to watch using the player itself. You have to go to the website using a computer, find what you want and stuff it into your Instant Queue. Once you do that, it shows up on the player within seconds. This is a bit hokey, and they really should have come up with a better solution. However, this is my only real complaint about the thing.

We did get off to a slightly bad start, though. The first thing we decided to watch was an episode of Doctor Who from 1974, featuring the One True Doctorâ„¢, Tom Baker. (Nothing against the current fellow, whom I like quite a bit.) I clicked the Play button and it started buffering. And buffering. And buffering. After about three minutes, it started playing, but within 30 seconds, it was buffering again. This was discouraging, but we decided to try something else, and the problem seems to be with this particular episode, as everything else has worked flawlessly.

The way it works is after hitting the Play button, the player buffers for about 30 seconds, then it starts playing. That’s it. You can pause and restart. You can rewind and fast-forward, though this is a bit klunky. What I really like is that if you stop watching a show and come back later, it remembers where you left off. I don’t know how many shows it will remember, but it’s at least one.

So, what did we watch? First, I watched the wonderful concert movie by Talking Heads called Stop Making Sense (it never gets old). Then we watched the first episode of the original (and best) Battlestar Galactica series. We then moved on to season 1 of The A-Team. Those things Thomas and I watched together. After he went to bed, I watched the first episode of season 2 of 30 Rock. We’ve also got season 1 of the original Knight Rider, Buck Rogers and Airwolf in the queue. Lots of great, old shows.

We were slightly disappointed that several of the shows Thomas was hoping for are not available for instant viewing. These include Fraggle Rock, Invader Zim and The Muppet Show. Perhaps these will be added later. Netflix currently has 100,000+ DVDs, but only 12,000ish of these are available for instant viewing. I have to believe this number will increase.

(I should note that they do seem to remove the ability to stream some DVDs occasionally. When they first announced support for OSX, I watched part of Purple Rain, just to test it out. Purple Rain is no longer available for streaming. I don’t know why, but it isn’t.)

So, after three days, we all love the Netflix Player. For us, it was certainly worth the $100 it cost.