Birds I've seen in the past few weeks as the direct result of owning a dog and walking it in the early morning/evening:

These are only the ones I can identify. I have seen many others that I can only describe as "little brown bird in the grass" or "big black bird with white neckline" or "mini black duck."

Other wildlife that we've observed and/or barked at:

I just got forwarded an article by Hank Williams from a client who has been watching the ongoing Twitter scalability rumpus that has kept us entertained for literally years now. Blaine's recent point about scalability is one I would mostly agree with, and one which I'm sure he's tired of making. I haven't really been following the Twitter-talk on all of the techie blogs, except through hearsay. "Did you hear that TechCrunch said Twitter is dumping Rails?" "Did you see that post about Twitter scaling?" Yada yada yada. Half of it is inaccurate the moment it is posted, and the other half is fraught with misunderstanding and wild speculation.

One of the reasons I've been loath to follow these discussions is underlined by William's concession at the end of his post that, indeed, Twitter's scaling challenge is a "hard ... problem that requires a very specialized ... architecture." Aren't they all? And so that is why I don't read the pseudo-tech jibba-jabba of TechCrunch and others about the scalability of Rails in general based on the experience of one very unique site. Scalability is unique to each site. Indeed, you are a unique site when you have to worry about scalability. That means you are getting lots of traffic, and probably making money. Most sites don't make it that far.

But I didn't write this post to join the Rails scalability rant. I just wanted to mention one observation that I haven't heard yet in the Rails scalability discussion. Here it is: the web is a moving target, and the current discussion often fails to acknowledge that. The web today is demanding more of frameworks, languages, developers, and system architectures. For instance, on MOG, we knew scaling would be a major problem from the get-go because a central piece of the application involved hundreds of thousands of agents running on users' disks, reporting tens of thousands of songs. What website was doing that in 1997? For what piece of software are those numbers not a scalability issue? It's the same with Twitter (as Hank points out): millions of people tweeting all at once, very frequently, via web, phone, Facebook apps--who knows, maybe there's even a Twitter client for your hair dryer or coffee maker now. This sort of challenge is (relatively) new for the web. And new ones like it are being invented every day. The target is constantly moving and changing shape.

If we nailed down the goalposts of web scalability, no one would bother posting and trolling and debating about Rails scalability. It would be solved by a handful of good engineers in a couple of weeks. For good. But what would be the fun in that? You'd never hear about another site that does something you wouldn't think possible 5 years ago. And, as an engineer, you'd never have the fun of solving new scalability challenges to support those new sites.

I'm a huge fan of poetry. I didn't use to be. Ode on a Grecian Urn somehow failed to move me as an 11th grade English student. At least, it failed to move me to the point that I considered poetry an art form worthy of my attention. It was an arcane distraction for lonely English teachers, as far as I was concerned.

