Sunday, November 30, 2008 - Video in a microblogging format is just what it sounds like - a way to record 12 seconds of video. Think of it as the Twitter of YouTube. The first time I saw it in action was with AuctionDirect, where it was used to showcase a vehicle. See what I mean:

Simple, and to the point - right? I like it. Here's my take on the service:

Now, if only my cell phone allowed me to shoot video. Then I could be creating these clips on the go.

Friday, November 28, 2008

The Thanksgiving Feast

What a fabulous Thanksgiving dinner I had tonight! Between the food and company, it was a perfect night (OK, Shira wasn't there - so perhaps it wasn't completely perfect, still, it was awesome).

We started off the meal by taking a few moments to have everyone say what they are thankful for. What an impossible task. Where do I begin? The meal in front of me, my family and friends around me, my wife who is my world, or my job that is a joy? And what about the things we take for granted, like heat and indoor plumbing? Or even more basic miracles, like being able to see and walk?

What am I thankful for? It's an impossible question to answer - the list is too long to enumerate.

If I was smart, every day I'd write down one item I'm thankful for. Then, next Thanksgiving I'd have the list in front of me. It'd only be a measly 365 items, but it would be a start.

Tonight's item: I'm thankful for the ability to share my thoughts and ideas with you, the readers of my blog.

Here are a few photos from the evening...

My dad, and our host, hard at work carving the Turkey. Well done Dad! And you look fantastic in a flower print. Most men can't pull that look off.

Mmmmm...turkey. Very tasty. And only one of about a dozen other incredibly delicious items.

It's not possible to capture the fun and chaos of our Thanksgiving meal in a photo. But here's a partial attempt.

What you're seeing below is an entire room, and table, dedicated solely to deserts. Delicious, wonderful, deserts. Yum!

Thursday, November 27, 2008

Ben and Grandpa's Thanksgiving Message

Here's a Thanksgiving message from Grandpa and myself. This is the unrated and uncensored (read: unedited) version. A small Yiddish lesson is included. Enjoy!

A Small Experiment With MzScheme's Foreign Function Interface

One of the projects I've been considering is integrating MzScheme in with another GUI Toolkit besides MrEd. Briefly, I'm interested in doing this because MrEd has some limitations that are apparent when you want to build sophisticated GUIs.

The first step to doing this integration with a new toolkit is understanding how the C foreign function interface works with MzScheme. This is also the first step to writing a MySQL interaface, or working with pretty much any other library out there. So, I figured understanding the foreign function would be valuable no matter what. Here's some sample code I worked up to figure this all out - the integration in this case is with the Tcl interpreter.

