Category Archives: Advice

One of the big things about running a business is managing risk.  As an entrepreneur I know that 25% of businesses fail within the first year, 60% have failed by year 4 and 71% have failed or closed by year 10. Given that most businesses are started with the best of intentions and usually with all the time and equity the business owners can provide these failure rates are indicative of the tremendous amount of risk.

One of the most effective ways to combat the risk and reduce the chance of your own business failing is to seek validation of your business idea early.  Very early.

Lets say you have a great innovative idea for a business. To start with you’d probably ask around to your friends to see if they think it’s a good idea or not. Chances are your friends, not wanting to hurt your feelings, will agree.  “That’s an amazing idea” they’ll say.  With the positive feedback, you’ll probably feel pretty confident about starting to build your business right away.

Unfortunately that is a false sense of validation.  Your friends are probably not your target market, they are motivated to maintain friendship rather than stomp on your dreams, and they didn’t have to put money where their mouth was.

To really get a sense of whether or not your business has legs start with getting some commitments on sales from real customers, if possible negotiate full or partial upfront payment. This happens before you’ve built anything, before a line of code has been written, before prototypes have been developed. Validate that the idea has merit from actual customers and confirm that they’re willing to put real money on the table for your solution.

Only after having made your sales and having financed the bootstrapping of your business do you actually go ahead and create what you’ve promised. With customers in place you have eliminated one of the biggest and most stressful risks in business  – the struggle to find new customers.  The remaining risk is to actually deliver what you promised below cost.

Making that initial sale is almost never easy, and getting the marketing message correct from the start is nearly impossible.  Investing the minimum possible money and time into an idea so that you can market test it can be critical.

So here’s a new acronym for you: MVS (Minimum Viable Sale). MVS refers to the absolute minimum amount of effort and money required to craft a compelling enough marketing message to land your first sale.

The MVS probably includes a presentation (Keynote/PowerPoint), perhaps a website, it might require a business plan, some mockups or even a faked version of your product. For example: a mobile app could be convincingly created in something like Fluid UI without writing a line of code that could be used as a demo in a sales meeting.

Even for a free service, the MVS is worth creating.  In some cases the MVS for this could be simply posting on reddit if people would be interested in it, or linking to an opt-in form on a website to build an initial customer list.

In other cases the Minimum Viable Sale might be a production run of 100,000 widgets in which case something like a kickstarter campaign might be a good option to reach as many people as possible.

The concept for creating that MVS is to do the absolute minimum amount of work before getting paid to actually work  on your idea. By making that first sale you’ve validated your marketing message, you’ve identified your customer base, and confirmed that your idea meets a need that someone is willing to pay for.

I’ve worked in places where the business had a good idea, identified an underserved market and put heads down for 4-5 months working on building a product only to find out after the fact that the potential customers were happy with their existing system, or the cost to change their current system was more work than it was worth.  Month’s of wasted effort and tens of thousands of dollars in development costs down the drain. Alternatively they could have started by trying to sell the solution they had in mind with the intent of getting enough cash commitments to pay for the 4-5 months work upfront.  The added benefit of getting customers before development starts is that they can help refine the features required for it to meet the needs of the market. Win-Win.

Starting a business with an MVS before you develop your MVP (Minimum Viable Product) is a simple way to get off to a lower risk start and help ensure that there is a market for your MVP when it’s finished.

iphone app
What Do You Know?

This is the product of my first experience with outsourced development. What Do You Know is a simple iOS game where the player guesses what word matches the pictures shown. We picked a simple game engine to start with our initial foray into outsourcing to keep costs down and to help us quickly get through an entire project and learn our lessons from it.

I’m very excited to see how this game does on the market. It is comparable or better than most similar games in the category which I hope gives it a good chance of becoming a hit.

Our biggest lessons on this first project have been:

  1. Maintain control over the source code yourself – get a code repository on bitbucket or github where your team can regularly push their code as it progresses.
  2. If you are hiring a outsourcing company request senior/experienced developers be put on the project.  Senior developers will produce a higher quality product, and give more realistic timelines.
  3. You’re the boss, coach the team to produce the best product they can by providing the best leadership you can to them.
  4. Have the final project reviewed in detail. Check the source code. Growing a good business on apps requires that you can leverage past development into the future through code reuse.

