Blog

A blog of things

In conversation - Chapter 1: Thinking about Prototyping

In this conversation, we talk about our plans for the first chapter, on prototyping.

Adrian: Let’s think about prototyping… for 20 pages

Hakim: So we split up our original “Prototyping” chapter into 2 chapters: the “thinking about prototyping” one and “protyping for specific devices”. So… what are we thinking about with “thinking about prototyping”?

Adrian: (laughs) I can’t remember, why did we split it? Probably because…

Hakim: … because our publisher suggested we did… The way I was thinking about it, the second part was quite detailed information about platforms that we know exist now. And the first part is almost future-proofing the book or the ideas, because if you know nothing about What is Arduino? or What is a Raspberry Pi? How would you you go about choosing a platform?

Adrian: Yes, I think you’re right. One of the things this first chapter can do is all the overview stuff before you get into the details of exactly what you need to do. So you might read it and decide that, OK, I can discount the Arduino, but I need to look at the SheevaPlug or whatever. You could almost read this chapter to see what the issues are, and then come back at a later date to read the next chapter. When you have funding for your Grand Idea, you can come back to it.

And in the meantime you’ve got enough information to not look stupid when people ask you details about your platform. You can say “Well, I’ve thought about how much RAM I need”, or whatever.

Hakim: Hmmm, well. If you think about the kind of chapter you can skip… it’s usually known as “an appendix” isn’t it?

Adrian: True.

Hakim: But then, for the market for the book, and what the publishers are looking for, then the “specific platforms” chapter is actually quite a core chapter too. Which is why we’ve got 40 pages on it. It is almost the “infodump” part of the book. Well, there’s a risk of it being an actual infodump, but hopefully we can do more with it, make it more engaging and fun than that.

Adrian: Well, that will be all the great examples and case studies of the different platforms that you’re going to be writing up…

Hakim: Yes, it will be fun too. But it’ll also be optional, in that you could drill down into say, just the Arduino chapter?

Adrian: Yeah, I guess one of the markets is product designers or similar. People who’ll be interested in knowing about this stuff, but not needing to already know which particular device they’re going to be using. People who are looking for the overview-of-the-overview, almost.

Hakim: what we’ve got here in our Table of Contents is “Introduction to the available microcontrollers and embedded boards”, so is it a bit of a whistlestop tour?

Adrian: Well, some of it will be what is a microcontroller or an embedded board? You need this initial information about hardware in general, to explain what this all is. So it’s not just a lot of words that a product designer or whoever won’t necessarily know. Even if you’ve maybe heard of Arduino you don’t necessarily know that it’s a “microcontroller platform” or “embedded computing”.

Hakim: So it is fitting our manifesto of “IoT for humans” isn’t it? If you give the book to a 21st century human with.. well, certain assumptions about education and computer literacy… we still have lots of assumptions, but someone like that, even not a specialist in IoT or computing should be able to read the book and get something out of it. A manager, a lecturer, a parent, an interested hobbyist…

So we’ve got “Choosing the platform”. We’re talking about parameters like RAM, and capabilities?

Adrian: Processing power. What inputs and outputs are available. Sensors maybe.

Electronics… which seems to be more in the 2nd chapter. But in the Choosing your Platform section, maybe something about digital versus analogue. For example the Raspberry Pi has several GPIO (General Purpose Input/Output) pins, but they’ll be digital. Because if you were going to do analogue stuff, you’d need Analogue/Digital converters. And if you needed proper Analogue Outputs, as opposed to the PWM stuff that the Arduino does, then you’d need a DAC (Digital Analogue Converter… just the opposite way around). So that’s about the capability of the boards, and not all boards are the same.

So, for example your phone generally won’t have any GPIO pins. You’d end up interfacing to it through bluetooth etc. So a lot of this is about interfaces. Do we cover things like I2C or SPI?

Hakim: I don’t know what those are…

Adrian: They’re electronics protocols or interfaces for electronics boards to communicate at quite a low, electronics level. So similar to a PCI bus, but at an electronic level, rather than a code level.

Hakim: Well, if you think of something like the Gadgeteer from Microsoft. That had quite a high-level protocol for the electronic components and connectors.

Adrian: Yeah, some of this is about giving an idea of the possibilities that platforms might have. So you can think about what your big idea is, and what it needs to do… is it an input device or an output device… what does it need to do?

So Bubblino has a motor, so he needs to be able to drive some electronics. What computing stuff does he need to talk to the internet and control a motor and interface them? Does he need to be wireless or wired?

So yeah, the question of what networking capabilities you need: do you need to be a phone, which can work anywhere, but will need contracts with a provider. And that’s very different to being WiFi, or ZigBee, or Ethernet… So there are those sorts of capabilities.

And if you’re using sensors then how do you connect the sensors to it? What possibilities does it have for that. What processing power does the chip have? How much RAM does it have, if you’re going to have to do buffering. It’s hard to tell “is it going to be fast enough?” but some boards are faster than other. An ARM, especially a high-powered ARM is going to be faster than an Arduino, and a lot more capable. But also more expensive. So those are the things that you need to know, and how they affect what you’re going to build. Some of them will just affect the cost.

Hakim: And also the size, which is a big issue. Will if fit? So if you think about one of the IoT connected devices we’ve got here at DoES is our Doorbot. Which is a screen, and it’s a computer… so at the heart of it, it’s a computer with a screen. And the only reason it’s a “Thing” is that it’s in one place, and it’s doing a very specific job.

Adrian: And it has sensor inputs too. Like the RFID reader, which is plugged into it by USB. Having it based on a computer would make it more expensive if you were going to try to sell… thousands of them. But for 1… it’s a computer, it’s commodity hardware, and you’ve got it just lying around, so it’s effectively free.

And it can do the outputs on the screen and its speakers.

Hakim: So that’s our biggest Thing, I guess, so far. Though there was that Internet powered bus

Adrian: That’s not actually that big, I think.

