Thursday, January 31, 2008

It's Official...

I'm a Dell owner. For a refurbished laptop it sure looks perfect. So
far, I'm pleased.


Pushing My Limits Of Trust

I'm as trusting a guy as you'll find, but even I think this is pushing

The UPS guy left a Dell box, with a big 'ol Intel inside sticker, on my
front porch. It was basically asking for someone to walk up and take

I don't mind if non-descript Amazon boxes sit on my front stoop, but a
Dell box?

Guess this shows we have one trustworthy neighborhood.

Whooo, it's new computer time!


Water Heater Woes - Solved

This is such a typical home owner story for me. The last few weeks (months, probably) we've noticed that our hot water has been running out in our shower. This was really annoying, as we never had a problem like this before. And what did we do for the last few weeks? Nothing. Moaned about it.

Shira asked a plumber she ran into if this sort of thing happens to water heaters - that they lose their efficacy. He said not typically, but that we should turn it up a bit.

Huh, the thing is adjustable? A quick google search shows this to be true. I then walked down to the basement and actually looked at my water heater. What the heck, it has a knob on it just like so:

Heck, next to the water heater was the manual for it - that explained exactly how you adjust it and debug it. Why the heck didn't I think to read that?

And not only that, but this sort of problem is trivial to test. Just run the water and stick a thermostat in it. Well, duh.

So all along, I've been able to tweak the water heater, and test it very accurately. That's exactly what you need to solve any problem. How thick headed could I be?

I was able to "fix" our hot water problem in about 15 seconds by turning the knob to make the temperature of the water slightly hotter. And I was able to measure my before and after results:

As much of an idiot as feel for waiting so long to fix the problem, not checking the manual, and just plain not thinking this through in a logical manner - I couldn't be more thankful that I didn't call a plumber. I could just imagine paying some guy $100 to turn a knob. Whew, that was a close one.

Wednesday, January 30, 2008

Edwards Is Out, And Now I Miss Him

Today, I caught John Edwards withdrawal from the presidential race speech on the radio. You can watch the video below, or read the text here. I have to say, I really liked what he had to say. I've never been much of an Edwards fan, though I his withdrawal speech really energized me to vote for him.

This very much reminds me of The Onion article where "Hillary Clinton Tries To Woo Voters By Rescinding Candidacy." It's working for John Edwards, apparently.

I do feel a bit disappointed that we're down to two candidates, and I haven't even had a chance to vote yet. What an odd system we have for electing our presidents, in this country.

Well, Edwards, look me up again in 2012 - and I promise to pay just a bit more attention to you while your actually in the race.

Using Google To Advertise Anything

I don't think you can appreciate why Google is billion dollar company until you've advertised your services on it. It's just a amazing, for a relatively small amount of money, you can get highly targeted, highly measured results. And for the small guys like me, it totally levels the playing field against bigger competitors.

But I think this latest ad I saw is pushing it. It's advertising New Zealand. Not visiting New Zealand, but suggesting that you move there. I can just hear the conversation between husband and wife on this one...

Husband: Hey Honey, I was reading my e-mail today, and saw an ad for New Zealand. Let's move there!

Wife: Are you nuts?

Husband: No, seriously. They took me to a website where I saw all the details. Let's do it!

Wife: You are nuts.

Husband: But honey! You never let me move to foreign countries on an impulse...I bet Chuck's wife would let their family move there. Whatever Chuck says, goes, ya know.

Wife: Then why don't you go sleep with Chuck tonight.

Husband: <grumbling> Fine. I won't move us to a foreign country. But you suck the fun out of everything.

Wife: What?!

Husband: Nothing, honey, love you lots.

