Fixing Qt 4 for Mac OS X 10.9

Mac OS X 10.9 (Mavericks) was released yesterday. And those nice people at Apple made it free, so you can be sure lots of people are downloading it. However Qt 4 apps look at bit strange on the new OS. Look at the text alignment in these buttons:

buttons1The text isn’t centre aligned. It doesn’t look like much of an issue out of context. But it looks wrong when you look at a whole UI. The good news is that there is a simple fix:

#ifdef Q_OS_MACX
    if ( QSysInfo::MacintoshVersion > QSysInfo::MV_10_8 )
    {
        // fix Mac OS X 10.9 (mavericks) font issue
        // https://bugreports.qt-project.org/browse/QTBUG-32789
        QFont::insertSubstitution(".Lucida Grande UI", "Lucida Grande");
    }
#endif

You need to place this code in your main() before creating your QApplication. For more details see this bug report.

With the fix the buttons look like this:

buttons2Much better! There are some console warnings:

CoreText performance note: Client called CTFontCreateWithName() using
name "Lucida Grande" and got font with PostScript name "LucidaGrande". 
For best performance, only use PostScript names when calling this API.

I am not sure how how significant these are.

I have also found that updating to Qt 4.8.5 fixes a printing crash bug in my table plan software. This crash happened when rotated pixmaps were printed from Mac OS X 10.8.

I have seen on forums that Qt 5 is completely broken on 10.9. But I don’t know if that is true.

Marketing = Hacking the Human

hacking the humanFew people who run software businesses believe the adage “If you build it, they will come” (which is a misquote anyway). In addition to doing a great job programming and supporting your product, you also need to:

  • make sure that you are creating something people will actually pay for
  • find ways to promote your product cost effectively
  • communicate effectively what your product does
  • choose the optimal price

All of which is commonly known as ‘marketing’. If you don’t get these things at least mostly right, your chances of creating a commercially successful product are slim to nothing. This might sound trivial compared to the complexities of writing tens of thousands of lines of robust, efficient code. But things have a habit of looking easy, until you try to actually do them. How do you know someone will actually buy your product before you create it (as Steve Jobs famously said “People don’t know what they want until you show it to them”)? How can you promote your product so that it gets noticed by the right people at the right time at a price you can afford, when there are so many other businesses competing for the attention of the same people? How do you communicate to a potential customer that your can solve their problem in the few seconds you have before they click the ‘back’ button? How do you decide the optimal price when there are so many factors to take into account, including: ‘price as signal’, anchoring, segmentation and competitor pricing? These aren’t trivial problems.

I think many developers look down on marketing as a job for people who are not clever enough to be developers. In truth marketing is difficult to do well. Humans are much more complex than microprocessors or programming languages.  They don’t even make decisions on a rational basis much of the time (see the excellent Predictably Irrational for more on this). Given that we often don’t understand ourselves, how can we expect to understand groups of strangers? Marketing also has a (not entirely undeserved) reputation for manipulation and deceit. But it doesn’t have to be like that. Good marketing is about understanding your customer and communicating effectively with them. Manipulating and tricking people rarely works in the long-term anyway.

You can hire marketing people. But how are you going to know if they are doing a good job if you haven’t tried it yourself? Given that marketing is a useful skill to have, how do you get good at it? The key is to learn to like it. It is easier to be good at something if you like doing it. The trick for me was to re-frame marketing as just another form of hacking, but this time hacking the human rather than the computer. How can I use the tools available to get the maximum number of sales from a finite amount of money and effort? Will I get better results if I try this audience/channel/wording/image? Once I looked on it that way, it became an interesting challenge.

The good news is the average developer has a real advantage over traditional ‘touchy feely’ marketing people in increasingly technical/numerate areas of online marketing, such as pay-per-click, A/B testing and analytics. Make the most of it. Also, you can take a scientific approach: form a hypothesis (Facebook ads will give a positive return on my time and money), run the experiment (puts some ads on Facebook) and measure the results (how much did each sale cost).

