Archive for June, 2009

How to be a great salesman

Dave Ramsey is a fantastic businessman with an approach to businesses and finances that eschews what works over what’s hot. Given Wall Street’s track record of late, I’d say that’s a really good thing.

He’s got a good regular column called Dave Says, answering questions about personal finance and business (with a focus on entrepreneurs and SOHO’s). The following came from the latest post, and I thought it stood out as a gem for anyone who’s their own sales force:

Dear Dave,
What’s the key to becoming a great salesman?
Brent

Dear Brent,
I can sum it up in one word – serving. And don’t think for a second that serving means being subservient. I’m talking about being proactive, and making an effort to ensure that customers and potential customers alike are served well. Serving means you’re excited about what you have to offer, and you believe you’ve got a great product at a great price. It means you’re determined your customer is going to have a great experience, and if you happen to hit a bump in the road you will take care of it in a way that will make them forget it ever happened.

Serving is an attitude. You have to provide goods or services in a way that makes your customers willing to trade their time or money – things that are very precious to them – to interact with you and your business. You can pressure people if you want, but that’s going to lead to a dull and frustrating life of one-shot deals. But if you serve people well, you’ll not only have clients for life but they’ll also send all of their friends your way.

If you help enough people, Brent, and make that your first order of business, you’ll never have to worry about money. That’s a different attitude, isn’t it? But I’ve got news for you – it works!
- Dave

There’s a feed for all the Dave Says articles.


Change a select menu using jQuery

I don’t know why this is mind bending, but I seem to hit a wall every time I want to do page manipulations involving <select> boxes. Particularly, when I want to change the value selected. Based on the number of support posts I found, I’m clearly not alone.

There are two common ways to change the value selected (i.e. displayed) in a <select> menu: alter the selectedIndex or the value attribute. Which one you use depends on the information you have at hand to alter the <select>.

The selectedIndex is an incremented number assigned to each <option>. in the <select>. In other words, it has no bearing whatsoever on the value of a given option. So if you know the order of the <option>’s in your <select> and can choose based on that, you can do this…

<!-- CHANGE A SELECT BASED ON INDEX -->
<input id="change_value" name="change_value" type="button" value="Change Menu" />
<select id="my_select_box" name="var_name">
  <option selected="selected" value="aaa">Some value</option> <!-- index value of 0 -->
  <option value="bbb">Some other value</option> <!-- index value of 1 -->
</select>
 
<script type="text/javascript">
$(function() {
  $('#change_value').click(function(){
    $('#my_select_box').attr('selectedIndex', 1);
    alert($('#my_select_box option:selected').text());
  });
});
</script>

Alternatively, you can change a <select> to match the value attribute of an <option>. This is probably a more common scenario..

<!-- CHANGE A SELECT BASED ON OPTION VALUE -->
<input id="change_value" name="change_value" type="button" value="Change Menu" />
<select id="my_select_box" name="var_name">
  <option selected="selected" value="aaa">Some value</option> <!-- index value of 0 -->
  <option value="bbb">Some other value</option> <!-- index value of 1 -->
</select>
 
<script type="text/javascript">
$(function() {
  $('#change_value').click(function(){
    $('#my_select_box').val('bbb');
    alert($('#my_select_box option:selected').text());
  });
});
</script>

Hope that helps, it’s as much for you as it is me. :-)


Entrepreneurs – think like this guy

In a great article discussing how to demo a product to investors, Jason Calacanis says the following under the heading “The best products take less than five minutes to demo”…

Steve Jobs does take the demo details to a fairly detailed level, but you and I are not Steve Jobs. There is only one Steve Jobs and there is only one Apple. You’re never going to build something as cool as Steve, and as such there is no need for you to talk about your product for five or ten minutes.

In the comments, I found this response from user “COP”:

WTF????? WHY NOT?

My thoughts exactly. There’s exactly zero rules, official or unofficial, that say you can’t be as cool as Steve Jobs and build products with equivalent coolness.

This type of rhetoric happens a lot — presenting a major player in a given market as an insurmountable behemoth. We as entrepreneurs do it in our heads all the time. It’s never helpful, but more importantly it’s never true.

Take Calacanis’ example in this article. You don’t have to go back too far to find a time when Apple wasn’t the epitome of cool. In my opinion, Apple machines after the IIe were out-and-out crap until they hit another stride with OSX, which came out in 1999. I don’t recall seeing any Apple’s in school prior to that. I should know, I graduated high school in ‘99! Did you know the first iPod was released in 2001, less than 10 years ago? That’s a helluva lotta time where we can’t account for any Steve Job coolness.

