White Ford Taurus

So, listening to the 24 hours of SQL Pass webinars. The current topic is “I Was Young and Didn’t Know Any Better” and the panelists are sharing war stories of mistakes they’ve made.

So far they all sound familiar.  So I thought I’d share one of mine.  Well technically not my mistake, but one that I adopted.

Many moons ago, I was advising a company that was involved in building websites for car dealerships.  One day they needed to do an update to the live data.  This was back in the days when all code and updates were cowboy updates.  Of course you ran the query on the live database the first time. You didn’t necessarily have a stating database or even as was later discovered, good backups.

Apparently a customer needed to update a car in their inventory.

UPDATE AUTO set cartype=’White Ford Taurus’

Nice, syntactically valid… and a disaster.  Ayup.  Suddenly every car in the database at every dealership was now a White Ford Taurus.

Ever since then we called that the “White Ford Taurus” problem.

Now, I might mock doing updates on live data, but sometimes its necessary.  I’m curious how others prevent their own “White Ford Taurus” problems.

Personally, I just now make EXTRA effort to make sure I have a WHERE clause.

But I also tend to almost always do it as:

BEGIN TRAN
UPDATE AUTO set cartype=’White Ford Taurus’
if @@rowcount<> 1 rollback tran else commit tran

Or sometimes I’ll simply hardcode the rollback tran, run it once, see what happens and then rerun it with a commit tran.

So, if rather than updating the 1 row I want, I find myself updating 1000s of rows, I’ll catch myself and be safe.

Sure, it’s not perfect, both it and using the WHERE clause require me to make sure I don’t forget them.  But the more ways to catch it, the better.

Obviously avoiding ad-hoc updates on live data is preferable, but when you can’t, be extra careful.  And of course make sure you have good backups. But that goes without saying.

 

 

Processes

It’s funny.  In my personal life, I’m a pretty casual person.  I don’t generally create grocery lists.  I don’t write detailed lists of things I need to get done.

That said I’m a HUGE fan of “process” when performing tasks that absolutely have to be done in a specific manner.  In my old job, I often had to do complex updates on web and databases servers with zero downtime.  In some cases, this is like replacing the engines on a 747 while it’s in flight. In cases like that I or my staff would create what we called a “CRP – Change Review Plan”. (I wanted to call them Change Review Analysis Plan, but I decided I didn’t want to take CRAP from anyone.)

Anyway,  a book I would highly recommend is The Checklist Manifesto. This delves into this concept far more than I can here.

However, one thing I learned years ago was when too much process actually can make things worse. There’s a story, possibly apocryphal, of an incident during the servicing of the space shuttle many years ago.  In the VAB while it was being rotated from the horizontal position to the vertical for attachment to the ET, a loud klunk was heard from inside the engine compartment.  Now, one doesn’t have to be a rocket scientist to realize that a loud klunk is probably NOT supposed to happen during this procedure.

So, what had happened?  Had a procedure been violated?  Well, in reality yes.  On paper no.  In order to provide quality control, almost anything NASA touched when it was servicing a shuttle would get signed off on by at least one if not multiple people.  Supposedly there was a checklist that at least 5 people signed off on to ensure that all tools had been removed from the engine compartment.  Sure enough, that list had 5 signatures on it.  However, the tool, I believe a wrench, now sitting at the aft end of the shuttle proved otherwise.

More recently (like tonight) I was reminded of this as I sat in on a meeting. The meeting was at a local college student club and the purpose was to discuss the fact that some unauthorized people may have gained access to an area they were not allowed access to.  There was some good discussion of what had occurred and how to avoid it in the future.

At one point someone suggested, “How about a video cam or something so the folks sitting at the desk can check to make sure the room really is empty?”  That’s a nice high-tech solution. But it was honestly in search of a problem.  The real problem appears to be that the people at the desk weren’t doing their job properly in the first place: making sure doors are locked and checking proper IDs.  I pointed out, adding yet another task to their job description was unlikely to solve the root problem and was unlikely to have kept the unauthorized people out.

Ultimately, it looks like the approach the students will take is honestly, probably the simplest one: Asking to change the door lock so that the desk person isn’t responsible for locking it, but rather make it autolocking.  This way, when the last authorized person does leave, it is locked automatically.  No additional processes are required and in fact the existing ones are simplified and made more failsafe.  The door in question should now be locked when it should be, whether or not the desk person checks it as they are supposed to.

Sometimes, the simplest solutions really are the better ones.

 

 

Customer Service: “We aim to please.”

So, I’m sitting on the train today, when one half of the couple behind me returned from using the lavatory and remarked to her partner, “Don’t use the bathroom on the left.”  Apparently the previous user had been polite enough to put the seat up.  But not polite enough to actually aim.

All I could think was how nice it would be if the train had QuiCR on-board.  Within seconds she, or even myself having overheard the situation could have reported the issue and a ticket created.  That ticket could then either be handled immediately upon arrival at the destination, or perhaps in the meantime an email sent to the conductor so he could have closed the lavatory for the reminder of the trip; thus preventing any other unfortunate patrons from being exposed to those conditions. 

Quick feedback means a QuiCR response and a QuiCR response means a higher level of customer satisfaction. Think about it.

 

 

 

Deep Survival

