Monday, December 24, 2007

A Box of Our Own

I've been working on a lot of electronics projects lately.  The new DSCN5762programmer I bought recently is called a Dragon.  It comes in a really cool box, but it's a cardboard box.  I wanted a better case for it, but something that would still convey "Dragon".  To make the box, I bought a wood box such as this one. 

Using white glue (Modge Podge glue), a paintbrush, and some really cool, textured red cardstock I covered the box with the paper.  The results are really great, although it's difficult to tell in the picture.  My wife suggested using the ribbon trim.  The inside lip around the box is finished in gold metalic paint, which accentuates the dragon theme.


The dragon box was cool, but there was a new challenge.  What to get a 16 year old young man for Christmas.  Something positive, cool, and unique.  A trip through the Hip-Hop section at Barnes and Noble presented a great opportunity.  A book of poems by Tupac Shakur called Rose That Grew from Concrete.  Next time you're at the book store, find the book and thumb through it.  You may be surprised.

Anyway, what to do about adding a unique twist to this gift?  As my wife and I strolled through Michael's, it came to me.  What about a custom wooden box to book the book in?  Something unique, yet thematically aligned with the book?  The result is the box below.  It was made just like the one above, but instead of using paper, it is covered with a bandana.  There are a couple layers of paper over the wood, then the bandana.  Each time the glue dried, a carefully applied utility knife opened it back up.  This created very smooth, tight seams between halves of the box.

 DSCN5767In this picture, looking down on the box at an angle, you can see how the pattern wraps around the top of the box, and runs down the sides.

On the inside cover of the box, some words of wisdom from Tupac.


The Criers

It isn't often that we sit down and watch TV, however tonight turned out to be one of the rare occasions we turned on the tube.  Since we cannot justify paying for real cable, we have only the cheapest version of analog.  In other words, WKAR was the only station worth watching...that we can actually see.

The show was detailing some hearings in congress.  The footage from the hearings really shocked me.  It was like big time wrestling.  The guy asking the questions was loud and belligerent, the guy who was not answering any questions was loud and belligerent, and also, the fans in the bleachers were loud and belligerent.

The people watching these public hearings were holding up signs they made with markers and heckling the person being interviewed.  This would be inappropriate at a high school basketball game.  Why would it be happening in our capital?

As usually happens, the answer came to me a while later.  The signs were too imperfect, the heckling a bit too practiced.  I remembered that back in "the day" people had this custom (actually, they probably still do) where a family would hire professional criers to attend the funerals of loved ones.  Can't have people thinking that Uncle Louie was unpopular, now can we?  Then my "Aha!" light went on.  The hecklers in the audience were pros, and they were trying to look like amateurs.  No doubt, they worked for lobbyists.

Now I have to question this indictment of our "democratic government".  Literally everyone in the hearing was posturing for someone, and each was insincere.  They were just giving people such as myself a good show, so as to convince us that everyone is doing their job in Washington.

Yeah, they were all doing a great job.  Too bad they were doing the wrong thing, really well.  I wonder if they ever got around to finding the truth they were so desperately pretending to search for.

Thursday, December 13, 2007

Too many homes?

A while ago I was lamenting the number of subdivisions that are cropping up.  They are everywhere.  It seemed as though anyone with a few acres was building a subdivision.  At one point I mentioned to someone that it seemed as though the housing market might become saturated with new homes.  The person smirked a bit and asked "Do you think people are going to stop having children?"

Well, no, but that doesn't mean the market can support an infinite number of new homes.  It appears that the National Association of Home Builders may share my opinion.  After the fact.  Now if only they would clean up some of the myriad of half finished subdivisions littered about.

Friday, November 9, 2007

Marketing Snafu

Yahoo! made the mistake of sending me this cute button that says "Yahhooooo" when you press it.  It wasn't really a marketing snafu until I noticed the programming header on the bottom of the button...




Friends, fellow mourners, today we bid a final adieu to Lawnmower.  Lawnmower was proud of the work that it did, performing for the past 12 years with only a single oil change.  Last season was nearly Lawnmower's last, however it was able to faithfully groom our estate this Summer as well...despite the grass protruding from the cracks around the top of the deck.  The final undoing of Lawnmower was not complete deck failure, as we thought it might be.  It was not an engine seizure.  The final failure was in the mounts for the fuel tank.  While we considered repairing it, there still remains the worrisome threat of complete deck failure.

Lawnmower, we wish you well, trimming the gated community in the sky.

DSCN6046 DSCN6048

Wednesday, November 7, 2007

Naughty Boy

This morning, I was a rebel.  A punk rocker.  Like other punk rockers, driving to work in their Cadillacs, listening to their punk rock on premium satellite radio, commuting to their desk jobs, wearing slacks and sweaters, I was a punk. 

The only problem was that I didn't feel very punk.  In order to really be a punk one must be angry, one must be a rebel.  The I was hit with a stroke of genius!  Thanks to the politically correct age we live in, I had the perfect way to express my rebelliousness!  I would throw off my shackles of fuel economy!  When the next stop light turned green, I let my accelerator foot sink all the way to floor.

The car was stunned.  It paused in disbelief.  It probably wondered if I had completely lost my composure.  I had.  After reflecting on the oddity of the moment for a few seconds, the car roared into compliance.  Well, it roared as much as a twelve year old family sedan can roar.

As we accelerated, I stared in disbelief at the fuel gauge.  It was mobile!  My wallet started to ache in my back pocket.  All too soon, I reached the speed limit of 35 miles per hour and let my foot slacken.  No use in getting a speeding ticket.  I'm not that punk.

Saturday, October 27, 2007


Our daughter is 13 months old now.  Her bedroom is attached to our living room, and has a glass door on it.  We thought that would make it easy to watch her when she was little.  It was.  Unfortunately, things have changed.

Evelyn knows a few words.  Dog.  Cat.  Dad.  Aimee and I are both in school, so we study.  Our desks are in the living room, and mine is visible from Evelyn's crib.  A 0930071456a couple of weeks ago she seemed very tired, so we put her in bed for a nap.  We waited for the noise from her room to subside, then we crept back to our desks.

My bottom hadn't even touched the seat when I knew I had been thwarted.  A cacophony of "Da! Da! Da! Da!" came from the room adjacent the living room.  I risked a glance, and sure enough, Evelyn was standing in her crib.  Arms over the top, looking right at me.  So much for the glass door.

Wednesday, October 24, 2007

The "Yes" Man

A while ago, I worked for my brother.  It was a tremendous learning experience.  We built a business to business web site.  It was a really great product, but it came out just about the time the DotCom bubble burst.  Looking at the program now, I'm still impressed with how well it turned out.  It is still the most functional and useful piece of browser based software that I have ever seen.

It used to be that Alan would tell me what he wanted changed about our program, and I would balk.  My too frequent refrain was "Can't do it."  Alan would have none of my realistic, logical nonsense.  "Yes you can", he'd correct me, "and you'll need to finish this change and one more this afternoon."  Sometimes, of course, the schedule had to shift a bit...but the change always happened per his specifications.  Always. 

Many of us try to bend our business model to fit technology, but Alan was the other way around.  He bent technology around the business.  That's the way it's supposed to work.  Technology changes a lot faster than stable business models.

At work today, I miss having my brother sit on the other side of the room, making outlandish requests and throwing the occasional missile at me.  When we work with people who know precisely what they want, and will accept nothing else, they inspire us to do better work than we thought possible.  Even in the absence of my old boss, mentor, and brother I try to keep him in mind when I get technology requests.  If my memory is working well, I catch the "can't" before it gets out of my mouth and replace it with "Sure, we can do that."

Tuesday, October 16, 2007

Cloaking Device