But then I had a kid. And I was unable to finish more than two pages of anything without being interrupted to change a diaper or play My Little Pony. This was a tough spot to be in, since failing to finish a book is somewhat of a moral issue for me. I can't explain that really--it just is. I don't have this problem with movies. I can walk out of a stupid movie without blinking. Maybe I have less respect for film as an art (and maybe that's because it so rarely takes the form of art). But whatever the reason, the fact is I hate to see a book on my shelf that I could not finish.

So what to do... I had been spending a lot of time in Borders and Barnes and Noble, mostly because there was not much else to do with the one hour in between dinner and bedtime, and, as I hope you already know, these book stores have Thomas the Train tables in the kids section. Word up to that. One day, while Tova was crashing trains off bridges, I wandered over to the poetry section. I started reading, and immediately I was hooked. I finished reading like five poems in as many minutes. This was progress on a grand scale for someone who hadn't been able to finish a book for three years. I think I left with Seamus Heaney's Opened Ground that night. It was a great discovery.

Since that fateful night in the bookstore, I've become a veritable poetry whore, subscribing to Poetry magazine, exploring new poets at the price of $20 per visit to Borders, and even scribbling out my own sorry verse when I have time. Like Ronald McDonald, I'm lovin' it.

Now that I'm out of the closet, I wanted to share one of my latest favorite poets, Wisława Szymborska. She is a Nobel Prize winner and a Pole. Just like another literary hero of mine. I bought her "Poems New and Collected" a few months ago, and I've been slowly savoring it a few pages at a time. A few days ago I came across a poem called "Census." Citing the many layers of ruins at Troy, she is talking about the ever-growing mass of humanity in history, and how we become part of it. That one-sentence intro does not do it justice; you should really buy the book to read the whole thing. Anyway, this is my favorite part:

We pass each other once for all time in department stores
shopping for a new pitcher.
Homer is working in the census bureau.
No one knows what he does in his spare time.

So far, I am really loving the Garmin Communicator Plugin. It is one of the best applications of a browser plugin that I have ever encountered. I suppose any browser plugin that allows you to pretend your browser is a desktop application is a great browser plugin. That's what I like best about the Garmin Communicator, anyway. You can plug your Garmin device in via USB, then sit back and let some free web application do its thing with your data. No download-upload nonsense.

Here's a little sample of how I'm using it in WalkingBoss (not live yet):

Montana

04.15.08


Things have finally calmed down a bit here. We're moved in to our new home, my office is set up, and I'm no longer looking for rogue printers to smash.

What's new? Well, I bought a house, got a dog, and moved. All pretty much within a month or two of elapsed time. I feel about 20 years older after doing all of that, but the calendar tells me that I've really only lost two months. Plus however much time you lose from eating 30 Filet-o-Fish sandwiches in as many days due to not having any of your kitchen stuff to cook with. Probably shaved about six months off my life there.

I've been on Facebook a bit lately, mostly for work. I don't really like Facebook, but on the plus side I've located a bunch of old friends. It's a bit weird how the internet enables you to keep track of your friends without really having to keep in touch with them. I mean, there's the usual "Hey, you're still alive, that's great!" conversation that seems part of the "friending" ritual. But beyond that, Facebook seems to be just a glorified address book for me. I know my friend Dave sees a lot of potential in Facebook, so I haven't completely ruled it out as another fad yet. But it will be a while before I'm really sold on it, as a user. As a technical person, of course I see the huge advantages it provides as an application delivery platform. As a regular person, I don't know if I'd still be a Facebook user if my job did not require it.

Our new dog is proving to be a great addition to the family. We found her at the animal shelter in Belgrade a week after we moved here. She is a Karelian Bear Dog, a breed with which I have been enamored since first reading about how they are being used to help with problem bears at the Wind River Bear Institute. When Elly looked on PetFinder and saw that a KBD was available, it seemed like a sign from above. We had both been joking prior to moving up here that I could own my very own bear dog, but I don't think either of us thought that it would happen so fast. For one, they're supposed to be super active and need some land to roam. Our tiny backyard would seem small to a Pomeranian, so I wasn't planning on getting a bear dog until we moved to a place with more acreage. But luckily for us, Sadie is an older dog who would rather lay around and squeak out dog farts all day in exchange for some chicken jerky treats. She's still a great dog, and she will play with you if you pretend to be a big vicious animal, but she is by no means chewing off our doorknobs or running off into the hills. In fact, just this morning she made me walk at about negative 1.5 mph up a hill back to our house in a windy snow squall because she was tired after our morning jaunt.

On the technical side, I'm continuing work on TravelersTable, while in my spare time trying to resuscitate WalkingBoss and develop a time-tracking module for the IDE I use (NetBeans). I've found that all of the dog-walking I'm doing has been good for my creative-technical side. The ideas come a lot easier when you're not stuck behind the LCD all day long. I'm considering getting back into ObjC or OCaml once I'm done with my other projects. I got an OCaml book for Christmas a year or two ago, and I never made it past the first chapter. Plus I've got some ideas about a WebKit app I want to build in ObjC. Too many ideas, too little time.

I guess today is tax day, as two people have already reminded me in their emails. I had forgotten because my taxes were done a bit earlier this year. The deadline for corporate returns is a month early, so I got all my stuff together for the accountant back in March. I'm pretty excited. I think this is the first year I will get a refund in about three years. It's not too much, but just knowing that the government won't take a big bite out of my hiney this month is a great feeling. For a couple years there, it seemed like any savings I built up were gone after April 15.

Speaking of money, I am totally amazed at the difference between Whole Foods and the local Town & Country supermarket here. I swear we pay 30% of what we did in Boulder. I do not understand cost of living at all. Dave told me he paid $13/lb for turkey at a Whole Foods in California while he was visiting family. Thirteen bucks for a pound. I think here it's like $4/lb or something. Of course, the comparison is a little skewed--I mean, it's not just cost of living differences when you compare a regular supermarket and Whole Foods. The Whole Foods turkey most likely spent part of its young life reading Plato, playing frisbee, and talking about social issues late into the night over some kind bud at a $40,000/year liberal arts college, so that figures into the $13/lb. But still. That's a huge difference.

5. Since you have no legs and are therefore not ambulatory, you can not get away if I decide to teach you a lesson.

4. I'm paranoid. After two consecutive paper jams I start to think you're just playing with me.

3. Underneath that gray plastic shell you have breakable parts, like...your scanner glass.

2. You are replaceable.

1. My Kung Fu Heel Hammer Kick.

My Office Space Moment

I lost it today. I thought I'd give a little warning kick to this piece of crap when it jammed on me for the 8,023,235th time. I guess I kicked a little too hard because I heard the internals rattling around after my first kick and that set me off. Once I knew I had broken it, I got a little crazy and just kept kicking it. I guess movies really do inspire violence.

Elly and Tova came home just as I was vacuuming up the evidence. Elly asked, "What happened in here? Did you kill somebody?"

"Yeah, I did. I killed a printer today."

Lunar Eclipse

03.03.08


Elly took this a couple weeks ago during the eclipse:

...was looking off my back deck and seeing this:


Count the Dookie

Click on the image to see Elly's dog poo census.

This is one of those short articles that I post only when Google fails to turn up any useful information and I hope my solution will be helpful to others. If you are using the acts_as_taggable plugin in an older Rails project that you've recently come back to upgrade to Rails 2, you may find that you get an error like this one: NameError (undefined local variable or method `acts_as_taggable' for ...

I honestly don't know what changed, possibly the updates that were made to auto-loading constants (which I never really bothered to learn about), or maybe the difference is in my rubygems version. I'm not sure. Anyway, if you're seeing it, you can try putting this below your gem statement: require 'taggable'.

That fixed it for me, using Rails 2.0.2 and the acts_as_taggable gem version 2.0.2.

NetBeans is Neat

02.22.08


I have been afraid of admitting that I miss my IntelliJ for a long time now. I'm coming out of the closet today. I know some people will think of me differently now, possibly shunning me in favor of people who think vim + screen = bliss. I'm willing to take that risk. You see, I've found NetBeans with the jVi plugin, and I'm happy again.

Ok, weird coming-out jokes aside, I must say that I've been meaning to write about this for a long time. But I could not find an IDE I liked, and I could not bring myself to write a post about how there are no good Rails IDEs and I hate my life because of it. How dark. Only Satan-worshipping Finnish-metal-band-listening grandma's-basement programmers would have found any joy in reading that crap.

So I postponed writing about it until today. A happy day. Because I have found NetBeans.

Why do I like NetBeans? Well, first let me tell you a little about my long journey through the valley of the shadow of IDE.

I started out with Komodo because I like ActiveState (as a former TCL/Tk person, I will always appreciate their work on that language). I was impressed. For a cross-platform IDE, it was probably the fastest I had encountered on Mac when I tried it (probably about six months ago). But at that point, debugging was too slow. It took me over five minutes to start up webrick or mongrel and reach one breakpoint. Sorry ActiveState, I was using a G4 PowerBook. Debugging would probably be much faster on my MacbookPro. I appreciated the built-in VI keystroke emulation, but I found it lacking in some small ways that nevertheless irked me.

Next I tried RadRails, which had become the Aptana Studio or something like that by the time I got around to trying it. After downloading and installing it, I gave it about five minutes of a chance before moving on. If I recall correctly, the VI integration was a shareware (i.e. not free) plugin, and the Rails support felt too much like a simple Eclipse plugin rather than a core part of the IDE. I think if I had been an Eclipse user originally (as opposed to an IntelliJ user), I might have been ok with RadRails.

Next came Borland's chance: 3rdRail. I really got excited about this for a few minutes. Actually, it was a few hours. But then things broke. There were lockups and the occasional crash, and some of the navigation features seemed to have kinks that were not yet worked out. Granted, I was using one of the very first trial releases, but I sure was not going to make the $400 bet on a license that they would fix these bugs quickly enough for me.

I moved on to my favorite ol' mule of days gone by. IntelliJ: the pride of Czech Republic. I had read about their Ruby plugin a while back and thought it might be nice to try. The IDEAVim plugin had served me nicely in the past, so I knew I could have my VI keybindings easily enough. However, when I tried to install the Ruby plugin, I needed a newer version. The newer version ran slowly on my MacBook Pro, and it was going to cost me an upgrade fee to use it once the trial ran out. I tried the Ruby plugin anyway (with the trial version), and it worked all right. I was able to run my code in IntelliJ, although I didn't get around to debugging it. My main objection was that the plugin felt too much like a plugin. I couldn't forget that I was using a Java IDE to write Ruby code. Besides, I didn't want to spend the $100+ to upgrade to the newer version when it seemed like just yesterday I had spent $250 for a professional license.

I gave up for a while after trying all of these. I resigned myself to the possibility that I might always be debugging my Rails projects with "puts" and logger.error. Then my officemate mentioned a new NetBeans release. I was skeptical, but so brimming over with cynicism about Rails and TextMate that I gave it a try. I was desperate for something to come to my rescue.

I haven't looked back since. There were so many things I instantly loved about it:

  • The error detection and suggestion saved me time immediately.
  • The debugging actually worked and was quick!
  • I could easily control the scope of Find In Project.
  • Many of the shorcut keys were so similar to TextMate that I had them memorized before lunch.
  • The jVi plugin worked well and had the most complete vim emulation of any I've encountered so far.
  • The Subversion support was nearly perfect.
  • The code completion and popup documentation were snappy and easy to use.
  • Built-in plugin management and generator wizards meant less time typing commands in a console window.

There is certainly room for improvement: Java looks stupid on the Mac (I tried the substance plugin but found it uglier in most configurations); it is not as fast as a native app would be; the Go To File functionality could be quicker (and allow for spelling mistakes); it would be nice to be able to run script/console inside the IDE. But for now, the pros completely outweigh the cons. For something like my GPX gem, where unit tests are important and I have no "Shift-Reload" concept for seeing if something is working (as in Rails projects), it is proving to be indispensable.

GPX 0.4

02.22.08


I've revved the GPX gem to version 0.4. I've had a few nice people write to tell me about bugs and holes in functionality that have since been fixed. I've added a bunch more unit tests, especially targeted at creating and exporting new GPX files. Check it out if need to process GPX files in ruby.

Elly has been making clothes faster than a five-year-old in a Nike sweatshop lately, even selling some of her stuff to her online friends. Like the wonderful supportive husband I am, I offered to take Tova off her hands one Friday when a deadline was looming especially large.

Tova and I are like the Steve and Bindi of our little universe, except that I don't hump alligators on TV and she doesn't sing weird rap songs about saving the planet. What I mean is, we like to spend every spare minute outdoors in pursuit of some sort of animal encounter. Since poking cats through the cages at PetSmart has lost its allure, we have had to resort to longer and more serious treks. For instance, we spent an entire Sunday afternoon at the Sawhill ponds looking for fox or coyote tracks in the snow. And this past autumn, we lost some pink Barbie sunglasses wading in the Big Thompson in pursuit of rising trout (I've since learned to lash important articles to the kid-carrier with 3x tippet at least).

This time, we resolved to make our Rocky Mountain National Park pass pay for itself by visiting the park for the second time this year. That's right, two times in the park more than seven days apart, and your annual pass has paid for itself. So we got in the car and made the hour drive to the park with some Trentemoller blasting (she likes it more than I do). I had too much coffee and had to stop at the park entrance to use the facilities. Of course, this means an obligatory stop at the park gift shop to squeeze all of the noise-making stuffed birds and read all the books with pictures in them. I was lucky to get out of there with only a bugling elk for $7.

Back in the car, entering the park, just as I was beginning to regret my purchase (as the 37th bugle in as many seconds rang out from the backseat), we came upon three different news vans parked along the side of the road. I pulled over to see what was going on, and across the meadow there was a group of people, some with news cameras, surrounding a few people kneeling in the grass.

Of course we got out, and I asked a fellow onlooker what we were looking at. "They've got an elk down there, and they're asking that everyone be really quiet."

The $7 bugling elk would have to remain in the car, but Tova and I hurried out join the group in the meadow. Sure enough, as we got closer, we saw that they had an adult cow elk tranquilized in the middle of a semi-circle of news people and park officials. One of the biologists held the cow's head up and kept a blindfold around its eyes while two others took samples from all over (Tova asked, "What is he doing to its butt?"). There were injections being made and syringes of blood being drawn. We had no idea what was going on until a news cameraman approached us.

"Do you know what they're doing here?" he asked, pointing the camera directly at us. I mumbled something about having no clue and how we just drove up and walked over. He informed us that they were testing for chronic wasting disease and also trying out a new contraceptive that might help in controlling the herd sizes. I said something about that being cool and interesting, and hoped that no other camera-people would approach me.

Just then another camera guy asked for an interview (I guess, as one of the few tourists there we were great candidates for that evening's soundbyte). I said sure and walked a few feeet away from the elk-watchers so that I could babble at the news camera without disturbing the Animal Planet moment that was taking place a few feet away.

If you've never been interviewed by a news cameraman, let me tell you, it is strange. Fortunately, I was confused and boring enough not to make it on the news that evening, but I worried all day that my fifteen minutes of fame would be nothing more than me Mr. Magoo-ing it about how seeing the elk was cool and neat and Gee Whiz! Cool Story Doug Fales.

Tova and I watched for a few more minutes until she was shaking from the cold, and then they let the elk go. We backed away as she stood up, started to trot, stopped, and then turned toward the herd and ran to join it. It was really very cool.

We ran back to the car to get warm and go to McDonald's, where I called everyone I could think of to tell them what we had just seen. I was lucky to have Elly's camera, so I got some great shots.

DSC_0038.JPG DSC_0040.JPG DSC_0042.JPG DSC_0046.JPG DSC_0047.JPG DSC_0049.JPG

Here it is on the local news: http://cbs4denver.com/video/?id=38216@kcnc.dayport.com.

Coyotes in RMNP

01.16.08


Doug and Elise came out to visit this past weekend and we took them to RMNP. The snow was falling so low that we couldn't see any of the larger peaks, but instead we got this treat:
Click on the image to see the zoomed-in version. The coyotes were gnawing on this carcass. One of them started hunting a ground squirrel or something--suddenly lunging up and then pouncing down hard throw the snow. It was too far to see if he caught anything, though.

Not as cool as a wolf sighting, but still pretty neat to run into this only a hundred yards from the road.

Featured in this Cookie Magazine blog article.

Manil-Odo

12.04.07


Elly gets full credit for this:
It's Odo from Deep Space Nine and his alter-ego, Barry Manilow. Almost a perfect match.