New client library: Python

Just a quick post to let you know that there’s now a client library available for Python.

It uses the built-in httplib to allow you to suggest and reward your Myna clients. It has no external dependencies and has been tested in Python 2.7.

Here’s a link to the github repository, which includes some basic documentation so you can get started. We’ll add some more detailed information to the main site pretty soon.

A/B testing and the parable of the missing keys

My wife misplaced her keys yesterday. I politely enquired why she couldn’t put her damn keys in the same place every time she came in. She opined that if I wanted to be useful I should do less work with my mouth and more with my eyes. And so we set to work finding them.

As we searched, my mind naturally turned to A/B testing. It was clear from the start that we had two different strategies for finding the keys. She exploited her knowledge of where she had put her keys in the past, and her actions immediately prior to losing the keys. I explored more or less at random, arguing that her approach was proving unsuccessful and we should abandon our prior assumptions. Either approach on its own is inefficient, but together we were able to cover a large portion of the house in a relatively short period of time.

The exploration-exploitation dilemma lies at the heart of Myna. Myna constantly balances exploiting the variants that have worked well in the past against exploring other variants to see if they are in fact better. Myna can make an optimal tradeoff due to the power of the algorithms, and the relatively simple structure of the A/B testing problem.

Designing A/B tests involves a similar balancing act. We can exploit our knowledge of prior tests and best practices (such as these) to guide us when creating our own experiments. However, we must be cautious not to rely on those common tests too heavily. What has worked before, or for others’ customers might not work now or for ours. Similarly, exploring any and every idea that pops into our minds may be very interesting, and potentially bring dramatic results, but this has to be balanced with the risk of confusion or wasting time.

As you can see, once you start looking for it, you’ll find the exploration-exploitation dilemma everywhere.

My keys

No prizes for guessing who found the keys. (PS: it wasn’t me.)

New and improved documentation

Earlier in the week, we sent out a short survey to our awesome beta testers, asking them what they would most like to see added to or improved upon in Myna.

One of the common responses was a request to improve our documentation. So, we’ve done it, and you can access the new and improved documentation from the ‘help’ tab above, or from this handy link.

We’ve made lots of changes, improving significantly on the organisation and layout, and adding a shiny new demo page for the javascript client library, complete with code samples.

Demo page for the Javascript client library

We’ll continue working on the documentation to make sure it’s as complete and helpful as possible. We hope that this initial change will make it easier and faster to start A/B testing with Myna.

If you have any comments or suggestions regarding the documentation (or anything else), please let us know using our contact form.

Thanks!

Oxygen Accelerator

Greetings from Myna HQ!

It’s been a veritable whirlwind of excitement since our last post.

Firstly, we’re pleased to announce that we’ve been accepted onto the Oxygen Accelerator program at BSP-A. This is a 13-week bootcamp for startups, providing access to mentors, introductions to investors, and (importantly) office space.

The information and advice we’re receiving is golden, and we’re having an absolute blast. We’ll admit to being a bit nervous about being locked in a room with a gang of hungry startups, but they’re a great bunch, with some fantastic ideas, and we really do wish them well on their way.

And if nothing else, we have a captive audience.

tweet from Upcloo

 

While we’re absorbing information like a pair of parched sponges, we’re also hard at work on Myna itself. We’re working on some refinements to the UI and reporting features, and rolling out changes to the support system – our help pages are getting a bit of a polish, and we’ve just given our internal metrics tracking a significant boost, integrating with Mixpanel.

We also seem to have adopted a small robot.

Tiny robot, Myna's Oxygen mascot

Isn’t he cute?

Follow us on Twitter for the most up-to-date haps, or subscribe to our RSS feed from the sidebar on the right.

Myna Launch Competition

Over the last few months we’ve been pouring effort into Myna, and we’ve been rewarded with some fantastic customers and equally fantastic feedback. We’re on the verge of leaving our beta and to celebrate we’re launching a competition to give free help to five businesses that rely on their websites to drive their business.

If you’re one of our winners, we’ll give you a free consultation to work out where you can best apply Myna and then guide you through integration with your site. As result you could see a substantial increase in sales for very little effort, and no cost to you.

It’s simple to apply. Just write to competition@mynaweb.com telling us about your site and why you think you’d benefit from Myna. Make sure your email reaches us by Friday 17th August 2012 to be in the running!

Why we created Myna

The Myna story really begins way way back in 1994, when I was in my second year of Engineering at UWA. One day I logged onto one of the School’s Sun workstations and saw a system message:

For Mosaic type xmosiac

So I typed xmosaic and discovered the web.

In 1994 Yahoo had only just been created, it would be a year before Amazon was online, and the research project that led to Google wouldn’t start for another two years. Yet despite the blink tags and “Under Construction” GIFs one thing was clear: the web was, and would be, something amazing. I was most struck by its essential equality. In those days anyone could create a web page and stand on equal footing with the rest of the world.

Fast forward 16 years and things have changed. The web is now big industry and ads, SEO, and other techniques are all used by businesses to give themselves an advantage. The Internet is dominated by large corporations, and it isn’t so easy for the little guy to be heard.

I happened to pick a field, machine learning, that has become one of the key differences between the big and small players. The big Internet properties have a substantial advantage by their use of intelligent algorithms to optimise their sites, product recommendations, and so on. It’s also clear that the small players can’t easily replicate this. Simply put, they don’t have the expertise to develop these systems in-house, and Google have already hired all the available PhD graduates.

This is where Myna comes in. We want to rebalance the Internet by democratizing access to the technology the big companies are using. Of course paying the bills is important, but fundamentally if we can push forward the industry we’ll have achieved something important.

