Category Archives: conference

Promoting your software

This is a video of a “Promoting your software” talk I did at ESWC 2011. In it I discuss my experiences attempting to try every form of promotion known to man including: SEO, Google Adwords, magazine ads, affiliates, Facebook ads and hanging out in wedding forums using a female pseudonym. With real data! You can’t read the slide text in the video, but I have included the slides below.

A couple of people asked me afterwards whether anything I tried had worked. Yes! I wouldn’t have survived long as a microISV otherwise. But I didn’t really want to dwell on what had worked for me because it might not be relevant for different products with different price points in different markets. Also that isn’t the sort of information I want to give to my competitors.

Things were running a bit late due to problems with the projector, so I didn’t have time for the audience participation at the end. Projector problems are really not what you need when you are just about to do a talk to a room full of people! Many thanks to Alwin and Sytske of Collectorz for doing the video and to Dave and Aaron of Software Promotions for helping to sort out the unruly projector.

ESWC 2011

No proper post this week. I’m too busy finishing off my talk ‘Promoting your software’ for ESWC 2011 in London next weekend (19-20 Nov). I am going to talk about my experiences attempting to try every form of promotion known to man including: SEO, Google Adwords, magazine ads, affiliates, Facebook ads and hanging out in wedding forums using a female pseudonym. With audience participation! Plus real data!

There are also some other interesting looking talks. Chatting to other people in the business over coffee or beer is also invaluable. If you haven’t booked a ticket, it isn’t too late. Don’t worry if it is your first time – people are very friendly. Do come and say hello.

On the subject of conferences, the ASP is putting on ISVCon in Reno, Nevada, USA in July 2012. Being UK based it is probably further than I am prepared to fly for a conference. But I hope it is a huge success.

ESWC 2011 registration is now open

Registration is now open for the European Software Conference 2011. It is on 19th-20th November in London, with informal drinks the evening before. This is the top European event for microISVs and other small software businesses. It is always good to meet up with other microISVs and London is a great city to visit, even if only to remind yourself how glad you are you don’t live in a big city. The early bird rates are just 55 Euros (with no meals) and 155 Euros (including 2 networking dinners). The schedule is still being fleshed out. I will be doing a talk, provisionally titled “Promoting your software”. Watch this space for more details. There are still some spare speaking slots. It would be nice to see some new faces doing talks, so why not volunteer?

Sadly there might not be a Software Industry Conference this year. But if you are based in the USA you might want to consider MicroConf 2011 in Vegas 6th-7th June. There is also Business of Software 2011 in Boston 24th-26th October, but I think this is aimed more at larger software companies (or those that want to be larger software companies).

Marketing for microISVS

Below are the video and slides of the “Marketing for microISVS – embracing the ‘dark side’?” talk I gave at ESWC 2009 in Berlin. This is a high-speed ramble through a vast subject. In the 45 minutes available I do my best to dispel some of the myths software developers have about marketing and discuss some marketing concepts, including: branding; positioning; pricing; and segmentation. Taking in Harley Davidsons, tinned tomatoes, Coca Cola and food blenders on the way. The first couple of minutes, where I dispel the myth that good software sells itself without marketing, are missing from the video due to a dead camera battery. But you knew that anyway, so I don’t think this detracts much overall.


Slides (which might not make much sense without the video):

NB/ When I said 47Signals, I meant 37Signals (brand inflation?). Thanks to Tarek for the correction.

Links to some of the things mentioned in the talk:

A big thank you to Alwin and Sytske of for hot-footing it from Alwin’s talk to do the video (you can see Alwin’s excellent talk on web app pros and cons here). And also to David and Panagiota for all the hard work that goes on behind the scenes organizing ESWC.

If you found this talk useful you might also like 10 mistakes microISVS make.

Off to ESWC 2009

marketing for microisvsI will be off to ESWC 2009 in Berlin in a few days. I am doing a talk “Marketing for microISVs – embracing the dark side?” on the Saturday morning. It is going to be tough to tackle as huge a subject as marketing in 45 minutes including questions, but I like a challenge!

I am also looking forwarding to touching base with old acquaintances and meeting some new people. If you are going to there, do come and say hello.

Ten mistakes microISVs make

Here is a video of the “Ten mistakes microISVs make” talk I gave at the Software Industry Conference 2009 in Boston. Total duration: 27 minutes.

The slides aren’t terribly easy to read, due to the resizing and compression of the video. But you can also download the paper and slides:

A big thank you to Alwin and Sytske of for doing the video. You can read Alwin’s excellent software marketing blog at

Feel free to embed this video, as long as you include a credit and a link back to this blog.

How many of these mistakes have you made? How many are you still making?

Heading off to the Software Industry Conference

I am flying off to SIC in Boston tomorrow (Wednesday). I hope to put faces to email addresses and talk to as many people as possible. Please come and say hello if you spot me (mugshot here).

I am going to try to meet up with a couple of the Business of Software regulars on Thursday lunchtime (11:30am – 12:45) in the Adam’s lounge bar/restaurant in the conference hotel. If you are at SIC and aren’t otherwise engaged on the Thursday lunchtime, please come along. I will be wearing a lurid orange variant of this T-shirt, so I should be easy enough to spot.

