Saturday, June 30, 2007

The Seven Virtues of Marketing

I am not merely a student of Computer Science. I also studied Business Administration for two years, and this curriculum included a few courses in Marketing. I took classes that approached Marketing in the context of the global environment, and I took classes that briefly introduced Marketing, along with Management, Accounting, Finance, and Human Resource Management.

Marketing the University of Wyoming CampusThe Introduction to Marketing class focused on Marketing only. In this course, I learned the Four P's of Marketing: Price, Product, Place, and Promotion. I also learned the difference between target marketing and mass marketing. To put it somewhat bluntly, mass marketing equates to quantity while target marketing equates to quality. Target marketing involves thought while mass marketing involves lack of thought.

The class also introduced the concepts of brand awareness and brand loyalty. Brand loyalty was earned. If you're product has loyal customers then you know that you have a superior product. Creating brand loyalty involves honesty and commitment to the customer. You can't have brand loyalty without brand awareness, but brand awareness alone won't create brand loyalty. Consumers may be aware of your product, but they may also think it sucks. The only thing they may be loyal about is not purchasing your product, or perhaps they may help you create awareness that your brand sucks by telling ten people they know that they had a bad experience with your product instead of telling three that they loved it.

Now, brand awareness can create brand loyalty, but it can also stagnate your product's growth, so you shouldn't focus on awareness alone. Creating brand loyalty involves patience, creativity, honesty, hard-work, selflessness, commitment to the customer, and strategic business planning. If you forget or neglect one of these components, you may not be able to create the brand loyalty that you are looking for.

Why be patient? Well, chances are you may be worrying about your bottom-line. My advice is this: Don't. Why, you ask? Because if you worry about your bottom-line you will neglect patience. You will rush your design and production departments into creating a sub-optimal product. This leads to a severe lack of committment to the customer, which is selfish on your part because you're worried more about your bottom line than your customer's satisfaction. You and your team can work 12 to 15 hour days, only to end up sitting in a meeting with your boss trying to explain why the numbers aren't as high as what was originally projected.

Creativity and honesty are like patience, selflessness, and committment to the customer in that they are directly proportional. If you are creative, you can market your product with honesty. If you are honest, you will need to find a creative solution to market your product successfully. If you're marketing department isn't utilizing their full creative potential, you will probably notice that some shady shortcuts are being made. Don't lie to your customers, you'll lose. Unless, of course, your customers are morons. But even if they are morons, don't be shady, it's just not cool.

Besides, it might be you that's the moron. I laugh every time I see the commercials advertising male enhancement: "If this was a gimmick, could we afford to do this?". Hahaha. I don't want to know that answer now, I want to know that answer in ten years, long after a chapter 11 bankruptcy, and long after the marketing team decided to start careers in building maintenance because they didn't like their fresh-out-of-college-with-a-marketing-degree jobs with Extenze. Don't get me wrong, there's nothing wrong with building maintenance, you can learn a lot about home repair, construction, and many other interesting and marketable -- no pun intended -- fields. I've talked to many people who found happiness and success in building maintenance or construction who earned degrees but just didn't like their fields. My point though is that absolutely no creativity went into marketing the product, and that makes me question how much honesty there is behind the product, and how much these so-called marketers actually learned from their marketing classes.

Basically, if you use trickery to manipulate your customers, chances are they -- like me -- won't trust you. So you must be ethical in your quest to create brand loyalty. "Don't be evil", as Google would say.

Photo of Leaves in the GrassAlthough I've mentioned honesty above, I feel that I need to mention it again because I feel it is very important. Now, honesty directly correlates with commitment to the customer, patience, hard-work, strategic planning, and selflessness. It is perhaps the most important of The Seven Virtues of Marketing. You can be as honest as you want with your customers and still fall flat on your face. At least you can sleep at night though. But, if you're product is subordinate, you're honesty won't sell your product. Now, this doesn't mean that you should be dishonest. No, because as I've mentioned previously, neglecting honesty wlll directly challenge and insult the intelligence of your customers. But if you plan, work hard, be creative, and commit to the customer's satisfaction, then it will be easy to be honest. Your product will practically sell itself. You're customers will ask your sales team questions, and they will give honest answers. You're customers will exclaim "Wow! You mean, if I am not satisfied with Copilot, you'll refund my $5 dollars! Just like that!". Not only will you and your staff feel good about yourselves; but also, your customers will feel good about you as well! They wouldn't think of asking for their money back. In fact, they will probably bring more business to your doorstep.