Worst of all, for a country that speaks English on a daily basis (that's the website, says anyway) the ad text couldn't be more convoluted: - Work in New Zealand Live. Work. Play. NZ Govt Site

Is that really the best they could do? Maybe they don't use full sentences in New Zealand, and this looks perfectly normal to them.

I just wonder if they see the ROI from this sort of advertising. With all the different types of people out there on the web, they probably do.

Marriage Advice To Ignore

This CNN article has some great marriage advice to ignore. Most satisfyingly, two of the items on the list have been ones that I've always claimed were not worth ignoring.

The two that I agree most with:

  • Never go to bed angry - Yeah, this is great advice to ignore. Actually, this one I've already commented about here.
  • Your spouse should be your best friend - Yuck. This one I got from my dad (corollaries include: parents shouldn't be your best friend, teachers shouldn't be your best friend. Fishing buddies, on the other hand, can and should be your best friend) and has always made sense to me. My take on it: A wife is way more than someone you hang out with and have a good time with. She's supposed to balance you off, tell you like it is, and be there unconditionally. Forever. (And husbands have to do the same right back). Best friends are great. Spouses are more.

I wish they had documented something about always saying "yes dear". I have a hunch that's not great advice either. Though my father-in-law was always fond of saying "I always have the last word in every argument...'yes dear'."

What marriage advice do you think people should be rejecting?

Update: I've got to give credit where credit is due. Shira IM'ed me this article, but it was originally provided to her by Teresa. Thanks Teresa!

Tuesday, January 29, 2008

PHP, On Its Way To Being Scheme

I was solving the following problem in PHP:

Search through a string and replace all cases of URLs with HTML anchor tags. If the URL is greater than 50 characters, then make the display part of the anchor tag abbreviated.

I knew that preg_replace was probably the key to solving this problem. But I was positively giddy to see that PHP offered me preg_replace_callback, which would allow me to conveniently perform the transformation I was looking for. I ended up with the following solution:

 function format_url($matches) {
    $url = $matches[1];
    $display = strlen($url) > 50 ? 
     substr($url, 0, 40) . "..." . substr($url, -10, 10) : 
    return "$display";
 $text = preg_replace_callback("|(https?://[^ \n\r\t]+)|", "format_url", $text);

What struck me was how Scheme-like this solution was. And it's not just preg_replace_callback that offers this Scheme'ish feeling. PHP also offers array_map and array_filter, which are standard building blocks in the Lisp and Scheme world.

What's missing from PHP are first class functions. PHP offers create_function which is used to create an anonymous function. Unfortunately, the body of the function is written as a string, which is clunky, to say the least. Add to this that a callback needs to be passed around as a string, and you appreciate that PHP has some room to grow in this area.

I have to say, I feel like I'm watching Greenspun's Tenth Rule in action.

Customizing WordPress: A Right and Wrong Path

I just got done customizing WordPress to match the look and feel of one of my customer's websites. This turned out to be trickier than I thought it would be, and along the way I learned at least one way that doesn't work and one way that did.

Of course, I'm new to this whole customization of WordPress thing, so this may be terrible advice.

The Wrong Path

My first attempt involved logging into the WordPress admin section, finding the presentation area, and then the main stylesheet. I then started hacking away. I figured I could control the background, fonts, etc. easily enough by just tweaking the main stylesheet.

But alas, this turned out to be a dead end. The CSS of the default WordPress theme was just too specific for me to use as a general starting point. I felt like I was doing a whole lot of work just to undo what the theme had setup, and was getting nowhere trying to make it look the way I wanted it to.

The Right Path

After the lesson learned above, I decided to take another approach. What if I found a really basic theme for WordPress and customized that? I wanted something super basic. I browsed my way through till I found Upstart Blogger Minim 0.1 by the good folks at

I downloaded the theme and checked out the code. I was relieved to find that the code was just as basic as you'd expect. It wasfamiliar HTML/CSS wrapped around a few key PHP calls to pull in blogging content.

It was perfect. Using it as a general guide, I rebuilt the HTML/CSS just the way I wanted the page to look.

Code Find Of The Day: JavaScript Date Picker

I needed to either build or find a JavaScript date picker today for a project I was working on. I assumed that there were plenty of options out there, so building was ruled out. I googled around, and after a few false starts, settled on this one, which doesn't appear to have a name.

However, unlike other ones I tried, I didn't need to download tons of supporting code, master a new 3rd party API or deal with conflicts with my existing preferred JavaScript library.

I just worked.

If you need a date picker, it's a good place to start.

Monday, January 28, 2008

OK, Sex Sells - But Come On?

For some reason, this is really bothering me.

OK, a bit of background: A few nights ago, I was listening to the radio and caught Kenny Chesney's Shift Work song. I thought it might have been George Straight singing along, so I decided to Google It to make sure. The first link back was the video for the song.

Now, here's what's been bothering me. Watch the video, and tell me, were the scantily clad gas station girls really needed? I mean, really? It's a song about hard working folk, that has a nice beat and great lyrics - did it really need the sex thing going on it too?

I mean, please. I think it's just so unnecessary, and even takes away from the song.

I'm on the only one who thinks this, right? I guess it's one way to get folks to listen to country music.

Bye Bye BOA

It's with surprising tinge of sadness that I closed our bank accounts at Bank Of America. For reasons that I'm sure I could have my CFO explain to me (if I had a Need To Know, that is) we moved our accounts elsewhere.

Opening our account in Charlotte, NC, was among the first things we did as a newly married couple, living in a new city, starting a new life together. It's where we got our first does of Southern Hospitality (the woman opening our account ending up calling her brother in law for us, for some random reason, like finding a good place to buy furniture or some other random reason). It brings back memories of the good old days.

And BOA has also been among the most customer service friendly organizations that I can think of. You'd think that a bank would have strict rules and that their staff would have to follow them. Yet, they would do things like throw in free checking for a year, and say "come in next year and ask for the same deal and we'll give it to you again." And the remarkable part is, it worked. You'd go in there, and they'd do just that. Amazing. Cell phone and airlines could learn a thing or two from these guys.

Even the last act they did for us was unusual - rather than closing down all our accounts, they left one open as a student checking account. That way, it would have no fees. Try getting that kind of extra from US Air or Verizon. Don't think so.

All of this service has had one effect on me - it makes me want to switch back if we can, or at least tell the world about my positive experience. Which means that their techniques are working. Again, why can't the Airlines and Cell Phone companies see this basic truth?

I guess this also proves Seth's point, the last interaction is the most important.

Sunday, January 27, 2008

Slugging - One of DC's Most Remarkable Activities

My friend Gareth pointed me to an impressive blog dedicated to the topic of Slugging in DC. And what is slugging? So glad you asked.

I've never done it, so this is all what's been explained to me. We have a bit of a traffic problem in DC. OK, more than a bit. So naturally people have gotten pretty creative to deal with this. To help with the traffic congestion in the area, we have carpool lanes, which allow you access to faster lanes if you have more than one person in the car (and sometimes more than 2). But what if you don't a buddy to carpool with? That's where slugging comes in.

From what I've been told, you drive up to some lot, relatively close to your house. You then pickup a perfect stranger and drive into work. You drop off the stranger at another relatively well known location. Then on the way back to work, you repeat. Again, most likely picking up another stranger.

We have a name for this besides slugging - it's called hitchhiking. As far as I know, the government (local or otherwise) doesn't do anything to monitor it, nor do they do anything to stop it.

I find this program absolutely remarkable. We live in a country where you aren't supposed to trust anyone with anything. Every promise and action we take comes with the warning that you can get sued, so you're better off not promising or acting. And yet somehow, in our nobody-knows-their-neighbor-or-cares society, you have perfect strangers giving each other a ride to work. The whole system appears to be a bottom up system that just works.

I just love that this system works. It gives me hope in society, in people's abilities to trust one another and in our ability to find novel solutions to really tricky problems. Bravo!

Saturday, January 26, 2008

Dude, I'm Getting A Dell

When folks ask me for laptop buying advice, I usually tell them two things: (1) buy locally, that way, if there's a problem you can easily take it back. And (2), don't bother buying a Dell, you're just paying extra for the name.

And tonight I bought a second laptop for i2x, and what did I buy? A Dell Latitude D630, discarding all of my own advice in one pithy move.

I actually had quite a number of reasons that got me to change my tune, including:

  • The folks at CNet rank it highly. I find the reviews to be pretty harsh on CNet, so any laptop that can score a 8.2/10 seems like one worth paying attention to.
  • Shira's had a Dell 620 from her office and she loves it. I've used it a bit, and I have to say it's, a remarkably solid machine.
  • We bought ours refurbished, which made the price quite reasonable (about $1,000 after taxes, shipping, etc.)
  • It has a 9 cell battery which should last a bit longer. Great for the nomadic lifestyle.
  • It came with a 3 year warranty for "free"
  • Shira made me.

I feel like I bought the Honda Accord of laptops. It's sturdy and dependable, and doesn't have a sexy feature on it. But, I need it for cranking out code, not for attracting chicks at the local Starbucks.

I'm anxious to see if discarding my advice was such a smart move. Guess I'll know soon enough.

Friday, January 25, 2008

Shaving Tips

Thanks to Dave for writing up a great set of shaving tips. I'm with Dave - I used to find shaving to be the most annoying of tasks, and then started shaving in the shower, and it's been infinitely more bearable. I've got to try his shaving brush / cream idea too.

If you don't shave in the shower, you should really give it a try - just stop by Target and pick up a $3.00 mirror. Oh, and you should probably use a real razor instead of an electric one. Just a suggestion.

I think this is the first time I've offered grooming advice on the blog. You'll be pleased to know, it will probably be my last too. Oh wait, one more. If you're a guy, you should listen to or read Queer Eye For the Straight Guy: The Fab 5's Guide to Looking Better, Cooking Better, Dressing Better, Behaving Better, and Living Better. It's a remarkably handy and insightful book. You'll be a chick / wife magnet in no time.

Now I'm done. Really. Done. I've got nothing else. Go on to the next post please.

Tool Of The Day: Unison

For some time now, I've been using rsync to keep my thumb drive in sync with my laptop. This is useful, so I can grab podcasts and other media, put them in a local directory and run a script to make sure my thumb drive has the most up to date contents. It's also useful, in case I lose my thumb drive - I can just rsync the files up.

But lately, rsync has been acting strangely, crashing with odd Cygwin errors. Rather than fight with it, I thought I'd look for an alternative. And that's what I found: Unison.

Unison will sync up two directories, even across a network apparently, doing the Right Thing to make sure the newest files are always saved. I ran it like so:

  cd /home/ben/projects/thumby       # my thumb drive root directory
  unision . e:                       # this assumes that the thumb drive is on E:\

The command plodded along the first time, building up an index of both files. When it ran into a conflict, it had me manually tell it which file to save.

The command is simple and reliable. There's lots you can do with it, and I'm tempted to see if can be a better deployment tool than sitecopy. Definitely worth checking out.

The tool is created by the good folks at U Penn, Shira's alma mater. I can't resist adding: Finally, I got something for free from the University of Pennsylvania, with all the school loans we've paid, it's about time! There, I feel much better.

Thursday, January 24, 2008

A Trip To The Gallery

We hit the art gallery tonight, and boy do I feel cultured! The show
was of Ansel Adams' work and it was absolutely wonderful.

I had done a little homework on Ansel's career, so it was wonderful to
see both his famous pictures up close, as well as plenty of shots I had
never seen before.

There was also a tour guide walking us through various photos, which was
a real treat. Ansel Adams was truly a technical genius, which really
comes across when some of the details of his prints are explained.

Shira gets trooper of the year award for tagging along on this trip.
She saw the entire exhibit in about 4 minutes flat, and then patiently
waited while I saw all the pictures and heard all there was to hear.
That's true love. That's also a woman with access to Gmail chat and
she's not afraid to use it.

The picture of the photos on the wall are of the famous Surf Sequence,
which I no doubt violated some copyright to take a snapshot of. But it
was totally worth it.


Wednesday, January 23, 2008

3 Inspirations For An Improved Design

I'm working on a few site enhancements for one of my clients (Ashley Tutors - looking for a tutor in the DC area? Check 'em out!) and while doing so, was reminded about a few sources of design inspiration that are worth considering.

  • Try a new font. There are lots of sites out there that offer free fonts, is one of them. I was able to choose a font, download the the zip file, drop the .ttf files that were in it in C:\Windows\Fonts and I was all set. Took about 20 seconds. Why don't I do this more often?
  • Add some stock photos. There's which has oodles of cheap choices, and there are even totally free options too.
  • Borrow Jim Krause's Design Basics Index from the library. This isn't so much a book as it is an incredibly densely packed design course. I think it would be neat to pick a single chapter from the book and focus on using the design concepts mentioned in it. It's really a remarkable text and worth checking out.

Happy designing! I better back to actually doing the work, instead of blogging about it.

Tuesday, January 22, 2008

Brilliant Marketing Hack or Book Spam?

I just dropped off some books at the library and had this idea. What if
I went into the business and computer section and placed my business
card in the books as a sort of book mark?

Imagine it - you're reading a book titled "Getting Started In Business"
and out drops a card with the name of a guy who writes custom software.
Brilliant, you think. And even if you don't call the name on the card,
at least you have a handy bookmark you can use.

Could be highly targeted and relevant marketing. Could be rude and
obnoxious book spam.

So far, I'm leaning towards the spam side, so I probably won't do it.
But still, could be a good idea...


Radio Station Of The Day: RadioCrazy Opera

And now for something completely different: Opera. As long as I was experimenting with different radio stations I thought I should really mix it up and try some classical music.

I can't understand a word of the singing, and yet, I'm still enjoying it.

Don't knock it till you've tried it - click here to give it a listen.

Now tell me, isn't that stuff pretty?

Google Spreadsheets - Two Uses

I find I'm using Google Spreadsheets more and more. Here are two ways I've been using them with my i2x customers:

  • As a lightweight project management tool. Rather than setting up BaseCamp, a related project management tool, or a Wiki, I've been creating and sharing, Google Spreadsheet with my clients. Whether it's todo lists, requirements, questions that need answers, names of key players, or other information, it all tends to fit well in the tab of a Spreadsheet. Google Spreadsheets takes care of the details of how you share and this info, and it provides version control too. For bigger projects, setting up the infrastructure is definitely worth it - but for little jobs, it's amazing how useful a Google Spreadsheet can be. Especially when the alternative is lots of e-mail being sent back and forth.
  • As a remote interactive requirements gathering tool. I was on the phone with a client today, working on a spec, and it called for us to fill in some sample values for a feature. Rather than me making up bogus values, I was able to ask him, in real time, to fill in the values what he thought made sense. This simultaneous editing was ideal, as it allowed him to put in the domain specific information he knew, while I could add in the development notes I needed.

Google Spreadsheets is turning into my digital whiteboard of choice, and frankly, I can't think of any higher praise than that.

Monday, January 21, 2008

Blogging By Snail Mail

Shira's mom is a blogger, and I bet she doesn't even know it!

Every few months, a little envelope shows up at our door from Shira's mom. It includes things like a hand written note, newspaper articles of interest, coupons, funny cartoons and snapshots. We got one just the other day, and it just hit me that this was basically the same thing I do when blogging.

I can just image the categories of her blog: News-of-Note, Jokes, Deals and Pics.

I guess this is a good reminder that stuff we think is cutting edge and new, probably isn't. The content's the same, it's just I'm using a slightly faster delivery mechanism.


Sunday, January 20, 2008

You know you are in Charlotte when... see restaurants with the words Pit BBQ and you can have an entire
store dedicated to NASCAR.

Ahhh, brings back some good memories.

This reminds me of one of the first questions ever posed to me by
someone who lived in North Carolina: "Y'all like pork?"


Best seat in the house

I don't know how my wife does it.

It's a full red-eye flight back to VA, and Shira managed to get me the
best seat in the house. I'm in an emergency exit row. And in the seat
without another seat in front me, no less. I didn't get this much leg
room in First Class.

I just spent the last 10 minutes trying to figure out how the emergency
door opens. I think I get it. Sorta. The flight attendant won't let me
do a dry run, so I guess I'll just wing it.

G'night all. See you on the other coast.


Friday, January 18, 2008

Word Of The Day: Haze

So, I didn't get much sleep last night. About 18 minutes and 20
seconds, to be exact. I had a brilliant plan - I would work during the
night, getting a juicy 4 hour coding session in - and then get on an
airplane and sleep my way to CA.

Pretty clever, eh?

Things started off quite well. I got to the plane, found my first class
seat, blogged it and prepared to get some shut-eye. We left a bit late
from DC, but whatever, I had plenty of time at my layover, right? Sure.

I then slipped into a coma.

In my dreams I heard the flight attendants make announcements about
gates and stuff. Whataever, I was in a better place and couldn't be

I awoke, and was in a post sleep haze. I didn't quite know what city I
was in, where I was flying to, or pretty much anything (though I could
still have explained to you why swallowing exceptions is evil. I was out
of it, but not *that* out of it).

Then the flight attendant made an announcement: "remember, if you're
flying to Los Angeles your gate has been changed and your plane is
leaving in 20 seconds." Or something like that.

At this point, it occured to me that a haze was not the ideal state to
be in. I thought I was flying to LA. Yeah, right, that's me. Did I
know my flight number? Did I catch what gate it had been changed to? Was
I aware of anything? No, No and No.

Text messages started flooding in from Shira. "[Info about timing]...
not looking good" - huh? "745" - what did that mean" and my favorite:
"911 mode, you will miss it" -- miss what? Huh?

I knew a couple things. One, I needed to get off the plane I was on.
Two, I needed to figure out where I was going. So I sprinted, I'm sure
in a quasi-terrorist style, out of the plane and stopped at the first
flight info board I could find. While it occured to me that my flight
was clearly leaving in seconds, I forced myself to calmly scan the board
and figure out the gate. Then I double checked the gate. Then I ran
like hell.

I made it. Whew.

Got on board, closed my eyes, woke up some period of time later. Again,
in a haze. Breakfast appeared to be getting served. What did I want to
drink? All I could get out was "OJ" and "vegetarian" - and sure enough,
orange juice and yogurt and fruit showed up.

I still haven't figured out how many more hours I have on this flight or
even which direction the bathroom is. But, at least I can't miss a
flight because of the lack of this information.

Next time, Shira's going to send me as an un-accompanied minor. I'll
need some kind airport attendant to hold my hand as I'm lead from gate
to gate. But on a good note, I might get to ride in one of those
overgrown golf carts they use to transport folks in.

I'm going back to sleep, and when I wake up, I want this all to have
been a very strange dream.


Close Enough I Could Land The Sucker

I'm off to my uncle's funeral in California. Through some stroke of
amazing luck, the ticket I bought just a few hours ago, on a plane that
was oversold, allowed me to get a *free* upgrade to first class.

I'm sitting in seat 1C - I can almost reach out and touch the plane's
control stick.

Add to this that I'm reading a Bill Bryson travel book, and you can
appreciate that I'm really doing OK (given the circumstances for the
trip, of course).