I’m currently reading a book called “Deep Survival”.  It was recommend to me by a buddy from the NCRC.  For years I’ve been interested in disasters and accidents.  Not so much the gruesome details that some enjoy;  but rather what caused them and why some people survive.  Deep Survival is more about the latter.

Why is it a trained SEAL can drown on a river while an untrained woman can survive an airplane crash in the Amazon and make it out to civilization?

The author, Laurence Gonzales, goes into the psychology of survivors.  One weakness of course is he can’t interview or ask questions of those who didn’t survive.

That said, in one chapter, he talks about maps and our places in them.  He points out often when people are lost it’s because they’re too busy trying to make reality fit their map.  They’ll look at a lake on the map, not see it in reality and convince themselves that perhaps the lake has dried up.  Or that the peak they’re standing on is really “that one over there.”

It’s only when they accept their reality can they become unlost.

I have to agree with him.  I tell people I haven’t been lost in the woods (or any other place physically) since I was about 3.  I’ve simply been “mislocated” a few times.  Indeed, I once came off a peak in the Adirondaks and after hiking awhile looked around and realized I had no idea where I was.  I didn’t consider myself lost, simply mislocated.  A little map reading later and some orienteering and 30 minutes later I ended up in the correct parking lot.

So a lot of it comes down to “attitude”.  You may not be where you want to be, but if you have the right attitude, you’re not lost.  You’re simply someplace other than you expected to be.  In August when I lost my job, I wasn’t lost. I was simply someplace other than where I expected to be.

While it was a bit scary (I was the sole breadwinner for the family) it was also a relief.  I no longer had the weekly commute from Troy to Virginia.  I could do other things.  I finally had lots of extra time on my calendar. Ok sure, the lack of income was a bit of an issue, but by focusing on the other factors, it really wasn’t so bad.

About two months later I was on a train when inspiration for a new business struck me.  Yesterday I filed the paperwork in the state of New York to form QuiCR LLC.  Under lawyer’s orders I can’t tell you what it is yet.  But stay tuned, over the coming months I will.

Only by letting go of my map, and accepting reality, could I end up where I am now.  It’s still a bit scary, but it’s also very exciting.

Employee Loyalty

I’m in the midst of trying to put together an idea for a new company.  This is something I’ve wanted to do for years.  The hardest part of course is coming up with the right idea.  I think I’ve got that.

But as equally important to me is building a company that I would be proud of and that will attract good employees and retain them.

Years ago, I was consulting at a local software company, performing their IT functions.  They were a large customer of mine so I spent a lot of time there, enough that I was almost like an employee.  Only I wasn’t treated as badly.

I recall one day sitting in a company meeting where the CEO and the CFO patiently explained to the employees why their expense checks would be paid as late as possible.  You see, it was better for the company’s balance sheet.  But don’t worry, the employees would get their money, eventually.  They then basically gave a morale speech that boiled down to, “We’re not sure why everyone is complaining, you should feel lucky to have a job!”

As a contractor I had a much easier way of making sure I got my money when it was due me.  I could simply stop working.  A quick call to the CFO would get me paid.

This late payment of employee expenses combined with other issues basically killed morale at the company.

At the same time, my wife was recruiting for another software company across town and one of my other customers was across the river.  Both were recruiting.  It was amazing how many people jumped ship from the first company to either of these two companies.

One day I was at the company across the river doing some consulting.  They had recently recruited a developer from the first company.  Earlier that day he had submitted an expense check.  Now, like any reasonable person, he would have been content waiting until the next payday or some other reasonable amount of time for his expense check.

Well later that day, I saw him walk out of the finance person’s office with his expense check in hand.

A single act bought his loyalty more than any pay raise or speech about morale could have.

I want to make sure my company (assuming it takes off) can treat its employees with the respect they deserve.

Connectivity

So I’m sitting Amtrak train 280, headed to New York City and then on to Atlanta.  And I can tweet, blog, check email and do business.  This is one reason I like train travel. (Though I’ll admit taking the train to Atlanta from Albany is far from the quickest way of getting there.)

I’ve been able to access the Internet from the train for over a decade now thanks to Sprint.  This time though I’m posting through Amtrak’s on-board WiFi service.  Amtrak is slowly moving into the 21st Century.

Given the technical limitations Amtrak is facing, I have to say so far they’ve done an acceptable job.  They still require you to hit their proxy web page before you can get any connectivity, which stopped me for a bit since I was trying to do non-HTTP based work at first (dialing into my home VPN and a particular chat program I use.)  I understand their point (so they can put up their disclaimer and all) but it is annoying.

One nice feature, though I suspect not much used is that once you agree to their terms of service, it takes you to a page that shows a map with your current location.  This can be useful if you don’t have a GPS and are curious as to where you are.

And from all reports, they’ve done a decent job future-proofing the system.    Briefly, each car basically has a repeater that talks to the cafe car.  The cafe car has the antennas and cell-modems and is designed to be upgradeable as technology improves.

Well, I was going to add more, but my old laptop keeps crashing (time to upgrade, but have to get some business!).  So for now I’ll end with saying I’m on train 19 now, on my way to Atlanta.  Where, thanks to the modern technology I’m now aware there are tornadoes.  Wonder what that will do to my trip.