#lang scheme
;; Import the FFI libraries
(require scheme/foreign
(provide tcl-eval)

;; Load the ActiveTCL DLL library. You'll have to change this to
;; where the library is installed
(define-runtime-path tcl-dll "c:/tools/tcl/bin/tcl85.dll")
(define tcl-lib (ffi-lib tcl-dll))

;; Lookup C functions by name and signature and bind them to scheme functions.
;; This is the *magic* of Scheme FFI, and cool magic it is.
;; I figured out these signatures by looking at the TCL docs.
(define tcl-lib-create-interp 
         (get-ffi-obj "Tcl_CreateInterp" tcl-lib (_fun -> _pointer)))
(define tcl-lib-eval 
         (get-ffi-obj "Tcl_Eval" tcl-lib (_fun _pointer _string -> _int)))
(define tcl-lib-get-result  
         (get-ffi-obj "Tcl_GetStringResult" tcl-lib (_fun _pointer -> _string)))

;; A scheme wrapper for the tcl library calls. TCL requires that we create
;; a new interpreter, eval a script and then call a function to get the result.
;; We do all this. Again. this information was extracted from the Tcl docs
(define (tcl-eval . stmts)
  (let* ([script (apply string-append (map (cut string-append <> "\n") stmts))]
         [interp (tcl-lib-create-interp)])
    (tcl-lib-eval interp script)
    (tcl-lib-get-result interp)))

And here's an example of how the exported tcl-eval function works:

(tcl-eval "set phrase Hello-"
          "for {set i 1} {$i<=10} {incr i} {"
          "  append phrase , $i"
          "append phrase -World"
          "return $phrase")

Overall, I'm quite impressed with how easy it is to pull C functions into the Scheme world. What seemed complicated from reading the docs turned out to be straighforward in code.

Incidentally, as I was about to write up this blog entry, I found collects/ffi/ Which, as you might guess, is a real implementation of what a foreign interface with Tcl should look like. In the end, I found it useful to look at my crude example, and then look at to see how it could be improved.

The next step is to look into binding MzScheme to the Tk side of Tcl/Tk. It seems like an ambitious, but doable project.

A Fitting Rochester Welcome

Sure enough, our trip to Rochester included snow flurries, and we were greeted by a thin blanket of snow. How perfect. It's good to be back home.

Wednesday, November 26, 2008

Fuel For The Trip Ahead

Dave and I are heading home for Turkey Day. First stop: pickup food,
next stop: Rochester.

Since I've started this note, we've gotten on the road and the trip has
really begun.

Wish us luck! Hope your travels are safe.


Tuesday, November 25, 2008

Resetting A Windows XP Administrator Password - The Easy Way

For years now, I've been using this same "trick" to take a Windows box that I'm locked out of and trivially reset the administrator's password.

All you have to do is:

  1. Burn the Offline NT Password & Registry Toolkit to either floppy or CD
  2. Place the CD or Flopping into the computer that you're locked out of
  3. Boot up the device
  4. Carefully, follow each prompt the software gives you - choosing the default nearly every time you're asked a question

Last night, it took me longer to find a usable CD to burn to, than it did to reset the administrator password on an XP Laptop.

This tiny bootable application is really quite amazing. Besides getting me out of a number of tight jams, it's an excellent reminder about computer security. Mainly, when you have physical access to a machine, nearly all bets are off about providing any security whatsoever.

The Best (?) of CSPAN

While looking around for Obama's latest press conference* on YouTube, I stumbled on It's an interesting (and apparently quite left-leaning) take on mining CSPAN for useful content.

I found myself watching and enjoying the book coverage for Greasy Rider: Two Dudes, One Fry-Oil-Powered Car, and a Cross-Country Search for a Greener Future. See what I mean:

This also brought to mind the latest SNL Spoof of the Auto Bailout hearings, where they declare that they can say whatever they want because, c'mon, nobody's watching CSPAN.

I do believe CSPAN Junkie is an impressive site, and shows that where there's ton's of content, there's room for a blogger to come in and help make sense of it all.

*The Obama team did an excellent job of broadcasting their town hall meetings live and getting out the word on twitter back in the day. Why, exactly, aren't they doing that with transition process? It would be a nice supplement to

Monday, November 24, 2008

A Lesson From Standing in Line

I really enjoyed this article on lines. Specifically, on how different organizations deal with having to make people wait. Take one of Disney's approaches:

People waiting in line for a comedy show at Walt Disney World are asked to text message jokes that may be used during the main event.

"It works as our warm-up act essentially for the show, but it also takes time while people are working through that and so it keeps them entertained while they're waiting," Garlington said.

Simple and brilliant. You not only get people through the boring process of standing in line, but even use that time for something positive.

The article also contains general tips on making lines more palatable - such as providing more rather than less information, and focusing on making sure the line is absolutely fair.

But, the real take away I had from the article was that someone like Disney could simply write off standing in line as a fact of life, but they didn't. Instead they took on the challenge of figuring out what they could do to make the experience of standing in line a neutral, if not positive, one.

This reminds me of a story by Seth Godin. He explains that he visited a new restaurant and was given the worst table in the place. When he asked to move, he was told that the table that he was interested in was reserved - which he interpreted as "oh, we have a regular customer who deserves that table more than you." Here's his recommendation to the restaurant:

Sorry, but the answer is this: you can't have a bad table.

No one wants to settle for the bad table, your worst salesperson, your second-rate items. Not the new customers and not the loyal ones...

Which means you need to figure out how to improve your lesser offerings. Maybe the table in the worst location comes with a special menu or a special wine list or even a visit from the chef. Maybe the worst table, for some people, becomes the best table because of the way you treat people when they sit there...

Whether it's standing in line, or a bad table - there are two ways to approach this problem: assume that it's a fact of life, or be innovative and find a way to improve status quo. Seems to me, the businesses who innovate will win every time.

Keeping A Pulse On An Apache Web Server

Today I struggled with a customer's web server that kept spiking massive load averages. We're talking astronomical load averages, like 100 or 150. At that point, the box is so bogged down, it's not possible to debug what's going.

Because I couldn't tell what was happening when the box was actually in trouble, I decided that I'd set up a simple monitor that I could keep an eye on throughout the day. When I saw the box getting in trouble, I figured I could intervene before the server ground to a halt.

Here's what I did...

  1. Setup mod_status, so that I could review live Apache status. See the sample below for what the status page looks like: While mod_status is plain text, it has to be one of the most expressive user interfaces out there. It strikes a remarkable balance of being both informative and high level.
  2. Setup a command line to pull in the status every two seconds. Specifically, I ran the command:
     ( while sleep 2; date; 
        do rwebtool -G http://url/to/mod_status/output | \
        grep 'requests';
       done ) | tee -a ~/server-status
    The result is that every two seconds the following three lines are generated:
    Mon Nov 24 17:46:08 EST 2008
    <dt>32.9 requests/sec - 457.8 kB/second - 13.9 kB/request</dt>
    <dt>91 requests currently being processed, 40 idle workers</dt>
    This information is both logged on the screen and stored in the file server-status.

Throughout the day, I was able to keep an eye on the server - and as soon as I saw timeouts in the script, I new to visit Apache status page to see what was causing the server to get beaten up.

The script turned out to be quite useful, as I was able to capture the server just before it bit the dust. This then lead me to an unexpected solution.

Have I mentioned lately just how much I love Unix scripting?

Bonus: Other Commands To Monitor Server Usage

Here are some other commands I use to watch Unix servers:

  # show memory usage, refreshing every two seconds
  watch free -m

  # show a ascii art style load graph

  # watch the apache logs roll by
  tail -f /var/log/httpd/access_log

  # watch virtual memory usage
  vmstat  -S M 2

Sunday, November 23, 2008

More Cape Cod Photos

Here are some photos from our last two days at Cape Cod.

Thursday, we spent most of the day indoors, as I worked (ahh, the joy - and pain - of being able to work from anywhere). Friday, Shira and I toured up route 6a, lazily taking in the sites.

It was lots of fun, even if we didn't get sunburned from hanging out on the beaches. (Though, frostbite felt like an option. OK, it wasn't that cold, but still, it was chilly.)

Click here to see the photos bigger

Friday, November 21, 2008

Leaving The Cape

It's official - we've left Cape Cod and are heading back to Boston.

We enjoyed our really short stay. Going off season meant missing out on various stores and sites closed for this time of year - but I think it was worth it. The sites were beautiful, and far from crowded.

Today, we spent the day making our way up route 6a, lazily going from town to town. What a fun way to go. With the tour book and GPS in hand, we were able to find random sites without a problem.

So, it's back to Boston and then home to DC. I guess it's our approach to slowly weaning ourselves off of being on vacation.


Wednesday, November 19, 2008

Chilling On The Cape

Today Shira and I spent some relaxed time hanging out in Cape Cod. It's way off season, so yes, it's quite chilly here - but it's also nearly silent of tourists. It's kind of fun to not be surrounded by throngs of people.

Here's a bit of what we saw today...

Shira and I visited the Sandwich Glass Museum, which included a live demonstration of glass blowing. Glass blowing is just too cool. It's amazing how using such crude tools you can take a very fragile and solid material and turn it into one you can shape so easily.

We stopped by the Green Briar Jam Kitchen, which is both a historical site in Sandwich, MA as well as a place with some nice nature trails.

Shira was an absolute trooper, as we trudged through the pretty woods on this very brisk day.

Tuesday, November 18, 2008

The allergens

These guinea pigs are temporary boarders in my sister's house. Ben has a horrible cat allergy, and we learned something new today -- he is also allergic to guinea pigs/guinea pig hay (apparently my brother-in-law is allergic to the hay). So, while they may be fun to watch here as they attack some lettuce leaves together, the severe reaction that they evoked to Ben's respiratory system was not as pretty.

Amazing Sites In Boston

Shira and I headed to Boston today for a bit of R & R, as well as to visit her sister. Here are a few sites which impressed me today...