I think this all makes up for the fact that I needed to head to the
airport at 4:30am.


Thursday, January 17, 2008

Radio Station Of The Day: Groove Salad

Given the kind of day I'm having, I just wasn't in the mood for rowdy honky tonk music. But I've found that for some programming activities, music is a near necessity.

So, I decided to go with something a bit more mellow today: Groove Salad (listen). The description alone makes you want to tune in: Groove Salad: A nicely chilled plate of ambient beats and grooves.

It's classified as chill music and probably requires just the right mood to listen to. But still, give it a listen, you might like it.

Another Great Loss

It is with great sadness that I write this. My uncle, who's been battling brain cancer for about 15 months, passed away today. He leaves behind many, many people who will miss him greatly - a mom, a wife, children, just to name a few. This is just not right.

I get it that my 86 year old Grandfather needs to pass away. But this?

I got no words. So instead, I'm taking action.

Remembrance Hack

I was chatting with Bill today, and he wished me condolences on the passing of my grandpa. He then made a simple, and brilliant suggestion for helping to deal with his loss. Bill said:

I have always found it helpful to try to grab onto a couple of those qualities [that made my loved one so special] and really focus on making them part of me.

As I said, what a great suggestion. Just the exercise of recalling my Grandpa's traits and considering how I could incorporate them into my life, has been useful.