This game certainly won’t be the last time we hire programmers to develop games for us. Keep an eye out in the App Store for What Do You Know.  It should hit iTunes in the next week or two.

EMBA_start_up_competition_996x446Our market economy is built around the premise that competition makes everything more efficient and better over time. For most products and services a careful analysis of the competitors is very important to your success.

This market analysis applies to all aspects that you can glean from your competitors. The product features and design, quality of service are obvious things for the engineer in you to look at for hints about what you can do better with your product. Business models, marketing and sales strategies are just as important to your success so look to those too for ideas that can be improved on.

Importantly, if you are planning a business idea and can’t be better than the competition in enough ways to matter DON’T WASTE YOUR TIME.

It’s an approach right out of Apple’s playbook.  Only enter a market where you know you can dominate with a superior product.

As an App developer it has become interesting to see the marketplace evolve into a much more competitive space over the course of a few years. With the vast amount of successful apps being free it’s impossible to compete on price, the race to the bottom has already finished. To develop a successful app now requires a great design, superb artwork, discoverability and viral tools for additional distribution, good marketing, and positive reviews.  There are only 100 apps in the top 100 highest grossing list, and those apps are (for the most part) doing all those things.

To have a great app idea and expect it to be a hit without addressing all these things that your competitors are doing is naive.

I’ve been seeing more frameworks lately for generating static websites. The reason for these becoming more popular recently is the result of several developments.

  1. Cheap shared hosting is notoriously unreliable, slow servers overloaded with too many websites and hacked servers being able to infect and hack many other sites at once.
  2. The development of 3rd party services such as Disqus to power the dynamic parts of a website with embedded javascript. (removing the requirement of server side logic)
  3. The scalability, performance, uptime and low cost provided by Amazon S3 and their CloudFront CDN service.

The difference in cost between a scalable dynamic site and a scalable static website can be staggering.  So if there is a way you can convert a website over to be static (perhaps with a daily or hourly upload of new content) it may be worth your while.

A website with 1 million page views per month on Amazon S3 with CloudFront would cost roughly $6/month depending on the size of the assets.  Building up a simple server configuration with 1 database server and a webserver with small EC2 instances would bring the costs up around $150/month.

One of the nice things about developing a static website is that you can script things however you want to.  Concatenate strings in bash or PowerShell or go all the way to having a complex database backed CMS system and template engine.  It also means massively less complex server infrastructure.   No more nginx reverse-proxied gunicorn server paired with a database server and a host to tools to monitor uptime and send alerts should things break.

It’s for these reasons that I am working on my next project to have a static website backend instead of a dynamic django app.

Using a template engine like Jinja2 it is trivial to convert content over to static files ready to be uploaded.

Some tricks may be needed to handle things in a more complex static site.  Perhaps a small light server to refresh the static content every hour, or to run scheduled tasks, or to do other various asynchronous jobs.  Still the costs can be brought way down if your servers don’t have to handle the web requests.



There’s no doubt that programmers are lazy people.  Anything that can be automated is, copy/paste code – you got it!

There is another trait of programmers that they assume because they can program in one language well, and have touched a few other languages over the years they can quickly learn a new language on the job.

Programmers are arrogant about their own skills.

The article What If Cars Were Rented Like We Hire Programmers? exemplifies the problem though their analogy is not accurate.  A programmers job is more like the mechanic or factory worker building the car.  If you had built or fixed only Subaru Imprezas for 10 years then you are not amazingly qualified to fix Fords.  If Ford is looking to hire, they know that there are 1000’s of mechanics more experienced on their cars in the pool.

I say this because after several years of writing Javascript, learning on the job, I finally decided to pick up a book.  The first thing I learned was just how much I didn’t know.

More programmers need to read books to master the skills they need on the job instead of relying on Stack Overflow and Google to solve all their problems when they arrise.

The thing to watch out for is the situation where you read someone else’s code and say to yourself “I have no idea how this works, or what it does”.  As a programmer that should be a red flag – you don’t completely grasp the language syntax.

If you don’t have a complete handle on the syntax of a language chances are you also don’t know how to write idiomatic code.  Without those two things mastered the code you do write will be poorly organized and buggy. The next programmer to come along to work on your code will hate you.  You will be that guy who everyone bitches about for writing bad code.

Bite the bullet, read a book from time to time.  Always be Learning.


