08 October 2008

There’s some interesting discussion around Matt Jones’ post over at Schulze & Webb‘s Pulse Laser, where he considers what happens when you apply Kevin Kelly’s ideas around “new economics of scale” for craftsmen and artists to products.

Matt writes:

I joked with Matt and Jack that they should put the price tag of producing a prototype out there, and see who wanted one – or perhaps the price of a short-run of limited edition Olinda, which would reduce it perhaps from four figures a piece to three… Or perhaps the next generation of Olinda, with their input?

There’s some interesting discussion in the comments on the post around whether fans would be interested in constructing or assembling products they’re fans of: Chris Hand comments that

…it’s the soldering and assembly that’s the stumbling block for most who want to [look into limited runs]…

I really like the idea of products having fans. It’s often the early adopters of new products who convince their friends (who often represent a more traditional market) to make the leap. Those thousand “true fans” have the potential to be the people who take the product to a wider audience.

“Fans” act as an intermediate layer between the product and a mass market: they evangelise and amplify it. If you want to make a pun out of it, you could call them middle fan-agement. They take a product and enthuse about it to a wider audience; crowdsourced marketing, if you like.

But what if you went a step further – what if you called upon your fans to actually build the product, in the kind of short runs Jones hints at?

Imagine, for my purposes, a product along the lines of Schulze and Webb’s Olinda, but perhaps in a slightly cheaper price bracket – low three figures at most. The device is still reasonably expensive; however, it has enough fans to easily justify a short run. Rather than consuming S&W’s valuable time with soldering, the early adopters – the fans – buy low volumes of kits. More than one kit per fan – ideally, we’d want people to purchase around five. There are 1000 units of the product, but we only need 200 people to assemble them. Maybe even fewer than that, if somebody’s particularly talented or enthusiastic. There’s no burn-out, and the expense is much more reasonable: everybody’s only making five devices, rather than a thousand.

To continue with the puns, we could call this fanufacture.

Your fans manufacture five kits, and resell four, keeping one for themselves. Of course, they’ve already paid for the kits (much like a Big Issue vendor buys all his magazines up front before he resells them), so S&W are in pocket, and sales is being performed by someone already enthusiastic about the product.

And you don’t have to sell – you could give them away, to parents, or to friends, to seed the network of a social product with keen, happy users, and at the top of the network, a layer of fans.

There are obvious catches – quality control is a screamingly obvious one. But it’s always amazing how far fans will go for a product they like. Look at the community around Moo‘s printed products, for instance: full of enthusiastic fans, ready to not only spend more money, but evangelise about the product to friends and family.

Fans don’t just exist as the core audience you need to make a product successful on any terms; they could also act as a gateway to widespread, mass-market success, and embracing their skills and enthusiasm to outsource tasks you might not otherwise have the time or budget to perform seems like a logical evolution of the fandom Matt describes around products.

Some photographs from last week, when I went to see Gotye at Bush Hall last week, supported by the excellent Rod Thomas.

I love taking photographs of gigs; I think it might be my favourite genre to work in. I’ll never go purely for the photography, though; I have to enjoy the music too. It’s why I’ll always make an effort to indicate to any artist that catches my eye that I’m really enjoying what they’re doing – you’ll see me tapping my feet or grinning whilst I shoot, if only to indicate that I’m doing this for more than the images. I also find that I tend to take better pictures of artists I’m enjoying more.

I think I got some good pictures; the gig itself was great fun, too. I’m liking the new sensor’s low-light capabilities a lot.

Obama for America, the MMO

07 October 2008

Almost everybody’s linked to the Obama ’08 Official iPhone Application by now. With just cause, as well; it’s a nifty, attractive piece of crowdsourced software development that focuses on a single task that’s well suited to mobile – canvassing – and provides the amateur campaigner with the tools to canvas more effectively.

Skimming over the official page, though, I couldn’t help but notice this in the list of features:

See nationwide Obama ’08 Call Friends totals and find out how your call totals compare to leading callers.

So whilst you’re canvassing your friends and recording just how many of them are going to vote for Barack in November, you can also compare yourself to how everybody else using the app is doing. In one click, you’ve got a massively multiplayer high score chart – and of course, you’re going to want to beat everybody else on there, so you go off to canvas some more.

Obama for America just launched an MMO, and nobody noticed.

  • "There’s a lot of great technology imagery… Here’s a sampling of stills depicting the awesomeness:" Beautiful. (If I had to have a favourite film, it would still be The Conversation).
  • "Normally, one of the first things that admin will do when they set up their blog is to go and remove the Hello world! post. But for this blog, we’ve decided to keep it. The feeling a coder has when they see “Hello world!” for the first time on the tool or system they’re creating is a great feeling. You’ve just given birth to something. It’s still young, fragile, and only a hint of what it someday will be. But it’s alive. Something you’ve made with your own two hands is starting to breath. It has begun."
  • "Our internal research has shown that the return of netbooks is higher than regular notebooks, but the main cause of that is Linux. People would love to pay $299 or $399 but they don’t know what they get until they open the box. They start playing around with Linux and start realizing that it’s not what they are used to. They don’t want to spend time to learn it so they bring it back to the store. The return rate is at least four times higher for Linux netbooks than Windows XP netbooks." That's interesting.

