Category Archives: software

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).

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.

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?