I will be speaking at SIC 2009

sic2009I will be giving a talk entitled “10 mistakes microISVs make” at the Software Industry Conference 2009 (July 16-18, Boston). The talk will be based around 10 of the most common mistakes I see as a member of the microISV community, as a buyer of software and as a consultant to microISVs (some of which I have made myself).

SIC is the largest conference aimed at microISVs, shareware authors and other small software vendors. This will be the first time I have been to SIC and I am really looking forward to it.

Registration for SIC is only $229 if you register before 1st April.

Early registration for ESWC2008 closing

David Boventer has just reminded me that early bird registration for ESWC 2008 ends July 31st. I probably won’t make it this year due to other committments. But I have been the last two years and highly recommend it to any microISVs that can make it to Berlin for 8/9 November. Hurry up – you haven’t got much time to get the early bird rate!

Functional programming – coming to a compiler near you soon?

We can classify programming languages into a simple taxonomy:

Commercial programmers have overwhelmingly developed software using imperative languages, with a strong shift from procedural languages to object oriented languages over time. While declarative style programming has had some successes (most notably SQL), functional programming (FP) has been traditionally seen as a play-thing for academics.

FP is defined in Wikipedia as:

A programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data.

Whereas an imperative language allows you to specify a sequence of actions (‘do this, do that’), a functional language is written in terms of functions that transform data from one form to another. There is no explicit flow of control in a functional language.

In an imperative language variables generally refer to an address in memory, the contents of which can change (i.e. is ‘mutable’). For example the rather unmathematical looking “x=x+1″ is a valid expression. In FP there are no mutable variables and no state.

In an imperative language a function can return different values for the same input, either because of stored state (e.g. global or static variables) or because it is interfacing with an external device (e.g. a file, database, network or system clock). But a pure functional language always returns the same value from a function given the same input. This ‘referential integrity’ means an FP function call has no ‘side-effects’ and consequently can’t interface with external devices. In other words it can’t actually do anything useful – it can’t even display the result of a computation to your VDU. The standard joke is that you only know a pure functional program is running because your CPU gets warmer.

The functional language Haskell works around the side-effects issue by allowing some functions to access external devices in a controlled way through ‘monads’. These ‘impure’ functions can call ‘pure’ functions, but can never be called by them. This clearly separates out the pure parts of the program (without side-effects) from the impure ones (with side-effects). This means that it is possible to get many of the advantages of FP and still perform useful tasks.

FP is much closer to mathematics than imperative programming. This means that some types of problems (particularly algorithmic ones) can be expressed much more elegantly and easily as functional programs. The fact that a function has no side effects also means that it’s structure is much easier to analyse automatically. Consequently there is greater potential for a computer to optimise a functional program than an imperative program. For example in FP:

y = f(x) + f(x);

Can always be rewritten as:

z = f(x);

y = 2 * z;

Saving a function call. This is more difficult to do in an imperative language, because you need to show that second call to f(x) won’t return a different value to the first.

Functional programs are also inherently much easier to parallelise, due to the lack of side-effects. We can let the FP interpreter/compiler take care of parallelism. No need to worry about threads, locks, critical sections, mutexes and deadlocks. This could be very useful as processors get ever more cores. However imperative languages, with their flow of control and mutable variables, map more easily than functional languages onto the machine instruction of current (von Neumann architecture) computer. Consequently writing efficient FP interpreters and compilers is hard and still a work in progress.

Elements of FP are steadily making their way into mainstream commercial software:

  • Erlang is being used in commercial systems, including telecoms switching systems.
  • Microsoft Research has implemented F#, a .Net language that includes FP elements based on ML.
  • Work is underway to add elements of FP to version 2.0 of the D programming language.
  • Google’s MapReduce is based on ideas from FP.
  • The Mathematica programming language has support for FP.
  • The K programming language is used in financial applications.
  • The Perl 6 compiler is being written in Haskell. <insert your own sarcastic comment here>.

I recently attended ACCU 2008 which had a whole stream of talks on FP. All the FP talks I attended were packed out. That is quite something given that the audience is primarily hardcore C++ programmers. There seemed to be quite a consensus in these talks that:

  • FP is starting to move out of academia and into commercial use.
  • FP is more suitable than imperative style programming for some classes of problem.
  • FP is not going to replace imperative programming. The bulk of commercial development will still be done in an imperative style, but with FP mixed in where appropriate.
  • Hybrid languages that mix OO and FP will become more common.

I don’t see Haskell replacing C++ any time soon. But I can definitely see the benefits of using FP to tackle some types of problems.

Further reading:

The Functional programming reference in Wikipedia

This article is based loosely on notes I made at ACCU 2008 from attending the following talks:

  • “Caging the Effects Monster: the next decade’s big challenge”, Simon Peyton-Jones
  • “Functional Programming Matters”, Russel Winder
  • “Grafting Functional Support on Top of an Imperative Language”, Andrei Alexandrescu

Any mistakes are almost certainly mine.