Category Archives: miscellaneous

The mystery of the Chinese downloads

A spider (probably not Chinese)It’s a good to idea to regularly look through the logs of your website. You’ll often find something interesting. In March 2013 I was looking through the web logs for my seating planner software and I noticed the number of downloads of the Windows version of my software had gone up by a factor of 5, compared to the previous month. Everything else stayed pretty much the same:

  • The number of visits to the download page hardly changed.
  • The number of completed Windows installs hardly changed.
  • The number of downloads of my Mac installer hardly changed.

Odd. On further investigation it turned out that a number of Chinese IP addresses were downloading my Windows installer again and again. My software is not localised into Chinese and I get very few sales from China. Also there were no installs from these IP addresses (my software puts up a ‘thank you for trying’ page when it is first run). It was a substantial increase in bandwidth, but not enough to be a serious denial of service attack. Very odd.

I am on an unlimited bandwidth hosting contract so I wasn’t paying for the extra bandwidth. But I was worried that the volume of requests would slow down my web site. So I put a .htaccess file in the downloads directory to block the worst offenders.

After a few months I got the bandwidth from China down from ~30GB per day to ~100MB per day. I have been playing this game of ‘whack a mole’ every since. Currently I have some 1700 Chinese IP addresses blocked.

downloads per month

PerfectTablePlan for Windows downloads per month 2013/2014

As an example I recently blocked IP 211.136.10.56, which was downloading PerfectTablePlan around 20 times per day, but never visiting a page on my website.

Here are the logs from one day (via Web Log Storming), picked at random before I blocked their IP:

logsAnd here is one of those records in more detail:

logWeb Log Storming classifies it as a ‘spider’.  whois.domaintools.com says the IP belongs to ‘China Mobile Communications Corporation’. The IP is not listed on projecthoneypot.org and I wasn’t able to find out any more from casual Googling.

To block the this IP I just added this line to my .htaccess file:

Deny from 211.136.10.56

But it is a bit of a nuisance to keep having to do this.

Other software companies are having similar issues. But I haven’t come across any compelling answers about why this is happening. Perhaps it is a way of masking some other nefarious activity? Does anyone have any idea what is going on?

10 years a microISV

I have been running my own one-man software company for 10 years today. Coincidentally it is also my 49th birthday, so it is perhaps a good time for a bit of reflection.

I did a physics degree and then worked full-time as an employee for nearly 20 years. I developed systems in FORTRAN, C and then C++ for operational research, satellite image processing, printed circuit board design, environmental modelling and distributed systems. I learnt a lot and met some great people, but I yearned to strike out on my own.

I set up my own company in January 2005. I was a techie and had very little experience on the business, sales and marketing side of things. It was quite scary.

I released v1 of my table planner software PerfectTablePlan at the end of February 2005. It was very rough and ready, but I sold my first licence in less than 24 hours. PerfectTablePlan has exceeded all my expectations and is still selling well. I have sold over 40,000 licences with revenue well into 7 figures (£) to date.

I started this blog in April 2007. It has had over 2 million hits to date and has been helpful for promoting my consulting. But mostly I do it because I like writing, when I can find the time.

I started offering a consulting service in January 2008. I have provided consulting to lots of other software businesses, mostly 1 day engagements concentrating on marketing. That has been very interesting and has added some variety to my work. It has also been helpful to find out what works and doesn’t in other businesses.

I ran a weekend face-to-face training course for people wanting to start their own software business in November 2013 and March 2014 in the UK. The course is 460 slides + various exercises. I enjoyed doing it and the feedback was very positive. But it was hard work to get enough people in one place at one time to make it viable. I could do it online, but I think it would lose a lot of the interactivity that made it work so well. I would like to run it again in 2015. Email me if you’re interested.

I released v1 of my AdWords keyword tool Keyword Funnel in March 2014. This was a commercial quality re-implementation of various tools I had written to help myself run my long tail AdWords campaign for PerfectTablePlan. The plan was to produce v1 within a couple of months, part-time. But it ended up taking nearer to 6 months. Feedback became more patchy and ambivalent as I got closer to v1. But, having got that far, I decided to push it out anyway. It didn’t sell well, for various reasons which I might go into in a future post. I also decided I didn’t want to spend all day thinking about AdWords. So I stopped selling it and took the site down. But it seems a shame to have wasted that work, so I may resurrect it later this year as a free product.

