Category Archives: article

Signing Qt applications for Mac OS X 10.9.5 and 10.10

I have written previously about signing Qt applications for Mac OS X. It all worked fine until I upgraded to Mac OS X 10.9.5, which broke my signing script. Those Apple chaps do love to break stuff. Grrr.

The problem appears to be that the directory structure of the app bundle has changed and the Qt4 macdeployqt command does not conform to the new layout (I believe this is also the case for Qt5). Oh joy. I managed to work out how to get it working again after a bit of digging around. The good news is that Apple have also made the codesign command easier with a --deep option to traverse and sign the whole bundle in a single command. About time.

So here is the basic process to build and sign your Qt .app on the latest versions of Mac OS X:

# deploy Qt frameworks into .app bundle
$QTDIR/bin/macdeployqt <your_app>.app -verbose=1
# optionally delete unwanted framework and plugin folders, e.g.:
# rm -f -r <your_app>.app/Contents/Frameworks/QtDeclarative.framework
# rm -f -r <your_app>.app/Contents/PlugIns/sqldrivers
# correct .app bundle structure
python rebundle.py $QTDIR <your_app>.app
# sign .app bundle (including frameworks and plugins)
codesign --deep --force --verify --verbose --sign "Developer ID Application: <your developer id>" <your_app>.app
# the 2 lines below are just for verification/diagnostics
otool -L <your_app>.app/Contents/MacOS/<your_app>
codesign --verify --verbose=4 <your_app>.app

(Sorry about the small font, but I wanted to avoid confusing line wraps).

I then invoke DropDmg to create a .dmg image file complete with licence and background image. This is all stuck it all in a bash script, which I can pretty much forget about it (until Apple break something else).

In the above rebundle.py is a Python script  written by some public spirited individual that can be downloaded from github (thank you, ‘kingcheez’). Note that you can just find and replace all the ‘5’ characters in the script by ‘4’ if you are still using Qt4.

The first time I ran my script I ended up with a whopping 50MB .app file. It turns out that the cp -r commands in my script don’t preserve symbolic links. So you end up with 3 copies of each framework library. You can avoid this by using cp -R instead.

On the subject of signing for Mac, Apple recently sent out an email stating:

Signatures created with OS X Mountain Lion 10.8.5 or earlier (v1 signatures) will be obsoleted and Gatekeeper will no longer recognize them. Users may receive a Gatekeeper warning and will need to exempt your app to continue using it. To ensure your apps will run without warning on updated versions of OS X, they must be signed on OS X Mavericks 10.9 or later (v2 signatures). … Apps signed with v2 signatures will work on older versions of OS X.

So you are going to have to start signing using 10.9, whether you like it or not.

Are you wasting your AdWords budget on in-app ads?

2 out of the last 3 AdWords campaigns I have looked at for consulting customers were spending substantial amounts of money on worthless in-app ads, without even realising it. Feast your eyes on the following:

in-app placement ads$1,071.04 spent on clicks from a single game app, that resulted in 0 trials of the software product being advertised. Hardly surprising given that it was a B2B app that cost around $1000. On further investigation this company was spending a substantial percentage of its AdWords budget on completely useless clicks from in-app ads. Ouch.

And this is from a different AdWords account for another B2B software company:

in-app display ads

Many of the apps in the iOS and Android app stores are now funded by in-app advertising. The creator of the infamous Flappy Bird game claimed to be making tens of thousands of dollars per day like this.

Flappy Bird In-App ads

(Note that the ad shown in the screenshot is not related to either of the two companies I mentioned above).

At least the ad is well away from the ‘play’ button. Some, less scrupulous, app makers place the ad in such a way that it is easy to accidentally click on it.

Who would want to pay for in-app ads, knowing that most of the traffic will be accidental clicks from frustrated gamers (many of them children) just trying to get to the next screen? If you run ads on the Google display (content) network, it might be YOU. Google started showing display ads in apps some time ago and it seems that all existing display campaigns were automatically opted in. Worse still, the apps they are advertising in appear to have no relevance at all to your content campaign keywords.

App makers get some money, the public gets free apps and Google makes mega bucks. The advertiser is financing the whole thing and getting (in many cases) nothing in return. But don’t feel too smug. If you have a display campaign that you aren’t carefully monitoring, you might also be throwing away money. To find out:

  • Log in adwords.google.com.
  • Click on All online campaigns.
  • Choose a sensible time frame, e.g. the last 6 months.
  • Click on the Display network tab.
  • Click on Placements.
  • Click on the Cost column to order from highest to lowest cost.
  • Look down the Placement column for entries that start with Mobile App.

Adwords display placements report

While you are there, it is also worth checking the relevance to your product of the other sites you are running display ads on.

Hopefully no horror story awaits you. If it does, you can exclude the offending placements to stop your ads appearing there again.

exclude AdWords placement

But this is a bit like playing whack-a-mole, as you will be continually excluding new apps (I haven’t found a way to opt out of in-app ads wholesale). Alternatively, just pause your display campaigns. Personally I gave up on display ads some time ago. The conversion ratios were so miserable (much lower than search ads) that I could never make any money on them.

If you have been stung for hundreds or thousands of dollars, it may be worth complaining to Google, to see if you can get any money back on the grounds:

  • You never explicitly opted in to in-app ads.
  • The apps your ads appear in bear no relationship to the search terms in your content campaign.

I have no idea if that will be successful, but it might be worth a try.

Google are continually changing the rules of the AdWords game and you would be naive to assume they are doing so with your best interests at heart. If you are running an AdWords campaign you must monitor it continuously or bad things will happen.

Related articles:

Why have my sales dropped?

why have my sales dropped?If you spend as much time as I do hanging around forums for independent developers, you will often see questions of the form “I only made X sales today/this week/this month, has something gone wrong?”. There are two distinct possibilities:

  1. Something has changed (e.g. your website is broken); or
  2. It’s a statistical fluctuation.

Rather than guessing, we can use some stats to work out the probability that a drop in sales is just a random fluctuation.