We started off our day with a visit to Faneuil Hall. This site has been witness to many critical debates in our country's history, going back as far as Samuel Adams recommending we rebel against Great Britain.

I simply can't fathom what it must have been like to have this debate. The immense risk, the long shot odds and then of course, the amazing outcome. This makes issues like weaning ourselves off of foreign oil seem like a walk in the park.

We simply had to take in all the important historical sites around Faneuil Hall, no exceptions. Shira lead me into one exhibition that she particularly wanted to study. Apparently it's for the famous patriot Ann Taylor. I'm not sure what her contribution to our country was, other than giving me time to contemplate the founding fathers while Shira tried stuff on in the dressing room.

But, the really amazing site that we saw wasn't in some historic building. It took place in a doctors office. Today, we got to hang out with Shira's sister, as she had a very thorough ultrasound done for the twins she and her hubby are expecting. There's just a fundamental difference in knowing someone is pregnant, and actually seeing the babies as real live entities. Wow.

Sure, the tech would occasionally point to a dark void and say, "see, there's the stomach" and I would smile and nod. But, plenty of times, there were definitely features I could make out.

Dude, there are two real live babies in there - I've seen them for myself.

Monday, November 17, 2008

Photos From The Texas Adventure

Here's a whole bunch of photos from the Texas adventure Dave and I just had. Dave took a fair number of these photos - so the credit goes to him.

I'm sorry to report that the captions on these photos aren't Shira quality - but hopefully they'll do.

Once again, I'd like to wish a big Mazel Tov to Aaron and Kristina! And to the rest of my family, it was awesome getting to see you guys!

Click here to see all the photos

Sunday, November 16, 2008

Recognizing The Code

It's been great traveling with my brother this weekend. He's fun,
generous and a good ying to my yang. Though, on a number of occasions
this weekend I've said something and he's responded with either "I have
no idea what you just said" or he's turned to me with absolute

Take the first example I can think of, as I was *driving* to the airport
at 8am on Friday and announced that I'm "going to crash soon."

He was more than just a bit confused by this declaration as we were
zooming along at 60mph, headed for an airplane trip.

What I meant, of course, is that I'm tired from staying up the previous
night working and am ready to just close my eyes and sleep. Crash.

This happened all weekend, and I kept wondering to myself why I had gone
mad. Why was I saying such whacky things.

A few minutes ago it hit me as to what's been going on. This weekend,
I've been speaking Shira and Ben code. After 10+ years together, we
apparently have our shorthand pretty well worked out. It's amazing

Sorry Dave that you had to put up with a non-sensical husband. Shira,
babe, I guess this means we are stuck with each other. Bily.


Mazel Tov Aaron and Kristina!

Tonight we celebrated Aaron and Kristina getting hitched. What a cute couple, what an awesome time, and what tasty food. Lots more photos on the way, but here's a few because I can't resist.

Are they not the cutest couple? They don't just look the part, they act it too.

The wedding took place just outside of Austin, Texas. And, as you might guess, there was plenty of Texas pride to be had. You might not appreciate the photo below, but it's a big group of the guests singing what I assume to be the UT fight song, and giving the Hook 'em Horns (Yikes, the hand gesture has a Wikipedia page?! Only in Texas.). Thanks Aaron for giving us a taste of the Lone Star State.

And of course, we partied. The DJ played a mix of country music (which I enjoyed mightly) and typical dance stuff (which I flopped around on the floor to), which made for a fun time.

Kristina and Aaron, I'm so happy for you guys and wish you nothing but joy and happiness on your new journey together.

Blogging For Ben's Mom And Other Non-Techies

My Mom doesn't blog - yet. But, if she ever does, I'm going to guess that she would choose to make Twitter her first blogging platform of choice.

First, I have to mention that my Mom isn't technophobic. She was sending e-mail back in the day when it meant telneting into multiple VAX systems. Trust me, she's a trooper. But, in a lot of ways, she's not a huge fan of PCs. She just doesn't spend a lot of time around them, and she isn't comfortable with firing up the computer and surfing and e-mailing away. She can take comfort in knowing that she's hardly alone in this respect.

What she has figured, to her credit, is text messaging. Text messaging is kind of like E-mail, but better. First, she doesn't need to get on the computer, she can do it from anywhere. Second, it's dead simple - tap out your message, and you're done. Third, the messages get read and responded to faster. Sure, she can't write a novel (and she uses e-mail for that at times), but there's many messages that don't require this.

And that's why I think, when she, and people like her, finally have a need to publish to a group information, they'll want to consider Twitter as an entry point. Twitter, like text messaging, is drop dead simple. The entire UI consists of typing your message and hitting submit. Sure, there are limitations on how much you can write - but when used for the right kind of information, it's very powerful. Also, Twitter can be accessed over SMS, so you don't need to log in to publish. Finally, Twitter makes it easy to have an audience follow you.

Why A Micro Blog?

OK, Twitter is easy to use. But, like text messaging, it seems so constrained as to be only useful for kids with too much time on their hands. A Twitter blog is known as micro blogging, because of the limitations in content you can publish. While micro blogging can be used to publish what you ate for lunch, you're hardly limited to such minutia. Just like text messaging, there are all sorts of reasons someone like my Mom might want to start a micro blog on twitter. Here are some that come immediately to mind:

  • For the family: During a family emergency (yes, I'm looking at you Grandpa - Mr. I'd like to give everyone a scare and have a pacemaker installed) she could publish information so that everyone can follow along. For more fun times, like visits with the Grand kids, she can mention short thoughts, and link to photo albums or videos that others have made.
  • For volunteering: My mom is always volunteering, and one day she's going to realize that she can use Twitter to mobilize the people she works with. She can publish information about programs that are upcoming, appeals for volunteers and logistical information. The Kentucky Secretary of State's use of Twitter was an excellent example of this during the latest election.
  • For Local news: I'm sure other ladies in the community would love to know that a certain store has a hard to find Kosher for Passover item, or some other little tidbit of local news.
  • For Business: She's no longer in the Avon business - but when she was, a Twitter blog would give her a nice little marketing tool. She could remind people of upcoming specials, talk about new products, and generally get the word out. AuctionDirect is a great example of using Twitter for business.