Hakim: Oh, it’s a toy bus? (laughs)

Adrian: Yeah, that was the idea I think. It’s a toy bus that sits, telling you when the next real bus is going to be…

Hakim: Ah, I thought they’d actually got hold of a real bus and converted it…

Adrian: Well, we could go to the Wirral transport museum and offer to upgrade one of their old buses with a screen on a rolling canvas display… because they’re all old buses. It’d take forever to display all the info!

Hakim: I did wonder if we could use hamsters to power some sort of motor device. But that’s possibly getting more into biohacking?

Adrian: You can definitely get some sort of microbial fuel cells. There was an art project I saw where there was some flypaper that turned around, and powered itself by digesting the flies that it caught. So when it had caught enough flies it would move, and scrape off some of the flies that dropped into a fuel cell that then gave it just enough power to move a bit more.

Hakim: That’s brilliant.

Adrian: And I guess power is another factor for thinking about prototyping. If you can drop something into a really low power mode it has an impact on the cost. Especially if you think about networking protocols and wireless networking. Is power an issue, and how are you going to power it. These factors do come into play when choosing the platform.

Hakim: Our next subheading is about costs versus the ease of prototyping. We’ve already touched on costs… but why is that a trade-off against ease of prototyping?

Adrian: On one level, if you want the cheapest possible way of prototyping stuff, you can by the AVR chips from Farnell (DoESLiverpool affiliate link), and work out how to flash them yourself. And that’s harder than programming an Arduino… but you havent’ had to buy the serial ports and so on. So that’s a couple of quid for an AVR chip. Versus £20 for an Arduino. Versus £90 for a BeagleBone which runs linux and has node.js on it, and you write Javascript in order to access whether the pins are on or off.

So there are different levels… and some of it depends on what your skillset is. You could argue, reasonably, that if you’re not a coder, then actually an Arduino is easier to program than a BeagleBone. Because an Arduino is really limited and so it has a setup() function and a loop() function that run, and that’s all there is. There’s nothing else to worry about, just those two little bits, and you need to fill some stuff in, and it does things. And as long as that’s enough for you to achieve what you want, then that’s probably the easiest prototyping that you can get.

Compared to the BeagleBone, where you need to learn about Javascript, and how to use a whole Linux system. How do you make sure that your code runs when it boots up and so on… Those decisions are made for you on the Arduino, because it just runs setup(). Whereas… I imagine, though I don’t know, because I haven’t yet played with BeagleBone enough, that there are choices, just because it’s booting Linux. So you might have to stick a script somewhere if you want your program to run as soon as it starts. And that’s actually harder than the Arduino for those things. So if you’re not a coder, perhaps the Arduino is easier for you than the BeagleBone. But if you’re a coder, and you know Javascript, and you can’t do C++, and you’re used to having shedloads of memory, so that if you need a web-page, you can just download the whole thing and sift through it in place… then a BeagleBone will be much easier. Because the Arduino has more limitations, so you have to think about, and do things quite differently.

Hakim: It was funny, on the course at MadLab, there were some things that people were doing that were quite easy. And then there was one guy that was doing some parsing ,and I was thinking that would be quite difficult using C, and not having done memory allocations and so on…

Adrian: It depends. It’s either really easy, or it’s really hard. And if you can do it in one pass, and just search for things you’re interested in, then it’s really easy. And sure, it would’ve been easier for him if he could have just read it in and searched it in some high level scripting langauge. Or even in C++ but with enough memory to do dynamic allocations and searching through a string. Rather than having to do a single-pass search where you can’t go back on yourself.

But really, doing things in a single pass isn’t as hard as it sounds. But you end up writing fairly dumb parsers that can’t cope with things appearing in a different order. And they don’t notice whether they’ve been fed syntactically correct XML for example.

So Bubblino downloads an Atom feed, which is XML. But all he does is throw everything away till he gets to "published>" and then reads everything till the next opening "<". Then he has a date, and he can compare it to the other posts he’s seen, and if it’s newer, then he adds one to a counter. And then he just carries on and does it again. So he could have been fed any crap in between and he doesn’t care if it was well formed XML at all. Which is… I’m not sure if it really matters actaully.

But if you were doing it in Ruby, you’d pull it into some XML parser and it’d complain if there was a space out of place.

So, ease of prototyping. Often, if you spend more money, you can get something that’s nearer to a computer. You could imagine an if this then that app for your phone that you could tell “if the microphone goes above this level, then send a text message…” in a drag-and-drop interface. And you’re more likely to get stuff like that on higher end, more powerful devices. But they often cost more.

Hakim: well I guess that’s on the other end of the scale for many tasks, if you have an iPhone or an Android, or a high end Nokia… or a computer, say, you could prototype something and almost pretend that it was a physical device. In the case of phones they already have lots of sensors and so on. And even a computer has a microphone, a webcam… it has lots of sensors available to it. Perhaps not the same ones as an Arduino. It might not have a motor output, though you could have a USB controlled motor.

Adrian: Well, you could always plug it into an Arduino, which is the other way to do it! But one option is to do all the hard processing on the computer or phone. So for example, the Android Dev Kit is a good example of that, in that you’ve got an Android phone and then basically you plug it into an Arduino that’s got the USB host shield… so the Arduino essentially pretends to be the computer end of the connection, because the Android generally has the “device end” connector, and there’s a protocol that you can talk over USB that you can talk from the phone. So the phone does all the complicated stuff, and it talks to the Arduino to ask it for sensor readings or whatever. Then the phone uploads things to the web, or sends texts, or whatever.

I guess the first version, or the plan for the first Bubblino was that, to some extent. It was a bluetooth Arduino initially, which talked bluetooth, originally to my phone, because I was trying to write Python for S60. And I was thinking Python would be easy, because it’s just a little scripting language. So it was going to search twitter for the number of tweets, and just send a number to the Arduino, which was the number of tweets to blow bubbles for. But I couldn’t get Python for S60 working properly. That was one of the times I struggled and failed with Python. Though these days I’m getting paid to write it professionally, so I can’t be that bad at it…

