Archive for October, 2005

Serenity might be the best movie I’ve seen in 2005. I say might because when I saw Batman Begins this summer I was absolutely certain I was not going to see a better film for the rest of the year. It was perfect filmmaking. Not just a great comic book film, not just a great action film, but a great film, period.

So maybe a tie is in order.

Regardless, Serenity is great. I have never seen a single episode of the TV show it is based on, Firefly, so I had no preconceived ideas about the film. I wasn’t a rabid fan, just a casual outsider, lover of great movies and sci-fi. I wanted Firefly to be good, but I kept my expectations grounded on reality and past experience; I expected it to be mediocre. It was, after all, based on a TV show. And we all know how much I loath TV

In this case, television actually helped Serenity. Dialog is cheap. Special effects are not. And television shows don’t have the weekly budgets to crank out minute after minute of effects-heavy footage. So they have to focus on dialog, character development, and good writing. Of course, few TV shows achieve this, but that’s the formula. That’s why Star Trek was never a whole hour of space fights and laserbeams; the budget didn’t allow for it. Hence the dialog and character development.

Serenity benefits from it’s television roots and focus on dialog. It doesn’t stray far from the TV formula that it grew up on. Normally that’s a death knell for a show trying to make the jump from TV to the big screen, because if the end product looks like a TV show, then you’ve failed to make a movie, and you’re certain to make a quick trip to the DVD bin, and then oblivion. But here, the television chops actually help Serenity from becoming another mindless special effects extravaganza. Joss Whedon, the director, knows that a great movie should tell a story, and that fantastic visual effects and blowing things up simply isn’t enough. After all, we’ve all seen the recent trilogy of Star Wars films from George Lucas, so we’ve had our fill of epic space battles and laserbeams. We’ve been there, done that. Serenity knows this, and opts to tell a story instead. And that’s where the TV experience really helps out.

I thought it was masterfully done. Especially considering I knew I was stepping into a movie with a previous history and a rabid fanbase, and I knew nothing about the characters or the world. Sometimes that makes for a bad movie, because the creators cater to the existing fanbase and don’t take the time to make the film accessible to outsiders. I was hoping the movie would take the proper care and time to involve me in a story, give the characters their proper developmental scenes, and immerse me in their world. They did.

Another thing that was great: no dedicated comic relief characters. The Fifth Element suffered greatly from the presence of a dedicated comic relief character. I hate that crap. It’s so stupid. It makes me acutely aware that I’m watching a movie. Suspension of disbelief is destroyed. Serenity has some nice quips, but they are never handed to one character charged with making the film funny. My brother-in-law and I discussed this after the film, the fact that at work the five of us are funny in various ways at various times. In real life there is no dedicated comic relief person, there is just everyone being funny when the right moment presents itself. Serenity reminded me of my work environment because that’s what it is really like when you have different personalities and people in a small space. Everyone brings their own sets of problems, humor and quirks to the table.

The bottom line, however, is that what really works for Serenity – what really underscores the brilliance of the whole thing – is the story. All of the dialog and character development is for naught if the story doesn’t work. But the story is one of the strong points of the film, and it doesn’t disappoint. I love a good Sci-Fi yarn, especially if it’s smart and not predictable. I’d explain it, but there’s really no point. It’s enough to know that the story is well done and makes sense, and lacks the illogical contrivances that often mar other Sci-Fi films, like Star Trek: Nemisis.

I thought Serenity would be a movie only fans of Firefly could appreciate, so I wasn’t super-excited to see it. But now that I’ve experienced it, I am glad I didn’t miss it. It’s one of the better movies of 2005, and maybe the best Sci-Fi film of the year (and yes, I saw War of the Worlds and Star Wars: Revenge of the Sith multiple times). I hope the movie does well enough at the box office to merit a sequel. I would really like to see Serenity fly again.

Partial Classes

The Model-View-Controller pattern is one of those things in programming life that looks really sexy on paper, kind of like Charlize Theron, but then when you see it implemented it ends up looking a lot more like Charlize Theron in Monster.

Or at least that’s what it looks like in the .NET world. And maybe .NET and it’s code-behind paradigm are to blame for the uglyness, because the clear delineation of responsibilities becomes blurred. Some people actually think of the code-behind as a controller, and some people do not. I find myself questioning: is the code-behind really a controller? If not, can it be used like one?