When my wife and I bought a second car, I wanted something large enough to pull a trailer, yet economical enough for daily driving.  The solution was a Cadillac Sedan Deville.  Ours is a '95.  It comfortably seats a family of 10 and gets 26 MPG on the freeway and about 22.5MPG for my daily commuting.  Not bad, considering the 4.9 liter V-8 shoehorned under the hood...sideways.

Recently I completed work on my new invention: a cloaking device.  The Cadillac was the obvious choice for testing my new invention, so I installed it yesterday.  During my morning commute today, its functionality was evidenced by the other drivers' complete ignorance of my presence on the road.

You may be skeptical.  Perhaps they just didn't see me, you may be thinking to yourself.  The SS Deville takes up an entire lane, leaving only inches on either side.  The rear turn signals are literally over a foot high, and they are augmented by front turning lamps.  A turning lamp, by the way, is a headlight aimed out the side of your car.  It illuminates the lane next to you, and all the houses within 1/4 mile of the road.  Give or take 10 feet.

The cloaking device clearly works because despite its size, and copious use of turn signals, the SS Deville remained completely undetected this morning.  Nobody noticed the spectacle of illumination during lane changes.  Every other driver overlooked our lane filling presence.  It would have been a serene drive if it weren't for the confusion caused to other drivers when my car magically appeared in another lane, despite having been previously invisible.

Friday, October 12, 2007


A few weeks ago I popped into my new bank to make a deposit.  I handed the money and my driver's license the teller.  She blinked at me.  "I need to make a deposit" I explained.  The poor woman looked stricken.

"You need a deposit slip to make a deposit."  I could swear she was smirking at me.  Unfortunately I didn't know my account number.  This had never happened at my other bank.  After much haggling I extracted my account number and a blank slip from her, which she insisted that I complete myself at the counter.  Why was a deposit slip such a necessity?  She couldn't explain it, other than to tell me the computer required the slip.  The look on her face told me that she wasn't inclined to explain anything to me without just cause.  By the way, her name was "Joy".  That's an irony.

With the installation of the first computer used by bank tellers began the demise of customer service.  No longer was a person faced with the prospect of telling a customer "I don't want to help you."  Instead, a person could simply declare "The computer won't let me!"  The much maligned computer began its trek as a customer service scapegoat.

Now that we have computers everywhere, customer service suffers accordingly.  Programmers such as myself typically write programs in a way that makes it difficult (preferably impossible) for people to enter data or complete operations that we don't like.  Sure, situations may warrant a personal touch , but we have made the assumption that the person using the computer doesn't know their job as well as we do.  We're saving them from their own mistakes.  I can't imagine why people claim that programmers have poor communications skills.

This idea has been taken to such an extreme that we have millions of workers who are not allowed to make decisions.  They are not allowed to use their own judgment.  The don't have the latitude to solve problems, because our society is afraid they might make the wrong decision.  And they would, once in a while.

Empowerment happens when we begin to trust people to understand their own jobs, and make the right decisions.  Empowerment improves customer service because the employee has the latitude to do the right thing.

I was saddened about the recent death of a woman in the Phoenix airport.  Disclaimer:  Carol Ann Gotbaum should have been escorted by a family member.

She was approximately one minute late for boarding her flight, and they wouldn't let her on.  Supposedly she wasn't allowed to trade flights with another passenger for "security reasons".  What if someone had taken the time to realize that she had an emergency?  What if that person had been willing and able to help her?  Make no mistake about it.  An airport is an awful, lonely, terrifying place to be left.  Especially for someone en route to a substance abuse treatment facility.

It isn't good enough not to help each other.  This craziness has to stop.  Let's give our employees the latitude to do the right thing, and let's start expecting people to do more than perform the bare minimum to keep their jobs.  A simple smile and exchange of pleasantries can go a very long way.  I think it would have done an immeasurable amount of good for Ms. Gotbaum.

Update: I just checked my RSS feeds, and Seth Godin seems to be on a similar page today.

Wednesday, October 10, 2007

Ah, Sweet Mostlysuccess!

A good friend and I have had a long standing "contest" to see who could build a small robot to navigate a path first.  Now, my cohort could have beaten me to the punch on this any time he wished.  His technical expertise is far beyond my own.  He hasn't, though, and this has been a great opportunity (several years in the making) for me to learn about embedded electronics.  After all this time, I am pleased to announce the completion of a very imperfect path navigating robot.

The tracking algorithm is very simple.  The robot travels forward until it gets close to a barrier, then it "looks" around to find the best direction to turn.  It can choose to turn 45 degrees either direction, however I biased the code for 90 degree turns.  If the 45 is truly the best path, it can be utilized.

The bot appears a bit epileptic.  This is because it has a tendency to track ever so slightly to the left.  Every few clock cycles I have it track back the other direction. 


This view shows the front of the 'bot.  I love the Sharp IR sensors.  They make it look like Johnny 5.

In the picture below, you can just make out the circuit board.  The two cables to the left are for programming and serial communications.


Like other, similar projects, this one uses two servos to move the bot forward.  They  have been modified to turn continuously instead of moving to specific angles.



The video below shows the bot navigating a path.

There are a whole slew of improvements I could make.  The bot really should have four stationary sensors to help it track a straight line.  This would help eliminate the stutter when it moves.  Also, the Sharp IR sensors are bad in two ways.  First, their range is only good for about 3 ft.  Even that is questionable, and if an object gets too close, the sensor reports that it's farther away.  That could be a problem.

There is also a lack of electrical power on the machine.  It could really benefit from using a rechargeable battery pack.

Saturday, October 6, 2007

The Equalizer

Last night as I sat on the couch, I couldn't help but to admire my quadriceps.  Sure, they're not so large any more, but they are still quite defined.  Inside, I smiled smugly.

O' treacherous conceit.

This afternoon my brother's father-in-law sent me an email asking if I would be interested in joining him for a ride.  I haven't been road riding much lately, and I have never had an opportunity to join a veteran cyclist for a road ride.  In my haste to check the pressure in my tires and fill my water bottle, I almost forgot to call Ted back.

About 4 o'clock he called and said he'd be at my house in about 15 minutes.  I raced outside, buckled my helmet, and starting warming my legs up.  After a short eternity, Ted arrived.

The first mile was pretty easy.  Despite my complete lack of physical discipline over the last year, my legs are still in relatively good shape.  My cardiovascular system is another story.  After the first couple of miles I started breathing heavy.  Ted was still able to converse as though we were sitting still.  After 5 miles I was seriously out of gas.  Remember, though, Ted invited me along on his ride.  I tried not to show it, but my speed kept dropping and my gasping kept increasing.  My speech became a wheezing, gasping gurgle.

After another couple of miles, Ted offered that I might want to take a cutoff instead of riding the rest of the loop.  I didn't even try to put up a facade.  I just gurgled, waved, and turned.  Immediately prior to turning, I had been having chills.  Did I mention that is was 86 degrees today?

Once I turned away and left Ted to enjoy the remainder of his ride, I coasted.  Sweet relief.  After about six hours, I finally got back home.  At least it felt that way...having ridden half way across Michigan.  Aimee was encouraging: "I'm surprised you're back already!".  I checked my watch.  It had only been a bit over an hour.

Warming myself in a hot shower, I reflected upon how atrophied my legs looked from my lack of exercise.

Thursday, September 27, 2007

Sometimes We Need Emergencies

You may have heard of a perfectly awful situation called "Munchausen Syndrome by Proxy".  In these situations a parent will insist that their child is ill, and even fabricate or induce symptoms in the child.  If you've seen The Adventures of Baron Von Munchausen, you may recognize the similarities.  In the story the Baron spends a lot of time not helping people.  If he fixed problems before they were problems, he wouldn't be much of a hero.  Heroes fix big problems, not little ones.