These traits, patience, hard-work, honesty, creativity, proper planning, customer committment, and selflessness are important in all aspects of life, including business. Apply this mission statement, methodology, ranting, mode of living, or whatever you want to call it, to your business, your life, and you will create not just brand awareness, but brand loyalty!

Saturday, June 23, 2007

Reasonable Accommodations

What would you do if you suddenly became deaf or blind? If you were to become the victim of either one of these unfortunate events, what would you do? How would you manage?

Abstract Photo Blurred image of swingNever mind the fact that many of your hobbies would be affected -- that your quality of life would suffer. How would your life be affected in financial terms? Suppose that you were struggling to pay off student loans and a mortgage, and your job paid you well enough to just barely keep up with these expenses. Would you be able to find an employer who would be understanding about your newfound disability and yet still pay you enough to maintain your standard of living? How about your current employer? Would you still be able to work?

Yes, there is health and disability insurance, but will the benefits that you receive from those plans be enough to last you the rest of your life? The answer -- unfortunately -- is that these benefits will most likely either expire after a specified amount of time, or they will simply not be enough to cover your daily living expenses.

Now, this isn't a sales pitch. I know absolutely nothing about insurance and have spent a minuscule amount of time studying the topic, but I do wonder how I would live and get by if I were to lose me sensory abilities.

Adapting to a disability

A few years ago, I had the opportunity to work with a person who is deaf. I was the manager of a series of summer camp stores, and Shawn was a clerk. One of the stores staffed four clerks. There were two cash registers, a crafts station, and a candy and ice cream station that required staffing. At first, I wasn't sure exactly where to place my deaf staff member.

Royal Alpha 580 Cash Register used by Deaf EmployeeI trained all of the clerks on the cash registers, which were Royal Alpha 580 programmable cash registers. I didn't plan on training Shawn on this aspect of the store simply because I did not think that he would be able to handle interacting with customers. The lines in the store would sometimes be so long that they would extend past the entrance, and I worried that he would have problems in terms of communication.

When the time came to conduct the training, I could clearly see that Shawn wanted in on the action. Against what I thought was my better judgment, I took some time to train him on the different aspects of the cash register. Since I did not know sign language, I wrote instructions down in a notepad that Shawn brought with him that he used so that he could communicate with the hearing world. I explained that the "Cash" button was to be used when the customer paid a transaction with cash and I emphasized -- as I did with all my clerks -- that the "Credit Card" button should be used for credit cards. Most transactions that came through the store were cash transactions, and it was very easy to get into the mindset of thinking of the big "Cash" button as the "I want to open the cash register now" button.

I put the cash register in "training mode", which meant that any transactions that my trainees entered into the register would not be recorded on the X or Z daily reports. I then proceeded to grab random items in the store for my trainees to ring up. Some clerks required a little more attention than others, and I think Shawn fell right in the middle. Since he was the last trainee, and since he had observed the other clerks during their training, he caught on very quickly.

I was amazed when I walked into the store on the busiest days and saw Shawn working on the main register. We would typically only open register number two when we got very busy. Shawn had everything under control. He even opened the store one evening and worked the first hour all by himself! The store was busy, everything was perfectly under control, and Shawn was calm as the eye of a hurricane.

The reason that Shawn was so calm is that -- being born deaf -- he had long ago adapted to what the hearing world views as a disability. It wasn't him who had a problem with being deaf.

No! It was us, the hearing world, who had the problem, who had to adapt. While it is true that we had to overcome his lack of auditory perception, he didn't meet us halfway. He met us about three-quarters of the way while we only met him one-quarter of the way. All of his tricks -- the notepad he carried, writing "I'm deaf" on his nametag, turning the display on the register so he could communicate the total amount due, without words, to his customers -- were designed to help others minimize the amount of adapting that they would have to do. His demands were small in terms of needing reasonable accommodations, in fact, none were necessary.