Sales teams often have the letters ABC plastered somewhere next to their weekly leader boards and top salesman photo. It stands for Always Be Closing and it’s a motto that keeps sales people laser focused on their goals. Marketing teams should have a similar motto: ABT – Always be testing.

Lately I’ve had the opportunity to do a lot more testing on the performance of webpages and apps. One thing always holds true. Nobody knows what’s best – which is why it’s always important to test things.

This point cannot be more clear. If your head of marketing, lead designer, or CEO could peer into the minds of potential customers and knew the most effective way to sell to them, then they would probably be living on a beach somewhere. The fact that they keep coming into work by car instead of helicopter is enough evidence to show that they don’t have all the answers.

One of the things that gets under my skin about marketing is the focus on branding and brand related marketing. Reading a book about branding is like taking a walk back in time to the 1980s. It’s difficult to find good recent examples of successful brand marketing because more and more companies are discovering that it’s simply not effective. With more technology to play with it has become easier to track the performance of marketing efforts. TV ads can be tested in different regions. Web banners can be split tested daily to find the most effective ad copy.

You know what tends to happen when tested and accountable marketing comes into play? The clever catch phrases disappear, gimmicky websites get toned down and focused, and communication becomes more direct.

I recently heard a pitch from a brand marketing consultant who tried hard to impress upon us the importance of a good tagline as the basis for all marketing. It was not very good advise. One of the examples he used was Avis and their famous “We try harder” tagline. It was claimed to be a tagline that helped grow the business a lot. Question is if taglines are that important why aren’t they presented up front in current marketing.

“We Try Harder” shows up as a footnote on Avis’ current website – barely noticeable. It’s not important enough or effective enough to use on their adwords copy. If taglines were good marketing they would be more prominent in current advertising.

I have tested a lot of marketing ideas over the years, and there are constantly surprises and unexpected winners. I would however never claim to know the best approach – The best approach changes year to year. The experience you get from testing gives you a pretty good place to start from for future tests.

When your business income is at stake Always Be Testing. Never trust the status quo, and don’t trust your copywriter to give you optimal sales copy (why buy one sales page when you can buy two for twice the price). Test every assumption. ABT.

There are several hard problems in computer science that seem to be getting solved in a real way. Google’s Driverless cars are perhaps the most recent example of computers taking on a challenge assumed by many to be impossible just a few years ago. And they’re doing a good job. In 2015 they will have a significant number of cars on the road. The economics and convenience of self-driving cars is so compelling that is shouldn’t take long for the technology to make it into consumer’s hands. By 2040 few people will have a drivers license.

Computers are increasingly taking on even more of the hard work done by humans. This effect has been blamed for the slower than expected recovery in jobs from the recession — companies are making money, they are buying equipment, but they are not hiring at the same rates seen in historical recoveries.

In the tech industry we have the job of developing these difficult solutions. Better robots, faster searching, more accurate voice recognition, more convenient payment methods etc. For the foreseeable future there is plenty of hard work to be done.

Something is happening right now in the PC industry which will be echoed in a few years in all of these technology areas. Giant powerful home PCs are becoming irrelevant. The fast computer you bought 4 years ago is still perfectly adequate today for getting what you need done. There’s little need then for more ram, more cores, or more drive space. The technology has become “good enough” and as a result innovation has stalled out as customers have dried up.

Expand that “good enough” concept to other technologies… phones, robots, cars etc. and things may become grim as demand for replacing usable products for something better diminishes.

It is the reason why I think it is more important now than ever to work even harder to get yourself ahead. Produce something new, create an impact, and try to create your legacy for this world. With each passing day technology gets better at what you do to make a living. I’m working hard to make sure I’m financially and personally secure by the time the computers catch up.

It’s going to be hard.

Working on the same projects from multiple computers can be difficult.  There are lots of solutions for this problem such as using Dropbox to sync files between computers. but that leaves your workspace to start from scratch ie when working from the office last I had these 10 files open, and a couple of things running, then when I get home if the files sync over I have to reopen those files locally and configure that computer for anything else that needs to run to continue debugging.

Enter Tmux and Vim.

Lately I’ve been working 3 days at home, 2 days at the office each week.  As a result I have re-evaluated my workflow to find something a bit more efficient.  Vim in the terminal is brilliant once you’ve got it set up and have mastered it.  It has been my main editor for about 3 years now.  There are a ton of great resources out there to learn Vim for those of you still trying to find the way.

