James Cameron’s Avatar: See It!

 I finally went to see Avatar in 3D today. All I can say is “ZOMG!” My friend Bob had pronounced it James Cameron’s magnum opus. I had thought he was perhaps exaggerating just a little. After having seen it, if this isn’t his magnum opus, I can’t even imagine what it will be like.

This movie pushed the envelope on so many fronts it boggles my mind. In the first place, the amount of motion capture CGI alone is overwhelming. In the second place, its use of 3D as an integral part of the story telling instead of just as a gimmick is unprecedented in my experience. Third, the creation of an entire world and culture far more detailed than Lord of the Rings or Dune ever hoped to be sets the bar for the entire genre.

New science fiction premises are few and very far between and this premise is not entirely without precedent. It is new, as far as I’m aware, to movies though. While not breaking entirely new ground in the speculative fiction canon, it is an incredibly innovative mash-up of some of the more esoteric premises from that corpus.

Everyone loves a story with heart and this one has a heart as big as an alien world. It moved me to tears in more than one place. I can say no more for fear of spoiling one of the most amazing and entertaining films I have ever seen. I heartily recommend you see it and be sure to see it in 3D. It is truly an immersive experience.

The Beginning of a Series of Opinionated Posts

One of the philosophical principals underlying Ruby on Rails is that software should be opinionated. I have been thinking about what that means a lot lately and have decided that being opinionated is a good trait in general. I have decided that I will be opinionated and share my opinions with anyone who will listen. In particular, I will share my opinions here.

I have concluded that software engineering is at best a misnomer and at worst a detriment to the development of quality software. Engineering is a philosophy of creating physical artifacts that has been developed empirically for the last two or three centuries. Software is not a physical artifact.

When I have a physical artifact and I give it to you I no longer have the artifact. When I have a piece of software and I give it to you, I still have it. Your having it doesn’t reduce the utility of my having it. When I design a physical artifact, I want to get all the details right before I build it because materials are expensive. When I design software, the easiest way to figure out the details is to create a prototype and then iteratively improve it until it is right.

The point being that building multiple versions doesn’t incur large material costs. These are only two of many reasons that software development is very different from the process we know as engineering. Calling Software Development Software Engineering raises inappropriate expectation in those that don’t understand Software Development.

I’ll rant on this topic more later but I’m going to call it a night right now.


So after watching the reality distortion field (the video of Steve Jobs announcing the iPad), and sleeping on it, I think I may have a solution. I can afford an iPad if I replace my MacBook with a 21.5″ iMac and use the difference between the price of that and the price of a 15″ MacBook Pro and a 24″ Viewsonic external display to buy a 32GB iPad!

I’ve noticed a bunch of people nay saying the iPad today. One person that agrees with me is Steven Fry. I knew he was an Apple fan boy but I was surprised at how astute he was. I think the key fact here is not that the iPad is the best tablet there could ever be. It’s just that it is the first one to “get” what sets a tablet aside from a laptop. It has certainly captured my imagination.

There. I think I’ve got it out of my system now. And now back to your regularly scheduled blog posts.

In which: We explore the author’s obsession with tablet computers

The internet was on the blink last night at our house. Thus, no blog post. This morning, I thought I knew what I wanted to blog about but somehow throughout the day so much happened that I decided to put that topic off for another day. I had forgotten that it was the day that Apple announced their new product. You know, the one that everyone has been talking about for years, the iPad.

I have wanted a tablet computer ever since I read Alan Kay’s description of the dynabook. I wanted one. Later, I read Neal Stephenson’s The Diamond Age: or A Young Lady’s Illustrated Primer and the flames of my passion were stoked even higher. I couldn’t afford a Newton but it became obvious that it wasn’t the holy grail after all. I owned 3 different Palm Pilots. They never quite filled the bill.

I’ve been waiting for the Apple tablet, the iPad, for years now. Today, I found out that I can have one, … in 60 to 90 days. Now I’ve got to decide whether I want one enough to pay the Apple premium. I am very intrigued. But it won’t be a laptop replacement. It was never intended to be that. I have been planning to buy a MacBook Pro to replace my aging MacBook. I can’t justify buying both a MacBook Pro and an iPad. Therein lies my quandary.

Of course, the rational side of my brain says it is better to wait and see how things play out. After all you should never buy version one of anything. But it is so damn sexy! I wants it. My precious.

Okay, so I buy the 16GB wifi version. That’s only $500 bucks. But for $600 bucks, I could have the 32GB version and for $700 bucks, I could have the 64GB version. And for $830 bucks I could have the 64GB 3G version. I can’t afford $830 bucks. Lets start over again.

No, let’s not. Once again I will be a responsible adult and buy the MacBook Pro. I’ll wait and see how things pan out. It may be a flash in the pan like the AppleTV. I don’t believe it for a minute but time will tell. Maybe by the time it is actually shipping I’ll change my mind. Even better, maybe I’ll think of a creative way to finance one; write an article; sell a program; get a moonlighting consulting gig. Only time will tell.

Ode to a Ruby Gem

This morning I was thinking about a project that I am doing in Ruby. I found myself thinking to myself  “I sure am looking forward to getting more intimately familiar with active-record.” Active-record is the Object-Relational-Mapping component of Ruby on Rails.