If you’re not Google, Amazon, Yahoo!, or Microsoft (or even if you are) we hope you’ll give Myna a try. We’re just starting out on what we hope will be a long and eventful journey, and we look forward to growing alongside you.

Myna’s new API

Myna’s new API is out! A lot of discussion went into the new API, so it took a bit longer that we planned. We think it’s worth the wait &emdash; the new API is far richer and more usable than our original design. If you want to integrate Myna into your existing marketing systems, you’ll definitely want to check it out. Also take a look at the clients under development on our Github page, which will make integration easier.

Proposed new API for Myna

We’re currently working on a new API for Myna. The new API exposes much more functionality, allowing, for example, experiments and variants to be created and removed. While it’s in development we’re soliciting feedback from the community. If you’re interested, read the documentation and let us know about any changes you think would improve it.

Myna versus A/B testing

37Signals recently posted an interesting article on their use of A/B testing. Naturally I think they’d do a lot better if they used Myna. They include enough data in their post that we can run some simulations to quantify how much better Myna would do for them. Prepare to be surprised!

The first thing I wanted to look at was the impressive 102.5% improvement they got from the “Person Page”. In another post they said their sample size was about 42’000. With such a large improvement A/B testing is going to find the correct result at the end of the test. But how many signups extra signups would they have got if they sent those 42’000 users via Myna? It turns out Myna has a whopping 33% improvement over A/B testing. The graph below shows the improvement Myna makes over A/B testing for five thousand runs of the same experiment. You can see the average improvement is 33%, and it is never lower than 26%.

Graph of Myna vs A/B testing

That’s the easy case, the rare change that leads to an enormous improvement. What about the 4.78% improvement Michael gives over Jocelyn? This is the bread-and-butter case for A/B testing, the kind of small improvement that adds up over time. Here things get interesting. Myna still improves over A/B testing, though the difference isn’t so dramatic. More interesting is that A/B testing gets it wrong over 80% of the time! Let me repeat that: given 42’000 samples and a 4.78% improvement over baseline, A/B testing makes the wrong choice 80.96% of the time. Myna, being an adaptable system, never gets stuck with a fixed decision.

Graph of Myna vs A/B testing - small

What happens if we raise the sample size to 240’000 samples? Now A/B testing makes the wrong choice about 25% of the time, which is still quite poor, and Myna still averages a small improvement over A/B testing. There are two interesting questions we might ask here:

  • How many samples do we need before A/B testing gets the right answer almost every time?
  • What happens to the performance of Myna vs A/B testing when A/B testing makes the wrong choice?

To try to answer the first question I ran the same experiment but with 360’000 samples. I didn’t want to wait forever so I only repeated this experiment 500 times. Here A/B testing makes the right decision 90% of the time, which is probably acceptable for most people. Still, this is a lot more traffic than the 42’000 samples we started with.

For the second question I want back to the original setup and asked A/B testing to make a decision given 42’000 samples. I then ran A/B testing and Myna for an additional 60,000, 120’000, and 240’000 samples. I repeated this experiment 500 times. The average improvement of Myna over A/B testing is 1%, 2%, and 5% respectively. These results show how Myna can continuously optimise. We never need to make a hard decision, so we’ll never get stuck with the wrong decision. As we’ve seen this flexibility doesn’t cost us anything – Myna continues to outperform A/B testing even in the cases that are easy for A/B testing.

Conclusion

Here are the main points:

  • Myna makes use of data as it arrives, so you can expect Myna to out-perform A/B testing when one option is clearly better.
  • If you’re doing A/B test and using relatively small sample sizes you’re missing out on many small improvements because you simply don’t have enough data for statistically significant results.
  • Myna won’t get stuck with the wrong decision when the data isn’t clear. Unlike A/B testing you don’t have to set the sample size in advance. Myna will keep on optimising indefinitely, catching all those small improvements that eventually add up but take a lot of data to determine.

Technical Details

If you want to try this at home, here are some details on my experimental setup. I assumed the base sign-up rate is 5%, which is typical of e-commerce applications. Except where indicated each experiment had 5’000 runs. I used the G-test with a p-value of 0.05 for A/B testing. I can’t tell you the secret sauce that goes into Myna’s algorithms, but in later posts I hope to go over some basic bandit algorithms, which are the core technology behind Myna.

What is Hacker News worth?

Twelve thousand hits, over thirty emails, seven comments on the post, and over a dozen new beta testers. That’s what getting a blog post featured on Hacker Newsbrought us. We’ve been slowly developing Myna over the last few months, but this gave us the impetus to completely revamp the website. As you can see it’s still quite minimal, but it is certainly an improvement over the old site. Here are a few technical details that might be of interest if you’re trying to quickly build out a site:

The basic design of the site is Minima from Theme Forest. Well worth spending the $9 to get the general layout and some graphics.

We’ve heavily modified the Minima theme. It has a bunch of things we don’t need and didn’t support pages with lots of text. We used Less to get some abstraction over the CSS, which makes large changes a lot easier. Use it or use Sass. These tools are basically equivalent, so just pick one and move on.

We were lucky enough to find a public domain picture of a myna bird on Wikipedia. If we hadn’t, we’d simply have bought one from iStockphoto. We retouched the image a bit in Pixelmator, which does the bits of Photoshop we want at a price we can accept.

Finally, the site is built with Jekyll. Jekyll gives us some abstraction over HTML, making site wide changes easy. It also fits into a text-editor-and-version-controlworkflow we’re comfortable with.

Now it’s time to get our new users live. Thanks, Hacker News!