Tmux is new to me though.  It’s basically a better version of screen.  If your not familar it basically provides a way to do 2 main things.   First it allows you to create a persistent session that you can connect to and leave running.  Secondly in this session you can open up and layout many different consoles into tabs or windows. It’s sort of a command line version of VNC.

I have tmux installed on my Linux servers on AWS so that I can work efficiently on those machines, and I have it installed on my workstation at the office.  I can log into the environment with SSH and continue right where I left off even if I’m switching between my laptop and a friends computer.

With Vim I have the ability to keep my settings and plugins saved and configured the way I like them with a configurations version controlled on github.  Getting a new Linux or Mac machine up and running takes very little time to do with this setup.

I’ll give my best tips and tricks for Vim in another post.

I was playing around with Twitter Bootstrap yesterday and managed to very easily migrate my App Control website over to use it as a way to clean up the UI and get it looking a little more consistent.

It provides some nice looking default looks and easy to use css classes to apply. It’s hard to imaging doing another site without using something like twitter bootstrap as a starting point.

Something I’ve found recently is just how difficult creating a great UI can be. The finishing touches on making things line up just right or animate fade ins and dropdowns is surprisingly difficult when taking into account all the various browsers out there.

Twitter bootstrap gives you something professional looking by default and is a fantastic starting point for future customization. If you have a web project I would encourage you to look at it.

A good game is something that is not trivial to create. There are a lot of skills that go into creating a good game, from the artwork to the sound, and programming. They all work together to hopefully create something that is compelling enough for people to enjoy and spend time with.

This last point – creating something compelling – is the least understood, and most critical. Good art is subjective and even 8 bit graphics (Tiny Tower) can power multi-million dollar games. Royalty free sound effects and music can be had for just a couple bucks. Custom programming can be done cheaply through outsourcing sites like oDesk. Directing all these efforts to create something “FUN” is an aspect of human psychology that fewer people understand and can translate into something tangible.

Perhaps one of the most important books I’ve read, which I continuously refer back to is “Influence” by Robert Cialdini. It’s a book about the triggers that make us want to buy things and what we find valuable.

The same psychological triggers that are used by salesmen, and marketing teams in business I believe also play a big role in making a game compelling.

Reciprocity is the impulse most people have to pay back favours and it plays a huge role in why the freemium type game is more profitable. Give people something valuable and they naturally feel indebted to you. Rewarding players of a game with coins or upgrades is a way to compel them back into the game if they haven’t played in a while.

Making use of Commitment and Consistency well is difficult but it can make a game incredibly sticky. Take a look at the MMOs for a good example of how far players will go to maintain a commitment to a character or proving that they are an avid gamer. Sometimes their commitment to a game can override their commitment to family and health.

A good game has Scarcity. Tiny Tower and other Sim type games are all about scarcity and very in your face about it. You have limited resources to build floors and it takes real time/money to get those resources. The scarcity imbues value on the floors you build in Tiny Tower. Scarcity also is present in non-sim type games. Jetpack Joyride has scarcity in the number of coins you collect – it takes time and skill to collect coins in the game – that makes the other things in the game such as new legs, shoes, upgrades etc. have value and therefore worth collecting. The thing to note is that by removing the scarcity it kills the fun in the game – cheating by giving yourself unlimited funds effectively inflates away the value of everything in the game. God-mode removes the scarcity of life and very quickly can turn something fun into something tedious.

A successful game also should have Social Proof. The success of Angry Birds is not due to it having amazing graphics, or original game-play, and the programming isn’t particularly impressive. Angry Birds is successful because people know other people that play it. There are 20M likes for the game on Facebook. When someone gets their first smart phone and asks friends what games they have generally Angry Birds is on the list. Scoreboards in games are a form of social proof. A high score poses a challenge to people eager to beat a friend but it also is proof that other people are playing the game. To be part of the club you need to be playing too.

Likeability can be used in games to great effect. In the indie game development world liking the developer translates into people that know them playing more to support their hard work. In game likeability is more associated with the artwork and characters in the game. The birds in Angry Birds are vastly more likeable than the 100’s of similar catapult games out there.

Thinking about these factors when creating a game will pay dividends when players can’t put down your next title.