Our beast, Zelda, is now 7 months old.  She has had a number of adventures recently  including a cross-country trip to the Grand Tetons, getting spayed, and many visitors that needed licking.  It certainly has been a busy summer for a not-so-little puppy now pushing 50 pounds.

We’ve got her back in class at Narnia now, where she is taking the Intermediate class with actual adult dogs for the first time.  The other dogs appear to be a good deal more with it than the puppies we had in our last round of class.  In other words, they can actually sit and lay down on command.  My Zelda will need to consistently bring her A-game if she wants to show off as the star doggy.

Anyway, the first week of class they asked what trick we should teach our dogs and an 8 year old girl chimes in that the dogs should learn to crawl.  So naturally, I am now stuck teaching my dog to crawl.  This is, of course, not something actually required to pass the class, BUT my Zelda will be ready to show off in the event that they check on whether any dogs can go beyond the call of duty.  We can’t allow for the possibility that someone else’s dog will learn and ours will not.

The other thing I like about this new round of dog class is that your dog can actually FAIL.  Because of this, I waved my finger at the wife that our dog would pass on the first try.  In order to do this, she needs a bunch of practice at walking on a loose leash and generally being calmer than she is now around strangers.  It does help motivate me to train her, though, because I definitely don’t want to enroll her in the same class again!

The Zelda pup will soon be 6 months old.  (Yeah, I’m a sucky blogger.)  She’s now over 40 pounds, has passed two rounds of puppy obedience classes, and has upgraded many sharp puppy teeth.  The teething process was kind of a pain in the ass because puppy teeth are really annoyingly sharp.  Now she has a full set of blunt, but quite powerful adult teeth.  She demonstrates this constantly by chewing through anything you leave her with for more than a few microseconds.  (She’s efficient at what she does.)  Keeping a set of chew safe items within arms reach is now a necessity of life.

It’s funny observing her in the “dog days of summer.”  During the hot days she simply wants to lie in the grass and will not walk anywhere.  In the evenings, she becomes a highly efficient, firefly killing machine.  It’s quite amusing to watch her hunt bug…

We’re looking forward to the family vacation when we’ll find out how young pupper handles a 1,100 mile road trip!

By demand: Zelda Photos

Life with a 8-12 week old puppy turns out to be enjoyable, but also very tiring. Zelda was certainly a cute little furball during that time, but we definitely had to re-order a lot of our routines to make her fit well into them. Everything had to be re-organized to fit in with Zelda’s bladder control. (or lack thereof)

Crate training helps teach little pups not to use the house as a bathroom, so we spent most of the first few weeks putting her in for a nap, taking her out to pee, getting a little playtime, and then back in the crate. She also got to eat, drink, and do obedience work. As an added bonus, this cycle sometimes got to be repeated at 1, 3, and 5 am.

Although there were a few accidents, Zelda did seem to quickly adapt to the idea that she really ought to be going to the bathroom outside, but you really have to interpret her wishes to figure this out. She does not bark and rarely whines unless you are leaving her. She thinks that barking is a sign that one is too upset.

We’ve seen her try to calm down other very “barky” dogs. She just looks at them like, “Are you sure that’s what you should be doing right now?” Hell, we’ve only ever heard her utter one real bark when she was in guard dog mode, and she looked kind of sheepish about it. Very odd, but an interesting personality quirk. The owners with “barky” dogs all tell me they are quite jealous.

One other thing we discovered is that our pup really loves to do obedience work. She learns quickly, pays attention, and keeps coming back for more. She was certainly very calm compared to other puppies at her “puppy kindergarten” class and really picks up new commands quickly. Of course, after class, she is completely exhausted!

So far so good. The puppy keeps growing and shows signs of becoming a very good dog.  At the rate she is growing, we’re expecting her to hit 65-75 pounds.

a.k.a. geeks take a leap of faith in real humans.

It started with the two of us deciding that there is only way to get what you want is. You just have to reach out and grab it! Of course, that’s not a novel idea, but in our case it meant that I quit my job to get a Weimaraner puppy, manage the household, and enter the murky world of self-employment. For the sake of brevity, I will focus on the acquisition of our little monster.

The wife has always wanted a puppy and we both love my parents’ Weimaraner, Shadow, so there was little question that we’d have to find our own gray ghost.