And you’ll be happy to hear that I fell back on Perl. So the first iteration was a Perl script that ran on my laptop, opened a COM port that was the bluetooth connection, and then sent the number of tweets over it. Then the Arduino just looked for numbers on the serial connection… nothing… nothing… oh, a number! What’s the number? OK, we’ll blow bubbles for that many seconds.

But it did mean that it only worked when my laptop was in the same room as Bubblino, which wasn’t ideal, but worked.

And I guess that leads into the ease of scaling up. You have this cost versus ease of prototyping trade-off, where often you can use more powerful computing devices. Whether it’s just a BeagleBone, which is a more powerful embedded board, or a mobile phone, or a computer that’s doing stuff. And that makes it easier to get something up and running. But at the expense of making that one, single device more expensive. But then it depends… so the example of the Doorbot is quite good. Because it is Just A Computer. Which meant that the ease of prototyping on it was… well it runs Ubuntu, so you can do anything that you can do on Ubuntu. You can run Ruby scripts and play around with stuff like that. And it doesn’t matter, because it’s a one-off.

So there’s no concern in scaling up, because you don’t need any more, unless you get more doors… which we might do if we expand into the room next door… But even then, we’d only need two devices. Or a device with 2 screens, and a cable to the second room. But it’s still not vital to think about turning it into a BeagleBone… or a Raspberry Pi would be quite a good choice with its HDMI output to talk to the screen quite easily. But then you’d have to work out how to program for a new device. And maybe it’s still cheaper to just buy a PC than the time for one of us to figure out how to port it to Raspberry Pi.

And again there are tradeoffs where that porting might be a good learning exercise to play with the Raspberry Pi.

But of course if you were going to start selling thousands of them… at that point you might think, say the Arduino would have been harder to prototype on, but it would prove that the concept would work on a cheaper, more limited device. So the problem with developing on a more complex board, like a BeagleBone is that if it turns out that you’ve made assumptions and relied on memory allocation… then either you’re doing a complete rewrite onto Arduino, or perhaps it’s just not possible to do it, so you then find that you need a more powerful ARM platform, which turns out to be more expensive than the couple of quid that the Arduino processing power costs (if you do it in bulk).

So scaling up is a big issue. But even if you are, maybe doing it on a more powerful device makes sense, because you just want a single prototype to help you get investors to show them, and want to do it as quickly as possible. And you can always talk around that and how you’re aware that you’ll later port it to a cheaper platform for mass production. So it doesn’t have to be an issue to do it properly later, when you’ve got the investment.

Hakim: Of course there are examples of people sticking with the more expensive hardware is the Apple store, who use the iPod touch as their POS terminal. It has wifi, it has a screen, it has touch. But it has a shell, like a shield, which has a credit card reader in it. It doesn’t have a printer, so if you want a receipt it sends the information over the network wirelessly, and they go and pick it up for you. It works great for their shop. And it may well be more expensive than another solution, if they had to scale up massively. But they already have a whole load of iPod touches, as they sell them anyway, and it also shows people that they have cool technology, so it’s part of the ethos and advertising of it.

Adrian: Yeah, it’s more expensive, but they’re showing off that they can do POS with it.

Hakim: And if you think about it, the iPod touch is… a hundred quid or so? Probably less for them, so it’s perhaps not that much more expensive for them? But if you think that those big, ugly windows phone devices that courier companies like to use, and which can’t even really read a signature, because their processor isn’t fast enough, cost £1000 or so, even if you’re buying a few dozen of them. An iPod costs much less.

Adrian: They are much more ruggedized of course.

Hakim: Absolutely, but if you dropped your iPod touch, you could buy another one for a tiny fraction of the cost…

Adrian: Which, if you’re in the Apple store isn’t am issue. But if youre a postman who suddenly is without a way of delivering the parcels they’ve got, than that is an issue…

Now some of my code has lived on some of those devices.

Hakim: Windows Phone?

Adrian: No, the even earlier ones. Psion, when they were still going, and using Symbian. Later they moved to Windows CE. And even before Symbian they had some 16 bit Psion series 3 ones. And we did some of the IP stack that ran on those.

Hakim: I think they’re horrible devices though…

Adrian: it depends ont he device… some of them aren’t too bad. They haven’t got QWERTY keyboards though, which is the most annoying thing in testing, ABCDE keyboards in a weird layout. And if you don’t use them that much, which obviously I hadn’t, then when you get them in for a test, it’s suddenly like “Where are all the keys?” In theory I know where all the keys are but…

Hakim: we were trying to sell a car-rental app, so when you return your rental car the agent can click on an image of the different parts of the car and mark damage and so on. But trying to write code that ran on the windows phone was tough. First of all the version of mobile IE that they had was really limited, and we eventually ended up intalling Opera, which had enough Javascript and CSS that something a bit dynamic would vaguely work. But I kept thinking surely it would’ve been far cheaper to get an iPhone dev to do it on a modern device. And not just because it’s cool and trendy. But… tradeoffs I guess.

Adrian: Of course when I was working on this stuff was the year 2000 and iPods didn’t exist. Even the old, clunky scroll-wheel iPod didn’t exist then. Different eras!

Hakim: So, after scaling up, we’ve got “Community”. And that’ a big thing isn’t it?! In some ways, if you look at Arduino say, yes, it’s an easy platform, but if you look at the limits of the technology and the costs of it… because even if the chips themselves only cost a couple of quid, when you buy an Arduino board it’s £20-30… and you think it’s a bit crap in some ways. The memory is very small, and the capabilities…

Adrian: The memory’s very small? I don’t know, I remember when Arduinos had 1K of RAM!

Hakim: Yes, the limitless possibilities! But, even despite the limitations, the Arduinos have a whole load of mindshare, and available electronics that are compatible with them, and loads of people that know the stuff. So it makes it a very good and vibrant and useful and fun community to be working with.