I'm not quite sure quite which traits I'm going to choose, but I'm going to give this technique a try.

Wednesday, January 16, 2008

Handy Dev Tool: Fake Credit Card Numbers

You just never know when you'll need a fake credit card number - and when you do, here's a site can provide them for you.

This probably sounds like a sketchy idea, but it's actually quite legit - you often need a "valid" credit card number to test out payment functionality. Which is why I needed them this morning.

As a short cut, here's a few numbers to get you started:

  Visa:        4544182174537267
  Master Card: 5460506048039935

Remember, you can't actually use these, and they aren't stolen or linked to real people - they just pass the test that Credit Card numbers need to pass to look Kosher.

Tuesday, January 15, 2008

Snapshots From A Run

Some photos from a run that I took, exploring more of my little West Virginia world.

Do you think the kid that spray painted this would appreciate the irony of him tagging buildings on a regular basis? Probably not.

What a picture perfect day outside. A tad bit crisp, but just sunny and clear as could be. A great day for a run.

Really old sticker, or just a really forward thinking Republican?

How nice, they marked off Shira's parking space. I don't see one for Technical Guy. How strange.

Old School Chinese Restaurant

We're back in our little West Virginia get away tonight and Shira and I
decided to live it up head into town for dinner. Mind you, "town"
appears to consists of two square blocks and no stop light. I happen
think this is awesome.

