Never Let Me Go

Kazuo Ishiguro


This is a very accessible piece of literary fiction that describes the experiences of a group of adults growing up in a near-future distopia -- I won't say why it's distopian as this comes out gradually over time. There are clear parallels with Brave New World and The Handmaid's Tale: the closest parallel I know of the movie The Beach, which would offer a more direct and less literary approach.

Finished on Sun, 13 Oct 2013 06:09:35 -0700.   Rating 3/5.

Scratch: visual programming for Arduino

For some people, traditional programming is daunting. This needn't be the case, and there are several more visual programming studios available -- one of which has now come to the Arduino.

Scratch is a long-running programme from MIT that lets non-programmers -- and especially kids -- get started writing complex programs. It comes from the family of languages that include Squeak and Etoys, all intended to demystify programming and computers.

Scratch has now come to Arduino by way of S4a, that lets people develop sketches using a very visual approach:

A Scratch program

It's hard to describe exactly how this sort of visual programming works, and it's definitely not suitable for all tasks: typically it's better for exploratory and experimental, "play" approaches rather than more detailed and complex processes. But it'll be great to see whether this is appropriate for many of the applications the Arduino finds a home in -- and even more so to explore it for what we're trying to do here at Citizen Sensing.

Why Britain is at War

Harold Nicolson


I find books like this fascinating: history written during the events we always treat as happening together. This little book was written as a propaganda piece during the "Phony War" of 1939, to explain to the British people why the war was happening. The author had been a bit-player in the negotiations of the Treaty of Versailles at the end of the Great War and, as with the work of William Shirer, this the writing an immediacy that it might otherwise lack -- perhaps at the cost of historical perspective. Still, it makes me want to read Peacemaking, 1919, Nicolson's memoir of the treaty-making (assuming I can find a copy).

Nicolson's observations are acute, and his description of the history of the run-up to the Second World War feels quite modern. It's interesting to see that it was possible, at that time, to make the same assessments of events as we make now. He's also gentle on Neville Chamberlain -- more so than those who followed Churchill's rather harsher model were in the immediate aftermath of the war -- and again this makes him feel more like a modern writer.

Finished on Sat, 05 Oct 2013 08:42:24 -0700.   Rating 4/5.

Bury My Heart at Wounded Knee: An Indian History of the American West

Dee Brown


The history of Manifest Destiny written from the perspective of its victims.

This isn't an easy read. The central characters are all doomed from the start by their weakness and lack of understanding of what is motivating their other side. However, what comes through clearly is both the nobility of the Native Americans in the face of their own destruction, but also the cruelty and capriciousness that led the new settlers to misunderstand their motivations and desires.

Stronger than this, though, is the Victorian hypocrisy of the settlers and weakness of the US government during the period. As soon as there's any value perceived in Indian lands, treaties are torn up and "re-negotiated" to their detriment. These depredations are all accompanied by the most suffocating cant about what's good for the tribes, or how much value they'll obtain for giving up their "worthless" land. This is what makes the story resonate, for me. It's not that the Native Americans were dispossessed of their lands: that's normal practice in an invasion and, while possibly deplorable, is at least commonplace in history. What isn't common is to assert, apparently sincerely on some people's parts, that the dispossession is happening for the good of, or to the benefit of, the dispossessed. It shows the settlers as unable to conceive of the Indians as partners with whom one treats seriously -- never mind as equals -- and provides a fig leaf behind which to hide their direct or indirect destruction.

The government also comes through as weak, in the power of vested interests and cabals of plotters, and unable to enforce its decisions over space or time. The people on the ground almost always have a different perception -- sometimes better, sometimes worse -- of the situation, but the lack of control means that these perceptions are of no use in improving in the long term how the Native Americans are treated. Perhaps this was inevitable at the time: reading in our own time, however, it's hard to think of the federal government being so helpless against the States or even its own agents.

I think the question of whether it was even conceivable that Indians and settlers could have lived together peacefully remains largely unanswered and subject to too many imponderables: if the Indians had been left enough reservations, if the central government could have prevented settlements from encroaching, if the railroads could have gone through without conflict, then perhaps. The fact that none of these approaches were ever tried with any seriousness does no credit to those involved either locally or nationally.

Finished on Sat, 05 Oct 2013 08:34:01 -0700.   Rating 5/5.

The Disappearing Spoon: And Other True Tales of Madness, Love, and the History of the World from the Periodic Table of the Elements

Sam Kean


A romp through the lesser-known facts of the periodic table. I think anyone with even a basic interest in science would find this book entertaining and at times fascinating. It has a broad spread that includes scientific facts, the processes of discovery, biography and human rivalry -- often in the same paragraph.