Adrian: I think that makes it better than quite a few of the more powerful direct competitors, like BeagleBone or chumby hackerboard and Raspberry Pi… And the Raspberry Pi will be quite an interesting one because of the amount of attention it’s garnered before anyone’s even got hold of one… and if that turns into some sort of community, then you can imagine that it’ll be big enough that it should be easy to use and easy to develop for. Whatever project you’re thinking of doing, you can generally Google for the project idea and tag “Arduino” at the end of it, and you’ll usually find someone that’s done it, or something very similar to it. And they’ve probably shared schematics, or the parts they used, and the code, and a blog post and a video… So there’s so much stuff to easily bootrastap things.

And it’s interesting that the shields that you plug on, the additional boards, have taken off so well. And there’s that “bug” that everyone complains about that’s effectively a mistake when they were laying out one of the early Arduino boards, before there was any idea that it would be popular. But because they didn’t correct it straight away, presumably because they’d gone and got X number of PCBs made, and didn’t have the money to ditch them all and get some new ones, they just put them out there. And perhaps they were going to fix them in the next revision, but then it took off, and became popular enough that people have started building shields that fit the quirky layout of the Arduino.

So now you get boards that are nothing to do with Arduino, like the Netduino (which is obviously riffing on the Arduino name to kinda explain what it does but is all .Net based and 32 bit, with more procesing power) also replicates this weird “bug” so that it can have all the Arduino boards work with it, because they’re just electronic circuits really. So you get things replicating the Arduino pin layout and shields.

And I guess the Netduino has a lot more IO capability than the Arduino but I don’t know if it exposes it or not. Maybe it has an extra set of headers you can use if you haven’t plugged an Arduino shield into it, for example. But it’s interesting that the Arduino has taken off so well that it’s started to infect other systems with its quirks and even its disadvantages. And manufacturers are replciating those quirks because then they can tap into its community.

It does make it easier to develop stuff with this community. So for example, I’ve been playing with the Chumby hackerboard recently. It’s more expensive, it hasn’t been around as long. And there is some sort of community, but it hasn’t really taken off… and so there isn’t that way of finding answers to problems. There are forums, and people do answer things. But then the wiki talks about 3 different ways to build software… and the first 2 don’t work, because they’re the old way. So when you come to it for the first time it’s quite hard to get into it. There’s a lot to be said for the community making it easier to develop things, because there’s soemthing to tap into.

That’s one of the things of just being on the Internet, that there’s lots of explanations about how to do things.

Hakim: I guess one of the things that we’ll do in this chapter is… I guess, talk up the advantages of “community”. People who are online, in my experience, in open source communities know what the benefit is. But people who don’t know may be quite scared of… the idea of looking like an idiot in public… so going to a public forum and saying “I don’t know how to do X”

Adrian: Or of going to a public forum and saying ”I’m trying to do Y”, because they’re worried that somebody else will go “Oh! I never thought of trying to do Y! I’ll steal your idea and make my fortune, and you won’t be able to”. Which is often not what happens, because everyone’s already got enoguh of their own ideas, too many, to be worrying about stealing yours.

Hakim: so that is a different mindset isn’t it? And you can’t force people to care about community. But perhaps we’ll at least show about communities of makers, and, by showing our case studies about people doing cool stuff, show that it’s possible to speak to them, and suggest “Why not speak to your local community of makers doing fun stuff near you?”.

Adrian: It makes stuff a lot easier doesn’t it? There being a community near you. And I guess we would say that because we’ve set up a makers’ community in Liverpool, so we’re biased. But it feels like it makes things a lot cheaper, and easier and faster. And it’s what Andy Huntingdon, who works for BERG, and is probably mostly behind the hardware of the Little Printer, says we’re in the era of what he calls he “Geocities of Things”.

It’s the idea that… you had the internet, and then the web came along, and people started to write web pages. And then Geocities came up and everyone wrote web pages that looked really ugly and had animated gifs with men digging “Under construction” and weird rotating “Email me!” signs, or letters that folded themselves up into an envelope. And all this stuff that was quite ugly and vernacular. But a huge explosion of creativity of people realising that they could build shit on the web. And then it all settled down… the era of blogs arrived, where people started to use tools that made it easier to build websites, without worrying about having to build every archive page yourself. And they realised that many people wanted something “a bit like a diary” and without having to learn loads of HTML and FTP stuff.

Hakim: I guess there are a whole load of patterns that emerged, and now you talk about “blogging” and it’s a verb and a noun. But with IoT there are still patterns that are starting to get formed and we’re at a bit of a frontier that’s still to be defined?

Adrian: yeah, there’s lots of experimentation, and people who are doing things because they enjoy it, and not necessarily because they want to make lots of money. Though there are people who have ended up building businesses on it and making a living from their hobby, because they were in it early enough. And now people are starting to find it useful.

Hakim: I was going to suggest that in a way, though we can’t make people be interested in community, and if you have a corporate or closed source mindset, you might not be interested, but perhaps we can suggest that it might be a “competitive advantage” to have that mindset of sharing a certain amount of things, and trading on the goodwill of people who have the same mindset.

So, for example, on the project that I’m planning to develop as an example of the book (an IoT task timer), I was lent an Arduino to play with by you guys at MakerNight. Then Aaron from Oomlout came to visit us and I was eyeing up the pre-production IOTM kits that you’re designing with him, and got given one to play with for some prototyping the device with. And in the Perl community, I remembered that I knew an artist Tanja Orme who might have drawn an image I could use for a logo and got that on a largely goodwill basis (on the understanding that I’ll send her one of the first prototypes when I’ve built it). So I’ve had personally a lot of benefit for a project that could, theoretically, even be a commercial one. So that’s a lot of help with knowledge and advice and initial outlay on kits that I might or might not use.

So there’s 2 sides with community, and also with open source. You might not have the IP later that you can sell to earn your millions, but at the beginning it can give you a real boost.