The Poisson distribution gives us the probability of a given number of discrete events occurring in a fixed interval of time (or space), if these events occur with a known average rate and independently of each other. It can be used to investigate the accuracy of v1 flying bombs, the number of 19th century Prussian soldiers kicked to death by horses and the number of South Africans attacked by sharks. It can also be used to calculate the probability of getting <= n sales per day/week/month, if we average N sales per day/week/month.

Poisson distribution

A comparison between the number of PerfectTablePlan sales per day over 90 days (blue histogram) vs predicted by the Poisson distribution (red histogram). We would expect the prediction to become more accurate with more data, assuming nothing else changes. Obviously things do change over the lifetime of a software product, hence the relatively short time span chosen.

Using this online Poisson distribution calculator we can work out some example probabilities:

expected
number of sales
over period
Probability of drop in sales of: 5 10 50 100
>= 20% 44% 33.3% 8.6% 2.3%
>= 40% 26.5% 13% 0.2% 0%
>= 60% 12.5% 2.9% 0% 0%
 = 100% 0.7% 0% 0% 0%

(0% = too small for the calculator to display)

For example:

  • If we average 5 sales per week, the chance of a 40% or more drop in sales (i.e. a week with 3 or less sales) is 26.5%.
  • If we average 50 sales per week, the chance of a 40% or more drop in sales (i.e. a week with 30 or less sales) is 0.2%.

So the less sales we make (or the shorter the period we look at), the bigger the random fluctuations we can expect. If I was averaging 5 sales per week, I wouldn’t be too worried about a drop of 40% in sales for one week. In fact, I would expect it to happen approximately one week in every 4 (running a business that averages 5 big B2B sales a year, must be very stressful!). But if I was making 50 sales per week, a 40% drop in sales should only happen by chance approximately once every 10 years. I would definitely check for other causes.

Assuming it isn’t just a statistical blip, the most likely cause of non-random change is an issue with your website. Rather than waiting for a problem, I suggest you set up continuous monitoring that emails or SMSs you if a problem occurs. There are various services for this. I use free pingdom.com and siteuptime.com accounts. Using 2 different services protects you against one of them silently failing.

If your website is up, what else have you changed recently? Check your analytics for changes and your Google webmaster tools account for warnings. Has traffic dropped (perhaps you been slapped by Google)? Has the number of downloads/trials dropped while the traffic stayed the same (perhaps there is a problem with downloading/signing up)? If you have made a new release, double check there are no major bugs in the installer or software. “It works on my development machine” doesn’t cut it with customers, so check it on a non-development machine or a clean VM.

Don’t assume that random strangers on the Internet will email you to tell you that something is broken. Perhaps 1 in a hundred or a thousand will. The rest will just click the back button. You can improve your odds by having loyal and engaged customers and a clearly displayed email address and/or phone number. But still don’t depend on it. When is the last time you noticed an issue on a website and took the time to report it?

Also some seasonal variation in sales is likely. The pattern depends on your market. Many businesses see a drop in sales in the northern hemisphere summer. But my wedding table plan software sells better in the summer. Hopefully you will know the pattern for your product after a year or two.

Random fluctuations and the lack of visitors to report issues means that it is hardest to tell whether a drop in sales is real when you start out. This is  when you need the sales most, both financially and emotionally. It gets easier as your traffic and sales improves. No one said that life was fair.

Twitter Demographics Are Bullshit

twitter demographicsI have been experimenting a bit with promoting my software using promoted tweets. You can target people based on their interests or the Twitter handles they follow. I have chosen the latter approach with the aim of getting people to a) click through to my website and b) retweet (in the hope of more click throughs).

The results haven’t been great, with only 25% of the ‘engagements’ I paid for resulting in clicks through to my website. Here is a direct comparison between traffic from AdWords and Twitter ads to my seating planner software website (data from Google Analytics).

AdWords search
campaign
Twitter sponsored
tweet
Bounce rate 43% 78%
Av. pages visited 3.10 1.48
Av. time on site 1:51 0:40

Ouch. Then factor in that the Twitter traffic cost me 2.5 times as much per click through as the AdWords traffic. Double ouch. But that’s fine. You have do lots of experiments to find out what works. Most of them won’t be successful. This experiment only cost me £150.

However I was a bit puzzled by the ‘interests’ report from Twitter. Here are the top 10 ‘interests’ of the people that were shown my sponsored tweet, as reported by Twitter ads.

twitter demographicsBear in mind that I was targeting various Twitter handles related to the events and wedding industry for Twitter users in the UK, USA and Canada. According to the report:

  • 72% of them are interested in ‘Politics’.
  • 69% of them are interested in ‘Hip hop and rap’.
  • 62% of them are interested in  ‘NFL football’.
  • ‘Weddings’ is way down the list at number 55 with 15%, between ‘Leadership’ and ‘Dogs’.

Hmm, something is a bit fishy here.

I ran some more campaigns to promote my UK training course for people who want to create commercial software products. The ticket price for my course is higher than for my seating planner software, so I thought it was worth persevering a bit more with Twitter ads. Here are the top 10 ‘interests’ for the 3 campaigns I ran.

twitter demographics twitter demographics twitter demographicsBear in mind that this time, I was targeting various Twitter handles related to software development, marketing and entrepreneurship for Twitter users in the UK. We love our comedy in the UK and most of us could stand to lose a few pounds. But I can confidently state that the vast majority of people in the UK know almost nothing about NFL (American) football and care even less. ‘Computer programming’ and ‘Startups’ were waaay down all 3 lists.

Twitters says:

We infer interest from a variety of signals, like the accounts users follow and the Tweets they engage with.

I emailed them to point out that the interests seemed to be highly suspect, but I didn’t get a substantive reply.

I can only conclude that either Twitter isn’t doing a very good job of the targeting or (more likely) it really doesn’t understand the interests of its customers and is doing a very poor job at guessing. Consequently I would urge you to be very wary of paying for promoted tweets on the basis of ‘interests’.