Many of us see and try to fix problems every day, but we are often stymied by people who do not perceive the same level of emergency.  If we repeatedly try to impart our urgency, eventually we'll usually get tuned out.  Perhaps the Baron had a better approach.  Fabricate the solution, and wait for an emergency to arise.  Then people will be ready to listen.

Monday, September 24, 2007

Chunking and Self-Discovery

When people mentioned trying to "find themselves", I always wondered what they meant.  How does one "find" their "self".  Over time I realized that the definition of this discovery probably changes from one person to the next.  My own definition is to "know ones-self and understand what one can reasonably expect from themselves."  For example, I know that I have a difficult time letting a problem go unsolved.  I can expect myself to battle with keeping appointments if it means I have to stop working on a problem.

You may have heard of "chunking" in the psychological sense.  If you haven't, it is the act of dissecting an experience and filing away the important parts.  Your brain does this for you because it would be silly to remember every minute detail of every experience.  At one time or another you probably had a difficult time trying to remember something.  This is because it was not important.  Not to your brain, at least.  Perhaps you are thinking "But, it was really important."

No it wasn't.  Not to the "real" you.  If you examine what you do and don't remember, I suspect you'll find out all kinds of things about what's really important to you.

Wednesday, September 19, 2007

Strange Bedfellows

You've surely heard of the scandal surrounding Senator Craig.  While he should certainly have known better than to plead guilty to any charges, I'm not entirely convinced that the police were acting ethically.  In fact, they might have been acting illegally.

My idea of political nirvana is a virtual stalemate.  Most of the laws we need are already on the books, and the really important ones will still get passed.  The rest are simply a waste of time and complication of the law.  One of the great tools for maintaining that stalemate, and exposing the absurdity propagated by our government is the legal system.  My conservative friends usually shame me for cheering on the ACLU, but who better to stall legislation and inspect the interpretation of the law?

You can imagine my surprise, and mirth at the idea of the ACLU defending Senator Craig.

The Great Coffee Scam

At our office, we've got these huge coffee machines.  One on each floor.  These monsters have three burners, brew a pot of coffee in under a minute, and can burn an entire pot of coffee in less than 1/2 hour.  Not coincidentally, the stuff is so hot that it's undrinkable until it cools for several minutes.

On the first floor we've started using air pots.  The coffee stays at a pleasant temperature without burning for hours.  Why would anyone make a coffee machine that burns coffee so efficiently?  Maybe it's because we were silly enough to get our machines from the same company that supplies our coffee?  After all, the only cure for a burnt pot of coffee is to brew a fresh one.

Monday, September 17, 2007


In a recent post I complained about the state of social security, comparing it to a Ponzi scheme.  In a recent interview with CNN Money, Alan Greenspan appears to agree on the urgency of the situation:

What should we be worried about most right now in terms of the economy?

Strangely enough, I think it's politics. We have a dysfunctional political system in the sense that there are very serious fiscal problems out there, most importantly Medicare. As best I can judge, when the baby boom retires, we are going to have to either raise taxes very sharply or cut benefits by half. No politician wants to confront this. And this is a very sad event because what's at stake here is the fiscal stability of the American government.

Friday, September 14, 2007

Pass it On

You might have seen the billboard featuring Christopher Reeve, with the caption "Super Man" on it.  This billboard has several brothers along our freeways, inspiring virtue in passing drivers.  One day, I became curious what good soul was sponsoring these billboards.  As it turns out, they are the product of the Foundation for a Better Life.  Interestingly enough, the Outdoor Advertising Association of America notes the fifth stage of the "Pass it On Campaign" on their Public Service Campaigns page.

This morning, another billboard caught my eye.  It told me that "Save your money, and one day it will return the favor".  The advertisement was sponsored by FeedThePig.Org.  "Boy, that's good advice, " I thought to myself, "people really don't save enough money.  Who would sponsor such good advice?"  The answer came to me quickly enough.  Banks.  As it turns out, I was close.  The sponsor is the American Institute of Certified Public Accountants.  When I realized that this good advice was probably paid for by someone who would benefit from it, I was irritated.

The Outdoor Advertising Association of America certainly cannot fill all its billboards, all the time.  As a result it can donate billboard space to charitable foundations, like the Foundation for a Better Life.  This donation becomes tax deductible, thus recouping some of the expense of an otherwise unoccupied billboard.  Similarly the AICPA can drum up more business for itself, and get a tax deduction at the same time by creating the Feed the Pig organization.

Does a dual purpose behind a message negate the meaning?  Yes.  Should it?  Probably not necessarily.  The Foundation for a Better Life has certainly made my commutes, and those of others more pleasant.  The foundation may actually have inspired a few "random acts of kindness" here and there.  A nice use of an otherwise obnoxious billboard space.  Does Feed the Pig offer good, or bad advice?'s good advice, espousing the virtues of sound fiscal management.

Now I'm left wondering how I became such a cynic that my first priority when I encounter a charity is to discover who benefits from it.  That isn't bad either, though, because we should be aware of who may be manipulating us.  Now that I know, I still enjoy both sets of billboards while I commute.

Friday, September 7, 2007

National Ponzi Scheme

As I read through the news this morning, I came across the term "Ponzi Scheme".  I've never looked up the definition, so I figured now would be a good time to do just that.  It turns out that a Ponzi scheme is a rouse destined to fail.  "Investors" are promised enormous "returns" on their investments, which they get because they are paid by other "investors" money.

Sound familiar?  In case your primary residence is under a rock, let me tell you something awful.  Social Security is a revolving door.  Money paid in by people today isn't put into a special account.  It is paid right back out as a benefit to someone already using the system.  The system works really well as long as the number of workers in the country always increases.  If the number of workers decreases enough, and the number of people using the benefits increases enough then the system will collapse.  As a matter of fact you may already have heard that people are having fewer children, and living longer.

As with so many other ideas, someone else has thought the same thing.  Check with the All Seeing Eye.  I'm pretty sure we should treat this like other Ponzi schemes.  Shut it down and throw someone in prison.

Thursday, August 30, 2007

Store Credit

This CNN article details Toys R Us' recall of crayon and paint sets due to excessive levels of lead.  Again, straight from China.  What caught my eye was this bit from the article:

The CPSC said that no injuries were reported but advised that consumers should stop using the product immediately and take the products away from children and return the item to the nearest Toys "R" Us store for store credit.

Let me try to get something straight here.  I'm a little slow due to the Chinese lead popsicles I've been enjoying recently.  Toys R Us is poisoning the children that people buy things for, and they won't even issue a refund so the consumer can buy products from another outlet?  Shameless.

What I find interesting is that had these products been made in the United States, the factory and the product would likely have been tested for lead regularly.  We don't even trade property with lead in it.  Do we simply not test imported products for contaminants? 

Perhaps I used the wrong approach for manufacturing my Mercury Slushy product.  Next time I'll farm the work out to China; at least that will keep those nosy U.S. government regulators off my tail.

Wednesday, August 29, 2007

Buzz the Tower

If you happen to be an child trapped in an adult's body, you'll be pleased to know that the toys have gotten cooler, and cheaper, than when your body was a kid.  Recently while grocery shopping, this twenty dollar remote control airplane leapt off the shelf and into our shopping cart.  It was so cute I couldn't just send it packing, so I brought it home with us.

Our first several attempts to fly the little airplane were met with extravagant failure.  Until the little machine gains enough speed, it cannot create lift.  That basically means that launching is a crap shoot.  If it stays aloft long enough to get up to speed, it will stay that way for a while.  The first night we brought it home we crashed several times until it finally started...flying!  Since it was finally in the air, I could hardly imagine letting go of the throttle.  That's what got it stuck on top of the hardware store.  Being the tough guy that I am, I asked my wife to get it for me the next day.  And she did.