I am just about to release v1 of my visual planning software Hyper Plan. I have worked on this part time since September 2014. I am very pleased with how it has turned out. But I have no idea how successful it will be (as was the case with PerfectTablePlan and Keyword Funnel). I think a lot of people could benefit from it, but it is in a crowded market. Watch this space.

I have attended various conferences for small software businesses and spoken at MicroConf (Europe), ESWC and SIC. It is always great to meet other people in the business.

I am a moderator and regular contributor on the Business of Software and bootstrapped.fm forums.

All sorts of strange and wonderful things have happened, including:

  • PerfectTablePlan has been used for some very famous organizations for some very famous events (which I sadly don’t have permission to mention). It has seated royalty, celebrities and heads of state.
  • PerfectTablePlan was used as part of a demonstration of the (controversial) first commercial quantum computer by D-Wave.
  • A mock-up of PerfectTablePlan, including icons I did myself, was used without my permission by Sony in their ‘Big day’ TV comedy series.
  • I got to grapple with some interesting problems, including the mathematics of large combinatorial problems and elliptical tables. Some of my customers are now seating 4,000 guests and 4000! (4000x3999x3998 .. x 1) is a mind-bogglingly huge number.
  • A well known wedding magazine ran a promotion with a valid licence key clearly visible in a photograph of a PerfectTablePlan CD. I worked through the night to release a new version of PerfectTablePlan that didn’t work with this key.
  • I found out that CDs are edible.
  • An early article I wrote for the blog generated 56k hits in a day and got me a mention in the Guardian newspaper.

I employed my wife as bookkeeper a few years back. But decided I didn’t want to take on any other employees. I outsource a few things that I can’t do, but I still do most things myself.

It has been hard work and a bit of a roller coaster ride. But overall, it has been great! I wonder what the next 10 years will bring?

See also:

Lifestyle programming

A Business Idea : Individualized Mandelbrot Shirts

Mandelbrot

I have more ideas for business and products than I have the time, energy or skills to pursue. I am throwing this one out there in the hope that someone else might run with it. You’re welcome.

Idea

1. You zoom into a region of the Mandelbrot set you like the look of. You have an the option to customize the colours.

2. You are shown a visualization of what this would look like on a shirt (front and rear).

3. If you like what you see, you click a button to order the shirt, choose your size and pay. It is then shipped to you.

Pricing

The fact you can design your own shirt and there is a vanishly small probability that anyone else will have the same design, means you can charge a big premium. Perhaps £50/$80 for a long sleeve shirt?

Feasibility

The software side of this business is fairly straightforward. After all the Madelbrot set is based on just z=z^2+c and you wouldn’t have to generate a high resolution image for the preview. But I know nothing about the clothing industry. I have no idea what it would cost to individually print a shirt or what printing technology you would use. Perhaps there are good economic reasons why no-one is already doing this (if they are, they aren’t very good at SEO).

I will be your first customer!

Image from Wikipedia by Wolfgang Beyer

“Wrong Way” Corrigan

While on holiday in Ireland I came across the wonderful story of “Wrong Way” Corrigan. Here is a summary from history.com :

Eleven years earlier, American Charles A. Lindbergh had become an international celebrity with his solo nonstop flight across the Atlantic. Corrigan was among the mechanics who had worked on Lindbergh’s Spirit of St. Louis aircraft, but that mere footnote in the history of flight was not enough for the Texas-born aviator. In 1938, he bought a 1929 Curtiss Robin aircraft off a trash heap, rebuilt it, and modified it for long-distance flight. In July 1938, Corrigan piloted the single-engine plane nonstop from California to New York. Although the transcontinental flight was far from unprecedented, Corrigan received national attention simply because the press was amazed that his rattletrap aircraft had survived the journey.

Almost immediately after arriving in New York, he filed plans for a transatlantic flight, but aviation authorities deemed it a suicide flight, and he was promptly denied. Instead, they would allow Corrigan to fly back to the West Coast, and on July 17 he took off from Floyd Bennett field, ostentatiously pointed west. However, a few minutes later, he made a 180-degree turn and vanished into a cloud bank to the puzzlement of a few onlookers.

Twenty-eight hours later, Corrigan landed his plane in Dublin, Ireland, stepped out of his plane, and exclaimed, “Just got in from New York. Where am I?” He claimed that he lost his direction in the clouds and that his compass had malfunctioned. The authorities didn’t buy the story and suspended his license, but Corrigan stuck to it to the amusement of the public on both sides of the Atlantic. By the time “Wrong Way” Corrigan and his crated plane returned to New York by ship, his license suspension had been lifted, he was a national celebrity, and a mob of autograph seekers met him on the gangway.