The psychology of successful bootstrappers

the psychology of successful bootstrappersI am curious about how the people who bootstrap software businesses are different to the general population, and to each other. I investigated this using a standard (‘big 5’) personality test. I think the results make for interesting reading.

I asked a number of software company founders to complete an online personality test and send me their results. 18 of them did (19 including me). You have probably heard of some of them, however I promised anonymity. We are all founders of bootstrapped (i.e. not VC funded) software product companies and have been involved in programming a significant portion of our products. Most of us are solo founders. Some of us (including myself) are lifestyle programmers, others have employees. We are all successful to the extent that we make a living from our software product sales. None of us are billionaires (Bill Gates probably wouldn’t return my email).

The test measures personality across 5 major axes of personality identified by psychologists:

  • Extraversion (outgoing/energetic vs. solitary/reserved) – how much you derive satisfaction from interacting with other people.
  • Conscientiousness (efficient/organized vs. easy-going/careless) – how careful and orderly you are.
  • Neuroticism (sensitive/nervous vs. secure/confident) – how much you tend to experience negative emotions.
  • Agreeableness (friendly/compassionate vs. analytical/detached) – how much you like and try to please others.
  • Openness (inventive/curious vs. consistent/cautious) – how much you seek out new experiences.

See Wikipedia for more details.

For each personality axis I have created a histogram of the results, showing how many founders fit in each 10% ‘bin’ compared to the general population. For example, for extraversion: 0 bootstrappers were in the 1-10 percentile (i.e. least extrovert 10%) of the general population, 1 founder was in the 11-20 percentile, 2 were in the 21-30 percentile etc.

extraversionconscientiousnessneuroticsmagreeablenessopenness

Extraversion Conscientiousness Neuroticism Agreeableness Openness
average (mean) 59.9 61.7 37.6 48.3 50.3
standard deviation 23.0 21.9 23.1 21.1 23.2

If bootstrappers were like the general population we would expect each bar to be the same height, with a bit of random variation, and the average score to be 50. Clearly this is not the case.

We are more extrovert on average than the general population. Although programming is stereotypically a profession for introverts and quite a few of us work alone, you need to get yourself noticed and interact with customers and partners to be a successful bootstrapper.

We are more conscientious on average than the general population. Shipping a software product requires a lot of attention to detail.

We are less neurotic on average than the general population. You need a some self belief and a thick skin to weather the ups and downs of being a bootstrapper.

We are about average for agreeableness. However the scores are not evenly distributed. Only 1 scored above the 70 percentile. Perhaps being too ready to please, rather than following your own vision, is a handicap for bootstrappers.

We are about average for openness. But the scores are clumped around the centre. Initially I was a bit surprised by this result. I expected bootstrappers to be inventive/ideas people and to score well above average. But perhaps the people who score very highly on openness are easily distracted (squirrel!), and never get anything finished.

The 5 personality traits are supposed to be orthogonal (not correlated). Picking some random pairs of traits and drawing scatter plots, that does indeed appear to be the case. For example extraversion doesn’t appear to be correlated with conscientiousness:

extroversions vs conscientiousnessI am aware that this survey suffers from some shortcomings:

  • The test is fairly simplistic. It doesn’t begin to capture what unique and precious little snowflakes we all are. However I don’t think I would have any results at all if I asked people to complete a massive survey. We are busy people.
  • Any survey suffers from selection bias. I am more likely to know other founders who are extroverts (the introverts probably go to less conferences). It is also likely that the people who responded were more conscientious and agreeable than those that didn’t!
  • 19 is a small sample size.

Correlation doesn’t imply causation. So these results don’t prove that high levels of conscientiousness and extraversion and low levels of neuroticism make you proportionally more likely to succeed at bootstrapping a software company. But, given that personality is considered fairly stable over time, it seems unlikely that the success caused the personality traits. However both could be correlated to some underlying factor, e.g. these traits could conceivably make you more likely to try starting a software business, but no more likely to succeed. Or the correlations could conceivably be a statistical fluke. I leave it as an exercise for an interested reader to work out the exact level of statistical significance of these results. It would be interesting to compare these results with those who tried to bootstrap business, but failed. However such data might not be easy to come by.

Given what I know about the trials of starting your own software business I think an above average level of conscientiousness and extraversion and a low level of neuroticism are a real asset. However it is also clear that the personalities of individual founders vary a lot. So don’t be disheartened if you don’t fit this profile. There are successful bootstrappers who don’t fit the profile. Personality is not destiny. And you can always partner with or employ someone who has complementary personality traits. But if you are a slap-dash, neurotic, who doesn’t like talking to other people, perhaps bootstrapping a software company isn’t for you. A career in government funded IT projects might be more suitable.

I sent a draft of this post to Dr Sherry Walling for feedback. Sherry is particularly well qualified to comment as she is both an adjunct Professor of Psychology and married to well know bootstrapper/micropreneur Rob Walling. Her response (paraphrased a bit) was:

“Your standard deviations are quite large which indicates that there is quite a lot of variability in your data. You would much rather have standard deviations between 0-10 when working with this kind of scale.

From my perspective, the only domain where I would expect significant difference is Conscientiousness. Conscientiousness is an essential bootstrapper trait. I am not sure how a solo founder could be successful if he/she is not naturally conscientious.

There are so many ways to be a successful bootstrapper. A neurotic person can fuel his sensitivity to negative emotions into hard work. A less neurotic person may not have enough anxiety to get up early and get to work. On the other hand too much neuroticism can be very debilitating. I don’t think there is a formula. The combination of factors could vary tremendously with each person, but conscientiousness is the one that seems essential.”

If you want to do your own analysis, the anonymised results are available to download as a CSV file here.

Many thanks to everyone who took part in the test.

You can do the test yourself. You don’t have to give your email address or answer the additional questions at the end. How do you compare?

Coding my way around 100 countries

Running a software company from a laptop while travelling the world sounds like a dream lifestyle. But what is it really like? Steve McLeod was kind enough to share his experiences as a nomadic software entrepreneur.

