Archive for July, 2005

Korby Parnell recently wrote about an interesting spam message he received. I was surprised to read Korby’s question, “Why would a spammer cram all these strange words into an email body?”

At first, I thought to myself, “How could he not know that?” As a computer professional in software development, I thought, certainly one should be up-to-date on the latest spammer techniques. Even more so for somebody who works for a prominent company.

The more I thought about it, I realized that it is silly to assume that somebody else should know everything you know. That’s what two-year-olds think. By the age of three, most of us figure out that we can know things that others don’t, and thus begins the age of secrets. Yet, I think we all fall into this trap.

I know that our customer support team deals with this quite often. A customer will call because they are having a problem. After a while, the suport rep will realize that the customer is making an incorrect assumption about how the system works. After the support rep explains that the system doesn’t do whatever the customer thought it did, the typical response is, “I can’t believe nobody else has reported this is a problem.” I know that we like to phrase the response as, “Well, we have over 300 companies using the software, and you really are the first one to ask for this.”

Several years ago, I watched a fascinating Scientific American Frontiers episode called “It’s a Kid’s World“. I learned from this episode that young children don’t realize that their thoughts are private. They seem to operate on the principle that thoughts are public knowledge. Perhaps a little bit of that carries over into our adult lives?

If you want to explore the episode, the part about public vs. private thougts is in the last segment, “Changing Minds.” Be patient with the video. I don’t think the PBS servers are state-of-the-art.

This one’s for my wife to appreciate. Found in the rec.music.makers.trumpet newsgroup…

So, these three notes walk into a bar – a G, an Eb,
and a C. The bartender looks up and says, “We don’t
serve minors.” The Eb leaves, and the other two have a
fifth between them. After a few drinks, the G was out
flat, and the experience was diminished. Eventually,
the C sobers up, sees one of his friends missing, the
other one passed out, and realizes to his horror that
he’s under a rest. C was brought to trial, found
guilty and convicted of contributing to the diminution
of a minor and was sentenced to ten years of DS
without Coda at the Paul Williams/Neil Sedaka
Correctional Facility. While in the Correctional
Facility C started to play experimental jazz and
became a free note just in time before a group of
other notes were caught trying to break out in an
ascending scale over the wails.

Postlude: I wanted to assure you that I am sending the
above to you exactly the way I received it, without
any variations. I did reply to the sender, however, as
I was afraid someone was going to put him behind a few
bars at Sing Sing for the treble he had gotten into –
but was glad to hear it wasn’t a major offense!

Eric Sink’s posting, The Game is Afoot, is an enjoyable read for anybody who works for an ISV. I was struck by the creativeness of his metaphors. After having just posted about my own writing fantasies, reading something like this discourages me because I can’t imagine ever being this creative.

Despite the discouragement, I connected with the Rugby section of his post. If you didn’t take the time to read Eric’s analogies, go there now and at least read the Rugby section. In reading the Rugby section, a couple thoughts came to mind.

First, there is the issue of identifying a need, determining that the market is viable, and then filling that need. This is something my employer certainly strives to do. Our product doesn’t seem too different from numerous other general business and accounting packages. But when you get into the details of the business, we strive to optimize the workflow. Our optimizations make us different, and it is why we have become a dominant force within our market segment.

I think there is a related topic that can go with Eric’s points about segmentation. ISVs need to consider the breadth of the market. Several years ago, I attended an SSPA conference where the keynote speaker was Geoffrey Moore. Mr. Moore wrote the classic book, “Crossing the Chasm“.

In the keynote speech, Mr. Moore described the stages a product goes through. If your market is broad enough, innovative features eventually become commoditized. As more features become commoditized, it becomes increasingly difficult to keep being different. There is a chasm over which a company must leap to make the transition from mosty innovative to mostly commoditized. Most companies can’t make this leap.

There is an exception to this metaphor. If the market is small and specialized, the commoditization process is less likely to occur. Companies that get themselves into a niche market can enjoy a lot of success. Do you think that marketing Mathematica or Finale has changed much over the years? These products are sufficiently narrow in their market that they don’t attract too much competition. Unless they really screw up by abandoning their market, like some people think RoboHelp did, they should continue to be successful.

I found this post interesting. Eric Gunnerson makes some salient points about the realities of writing computer books. Some of the comments add some more things to chew on. My interest in this stems from an experience I had a couple years ago.

When I was first learning programming in VB6 about five years ago, I monitored several newsgroups, mailing lists, and other online forums. I soon found myself being able to answer many of the questions that were posted in the groups, especially in a mailing list that was sponsored by Wrox Press. Some people appreciated my responses. Here’s a sample response that I’ve kept because it was very nice.