The web allows for not just person to person communication (E-mail and SMS), but for person to group publishing. But, for a lot of people, a standard blogging platform may be overwhelming to get started with. They should give Twitter a try - it gives you the power of broadcasting to a large group of people, with absolute simplicity.

Want to get started?

Getting started with Twitter is easy, head over to and sign up. You'll have to choose a username, which will be your web address. Say, you sign up as "BensMom" - you just tell your friends to visit:

In a lot of respects, you can think of this web address as kind of like your phone number of e-mail address. You'll give it out to people to keep up with you. And Twitter is lightweight enough that you can have a variety of accounts, one for business and one for pleasure.

You can also do Twitter over your cell phone, leaving the whole traditional PC world behind. Just send "HELP" to the phone number 404-04. You can also tell people to follow your blog simply by sending "FOLLOW BenSmom" to 404-04.

You don't need to be a geek to try this out. You just need to have information you'd like to broadcast.

Friday, November 14, 2008

Ben and Dave's Excellent Adventure

As usual - when David and I travel, things get rocky.

We got to BWI super early! Our flight was late and we were going to miss
our connection. We got on the standby list! We had to run to the last
gate in the concourse. We made it before the flight left! We were told
there were no seats left. They were wrong, and we are now aboard!

Like I said, an adventure. And this is in the first leg of the trip.


Thursday, November 13, 2008

More Scheme Development Envy

A while back, I mentioned that I was getting more and more interested in doing some web development in PLT-Scheme. Well, my interest has only increased.

  1. Jay McCarthy has published a fine set of nuts and bolts articles on the practicalities of writing Scheme web apps. Articles like, how to control the URL structure of your app, or how to run a SSL based server.
  2. Lately I've been doing some GUI (MrEd) development using the latest version of PLT-Scheme. I've pretty much become addicted to Contracts. The notion behind contracts is that you can attach type checking to a particular function. It's cleanly integrated with the module system, so all public functions can easily be annotated like this. You can do simple checks like:
       [balance  (account? . -> . number?)])
    You can also express more complicated contracts, such as passing in and returning functions, or expressing a variety of return types. Here's the contract for a function that takes in a string or number and returns back a function, that when invoked with a string, appends the original content (got that?):
        [make-appender ((or/c string? number?) . -> . (string? . -> . string?))])
    Finally, what's really cool is that these contracts are just regular functions, so you can build abstractions around them. For example, we can clean up that previous contract to say:
      (define string-or-number/c (or/c string? number?))
      (define string->string/c (string? . -> . string?))
        [make-appender (string-or-number/c . -> . string->string/c)])
    The contract functionality not only provides for error checking and debugging but also provides a nice - always up to date - type of documentation.

There are still a few items I need to hash about before I start doing any type of development, though:

  • I'd have to figure out what kind of server do I need to reliably run this puppy. I'd probably start off with a VPS from my friends at This should give me full control over what I run there. But still, I wonder what kind of memory usage I'd want to plan for?
  • I'd have to test out PostgreSQL or MySQL db support to make sure it was strong
  • I'd have to sort out what the deployment cycle is like. Just copy over files and restart? Could I do hot deployment of some kind, by reloading scheme files (one of my favorite tricks in the book)? PHP has spoiled me in this respect, it's a simple - push files, and you're done.
  • What's the best production web server arrangement. Should I just have clients talk directly to plt-scheme, or should I proxy them through Apache first?

It's nice to see the technology evolving. At some point I'll hit that tipping point, where the risk of Scheme will be outweighed by the benefits of it's features. And then Bam!, I'll be good to go.

Update: Untyping answered my questions above! Thanks Noel, you rock! And, best of all, you're taking away my excuses.

Gotcha Of The Day - Dealing with Legacy File Names

Let's say you're dealing with existing website, and you have a page like contact.html. Now, let's say you would like to have that page in PHP so that you can programatically render the list of users to contact.

Just renaming the file from contact.html to contact.php will leave you in a heap of trouble, because any links to this file will suddenly be broken. If the site is small, you can just update the files - but in a large, unknown legacy site, this isn't possible.

It hit me, while I was facing this exact problem, that there's an elegant solution. Rename the file, then upload a .htaccess file with the following in it:

 RewriteEngine on
 RewriteRule contact.html contact.php

And there you have it - the world can access contact.html, yet contact.php will really be invoked.

I'd say, if you do any web development, among the top 3 skills you should have should be writing Apache Rewrite Rules. Any effort you put in to learning them will be handsomely returned to you.

Wednesday, November 12, 2008

The 1 Year Anniversary

It's nothing short of amazing to me that 1 year ago today I started working full time for myself, and made Ideas2Executables my day job. Wow.

I feel today, very much like I did 6 months ago: this is the most fun and exciting job I've ever had, and wouldn't trade it for anything else in the world. People actually pay me to do this? Can you believe that? Sure, working for myself has brought along a level of stress I couldn't have imagined, and sure, it's a 7 day a week job. But still, it's awesome.

I've learned a ton this last year, and yes, much of it by trial and error. Here are some of the more poignant lessons I've learned:

  • Be curious. I'm supposed to be the geek, the expert, if you will. Yet, I've learned time and time again that listening to my customers and hearing out their suggestions is often the path to finding a solution. So, while I never to fail to offer my opinion, I've learned to limit my "No you can't ..." type of statements whenever possible. There's a balance to strike here of course. But the bottom line is that listening to your customers isn't just courteous, it's also an ideal way to learn, grow and succeed.
  • Never underestimate the role of a superb business partner. It's simple - without my wife Shira, there's no Ideas2Executables. She might not write code, but she does about a million other things - including accounting and invoicing. If I had to take on all these responsibilities, it just wouldn't work. Shira, though, is more than just a CFO. She's also a person who I can bounce ideas off of, debate with, and know that she'll always push back on me. If I'm successful, it's because of her.
  • Learn to say no. Saying no to projects and customers should be easy. I've found it isn't. First, saying no implies that you're not especially competent at something and that hurts to say. Secondly, and more subtly, I was very much used to the startup world where I was regularly given impossible tasks with impossible deadlines. They were a fact of life. Owning my own business, I've had to learn to push back on this - and to recognize these situations as what they should be: the time to pass on a project. Consistently, being honest with clients about what I can't do, has more often than not built up our relationship, not torn it down.
  • Always have a paper trail. It takes two seconds to dash off an e-mail and get in writing exactly what everyone's intentions are. Always do it. Nuff said.

