How Bundling Doubled The Income of ''

I couldn't bring myself to use the original headline, "This one simple trick doubled my income!". But I'm happy to finally be one of those people who made a simple adjustment to their business and turned around a month later to report that income had doubled.

The NimbleBundle was a roaring success. In case you've just joined us, the back story is that last month I introduced a 'bundle' version that was simply the grouping together of two pre-existing [& complementary] products, NimbleText and NimbleSET.

Total income for August was 185% of the income for July, while traffic stayed consistent across both months. (I track all this on my funky new dashboard). Thus, even though customers buying both products were now handing over ten dollars less than before, it was more than made up for by the increased sales volume! Support was easy-peasy, refunds remained at nil. (However a significant chunk of earnings went to Motor Neurone Disease, after a long-time friend, now enemy, named me in an ice-bucket challenge.)

What were the actual figures? I know you voyeurs would love to know, but I'm keeping the actual metrics to myself. What really matters is: were these figures statistically significant? to which the answer is a resounding yes. I plugged the traffic from each month and the sales for each month into my favorite G-Test calculator and got a result of:

"The G-test statistic is 44.7 so version 'B' wins with 100% confidence."

I'm not going to argue with 100% confidence, or the awesome power of maths.

I talked about the psychological reasons for bundling in a previous blog post. I have no way of knowing if those were the actual reasons why the sales went up. It could just be that a lot of people had text manipulation tasks and set comparison tasks in August. But whatever the reason for the increase, I'm definitely keeping the bundle around. ;-)

There was a minor disaster in the first few days. Whenever someone purchased a bundle it would sometimes send out two licenses (instead of one). Then they would write to me and ask what to do with the second license. I suspected I had a race condition in the code. And since race conditions can be very hard to track down, I pored over the code very carefully, looking for any place where a race condition might hide. Eventually the cause of problem occurred to me while I was sleeping. It was just plain old bad logic doing me in once again:

Deep inside my license generation app I have a boolean function that determines if a sale has already been recorded. It (essentially) ran a query like this: Select count(*) as count from Purchases where PayPalID = {0}. Then back in the code, it said return count == 1. This worked flawlessly for several years. But with the introduction of the NimbleBundle, there would now be up to 3 entries in the purchase table for every actual purchase. So I changed the code to return count >= 1 and duplicate license generation stopped happening.

Now on to bigger and better versions. I've got major new features implemented for both products, due out in the coming weeks. I have of course distracted myself (as I often do) with the task of writing a book. If you haven't signed up to be notified when the book is ready, go and do that now. A really solid amount of people have signed up already: if you're one of them, then thank you! I currently have an outline, a bunch of powershell scripts for tracking my progress, converting my markdown to .epub etc, and over 5000 words committed. So far: lots of fun. Have learned a heck of a lot.


Your First Product

I've been steadily cranking out products for the last few years (TimeSnapper, NimbleText, NimbleSET etc. etc.), and finally decided to write an ebook about how it's done.

There are things I consider to be "my secrets". They'll all be in the book.

I'm writing the ebook for four reasons:

  1. To get much better at making and selling products. Nothing teaches like teaching!
  2. To realise some of the capital investment I've made in building products so far
  3. To get in contact with my people: people who make products
  4. To learn about ebook production itself.

I've put up a landing page at "" where you can sign up to be notified when the book is ready.

Landing page for

In answer to the questions I've received so far:

How much will the book cost?

I do not know. It will certainly cost more than $10. It may be $30. For higher prices you'll get access to a suite of my secret tools that help when building products. And there'll be a team version, for a much much much higher pricer.

I know a bit about how these things work, and I can tell you for sure that the price will get higher over time. So the sooner you sign up the better. (Signing up to be notified is free)

When will it be ready?

It could take 3 months, it could take a year or more. I do not know. The amount of time and effort I divert into this project will be highly influenced by the number of sign ups I get at "". So if you want to see this ebook realised, go ahead and sign up. And tell all your like-minded friends to sign up too.