Running a one-person software company while travelling doesn’t work. And yet I’ve been doing it for years. I’m writing this in Patagonia, in a hotel lobby. There’s pop music playing too loud to fully concentrate. The Internet connection is sketchy; in fact I’m writing this now because the Internet is unavailable again. The chair is not good for my posture. The table is too high for comfortable typing. My productivity is abysmal.

I’m partway through adding a new feature to my software, and doing it in this environment is unproductive. There is a big glacier an hour’s drive from here that I’d rather be viewing. I know that tomorrow or the next day, when I see the glacier, I’ll come back to the hotel too exhausted to code or to deal with customer support.

What does this mean for my business? Low productivity and poorer-than-intended customer support response times, which lead to lower sales. My alternative to spending a decent part of each year travelling would be to stay in my home city, working better, selling more software and earning more money.

Here are some real problems I’ve faced working on the road:

  • In Ukraine my MacBook Pro’s screen stopped working. I didn’t intend to return home for another week. I had to choose between returning home earlier; trying to get the computer serviced promptly in a foreign country; supporting customers for my Mac software for the next week on Windows computer in Internet cafes; or buying a new computer and trying to get all my development tools on it.
  • In Turkey, YouTube was blocked. Which was mostly a good thing for productivity, but as my video demo was hosted on YouTube at the time, I couldn’t monitor it.
  • In Syria, Facebook was blocked. Okay, that was incontrovertibly good.
  • In Turkmenistan there was no Internet in my hotel. Or any hotel, just about, except on age-old computers in one hotel’s inaccurately-named “business centre”. No WiFi in cafes. For a few days my company was getting no attention.
  • Travelling in a shared taxi for hour after hour between obscure locations in Iraq (true story!) left me utterly spent. All I wanted to do after getting into a hotel is to relax. But that customer support backlog is nagging, nagging, nagging at me.
  • Skype is blocked in Qatar and in some other countries. This really ruins the conference call you had planned.
  • In Lebanon I needed to update my product with a critical fix. The Internet at the time in Beirut was so bad, it would take an hour to upload my 20 MB software. An hour! During which time I’m hoping not to get a network disruption, from one of Beirut’s daily 3-hour power outages. My 2-minute scripted solution for building and uploading updates, followed by a 5-minute smoke test turned into a 2-hour task, during which time I need to keep ordering coffees so as to keep the staff happy in the cafe supplying me with WiFi.
  • Coding while sipping a cocktail in a beach-side bar in the Caribbean is difficult. The brilliant midday sun makes the laptop screen hard to read. Actually that doesn’t sound too bad at all.

A very real risk includes getting my computer stolen, which, by some miracle, has not happened yet.

How do I make this running-a-one-person-company-while-travelling thing work? Here’s some things I do:

  • I keep everything in multiple online places. I use DropBox for documents and code. I use GitHub too. Without excuse, everything needs to be recoverable without drama if the computer breaks or gets stolen.
  • I set aside frequent rest periods where I can get through a backlog of harder customer support issues and work on new features or bug-fixes. It is actually nice sometimes to not climb Andean glaciers nor to see orang-utans in Borneo, and instead to do something prosaic like working for a day or two.
  • I try to be disciplined in keeping my customer support inbox empty. When I arrive at a new hotel after a long, dusty trip, before rewarding myself with an ice-cold beer, I’ll force myself to tackle the inbox.
  • In recent months I’ve been outsourcing customer support. I pay my support representative a monthly fee in return for which she deals with what she can handle herself each day. This helps so much.
  • I aim to spend my months in my home city in high-intensity bouts of feature-adding, taking advantage of having a good work environment.
  • I produce desktop software. Not SaaS, which would be terrible to support and monitor in these environments.
  • Moving source control from Subversion (which needs an Internet connection to be usable) to Git has helped a lot.
  • I concentrate on keeping my software as solid as I can, and the user experience as smooth as possible. These two things help reduce the customer support load.
  • I try to keep things in perspective. Yes, getting my computer stolen would be a minor catastrophe. Yes, a sketchy Internet connection is annoying. Yes, some customers might get irritated at the occasionally slow support. But here’s the other side: Three years ago the city I grew up in was destroyed by two earthquakes, killing hundreds and destroying a significant amount of the city. A year before that I suffered a terrible personal tragedy. Do other things matter so much that I should sit at home to keep customers as satisfied as possible?

Although my lifestyle might seem enviable, it can be lonely at times. You don’t realise how nice it is to be able to regularly catch up with the same friends for dinner or a drink until you can’t do this for long periods. Luckily, I often manage to find someone I know well to join me for part of each trip. Here in Patagonia and beyond, my girlfriend is travelling with me for two months or so. I’d not be travelling for so long anymore without companionship.

On the other hand, my one-person software company has enabled me to reach a goal I’ve long had: to travel to more than 100 different countries. I earn a decent income from my work and thousands of customers love my software. And that is enough for me.

Photos copyright Steve McLeod.

Steve McLeod runs Barbary Software, a one-person software company. Barbary Software’s main product is Poker Copilot, hand history analysis software for online poker players on Mac OS X.

Further reading:

Adwords vs Twitter vs LinkedIn ads, a small experiment

I am running a course for people who want to create their own commercial software products. Promoting the course has been a challenge. How do you reach a programmer, sitting in his cubicle, dreaming about making a living from selling his own software? In particular, how do you reach ones who might pay to attend a weekend  course in the UK in March? Most of the attendees of the last course came via this blog. But I also want to try to reach people who have never heard of this blog. So I have been experimenting with paid ads via Twitter, LinkedIn and Adwords. Crucially, all 3 of them allow me to restrict my advertising to people in the UK. I thought the initial results were interesting, so I am sharing them here.

Adwords

Google Adwords allows you to show your ads alongside organic (non-paid) search results when people type relevant phrases. But it is hard to think of phrases my target audience (and only my target audience) might be searching on. Terms such as “software marketing” and “software sales” are too vague. In the end I came up with about 200 phrases, including  “sell my software”, “software startup”, “start a software company”, “name software product” and “sell software online”.