Making things is fun. It’s satisfying to watch things spring forth from nothing, made by your own hands.

The greater the gap between your own capabilities (or your perception of them) and your output, the more satisfying – not to mention bemusing – the process is. That’s why Moo‘s public API is so exciting – using nothing but code, you can create real, physical, things. Imagine that! Objects you can hold that sprung forth out of bits and bytes.

I mentioned last week that I’d worked on extending Ruminant, a Ruby library for interfacing with Moo’s API, to also handle the creation of stickers. I wasn’t doing so purely out of generosity, though; I had a project up my sleeve that I wanted to work on.

I can now show you the results of that project. Why only now? Because now, I have the physical products in my hands. I think it’s really important with something like the Moo API that you only talk about what you’ve made when it’s actually real – no showing off code and saying “oh, they’ll be here soon“. You’ve got to make the things.

Anyhow: now I can tell you what I was up to.


These are two books of stickers, made from of my most recent photos on Flickr. They’re built by taking data from the Flickr API, processing it on my computer, uploading it to the web, and sending it to Moo’s API. This is a single shell command. You fill out a configuration file with the important details – such as your API keys for both Moo and Flickr – and run the file. A short while later, you’ll be asked to pay for your stickers, and off you go.

The fun part of this isn’t the whole one-step thing; it’s what goes on when we process the images. We don’t just print them straight, you see.

Another short aside: making real things out of code is fun because you don’t think it should be possible, and image-processing is actually similarly entertaining, just because it feels like it should be harder than it is. Most “easy” programming comes down to processing text in, and text out. Images seem like they should be harder. In fact, images are now much easier than they used to be thanks to things like GD and ImageMagick. I had a lot of fun playing with RMagick, and it wasn’t difficult at all.

So, what did I make?


The first are what I called Dadaist Photographs. Moo stickers are small; it’s quite hard to see a proper photo on their small dimensions. So why not make something at once very vague, and yet also entirely precise? That’s what these are. The background of the image is the average colour of the photo, determined by summing the red, green, and blue values of each pixel in the image, and then dividing each of those by the area of the image to get the average red, green, and blue values – and then making a colour out of those. In the foreground, we super-impose the title of the photograph in text. This is, as you can tell, somewhat silly. But! It’s a hyper-realistic single-pixel photograph, and ideal for Moo’s stickers. (A quick note – I didn’t quite add enough padding to the text on these. I’ve learned my lesson for next time).

Whilst I was working on that, I had another fun idea. It turned out to be just as easy to build, as it resuses most of the same code as the Dadaist Photographs. This let me abstract lots of things out, and at the same time learn how to write slightly tidier object-oriented Ruby. Anyhow, a short while later, and we had these:


These are less silly, and to my mind more beautiful – they render wonderfully on paper. They are very simple to make. First, we squash the photo down to being a 500×500 square. Then, we take the middle row of pixels in the image, and replace every row of pixels in the image with the middle row. The net result is essentially a “stretched” image, based on a single row from the image. RMagick made this very easy. Like I said, I think the results are very beautiful, and it’s amazing how easily identifiable they all are.

I wrote these by first creating the image processing code. That’s the stuff I was least familiar with, and took the longest to get my head around. Once that was done, it was relatively easy to bolt proper Flickr API import on (thanks to the Net::Flickr gem), and subsequently take my processed images and throw them directly at Moo’s API, thanks to Ruminant. A small amount of tidying, abstraction, and the creation of simple config files later, and we were done.

The only slight catch is that Moo need to get pictures from the public web. I’m running my script locally, because it’s quite processor/memory intensive, so the script SFTPs the pictures to a destination of your choosing before sending them to Moo.

But that’s it. It’s one click. It works most of the time (but with 90 images sometimes chokes a little; still, it’s not hard to salvage that by generating the XML for the order yourself). Because of the processor/memory overhead on rendering the images, I haven’t put this online as a web tool – I’m still thinking if there’s an easy way to do that. This could end up on EC2 one day.

What I’ve done instead is to put it on github, so you can at least see the code to learn from it, and, if you want, download and run your own copy. (If you’re not sure what to do: install git, and then click “clone” on the github page to get the command to type to clone the repository), I can’t guarantee it’ll work on your machine, and I can’t offer any support to help you get it running, but I hope you have fun with it regardless.

So there you go. First, an idea; then, the physical product; finally, the code that makes it all work. This doesn’t serve much real purpose, I’ll admit, but it was a fun making project, and it’s hugely satisfying to see how easy it is to make things out of pictures and paper with code, starting with a simple idea.

I’m not sure if I’ll take this any further – it stands alone quite nicely – but for starters, I’m going to see if I can extend Ruminant to handle other product types – though for various reasons, that might take a little while. If I do anything with it, you’ll hear it here first. In the meantime, I hope this serves as a little inspiration for how easy it is to make fun stuff with Moo, and perhaps that my silly, surreal stickers raised a smile.