After a slight modification to the wing, our flights got much better.  After several successful flights I decided that Aimee would have to try it, after all, the next crash might be its last.  I dragged Aimee out to the park, and despite the slightly brisk wind, launched the plane.  It soared roughly overhead for a while, then promptly drifted across the street and landed.  On top of the high school.  We left a note for the custodial staff, and they saved us with a phone call early the next morning.

That evening we both had several good flights, so the next evening I was excited to try again.  Now...this airplane is made of very thin foam, and it has very tiny propellers.  Each time it crashes, the aerodynamic properties are altered one way or another.  This can lead to unpredictable performance.  Such as happened last evening.

After several crashes I tried to launch again.  The plane climbed to about 15 feet and veered hard to the right and started diving.  I pressed the control stick left, but it ignored me.  Repeatedly.  At garyFlyingany given time in our small town there are probably only a total of 10 people on bicycles.  What are the chances that this plane would behave insubordinately at exactly the same time that an older gentleman was riding by on a bicycle?  If he hadn't ducked at precisely the right time, I'm afraid he would have found a small yellow airplane sticking out of his ear.  He did duck, though, and I managed to escape the situation looking like a punk kid trying to "buzz the tower".

Monday, August 27, 2007

Rewarding Bad Behavior

When our daughter has a tantrum, it is only with great difficulty that we can resist the urge to sweep her up and console her.  We manage to resist this urge because we understand what the long term implications of rewarding bad behavior are.

In the United States, the market economy supposedly balances good and evil, corporate and consumer interests.  The market economy is supposed to prevent companies from behaving badly, because such behavior might well put them out of business.  Unless of course they happen to be Amtrak or an airline.  Or an automotive manufacturer.  You get the picture.  In reality, the government routinely bails out bad actors-especially large ones.

For the past eight years, I have flat out refused to do business with Citi.  A clause in their credit card language indicated that a late payment would earn the borrower the default credit rate of 20 something percent.  That's pretty normal, except in this case that late payment could be to any lender.  Imagine, make a late payment on your Sears card and pay 20% interest to Citi.  No thanks.  That's bad behavior, and a good way to piss off your customers.  Citi should have to pay a penalty for such lousy decisions.

Did anybody ever doubt that the rash of exploding ARMs would end badly?  Really?  I didn't, and I'm not even a banker.  The idea that banks were giving bad loans to people with mediocre credit really irritates me.  What's worse, by bailing these banks out of trouble, the US government encourages more bad behavior.  The market economy might actually work, but at this rate we'll never know.

Don't take my word for it, lots of smarter people agree:

The escape of the enablers

Sunday, August 26, 2007

Tomato Season

I'm not much of a gardener, but my wife enjoys keeping a garden.  This year, she planted a modest number of tomato plants.  Surprisingly they are doing really well.  This morning as I cleaned up the dishes from breakfast my eyes rested upon yet another bag of tomatoes.  These ones, I decided, would become tomato sauce.

Does one skin tomatoes when making sauce?  I'm sure there is a raging debate about this topic, but I decided I would skin mine.  I started in on them like they were potatoes but of course that didn't last long.  Remembering Grandma Holbrook's tomato skinning method, I put a pan of water on to boil and proceeded to scald my tomatoes.  Pulling the loose skins from the fruits, I smiled to myself.  Neither Grandmother nor myself could ever have predicted I would one day make tomato sauce, and can the sauce afterwards.

Tomato season at grandmother's house was my least favorite of all seasons.  She lived in a mobile home, which was stiflingly hot in the summer.  Add to that the heat and steam of several water bath canners, and the smell of unseasoned, boiled tomatoes.  It was like sitting in a tomato juice sauna.

For some reason I really enjoy doing things myself.  Sure, we could just buy tomatoes that are already canned.  We could just buy tomato sauce.  Preserving tomatoes may not be necessary any longer, but it is the closest thing we have to a family tradition.  I'm sure that Grandmother is enjoying a good chuckle even as I write this.

Thursday, August 23, 2007

Who was that?

Aimee and I routinely take an evening walk downtown.  Since we live in a small town it isn't unusual for someone to honk as they drive by.  It is a bit unusual for us not to recognize the car.  This exact event occurred the other day.  A woman in a white Mercedes honked as she drove by.  We racked our brains, and could think of nobody that we knew who might drive a Mercedes.  The only new acquaintance we had made recently was the owner of the daycare we just moved our daughter into, but we dismissed the notion almost immediately.

Yesterday Aimee solved the mystery of the white Mercedes...when she was picking our daughter up from daycare.  At the end of the long drive leading to the house, she encountered the same car...with the owner of the daycare behind the wheel.  Taking out the garbage.

When Aimee called and told me of her discovery I started running the numbers in my head.  Our monthly daycare bill is only $40 less than our house payment, including escrow for taxes and insurance.  Granted, we have a small house.  So our provider has 12 children at slightly less than a house payment each.  She pays two assistants, and provides food and supplies for all the kids.  She maintains their playground, lockers, toys, and buys craft supplies.  She deals with the personalities and intricacies of twelve children, and twenty four parents.

After doing the math I came to the startling realization that she isn't charging us enough.  She might drive a Mercedes but she isn't earning nearly enough money to cover the amount of work she does to care for the twelve children in her charge.  When our next bimonthly house daycare payment is due, I will pay it with a bounce in my step,.

Wednesday, July 25, 2007

Just say no to stupidity

Today, again, I had to fill out a bunch of multi-factor authentication forms.  In case you haven't had the pleasure, it's where your bank decides to rip all the speedy benefits of online banking out of your grasp because so many people are too stupid to avoid e-mail scams.

The enrollment consists of selecting a picture you will see when you begin your journey to log into your banking website.  Then you have to choose which of your high school friends was the biggest saint, and also you will be asked how many toes on your right foot have hair on the third knuckle.

You know, it shouldn't take me ten minutes to log into any site.  Not to online bill payment service gets broken every time some jackass devises a new security system.  Guess what?  You can't do anything about stupid.  Stupid people will always find a way to screw themselves, no matter how much you try helping them.  It's a sad fact of life.

The most annoying thing is that there are obviously a lot of flunky network administrators out there.  Hey, guys, maybe you should get off your asses, and check out CardSpace or OpenID.  At least give your site visitors the choice to use sensible authentication-don't just go for the worst idea you've got because it's the easiest!

What will be the next fad in online banking security?  Driving to the bank to retrieve a four page one use password that only works for ten minutes after it gets printed?  I'll bet that a bank somewhere is working on just such a secure system.

Friday, July 20, 2007

Stormy Seas

Last evening I arrived at home exhausted, but otherwise in good shape.  Like any other good parent I proceeded to place my struggling child in her crib so I could get some rest she could get some much needed rest.  As I lay on the couch with my eyes closed, strange things started happening...

The skies grew dark and menacing, and I soon found myself on a small boat in the midst of a vast and angry ocean.  The wind picked and began to rock my small boat.  Soon the waves grew until they were lapping onto the deck.  What the...

I opened my eyes and found that I was in fact, still lying on my couch at home.  Strange.  Then, I felt the unmistakable lurch of the sea tugging at my stomach.  I squeezed my eyes shut and gritted my teeth.  Soon my mother would arrive so we could all walk downtown and listen to the "Thursday Night Music" in the park.  Fearing the worst, I tried settling my stomach with a Coke and a slice of toast.