Sometimes it is better to hope for forgiveness than to ask for permission.

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:

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?

Code Club – inspiring a new generation of programmers

code clubYesterday I, and fellow software developer Oliver Balmer, ran the first session of our new programming club at the school our children attend. We weren’t sure what to expect, but it went very well. The children really enjoyed it and so did we. I am just putting a few notes here in the hope that it piques the interest of other software developers.

  • Code Club is a United Kingdom based network of volunteer-led, after-school coding clubs for children aged 9-11.
  • scratchThe first 2 terms are based on the free Scratch programming language developed by MIT. This is an excellent tool for teaching children programming. Programs are constructed by snapping together colour coded blocks – there is no syntax to learn and very little typing. Within an hour all 9 children went from nothing to having created a simple example game with graphics and sound.
  • Later terms progress on to HTML/CSS and Python.
  • If you want to set up a Code Club you need to get a DBS criminal records check (previously called a CRB). We did it through STEMnet. It was free and painless. We had to attend an evening course, but this gave us some useful information about the education system and dealing with children.
  • Code Club provides all the teaching materials, including print-out worksheets for each session.
  • There must be a qualified teacher in the room at all times with the volunteers, so you need to get buy-in from the school staff.
  • The process we went through was:
    • Registered with the Code Club website
    • Discussed it with the school
    • Wrote a proposal to the Headmaster
    • Got our criminal record checks
    • Went into the school and did a presentation to recruit interested children
    • Ran a competition for any children who wanted to join
    • Liased with the school IT co-ordinator to get Scatch on the school PCs.
  • The school has been very supportive and helpful throughout.
  • The proposal isn’t required by Code Club, but we thought it was a good idea to make sure everyone understood exactly what we wanted to do. One of the school governors (who is also a Deputy Headmaster at another school) helped us to write it. It was only a couple of pages long.
  • We showed a 3 minute video about Scratch in the presentation to the children. That had a much bigger impact than 2 middle aged programmers talking about how cool programming is. When we asked how many kids wanted to join, about 40 hands out of 60 shot up!
  • We took care to emphasize that programming isn’t just for boys.
  • We required any child who wanted to join our club to enter a competition to design their own computer game (on paper). This allowed us to restrict the intake to a manageable number, if too many wanted to join. Also it created an entry barrier to the less interested ones. We don’t want to act as a free baby sitting service for children who aren’t really interested. In the event we got 10 competition entries and we accepted them all.
  • 9 out of the 10 children turned up for the first session (6 boys and 3 girls).
  • We created a certificate for the best competition entry and handed that out at the first session.
  • Our club sessions are an hour and 15 minutes. We added the extra 15 minutes to allow some time to get everyone settled. The children were very engaged and had no problems concentrating for that long.
  • There is no fee to attend our Code Club sessions (unlike many of the other after school clubs).
  • You need to run the club at a time that suits the school/children. This isn’t a problem for me as I have my own business and can set my own work hours. If you are employed 9-5, you may have to negotiate with your employer.
  • Our school’s IT suite is well set up, with a projector and enough PCs for each child to have their own. This makes life easier.
  • It was slightly chaotic, but fun!
  • You may be able to join an existing Code Club rather than having to start a new one. Check the Code Club website for existing clubs.

I went to a secondary school a few months back and talked to some 80 teenagers about what it was like to be a software engineer. When I asked how many of them had done any programming at all, only one of them had. One! We are teaching a generation how to use Excel, Powerpoint and Facebook, but not how to create their own software. What a wasted opportunity. Of course, we don’t need or want everyone to be programmers. But I think it is such an important skill that every child should at least have an opportunity to try it. I believe Code Club can go a long way towards filling this gap. Currently over 700 schools in the UK have Code Clubs.

To find out more go to the  Code Club website at:

http://www.codeclub.org.uk/

I believe there are similar initiatives to Code Club in other countries, but I don’t know anything about them. Please comment below if you do.

The imminent demise of Google Reader

Sadly, Google is killing Google Reader on 01-July-2013. If you are reading this blog using the RSS feed via Google Reader, I suggest you start looking for another RSS reader. I have been trying feedly. It is ok, but so far I prefer Google reader. What is your favourite Google Reader alternative?