We hear all too often that having lots of choices is a good thing, and it is, but not in the software business. The final goal of any business, in any industry, is selling products right? Consequently, the amount of choices you provide in the products you offer to your customers needs to be limited. A little confused? I’ll give you an example: You’re looking for some kind of software. You search for it, look at some reviews and finally go the website of the developer. On that site, there is a nice green ‘Buy it Now’ button, you click on it and disaster occurs. They offer a ‘Home’ version, and a ‘Standard’ version, and a ‘Plus’ version, and a ‘Premium’ version, and an ‘Advanced’ version. Oh, and an ‘Ultimate’ version. The amount of options that some online software retailers offer is becoming ridiculous, and it’s losing them money.

Today, in a world where we can access information at the speed of light, we are often confronted with a huge array of choices in anything we do. For the majority of people however, an excess of choice leads to indecision, procrastination and confusion – something that is often seemingly forgotten in the software industry.

Even Microsoft fell into this trap with Vista: offering far too many different versions of the product which confused the consumer. Offering more than perhaps two options for any software product is a bad idea. If there is an excess of choices, more often than not, the customer will simply look elsewhere and you will lose the sale: either because the simply can’t be bothered reading all the options, or because they are quite naturally worried the version they purchase will be missing some vital feature.

Instead, keep it simple. Offer just one product for all your customers and you will find your sales will increase dramatically. If absolutely necessary, offer another version for enterprise, but don’t show it on the main site. Let enterprise customers read about the alternative product on a different page. It seems simple, but simplicity will make the world of difference.

Follow me on Twitter, if you like. Or check out my latest project, TapType.

Over the next couple of weeks I will be running a real-world test to determine a conclusion to my ‘make it free or fail’ post. I will be using my latest project, TapType, as a kind of test dummy. TapType is an exciting new virtual keyboard for Windows (kind of like an iPad keyboard for Windows tablets).

Today I will be launching TapType, so my ‘make it free or fail’ test begins! Initially, I will be launching TapType as a pay-only product, at a $19.99 price point. By doing that, I’m intending to find a kind of ‘control’ result in terms of purchase numbers. Obviously the results initially will be skewed due to a launch-week spike in interest, so I’ll only be using results after the numbers level out.

I will eventually change this into a ‘freemium’ style system with a free version available, as you can see on the homepage.

Stay tuned for updates on the initial results! You can follow me on Twitter here, or subscribe to my blog.

I recently blogged about my opinions regarding free software vs paid software in a post titled ‘make it free or fail‘. To summarize it, I basically disagree with the common idea that the only way to succeed in the software industry is through releasing free software, utilizing the ‘we’ll get 1 million users first, and then hopefully 1% of them will pay’ philosophy. I received a huge amount of feedback on the post, it generated almost 15,000 pageviews in just over two weeks. Even MIT wrote an article debating my post.

Instead of simply reading your opinions and doing nothing about it, I figured I might as well test it properly in a real-world scenario, using one of my own projects. I will releasing TapType very soon, it’s basically a virtual keyboard for Windows which will hopefully make Windows tablets actually usable. It’s kind of like an iPad keyboard for Windows. It will basically be the test dummy for this concept, I’ll be testing a number of the theories on the product – and we’ll see what happens!

I’ll be writing frequent updates on the project via this blog, outlining the (exciting) results. Feel free to offer your ninja suggestions to me via my Twitter account, if they sound good I might put them into action on the product!

The project will be beginning in less than a week, when TapType will be launched! Follow me on Twitter for updates, or follow TapType on Twitter here. You can also subscribe to this blog here.

Fixing a doorknob. It’s one of the more painful tasks that needs doing every now and then, and for a number of very good reasons: First of all it’s time consuming: removing an old doorknob and replacing it can take a lot longer than you would think. Second, it’s frustratingly tedious: it takes no real skill in order to replace said knob, making it more boring than you can imagine. Finally, and in my opinion most importantly, nobody will ever notice: If it works, nobody notices that it does. If you fix it, nobody notices if it’s fixed. But if its broken, everybody notices. The most frustrating elements in software development (for me at least): memory optimization, cpu optimization etc are a lot like those doorknobs – very time consuming with almost no reward other than acceptance.