There is an old joke. Two men are taking photographs of a lion, when the lion starts heading straight towards them. One of the men drops his camera and starts running. “You’ll never run faster than than the lion” says the other man. “I don’t have to” he says “I just have to run faster than you”. Similarly, you don’t have to be a marketing genius. You just need to be a bit better than your competitors, many of whom are developers who don’t like marketing.

Boostrapped.fm podcast

I was a guest on episode 21 of Bootstrapped.fm, the podcast of Andrey Butov and Ian Landsman. The discussion was very wide-ranging, touching on SAAS vs web, the Qt development environment, the royal wedding, A/B testing, capoeira, Adwords, the history of shareware, my new training course and lots more besides. I really enjoyed it. Boostrapped.fm also has a thriving discussion forum at discuss.bootstrapped.fm.

80 useful tools and services for software businesses

tools and servicesSome of the most useful nuggets of information I come across in blogs and podcasts are mentions of tools and services used by other people to better run their software businesses. So I have put together my own list of useful tools and services to run a software business.

Feel free to recommend your own favourites in the comments below. Please include your relationship to the tool/service (e.g. customer, user, employee or owner). You can also comment below about your experiences (positive or negative) with any of the tools and services listed. Anonymous comments will be treated with suspicion and may be deleted

My new ‘Start your own software business’ training course

Things have been a little quiet on this blog as I have been busy on some new projects as well as continuing to work on PerfectTablePlan. I am announcing one of those new projects today.

Start your own software business

A two day intensive training course on how to create a profitable business selling your own software product

22/23 November 2013

Swindon, England

There is a lot more to running a software business than knowing how to program. The last 8 years of running my own software business have been a huge learning experience for me. In this course I am going share as much as I can to help others succeed with their businesses. This is the course I wish had been available when I started out. I am looking forward to getting out from behind my computer and meeting aspiring software entrepreneurs.

There is a £50 discount if you book before the end of September and the course is limited to just 10 attendees. If you have ever dreamed of escaping your cubicle and becoming your own boss, what are you waiting for?

Click this link for more details

I am just beginning to publicise the course and I would really appreciate a mention on Twitter, Facebook, LinkedIn, blogs, social news sites etc.

Blog Blazers interview from 2008

Stephane Grenier is publishing an interview a week from his 2008 book Blog Blazers on followsteph.com. This week he published my interview from the book. It was interesting to re-read it 5 years on. I never did quite reproduce the success of my early software award scam post, but I am still posting – albeit not very frequently.

Swisscom Pocket Connect #FAIL

This rant is for the benefit of anyone thinking about hiring a Swisscom Pocket Connect device for WiFi access in Switzerland. Regular readers can probably skip this post. Summary: good idea spoiled by lousy service. I’m just jotting a few notes down here to vent some spleen and to warn anyone else thinking of signing up for Swisscom Pocket Connect (hopefully it will get on the first page of the search results for relevant terms).

I recently went on a family holiday, touring Switzerland by train. I needed to be able to check my emails every day (preferably several times per day). I have a mobile data contract in the UK, but roaming data costs in Europe are prohibitive, and I didn’t want to depend on the vagaries of free hotel WiFi. So I paid to rent a mobile access dongle from Swisscom for the duration of the trip. It sounded great on paper. You pay a fixed fee in advance, pick up the pre-configured dongle from an airport or train station on arrival and then put it in the post when you leave. I could check my emails as often as I wanted. Even on the train. Perfect! In reality it was a shambles.

I paid swisspasses.com for 13 days of use. They emailed me a voucher which I printed. I presented the voucher a Geneva train station ticket office. The staff member passed me on to a colleague, who looked a little irritated. Not a good start. It took her some 30 minutes to issue the dongle and she said it was the first one she had done. She assured me that it was for 13 days.