While the ocean storm continued to brew at the edge of my consciousness, we began our walk.  When we arrived at the park I laid down in the grass and closed my eyes, taking long, purposeful breaths.  My boat lurched violently and gyrated in ways that no vessel should ever have to move.  My eyes snapped open, and I hastily excused myself to go back home.  My wife suggested that everyone else in our party had had their fill of music already, and that we could walk back as a group.  I agreed, but it soon became clear that my sense of urgency had been lost on my family.  Gathering the dogs, I fled from the park and began walking home-choosing a route that hid me behind local businesses.

Upon arriving at home I did what any well adjusted person would do.  I leaned over the toilette and extended a tentative finger into my mouth, toward my epiglottis.  It shrank back in fear, but I persisted.  My throat constricted and then let go as my stomach gave a small lurch.  The results, however, were unspectacular.  While the urgency of my situation had been somewhat abated, the severity was unchanged.  I crawled into bed.

While in bed, with my eyes shut, the sea returned to torment me.  Water washed unabashedly onto the deck of the boat and tried swamping the cabin.  Between the wind and the waves, the boat reeled from one extreme side to another...returning upright by some magic.  After several hours of thrashing about on the sea, relief finally came to me.  It came with no remorse, nor reserve.  Unlike my half-hearted attempt earlier, this one started in my toes and gained momentum as traveled up my body.  Oh sweet relief!

Now, I live in a neighborhood where it is common for residents to spend much of their time on the front porch of their homes.  This evening was no different, and a veritable cacophony came from the house across the street.  When I stepped out the front door to empty my trash can, a hush came over the neighborhood.  Apparently they too had witnessed my battle against the sea, and their quiet reverence served as a sign of respect for my victory.  Or something like that. 

Thursday, July 12, 2007

Need I say more?

I found an article today about a toddler and his mother, who were unceremoniously removed from an airplane because of the child's talking.  In a previous post I mentioned the complete disregard that airlines have for their passengers.  If this doesn't confirm my opinion, nothing will.  The child wasn't even screaming, he was simply being repetitive.  The best part?  They were on a Continental Express plane.  Anyone who has ever flown on one of these will attest to the fact that had the flight attendant waited until they were in the air, nobody would have been able to hear the child anyway! 

By the way, if you want to write and tell this company what jerks they are, you can do it here (sample letter included):

July 12, 2007

Express Jet

700 N. Sam Houston Parkway West, Suite 200

Houston, TX 77067

Dear Express Jet,

As it is clear that your company requires additional guidance regarding treating your customers respectfully, it is my solemn duty to inform you of your failure regarding Kate and Garren Penland. Due to the fact that least some of your staff obviously have serious anger management issues, I have taken it upon myself to aid in the rehabilitation of your company by finding an anger management company for you.

Anger Management Counseling
513 Thornton Rd
Houston, TX 77018
(713) 695-5242

On a positive note, both Detroit and I would like to thank you for reminding potential passengers why taking the extra time to drive is almost always better than subjecting oneself to the humiliation of flying.


Gary Holbrook

Tuesday, July 10, 2007

Beauty when you least expect it.

Tuesday, July 3, 2007

Cursed Enums

When you're writing code using an object model, everyone likes to point out the obvious benefit of developing using enumerations.  The problem is that the database probably has certain values that represent the values of your enums.  How to convert between the values and the names?

public QuoteStatusType QuoteStatus
        return (QuoteStatusType)Enum.ToObject(typeof(QuoteStatusType),int.Parse(CurrentRow["QuoteStatus"].ToString()));
        CurrentRow["QuoteStatus"] = (int)Enum.Parse(typeof(QuoteStatusType),value.ToString());

Thanks C# Station

Wednesday, June 27, 2007

Who Writes the Program Here, Anyway?

 The diagram to the left represents a very simple quote.  Each quote contains multiple lines of business, lines of imagebusiness contain products.  Easy enough.  If the quote header is in a state which renders it read-only, however, none of its children should be editable either.

Faced with the challenge of making this work yesterday, I am ashamed to say I almost gave up.  This object model is easy to understand and manipulate, but when mapping to a database the object model begins to crumble.  This was exacerbated by some very early design decisions in our back-end library.  Our design revolved heavily around run-time modifications.  If a vested party asked for a new field on a screen, we wanted the ability to add the field at run-time.  We used business objects to implement business rules.  These objects represent tables and inherit from a single source.  At runtime we can change the BO for a selected table using reflection.

This approach uses the tenets of object oriented programming in working with and representing tables of information.  It does not allow for modeling of objects as represented in the figure above.  Everything was peachy until I got stuck between large releases.  The release version of the configuration file would continue to get out of sync with the development version.  I switched the model a bit, and now runtime changes can be saved...but they must be compiled into the main executable.  I lost my ability for runtime modification, but I still didn't have to design 80+ individual screens at design time.  I can drag fields around at runtime and save my changes.

Back to my problem from yesterday.  In order to determine the state of a quote header at the product level, I would have to find two queries in the configuration file, execute them, and then use the results to determine if the quote was editable.  What a pain.  Worse, if someone unwittingly changed the configuration, this subtle piece of code would stop working. I almost threw my hands up in desperation.  Perhaps I would make it impossible to drill into a quote that was read-only.

Then I started to realize some things.  I'm the coder, not the library of functions.  Runtime design is high maintenance for the reasons I just mentioned-there are very few compile time sanity checks.  Why not use application resources to associate business functions with stored procedure names and descriptions, and then create a stored procedure executor?  Then I could have the compile time checking I need, and the flexibility I crave!  I did it, it works, and it works well.  More importantly though...I realized that version three of our library needs to be designed around a real object mode, not a "sort of" object model.  The very reason I didn't like my own library is the very reason I don't like other libraries: lack of flexibility.  Finally, in order to make my new vision work...I'm going to need to change my coding habits.  I've been breaking the rule of designing to interfaces instead of classes.  Now I've got a bunch of display classes that only work with SetTableBO instead of something more flexible like iSetBindable.

Monday, June 25, 2007


During our routines, it is so easy to act in a way that ignores the feelings of the people around us.  This is a crime with which I am intimately familiar.  In order to remind myself that I am not, in fact, the center of the universe I printed out the definition of compassion and tacked it over my desk.  From Princeton:

compassion: a deep awareness of and sympathy for another's suffering

Something happened today that really bothered me.  I rode my bicycle home from the office, and it was hot.  There were three cars on the side of the highway on the way.  The first was helped off the road by another motorist.  As he drove away, she was dictating directions into her phone.  No worries there.  The third car was on the opposite side of the divided highway, and was being helped by three other cars.  The second was on my side though, and I stopped to see if I could help.

At first I thought the car had a flat tire, but it soon became clear that there was something else wrong.  The driver was probably about 65.  He wore a ball cap, used a hearing aid, and had a complete set of tools in his car.  In fact, he had on leather work gloves.  As I inquired about the state of his vehicle, he explained that it had started shaking violently as he drove down the highway.  He was trying to determine why.

The gentleman was very proud of his car-an old Ford Escort (or similar car) with a diesel engine that he claimed got 50 miles per gallon.  He went on to explain that it had 1/4 of a million miles on it.  I believe him.  Unfortunately I couldn't help.  This was more than a tire change, he already had a phone, and since I was on my bicycle I could hardly give him a ride.

When I asked if he had a phone, he said he did and he could call 911 if he had an emergency.  His intention was to try to return to Lansing to further diagnose his car.  I wished him luck and took my leave.

Riding away I realized something shameful.  There was not much I could do to help him, but I didn't even get his name.  Is it possible to have a deep awareness of, and sympathy for another person if you do not even take the time to get their name?  It was then that I realized how out of touch my perspective is.