We wanted the whole puppy experience because the wife has never had one and it really is an experience everyone should have at least once in their life. So I started shopping around for a breeder in my usual fashion by googling for hours upon end.

However, after much googling, it became clear that selecting a breeder comes down to a leap of faith that your puppy will be healthy and a good companion. In other words, you have to put your trust in a human. With this hope in mind I selected a breeder hours away in Missouri. They had 2 female weimaraner pups left and promised to match the pup’s temperament with our stated preferences.

A couple weeks of impatient email exchanges ensued and we finally made a very anxious trip downstate to get our dog. We actually met the breeder’s driver halfway and synchronized up in a rural gas station parking lot. She simply popped open the minivan door and we saw half a dozen puppies making their way to a new home, including 2 gray ghost pups! There was a bit of a drumroll moment to see which pup we’d get, but the driver quickly scooped out the more shy Weim from the rear of their shares craw and plopped her in the wife’s arms. (That was a stroke of good fortune because my wife was already eyeballing up that one.) We paid the woman and the whole transaction was done in about 5 minutes.

So yeah, we had our little zelda. She was a cute little roll of fur who spent most of the ride curled up on our laps. I an surprised I didn’t drive off the road given what a cute little pup she was. She had her picture taken a few times with an iPhone on the way home.
Anyway, it was about a 4 hour drive home and then we had our own little gray pup!

NFS, the ancient network file system, somehow still persists in today’s data centers. Apart from sophisticated technical arguments about why NFS sucks, why create additional network overhead to handle a request?
Each NFS mount is shared with multiple machines, each connecting to a single server. This is an unnecessary network bottleneck!

Here’s a newsflash: disk space is really, really cheap. Push files to the edges of your network instead of creating ridiculous bottlenecks that slow down your application and poop all over its uptime. The old argument that NFS is great for system administrator convenience is complete crap. Performance rules. Deal with it. Push your content to the edge of the network for better speed and availability.

My current poster child of NFS crapola is Dreamhost. For reasons unknowable, they have decided to host all user accounts on a variety of NFS mounts. Thus, my photo gallery website is served off of hard drives that are remotely mounted. So painfully slow! I mean, we’re talking about the addition of seconds for each page load. WTF? Why is this protocol not dead yet?

Conventional marketing wisdom has it that customers form loyalties to brands. This is the basic idea that a Ford owner is likely to buy another Ford based on a loyalty to the brand. I think the Japanese car companies would agree that it was not terribly difficult to lure American customers away from the cars of the red, white, and blue. From this is it is clear that there are more forces at work in a purchase decision than brand loyalty.

Modern thinking in marketing talks more about experience engineering. This is an interesting idea, which basically boils down to the creation of an a comlete experience that makes customers feel good about themselves. This is a concept that Apple has gotten right with the iPhone. The all-in-one device, feature-ridden as it is, is really a little bit of the American dream distilled into a 7×4x0.5″ package. It represents freedom, fashionability, and the open road. You can go anywhere with that bad boy and still have you lifeline back into the techno-sphere. It makes you feel good about yourself. It works without an instruction manual. You feel like a wizard.

More than the product itself, though, Apple has captured the full lifecycle of the customer experience. It was extremely simple to order online. They sent me beautifully crafted emails with tips and instructions for what to do when it arrives. It comes boxed in simple, but elegant black. When I removed the tape from the front of the unit, it automatically turned on and told me to plug it in for setup purposes. The entire process of acquisition and setup makes you feel warm and welcomed. It is reminiscent of my wife’s shopping excursions to the Coach store where they hold her hand and cheer her through the process of acquiring new handbags.

So, in short, Apple is a company that gets experience engineering. This is extremely apparent when contrasted with their partner, AT&T/Cingular/whatever. When we walked into a Cingular store, there was no mention of the iPhone whatsoever, which was confusing enough. I mean, maybe they only sell them in AT&T stores, but I really don’t think I should have to care about mundane details like that when it’s the same lousy telco. I’m very glad I ordered it directly from Apple where the entire process of dealing with salespeople and outdated phone setups was eliminated.

To the companies out there in the process of getting products into the marketplace, please think about the full lifecycle of the experience. Make customers feel good about themselves and you will succeed.

High availability means redundancy, right? If a piece of hardware or software fails, a backup kicks in immediately to carry the load so that users do not observe the failure. At worst, a transient error condition is seen to the client. This, at least, is the conventional wisdom now in an era of hardware with short MTBF (mean time between failures).