Adapting to our own limitations

Photo of Moonrise over waterI often wonder if I would be able to adapt if I were to become blind or deaf. As a systems programmer, I rely heavily on my ability to view and interpret text on a computer screen. Should this ability be compromised, I wonder what would happen.

But then I think about things that I've done to adapt as a programmer, just by using the senses that I do have. There is a small percentage of people in the world who have an eidetic memory. When you have this fascinating ability to remember everything that you're exposed to, you don't have to learn mnemonic devices or practice techniques for organizing large amounts of information. You probably wouldn't understand what it is like to have an average mental capacity, unless you're Orlando Serrell. Since I don't have an eidetic memory, I have to use diagrams and pictures when designing an application. In order to limit the number of distractions when I am programming, I create shortcuts for lengthy but often-used commands. This allows me to stay focused on my goal and limit the number of variables that I must keep in my head all at once. I've adapted to not having an eidetic memory, something that I've of course never had, but nonetheless I've adapted.

If you or I were to suddenly go blind or deaf, we would find some way to adapt. It would take us some time, but we would eventually learn new tricks to help us overcome our disability. Just ask Ted Hart of Microsoft, who is a deaf Software Engineer who uses instant messenger and email to communicate with his colleagues and staff.

In a way, being normal or just average -- as opposed to being a savant -- can be an asset, as we are able to understand that everybody is different and that just because one person may excel in one area doesn't mean that someone else doesn't have something to offer in another area. This is what humbles us and makes us able to work as a team.

P.S. I wrote this article in the context of living in the United States of America. I wonder if adapting to such a disability would be as easily accomplished in another country?

Saturday, June 9, 2007

Multiple HTML Reply Signatures Remotely Served?

Ronald Heft of made a comment here asking a question about how users could use their HTML signature when not at their own computer.

This question interests me because I believe that applications need to be accessible via the web. Many power users use more than one computer, and Firefox Extensions must correspond to a specific user profile.

Stream at Vedauwoo between Laramie and Cheyenne in WyomingThere are ways around that within corporate networks. A Firefox Extension installed in a roaming profile will function for a user no matter what computer he or she uses, but a computer in the library or a coffee shop will effectively leave the user signatureless.

For my dual-boot setup, I could install my profile at a location on my FAT32 partition that is accessible by both operating systems. Then I could use the same centrally-configured Firefox Extensions, bookmarks, browser history, and other Firefox functionality from both Linux and Windows.

But suppose I'm sending an email from a friend's computer who is running Firefox, but who doesn't have my signature extension configured? Is there a way to serve this extension remotely? Applications such as the Mozilla Amazon Browser have made me very curious, and anyone who could implement something like this would surely differentiate themselves from the competition, as I'm not the only developer with a fancy HTML Signature extension.

As I mentioned in a previous post, I tried to manipulate the Google Docs interface so that I could use shortcut keys. Would it be possible to serve a XUL application that provided an interface to Gmail? Can another server -- perhaps one with the Greasemonkey engine installed -- effectively act as a middleman between a user and another server? Would security restrictions prevent this? Suppose I installed Firefox and the Plain Old Webserver on a remote server? Could I then serve my Firefox Extension remotely?

We will have to think about this concept for awhile...

Thursday, June 7, 2007

HTML Multiple Reply Signatures for Gmail Firefox Extension

After spending the last three weekends working on the HTML Multiple Reply Signatures for Gmail Firefox Extension 1.0.1, I finally have a working prototype.

The Firefox Extension has all of the features and functionality of the HTML Multiple Reply Signatures for Gmail Greasemonkey script, except the extension doesn't require Greasemonkey. In addition, the extension provides a user interface for easy editing of signatures.

With Greasemonkey, users are required to edit the script manually in order to edit signatures. With the extension, this is no longer necessary.

For convenience, there is a real-time preview window so any HTML entered is immediately displayed for easy editing.

In fact, I'm thinking that the preview editor has some potential to be used in a number of applications, such as an HTML tutorial, HTML-area textbox for user comments, possibly a content-management system, and some other uses.