My wife and I have our own "tribulations", but they are completely different than the trials of this man.  We have a supportive marriage, a wonderful daughter, and everything else we need to maintain our relatively modest lifestyle.  We drive two cars, we both go to school, and only one of us works.  We cannot imagine being unable to call a tow truck for a short tow.  We do not know what it is like to drive a car 250,000 miles.  Any time we have a problem we can find someone to help.  911 is the last number we would ever call.  Given the above information I have come to a sad conclusion.

I am incapable of feeling compassion for this man.  Not because I do not want to, but because I cannot have a sympathy for his suffering because I am so far removed from it.  My perspective is so different that I am unable to fathom his situation.  And I couldn't even show the curtsey of asking his name.

Friday, June 22, 2007

Good Riddance to the Airlines

An article in the Lansing State Journal today proclaimed that air passengers should be on their best behavior to "avoid hassles".  That is precisely the reason that the airlines should be allowed to go out of business.  No more help from the federal government.  Any business that routinely treats their customers like trash deserves to fail miserably.  How about this approach: maybe the airlines should go on good behavior for a refreshing change!  Nothing irritates me more than paying a small fortune to a company so that they can abuse me for a day.  Does that really make sense to anyone?

Since the airline industry has demonstrated a continual contempt for passengers, I can only look forward to a day when I can declare "Good riddance, airlines."

Those Crazy Law Students

First, I'd like to apologize for note getting a picture to demonstrate what I'm talking about.  This afternoon as I was returning from an errand, I walk past our local law school.  In passing, I observed a scooter chained to one of the bike racks.

Gas Scooter (United Kingdom)Now, this thing is pretty large.  It caught my eye.  Without really considering what I had seen, I kept on walking.  At the end of the block I came upon another building from the same law school, and another scooter chained to a bicycle rack.  My first thought was "What kind of cheapskate buys one of these things in order to scam free parking at the bike rack?!  A moment of reflection reminded me that I was standing outside a law school.  Then I realized, these are perfect for law students.

They don't cost much to run.  Parking is free.  If you get hit by another motorist, you can sue them and get credit for an independent study project!

Thursday, June 21, 2007

Now we'll try posting!

I wrote this post just to test out Windows Live WriterReally cool stuff.  It can't post images, even though one appears below.

s41170ca105356_5_0 How did I work around this limitation?  You can actually configure an FTP server, and Live Writer will post the images on your FTP server and link into the blog.  Problem solved!  Otherwise, a very promising piece of software.

Sunday, June 17, 2007

The Pancake Nazi

Aimee has been telling me for quite a while how wonderful Saugatuck is. We had never gone there together, so we decided to spend a night there as part of our anniversary tradition. It is a pretty neat place, especially the state park.

While were were searching for a place to have breakfast, we wandered past Ida Red's. The line was out the door and down the block, though, so we didn't stop. On our way back through we were ready for lunch, and they were able to seat us immediately.

The patio was fantastic, with all kinds of foliage visible out the back of the restaurant. As we perused the menu, we saw an item that made us think of my brother. My brother is the world's greatest connoisseur of pancakes. In fact, finding a place he might like the pancakes is a huge achievement.

Yep. Alan might like those. What you can't see on this blurb of menu is their description of the ingredients. They claim to use only fresh fruit and real butter. We were just about to call and tell my brother that he should come try these out, when we saw the show-stopper\deal-breaker on the back:

Hmm. Have I ever seen him order off a menu without tweaking it first? Maybe he wouldn't like this place so much after all....

Wednesday, June 13, 2007

4 Years!

Thank you Aimee, for the best seven years of my life. Our four years of marriage have been wonderful, and I'm looking forward to many more!
Happy Anniversary!

Yikes! What a day!

This morning, I arrived at the office at a reasonable time. Unfortunately the doorway wasn't wide enough to accomodate the chip on my shoulder, so I had to slide in sideways. When you start your day with a bad attitude, things always seem to get worse. Despite that, it was a great day. Being irritable all day has left me completely exhausted though.

Or maybe it was the mini-golf at Hawk Hollow. This place is awesome. 18 holes of putting action. No windmills, but there were a couple of sand traps, some water, and a couple of really long putts. Never before could I fathom seeing divots on a putting green. I stand corrected. In most of the pictures, bare feet are visible.

Following closely on the heels of putting at Hawk Hollow, a coworker invited me to ride out at the Rose Lake Research Area for a mountain bike ride. What a rugged place to ride a bicycle. Great stuff though. It was a lot of hard work, and neither of us knew the trails very well. As a result we managed to push our bikes up a couple of very steep inclines. It was worth it though. It would be really cool to spend a day out there with a GPS, charting a
map (if nobody has already). Why do such a thing? The place is huge, and the trails go all over the place. They have not been intentionally groomed for riding so they don't necessarily follow any particular logical layout. That chances that I didn't get poison ivy are slim, because the stuff was all over the ground out there.

Ok, so I got to do some really cool stuff today. Why the persistent attitude, all day long? The short answer is that I'm an idiot. It is June 13, and I'm still in school. In fact, being in school full time with a young child in the house is a lot of work. It is a rarity that Aimee and I get in bed before midnight these days. Once we finish for the Summer (next week) we've both vowed not to take classes as aggressively, and certainly not so late into the Summer. We're both drained, and at wit's end.

In other news, my match through Big Brothers\Big Sisters was terminated today. They have asked if I would be interested in being rematched. It takes an incredible amount of energy to be in the program. It is rewarding, but it can also be an emotional sink. I worry a lot about my "little". He taught me a lot, and he's a great person...but I worry that without some very convincing intervention, things may not turn out well for him. Naturally I wonder what I could have done better for him. I wonder how I could have been more supportive. There are no easy answers, either. Should I have been more present? Should I have been more assertive? When possible I hooked up with him every week. He never exhibited any behavior problems around me, but I wonder if I could have gotten him to work harder on his education.

Now what? Until I'm finished with school, I don't think I'll do another community match. When I got matched, Aimee and I didn't even think we could have a child. Now we have a child, school, etc. I do think I will probably get into the school mentoring program in August, though. When I finish my degree I'll try to get into another community match. In the meantime, I've been invited to continue corresponding with my little-sans support from BBBS.

There were a lot of great things about our match. We had a lot of fun, and there are a lot of great pictures to boot. He really got a kick out of Evelyn, and even went so far as to give me diaper changing lessons!

Saturday, June 9, 2007

How cute is this!

YouTube is so cool. (may take a moment to load)

Thursday, June 7, 2007

What are the chances?

If you live in Michigan, chances are quite good that you've got serious psychological problems.  That applies of course to yours truly.  The number one reason people claim to enjoy living in Michigan is because they like the seasons.  Right.  We've got the rainy season, when it doesn't actually rain but drizzles for three months.  Then we have the snow season, which lasts from December 15 to January 15, then we have the arctic season, followed by the mosquito season.  Nestled right in the middle of these seasons is the one, and only, worthwhile season in Michigan. 
Summer.  Summer in Michigan has the dangerous and intoxicating effect of making residents forget about all the reasons not to live in this state.  For practical purposes, this season lasts only from about June 15 until August 15.  Tonight, though, is definitely a summer night.  It is about eighty degrees, actively breezy, dry, and clear.  I'm sitting on the back porch in the dark, and I cannot for the life of me believe that there could possibly be any other worthwhile place on Earth.

Sunday, June 3, 2007

Thank you, Mrs. Lance

Our daughter is about 9 months old now. She's like a miniature teenager;she's got her own opinions, but it isn't like she's got a drivers' license. Today was a really long day, as our tiny daughter was full of opinions all day long. She liked the black beans that I cooked, but she only wanted them whole, and she wanted to feed herself. She wanted to try walking, but refused to try balancing herself on the edge of the furniture. Cheerios were good for breakfast, but oatmeal wasn't really good anymore. Maybe only babies eat oatmeal.