Sign up to be notified when the book is launched

Also, as a special bonus to anyone who signs up today, you get a free joke.


SimCity Drug Wars in the Real World

My name is Leon. It has been less than 1 day since my last harebrained scheme.

So the Australian Bureau of Statistics* recently put out a sim-city style game on iphone and Android, called 'Run that town' in which you compete for money and klout by approving/rejecting fictional development in familiar suburbs, using real statistics from that suburb.

The attraction of the game is that it uses settings that are intimately familiar to you, and makes you very aware of a whole host of statistics about that area. (You soon learn for example whether it's wiser to approve a local aged-care facility than a sports stadium)

And on the same day as I saw that I took a look at this interesting site, showing where and when real crimes have happened in my home state of Queensland. Right down to the address.

So - mashing the two ideas together - I thought, why not make a Drug Wars clone with a local flavour. You choose a starting street, anywhere in Queensland. And on each turn you can run from your current location to any of the adjoining real streets. The criminal behaviour in that street is based on historic crime in that street. (Magnified several thousand times to suit the intense pug-wars style of play). Obviously we take it global as datasets become available, but we market locally.

run that town plus crime stats

So now I present...

Okay, I've got nothing to present. I didn't implement anything. Yet.

I know some people though. This would be riiiight up their alley. You know who you are.

* The game was built by millipede possibly with input from Leo Burnett Sydney.


Two Flies! Bet Now!

So someone has made a channel where you watch two pet fish (unwittingly) play each other at Street Fighter II

It's a logical extension of someone who made a live feed of a fish playing pokemon.

And someone else (in the comments at Hacker News) points out there is a site where you can bet virtual currency on AI playing computer games against each other

Meanwhile: Australians are said to be so addicted to gambling we would bet on two flies crawling up a wall.

How can we directly monetise this?

I need two walls, two flies.... or rather one wall with a division, so that the two flies are kept separate.

A camera that can see both and track their positions....

I hear that 'OpenCV' is the library to use for this sort of thing. Here's the guide to installing OpenCV on windows, and developing apps with OpenCV inside Visual Studio.

How to organise a bet involving two flies?

At a point in time, X, we look at the position of the fly on the left and the fly on the right, and draw two virtual horizontal lines to represent their starting positions. (A left starting position and a right starting position).

We then start a countdown timer at 90 seconds, and also draw two virtual finish lines that are a fixed distance above the starting positions.

If either fly reaches their finish line, that fly is the winner. If neither fly reaches the finish line when the timer reaches 0, then the highest fly is picked as victorious.

To ensure continuous betting is possible, we have one further rule: If a fly starts more than half way up the wall then their target is below them: their goal is to walk down the wall, not up it.

The flies are given gruesome competitive names like Blood-drinker and Face-Eater. They have their own legions of fans and admirers.

Rumours that the flies are entirely digitally rendered are just that. Unproven... if well-founded... rumours. Nothing more!

The crucial thing is to select flies that have high winning stats and then allow them to breed. (I guess it's easier to just eliminate the flies that do poorly)

There are two paths ahead of me. One of them is to remain a regular work-a-day Joe. The other is to become rich beyond my wildest dreams by farming maggots. Decisions decisions.


Boothby, a personal database

I have this problem where friends of mine keep having babies.

I don't know if you've been to school, but if you have you might know that the mathematics of having babies is pretty scary. Take rabbits. You start with two rabbits, leave them alone for a little while and next thing there's a heck of a lot of rabbits. There's an exponent involved. It's all quite sinister.

The trouble with this growing number of babies is that I'm expected to remember all their names and genders and ages and so on. But while their numbers are exponentially growing my brain is not undergoing so much as linear expansion. If anything it's contracting of late.

And while there's already places online for storing these 'social graphs' they fail miserably at the kind of remembering I need help with and are more hellbent on serving me ads than easing my mental burden.

Then I saw that Steven Frank just implemented something similar to what I wanted, he called it Dossier, so rather than implementing something from scratch, I could steal all his ideas and re-brand them as my own.

Hence I wrote this thing, Boothby.

It's for storing the things you can't remember.

Try Boothby Online Right Now.

Later I might make it a little standalone kayak app, that you can install on your own computers, and sync via dropbox etc.

Or I could charge you 10 bucks a month to grant you access to your own private online instance. That's the business to be in.


The Nimble Bundle

To celebrate John Venn's 180th Birthday, we're having a Month-long Mega-Month of Set-Loving Madness.

For the rest of August, NimbleSET and NimbleText will both be available as part of the special "Nimble Bundle".

If you buy the bundle you'll save $10 over what you'd otherwise pay. That's a handy piece of cash to take home.

Venn Diagram showing NimbleBundle as the intersection of NimbleText and NimbleSET

Or to put it another way. When you buy NimbleText, for just $5 more, you get NimbleSET thrown in.

Here's a cartoon of Me, throwing NimbleSET in for $5.

cartoon of me throwing in nimbleset for $5

I'm not sure why I look so angry. Maybe because it's so cheap. I'm angry to be throwing away my work for such a steal, yes that's it.

Now, just for fun, try saying "Nimble Bundle" five times quickly. "Nimble Bundle, Nimble Bundle, NimbleBundle, Nindle Bumble, Bumble Lindel."

You're still here? Ah well, if you're going to keep reading you may as well stick around while we discuss the behavioural economics that underpins the things I've attempted above.

First let's discredit the stated premise: this has nothing to do with John Venn's Birthday. Yes, NimbleSET is software for Venn-diagram-style comparisons of lists... but why would I know or care when the man's birthday is? I'm not even facebook-friends with the guy. No, the John Venn thing is cover for a different motive. I happened to see a google doodle about him and thought it would be a plausible 'angle' for the psycho-swindle I wanted to inflict on you, my good friends.

If it's not about John Venn then what is it about? Well, money, of course, and my desire to separate you from yours, making it mine forever. But what's the specific psychology of the situation and why is it likely to increase the fatness of my wallet?

When I first put out NimbleSET (back in January) I saw a sudden and permanent *decrease* in the sales of NimbleText. And it wasn't made up for by sales of NimbleSET, not nearly. I tried to ignore it, and tried to explain it away, but I was really at a loss to understand it. Until I read about the decoy effect and the idea of decoy products.

The decoy effect is a well tested phenomenon where:

"consumers have a specific change in preference between two options when also presented with a third option that is asymmetrically dominated."

It wasn't exactly the decoy effect, but reading about that was enough to give me a hypotheses about what was happening. The purchase page went from listing 1 product for $20, to listing two products: 1 for $20 and 1 for $15. The cheaper product (NimbleSET) suddenly made NimbleText look expensive!

So now I hope that by putting a third product in, that is clearly better value than either of the others, it will dominate the sales. So under this latest hypothesis, both NimbleText and NimbleSET are the decoys. The best deal is the bundle, and you'd be crazy to buy anything else. If I'm wrong, then, no problem at all, I take the Bundle off the market and head back to the psychology books for futher hints.

I'll keep you informed, so please join me for the ride! And if you have other, better theories about what's going on, please tell me. It's all a mystery to me.


Need an idea? Let me give you one:

I had this idea for a web site, and even checked the domain, it's still available!:

Give Need --

Here's a mockup of the minimum viable product:

i can give... i need... simple website

I guess the idea is, anyone can give and anyone can need. Spam and vulgarity gets flagged and removed quickly. Givers and Needers build reputation by being reliable and so on. Geo-location is important.

I don't have the time, but If you want to do this, go ahead.

Here's the html for the mvp mockup.

I was wildly enthusiastic about the idea for juuuuust long enough to create the mockup using zen-coding (which I recently re-discovered) and where i wrote most of the mockup just by typing:


Like I said. If you want the idea, it's yours. I'm still busy building All These Other Empires.


A Dashboard For Everything and Everything on a Dashboard

I tweeted the other day:

I have too many dashboards, so have decided to create a dashboard of dashboards. #

Completely serious.

Dashboards are one of the few situations that solve this pattern: "The only solution for too much $0 is more $0." Like science. (Unlike violence, ditch-digging, etc)*

To help manage NimbleText, I've currently got three dashboards that I visit all too frequently.

First, there's google analytics. I mostly track where visitors are coming from, and whether they're doing the things I want them to do (download nimbletext, visit the pricing page etc.).

Second, there's the (newly created) page where I analyse samples of the patterns that people are creating in the online version. (This is a bit of a privacy minefield, so I've added a note about that here).

Then there's 'dash', the recently created dashboard where I have a bunch of information about sales and product activation.

And currently in the works is another dashboard for managing A/B tests. It will probably be at, my favorite domain that is currently under-utilised.

That'll make a total of four dashboards. What the hellz!? No one needs four dashboards! Even Dashy McDashman, the dashing darling of Dashville only needs three!

So I plan to make another dashboard that gathers together all the information from the other four. (It'll be at AirBadge too.)

To grab data from google analytics, it will use whatever rest-ful services it can get its hands on. To expose data from my own sites, I'll probably create some jsonp endpoints at each of those sites. Oh, we can call them micro services, and feel modern and clever.

The new dashboard will be basically a page with a bunch of little widgets (<article class='panel' >...). Each widget will have some data attributes that describe how to grab the data it wants. Some widgets will be charts, some will be tables. Some will automatically refresh. They'll probably be laid out using isotype which I've used before. Some could have live information, using that signalr business.

Darling developers of the Mac world, Panic, have created a beautiful dashboard product called Statusboard. My goal is to have almost none of the features of Statusboard, but all the beauty.

* At this point while writing the article, I wanted to list all of the words that do or do not suit that pattern. To accomodate creating and sharing that list, I realised NimbleText Live needed a way to share a pattern, something in the style of JSFiddle. (Richard Mason suggested this feature just last week). So I had to stop writing this article and add that feature in. It's there now. Look for the little Save icon.

Here's some other patterns I've created: Atwood's Law versus Murphy's Law and other correlates. Superhero name generator.. Etc.


Internet's Last Classic ASP Website Finally Upgraded

I've now been blogging at this site for more than 10 years. I meant to mark the anniversary but—whoops—it slipped right by.

Somewhere in that 10 years my site seems to have become The Last Classic Asp Site Left On Earth. So at last I decided to move to a new blogging engine.

I looked at ALL the existing blogging platforms on the planet, and I couldn't find a single one that could satisfy my One Very Simple Requirement:

1. It must be written by me.

So, eventually, I decided the only solution left was to write my own!

Okay, there were a lot more requirements. I started to write down what the requirements would be if I were paying someone to write the site for me. I soon realised I'm one of those clients from hell

It needs to pop. It needs to be now. It should smell like success. Use plenty of comic sans.

(the real feature list is included at the foot of this article)

The old site used a bug-ridden custom blog engine, code named 'Smart Jelly', the only 'Classic ASP' site I ever wrote. It was little more than a textarea where i pasted some raw html, so that it could be injected into a static template and saved once and for all. Edits after that were done by hand.

Finally, starting a-fresh, with a decade of experience, I knew I could over-engineer this one to death. So I settled on a design that is essentially a text-area where you paste an article, so that a light sprinkling of MVC code can put the article into a template, cache it, index it, etc.

I used Stashy as my ultra-lightweight No-SQL data store. I used Ben Foster's SiteMap article and code to build the sitemap. And other than that, I just avoided as many bad design decisions as my time would allow.

With this gargantuan task out of the way, I can finally move on with my other most pressing items. A new NimbleText release. A new product. But if you spot any errors, let me know.

Appendix A: rules I tried to follow.

Design Requirements...

  • Simplicity
  • Semantic html
  • Responsive to smaller screensizes (25% of visitors are from mobile)
  • Clear fonts.
  • Should last 20 years

Nothing 'fashionable' -- examples:

  • flat design, (long shadows)
  • parallax scrolling
  • long scrolling
  • sticky nav
  • 'impressive' transitions
  • client side everything
  • avatars in circles
  • giant header images.


  • Continuous scrolling
  • Playful
  • minimalist
  • dark
  • svg

Definitely not...

  • Bootstrap (upgrades are pain.)
  • Disqus.
  • A database (too big a dependency)
  • Pages heavy with js widgets
  • little notes that popup in the lower right corner when you scroll down
  • pop-overs that get in the way of the article and say things like "Hey! You're trying to read the article, you should buy this other thing"
  • Auto-play embedded sound and video advertisements.
  • Lobster web font.


  • all old urls respected. (via permanent redirects where necessary)
  • articles
  • comments
  • fast to load.
  • Pages not heavy with js widgets.
  • rss
  • sitemap.xml
  • complete archive
  • categories
  • as few dependencies as possible. JQuery sure. Others? No.

The dumbest thing that could possibly work

I just listened to a hanselminutes episode where he interviewed John-Daniel Trask (a kiwi!)(yay kiwis!) from mindscape, makers of (yes that raygun, beloved of my arch-nemesis, that chief amongst villains, Troy Hunt)

I recommend you give it a listen, and at 1.5 times playback speed it only took 20 minutes of my finite lifespan.

I like the idea of making a product out of doing some very thin slither of a particular 'vertical' -- in this case raygun is a very deliberately tiny part of what application companies need.

Another example would be octopus deploy by my personal hero Paul Stovell (and a growing team of geniuses).

Revision control companies and bug tracking companies are also examples, but they tend to have business models that are all about moving beyond their initial niche. Maybe they're just a bit more evolved.

So what's the tiniest possibly slither of a well known vertical? For example in the bushwalking world: you always put your shoes on before you go for a walk, and part of that is doing up your laces. So you could have a specialty company that ships a fresh pair of ethical artisanal hand-woven opinionated boot-laces to serious bushwalkers, once a month. Focus on something narrow enough that you can be indisputably the best. The best by a mile. Not just pretty good.

(aside: JDT pointed out that since doesn't try to do everything they need to offer integration points. They have plugins e.g. for github, trello, slack (slack... which I need to look into more).)

I guess twitter is an early company doing this same thing.... just the "current status" feature of an instant messaging app, and nothing else.... and "yo" would be the latest example of honing messaging down to the least features possible.

This got me thinking about potential business ideas when the age old question occurred to me: "What's the dumbest thing that could possibly work? No, even dumber than that."

And this is what I came up with for today:

"We bill you."

It's basically a SaaS where you choose among 3 great plans:

The free plan
has no features, and we don't bill you. This is only available for a limited time.

The beginner plan
$35 per month.
For that you get one bill per month, for $35.

The expert plan
$100 per month.
You still get one bill per month, but this time you get billed for $100.

We also offer "Enterprise" level.
Prices for this are not available on the website. Talk to us, and we'll see what we can arrange. For example we might bill you extra some months, and at times, not bill you at all. Overall, we would still guarantee to bill you as much as you can psychologically withstand before breaking down completely. And we get your car.

Crazy enough that it just might work?

All of these lucrative domains are available if you want to get in on the ground floor for equity and just a one time cash investment plus ongoing hours for development, support, data entry, foot rubs etc.

and as a bonus this domain is also available:

It would need good stock art of course and i'll need an upfront investment to cover that too.

Wait a second. ''? 'go pash cash dot com...?' What was i thinking? that's too good to share.

Getting back to the idea of niches within niches: what great and useful little ideas have you got to share?

(One serious little idea I've got for a niche within a niche: a wrapper for chocolatey that makes it work inside the enterprise. I have given it no more thought than that. I picture a chocolate. And it is wrapped up. It is a chocolatey wrapper. And you are inside the enterprise. And it just works.)