The thing is, while those elements may be tedious, they’re vital to any good software product. You can spend as much time as you like on the more enjoyable tasks, but if you’re hoping to release something that will be successful – it needs to be top class in every aspect. This isn’t only applicable to software development, but to almost everything in life: make sure you don’t spend all your time on the door, you’ve got to leave just as much time for the knob – even if nobody notices.


Follow me on Twitter, if you like. Or check out my latest project, TapType.

Follow me on Twitter, if you like. Or check out my latest project, TapType.

Slow and steady wins the race. The tortoise beats the hare. For our entire lives, even in our childhood stories, this idea has been ingrained into our consciousness. In reality however, especially in the competitive world of software, this is very rarely a good philosophy. In fact, it’s often a primary cause of startups going bust, or indie developers failing to make the cut.

Lets face it, the software world is a cut-throat business. Whether on Windows, Mac, iOS or other mobile devices, there is very rarely just one developer with a product in a specific niche. Consequently, there is an ever-present struggle for supremacy in the business. Whether it be in having the most features, the best UI, or otherwise, every developer is trying to raise their app to a level above the rest. To succeed in a saturated software niche, or in a new niche, speed is essential for two main reasons:

First in Wins: In any market, it is very often the first product to arrive that is the most successful. Now obviously that is a very generalized statement, and there are hugely successful companies which beg to differ (Facebook for example) but as a general rule in the modern-day game it works. If you have a revolutionary idea, the first to market with that idea will have the best chance at success. Major news publications will write about the first with this great new product, but rarely the second: and media coverage is everything in the software world. Consequently, slow and steady will very rarely win the race to profitability: Even if your product is of a higher quality than those who release first, it’s going to be very hard to catch up in terms of user numbers. First in wins.



React or Fail: In an already saturated software niche, as a developer you are surrounded by competition who are constantly trying to ‘one-up’ other developers. That means fast reactions in terms of features or functionality is essential. If you, for example, release an app that makes farmyard noises, and the next developer releases a similar app which makes farmyard and jungle noises; you better react fast to implement that feature or your market share will crumble. Who would buy an app with just farmyard noises, when you can get both farmyard and jungle for the same price? Now obviously thats a ridiculous example, but the central point stands: reacting fast is everything, the tortoise will lose.

Forget this particular childhood philosophy, and your chances of success will be far greater. Release quickly, update quickly and innovate quickly, and you will succeed.

90% of new year’s resolutions have already failed. In 7 days. Unless, of course, your new years resolution was to read this blog more (a fine resolution indeed!) in which case you have succeeded! Now, quite obviously, I have pulled that figure out of thin air, but the fact remains that many, many people will have already failed in their resolutions for one simple reason: they haven’t started it yet. Over 50% 0f all people around the world make a new years resolution (that’s a genuine statistic), and yet so many never succeed.

As with any difficult or frustrating goal, the most difficult part of a resolution is quite often simply starting; overcoming that mental friction which prevents you from getting the ball rolling.  Sure, on New Year’s Eve you were oh so motivated, the year ahead was no doubt filled with endless successes in your mind, but what have you accomplished so far?

The only way to make a step towards success is to start. It sounds simple, but actually putting that into motion can be very difficult. So, stop whatever you’re working on right now, and start your resolution. Your resolution was to lose weight? Get off your office chair and do a few pushups. Congratulations! You’ve started, and frankly I think that is the most important step of all.


Follow me on Twitter, if you like. Or check out my latest project, TapType.

Follow me on Twitter, if you like. Or follow my latest project, TapType.