I can't say I like the author's style, though: it's too "bouncy", too frantic to entertain, and the content is sufficiently absorbing not to need such a treatment. That's purely a personal preference, of course, and another reader might find it exhilarating.

Finished on Sat, 05 Oct 2013 08:19:31 -0700.   Rating 3/5.

A non-prophecy from ten years ago

Something I said ten years ago comes back to not haunt me: in fact, I was quite pedestrian about the whole thing.

My friend Rich was house-cleaning and came across an interview that I did with the Irish media about ten years ago, while we were running our company, Aurium. One thing really jumped out at him was the answer I gave to one particular question:

Q: What will we be using to access the Internet 10 years from now?

A: I don't think we'll even think about it in those terms. It's a bit like asking what sort of device you use to access the telephone network. In 10 years the internet will be so ubiquitous that we won't even think about it.

The interview

I remember giving this interview, and it feels weird in a number of ways. Firstly, when you see an "expert" being interviewed in a newspaper, don't assume that he's there because of his expertise. He could simply be a randomer with a good PR firm, which is what I was: the article was "placed" as part of our public relations campaign. Secondly, I was right in terms of where the technology was going, but that wasn't due to any vision on my part: it was simply a function of being part of the development of that technology and seeing from the inside where it could go. There are plenty of alternative futures where things happened differently and the internet didn't take off as it did. Had we had a major security crisis or breach of privacy in the first few years, that might have killed people's confidence enough to damp-down the uptake.

What really struck me, though, was exactly how pervasive the technology did become. As it happens I'm in London on business with my colleague Graeme, and it's instructive to look at all the things we did on the internet -- and indeed from mobile gadgets. Firstly, I checked-in on the British Airways cellphone app and so didn't need a printed boarding pass. (This is an application we first suggested ten years ago, incidentally: a boarding pass is just a token, so why not text someone a long number to identify themselves with?) Then we arrived not knowing where the hotel was, but a combination of the Tube Map app and Google Maps soon directed us via train and foot, from Gatwick airport to Pimlico. We looked up places to drink and a place for dinner the next day using TripAdvisor, again navigating there with Google Maps, and made recommendations for the various places for other travellers. (Oh, and incidentally checked in for the return flight while sat in the pub -- very civilised, I must say.) We found a coffee shop while we were waiting for our meeting, which itself took place in a venue whose location we also didn't know relative to our hotel. I collected the different bookings and details in TripIt, which shared them into my Google Calendar so I didn't have to take note of them. And I took some pictures and shared them on Facebook.

But actually the most surprising thing isn't the technology, or the mobile device, or the fact that it all actually works together in practice: it's that real people actually do it, and I don't think I'm unique in using all this mobile internet technology when travelling. We pretty much take for granted the idea of finding our way in a new place without preparation: neither Graeme nor I ever even thought about how we'd find the hotel or the meeting venue beforehand, we just got up and did it.

Looking back, I'm not surprised we (the technology community) got the technology to work; I'm not even really surprised at the availability of mobile internet and a load of apps to make use of it; but I must confess to being slightly surprised that at the acceptance of all the gadgetry amongst the general population, enough to generate an ecosystem of companies who work together and create more value from their interoperability. It's something we always said would happen, but it's quite strange to see it in operation, and it's a positive achievement we shouldn't forget about.

The Unwinding: An Inner History of the New America

George Packer


This is a fascinating book that somehow fails to satisfy. It consists of a series of biographical sketches -- some short, some extended, of people and places -- that catalogue the "unwinding" of America's social contract over the decades since 1970: how the decline of well-paying, stable, blue-collars jobs and the rise of big-box retainers has destabilised society.

Some of the details are extraordinary, such as the evolution of a community activist in Youngstown, Ohio, in response to the collapse of local industry, or the travails of Tampa, Florida, in the face of a housing bubble. As a whole, however, the book doesn't make its point very clearly. The addition of a descriptive or analytic conclusion might have helped, and indeed I was led to read the book by an interview with the author on Irish radio in which he provided exactly this additional analysis.

Finished on Sun, 08 Sep 2013 03:25:26 -0700.   Rating 3/5.

Uploading sketches to a breadboard Arduino

It turns out there there are quite a few versions of the "same" components out there. Uploading sketches to an Arduino-on-a-breadboard is trickier than it first appears.

The Arduino-on-a-breadboard showed that we can get a lower power version of the same architecture. However, in doing the measurements I used a microcontroller already loaded with the code I used for the power measurements (sleeping and blinking). Trying to change this code and upload it via the USB breakout board didn't work -- repeatedly.