It has been quite warm, so tempers all around were relatively short. By the end of the day we were all beat. My wife and I practically counted down the seconds until 9:30. Bedtime. Time for a short rest and a long breath of relief. My shoulders unconsciously relaxed as our daughter's door clicked shut. Now, I need to clarify. Under normal circumstances, our baby is the most pleasant person I could want to spend time with. Now that she's got teeth and some mobility, she really wants to explore. This is understandable, but since she also cannot tell us what she wants, it can be really frustrating for her and for us.

From the other side of her door, I could hear a faint noise. A breath of discontent, if you will. If you happen to be an incredibly precocious toddler, reading this post, please forgive my wife and I. We're new parents. Idiots, really. The following will serve to illustrate that point.

Anyway...this faint noise grew gradually in volume until it became an impressive impression of the air-raid siren perched on the post down the block. If it weren't clear that the racket were coming from our daughters' room, I would have checked the radio for a severe weather alert. Lucky for me, I was doing the dishes. Aimee drew the short straw to find out what might be bothering our tiny bundle of joy...

As I finished the sink of dishes, it occurred to me that this particular protest was unique in both length and intensity. This thought had barely coalesced in my consciousness when Aimee staggered out of the child's room and "tagged up". Uh oh. My turn.

I tried all the usual fixes, but none worked. She was really mad. This was evidenced by her simultaneous attempts to cuddle into my chest and push me away. After playing this one sided tug-of-war for a few minutes I decided to put her in bed, where I could pat her back until she would fall asleep. This grand mal temper tantrum had been in progress for an ear shattering twenty minutes. She must be tired. So I thought. Not only wasn't she tired, she refused to even stay in one place long enough for me to pat her back.

Then I saw it. Or rather, didn't see it. Something was conspicuously wrong with our baby's crib. I called out to Aimee, only to have my worst fears confirmed. In the distance I could hear the sound of a slowly chugging washing machine mocking us. I'm quite sure it was actually jeering at us. Luckily my wife came to the rescue. We both launched into the storage bins under the crib, trying to find the one in which we had placed various items at the conclusion of Winter.

Finally, at the bottom of the last tub we searched, we found the only other potential substitute for the item we had so foolishly tried to clean. No sooner did we cover our daughter with the hand made afghan given to us by the Lance family, than she stopped crying. The soothing effect was nearly instant. Twenty minutes of mayhem because we tried to put her to bed with the wrong blanket.

Thank you Mrs.Lance! We are both looking forward to sleeping tonight instead of staying up all night with our distraught little girl!

Wednesday, May 30, 2007

RSS Keeps Getting Better

I have to admit, when RSS came out I wasn’t really very impressed.  Sure, at dinner parties I would jump on the bandwagon and proclaim the merits of RSS without actually believing.  When RSS feeds started showing up major websites, I perked up and paid a little more attention.  In FireFox, I actually started using RSS for news feeds.  That was really great because I no longer had to actually visit a site to see that there wasn’t anything there worth reading.


DevTeach taught me how much I don’t know.  The problem is, how can I keep up on all this information?  The next time I go to a conference, I’d really like to know a lot more going into the conference.  It was really very intimidating to be referred to as “Fly Catcher”.  In order to maximize my ability to learn new items, I decided to grab RSS feeds from all the presenters at the conference, as well as other development feeds.  That worked great, I got about thirty feeds to work with.  Using FireFox I started running into another problem.  How could I get a list of only the updated items, or perhaps only view items by category.


Enter: RSS Bandit.  RSS Bandit is an open source RSS aggregator that, for the most part, does a great job of check feeds and presenting new entries in an easily useable list.  Rolling down a single list of entries makes it much easier to find that one piece of information that I couldn’t find before.

Monday, May 28, 2007

What if Gandhi had a patent on nonviolence?

So, I'm writing about Gandhi and Dr. King.  Of course, there are a lot of striking similarities in their techniques.  As I wrote my paper, I thought "What if Gandhi patented nonviolence?"  Then I wrote:
Rosa was no revolutionary, in fact, she was just tired and she really wanted to sit.  She didn’t care if she got arrested as long as her feet got a break.  She did, however get the attention of another person who was a revolutionary.  His name was Dr. Martin Luther King, and nonviolent civil disobedience was just the thing he needed to bring about changes to civil rights in the United States.  After a brief patent dispute with Gandhi on the topic of nonviolence, Gandhi and King worked out a licensing agreement.
Shame free plug: Visit the Gandhi institute at where nonviolence is alive and well!

Tuesday, May 22, 2007


I live in a small town.  The same small town, in fact, that I grew up in.  My wife too.  The other day while driving to the office I had to do a double take.  Standing on the corner on the way out of town was the entire maintenance contingent from the high school, with signs that read "Strangers=Danger".  That's probably not necessarily true, but we'll overlook that for right now.
What the hell were the school custodians doing picketing?  What numbskull put together those awful fluorescent green signs designed to inspire powerful fear in onlookers of all walks of life?  As it turns out they are concerned about an initiative to privatize their jobs.  Our school system has been trying to find ways to save money, and apparently they think the smart thing to do is to cut the benefits for the people who have done such a good job maintaining our schools for at least the last decade.  Hey guys, thanks for donating ten years of your life...hope you didn't need insurance or jobs.
This afternoon as I returned from the office, I once again noticed the picketers.  They were blazing green locusts accosting every corner of our small town.  They decided to ratchet up the campaign, though, and they were all wearing ties and button up shirts (except Ms. Coffee, of course).  This was a brilliant strategy to show the community what they would miss if the initiative were to pass.  Except for one little problem.  Custodians might be as goofy as computer geeks.  They were clustered on three corners in groups of four people (give or take).  As I passed by, without fail, one or even two of the picketers in each group infallibly were staring off into space, their neckties askance, signs hanging at some random angle...completely unreadable.

Thursday, May 17, 2007

View of the City

My first day here I sat in a class next to a gentleman name Francois. We got to talking a bit, and as it turns out he's an avid cyclist. I produced my bike path map of Montreal and asked him if there were any good routes I should try out since I brought my bike. He was so nice that he actually took out a piece of paper and drew me a map to a nearby park that he said was quite nice for riding.

The weather has been pretty lousy all week. It has been very cold, and wet. The thought of riding in this weather doesn't exactly have me jumping up and down. Rather than get covered in mud trying to ride in the rain, I decided to walk to the park. It's huge. For some reason it looked pretty small on the map. From various points in the park, most of greater Montreal is visible.

In case you would like to see what Montreal looks like, you can check it out here: Please be warned that my web server is slow, and the file is about you probably want to download it in the background. Also, I cannot vouch for the quality of the photographer. Frankly, the guy should probably not quit his day job any time soon!

Develpment Blues

When Eric hired Carl to teach me .Net and help develop a framework, neither Carl nor myself had any idea what we were in for. Carl aptly suggested using business objects, and he pointed out that the binding object was a great place to start. We continued on our merry ways, until we realized that designing screens at design time might be a bad practice in our environment. At first we discussed dynamic screen design, but then decided against it as the layout would be difficult to get right each time.

As it turns out, we ended up using this exact paradigm. We also included our database select strings, and information about how data should be presented and validated. This allowed us to change any facet of an application at run time. No recompilation worries there.

Things aren't so simple now. Changes to the database get requested between code releases, and these changes can get incorporated into one configuration, but not another. This has caused me to question the wisdom of the approach that Carl and I took. This week at DevTeach has offered me an opportunity to once again question our approach. How better might I do things? There are some things I would do differently. I might migrate to pluggable, dynamically loaded objects to represent rows in a table. Validation would move into these objects and out of the config file. These objects should also be nested to reflect a schema.