In recent years software and hardware have, if you will, switched identities in terms of what determines a successful product in their individual markets. Five years ago, even two years ago, when we thought of software, programs like Microsoft Office or Photoshop sprung to mind. Those were (and still are to a large extent) software behemoths, do-all applications which combine many services into one package. Two years ago when we thought of hardware, gadgets like iPods, phones, cameras  and laptops were foremost in our minds: single purpose items which either played music, made calls, took photos or browsed the web – rarely combining any of those things. Today, the most successful software programs are ‘apps’, usually single purpose applications which do one thing very well, and not much else. Programs like Office or Photoshop are slowly being replaced by newer, more refined alternatives, or are themselves changing (Photoshop.com, or Office Web Apps for example). Hardware has morphed into do-all gadgets like the iPhone or iPad, which combine a huge range of functionality into one device. The two, once entirely separate categories of product, have literally switched their identities: Software has become the single purpose service, and hardware the multipurpose, do-all gadget.

This obviously isn’t anything groundbreaking, just an interesting phenomenon.

Follow me on Twitter, if you like. Or follow my latest project, TapType.


An iPhone App developer emailed me this week asking my opinion on a design for an app he was working on, it was a Twitter client. Considering the gross number of Twitter clients in the App Store, I couldn’t understand why this skilled developer was wasting his time creating yet another, and his response to the question surprised me: “Twitter clients are popular on mobile devices, they make more money apparently“.  Moving on, I then asked him for his Twitter username so I could send him my thoughts on the app easily, his response surprised me even more: “Oh, I don’t use Twitter,  I don’t want to know what my friends are doing 24 hours a day! Can you use email instead?”. I was shocked, I mean this developer was going to create a Twitter client for the app store, without ever using or even having an interest in the service, purely because he had heard the apps are popular. I composed a confused reply to his email, and was about to click send before I realized this problem isn’t just with this one developer, it is widespread throughout the industry. More and more startups and individual developers are creating products purely because they believe they will produce revenue, and that makes no sense to me. While, in my opinion, the reasons for not doing so are endless, I’ll outline the two main issues with that approach:

Motivation: For just about every developer, and probably every employee in any industry, a primary problem when working on any project is motivation. Developers talk about being ‘burnt out’ after a few solid weeks of coding, and lose motivation for what they’re doing. If you begin working on something without any motivation, your chances of seeing it all the way to the end are slim; and even if you do, the final product is, frankly, probably not going to be that great. Conversely, if you love what you’re working on, the result will be the opposite. I know developers who have worked 72 hours straight simply because they’ve thought of an idea, and are that excited about it they will work that hard, for that long to make it happen. Additionally, if you’re working at a startup which is building anything, whether it be an app, service or utility, the enthusiasm of any one developer is contagious amongst the whole team – which can be either positive, or if the developer has no interest in the project, very negative.


Quality: If you build an app for yourself, you know what features and functionality needs to be included. You know how the UI should look for the best usability. You know exactly where every pixel and every line of code should go. The developer I was talking to actually disliked the fundamental idea behind what he was creating, and many developers are the same. If you’re trying to create something that you will never use personally, it just won’t be right. Certain features or elements of the project will placed in wildly inappropriate positions for typical usage patterns, vital features will be left out or ignored, and if that is the case your chances of success are slim.


Building apps that you love will provide a much greater opportunity for success than those that don’t. If you love what you’re working on, putting time, effort and money into the project will be fun instead of a chore. Consequently, the final product will be of a much higher quality. Users can often sense if the developer is 100% behind the project, and that holds great influence over whether or not they purchase the product. If the users receive great support and assistance from an enthusiastic developer revenue will flow in. Create products for yourself, products that you love, and success is almost guaranteed.