We hit the chinese restaraunt for dinner and it was delightful (I say
"the" and not "a" because I'm pretty sure this is a one Chinese
restaurant town).

None of this PF Changs cutting edge fusion food crap - we're talking an
old school Chinese restaurant, where you fill up on those crunchy
noodles before the meal shows up, you get hot tea which is probably
Lipton and not some authentic green tea variety, and there's way too
much food to eat.

It was delicious.

Even my fortune cookie had a *real* fortune in it - I'm getting good
news in the mail (whooo!) - versus some lucky numbers or proverb

I'm in the mood to appreciate little gifts, and tonight I think Shira
and I got one.


Monday, January 14, 2008

Back. Kinda. Sorta.

We are back in the DC area. Shira was a most excellent travel agent and
got us perfect seats on the way home (emergency exit row, but, with the
ability to recline). And the flight from CA to Dulles was the easiest
I've had in a while. I closed my eyes at take off and opened them when
we landed. Yeah, it was that easy.

So we are back. First, the Kind Of part.

Shira has a 2nd week in West Virginia at her thing, and last week went
so well, that I decided to join her for another week here. So it's more
of the hotel life for me. But I can't complain, this whole come home to
a maid-cleaned room is really kind of nice. I hope to get into the
center of town a bit more this week, and continue to explore.

Now the Sort Of part. My uncle has been batteling brain cancer for
about 15 months now (which is considered very long for this type of
cancer). When we arrived in CA we learned that he was being moved into
hospice. It looks like his long fight may soon be over. He lives just
a few miles from grandparents, so, we may be flying back out to
California soon to be with him.

This situation just sucks. One can only hope that my uncle finds peace
and has the best possible outcome - whatever that may be.

So we are back in town. Kind of. Sort of.


Sunday, January 13, 2008

Grandpa Would Be Proud

Today we laid my grandpa to rest. I took this quick snapshot as we left
the funeral.

The mass of people in the photo aren't just anyone - they are my
grandpa's children and grandchildren. Yeah, just about everyone in the
photo is part of the fam.

He'd be so proud of that. Forget money and stuff - family is what
counts. That's the way he lived and that's what he taught us was

I'm sure he's up in heaven kvelling now, bragging to anyone who would

Boy is he going to be missed.


Saturday, January 12, 2008

Unexpected Goodbye To Grandpa

Well, our unexpected visit turned into pretty much the worst case scenario. Shira and I arrived into California last night and found my grandpa unresponsive and on a ventilator.

This morning at about 4am, my grandfather passed away.

How did this happen? A few days ago he was a relatively healthy guy - still able to get around, crack jokes and complain about his e-mail. Sure, he was 86, but he was a sharp 86. And now he's gone. Just like that.

Need proof that life is incredibly fragile? There you have it.