I would like to take a minute to thank you for the help and advice to you as well as the others who have sent responces to me. I have gotten more help from this one post than any other forum or search and with less arrogance in the responce. The last forum that I posted on got only one responce and it was rather rude in the making. “If you don’t know how to do this simple thing, you don’t need to be programming!” A real nice way to recruit people to learn or encourage them to do this huh??

Once again, I thank you for your time and responces. I have been in the IT business for over 8 yrs. and am glad to know that there are still some people out there that are willing to help rather than hinder. THANK YOU!!!.

Some time later, I received an e-mail from a Wrox representative trying to recruit me as either a technical editor or even possibly to write a book. After my initial skepticism that it was a come-on, I began mulling over whether I might want to help out with the writing of a computer book. Unfortunately, Wrox went into bankruptcy a few months later. It’s likely this e-mail was an attempt to get some more business. Wrox had also put a whole series of “handbooks” on sale for about $100. I convinced my boss to buy the set. The quality of the series was hit and miss, but the hits made the set a bargain.

(Note to wife: Yes, dear, I know I’m digressing.)

I’m sure I’m not alone in fantasizing about becoming a “famous” programming-book author and being recognized at usergroup meetings region-wide. Becuse of this pipe dream, I’ve always had an interest in Scott Mitchell’s blog and other posts that discuss writing.

What piqued my interest in Eric’s post was the following section:

Writing is a skill, and over time you should be able to develop techniques that work will with your target audience.

Good ways to practice:

Write a blog. Book writing is not like blog writing, but it’s a good, cheap way to practice, and a great way to get quick and easy feedback.

Write articles for an online programer’s site – something like CodeProject.

Write an article for MSDN

Answer questions on newsgroups or message boards

Strangely, the most important of these – the last one – has the least to do with formal writing. But it’s the most important, because to write a good book you need to have a deep understanding around what is hard (ie what is hard to understand, what is poorly documented, what is confusing, etc.) *and* you need to be able to explain things in ways that people understand.

Of course, I’m sort of doing the first suggestion (writing a blog). The next two suggestions are really the same. CodeProject, of which I am a member, has a lower entry point, since anybody can write an article.

The last suggestion is what resonated with me. Before I started programming full time, I spent 9 years doing business/technical support. I’m blowing my own horn here, but I can’t count the number of times I heard somebody say “I’m glad I got you!” when I took a call. My employer cultivates a close business relationship with our customers. We only have a few hundred customers, so you get to know the people and the cultures at different companies. I had a knack for being able to adjust the conversation to the level of the user. I always received good reviews from experienced users and users who were brand new to the system.

Adjusting to the user’s level is not as easy as it might seem. It’s simple to say it, but not so easy to put it into practice. Years ago, I learned about the four levels of competence. With regards to customer service, you typically want to have the support rep at one level higher than the customer’s level. Having a customer who is consciously competent talking to a support rep who is still consciously incompetent is not going to be very productive. The same problems can occur in user forums when people at different levels are discussing a topic.

When I read Eric’s comment about the importance of being able to understand a problem and then describing it in terms that are at the level of the audience, I thought to myself, “I have those skills. Maybe I can write technical articles and books.”

All I need now is an interesting topic and time. When I come up with both of these things, I think I’ll still be keeping my day job. In reality, when I come up with enough time, I’ll probably be retired and will have more interest in going to the golf course than writing a book.

This has been around for a little while, but I wasn’t aware of it until recently. While the media and Microsoft are busy pusing Visual Studio .NET, there are many of us who are still working on viable projects that are written in VB6. Thankfully, Microsoft has put together theVisual Basic 6.0 Resource Center. It contains links to solutions that are frequently encountered by VB6 programmers. But it also contains information about mixing VB6 with VB.NET and also migrating to VB.NET.

If you are still using VB6, I think you will find something of interest through the site, no matter what your future plans are for using VB6.

I started a search, and the toolbar brought up the results in a new window and switched to the window. So far, so good. I went to the first result, which displayed in the same tab. Again, so far, so good.

The first result didn’t have what I wanted, so I clicked the next button on the toolbar. The second result from the list was displayed in another new tab. I didn’t expect this, but OK, for now.

I now have three tabs across my browser: the original tab, the first result, and the second result. I’m currently on the third tab. This second result didn’t have what I wanted, so I clicked on the next button again, which was enabled. Nothing happened.

Hmm… I tried the previous button. Nothing. I clicked to a different tab and then back to the third tab. Now the next and previous buttons are disabled.

I closed the third tab. I clicked the next button. The toolbar opened the third result in a new tab.

I like to have new searches create a new tab. But I don’t think navigating results should open in new tabs. With the new tab option turned on, I have to take action to switch back to the tab that is tracking the search results, either by closing the third tab or clicking back to the second tab.

For now, I’ve turned off the new tab option. Having to manually create a new tab before searching is less annoying than having to switch/close tabs when navigating through results. But does anybody else think that this behavior is a bit odd?