I love a package that makes you eager to learn more about it. Not to say that you have to be intimately familiar with active-record in order to use it. Rails is just so well thought out that studying the API is actually fun. And, Rdoc, the Ruby documentation package, makes writing extensive documentation of your code so easy that programmers usually do a pretty good job of documenting their code.

I have been using active-record in my Rails apps for several years now. The reason that I needed to delve deeper into active-record at this point is that I am getting data from an external source (I’m scraping it from a web page), parsing it using nokogiri, another fine Ruby package, and then caching it in a local database. Consequently, I am having to do some thinking about how to structure the data that I cache.

Let’s face it, I’m not really all that experienced at database architecture. I can hack a little SQL when I need to but I haven’t had to do a lot of data normalization since I studied databases in college. Rails makes it easy to play around with your schema until you get it just right. I don’t mean to gush or anything but Rails makes these things so easy that it feels like playing instead of work. In my case, I guess it is playing, at least to the extent that I am not being paid to do it. But that’s another story.

PragDave: Writing a Book

Dave Thomas, co-author of “The Pragmatic Programmer: From Journeyman to Master” among many others, has been writing a series of blog posts, PragDave: Writing a Book, giving some excellent advice on how to write a book. True to his pragmatic roots, it is the best, most practically useful advice I’ve ever read on the topic. The link above takes you to the collection of posts in the series, ordered in typical blog style with the latest at the top and the earliest at the bottom. I suggest you take the time to scroll to the bottom and read them in order.

The first addresses the all important question of “Why?” I’ve long wanted to write a book for all the wrong reasons but have only recently begun to considering writing one for more defensible reasons. I’ve gotten to the point where I really like to write. I realize that writing is hard work but I’m certainly going to give it a try. I have decided, however to start by writing shorter pieces. Writing articles will give me a chance to “find my voice” while I wait for the inspiration for the book that must be written to strike me. I’m passionate about a number of technical subjects. I just need to refine my focus some.

The series goes on to give tips on how to read your own writing with a critical eye, how to accept reviewer criticism, along with a number of other extremely practical pieces of advice on successful writing practice. I’ve resolved to try them all myself. I’ll be using this blog as a place to capture early drafts of essays that may grow into articles or books. Watch this space for examples.

Blogged with Flock

I Love My Coffee, I Love My Coffee Supplier

Several years ago I got the Senseo bug. I’ll admit, it was originally largely due to Adam Curry’s Daily Source Code podcast. But it made me realize that when you make a pot of coffee at home, either you have to drink several cups in quick succession or most of them are going to taste worse than the first cup. For the sake of this blog I’ll leave out a discussion on the relative merits of various coffees in the first place. I had already been through the exercise where I bought gourmet coffee, kept it in the freezer and ground the beans fresh right before I brewed it. I had also already been through the whole home espresso machine thing. But I digress.

The Senseo brews a single cup of coffee from a filter pod containing just enough grounds for that one cup. I was immediately enamored of the idea of every cup tasting as good as the first. My wife and I both immediately became fans of the Senseo. Being the frugal person that she is, Pam started shopping around online for alternate sources of pods. She soon discovered BetterPods (subsequently renamed to BetterCoffee) and we have been ordering from them ever since. We subsequently went through several Senseo machines and finally moved up to a Bunn pod coffee maker. When the Bunn stopped working, BetterCoffee worked with us to get a replacement for it.

Today, the replacement Bunn exploded. BetterCoffee told us that they had received several reports of this happening to other customers and immediately sent us out a replacement, overnight. It doesn’t get much better than that.

In the interest of full disclosure, I have NO interest in BetterCoffee other than as a very satisfied customer. Sometimes you just have to make sure that a good deed gets a little recognition. Thanks, BetterCoffee!

Blogged with Flock

Get Er Done!

I recently read a book called Getting Real by the folks from 37signals, creators of Ruby on Rails, Ta-da List, Writeboard, Backpack, and Basecamp among other Ajaxian web application goodness. While superficially a book about how to start a successful business selling services based on web applications, a topic they have plenty of credibility with, the advice in this book is applicable to a much broader realm of endeavors.

I was so inspired by it that I have dusted off several projects that were laying dormant and started actively doing them again. Of course this is also aided by the insights that I have been gleaning from the Getting Things Done book. I have also bought a Backpack Basic account so that I can use their wonderful calendar. Enough raving for now. Got to get some things done :-).

Firefox 2.0! Hooray!

I’ve downloaded and installed Firefox 2.0 on my iMac at home and my Windows XP laptop at work. I have to say, I’m impressed. At first when Firefox told me that Tab Mix Plus wasn’t compatible with 2.0, I was upset. They are promising a 2.0 compatible version real soon now.

Then I discovered that most of its functionality had been incorporated into the core implementation. The only feature that I miss is the ability to click on a tab and duplicate it. When I looked in the add-on directory, I discovered an extension called Duplicate Tab that does what I want. I downloaded and installed it and when I told the installer to restart Firefox I was pleased and surprised when Firefox came up with the same tabs loaded. Nice feature.

I don’t know if its just me but the rendering of photographs, in particular scaled jpegs, seems crisper. I haven’t delved into the release notes to verify that though. It may just be the shiny new default buttons and the crisp new tab implementation make me think that the page itself is crisper. In any case, I like it a lot.