I owe a special thanks to all of our customers - it's working with you that have made this last year a success in every way. Thanks - and here's to many more!

Business Lessons From The Hair Cuttery

Years ago, I used to get my hair cut at the Hair Cuttery because it was close by and they were cheap. The experience wasn't anything special - I recall getting a decent hair cut, but the only image I can conjure up in my mind is that of total chaos. I certainly never felt valued as a customer. But hey, what did I expect, we're talking a $15.00 hair cut here.

My usual hair cutting place wasn't open this morning (d'oh - they missed a customer!), and my ToDo list called for getting my hair cut done first thing this morning. So, I decided, what the heck, I'll head back to Hair Cuttery.

Going In With Expectations Lowered

Boy, was I surprised with my experience. The woman who greeted me didn't just plop me down at the first chair, but made a show out of picking a particular stylist. My stylist then introduced herself, learned my name and even shook my hand. The place was immaculate (though, to be fair, I was there really early in the morning). The whole image and experience was that of professionalism. I think I even got a scalp massage out of the deal (which, frankly, I could live without. I much prefer the older barber who cuts hair at my usual place who's tools include a straight razor and an ancient vacuum.)

And here's the thing - the price of the hair cut wasn't any different. It was $16.00.

They Get It

Somebody at Hair Cuttery corporate, understands that polished, professional behavior doesn't have to cost more. Image and customer experience can still go a long way, even if the actual service provided isn't any different than it used to be.

It's the whole notion that inexpensive doesn't have to mean cheap.

I also think this is a brilliant strategy to take in rough economic times. Hair Cuttery prices will get folks in who are used to paying more at a fancy salon, and their service will keep them coming back. The result is that Hair Cuttery won't just survive the economic down turn, they'll actually use it build their business.

There's definitely plenty to learn from these guys. Oh, and I got a decent hair cut out of the deal, too.

Tuesday, November 11, 2008

Gotcha Of The Day - URL Fragment Not Jumping To Right Page Position

Since basically forever, a URL can have fragment at the end of it, and the browser jump to that location on the page.

For example, suppose you have a file named book.html and it looks like:

  <h2><a name='chap1' id='chap1'>Chapter 1</a></h2>

  <p>It was a dark and stormy night. ...</p>

  <h2><a name='chap2' id='chap2'>Chapter 2</a></h2>
  <p>It was also chilly out. ...</p>

You can visit the following urls:

  • book.html - View the top of the page
  • book.html#chap1 - View the page, but jump to where chapter 1 begins.
  • book.html#chap2 - View the page, but jump to where chapter 2 begins.

Nothing exotic here. Like I said, this is just supposed to work.

Yet, today, it wasn't working. For some strange reason, if I hit a url, say:

The browser wouldn't open up at the photos section. Oddly, it didn't open up at the to of the page either.

This was such a stumper because this fragment behavior is Just Supposed To Work. And it's been around long enough that a modern browser should have no problem with it.

After some experimentation with the page I finally realized what's going on. My page had the following shape:

  Lorem ipsum dolor sit amet,
  consectetuer adipiscing
  elit. Morbi tempor ornare
  eros. Nunc libero. Etiam

  <a name='photos' id='photos'></a>
  <h2>Check out these neat photos</h2>

  <script type='text/javascript'>
   // Code to pull in photos

  Lorem ipsum dolor sit amet,
  consectetuer adipiscing
  elit. Morbi tempor ornare
  eros. Nunc libero. Etiam

What was going on was that my page was loading, the browser was jumping to the right spot on the page, and then my JavaScript finished executing. The JavaScript inserted content on the page, but the browser had already positioned itself, so it couldn't take into account the JavaScript content.

The solution turned out to be quite clean. I essentially reimplemented the URL fragment behavior in JavaScript. This sounds harder than it is. My JavaScript essentially turned into:

  // make sure to import the prototype
  // library.

  // code that inserts content on the page

  // location.hash is automatically set to the URL fragment value
  if(location.hash == '#photos') [
    // find the node that we marked with , use the
    // prototype function to scroll to it.

I updated the JavaScript and my page jumping was back to working. This was an excellent example of a bug that couldn't happen (URL fragments not working? Impossible, the feature's been around forever, blah, blah, blah) and yet it was happening and it was a perfectly clean fix. I love debugging.

Thanks To Our Veterans

I think this movie sums it up well. We all owe a debt of gratitude to those who have served. Put most simply, Thank You.

Google For Snooping - Digging Up Deleted Pages

When the Obama team launched I was impressed. I especially liked the agenda section of the site, which outlined in describe problem and present plan format, what the Obama team hopes to accomplish.

A day or two after the launched, I returned to it to show someone part of the agenda. Only, the agenda pages were, and still are, gone.

Does this mean the Obama team has tossed out their plans? Or, did some overzealous web developer publish more than they wanted to have shown? Regardless, this has been nagging at me - I know those pages existed at one point, but now their gone. Where they ever really there?

Of course, Google knows the answer to this. Ahhh, the mighty and powerful Google. Google, as awesome as it is, has a lag between when site contents change and when Google knows about this. This is known as the Google cache, and if you ask nicely, Google will cough this up stale data for you.

Here's how I snooped around to confirm that the agenda did, at one time, exist.

I searched Google for pages containing the keyword "agenda", but limited my search to just the website. To do this, I entered exactly the following in Google:


I was greeted with the following results:

As you can see from the results, at one point there were pages named, and so on.

Clicking on one of these links takes you to a page with the following message:

In other words, the page no longer exists. Or, it exists and we're just not allowed to see it.

But, we're not quite out of luck. If you click back to the Google results and click on Cached next to the link, you are taken to a page that looks like:

Google is showing us the last known copy it has of the page. Which just happens to have the text that's now been deleted. It includes a warning at the top of the page:

This is Google's cache of It is a snapshot of the page as it appeared on Nov 8, 2008 06:13:55 GMT. The current page could have changed in the meantime.

Here's a snapshot of the menu I saw the first day showing all the agenda items they had pages on:

So there you have it - proof that I'm not crazy, and that the Obama team has yanked significant content from their site. What this doesn't tell us, of course, is Why?. That's probably left up to other bloggers to tackle. Personally, I liked the content there and felt it set a tone of openness. But what do I know?