My grandpa was the prototypical grandpa - infinitely kind and loving of his grandchildren. We could do no wrong. Whenever my parents would go back to Chicago to visit their family we would stay with my Grandparents, so I have many fond memories there. Looking back, even the most ordinary things, like goofing around at the desk he paid bills at (he had a big cup of pens which totally fascinated me) or counting the number of train cars that you could glimpse from an opening of trees in their back yard, were all such fun. To a kid, this was pure adventure.

As an adult, my Grandpa was always the most supportive and loving person I could ever turn to. Come to think about it, the only time I ever saw him get frustrated was when he was dealing with the computer he used to send us e-mails. But frankly, I can't fault anyone for that, it's Windows after all, we're talking about here.

I wish every kid in the world could have such a sweet and wonderful grandpa. My guess is that the world would be a whole lot better place if that was the case.

We miss you tons already gramps.

Friday, January 11, 2008

Another Problem With Our Health Insurance System

So here's another problem with our health insurance system....

Here's what happened. Time rolled around when Shira needed to refill a
perscription for her migraine meds, which went smooth enough. I went to
pick them up at our favorite CVS pharamacy, and was told that insurance
rejected the claim. Argh.

The solution was simple, I had to have the doctor call the insurance
agency, which would fax them a form, which the doctor would fill out and
fax back, which would allow Shira to get the meds at a reasonable
price. Otherwise, we were welcome to pay approximately $30.00 per pill
to fill the prescription. We thought we'd call the doctor instead.

Shira called and left her life story on the voice mail of the doctors
office 3 times. Did the office ever call her back? No. Did they just
take care of the issue? No.

The result is that Shira had to buy 3 pills to hold her over, which cost
a small fortune (OK, $90.00, but still, we're talking three lousy

I can see plenty wrong with this situation. Why can't the doctor have
better customer service? And why is the insurance agency operating like
it's 1980 with fax based forms? And do the pills really need to be
$30.00 a piece?

I guess I am most dissappointed in Shira's doctors office. We should
really fire them, and move on to a doctor who will recognize that
helping their patients goes beyond writing the right prescription; it
also includes helping them navigate the horrific nightmare that is
insurance. I know that it's annoying that they need to fax around forms
on our behalf, but that's medicine in the year 2007.

As for the insurance companies - ever heard of a thing called E-mail or
SMS? Or even this new fangled thing called the internet. You can do so
much better. I even know of a company that would gladly do the

And it could be worse, we could be uninsured. Man, what a mess that
would be. I can't even imagine it. So if you work for my insurance
company, and you are annoyed by this post, please, please, please don't
yank our insurance. My wife would so kill me.


Unexpected California Visit

Yesterday we got the scary news that my Grandpa in California had come down with an infection the night before, and was now in the hospital in critical condition. Terms like sepsis, renal failure, heart attack and ventilator have been tossed out.

Shira, myself and the rest of my family are all flying to California to be with him today.

If anyone can pull through this difficult time, it'll be my grandpa. We'll know a lot more when we get on the ground, tonight.

Thursday, January 10, 2008

Shira picks a winner

The adventure for day 4 of the i2x retreat happened this evening. To better understand the statistical models that one needs to comprehend to be successful in business, Shira took me to an event based on these sort of working mathematical phenomena. In other words, she took me to the horse track.

I was surprised just how up close and personal you could get to the actual track. I was just a few feet from the horses as they whizzed by, hoofs beating out an impressive sounding rhythm.

Shira entertained herself by learning some of the ins and outs of betting and even managed to win a fairly long shot bet. On her first time betting, she won a trifecta box. What that means, I have no idea, but she walked away a very happy woman, despite the lack of blackjack tables. She does prefer the heat associated with the indoor sport of blackjack, as well, but again, I did not hear her complaining once she won.

Tomorrow we head back to reality. What a fun week it's been, and it's been by far the most rewarding corporate retreat I've ever been on (it's also been the only one, but, whatever).

A Family Recommendation: Addicott Web Design & Consulting

A couple days ago my brother Dave let me know that his good buddy Hirsch has started his own design company, Addicott Web Design & Consulting. I got to check out some of Hirsch's work and speak to him. He's a really sharp guy and the kind I'd like to work with.

So here's the deal - are you looking for a web designer? Check him out. If you have any problems, let me know, and I'll furnish the phone number of my brother Dave and you can personally chew him out.

How often do you get an offer like that?

And no, I didn't pre-approve this offer with Dave. How would that be any fun?

The Nicest "Stop Stealing Our Stuff" Message. Ever.

I love the plaque in the bathroom here at the i2x retreat. It says:

Due to the popularity of our guest room amenities, our Housekeeping Department now offers these items for sale ... Should you decide to take these articles from your room instead of obtaining them from the Executive Housekeeper, we will assume you approve a corresponding charge to your account.

Basically, if you take the alarm clock, ironing board, or unbolt the hair dryer from the wall, we are so charging your butt.

This strikes me as taking the high road. It's as if to say, "hey, what do we know - maybe you aren't some scumbag crook, maybe you had the first good night sleep in years on our pillows - then by all means, take them. We just need to cover our costs." And for the scumbag crooks, well, they know they are going to end up paying for the stuff they take.

Maybe I'm too nice a guy, but I like this approach.


Wednesday, January 09, 2008

A Glimpse of the Antietam Battlefield

It's day 3 of the i2x retreat, and today for an afternoon jog, I checked out the near by Antietem National Battlefield Park. This was the site of the Battle of Antietam, the "bloodiest single-day battle in American history, with almost 23,000 casualties."

I simply don't have the knowledge of the Civil War to appreciate the site. I ran a good chunk of the 8 1/2 mile car tour you can take. There are stops, plaques and monuments along the way. Try as I might, I can't picture an army of 45,000 confederate soldiers facing up against an army of 90,000 Union soldiers.