It turns out that the breadboard tutorial on the Arduino web site is actually flawed for the current versions of the components concerned. There are actually two problems: the microcontroller needs to be manually reset before uploading a sketch; and the USB breakout board needs slightly more supporting electronics to talk to the microcontroller.

The first problem stems from the microcontroller needing to be reset before code can be uploaded to it. Essentially the reset makes the bootloader wait for code for a few seconds, and start the existing program if none arrives. On older Arduino models you have to physically reset the board using the reset switch just before uploading a sketch; on newer models, this reset happens automatically. Setting up the breakout board to reset the microcontroller immediately before it tries to talk to it will solve this.

The second problem is more subtle. The USB breakout board is actually a USB to serial converter. The tutorial suggests that it is enough to connect the transmit and receive (Tx and Rx) lines to the microcontroller, but this turns out not to be the case: one also needs to connect some handshaking lines to make the system synchronise and communicate correctly. I eventually found a post that explains this: however, that post is flawed too, because it relies on a particular pin-out for the USB breakout board that's different tothe one I have. So here's a debugged explanation of what needs to happen.

FT232r breakout board

We need to connect the basic TxD, RxD, Vcc and Gnd lines on the breakout board as you'd expect. The picture to the right shows the the underside of my breakout board, with the pins named. If we number the pins counter-clockwise from the top left (so DCD is pin 1, TXD is 9, TXLED is 11, and VCC is 13), we connect pins 3 and 10 to ground, pin 13 to power, pin 9 to pin 2 of the ATMega microcontroller, and pin 5 to ATMega pin 3.

What now also need to happen is that we need to connect the CTS and DTR lines to something. DTR (Data Transfer Ready) is sent low when the USB has data ready: we want this to trigger a reset of at ATMega. We then need to send CTS (Clear To Send) low so that the board starts sending data. This is basic serial-port handshaking. The timing can be accomplished using an RC circuit consisting of a 100ohm resistor and a 100nF capacitor attached appropriately. Putting this circuit onto the breadboard sorts out the handshaking, and the Arduino IDE happily uploads sketches just as it would to a "real" Arduino.

The net result of this is to add some more wiring to the USB end of the Arduino breadboard:

USB end

Note the resistor and capacitor. (The red wire crossing the breakout board is a Gnd connection, needed because my breadboard only had single power rails top and bottom.) The circuit involved is as follows:

Handshaking circuit

For my particular breakout board shown above, this means connecting pin 7 to the capacitor and pin 15 to the following resistor. (It's this last step that the post gets wrong -- or at least uses a different pin for CTS.) The net result is an Arduino-on-a-breadboard that looks like this:

Second Arduino-on-a-breadboard

Somewhat more complicated, but rather more functional.

I think you have to maintain a sense of perspective about these issues, annoying as they are: in many ways it's good that the components change and evolve rather than staying exactly the same, as it means that they're being developed and refined over time. On the other hand, it means you have to be very circumspect about following blindly the tutorials and explanations on blog posts from even a relatively short time ago.

Low-power Arduino-on-a-breadboard

Putting an Arduino together from scratch lets us look at where the power consumption might be reduced -- and is just an interesting thing to do anyway.

One of the most exciting things about the Arduino is that it's open-source, so you can build them yourself -- and potentially vary the way they're put together for specific projects, which is very useful as a starting point for people (like me!) who aren't hardware engineers.

The main challenge for sensing with Arduinos seems to be their power consumption, and the obvious way to address this is to see whether there are things to be done to reduce the power drain, for example by addressing the issue of the quiescent current of the power regulator.

As a starting point, I used an on-line guide to build an Arduino on a breadboard:

An Arduino build from components

Actually this isn't a "full" Arduino as the analogue to digital converter (ADC) isn't properly set up, but it has the basic components of microcontroller (the same ATmega 328P as on an Arduino Uno), LED, reset switch, power, and USB. The breakout board at the left-hand side is the USB adapter, while the cluster of components on the right is the power regulator. At present I'm powering from batteries; one can also power from the USB, or from a wall power supply via another breakout board, but this way allows the same power measurement regime as earlier.

Measuring power for a simple "blink" program gives the following result:

Activity Power mode Current
Nothing Deep sleep 4.5mA
Flashing LED Awake 17mA

So in deep sleep mode the system draws about a seventh the power as a "real" Arduino. This is all down to the choice of voltage regulator: an L7805 with a design maximum quiescent current of 6mA. To put this into perspective, a system that could last a week on a standard Arduino board would last the best part of two months in this configuration. Put another way, we can build a sensor mote with an Arduino architecture and dramatically increased lifetime by changing a core component and using SleepySketch to keep the system asleep by default.