I do give the Obama team credit though, they are keeping up the blog and using it as a way to publish press conferences, favorable interviews and anything else they'd like to share. Hopefully, they'll continue to publish there.

Review: The Express

I was totally irresponsible tonight, and ditched my work to go out and see a movie. I ended up watching The Express, which is based on the life of Ernie Davis. Davis was the first African American to receive the Heisman Trophy. And while I know very little about football, even I know the Heisman trophy is a big deal.

In general I found the movie inspiring and quite watchable. I had to agree with my brother David, whom I watched the movie with - at times it felt a bit long. We agreed that this was mostly due to the fact that it had about 3 distinct endings. None of which I'll give away here.

Reading through Ernie's biography it's interesting to see which aspects of the movie were both unrealistic and true. Like the fact that his white teammates boycotted the Cotton Bowl Trophy Ceremony because the black players weren't allowed to attend, or the fact that Ernie really did meet President JFK after being awarded the Heisman. This all seemed like Hollywood glitter, but was in fact the real deal.

I did watch the movie with a slightly different appreciation given our most recent political events. It's hard to believe that 50 years ago it was unusual for a black athlete to receive a prestigious award, and just a few days ago we elected our first black president. Amazing.

I give this film a 7.5/10 for being an important story about a remarkable man. I won't promise that it'll be easy to watch, but it's worth the effort.

Monday, November 10, 2008

Sonrenson Squeeze Tutorial: How to convert movie files to .flv

One of my customers needed to convert a variety of .avi to Flash Video Format, .flv. The most effective tool I know to do this is Sorenson Squeeze. As sophisticated as this tool is, I couldn't for the life of m find a simple tutorial my customer could follow.

So I whipped up this quick screencast. Please excuse the fact that the audio is slightly delayed from the video, and is pretty poor at that. Hopefully, it's at least functional.

I especially like how I say the word "squeeze" in Sorenson Squeeze with such vigor. It's only after recording myself do I realize this, and think, "Ugh, do I really talk like that?"

A voice over artist, I shall never be. Hopefully this is helpful:

Sunday, November 09, 2008

Maketing With The Obvious

Today, I bought a new pair of cheap ($24.00) headphones. I couldn't
help but notice that all the Sony headphones, regardless of the type,
had a clearly printed mesage:

""Ideal for music listening""

Well, duh, I thought? What, do they have a pair that are "ideal for
listening to NPR?"

Saying that your headphones are ideal for music seems a bit much,
especially when we are talking about such basic models. But, I have to
wonder, perhaps it's good marketing?

What if I'm holding a pair of Sonys in my hand, and another brand - and
the Sony pair says they are ideal for just the activity I want use them
for. Am I not going to be swayed, maybe just a little bit?

This works especially well because Sony's competitors assume that
customers know a $20 pair of headphones will all sound the same.

This is an interesting tool to try against the competion. If you offer
the same service, why not make a clearer claim about what you can do?

I'll have to be on the lookout for ways I can try this out.

In the mean time, I have to say, these headphones really are ideal for
listening to music. Rock on!


Another Reminder Of Just How Lucky Americans Are

Perhaps you're a bit bummed that your candidate didn't win the Whitehouse. Well, here's a fantastic article to remind you just what an amazing and remarkable country we live in.

The story is about individuals using Facebook to organize against the Egyptian government.

Yet the ease of participation cuts both ways. At first glance, this form of online activism [using Facebook] might seem ineffectual, even frivolous — a brand of sacrifice-free protest sometimes derided as "slactivism." After all, the Facebook group Bring Back Arrested Development has, at last count, 15,889 members, the group FREE TIBET! has 120,126, and Maher's group has 70,000. Big deal. But in places like Egypt, these virtual gatherings are a big deal. Although freedom of speech and freedom of religion may be democracy's headliners, it's the less sexy-sounding freedom of assembly that, when prohibited, can effectively asphyxiate political organization. Uniting 70,000 people is no easy feat in a country where collective action is so risky. Social networking has changed that. In turn, it is changing the dynamics of political dissent.

While the article has a technical bend to it, I found the discussion of security forces picking up individuals, torturing them, and essentially doing whatever they can to keep a group down who's mission is "peace and freedom" most powerful.

We live in an amazing country, and sometimes you don't appreciate just how much freedom we have until you realize others aren't so lucky.

Saturday, November 08, 2008

Performance Car and Truck Parts - A Low Price Source

We have friends who are selling Performance Car and Truck Parts. This, of course, is something I know nothing about - but I'm told the prices are quite good (just like my mom taught me, never pay retail!). The sellers are great people and know cars exceedingly well, and if they give you any trouble, let me know, I'll kick their butts.

Here are some details:

We have catback exhaust systems for various vehicles (cars and trucks) by:


Since there are so many part numbers (we have over 150 systems in total), please email with your Part Numbers (each system has different exits, mufflers and such so please note when doing your research) and I will get a price for you.

We also have AutoMeter Gauges for various applications if interested. Just let me know what you are looking for.

Boy, isn't Shira going to be surprised when I buy her a "Borla catback exhaust system" for the holidays. I know she'll just love it!

Friday, November 07, 2008

Google Docs As Website Monitor

I happen to stumble on this article which talks about using Google Docs to monitor a website. The specific example is a clever one - use a Google Spreadsheet to track price changes from Google Products.

The magic that makes this all work is the ImportXML function. Specifically:


What makes this even more useful is that you can publish your spreadsheet, and then subscribe to the RSS feed that Google Docs makes available to you. In other words, Google Spreadsheet is being used as the middle man, to grab data and fold it into a feed.

Clever stuff. There more useful Google Docs articles to be had on the site. So, check it out.

Thursday, November 06, 2008

Laptop Surgery - Patient Pulled Through, Resting Comfortably

About 2 weeks ago, the LCD screen on my laptop stopped working. Then, mysteriously, it started up again. A couple days ago, it went out again. The laptop was fine - it was just no longer a laptop, as it had to be tethered to my screen.

The folks at Dell were nice enough to ship me out replacement parts in a hurry, and tonight I was planning to perform major surgery on laptop, swapping out the LCD screen.

I took a slightly different approach this time to repairing my laptop. Rather than just diving in and unscrewing things, I setup my work space, prepared the instructions and methodically followed every step. Who knew there were manuals that gave you such detailed advice as:

Starting on the right side of the computer, use a plastic scribe (inserted into the indent) to pry up the hinge cover. Lift the cover away from the computer going from the right toward the left, and then lay the cover aside

And here, I thought the best approach was to jam a screwdriver under the plastic and yank. I guess their approach works too.

Once I had the laptop's guts fully exposed, I realized what my hunch was all along: the LCD cable had come disconnected. I reconnected it, and the laptop screen works, good as new.

I think just have the pristine parts next to me, and calmly taking things apart, made all the difference. - A step in the right direction

There's a lot I like about, Obama's new transition website:

  • The name is prefect
  • The second topic listed on the home page is "Open Government" - again, perfect
  • It demonstrates forethought - they didn't put this together in the last two days, this has been on the radar from some time
  • It has a call for input, to give voters a chance to get involved
  • It gives folks an opportunity to apply for a job

The whole website is putting into action one of the primary message of Obama's campaign: change will happen, and you will make it happen.

My favorite area on the site, though, has to be the most boring - the agenda. From taxes to family, each item has a clear problem statment, and Obama and Joe plan. Why is this so important? If there's one thing I've learned in this election, it's that you can never have enough information about yourself available. With even the slightest information vacuum, rumors will take over in a hurry.

The only thing I'd like to see is a Q & A area, where folks can pose questions to Obama and get a clear response. This goes with the information theme above. Why not give yourself an opportunity to address an issue head on and directly?

Overall, well done.

Wednesday, November 05, 2008

From Blog Post To Community

Thinking through my recent blog post, how to drive traffic to a new site it occurs to me that it's lacking in both depth and breadth. That is, there are plenty of ideas that could be added to it, and there's plenty of detail that could be provided for each item. But how to grow it efficiently?

I could take the brute force approach and dedicate myself to collecting up this information and logging it as I learn about it. That's both tedious, and assumes I have expertise I don't have. It seems to me that a smarter approach would to be turn this post into a community project. I could take a page from the Wikipedia playbook, and let the world contribute and grow this list.

The cool part is just how easy this should be to do. Here's the approach I would take:

  1. Create a free Wiki at
  2. Set the Wiki up to be read only, and include a note at the top that people who are interested in contributing should contact me
  3. Make the front page of the Wiki the list of tips that I started in my blog post
  4. To demonstrate how detail could be added, I would make a supporting page for a variety of the list items, giving much needed statistics
  5. I might consider upgrading to a PBWiki account that allows me to have a custom domain name, so I can tell people to visit instead of
  6. Make a call for contributors on Facebook, Twitter, my blog and anywhere else that might have folks who are interested in documenting this sort of knowledge
  7. Between myself and others, watch the site grow

The cool part about this isn't this specific idea (which I'm not sure I have the time to pursue), but that anyone can turn any collection of information they have into a community site. Regardless of community size, budget and technical skills - this is totally doable.

Tuesday, November 04, 2008

Gone and done it.

There, I voted. I have officially reserved the right to complain for the next 4 years :-).

3pm was the ideal time to hit the polls - there was no line. While not as exciting as waiting 3 hours to vote, it was more efficient.


Beginner's Tips To Driving Traffic To Your New Website

So, you're a Toilet Paper Entrepreneur who has a new website. You know you want to drive lots of traffic there, but how to do so without spending gobs of cash you don't have? Oh, and let's assume you're not particularly web savvy too.

Here are some suggestions to get you started...

  1. Setup Google Analytics on your site so you can measure how much traffic is coming your way.
  2. Make sure your site is in Google, do so by visiting and running the search:
    (Note: you type "site:" without any spaces, don't enter the "www" and leave off "http://"). If you do this properly, up should come the pages that Google knows about your site. This can take a while to happen, so if at first, they don't show up, don't panic if the site is really new.
  3. Update your e-mail signature to include your web address and a tagline saying why folks should visit it
  4. Update your instant messenger away message to include your web address. This works particularly well in Google Talk.
  5. Print your web address on mostly free business cards. Hand out to your friends and mom.
  6. Put your web URL and a clever saying on a T-shirt or other item.
  7. Use Google Blog Search to find people writing about topics relating your website. When you have something to say, comment on what's written there and be sure to include your website information when filling out the comment form.
  8. Consider using AdWords to buy some traffic to your site. Google gives you pretty good control over how much money you spend, so give it a try and see how you like it.
  9. Find forums contain discussions relating to your website. When you have something helpful or intelligent to say, post a reply. Make sure your web URL is in the signature of your post.
  10. Setup Google Alerts on keywords that related to your website. When a new page is found, follow up with the site owner by posting a comment or sending them an intelligent e-mail.
  11. Never, ever, ever SPAM. If you think what you're doing is technically OK, but doesn't feel right - don't do it.
  12. Write up a lens on a topic relating to your website. You can even write up a lens about your website.
  13. Write up a how to using information that you're an expert on. Link back to your website in your biography, or if appropriate, in the how to.
  14. Make the content on your website unique, fun, interesting and readable.
  15. Offer a contest on your website
  16. Offer to write articles or guest blog posts for other bloggers. Offer them the same privilege on your website.
  17. Add links to the websites that are related to yours on your site - the karma points will be worth it.
  18. Shoot a video, mention your URL in it, upload it to YouTube, Vimeo and other websites
  19. Sign up for BizBrag and start bragging about your business
  20. Sign up for MySpace, Facebook and other social networking sites. Fill out your profile and be sure to link to your website.
  21. Give Twitter a try, and use it as a way to share news that relates to your website
  22. Upload photos and create a profile that relates to your website on Flickr and other photo community sites
  23. Follow the Help A Reporter Out (HARO) service. Use your expertise to connect with repoters and other media.
  24. Setup an e-mail subscription service using Feedburner that allows people interested in your site to follow along via e-mail updates
  25. If you have a service based website, try posting on craigslist. If you have a product based business, try selling on eBay. With either case, make sure your URL to your website is mentioned (where appropriate).
  26. The general rule: keep an eye out for any site you can intelligently contribute to. And when you do, make sure you website URL is mentioned in your profile or writing.
  27. If your website doesn't have a blog associated with it, consider creating one. This will give you a chance to produce fresh content on a regular basis.
  28. Use, and contribute your website content to services like: digg, stumbleupon and reddit.
  29. Is your domain name hard to spell or remember? Use BustAName to find and register alternate domain names. You don't need to create another website, these new names can be redirected to your existing site.
  30. Create a Wiki using PBWiki and hosting a community knowledge site. Make sure there's an About page that includes your website's information.

Note 1: This list is definitely incomplete - please use the comments section to make suggestions of what I could add to it.

Note 2: If you'd like clarification on any of the above items, let me know and I'll do so.

Scenes From An Obama Rally

Like I mentioned last night, I made it to Obama's final rally of the election campaign, right here in Manassas, VA.

Between the crowd and the poor lighting I didn't get much in the way of usable photos. But here are a couple to give you a feel for what it was like.

One speaker claimed there were 80,000 present. Another say 100,000. While I was in the thick of it, I would have said the numbers were smaller than that. But, attempting to leave really made me appreciate just what a huge crowd this was.

Most of Obama's speech was the same he's been doing for the last few days, if not weeks. He did however get a little introspective about his own campaign and said that he ran it the way he did, in part, to show that it was possible to run a national campaign by attacking issues and not your opponent. He even admitted that looking back he could have done a better job at this - but still, I think he ran a campaign he's proud of.

The highlight of his speech was a stirring story he told at the end of the night, one I hadn't heard before. There's just something amazing about having one person command the absolute attention of 80,000 individuals. For most of his speech he was talking, but for that final story, he was connecting. The man's gifted, no two ways about it.

Hmmm, there's one last thing I'm supposed to do today for the election...oh yeah...VOTE.

From what I hear, the lines in our polling station, even at 6:15 were out the door and wrapped around itself a couple times. Hopefully, if I go mid-day, things will have calmed down by then.

Monday, November 03, 2008

So. Many. Democrats.

I'm dashing this note off as I wait for Barack Obama to appear at his final rally, here in Manassas.

There are quite a few folks here. Not sure how many, but lots.

The photo doesn't do the event justice - it's a snapshot of the crowd behind us. And we arrived here late.

This is pretty remarkable.


Sunday, November 02, 2008

Preparing To Vote In Arlington

Here are some items to help you to get ready to vote in Arlington...

First, check out this list of 10 items to consider before voting. While the list is offered by the Democratic party of Arlington, most of it's relevant to whichever part you are voting for (here's the Arlington Republican site). Including:

There are two types of voting machines. Voters will have the option to vote on the touch screens used in most past elections or new optical scan machines. If the wait for the touch screen is long, ask to vote using the optical scan. Both machines are easy and reliable. The Optical Scan is a paper ballot that provides a paper trail. Voters use a special marking device in order to cast a vote. Once the ballots are marked, they are inserted into a machine that reads the markings and tabulates the votes.

Anything to avoid a long wait could be handy.

This election, you'll have a chance to vote for a member of the county board. Here is a video statement from each person running, and their website.

John Reeder -

Barabara Favola -

Unfortunately, the main Arlington web site is down at the moment. I'm having trouble finding details about the bond questions being raised. Anyone have any suggestions where I can find info on these?

A Better Way To Talk Politics

Scott has an insightful post out about how talking politics can cost you (virtual) friends in a hurry.

From Shira's perspective, Scott's final assessment is right on:

In the end, while you can’t be all things to all people…just keep your political beliefs to yourself because you never know who you may offend or worse…who will be adding YOU to their blacklist.

That is, politics and social media (blogs, facebook, twitter, etc.) don't mix. Not if you don't want to piss off your audience, anyway.

Me, I don't see it so clearly. That's probably because I like to talk politics on my blog. I think there's a wrong way and a better way (I'd hardly call it the "right way") to go about this.

The Wrong Way

Think about what happened when Scott posted:

OBAMA Exposed!!!

and friends of his that are Obama fans follow the link, what do they find? An article saying that Obama isn't a US citizen. At this point, Obama folks are no doubt hot, because this rumor that Obama isn't a citizen has been put to rest multiple times. With blood pressure high, a friend of Scott has three choices:

  • Get into a fight with him. This is possible, but unlikely. I'd call this charge pretty extreme, and if Scott believes it, he isn't likely to be phased by mere logic.
  • Ignore the post. Possible but the reader is (a) annoyed already and (b) may feel that ignoring it tacitly agrees with Scott.
  • Unfriend him. This not only sends a message to Scott that he's done something wrong, but avoids your blood pressure getting raised in the future.

Given these choices, it's no surprise that so many people unfriended Scott.

A Better Way

I think a better approach to publishing political content to your social network is to look at it as an opportunity to learn. And to do this, you need to pose your opinions in a way that seeks to have people respond and even correct you.

So, instead of "Obama Exposed: ..." - what if Scott had said something like:

Obama friends - help me understand [URL] - do you buy this story?

An Obama fan would be able to come back and provide a link or two that they feel debunks this story. Scott could choose to believe or not the links provided, but at least the opportunity to educate was there.

There's a catch to this approach - you need to be absolutely, completely, genuinely interested in learning something new. So committed, that you'd be willing to actually change your point of view. If you're not willing to change your perspective, then either don't post, or post knowing that you'll be turning people off.

In this case, perhaps Scott would appreciate that Obama is a US citizen and can run for the position of president. Does that mean that he has to vote for Obama? Of course not.

In other words: Seek First to Understand, Then to be Understood.

An Important Lesson?

I bring this up not to beat up on Scott. For what it's worth, I think he's a great guy who probably got a little carried away in the heat of the moment. Been there, done that, and will probably continue to do so.

No, I bring this up because this issue of turning off your readers / friends isn't specific to just politics. Or religion. Or any other topic. The fact is, when you express an opinion, you have to understand that the people who's blood pressure you raise, are going to consider leaving you.

The bottom line: express your opinion with care.

Saturday, November 01, 2008

Enhance Your Verbal Judo

Shira showed me to this useful article: Ten guilt free ways to say no. It does just what it promises - gives you a way to say no, without hurting the asker.

Here's an example:

1. Request: A friend in need asks for a Trump-worthy loan.

What you should say: "I wish I could, but as a rule, I don't lend money to friends."

Why it works: It's clear that you are not singling out this person as untrustworthy.

Oh, and for the record, Shira's never had a problem saying no to me before.