One of my Adwords ads (I tested several).

One of my Adwords ads.

But there just aren’t a lot of searches on these phrases. Bidding between £0.25 and £1 per click (depending on relevance) for UK searches over the last 47 days I have managed a meagre:

  • Impressions: 1.7k
  • Clicks: 20
  • CTR: 1.13%
  • CPC: £0.31

Looking at the Dimensions>Search terms report to see the phrases typed by the people who clicked, the clicks seem fairly well targeted. And my impression share is >25% for the majority of the adgroups, so I don’t think increasing my bids is going to make a big difference to the amount of traffic. Adwords just doesn’t work that well unless there are unambiguous phrases your potential customers are actively searching on. I haven’t tried display (content) ads, as these have never worked well for me in the past.

LinkedIn

I also tried running LinkedIn ads targeted at people who are based in the UK and list programming skills such as “Programming”, “SaaS”, “Subversion”, “Git”, and “C++”. The minimum bid per click is $2.00 (ouch), so I bid $2.05 per click.

linkedin-ad

One of my linkedIn ads.

The result over 12 days have been:

  • Impressions: 133k
  • Clicks: 54
  • CTR: 0.04%
  • CPC: $2.00
  • Leads: 2

That is a good number of impressions, but a horrible CTR. Looking at the breakdown of clicks by industry and job function in the reporting, the clicks seem fairly well targeted. A ‘lead’ is where someone expresses an interest and LinkedIn allows you to send them a message. But you don’t get their email address and it appears you can only message them through LinkedIn once.

Twitter

I paid to put a sponsored tweet in the timeline of Twitter users in the UK, based on who they follow. I picked the Twitter handles of 4 other people who blog about bootstrapping.  Note that Twitter claims they won’t show ads to all the followers of these Twitter handles, but to people who are interested in similar things to the people who follow those Twitter handles. That seems a rather hair-splitting distinction, but I guess it allows them to claim they aren’t exploiting the popularity of their customers directly. I bid a maximum of £0.75 per ‘engagement’ (click, retweet or follow). I didn’t include an image with the tweet as I couldn’t really think of anything relevant at the time (a classroom?). The text of the sponsored tweet was:

Sell your own software. Be your own boss! 2 day course, 22/23 March, Wiltshire, England. Full details at: https://successfulsoftware.net/software-business-training-course/

The result of this 1 sponsored tweet over 2 days has been:

  • Impressions: 5.8k
  • Clicks: 174
  • CTR: 3%
  • CPC: £0.29
  • Favorites: 7
  • Retweets: 2
  • Follows: 1

Given the small number of favorites, retweets and follows, it is hard to know how well targeted this was. I guess a 3% CTR implies it was fairly targeted. The fact that the CPC was a lot less than my maximum bid may be down to Twitter ads being a relatively new medium, without too much competition (yet).

The reports have left me confused. Twitter report 3,112 impressions and 106 clicks for followers of my own Twitter handle @successfulsw.

twitter-reportingBut:

  • I didn’t tick the Also target your followers check box, as it seems idiotic to be paying for tweeting to people that I can tweet to for free.
  • I don’t have 3k Twitter followers.
  • I direct messaged a few of my Twitter followers based in the UK and they said they hadn’t seen a sponsored tweet from me.

This was the response when I queried Twitter support:

Thanks for the information. We have investigated this issue and we can see that your handle is in your @handle section of your campaign, this is because implicit targeting was enabled (targeted followers with similar interest as your followers), that is why your handle is showing there. We have confirmed you have a nullcasted Tweet and this Tweet is not showing to your followers. We realize this may be confusing and we’ll work with our product team to improve how this looks on the user interface.

The reporting of the interests of the people that engaged doesn’t make sense either. It says that of the 5.8k impressions, 4.7k were to people interested in “Hip hop and rap” and 4.5k to people interested in “NFL football”. We don’t even play NFL football in the UK!

twitter reporting interestsThis was the response when I queried Twitter support:

I understand it’s confusing, and I’ll share this feedback with my team. What you’re seeing is a cumulative total of paid/earned/organic engagements. This total also considers secondary account signals eg a users prime interest is photography, and a secondary interest in baseball. I can assure you that you paid for primary interests only, and organic/earned and secondary engagements were not charged for.

I am still none the wiser about the “NFL football” result. It does make me wonder how accurate their ‘targeting by interest’ option is.

Conclusion

This is obviously only a very small experiment and it is hard to judge exactly what the quality of the traffic was like (I was sending traffic to a wordpress.com page and I am not able to measure detailed analytics, such as bounce rates or time on page). But I even these limited results are still illuminating.

I like Adwords, particularly the fact that it shows your ad to people at the point they are searching for a solution to their problem. It has worked pretty well for my table planner app over the last 9 years, despite bid price inflation. But Adwords is only effective when there are well defined phrases with reasonable search volumes you can target. That doesn’t seem to be the case for my course.

LinkedIn is a good way to target people according to their skills or job function. There are lots of different targeting options and the traffic volume was better than Adwords. But the clicks are very expensive. Given an industry standard 1% conversion rate I can afford to pay $2 per click to promote a £600 course. But forget it if you are selling less expensive products.

Twitter ads seem quite promising. There are lots of targeting options and you can get a lot of traffic quickly for a relatively low price per click [but see update, below]. I could have got a lot more clicks by targeting more Twitter handles and/or increasing my bid. But its not something you can leave running continuously like Adwords or LinkedIn. You have to keep sending new sponsored tweets. Also the reporting is confusing and of dubious veracity. Finally it feels slightly grubby to be targeting the followers of your peers and/or competitors so directly. But I think it shows promise. If you are going to try it, I recommend you do so soon. The law of shitty clickthroughs means that it is sure to be a lot less cost effective in a few years time.

**** Update ****

I noticed that the clickthroughs to the URL in my sponsored Twitter post was only about a third of the clicks reported by Twitter. When I asked Twitter about this they replied:

Twitter Ads measures engagements which we define as “clicks” within the Promoted Tweet Dashboard are defined as follows: clicks on the URL, hashtag, Tweet copy, avatar and username, or the expand button. It’s likely that the other analytics you are seeing are tracking link clicks.

So I am paying for someone to just click the Tweet copy (text)! The cost for a clickthough to my site is actually around 3 times the CPC reported by Twitter. That makes it around £1 per clickthrough, which is much less attractive.

Lifestyle Programming

“A man is a success if he gets up in the morning and gets to bed at night, and in between he does what he wants to do.” ― Bob Dylan

I am a lifestyle programmer. I run a one-man software product business with the aim of providing myself with an interesting, rewarding, flexible and well paid job. I have no investors and no plans to take on employees, let alone become the next Google or Facebook. I don’t have my own jet and my face is unlikely to appear on the cover of Newsweek any time soon. I am ok with that.

“Lifestyle business” is often used as something of an insult by venture capitalists. They are looking for the “next big thing” that is going to return 10x or 100x their investment. They don’t care if the majority of their investments flame out spectacularly and messily, as long as a few make it really big. By investing in lots of high-risk start-ups they are able to reduce their overall risk to a comfortable level. The risk profile is completely different for the founders they invest in. As VC Paul Graham admits:

“There is probably at most one company in each [YCombinator] batch that will have a significant effect on our returns, and the rest are just a cost of doing business.”

Ouch. The odds of being the ‘next big thing’ are even slimmer (of the order of 0.07%). As a VC-backed start-up the chances are that you will work 80+ hours a week for peanuts for several years and end up with little more than experience at the end of it.

But high-risk, high-return ventures are sexy. They sell magazines and advertising space. Who can resist the heroic story of odd-couple Woz and Jobs creating the most valuable company in the world from their garage? So that is what the media gives us, and plenty of it. Quietly ignoring the thousands of other smart and driven people who swung for the fences and failed. Or perhaps succeeded, only to be pushed out by investors.

If you aren’t going to be satisfied with anything less than being a multi-millionaire living in a hollowed out volcano, then an all-or-nothing, VC-backed start-up crap shoot is probably your only option. And there are markets where you have very little chance of success without venture capital. But really, how much money do you need? Is money going to make you happy? How many meals can you eat in a day? How many cars can you drive? It doesn’t sound that great to me when you read accounts of what it is like to be rich. Plenty of studies have shown that happiness is only weakly correlated with wealth once you can afford the necessities of life (food, shelter, clothing). Hedonistic adaption ensures that no amount of luxury can keep us happy for long. Anyway, if you are reading this in English on a computer, you probably are already rich by global standards.

Creating a small software business that provides a good living for just yourself, or perhaps a few people, isn’t very newsworthy. But it is a lot more achievable. The barriers to entry have fallen. You no longer need thousands of dollars of hardware and software to start a software business. Just an idea, good development skills and plenty of time and willpower. Many lifestyle businesses start off with the founder creating the product over evenings and weekends, while doing a full-time job. I cut my expenses and lived off savings until my business started generating enough income for me to live on (about 6 months). I only spent a couple of thousand pounds of my own money before the business became profitable. There is really no need to max out your credit cards or take any big financial risks.

So how much money do lifestyle businesses make? Of course, it varies a lot. Many fail completely, often due to a lack of marketing. But I know quite a few other lifestyle programmers who have made it a successful full-time career. I believe many of them do very nicely financially. Personally, I have averaged a significantly higher income from selling my own software than I ever did from working for other people, and I made a good wage working as a senior software engineer. Here is a comparison of my income from my last full-time salaried employment vs what I have paid out in salary and dividends from my business over the last 7 years.

lifestyle business incomeBear in mind that the above would look even more favourable if it took into account business assets, the value of the business itself and the tax advantages of running a business vs earning a salary.

Sure, I could hire employees and leverage their efforts to potentially make more money. Creating jobs for other people is a worthy thing to do. Companies like FogCreek and 37Signals have been very successful without taking outside investment. But I value my lifestyle more than I value the benefits of having a bigger business and I struggle to think of what I would do with lots more money. I might end up having to talk to financial advisers (the horror). I would also end up managing other people, while they did all the stuff I like doing. I am much better at product development, marketing and support than I am being a manager.

If you can make enough money to pay the bills, being a lifestyle programmer is a great life. I can’t get fired. I make money while I sleep. I choose where to live. I don’t have to worry about making payroll for anyone other than myself. My commute is about 10 meters (to the end of the garden). I get to see my son every day before he goes to school and when he comes back home. I go to no meetings. I have no real deadlines. No-one can tell me where to put my curly braces or force me to push out crappy software just to meet some arbitrary ship date. When I’m not feeling very productive I go for a run or do some chores. I can’t remember the last time I set an alarm clock or wore a tie.

My little business isn’t going to fundamentally change the world in the way that a big company like Google or Facebook has. But it has bought me a lot of happiness and fulfilment and, judging by the emails I get, improved the life of a lot of my customers as well. And some of those really famous events you hear about in the news (which I don’t have permission to name-drop) plan their seating using PerfectTablePlan.

Of course, it isn’t all milk and money. The first year was very hard work for uncertain rewards. I recently happened across this post I made on a forum back in August 2005, a few months after I went full-time:

“I work a 60-70 hour week and pay myself £100 at the end of it (that’s less than $200). I could make 3x more working for minimum wage flipping burgers. But hopefully it won’t be like this forever…”

I still work hard. I’m not lying under a palm tree while someone else “offshore” does all the work. And I don’t get to spend all day programming. If you want to have any real chance of succeeding you need to spend plenty of time on marketing. Thankfully I have found I actually enjoy the challenge of marketing. But, because I don’t have employees, I have to do some of some of the crappy jobs that I wouldn’t choose to do otherwise, including: writing documentation, chasing invoices, tweaking the website and doing admin. And I answer customer support emails 364 days a year. I take my laptop on holiday, but it really isn’t that bad. Customer support is frustrating at times. But it is very rewarding to know that lots of people are using my software. Overall, it’s a great lifestyle. I don’t miss having a 9-5 job. I wouldn’t even swap my job for running a bigger, ‘more successful’ company.