The battle wasn't conclusive, apparently, yet the fact that Lee was outnumbered two to one, and survived certainly speaks to his skills, and that McClellan blundered.

Even if I can't grasp the scale of the place, I did enjoy yet another remarkably beautiful day. And I got another taste of a really important part of American History, which I'm really starting to appreciate, didn't happen that long ago. It's a great park, and one worth taking the time to visit.

Tuesday, January 08, 2008

Retreat Day #2 - Communing With Nature

As a part of the i2x retreat I took a nice long run. This served as the perfect opportunity to collect my thoughts, become closer to nature, check out the small town I'm hanging out in, and most importantly, give the hotel cleaning staff a chance to clean our room.

By all accounts, the run was a complete retreat-activity success. I saw more history of the area, including the location where James Rumsey launched his steam boat, and a few more Civil War sites as well. The town couldn't be cuter. I think I've been through the center of it, and as far as I can tell, there's no McDonalds, Starbucks, or a stop light for that matter. Though there is a serious looking 4 way stop. I'll probably have to retract that last statement when I see more of the town, as what city in America doesn't have a Starbucks?

And the lesson from today's retreat? Well, I found a historical plaque with the following written on it (published here, too):

The 118th Pennsylvania enters the Potomac from Maryland.
Harpers Weekly, October 11, 1862.
Now the Union artillery covered a retreat, and most Yankees began to wade back across. But Colonel Charles M. Prevost, commanding the newly formed 118th Pennsylvania Infantry (known as the Corn Exchange Regiment), refused to withdraw until he received orders through the chain of command from his direct superior. Hill's Confederates smashed into the Pennsylvanians just as they were deploying atop the bluffs overlooking the ford. Their first battle was the first chance many of the Pennsylvanians had to discover their Enfield rifles were defective and would not fire. Prevost was wounded trying to steady his men, then other officers led a bayonet charge which promptly failed. With the commander down, defective weapons, and no prospect of success, the regiment broke apart.

The lesson? Always, unit test, and before a big launch, do some exhaustive functional testing. You don't want to find out your rifle isn't going to work while on the battlefield.

Monday, January 07, 2008

The I2X Corporate Retreat

Shira has a thing going on this week in West Virginia. So, instead of waving goodbye to her this morning and sending her on her way, I tagged along. That's one of the joys of i2x - I'm totally mobile. I'm calling this little get away "The i2x corporate retreat".

I spent the morning hacking on code, making use of the hotel's free WiFi.

The weather was incredible today - almost 70° F and sunny. Shira and I took a walk around and soaked up the rays. There's not much around here, but we did find a cemetery with a Civil War Tour in it. My mom would be proud - we found history. And it was remarkable walking among fallen Civil War Soldiers - it made me appreciate that it didn't take place that long ago.

What does one do on a corporate retreat? I'm not exactly sure, but I'll think of something.

Oh, and if you have an idea for software and live in West Virginia - drop me a line, maybe we can sit down and talk about it over lunch?

Wisdom From Seth

Here are two gems from Seth Godin:

Sunday, January 06, 2008

Speeding Up The Laptop - RAM Upgrade

The most studly computer related move I ever made was convincing my then college girlfriend, that to make her computer go faster, she didn't need to upgrade her modem or hard drive - she needed to upgrade her RAM. And surprisingly, she believed me. We upgraded her computer from a whopping 4 Meg to 12 Meg, and amazingly, I was right. Her computer was better than new. And a few years later we got married, and we lived happily ever after. The End.

Even though computers have progressed quite a bit since the days when modem speed and 12 Megs of RAM were a big deal, RAM is still the key to making a computer run quickly. We noticed that our home laptop was dragging a bit, so we decided to upgrade it.

In the dark ages of computers, back in the mid 1990's, that is, figuring out what kind of RAM you had and needed to buy usually involved calling some vendor or browsing through printed tables. Things have gotten a whole lot easier. Last week, when I wanted to figure out what kind of memory my laptop needed, I just visited's System Scanner and it told me exactly what I had and what I needed to buy.

Once the RAM arrived, installing it was a snap. Literally. One of the revolutionary aspects of PCs was that you could always drop in new parts, allowing you to easily assemble or upgrade a system. And this is still true with RAM. I just removed a hatch on laptop, gently popped out the two existing RAM chips and gently snapped the new ones in place.

I turned on the computer and poof, I had RAM 2,048 Megs of RAM instead of 1,024 Megs like I had previously. That's a long a way from the first 12 Meg upgrade I did.

Get My Bowl On

Last night we did the bowling thing - which turned out to be tons of fun. The bowling alley dimmed the lights, turned on the laser effects, and blasted hip-hop / dance music. It was basically a dance club, bowling mashup - finally, a way to engage in my two most awkward activities at the same time!

I give the bowling alley credit though, they were packed with young folks having a good time. I guess this counts as keeping up with the times.

Now, if I could just have some consistency in the way I bowled - so I didn't say, throw a strike, and then two gutter balls, I might finally be able to break 95!

Standard Web Fonts

I needed to pass someone a list of standard fonts you can rely on always being present in a browser. The list is short, but finding a reliable and easy to read list wasn't as easy as I would have thought.

I finally came across this page, which describes these standard fonts.