My wife and I experienced the leftovers of the mainframe era at the airport on Friday. Trying to get from Chicago to Philadelphia, we discovered that not only was our flight cancelled, all flights to the east coast altogether were cancelled. The weather conditions were fine across the map, so it didn’t make a lot of sense. Later on my aerospace buddy Matt clued me in that the FAA computers on the east coast had crashed. Another friend clued me in to the fact that 3 servers handle the FAA routing for the entire country, so the loss of a single server kept hundreds of people on the ground.

I don’t argue with the policy of not launching planes when their positions can’t be adequately tracked by air traffic control, but it’s a bit of an anachronism in this day and age to see a critical industry taken out by the loss of a single server. Big iron (mainframes) should all be dead and retired by now specifically to avoid this kind of situation. User requests should be automatically failed over to backup hardware. This is a solved problem. Telecom and Web 2.0 companies alike do this many times over every day.

I understand that a rewrite of the 1960s era software occurred at some point and the air traffic controllers rejected the solution. (with good reason) I think that, rather than attempting a complete replacement next time, they should try utilizing the Strangler Pattern. The failure-prone backend infrastructure could be steadily replaced without necessarily also re-writing the front end code. By maintaining different conceptual layers, the availability of the system can be improved without forcing an all-or-nothing type total system re-write number in the billions of dollars.

Big-bang software projects rarely succeed. Break big problems into manageable little problems! Ask your users what will improve their experience. And last but not least, at least have a better story for the poor saps at the airport than, “Your flight has been cancelled. Would you like to go on Sunday instead?”

I had a recruiter cold call me at work today. I told him I was busy at the moment, but that he could email me at my cornell.edu address. I like to give a cursory glance at the pitches by head hunters on the theory that eventually one of them will be interesting. This is the approximate conversation that followed:

Recruiter: “Oh, did you go to Cornell?”

Me: “Yes”

Recruiter: “I went to Dartmouth. Ivy League for the win!”

Me: “Are you a World of Warcraft player?”

Recruiter: “Yeah, I play on the Bronzebeard server.”

Me: “Nice. I’m over on Garona.”

I’d say that qualified as the oddest conversation I’ve had with a cold caller, but the interesting thing is the extent to which MMORPG and WoW vocabulary is now transferring over to RL. (real life) Also, to be perfectly honest, I’m now far more inclined to see what the guy has to say…Hilarious.

I think PyCon could have continued at the Dallas Fort-Worth Airport this evening given the number of stranded Pythonistas I recognize here. It’s snowing back home in Chicago and I’ve already crashed and burned on standby twice. My original flight is now slated to leave 3.5 hours after its scheduled time and I have my fingers crossed.

In the meantime, I have made several observations about the DFW airport experience:

  • The software listing flights & times on screens at the rental car lot had crashed. However, it still offered degraded functionality in the form of a tattered piece of paper that listed airline to terminal mappings.
  • The PeopleMover is cool. It’s fast and it compensated for the fact that I had no idea what terminal to go to.
  • The faux authentic Texas food at the airport is serviceable enough if you have a sufficient amount of nasal congestion. (Damn this cold leftover from Chicago.)
  • The handicapped cart that keeps going back and forth has a slogan on the back: “Follow me to McDonald’s.” That doesn’t exactly seem responsible.
  • The airport has a chapel. (My sources tell me this is not all that uncommon.)
  • There is a wine bar in the terminal. If I didn’t have the aforementioned cold, I’d probably sample some of them.
  • T-Mobile wifi access may be $10/24 hrs, but it’s getting cheaper by the hour the longer I sit here. It is also bitchin’ fast.
  • Power outlets are an extremely scarce resource. There is a kiosk that offers to power up your devices for $2, but no one seems willing to pay that. Fortunately, it is really hard to eliminate working power outlets anywhere in the modern world, so a few desperate souls like me are now defending their power connections vigilantly.
  • Sometimes AA’s proritized standby list really sucks. I saw a poor family of 6 miss a flight because they didn’t have enough standby seats left. Maybe their algorithm should include some prioritization for little kids? As a single traveler I can deal with delays, but I’d stranded with 4 kids.

Okay, back to coding in Django. After taking the Django tutorials and talked to some like-minded folks at the BoFs, I now realize where I have to do some refactoring.

« Previous PageNext Page »