The correct attitude is that of our friend COP, “Why not?” In fact I’m willing to bet that ol’ Steve said that a few times along the way as well.

To think any less, to see your competition as insurmountable, is surely a road to failure.

P.S. Note: Jobs is one of the most epic geeks in history, no question. Apple has been a successful company since its founding, but definitely wandered the wilderness through the late 80’s and 90’s, which does not fit Calacanis’ rhetoric. My goal here is to topple Calacanis’ logic, not Jobs. Mac cultists, be at ease.


Comments fixed

Just discovered that comments have been borked for a bit. Sorry about that.


Using jQuery Alerts plugin to submit a form

jQuery is awesome. The jQuery Alerts plugin is also awesome. One of the most immediate and obvious uses of the pair is presenting a spiffy confirmation box before submitting a form. For example, I recently implemented this setup on a form that ultimately deletes data. I couldn’t find a detailed example for this setup, leading to much trial and error. Here’s what worked for me.

First the form…

<form name="action_delete" action="/delete_stuff.php" method="post">
  <input type="checkbox" name="option1" value="1" /> Option 1<br />
  <input type="checkbox" name="option2" value="1" /> Option 2<br />
  <input type="button" name="fake-submit" value="Delete" onclick="confirmDelete();" />
</form>

Take note that we are dealing with a normal form, nothing fancy about the form action, the inputs, etc. The only thing special going on here is that we’ve substituted an actual <input type="submit" ... /> button for a plain button type and attached an onclick event.

Now the JavaScript…

function confirmDelete() {
  jConfirm('Are you sure you want to delete this stuff?', 'Please Confirm', function(result){
    if (result) {
      $("form[name='action_delete']").submit();
    } else {
      return false;
    }
  });
}
$(document).ready(function(){
  // [ ... ]
});

Assuming you understand the syntax for jQuery Alert, the confirmDelete() function is fairly straightforward. It’s everything around the jConfirm() call that gave me a headache.

Go back to the fact that we’re using a regular button and onclick, instead of a submit button and the onsubmit event. Nested jQuery functions, like jConfirm() and its third argument, have always caused me problems with normal JavaScript events, onsubmit in particular. If not done properly, the submit event is not “held up” by the confirmation dialog, input validation, etc. Such was the case here, so the only submit event occurs in the JavaScript after getting validation from the prompt.

Also note the position of confirmDelete(): outside of the jQuery “document ready” block. If you put it inside, it won’t work.

I explicitly identified the form to submit (line 4 in JavaScript) for sake of code clarity. This layout can easily be modified to dynamically process multiple forms.

Finally, note that this setup requires JavaScript to work, i.e. it does not gracefully degrade. In my opinion, the situations where this is actually a problem are limited. Every major browser on the market fully supports JavaScript, and enables it by default. Unless your target audience is 100% mobile (you should build a separate interface for your mobile app anyway) or in a high security sector, assuming its presence is a very safe bet.


Usability Fail: Windows Live Registration

While my MS complaints are (rightly) focused on their desktop apps, I knew Microsoft would end up in this series at some point. However, even I was surprised at how quickly it happened. These guys can’t help but do stupid things in pursuit of copycatting their competitors. Here’s a screenshot several steps deep into the Windows Live registration

Live Credit Card Challenge

Yes, that page is requesting a credit card number. No, Live does not have a monthly subscription fee. As the page states, they simply want to ensure you’re an adult.

As any savvy ecommerce retailer can tell you, the most challenging part of the online sale is the checkout. It’s easy to throw virtual items in a virtual shopping cart, but you have to commit when it comes time to pay. So site owners try all kinds of things to minimize the hurdle and get them through the messy part as quickly and effortlessly as possible, lest they change their mind. Meanwhile, Microsoft is taking this same large mental hurdle and trying to turn it into a speed bump. I can’t think of a faster way to send potential new users running for the hills.

Don’t get me wrong, using a credit card challenge as identification is perfectly fine when there’s a darn good reason for it; using it to ask “are you an adult” before opening a free messaging account is not one of them. Why is a kid with a Live account a problem? Are the risks greater than other such messaging services, or the Net at large? I suspect that the Live team is simply trying to avoid the legal hassles, but haven’t AIM, Google Chat, Yahoo IM, and their own MSN operated just fine for years without an age challenge? I think the answer is an obvious “no” to all of the above.

Were it me, I’d take my chances facing legal nonsense and give kids a greater level of access than adults. Children and young adults most rapidly adopt and embrace new technologies. IM, P2P, txt’ing, Facebook…all of these tools owe most of their success to users who, by and large, do not have credit card numbers. To willing cut them out of the deal is to quite literally cut your chances of success by more than half.