I especially like how the fonts are outlined so that you can easily drop them into a font-family CSS definition. For example, I should be writing:

  p {
    font-family: Arial Black, Arial Black, Gadget, sans-serif

Instead of just:

 p {
   font-family: Arial Black;

Sure, I knew technically that I should use the first format - but it's nice to see the actual font family values you're supposed to use to have the statement really make sense.

This is definitely a handy page to have around.

Thursday, January 03, 2008

Review: Examples: The Making Of 40 Photographs

I'm making my way through Ansel Adams' Examples: The Making Of 40 Photographs. This book is pretty much what the title suggests: it surveys 40 of Mr. Adams' photographs, to which he adds commentary. While the text is part historical record and part conversation about the art and the craft of making pictures, more than anything else, it's an adventure story.

Ansel Adams brings you back to a time when photography wasn't nearly as standardized as it is today, and when the equipment was a whole lot cruder. Like when he might go out for a day of shooting with only 12 negatives, and no light meter. And then he would get back to the lab and have to choose just the right chemistry to develop his film. It's a wonderful, and surprisingly exciting, glimpse into the roots of photography.

Adams has a pithy style of writing which I have been enjoying. Clearly, each photograph in the text was chosen to teach a lesson, yet he doesn't come off as preachy.

If you have any interest at all in photography, I think you'd enjoy this book. If nothing else, it will give you a fresh appreciation of the practice of making images. I give the part that I've read of this book an 8.9/10 for being just delightful.


PHP Tip: Instant SMTP Server

I needed to send mail from my local PHP server, but didn't have an SMTP server that would be willing to relay messages for me. On a Linux box this isn't usually a problem, as you can always run sendmail (or qmail or postfix) locally, and just have it deliver your mail directly. But I'm on Windows, so things are trickier.

A quick Google search found me: Free SMTP. It does pretty much what it claims to. After installing, you run it manually from the Start Menu. It then listens on port 25 and will gladly deliver any mail you hand to it.

I tweaked my php.ini to say:

SMTP = localhost
smtp_port = 25

And I was good to go.

Now, I wouldn't recommend using this approach for anything other than testing (works great with mailinator, by the way). Also, I've added it to my thumb drive, as it seems like it might be a handy tool to have around in a pinch.

Oh, and in this case the free in Free SMTP does indeed mean no-charge. So download it and give it a try.

Wednesday, January 02, 2008

New Years Gift From Amazon

I just visited on my Sidekick, and to my surprise, a mobile
friendly version of the site was displayed.

I found the standard version usable, but a pain from my Sidekick III.
But now this is a joy to surf with.

Thanks Amazon, you guys continue to rock!


Google Spreadsheets: Securely Sharing A Single Sheet

I'm a huge fan of Google Spreadsheets, especially their publishing / sharing features. One feature I found that was missing was the ability to securely share just one sheet. In the post below, I describe how I worked around that.

Suppose you have a two tabbed spreadsheet like so:

Suppose further, that you'd like to share the sheet labeled "A" with Alice and the sheet labeled "B" with Bob. Google Spreadsheets offers a neat publishing feature that allows you to share just one sheet. So you could send Alice and Bob the following URLs:

  For Alice:

  For Bob:

The problem is, the only difference in the URLs is the gid parameter. A curious Alice could change that value to 1 and see Bob's numbers. Not good.

To work around this, I through together a quick hack so that I could send Alice and Bob totally different URLs, and yet still take advantage of Google's publishing feature. The solution makes use of Apache Rewrite Rules. Only the coolest feature to ever be added to an application (followed by elisp and emacs, but I digress).

Here's how the solution works. First, setup a mapping file from gid numbers (that is, the index number in the sheet your sending) to a secret code. Put this in a text file we'll call Here's what it might look like:

  A9941009287   0  # For Alice
  B1837730400   1  # For Bob

Note, the first column (beginning with A... and B...) is totally arbitrary. I just picked scary looking numbers to add to the mystique of the link. I could have just as easily put foralice (though, that's a key that would be pretty easy to guess).

Next, setup the following rewrite rules in a your httpd.conf or .htaccess file:

 RewriteMap sample-id txt:/usr/local/i2x/spreadsheets/

 RewriteCond %{REQUEST_URI} ^/sample/(.*)
 RewriteCond ${sample-id:%1} ^([0-9]+)$
 RewriteRule .* [P,L]

 RewriteRule ^.*$ notfound.file

This rewrite rule starts off by setting up a map that can be used to resolve the secret ID we'll be handing out our users. Next, comes the magic - we:

  1. Grab the secret ID from the URL by looking for a value after: /sample/???
  2. We look that value up in the map we previously set up and make sure we found something
  3. We use the value we found as the value for gid
  4. We then do a proxy request to, using the URL that we would normally have sent our users

The final rule is a catch all that redirects any unhandled requests to a page that doesn't exist. This will trigger an error if the user attempts to access a page we haven't set up.

The result is that now we can send the following links to Alice and Bob:

They'll see the data we want to show them, but no clue to the actual URL, which would let them access each other's data.

Tuesday, January 01, 2008

Rock 'N New Years Eve

Happy 2008 everyone!

While it was great hanging out with friends last night at the New Years Eve Shindig we went to, the really impressive part was getting to play with some modern toys. Mainly: A Nintendo Wii and Xbox 360 Rock Band. Shira got into the Wii and totally mastered bowling - which has you actually swinging the controller like you're at a bowling alley. And I took on Rock Band - I even managed to get a 96% on the guitar once, and 94% for singing (both on the easy setting).

Both games are absolutely remarkable and totally change how you think of video games and gamers.

Wish you all the best in 2008 - may you master all challenges you go after, not just the virtual ones. Here are a few photos from the night...

Julie's tip: Add pomegranate seeds to your bubbly. The bubbles will cause the little guys to float and swirl. Can you say party in your glass?

Shira demonstrating perfect Wii bowling technique. She's a natural!

Us. But with a bonus- now you can see how I'd look with a comb over!

Gamers are anti-social, right? Think again. Rock Band is all about rocking out with your buddies. Apparently, you can even rock out with strangers on the 'Net. How cool is that?

Does this photo even need a caption? Don't think so. Rock On!!!