Adrian: It’s almost the Internet way of doing things, where you’ve got more access to get word out about what you’re doing. One of the problems is that nobody knows about things. And sometimes the community that you’re tapped into can help spread the word about what you’re doing. And otherwise you’d have to buy that kind of promotion with advertising.

There are definite examples about stuff “going viral”. Bubblino’s a bit like that. I built him to demonstrate what Arduino was, and then, everyone seemed to like him. He’s been really good for marketing, if nothing else, because people encounter him and like that.

There was an example recently of some people that built a lamp which was a laser-cut yellow question-mark, which is an icon from the Super Mario games, and you turn it on and off by almost punching it, like Mario does (but not as hard, because it’s still a lamp). And these guys built it because they thought it would be cool, and it’s gone viral and went on Etsy, and got loads of sales. And one of the ways they’re scaling it up is that they’re part of a local maker community, like a hackspace in the States. And they’ve almost drafted in everyone else to build bits for them because they’ve got so much demand. And they can almost give anybody any of the roles, because people who are in the hackspace can usually laser-cut stuff and solder, or put things in boxes. so they can spread the tasks out and vary the tasks, so people don’t get really bored. And that helps the community to help people scale and sell things.

Which isn’t really IoT, but it is community.

Hakim: Not all of this will go in the book … but it’s maybe a strand of thinking that we’re quite favourable to. Perhaps the business models section…

Adrian: Yeah… it might depend on how many they’re going to sell too. There’s been a spike of interest, so they’ll sell lots of them to begin with, but then it’ll tail off quite quickly. And maybe they’ll have a trickle of orders, but in a way they can cope with that’s just a nice little side earner that they can build on demand. And they won’t have had to scale up to a huge factory that they then don’t need because the demand was short lives. And when it does die down, they can move onto building other things easily. Just build up enough products that they can build… 5 lamps, and 3 table stands.

So perhaps it is scaling up, but it’s on the lower scale of it. And you’ve got communities to tap into to cope with the big spikes. And then you’re building stuff up so that over time you might have more staff… or just make them yourself.

Hakim: That almost goes into the ethics chapter… if you think about the workfare stuff… we’d agree that unpaid work experience was a bad thing, but is using the community for work, perhaps unpaid, and for experience, say, because it’s a way to learn lasercutting. And is also a bad thing? Or do you work out how to pay all those people for the pieces of work they do?

Adrian: My assumption is that they were paying people to do that stuff. And it’s a good way for them to make some money too. But they’re not having to scale up and pay loads of ongoing wages. There’s probably a whole spectrum from people who just decide it’s too much hassle to get paid, and do bits for free, as a community help.

Hakim: I guess with a community thing, it depends a lot on fun… so if at DoES, I had to help John cut a couple of WhereDials, I’d be quite up for that. But if I had to cut 100 of them… I’d be thinking “Is he going to pay me now?” And I understand your points about making it varied but you can see that it’s not just about ethics, but also business models and organizational questions that are quite fascinating. And we probably can’t give “an answer” to them in the book, but we can introduce them.

Adrian: some of that is me infecting… did you see my blog post about craft versus manufacture yesterday, about the cufflink manufacture? There are lots of things around that. I had an argument… not quite an argument… well, I almost picked a fight with the head of the craft council at the makers’ guild event because there’s a lot of stuff in the craft council about the “purity of craft” and the “sole maker of things” who doesn’t use tools… well possibly does. I sometimes feel that “craft” stuff isn’t handmade enough if you’ve used a hammer, even, that’s too high-tech a tool to have used. The more handmade the better…

And there are definitely craftspeople doing things on their own where they do use hightech kit. But the craft council seems to err more, well, not just them, craft in the UK seems to tend more to the idea of people making things by hand, on a really small scale. Or, you get “shit from China”. And there’s nothing in between. And there should be.

And there are lots of people… like me… and I do like making things by hand, but I also like the idea of having a business that’s big enough almost that it’s competing with Tesco’s on, maybe, one specific item, obviously not on their whole range, but for example a specific IoT device, because that’s what I do.

Hakim: But if you can make 10 objects, or 100, or a 1000, or a small number of 1000s of an object without having to go through a massive industrial process then that suddenly opens up whole new markets.

Adrian: And you don’t have to try to drive mass consumption of your product to make that market, because you only need to make 1000 of them… but that’s still 1000, and that’s more than you could make by hand. And if you’ve suddenly got lots of people making on that scale, then you’ve got lots more employment in manufacturing locally. Because you often don’t get to offshoring things until you’re doing many many devices. Well, you might do even at 1000, even. But not nececessarily. You wouldn’t have to offshore that, so there’d still be more employment that wasn’t in some big soulless sweatshop where you could pretend that it wasn’t having a huge social cost.

Hakim: It would be fantastic if DoES was able to… or if some of the companies wokring out of DoES, I should say, as we’re not precisely a group or collective, were able to start to employ people to build products on that sort of scale.

Adrian: Yeah… or be employing people still locally, 20 people in Kirkdale, for example, soldering components might be roughly cost effective. And maybe it might be a bit more expensive, but maybe it wouldn’t be that much more expensive. And I’d rather have 20 people in Kirkdale, and it adds £1 to a £50 device versus outsourcing to China or India or Indonesia.

But we’re straying off the topic of IoT.

Hakim: Yes, but we’re touching on some of the topics on Part II really… But let’s get back on track. So, still on “Thinking about Prototyping”, we’ve got the subheading “open source vs closed source”. We’ve touched on that.

Adrian: Well we’ve covered some of it… though really much more on the open source side of it.

Hakim: but we don’t want the book to alienate people who do want closed source… Intellectual Property rights and so on.

Adrian: Yeah… it’s quite a personal decision when you’re doing things, and some people are more up for the closed source approach. And I suppose with us having, as we said earlier, a tendency to open source, we might be arguing that these are the advantges… I guess my concern is trying to think about things that would make me make something that’s closed source.