3 practical tips for finding software product ideas

software product ideasToo many software products fail because no-one bothered to do basic market research. This is a guest post from Edmundo López B. with some useful advice on finding a viable market niche before you start creating your product.

The process of building software for a niche market is more or less well documented online. The basic workflow I found is (for example here or here):

  • choose some niche (with potential)
  • find out the problems that you can solve in that niche
  • create a product to solve the problem
  • sell it
  • enjoy life :-)

Here are three things you can look for when asking people about their problems.

Ask for the painful tasks that they do, not for the problem you can help with

The people I first talked to were persons that I already knew, so my pitch for them was: “Hello. As you know I’m a software engineer. I’m looking for problems to solve. I want to build software and sell it. And, if I solve a real problem, I’m sure people will pay for it. I was wondering if there is some problem in your business where you need some help. I could create some software, solve your problem and then sell it. I can help you with your problem and you will help me to find my problem.”

The first response was always positive however, everybody I talked to started to look at a problem they thought could be solved by a computer. The problem with that is that people’s vision of computers is very limited. First, some people limit the software I can build to desktop applications or some platform they know well. Second, they try to find problems to give you, and not the problems they really have. For example: one of my interviewees said to me that she needed some kind of tracking system for the expenses of her very small business (a small farm producing eggs). I told her: “Wow, that sounds like a problem I could solve, how are you solving that problem right now?.” She told me: “I’m not, I’m busy bootstrapping the whole business right now. But later I’d certainly like to have something for that.” Of course, if she is not solving that right now, then that is not a real problem. She sort of made that problem up to give an answer to my question.

People have real problems but sometimes they don’t even know they could tackle that problem with a computer. So, the lesson here is that you have to get them to tell you their real problems. Even the ones they don’t think that could be solved by a computer. You are the computer expert, not the people you interview, so you need to find out the real problem out there. Also it doesn’t have to be a problem from the future, it has to be an actual problem now. The question that I found works best is the following: Tell me about your day and what activities are the most tedious and boring to do, but do not add much value to your business. (I’m not the first to come up with this question, but I don’t remember the source, sorry.)

Look for their existing solution and ask what is wrong with it (the Excel spreadsheet)

From the people I interviewed, 2 of them had an Excel spreadsheet that solved their problem in a way that was not the best, but did the job. The third one had plans to solve her problem with an Excel spreadsheet in the future. Joel Spolsky talks about how Excel and other horizontal software are nothing more than glorified data structures. It is true, you can do almost anything involving simple mathematics and tables of data within Excel. Keeping track of costs, sales, etc. are a perfect match for it.

The common engineer will say: “If there is already a solution for that, why roll my own?” The entrepreneur will just ask what isn’t possible with the existing solution and think of ways of improving that. The existence of the Excel spreadsheet is a clear sign that there is a computing problem that can be solved in a better way. I can give you an example. Two of the persons I interviewed showed me their Excel spreadsheets (an architect and an event manager). A common problem was being able to slightly change some prices in a budget and immediately be able to show the old and the new price to the client.  This kind of information is gold to the person creating an application. This is something they use, and if you can save them time using it, you can add value to their businesses.

If there is no Excel spreadsheet, I just try to find software on the net that does what they need. If there is something really good on the market, I don’t want to compete with them. If you are wondering why didn’t I let them do the search, the answer is simple: they do the search using the traditional channels, colleagues and networks of peers; I focus on the Google search. I’m a developer, I can Google for software in a much better way than they do. It took me an hour to do a research on software for architects. Then you can explain to them the pros and cons of the solutions, help them to sign up for a free trial and tell them if their set-up is supported. The golden rule is to be really helpful. It is true that you might end up finding a customer for someone else. But if there is not a good solution, you are finding a niche for yourself.

Do some simple mathematics to see if the problem is worth solving

My last tip is about the financial aspect. Let us say that you finally found a problem that you can solve. It is painful and there is no solution in the market that can solve it in the way people in that niche want. The question to ask now is: “What are people willing to pay for something like this?” I cannot give you an exact answer but I can tell you that it depends on the value you add to your client’s business.

What you want to know is:

  • How much time does it take monthly to do the task you are solving?
  • How much money could be earned in the same amount of time?
  • How much faster would it be to do the same task with your solution?

The basic idea is to convert saved time to saved dollars. Of course, if your solution saves dollars monthly, it becomes an investment for the business. My limited experience showed me that saving people money and pain gets them really excited.

I can give you an example from my interview with the architect. Once again, the problem was something he was solving with an Excel spreadsheet. I asked him how much time did it take and he told me at least three days. Three days of architect’s time means a lot of money. So, if you can help him solve the problem in one day, you are not only saving his money but avoiding pain (because the problem was painful to solve, but  it needed to be done).

Conclusion

Now it’s up to you. Try to put these in practice, and find a niche to build your first product. Please share your thoughts and remarks in the comments.

Edmundo López B. is a PhD student in computer science at the University of Geneva and an entrepreneur in the making. He loves building things, learning new stuff, and  playing classical guitar. He decided to make the jump directly from school to entrepreneurship. He blogs at edmundo.lopezbobeda.net.

Is desktop software dead?

desktop vs webIt’s rare that I chat to other software developers without someone asking me when I am going to do a web version of my seating planner software. Because the market for desktop is dead, right? SAAS apps is where all the action is!

I think the web is a great platform for some products, not so much for others. Let’s look at the advantages of web apps over desktop apps.

Web advantage 1: No installation

You can access a web app from any device that has a browser. No need to install. There is no doubt this is a major convenience. However most desktop utilities can be downloaded and installed in 1-2 minutes with a decent broadband connection. Also you don’t have to keep logging in to most desktop apps, once they are installed.