I turned on the dongle and accessed my email. It worked, but Swisscom had sent me an email saying the dongle was activated for 6 days. Damn. Also I was able to access the dongle without the printed WiFi password. So my communications with the dongle were completely unencrypted. Pressing the WPS button made no difference. Double damn.

I went to the Swisscom shop in Geneva, thinking they might be a bit more clued up. After waiting an eternity to be served, they phoned someone at Swisscom and assured me it was activated for 13 days. When I told them about the lack of encryption they said they weren’t involved in pocket connect and that I should call the non-free support number (an expensive proposition with roaming fees). I asked them to call it for me. They refused.

I emailed Swisscom technical support to explain the WPS problem. They (eventually) emailed me to tell me to return it for a replacement. I emailed them to tell them what I thought of their service so far. They didn’t bother to reply.

I used Google to find the instruction manual and worked out that holding the power and WPS button for 3 seconds did a factory reset. I now had encryption, no thanks to Swisscom. Things were looking up.

On day 6 the dongle bricked. I wasn’t sure if it was broken or deactivated by Swisscom. I took it too Chur Train station SBB counter. They obviously didn’t want to know. ‘I just issue tickets’ the man said. The queue was building behind me. He tried to get me to go to a Swisscom shop. After about 30 minutes with me getting increasingly hot under the collar and refusing to back down they eventually issued me another dongle for 7 more days. The encryption worked this time. Everything worked ok for the remaining 7 days.

The first dongle wasn’t correctly configured. The rental period wasn’t set up correctly. The station staff hadn’t had sufficient training. The Swisscom shop staff weren’t interested. The email support was very poor. I spent several hours of my holiday trying to sort all this out. Communication issues further exacerbated problems (my French is poor and my German is non-existent). It was all incredibly frustrating. So much for Swiss efficiency.

** UPDATE **

I posted a link to this article to Swisscom support. Here is the email they sent me back (somewhat faster and more detailed than their responses to my technical problems). I am unconvinced by their attempt to blame some of the problems on their reseller, swisspasses.com .

Dear Mr. Brice

We have read your blog entry and we would like to apologize for all the
circumstances. Pocket Connect is a new product which we offer and we constantly
try to improve the service for it.

Because of the credits for only 6 days. We could check it and it had credits for
a total of 13 days on this prepaid card. We can not say now what the error was
that it was not working after that. It could be a network error at the location
you were or another interruption which brought this error.

To the 0800 000 164 Support Hotline we offer. This is a free of charge number if
you call from a Swiss mobilephone or landline. Of course you have roaming
charges if you call from a number of foreign.

Swisspasses.com is only a reseller. If you had reserved/rented it at our
homepage pocketconnect.ch it would all have been easier. 

This should be not a excuse but in our opinion were these three points no
mistake of our side. But of course you became wrong technical informations
regarding the encryption.
As we said in the beginning we are still improve this service. We will take your
feedback very seriously and promise you to take these improvements to our
service in the future.

Do not hesitate to contact us if you have further questions.

Yours sincerely
Swisscom Schweiz AG

Service Center Pocket Connect
Postfach
3050 Bern

www.pocketconnect.ch/contact
support@pocketconnect.ch
Helpdesk 0800 800 164

Asshole x software = Asshole at scale

A builder recently dumped a couple of wheelbarrows full of rubble on the common land behind my house. He’s an asshole. But at least he is limited in how much of an asshole he can be by physical constraints, such as the amount of waste he can generate and dump in a day. With the right software, there is almost no limit to how big an asshole he could be.

Spammers send out millions of emails in the hope of getting a few hundred dollars in sales of Viagra, Ugg boots or whatever other dubious merchandise they might be pushing. According to one study the sending of 348 million pharmacy spam emails resulted in 83 million emails delivered and a grand total of 28 sales. That is a 0.0000081% conversion rate. Assuming that the 83 million emails delivered took an average of a second each for a human to scan and delete, that’s around 23 thousand hours wasted. For 28 sales,  netting perhaps a few hundred dollars in profit. You have to be a massive asshole to waste so much of other people’s time just to make a few hundred dollars.