So, for example, many of the things I’ve built for clients are closed source, because that’s what they want, and that’s fine. But at the same time, even the Mazzini power monitor, which was my first ever Arduino project, which measured how much electricity my server used… I was always undecided because… it was tricky and hampered it a little, because you get some people who talk about things being open source while not really being, because there’s a cachet about the community and promotion that you can get if you go “look at this cool open source project I’m doing!”

There was a sensor board recently that was using “the wrong Ethernet chip” for things, and I took issue on some level with it on twitter, and I asked why there were using that chip because it doesn’t do TCP/IP properly, so could cause problems with not enough buffers and so on. And his defence was that it doesn’t matter, because he wasn’t going to send lots of data with the sensors, he was only going to send small packets, and he could code around those problems. To which I replied that he was supposed to be an “open sensor platform” or similar… I forget the details, so basically he was saying he’s open source. And he replied that of course he was an open platform. But for me, an open platform means that I could put whatever sensors I like onto it, and not just whatever sensors he’s built. So that’s him, in my opinions, being only partially open, while trading on the idea of openness, until you dig into it.

And that’s not necessarily a problem but… I’ve seen the flipside because when I was building the Mazzini stuff, my take on it has always been, and still is, despite the fact that I haven’t released anything for it yet, is that I’d like it to be open source… but at the same time, I like to pay the rent, and have food, and be able to live. And I guess some of that is just a fear to some extent. And some people who embrace the open source thing properly do seem to do OK out of it. But maybe that’s just that the people who are popular enough on the internet are the ones who were successful and picked the right fields to be in. So fields like building little add-on shields for the Arduino… there are a lot of people like… Jimmy Rodgers, who does the LoL shield, which is the Lots-of-LEDs shield, which is just covered in LEDs, and it’s quite easy, with some chips to make it easy to program. And I think he doesn’t sell them as such, but he makes some PCBs and then Adafruit and Oomlout and the standard distributors sell it and he gets a royalty for that. And I think he does reasonably well out of that and can then tour round the world going to makerfaires and hackspace meetings doing what he wants. Assuming he still wants to do that. It seems to be what he’s enjoying at the moment, and it facilitates that, and that’s cool. But that’s the sort of product where you think, the people he’s selling it to are the people in the Arduino community, who are open to that sort of things, and supportive of open source community.

So those sorts of products, where there’s a community you’re selling to that understand open source are more likely to pick the open source version than the closed version, because they feel… even if they don’t do anything with it, that they can hack on it. And it’s one of the factors in me buying the car stereo I’ve got… because it’s just Linux and I can do cool things with it. And I’ve not. And I’ve had the car stereo for a decade… but I could!

A lot of geeks buy shit that’s open source just on the off chance. But that’s geeks. And they’re obviously a subset of the population of the world.

Hakim: So… one good example would be: is Bubblino open source? And by that I guess I mean is the Arduino code, and the schematics, and possibly as a separate question, the backend webserver code that you use to configure him open sourced?

Adrian: that’s a very good question… because he’s a mixture, I suppose. So, the Arduino code is on Google Code, and it’s available. It’s one of the examples I use in my IoT course, and it’s one of the exampels that will be in the IOTM kits, when they go on sale. So yeah, the code for Bubblino is open source. The schematic’s fairly simple. And it is in the slidedeck that I gave at the first Barcamp Liverpool, when Bubblino was born. But I suppose I haven’t gone out of my way to publish that. Partly just because it’s really trivial. It’s just a transistor, a resistor, and a diode, driving a motor. It’s not complicated stuff. I’m not quite sure why I haven’t bundled that as part of it. Partly round tuits, I suppose. Partly I do make money from selling Bubblini… so part of me thinks the Code is the most important bit of it, and what you hook it up to, the thing, is reasonably easy to work out… and if anybody’s asked me, I’ve generally pointed them in the right place, but I’m not got around to publishing it anywhere particular.

And the backend code I haven’t published. Partly because it felt a bit like one of the ways that I differentiated the product… with what made sense for how to configure one of these devices. And so it felt a bit more like a “trade secret”. And it’s not that hard to work out. If you got a Bubblino you could packet sniff him and work out what he’s doing. Of course that code isn’t released.

Hakim: Of course I’ll be asking you for tips about that…

Adrian: well really, there’s not that much to it. I probably should release it, but at the time it felt like it might be something a bit more of a commercial advantage…

So… Francis Irving, the CEO of ScraperWiki, talked about it in the Opensource Entrepreneurship session that he and I were on the panel for during GEC week in Liverpool. He has this idea that you can use open source as a weapon… where you open source things that aren’t core to your company, and you do it quite aggressively, to undermine your competitors. So the example he uses is that Google had this idea of the server racks, which are commodity hardware, but they’re still quite secretive about how they’re wired up and what power systems they use. And they talk about the fact that it’s “just commodity hardware” so people think it’s just racks of PCs effectively, but… once you start trying to put racks and racks of PCs together, and talk to them in a situation where any one of them might fail…

So there are some secrets, and some knowledge in that. And Google saw that as one of their competitive advantages. Now… Facebook have similar issues, in that they need lots of servers to cope with their processing. And they decided that they’d open source all of how they built their server rack farm, because that undermines Google. Now suddenly Facebook are the company who are publishing this information, and the community hopefully supports them and gives them kudos. And feeds in new ways to do it better and improve it. So suddenty their server facility costs drop a bit because other people are doing some of their work for them.

Hakim: Which is also the fact for the Amazon EC2 cloud sutff, which people have published clouds that run to the same API, because it’s a de facto standard, and so on.

Adrian: Google do do this a lot. Like the undermine Apple’s revenues by releasing a phone OS that’s predominantly open source, and they do a browser that’s mostly open source. But the thing is they don’t open source things like their search algorithms, which they’re ridiculously secretive about… so they talk about how everything should be open source, and then neglect to mention that what they really mean “everything apart from things like search algorithms, because they’re quite important to us”.