At the end of the day, though, it still makes no sense to design each screen individually. Our design metaphor is still valid. The only problem is how to integrate changes to the live configuration (I can change a lot of screens without touching any code!) into the next development release. I designed a tool for combining configuration versions. It still needs some work, but it does its job. Carl had the knowledge, and I lacked the knowledge...which made it possible for me to ask why we would build each screen, bind each control, and fill each label.

The next iteration should have strong typing. Why? Because strong typing makes more robust code. We need intermediate objects to represent individual items, before they are aggregated into tables. That's where validation belongs. That's where schema should be represented. The bindingsource shouldn't update and validate, it should ask its constituent objects to do that.

The best part of all? The atomic elements become fields. At the record level, objects aggregate fields. Let's let the fields tell us how they should be represented. When I'm done tearing everything out of the configuration and placing it in intermediate objects, who knows...maybe the configuration will become manageable again!

Dull moment?

In case you didn't get a chance to see the dirty hit that Chris Pronger laid on Thomas Holmstom Tuesday evening, check it out. If I were Pronger's mum, I wouldn't own up to it. Obviously he deserved a suspension. Before I left the room for dinner, I didn't see anything about a suspension on the news. By the time I got to the restaurant, it was all over the place. En Francais. Of course, I couldn't be sure what they were saying about a suspension, so I asked the waiter. The waiter wasn't watching, and had no idea who Pronger might be, so he referred another waiter to my table.
The dirty S.O.B. got a one game penalty. Good start. As it turns out, my waiter doesn't follow hockey because he didn't grow up with it. Why not? Because he was from Mexico! As it turns out, David was vacationing in Montreal when he was 21 and he liked it so much, he decided to move there. Originally he was from Mexico the transition has had the effect of moving to a small town. He's now 28 and speaks better French than I speak English.

Tuesday, May 15, 2007

If it weren't for hunger

If it weren't for hunger, I'd never really see new cities. Hunger is great because it forces you to go out and look for food. This afternoon I had a plan, and the plan was simple. Take a hot bath, go get food, come back and go to bed at a reasonable time. While I soaked in the tub I absentmindedly thumbed one of the magazines given to people at the DevTeach conference. I landed on an article describing a hypothetical developer who developed some bad health habits and had a heart bypass.

That reminded me. Someone made me eat a salad yesterday. It was up to me to put things right today. I could think of only one food capable of combating a salad with any real efficacy: pizza. I leaped out of the tub, dressed, and left the hotel with a precision usually reserved for covert military operations. I'd show that salad who's boss.

As is my habit, I tried looking for a place out of the way. When you're smack in the middle of 1.8 million people, out of the way takes some work. Complicating matters, I refuse to drive aimlessly about a foreign city. Better to walk. Besides, if you're in a car, you're safe. Whilst wandering about, I found the strangest thing: Quebecois Little China. (Chinoise petit? That's just a guess).
Now, people in Montreal are proud of speaking French. Most of them speak English, but as a matter of pride they don't unless you are clearly a mono-linguiled idiot such as myself. Now, add one more language to the language barrier: Chinese.

It was really bizarre to see people switching back and forth between three languages with aplomb, all inside the same conversation. It was like being in a movie where the bad guys are hiding in "Little China". The stores were clearly for the consumption of the local Asian population. Even the layout of the inventory was clearly non-western.

Anyway, I pushed on...since I've never heard of a Chinese pizza. Eventually I found myself in front of an establishment that appeared to have pretty much every greasy food under the sun.

Perfect. I checked the menu, and sure enough, they had pizza. I was sold.

As I prepared to place my order for a mushroom pizza, I remembered that one of my coworkers had suggested I try putine while in Canada. It would be incredibly rude to requisition advice without using it, even if the food sounded a bit odd, so I screwed up my nerve, clenched my stomach, and requested an order of putine with my pizza.

What's that? You've never had putine? You wonder what it might be? Well it is perhaps the one food more capable than a pizza for combating a salad. Putine is comprised of french fries, covered in melted cheese curds, then slathered in gravy. Believe it or not, once you finally silence the voice of reason in the back of your mind, it is really good stuff.

So I sat in this diner, eating fried foods adorned with more saturated fats, watching the world go by. I caught myself watching the cyclists again. This time, I noticed more detail. Some of them weren't suicidal. Some were desperate. They had the distinct appearance of reluctant cyclists. These people were afraid, but someone had double dog dared them to commute via bicycle for a week and they couldn't say "No". They would grimace before launching themselves haphazardly into traffic, and somehow when they opened their eyes the world would still be there. Secretly, I think they wanted to wake up in a hospital so the dare would officially be dissolved.

As I reflected smugly upon my keen observation, something almost slipped past my ever present radar for the unusual. Another bike. Sort of. It was a barking bicycle with a square nose. Actually, it was a bicycle with a shopping cart for a front, and the cart contained a medium size dog that was barking happily as its owner trundled it down the sidewalk. I couldn't have seen that in the hotel bar.

She Makes Coffee Nervous

It is always a great pleasure to associate with, and listen to intelligent people speak about topics that they are experts on. That is the beauty of being here at DevTeach. I work in an office without anybody to really bounce ideas off, at least, not C# or .Net ideas. The unfortunate side of being here is that the pace is fast. Try compressing a topic that could easily take an entire day into a one hour and fifteen minute session. It gets ugly fast.

This morning I participated in a session on data binding, hosted by Beth Massi. By the time I got there, it was standing room only. This room was occupied with about 50 people, and only four of them were women. One of them was the presenter. She started with a very quick overview about what we would do if we were using Orcas (which, of course, we aren't) and in the next 10 minutes took us on a tour, with examples, of no fewer than 5 different data binding methods. My head was spinning. Then she made the most absurd declaration I've heard in a while: "Now we're really going to start moving!". Oh boy.

When I crawled back to my room for a lunch break and some writing I hungrily gulped down two Tylenol. Throughout the session my mind kept flicking back to the movie "You've Got Mail". I don't know what Beth is like when she isn't on a short schedule, but I can tell you one thing that was certainly true this morning: She makes coffee nervous.

Monday, May 14, 2007

This City is Crazy

This afternoon found me sitting idly, chewing over what I had just seen when WHAMO, a bowl of salad dropped out of the sky and plopped down in front of me, nearly taking my nose off in the process. Anybody who knows me will attest to the strangeness of this situation, since the chance of me ordering a salad is, well, nil. Shaken from my thoughts I sufficed to reassure myself that this city is crazy.

Please understand, I'm no complete stranger to the madness that is the modern large city. I've seen many of them: Chicago, Sydney (thanks to my brother and sister in law), Paris and Frankfurt (thanks Mum), and Los Angeles. Never have I ever had a salad administered to me. No sooner did I sit in a restaurant than this salad appeared, or dropped courtesy of my overly efficient waitress, right in front of me. In the U.S. we expect water when we sit. Perhaps Montreal is recovering from a scurvy scare, and the city had to implement mandatory saladings.

When I left my room this afternoon, my mission was simple: find lunch at a respectable price. When I say respectable, I mean less than twenty dollars. Since I am downtown in a large city, that is of course a challenge. My mission was simple because I have a lot of homework to finish this evening, and I'm already completely exhausted. Perhaps you can guess what my next foolish maneuver was. No camera. My first look at Montreal during the day, and no camera.

Before I walked a full block I had nearly seen five bicyclists meet untimely ends. Usually I blame motorists for the kinds of infractions that kill people on bicycles. Not this time. These people were weaving in and out of traffic with a complete disregard for the cars trying to run them over at 40 MPH. They weren't all couriers either.

After walking about 10 blocks I finally got to a neighborhood that was low brow enough to serve a reasonably priced lunch. And what did I get for my efforts? I got a salad.