If you look at the code-behind as a controller in a MVC pattern (and I’m not saying it is), then there might be some value to .NET 2.0 partial classes. The problem is that I think the designers got the partial class implementations reversed.

When you create a new view (Form/UserControl) in the designer, VS2005 automatically creates two partial classes: the form class, and then a form.designer class that contains all of the designer generated code. The image at the top of this post shows two classes: CustomerView.cs and CustomerView.Designer.cs.

The objective here is to split designer generated code from programmer generated code. Sounds like it might be useful, right? But the implementation is backwards. Clicking on your form class in VS2005 (CustomerView.cs) takes you to the form designer in VS where you can view your form, edit properties, drag-and-drop components, buttons, textboxes, etc. But all of the designer generated code is in the other file (CustomerView.Designer.cs).

It seems to me that the developers got it backwards when they designed this. The CustomerView.Designer.cs file should be the file that is clickable to launch the VS designer/form editor. The CustomerView.cs file should be the file the programmer codes in. If you did it that way, you could then have a pseudo MVC pattern at work. All of the actual UI code would go in CustomerView.Designer.cs, and the Controller code could then go in CustomerView.cs. Heck, you should even be able to setup VS2005 to do this automatically with proper naming: CustomerView.Designer.cs and CustomerView.Controller.cs. Hook up your Model and you’re good to go.

Of course, none of that addresses the issue of reusable controllers, which is why you really implement MVC anyway (so you can hook it up to a Windows Form or an ASP.NET page). But at least in a .NET code-behind context, with partial classes, it would make more sense.

Soft Taco

Ben Franklin is credited with the saying, “The definition of insanity is doing the same thing over and over and expecting different results.” If that’s true (and I believe it is) then I am insane.

I am insane because I continue to frequent Taco Time every Tuesday afternoon with my coworkers. Tuesdays, in case you’re unaware, are soft taco Tuesdays. It’s the special. Two soft tacos for something like $3.49. It’s a nice deal.

Or I should say, it was a nice deal. In the good old days, a soft taco was a great meal. Ground beef, cheese, tomatoes, and lettuce wrapped in a soft tortilla shell, all proportioned intelligently; lots of meat and cheese, a little bit of tomato and lettuce. I mean, look at the picture, doesn’t that make it look like the meat & cheese are the featured portions of this thing?

But times have changed. It’s not a soft taco anymore. Don’t let the picture fool you – the real deal doesn’t look anything like that. It’s a salad now. Taco Time has no more interest in serving the soft taco. Meat is expensive, lettuce is cheap. What they really want to do is serve you a bagfull of lettuce wrapped in a tortilla, call it soft taco and hope you don’t notice.

I’ve lamented this fact to my wife in recent months. Her suggestion has been to avoid Soft Taco Tuesday altogether. But it is the only day of the week that all of us programmers and IT folks get together for lunch. And everyone gets the special. It’s tradition. My coworkers look at me funny when I order something else, like I just kicked a dog. I can tell what they’re thinking: There’s something wrong with you.

My boss thought I was joking about the lettuce conspiracy. But then he witness my soft tacos. They arrived on the green tray just like everyone else’s soft tacos, but I wasn’t fooled. I knew what was coming. I knew what was inside that paper wrapping, and it wasn’t a soft taco.

I bit into the shell and revealed… Lettuce. Rabbit food. Bundles of it.

The first thought that came to mind was the Wendy’s commercials from yesteryear, with the old crone yelling, “Where’s the beef?” I showed my boss and coworkers the green tangled mess that was my soft taco. They laughed. This hadn’t happened to them yet. It must just be bad luck. Maybe if I bit into it some more the meat and cheese would be revealed.

Nope.

This would just be a cruel and unusual happenstance if it only happened to me, but then they did it to my boss. Last week he showed me his soft taco, and it was full of lettuce too. The curse was spreading.

I decided that the soft taco was too much; that I was never going to see meat, or cheese, or tomatos again. I opted for the steak burrito last week. Great choice, but overpriced. So this week I did it again. I went for the special. There I was, doing the same thing over and over, and expecting a different result, hoping that maybe this week my soft taco would really be a soft taco.

It wasn’t. And I’m insane.