Spamming is just one of the more obvious and egregious examples of being an asshole at scale. But there are lots more. Article spinning for example. This is where assholes use software to generate lots of small variations on a (usually poor written or plagiarised) article in a desperate attempt to increase their SEO ‘footprint’. It might seem like a clever way to game the system and get one over on the all-powerful Google. But, if it works, the search results will fill up with poorly written garbage and the signal gets squeezed out by ever increasing noise. A tragedy of the commons in which we all lose in the long run.

Comment spam on forums and blogs is another area where assholes can use software to scale their activities. To date this blog has had a total of 77,811 spam comments, most of them undoubtedly generated automatically. Thankfully, the vast majority were caught by WordPress’s Akismet software. But I still waste a few minutes every week sifting through the spam for false positives. If you multiply that by millions of blog and forum owners, week after week, it adds up to a massive amount of wasted time. Again for marginal gains.

As software becomes increasingly pervasive and bandwidth becomes ever cheaper, new areas are becoming available for assholes to exploit. For example using software to algorithmically generate vast numbers of T-shirt slogans for Amazon without properly checking the results. Not only does this fill up Amazon search results with garbage (many of the slogans make no sense) but some of the slogans were deeply offensive.

The best defense against the assholes is more software, for example: spam filtering software and improved search algorithms. I guess that is good news for those of us that make a living writing software. But I worry that the assholes will win the arms race in the long run and the Internet, one of the greatest inventions in human history, will be reduced to the information equivalent of grey goo.

What can we do about it as software developers? Firstly don’t be an asshole. Consider the overall impact of your actions. Sure you could blast out thousands of poorly targeted emails to promote your product. But, just because you can, doesn’t mean you should.

Secondly, consider whether there is a product you could write that could help combat the assholes. People and businesses (especially businesses) will pay good money for products that save them time.

Finally, don’t create software for assholes. Generally speaking, a tool is not inherently good or evil. You can use a knife to stab someone, or cut a sandwich. But if you are writing software specifically aimed at spamming, spinning or other asshole scaling activities, then you are the biggest asshole of all.  With power comes responsibility.’If I didn’t do it someone else would’ is no defense. Of course, if you are a true asshole, you don’t (by definition) care what other people think. But, in the unlikely event that you are an asshole that has read this far, consider this – surely even you don’t want a customer base comprised entirely of assholes?

Upgrade your Adwords accounts before the 22nd July – or else!

google adwordsGoogle will automatically switch all Adwords campaigns to ‘enhanced’ on 22-July-2013. If you don’t do it before then, Google will do it for you. And you can be confident they will be thinking of their interests, rather than yours. The changes are mostly bad news for those of us that sell software for desktop computers. In particular you can no longer choose not to bid for clicks on tablet devices. I would like to have more control over how I bid on different platforms, not less, so I am not happy about the changes. However your choices are either to upgrade your campaigns to ‘enhanced’ or close your Adwords account.

You can at least bid less for clicks on mobile devices. If you are selling downloadable software that doesn’t run on mobile devices, I recommend you set your bid adjustment much lower for mobile devices. My own analytics data tells me that mobile devices only have one tenth the (measurable) conversion rate of desktop/laptop computers. So I have set my mobile bid adjustment at -90% for mobile devices. Presumably you can set it to -100% if you don’t want to bid for mobile clicks at all. I don’t understand why advertisers aren’t being given the same option for tablet devices.

Note that you can’t set a mobile bid adjustment for CPA campaigns. However Google should notice the lack of downloads and sales on mobile devices and adjust the mobile bids down for you automatically.

Upgrading is pretty straight forward and should only take a few minutes. More details on the software promotions blog.