Tuesday, March 22, 2011

Free often leads to entitlement

I just read Fragility of Free and wanted to share my own experience with offering a service for free. Back in the mid 90's, I created a system that gave people in the Greater Seattle area free local long distance calls. It was a great experience and taught me that once you start giving people something for free, they will start to think of it as something they'll always have a right to receive.

We'll need to start with a bit of a history lesson.

Long before we all had free nationwide long distance on our cell phones, land-line phone companies charged a lot for local long distance calls. In the Greater Seattle area it was more expensive to call from Renton to Redmond than it was to call New York! However, if you were inside the city limits of Seattle, then you could call to/from both of those locations as a free local call. This was true for most of the Seattle suburbs within King County.

Also, before the time of PBX business phone systems, there was a type of phone line known as Centrex, where all the switching was done at the central office. In order to transfer a call, you would do a hook flash and then dial the destination phone number.

At the time, I was writing code in Delphi 1.0 on 386 hardware and Windows 3.11. We knew that we could combine a Seattle centrex phone line with hook flash transfer to offer people in the suburbs free local calls. At the time, several so-called experts told us that in order to do that, we would need to use Windows 95 and a voice card that cost about $1000.

However, we were convinced that we could get it to run on a 386 and a $27 voice modem. It was late one Friday night (maybe even early Saturday morning) when I finally figured out that the bang (!) character would cause the modem to hook flash and I successfully transfered a call. That remains one of my favorite coding breakthrough moments of all time.

My partner's grandmother lived in an area where she could get phone lines with a Seattle prefix, so we order some Centrex lines and put 3 computers in a closet in her spare bedroom and started promoting the service.

When someone called the Seattle phone number, one of the 3 computers would answer the call and play a 30 second ad. Then it would prompt for an access code and the number they wanted to call and would transfer the call. As soon as a call was transfered, that phone line and computer were free to take the next call. At the peak usage, we were processing about 40,000 calls per month. We had a log of every number that was called through the system, but I don't think we ever did anything with those numbers.

We knew the phone companies wouldn't be happy about this, but we did want to make sure what we were doing was legal. Being young and without the budget to hire a lawyer, the best we could determine was that it was legal as long as we never charged anyone any money to use it.

We had advertisements built into the system from the beginning, but we also thought it would be illegal for us to sell ads to anyone else, so we just made our own ads for our other business.

People could get an access code to the system by visiting our website and passing a 10 question quiz. Answers to all the quiz questions were within the text of our website, so this was a way to make sure people read our site before we gave them free phone calls.

People really loved our service. We had our domain name painted on the side and back of our van and one time while stopped at a red light, the lady from the car behind us got out of her car and ran up to tell us how much she loved our free calling network! We also had jackets with our domain name on them. One time at a restaurant we met some guys that operated a BBS who said we were saving their users a lot of money. We also got our picture in the local paper along with a great article talking about what we were doing.

Needless to say, this whole thing was a very fun experience! However, we eventually decided that it wasn't worth the cost to keep it going, so we shut it down. I think if we could have charged a subscription fee or even could have sold advertising, it would have been a profitable venture. But the phone company had already shut off the phone lines once and we weren't sure how much longer we'd be able to keep it going anyway.

Much to our surprise, a short while later, we received a notice from the Better Business Bureau that someone had filed a complaint against us for shutting down our free service! Once we explained to the BBB rep that it had been completely free and that we never made any statements about how long it would be available, they closed out the complaint, but it has always made me think twice before ever offering something for free that cost me money.

As a Gmail, Blogger.com and Twitter user, I am thankful that these free services exist, but I also understand that if they change the deal or try to force advertising into the platform, they're just doing what they need to do in order to continue providing something for free that does actually cost them a lot of money to run.

Tuesday, March 15, 2011

"Save Game" for programmers

If you've ever played an adventure or saga type of video game, you're familiar with the option of saving your game. Just before a really difficult section or before facing a challenging level boss, you hit save so that if (when really) you died you could try again from that saved point.

Have you ever wished you could do that in real life? Just before embarking on some tough challenge you could hit save and easily get back to that point to try again until you were successful.

Well, if you're a computer programmer, that's exactly what you can do with version control! I've heard a few programmers ponder if it's worth it or not to use a version control system when working on a solo (or hobby) project, but I think it's always useful. Maybe even more so when working on a project that you only touch occasionally in your spare time.

Also, if you haven't checked out a distributed version control system (DVCS) such as Git or Mercurial, then you're working on an older generation of the technology. The lack of file locks and the ease of branching and merging make these systems a joy to work with.