Francis’s take is that you should open source everything that isn’t core to your business. You find the thing that’s your competitive advantage and you don’t open source that. But everything else is just ancillary and supports you, and you should get the benefits of the community for that.

I’m not totally convinced that that always make sense. Because there is a cost to open sourcing stuff too.

Hakim: Yes. Even just getting it to the standard that you’re happy to release it to the public. And the effort of publishing it. Though these days the barrier to entry is lowered with things like git and github.

Adrian: Yes, but you still have to cope with people asking you about it if it doesn’t work properly. Or cope with the fact that you get thought about badly if you don’t maintain it properly and you don’t respond to bug reports.

Hakim: There are definitely different ways of interacting with the community though. So for example in the Perl community that I know well, there are many companies who don’t publish a lot of code necessarily, but will sponsor the conferences, or drinks, and very noisily hire a lot of people, and a lot of good people. And maybe they’ll send people to conferences, which is a good thing.

Adrian: And perhaps they will be flexible about letting people work on the open source code while they’re using such and such a module anyway. So the company may pay for the maintenance or ongoing development of code.

But again… we haven’t come up with many reasons to have closed source.

Hakim: Well, we’ve agreed that people need to eat… and sometimes and sometimes it either is, or seems to be, important to get coin at the end of the day.

Adrian: The other reason that Mazzini hasn’t been open sourced… and, well, I haven’t made any money from it either, but though I’d like it to be open sourced, but initially the reason I didn’t from the start is that I was expecting that it could become mass-market. And once something is mass-market, you move outside the community that cares about whether something is open source and you’re into the market that only carea bout how much it costs…

And you’re also into the size that it’s worth copying you. And there are lots of companies in China or wherever that could just copy it. And you’ve done all the development, and then they can use their existing marketing and distribution channel clout to make profit. Just getting-to-market know-how that you don’t have, to profit from your idea.

And depending on what it is, that might just be a bit annoying, but you can still do really well out of it, or you might get nothing for it. And some of it is a misguided feeling at times…

I’ve worked for companies that have been just paranoid about using open source. And I don’t know if that’s changed now, because the last time I was in a company like that was in they year 2000, and I think the landscape has shifted a lot towards open source, and it’s more accepted and understood. At least in software.

Back in 2000, you almost weren’t allowed to even download open source, because if you looked at the code, and wrote something closed source, you might be using ideas from it, and it might be too much of a risk, because you could infected by it.

Hakim: Even though the lawsuits about this kind of thing usually happen the other way around…

Adrian: Companies are often a lot warier about things than you’d think. So while you might think they’d look at open source and go “yay!” and just steal it, maybe they wouldn’t, because they’re worried about the GPL infecting everything they’ve ever built… and if you’re a closed source company, that could be disastrous.

Hakim: This is fascinating stuff.. when we talked about having a business models chapter, I think both of us who aren’t MBA graduates or whatever but thought it should be there. And I wondered how interesting it would be to write, but I think it really will be.

Adrian: I think hard to write maybe. But definitely important to have in there. I guess some of that comes from what DoES is doing. And the reason I’m involved in setting up a maker community in Liverpool is that the IoT is at the early point that there are lots of fortunes to be made. And of course I’d like one of those fortunes to be mine, but I’d also like some of the other fortunes to be other people in Liverpool. I don’t want to be the only IoT millionnaire in Liverpool.

(laugh)

Hakim: That’s a great ambition.

Adrian: So I think the business models side of things is important. Because some of the people who the book appeals to won’t be… It feels like there’s all these companies like IBM and HP and Cisco and big lumbering IT firms going “Excellent, there’s a whole new market to conquer, and make loads of money in consultancy fees from”. And they’re really ready for it.

Whereas the people at the more fun, human, enchanted objects end, who want to make the world nicer rather than just grinding money out of a new way of doing things with computers, aren’t going to be as business savvy and as business minded. And I suppose we’re trying to infect them with the idea that there are things they can do without becoming IBM.

Hakim: It is, again, the idea that IoT is a “disruptive technology”. And again the book is largely about IoT for humans…

But.. a counterexample, think about the iPad which has been referred to as a piece of “magical” technology, and which does reportedly make people very happy (and possibly very poor, as they’re not cheap), but people who like them are delighted with them, and think of them as being a fun piece of technology, on a very human level… So it’s not just that big corporates are selling efficiency driving machines. So we are sometimes in danger of stereotyping.

Adrian: Yes, I am in danger of that (laughs). I’ve had this argument almost with someone from IBM. At the IoT thing in London that I spoke at in December there were at least 2 IBMers in the audience, and I think on twitter somebody complained about IBM and I tweeted about “smart parking meters” because they seem to be becoming almost the “smart city” equivalent of the Internet Fridge. And it may be usurping the internet fridge as the really crap ubiquitous example of what this technology is going to look like.

Because… the internet fridge is how the IoT will enter your home, because you’ll have this fridge that will order stuff for you. And then the IoT parking meter will suddenly have all the parking meters in the city internet enabled, and you’re just driving into the city and need to park somewhere, and your satnav will tell you where the nearest parking meters are, and how much they cost, because you could have variable pricing, and offer to book one for you. And maybe that’s more efficent, or maybe it’s a way to gouge more money out of you, because rich people can park where they like and everyone else gets the second rate slots… which is a whole other ethics question.

So there was some study that showed that carbon emissions would be lower if we had smart parking meters, because the average car circles 5 blocks in San Francisco before it finds a parking space. And on some level that sounds like a good thing to have. But it gets to the point that the parking meters are aware of who’s parked there, and will bill you automatically. So you’d never get away with not having change and needing to nip into the newsagent, but because the minimum fee is an hour, you’d have to pay for that whole hour.

Whereas as we are now, you can be a bit furbi as the Italians say, and “get away with it”. It’s those edge-cases where, yes, strictly speaking you should pay for that 1 minute, but maybe you can get away with it, and sometimes you have to pay a fine. So it’s about mindsets about rules, and whether you should be flexible about those rules.