Happy New Year!
Great! The latest version is improved! It is still slow, but it is workable, unlike the last version. It still needs tweaking to fix the sluggishness though (I’m on a dual core 3GHZ CPU with 4GB RAM, minimal CPU load).
-You won’t need a tablet PC to test the screen orientation behaviour, it works in all versions of Windows. This feature is vital. For instance in Windows 7, you can right click on the desktop, select ‘Screen Resolution’ and change the orientation there on any PC. In Windows XP, this is also possible, I just googled it (http://www.dq.winsila.com/windows/windows-xp-tips/how-to-change-the-screen-orientation-in-windows-xp.html).
-In regards to the keyboard size: The current implementation is fine. When you remove the window border, the vertical keyboard will be 768px high which is fine. This might need some tweaking when you figure out all of the taskbar docking stuff.
-The settings window needs some UI tweaks, but of course that isn’t really important at the moment.
-Ignore the ‘invisible tab control’ point.
-I’ll confirm the CAPS/Shift Behaviour (you were almost correct): The keyboard should have the shift key, not the caps key, visible on the keyboard initially (this isn’t the case now). Tapping the shift key once presses shift, when another key is pressed shift depresses. Double clicking the shift key activates CAPS. CAPS remains activated until the caps key is pressed again, at which point it returns to a shift key (but doesn’t press shift). If CAPS lock is activated and the user goes to the numbers keyboard, CAPS is deactivated and returns to shift key appearance.
-Due to the fact that the window border will be removed (as the keyboard ISN’T draggable) the settings and rotate keys should be moved to just above the backspace key (in the current empty black area).
-Don’t worry about the secondary keyboard slider, it will just make the keyboard too crowded I think.
-The window resize feature works well, but it should only resize the currently activated window, not all open windows.
-Can you send me all the image files you are using for the keyboard, after the white lines on either side bug is fixed. I’d like to start looking at how to update them to what the final keyboard will look like. How will I do that in-code? Is it a simple matter of replacing the image resource files?

make it free or fail.

January 2, 2011

Follow me on Twitter, if you like. Or follow my latest project, TapType.

A kind of unspoken law has established itself in the software developer community in recent years: make it free or fail. From iPhone Apps to Windows Programs to Webapps, just about every developer has bowed to the silent pressure placed upon them to release their work for free. It has become almost a self-fulfilling prophecy: developers are led to believe the only way to succeed is through making everything free, and consequently, that’s exactly what happens. The freemium business model has become commonplace, and the consumer is enjoying a period in which they can find just about any software they need without paying a cent.

The idea behind the freemium model is great: let everyone use the service or app for free, hope it goes viral, and consequently spend far less on marketing, instead putting it into building a fantastic product. And for a few businesses, this works. The entire freemium software boom, in my opinion, stems from just a few successful companies who utilized that model: Evernote, Dropbox, Pandora, Automattic, Zynga, and Skype. Perhaps even Facebook and Twitter. The idea of behind the all too frequently heard line: ‘we’ll get millions of users first, and then worry about revenue’ stems from these businesses. The problem is, just about every startup is following this mantra,  and that’s exactly the reason why a lot of them fail.

A lot of people in the industry, angel investors in particular, love to broadcast the idea that ‘you can either get 1 million users, and have 1 percent of them pay, or struggle to find 10000 paying users right off the bat’. The thing is, in the overcrowded app and webapp space, it has become harder and harder to find those million users in order to break-even – and that is what a lot of startups are relying on. The freemium model has almost turned in on itself due to its own success: Producing a self-marketing, viral product has become, and will continue to be, increasingly difficult as the market becomes over-saturated with startups all attempting to do the same thing. Consequently, startups will be forced to pay for marketing to gain the upper hand: the freemium model will crumble as there is a requirement to release the product for free, and pay for marketing. That situation is impossible to sustain.

When releasing a product for free, just about every developer simply assumes that consumers will be willing to pay for it in some way, they assume that there will be a reliable revenue stream in the next year, or two years. Conversely, quite often there isn’t, and startups go bust. If a product is released on a pay-only basis, you know in the first month if the product will succeed, rather than two years and thousands of dollars down the road. Having a revenue stream from the get-go validates your product, it confirms that users are willing to pay for the app or service and ensures a reliable revenue stream in the future. Money, in my opinion, is the only reliable way to measure the worth of your product. Pageviews, downloads or referrals mean nothing in terms of long-term profitability. Releasing a product only to paying users also provides great feedback, simply because users who have paid for the product care a lot more about its improvement: they want their money’s worth.

Is it not better to forget about the millions of users, forget the billion dollar exit and instead focus on building a fantastic product, charging for it, and offering great support?