Posted in Software copy protection | Software licensing
The user experience for your licensing scheme includes the keys we generate to unlock our software for paying customers. You have to think about it carefully before you just create a bunch of random characters.
Jeff Atwood explains perfectly the shortcomings of license keys that some ISVs generate in his Software Registration Keys post:
Here are some things that I've seen vendors get wrong with their registration key process:
- Using commonly mistaken characters in the key
Quick! Is that an 'O' or an '0'? A '6' or a 'G'? An 'I' or an 'l'? A 'B' or an '8'? At least have the courtesy to scour your registration key character set of those characters that are commonly mistaken for other characters. And please print the key in a font that minimizes the chances of confusion.
- Excessively long keys
The most rudimentary grasp of mathematics tells us that a conservative 10 character alphanumeric registration key is good for 197 trillion unique users. Even factoring in the pigeonhole principle, we can estimate about 14 million random registration key combinations before we have a 50 percent risk of a collision. So why, then, do software developers insist on 20+ character registration keys? It's ridiculous. Are they planning to sell licenses to every grain of sand on every beach?
- Not separating the key into blocks
Rather than smashing your key into one long string, make it a group of small 4 to 5 characters, separated by a delimiter. It's the same reason phone numbers are listed as 404-555-1212 and not 4045551212: People have an easier time handling and remembering small chunks of information.
- Making it difficult to enter the key
Short of providing every customer a handy USB barcode scanner, at least make the registration key entry form as user friendly as possible:
- Let the user enter the key in any format. With dashes, without dashes, using spaces, whatever. Be flexible. Accept a variety of formats.
- Do not provide five input boxes that require us to tab through each one to enter the key. It's death by a thousand tiny textboxes.
- Tell me as soon as I've entered a bad value in the key. Why should I have to go back and pore over my entry to figure out which letter or number I've screwed up? You're the computer, remember? This is what you're good at.
- Accept pasting from the clipboard. Once we've installed the software, we'll probably install it again, and nobody likes keying these annoying registration keys in more than once. I've seen some clever software that proactively checks the clipboard and enters the key automatically if it finds it there. (Kudos to you, Beyond Compare.)
- Don't passively-aggressively inform me that "the key you entered appears to be valid." Is it? Or isn't it? What's the point of unique registration keys if you can't be sure? I guess paying customers can't be trusted.
- Where's the %*@# key?
The key is important. Without it we can't install or use the software. So why is it buried in the back of the manual, or on an easy-to-overlook interior edge of the package? Make it easy to find-- and difficult to lose. Provide multiple copies of the key in different locations, maybe even as a peelable sticker we can place somewhere useful. And if the software was delivered digitally, please keep track of our key for us. We're forgetful.
I know these days that most license keys get sent via email and that keys on packaging are not so common, but that does not mean that every user knows how to copy and paste the key from their email to the unlocking dialog window of your software product. Because a user does not know how to use copy and paste, does not mean you should give that kind of user a bad user experience.
If you are using or planning on using license keys to unlock your software product, you must keep in mind on making it as simple as possible for the paying customer even if it makes your software more vulnerable to piracy.
“What you heard from me, keep as the pattern of sound teaching, with faith and love in Christ Jesus. Guard the good deposit that was entrusted to you—guard it with the help of the Holy Spirit who lives in us.” – 2 Timothy 1:13-14
Posted in Company
Preparing a functional spec is a lot of work, but it is all worth it. After the spec was completed I created a project schedule in FogBugz. I am aiming to get a private beta out by the end of the year, according to FogBugz I have a 85% probability chance of reaching the deadline.
But I am now happy to let the world know that production has started on project XNL. The focus of V1 is to get a very simplified solution out there that is not complicated to use and very easy to distribute. There is a lot more to come after V1 and I can’t wait to get started on it, but we need to build this foundation first.
Happy coding.
“If we live, we live to the Lord; and if we die, we die to the Lord. So, whether we live or die, we belong to the Lord.” – Romans 14:8
Posted in Software licensing
It has now been proven over and over again that software with a better user experience goes a long way over software that has a poor user experience. And sometimes if not almost always software registration is the first experience of our software solutions.
To protect our software from piracy we need to implement these necessary evil schemes in our software and it is going to require user intervention. It would be great if a user can buy a license and boom his installed copy works now without the nagging screen. Unfortunately this is not possible yet, and we as software vendors must give the user the best experience in getting their software licensed. Every ISV must realize that user experience is more important than to try protect your software from piracy, but that is another blog post in itself.
The whole licensing scheme experience starts right from the beginning of downloading the software, ordering the software, receiving the license and re-installing the software later again. When a user downloads your trial period software he is most probably going to see a nagging screen every time he runs the application, this nagging screen should also have a good user experience. You might ask “Is nagging screens then not suppose to be nagging?”. For sure, but I am referring to the user experience to get this nagging screen to go away. At least have a button on that screen for the user to direct him to a purchase webpage.
Software vendors must put careful thought into how and what they deliver for a software license and how it impacts on the user’s experience registering the software. If you going to send license keys via email and the email is marked as spam how does this influence the experience? If you have a 50 character license key that a user needs to type in how does this influence the experience? If you deliver a license file how easy is it for a user to import that license into the application? Have you ever thought about that the user is going to need to keep track of all his software licenses? When he re-installs his machine or upgrade to a new machine he is going to need to re-install and register all his applications again, how is the experience going to be?
You want to make sure that this experience of registering your software goes smoothly and quickly, because the more time the user have to spend on registering your software the worst the experience gets.
We all have registered software before and we know which experience was good and which ones was not so good. Unless you can figure out a way of automatically registering a software product when it is purchased, you should stick to proven schemes that work, but if you still want to change the way software is registered you will have to keep the user experience in mind all the way through the process.
Posted in Company
While working on the spec for Xenotar’s next big product, it came time to decide which features need to be included in version 1.0. I am all for release early and release often approach that is why I am at this point deciding which features to cut to make an early release.
While I was wondering if the features that I pinned down for v1.0 is enough, I came across a saying (can’t remember who) “If you are not embarrassed with v1.0 you waited to long to ship”.
I am happy with the feature set now for v1.0, still need to touch up here and there on the spec. I am hoping to have a project schedule up by the end of the week, so that development can start next week.
Posted in Development
I have been reading Joel’s painless functional specifications a while back and thought it makes perfect sense to write a functional spec, and wanted to write one one day when the opportunity comes along.
And that opportunity came along last week when I decided it is time for a new project for Xenotar Software. I’ve never written a functional spec before so I am learning as I am going along.
This week I started and mostly followed Joel’s recommendations. At first I though it is going to be boring because I would rather write code than documentation, what developer does not? But after a few paragraphs I realized that with the functional spec I am also designing the software, and as I go along the whole project becomes clearer. I am already seeing problems that I’m going face, and I’m already also thinking about alternatives that might work better. I would usually find these problems only after a hefty amount of code has been written, and the testing starts and the flow does not feel right.
At the beginning I thought to much of technical aspects of the implementation of features, it took a while before realizing that I should focus more on how the product needs to work and write that down, and not the implementation details.
I am doing about a feature a day on the spec, but the developer in me wants to start writing that code, so I need a bit of willing power to continue with the spec, and everyday when I start, after that first sentence things just starts to flow. It is also like the written words are arguing with me to say what I want to do does not seem right.
What I also like is when I am writing the next feature spec I can see clearly how it clashes with some previous “design” flaws of previous features I’ve specked (is this even a word?), so I can go back to the previous sections and make adjustments, when it is going to be time to write the code for this I am not going to write code that normally would be changed because of a later feature’s implementation. I know it won’t be as simple as this, and I am sure if I am writing the code I am still going to need to make changes because of previous written code, but I think those will be technical things and not to do with the functional specifications of the project.
I am hooked on this, I will never start a new project / feature again without a functional specification. Now just to find someone to write it for me. ;)
Posted in Company
Marketing strategy is in place for Direct Sell Assistant, Xenotar’s bookkeeping software for direct sales businesses. I have spend a lot of time putting this in place, so now I am on monitoring mode.
New Product Idea
I am also starting a new project for a new product. It is a licensing solution for .NET applications. While working with the ones that is out there I found there can be a bit of improvements.
We all know that when delivering software we don’t want to inconvenience the honest customer using our software. We also know if an user is not going to be willing to pay for our software he is going to try to find a workaround the licensing scheme, and if he does not get one, he probably will find another software solution. The best would rather focus on paying customers and keeping them happy then to try make your software uncrackable.
As a developer I would want to focus on the features of my software and not to worry about the licensing scheme that the application is using. If I can use the easiest possible way there is to implement the licensing scheme the better and more productive I can be. I also want my code not to get messy with licensing code and business rules code.
These are the most important parts I want to cover in my solution. Hopefully I can address them.
Let the planning begin.
Posted in Direct Sell Assistant
I’ve released a small update for Direct Sell Assistant, a bookkeeping solution for direct sales home businesses.
This update only affects people using Direct Sell Assistant on Windows 64bit machines, you don’t need to update if you are running on a 32bit Windows version.
How to update
You can download the latest install package from here. To update or install just run the installation package.
Thanks for the feedback from people with 64bit Windows versions.
Posted in Direct Sales | Direct Selling
Customer service should be one of your primary focuses in your business. If you deliver good customer services, your customers will keep coming back and they will tell others and you will get new customers, in the other hand when you don’t deliver great customer service, you should not be surprise when your phone call is unanswered. In direct sales your customer service will set you apart from your competitors.
Here is a few ideas to improve your customer service for your direct sales home business:
- Stay in contact with customers. Contact your customers on regular intervals, but not too regular, you don’t want to become a pain. Give them a call even just to ask how their kids are doing in school.
- Go the extra mile. Especially when there is a problem with an order. Try to help him or her in finding the best solution to fix it, then go that extra mile and give him or her something for the inconvenience like a free gift, or a discount on their next order.
- Let them know you a phone call away. Let customers feel in control, and assure them that you always here to answer any questions or to help out with any crisis they might be experiencing.
- Thank them and make them feel special. Always thank your customers for their orders and support, let them feel that they are in control, that they have made the right decision in buying your product. Complement them on their decisions.
- Give refunds with a smile. Don’t be nasty or sound disappointed when a customer wants a refund. You want to sell them products where they will be satisfied, else they won’t order from you again.
- Reward them for their support. Give them a discount on repeated orders. Give them a customer referral fee if they bring you more business.
- Make yourself and your order presentable. When delivering your orders make sure you look professional and respectable. Don’t deliver their order in an old shoe box or in a tiered package.
- Offer extra services. With their order one could offer something like gift wrapping.
- Get your catalogs to them. Make sure they have a shop to shop in, and also make sure they know what products are available. Customers don’t like to order and later find out that the product is not available anymore.
- Be diligent. Avoid mistakes with orders. Don’t get mixed up with customers and tell the wrong customer best of luck with divorce if she is not getting divorced. Make use of our direct sales software to keep track of your customers and orders and avoid mistakes.
Some other resources also about customer service
Keep those customers happy!