Hakim: What about if you think that the technology is disruptive… one of the things it’ll disrupt is that it suddenly becomes possible to bill by the minute. So now you don’t have to pay for a minimum 2 hours parking, but could pay for just that minute that you popped into the newsagent. And even things like dropping a passenger off, or loading shopping into your car, could be paid for, totally legally, and automatically, rather than having to chance it and hope for the best. And maybe if you’re only paying pennies for that, you don’t care.

Adrian: Though it also depends on whether the city is expecting its spaces to always be full. And there’s that they want to cream off as much as possible, so may change the billing rates to protect their revenues.

Hakim: But at some point, there would be legislation to prevent councils creaming money in that way.

Adrian: But then you suddenly need loads of new legislation…

Hakim: Yes, and that’s why we call it a disruptive technology. You can’t now guess whether it’d suddenly end with people paying less, or more money on car parking. Or whether people would then stop driving in at all, and that would stop footfall in cities, and whether that would change the pricing by market forces.

Adrian: Well, I’d argue that if you stopped people driving in, that wouldn’t necessarily stop footfall. You might get more people moving back into the city and using thir cars less. Which would reduce carbon emissions much more than finding a better way for people to circle city blocks for parking…

But some of the problem with smart meters is that they’re trying to optimize for the wrong problem. They’re trying to optimize for people driving into the city. And they should be optimize for people getting into the city. Which doesn’t have to be with cars.

So… at this Smart Cities thing at Daresbury, there was an IBM rep talking about smart parking meters. And he was suggesting that the city could work out who hasn’t paid their parking, so it would be easy to find them and slap a ticket on them. His claim was that the parking wardens would be able to sit in a local coffee shop enjoying a cup of coffee, waiting for the system to tell them there was a car that needed ticketing… because of course that’s going to happen, and it’s not just going to be a way to reduce jobs.

And it’s that underhand thing about how amazing technology is and how it’s going to make the parking wardens’ life so much better, washing over that fact that the parking warden is going to be out of work… and that could be a good thing if there are other better jobs for him.

So one level of IBM does that kind of thing. And I made some comment about that, and Andy Piper who has since left IBM (not because of that, I’m sure) and Nick O’Leary, who are both really good guys, and engaged with the community, and doing really interesting things with IoT ,and worked with IBM tweeted back pointing that out… and that’s the dichotomy with a Really Big company like IBM. There’s the cool people, and the sales droids trying to improve parking revenues… and I’m not sure that the end of the company is really that useful.

So maybe if the book starts to encourage more debate about that, it would be a good thing. Because tech comes along, and it has impacts, and we should try to discuss them. And I don’t know how easy it is to put things back into the bottle…

Hakim: Well, I don’t think you can. You have to be aware that there isn’t a grand narrative about technology coming along and just automatically making people happier. Technology comes along and some of the impacts it has were positive and some were negative. If you ask, were the Luddites wrong to smash automated looms. And to some extent they were, and to some extent they weren’t. The looms did change their craft, and their jobs, and their lives. And did they want their lives to change? Of course not. And yet now, are we happy that the mechanical looms came in and paved the way for computers? I guess so, mostly.

Adrian: Some of it’s about the human thing again. There’s a social cost to new technology coming along and disrupting things. I don’t think you can stop it, but you shouldn’t just wash your hands and say “oh, that’s just technology’s fault.” It’s not our fault that someone invented containerization and put the dockers out of jobs… well, on the whole it’s probbly better because people don’t work this really grueling and dangerous manual labour, but at the same time there’s a whole generation that suddenly had no job, and then society needs to absorb them and cope with it.

Maybe we could start to have these discussions before rather than afterwards.

Hakim: And that awareness also lets you more easily spot and callout the kind of corporate bullshit about happy parking wardens and so on too.

Adrian: We still haven’t got very pro closed source have we? But I guess we can talk about IP protection and some of the tings you could protect. Because you can’t protect some things… we’ll have to do some research on that.

Hakim: True, but I think the examples about your projects for example, and which bits were open sourced and which not, and the reasons, are quite good material to start with.

My task timer project will be entirely open source, but of course that’s partly as an experiment, and partly because I’m specifically writing about it for the book. And of course partly because I don’t have my wage riding on that.

Adrian: Yeah, that was different for me wtih Mazzini, because I’d just spent a year in Italy not earning very much, but spending quite a lot, and just moved back to Liverpool, where I didn’t know anybody, and had a huge amount of debt from enjoying myself too mcuh in Italy. At the same time I did this was at the time of the global financial meltdown, so really bad timing.

I went to Italy on the back of a lucrative 6-month contract with Motorola, and hoped that having no distractions there would let me focus on… some stuff that didn’t work out. Which was cool, hopefully I learnt some stuff from that. And I did start playing with Mazzini and Arduino, which has defintiely worked out in the long run. Then I hoped I’d just find some work in the NorthWest, but it took a while to get hooked up with the community.

Hakim: Yeah, that took me years too to find the Liverpool tech community.

Well, we’re almost at the end of the Table of Contents for Chapter 1. We just have “Scratching an Itch” I guess it’s what people often talk about with open source. But it’s also about the idea that you can just want to do something and do it for fun, without having to believe there’s a market for it.

Adrian: You also need to “eat your own dogfood” as the phrase at Microsoft was. Because you should be using whatever you’re developing, because you’ll find out more about it as you use it. And maybe laern more about who you’re selling it to. But I think you’re right, it’s almost not quite “just for fun” but “this is useful for me”. Because it doesn’t have to be a fun thing for you, it could be a completely practical thing for you that makes your life a bit easier, using IoT.

Hakim: And I suppose if you do use it, then you can be more aware that there is a market because “people like you” might also want to use it.

Adrian: That’s not a big section maybe. Perhaps we move it to the introduction, or to the open source section.

posted by: hakim
blog comments powered by Disqus