Raspberry Pi – but not till May

When the Raspberry Pi was announced, I went and registered with both Farnell & RS for one. Alas I wasn’t one of the first 10,000, so it was waiting list time.

On Thursday I got the mail saying Farnell would now take my order. Yay!

Order placed, I eagerly awaited the delivery notification. Would it be a week? Maybe two? Try nearer 8 – it’s due to arrive on the 30th April 2012. I hope it’s worth the wait.


Raspberry Pi ordered!

Have just placed my order for a Raspberry Pi. Haven’t been this excited about getting a new computer/gadget since Lego Mindstorms.

My current favourite hack for it is to port a BBC B emulator to it, then wire up in an old Beeb box and use it to play HD Elite on the big TV. So 1980’s.

Speaking at Cassandra Europe

I’ll be speaking at Cassandra Europe on March 28th 2012. I’m in the “Case Studies” track, sharing our experiences using Cassandra to power high-load applications like X Factor and Britain’s Got Talent.

It looks like this is going to be a great conference for anyone using Cassandra in Europe, and I look forward to hearing more about what people are doing, and meeting some others using Cassandra in weird and wonderful ways.

A post a day

This post is about regular posting – and changing behaviour. I believe under international law all bloggers are allowed one post about how difficult posting regularly is – this is my contribution to the oeuvre!

A while back I resolved to post more regularly, but as the evidence here shows that resolution was a failure. Then recently I finished reading Switch – How to Change Things When Change is Hard. Changing into a regular poster certainly seemed hard, and I knew I’d failed before. Could Switch help me?

A few key ideas seemed like they could help:

  1. Shrink the Challenge. Instead of trying to post regularly forever, make it for a week
  2. Black and White goal. Instead of posting regularly, change to post every work day. No wiggle room there!
  3. Celebrate progress. Note I’m posting this on Wednesday, having already made 2 posts this week. Yay, I’m 40% of the way there!
  4. Instant habits. Set an “action trigger” for when I’m going to write a post each day. For me, it’s after each day’s scrum meeting.

I don’t yet know if I will succeed in changing into a regular blogger, but so far the techniques seem to be working. More on Switch in a future post…

Memcached can count – pylibmc can’t

In my recent talk to Big Data London I said that memcached can’t count. Turns out that’s not really true, and the problem lies somewhere else.

Here’s the original evidence memcached has counting issues, using Python & pylibmc:

In [2]: cache.set('wibble', 0)

In [3]: cache.get('wibble')

Out[3]: 0

In [4]: cache.decr('wibble', 1)
Out[4]: 0L

In [5]: cache.incr('wibble', 1)
Out[5]: 1L

In [6]: cache.incr('wibble', -1)
Out[6]: 4294967296L

Incrementing by -1 has resulted in memcached incrementing by 2^32-1 – a classic signed/unsigned conversion problem.

But hang on – according to the memcached spec, incr takes unsigned 64bit integers – and it’s an error to send a signed number.

Sure enough, using the ASCII protocol (with memcached 1.4.9):

get wibble
VALUE wibble 0 1
incr wibble -1
CLIENT_ERROR invalid numeric delta argument

It seems memcached can count after all, or at least refuse to do operations it might get wrong. It’s another question why memcached won’t deal with signed numbers…

So where’s the weird behaviour above coming from? It’s a couple of bugs in pylibmc – bug 74 and bug 73.

The good news? Both bugs are now fixed in the latest github version, so very soon memcached and pylibmc will be able to count. Three cheers – hooray, hooray!


UX Sketching – seeing inside the minds of your users

Yesterday I went to a User Experience Sketching session hosted by Devin Hunt from Lyst. I had no idea what UX Sketching was about, but it sounded interesting and some people I follow on Lanyrd were going, so what the heck.

If you haven’t heard of UX Sketching either, it turns out to be a way to see inside the minds of your users and experience your site/product through their eyes. Even better, it’s really simple:

  1. Find a user
  2. Ask them to quickly sketch the page/feature/item of interest
  3. Look at what they draw – and what they don’t draw
  4. Repeat until you’ve got a bunch of data points

By getting the user to draw from memory, you find out what’s most important/salient to them. One example from Devin – on Lyst they had a “Love” feature. Click metrics said people were clicking on it – but it never showed up in sketches. Turns out when they dropped the feature, no-one noticed – it was only being clicked because it was there, not because it was useful.

So when is this tool useful? Obviously, you have to have some users who have some familiarity with the site/feature. It’s no use if they haven’t seen it – so it can’t start a design process for a new feature.

What it can do is tell you where your design is working, or where it’s not. Perhaps you want reviews to be central to a buying page, but users aren’t sketching them. That could trigger a round of design work, mockups, A/B testing etc to see what raises the awareness. Maybe you’re trying to figure out where on a page things should go – looking at where users sketch them will tell you where they intuitively think they should go.

I think seeing through others eyes is one of the hardest things to do in design, so this seems like a great quick, easy way to do it.

Now off to get some users sketching…

Talk at London Big Data meetup

I spoke at the London Big Data meetup a couple of weeks ago about counting, and how difficult it is if you want to count things very very fast. My slides from this are now up here and on Slideshare.

More on the joy of counting soon, including why Memcached can’t count.