Web advantage 2: No upgrades

End-users are always using the latest version. This is definitely an advantage for technical support. But it does take away some choice from the user. Perhaps they weren’t ready to upgrade or preferred the old version?

Web advantage 3: Better user insights

You can analyse how users are using your software. This allows you to improve usability and send out tailored lifecycle emails. It is possible to gather similar information for desktop software, but it involves a lot of extra work.

Web advantage 4: Distributed architecture

If you are writing web apps, you get a distributed architecture for free. No need to do socket programming.

Web advantage 5: Less piracy

Cracks and keygens are a fact of life for desktop software vendors. It is easier to protect against piracy with a web app.

Web advantage 6: Cross platform

In theory web apps are cross-platform. Write them once and they can run on any device with a browser. But browser compatibility issues mean it isn’t that easy in practice, especially if you are still forced to support the dreaded IE6. Also there are solutions (such as Qt) that allow you to deploy to multiple desktop devices from a single code base.

Web advantage 7: Subscriptions

Web apps lend themselves to subscription based payment. This is great because you get a more predictable monthly income and potentially get more money from each customer over the lifetime of the product.

So what about the advantages of desktop apps over web apps?

Desktop advantage 1: Responsiveness

Native apps are more responsive than web apps, partly due to lower level access to the machine and partly due to not having to talk to a remote server. However this advantage is eroding as bandwidth and JavaScript performance improves and more work is carried out by the client in web apps (e.g. using Ajax).

Desktop advantage 2: Reduced hosting costs

The costs of hosting a website for a desktop app is minimal. Typically you just need to serve a few pages and a download file to each visitor. They then won’t need to come back until there is an upgrade. But hosting costs can be significant for a web app, particularly if the app requires large amounts of bandwidth or compute power.

Desktop advantage 3: Better access to hardware

Desktop apps can make better use of the hardware available. For example, you can generally do printing a lot better from a desktop app.

Desktop advantage 4: Better development tools

The old joke is that JavaScript is to Java as the Taj Mahal curry restaurant is to the Taj Mahal. As a C++ developer I am used to working with a fully fledged IDE, debugger, profiler, static analyser and runtime coverage analyser. I tried some JavaScript development recently. Ugh. The development tools seemed very primitive and  JavaScript is a language so hideous that surely even it’s mother couldn’t love it. No classes, no strong typing, no templates and broken scoping. However frameworks such as jQuery have made JavaScript much more accessible over recent years.

Desktop advantage 5: Psychological

Many people feel that anything web-based should be free. Psychologically customers seem more ready to pay for desktop software. Perhaps they feel a greater sense of ownership. This perception is gradually changing for B2B, but I think it is still prevalent for B2C.

Desktop advantage 6: Privacy

Many customers don’t feel confident storing important and confidential information on third-party servers.

Desktop advantage 7: Availability

You can’t use a web app unless the server is up and you have an Internet connection. A desktop app installed on your local machine is always available. You can continue to use it, even if the vendor goes out of business.

Desktop advantage 8: Up-front payment

Desktop apps lend themselves to a single, up-front payment. This is great because you get all the money straight away, improving your cash flow.

So I have come up with similar number of advantages for web apps and for desktop apps. Which is better? It depends, of course. For my particular application, I think a desktop app still has significant advantages:

  • My software can render and zoom in and out of large floor plans better than my web based competitors.
  • I use a genetic algorithm to assign guests to seats. It makes more sense to use under-utilised desktop CPUs for this, rather than me having to pay for a beefy compute server. The thought of writing a genetic algorithm in JavaScript is too awful to contemplate (although Atwood’s law dictates that someone will, if they haven’t already).
  • I can do printing better than my web-based competitors.
  • Most of my web-based competitors seem very feature-poor. I am sure that is at least partly due to poor tooling for web development compared to desktop development.
  • Most of my web-based competitors give their product away for free in the hope of making some money back on ads. I charge for mine.
  • Seating plans can contain sensitive information, particularly for events with celebrities, royalty and heads of state. Some of my customers don’t want this information transmitted to and stored on third-party servers.
  • If my server goes down then I lose sales. But my customers can continue to use my software. Imagine if they were dependent on my server and it went down (or I went out of business) the day before their big event. It brings me out in a cold sweat to think about it.

But other products are a better fit for the web. If I was writing a collaborative CRUD app, I would almost certainly do it as a web app. I have recently been working on a couple of new products. One is a web app and the other is a desktop app. Horses for courses.

A lot of the money I have spent on software over the last few years has been for desktop software. When I had to choose bookkeeping software, I chose a desktop package because I didn’t want to:

  • pay every month
  • store sensitive financial information on a third-party server
  • risk losing all my data if the vendor went out of business

If I look through the list of useful tools and services on this site I see that 51 of them are web-based and 35 are desktop based. Peldi of Balsamiq reported in 2009 that 77% of their revenue comes from the desktop versions of their software. I asked him if that had changed much and he was kind enough to send me the following graph (myBalsamiq is the web version). You can see that it is still nearly 70% 4 years later.

desktop vs web

The line between desktop and web apps is also becoming more blurred. Many desktop apps now use web protocols and embed web browsers. For example, the Qt toolkit allows you to easily create applications that are hybrids of desktop and web. It is also possible to sell a web app that companies host on their own servers. This adds some of the advantages and disadvantages of a desktop app compared to a web app installed on the vendor’s server (SAAS). Perhaps desktop and web apps will converge to the point where there the whole desktop vs web debate becomes meaningless.

So I think reports of the death of desktop software have been greatly exaggerated. There is no doubt that long-term trends ( e.g. increasing bandwidth and attitude to paying for web apps, for B2B at least) have been changing the balance in favour of web apps for some types of product. Particular those where collaboration is more important than graphics or computer power. But I think there will continue to be plenty of markets where a desktop app is a better choice than a web app for the foreseeable future. In the final analysis, customers care a lot more about how well your software solves their problem, than how it happens to be deployed (if they even understand the difference).