Since the user interface consists of XUL, these applications would all have a client-side feel to them, yet the potential exists to either serve them remotely or package them as Firefox Extensions.

The Firefox Extension

You should be able to install the extension in Firefox simply by clicking on the HTML Multiple Reply Signatures for Gmail 1.0.1 Firefox Extension link. If you are prompted to install, wonderful! Simply choose the "Install" option and restart Firefox. However, I noticed that -- when I tried to install by clicking on the link -- I was instead prompted to save the XPI file to disk.

If you experience this, follow these steps to save the XPI to disk and install it locally.

  • To install the XPI locally, open the Extensions/Add ons window from the "Tools" menu.
  • Next, drag and drop the XPI file from your desktop to the extensions window.
  • When prompted to install, click "Install".

  • Restart Firefox by closing all Firefox windows.

Using the HTML Multiple Reply Signatures for Gmail Firefox Extension

Creating a signature

  • In Firefox, click "Tools" -> "Gmail Multiple Reply Signatures".

  • Open HTML Gmail Multiple Reply Signatures Editor

  • Near the top of the window are two radio buttons. Use these to toggle between editing the signatures for initial compose emails or reply emails

  • Reply Signatures Initial Composes and Replies

  • In the "Initial Composes" section, select from four signatures to configure.

  • Select from four Gmail HTML signatures to edit for Composes and Replies

  • Enter HTML in the "Enter HTML Signature here" section. For attributes, do not use any quotes. Below is an example of a signature hyperlink where attributes are used, but without quotes:

  • <div>--</div><a href= style=font-family:tahoma;color:blue;>James Mortensen</a><div></div>

    Gmail HTML Signatures Editor

  • In the "Preview" section, you will see real-time HTML output based on your input in the "Enter HTML Signature here" section. You may fine-tune your signature until it appears the way you want.

  • Preview Signature using HTML Multiple Reply Signatures Editor

  • Once configured, click "Save".

Inserting the HTML Signature in Gmail

Inserting the signature is automatic. When you click "compose" or "reply", the first signature in the list will automatically appear in the editor. To change signatures, use the dropdown list at the bottom of the Gmail left navigation section. The signature will be changed automatically as soon as your selection is made.

View the demo here.

Known bugs

There are some bugs that I have come across so far, and I am sure that there will be more. If you discover a bug that is not in this list, please email me or post a comment to this post.

Sometimes it is best to release software instead of trying to correct every single bug. None of these are showstoppers, but here they are:

  • Quotes cannot be used around attributes

  • Simply leave out the quotes as they are not required.

  • Large sections of HTML may be corrupted when saving.

  • When you enter large sections of HTML and save, the next time you open the sgnature content editor, you will be reverted back to defaults. You can find your signatures in an xml file called htmlmultiplereplysignaturesforgmail.xml in your Mozilla Firefox profile directory. Save this information somewhere else, or copy and paste the non-corrupted signatures back into the editor. I plan to create some means of recovery for these types of errors.

  • The signature names can't be renamed

  • This functionality has not been completely implemented yet.

  • When pressing "Compose" in Gmail more than once, multiple drop-down lists appear

  • Just delete any unwanted signatures from the Gmail editor.

  • After entering email content, selecting a different signature will cause part or all of my email to be deleted.

  • Be careful not to type below the "--" characters. There are invisible markers around he signature that mark the dynamic section. (Actually, the signature is placed inside a span element. If you type below the "--", you are typing inside the span element).

  • Fixed in 1.0.1 on 6/9/07 - After entering a signature on multiple lines in the editor, the signatures would not appear in the Gmail compose or reply editors.

  • I enabled the multiline attribute of the textbox, which the script did not know how to handle. The temporary fix was to disable multiline support until I have time to fix the problem and test it thoroughly. Be aware that if you want line breaks in the signature, simply use a <br> or <div></div>


This is the first project I've done on my own that is outside the context of work or school. Please don't hesitate to give me advice about how to better track bugs, write better documentation, or make improvements to the application.

Also, if you have any trouble or need help, please contact me. I hope you find this Firefox extension useful!