{"id":490,"date":"2008-02-20T13:40:00","date_gmt":"2008-02-20T17:40:00","guid":{"rendered":"http:\/\/www.contrapositivediary.com\/?p=490"},"modified":"2009-01-14T23:23:55","modified_gmt":"2009-01-15T03:23:55","slug":"review-tom-igoes-imaking-things-talki","status":"publish","type":"post","link":"http:\/\/www.contrapositivediary.com\/?p=490","title":{"rendered":"Review: Tom Igoe&#8217;s <i>Making Things Talk<\/i>"},"content":{"rendered":"<p><a href=\"http:\/\/www.amazon.com\/exec\/obidos\/ASIN\/0596510519\/ref=nosim\/jeffduntemann-20\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.duntemann.com\/MakingThingsTalkCover.jpg\" align=\"left\" border=\"0\" height=\"425\" hspace=\"4\" width=\"349\" style=\"float: left; margin-right: 1em; margin-bottom: 1em;\"><\/a>Triage               is a harsh mistress. I started out in computing with the CDP1802,               a microprocessor designed for embedded systems work (it was used               on the Viking Landers!) and for all the software I&apos;ve used and the               code I&apos;ve written since then, I miss poking wires in breadboard               holes and hitting the trigger of a wire-wrap gun. There&apos;s only so               many hours in a life, and embedded work has not made the cut.<\/p>\n<p>That may change. Embedded systems tinkering is easier now. Much               easier, and for a couple of reasons: 1) The processors themselves               can be had on small boards with appropriate I\/O connectors; you               don&apos;t have to fool with loose chips anymore. 2) Development software               is better, mostly because now there <i>is<\/i> development software.               In 1976 I literally had to write binary code by hand. (F8 FF A2&#8230;               Yes, yes, I know, barefoot and uphill both ways. But if you think               I&apos;m exaggerating, you simply weren&apos;t there.) And, the point of the               current discussion, 3) there are books like <i><a href=\"http:\/\/www.amazon.com\/exec\/obidos\/ASIN\/0596510519\/ref=nosim\/jeffduntemann-20\">Making               Things Talk<\/a><\/i>, by Tom Igoe. Wow.<\/p>\n<p>The first time I saw the cover I was confused: It shows a stuffed               monkey and the completely inane blurb, &#8220;Projects and ideas               to create talking objects from anything.&#8221; I literally thought               it was about fooling with speech synthesizers. But no: It&apos;s about               networking embedded systems modules with technologies including               Ethernet, USB, Bluetooth, and Zigbee. The microprocessor modules               under discussion are the Atmel AVR-based <a href=\"http:\/\/en.wikipedia.org\/wiki\/Arduino\">Arduinos<\/a>,               augmented by a host of sensor modules and connectivity modules that               can be breadboarded on the same 0.1&#8243; spacing blocks we used               to use in 1976. In a sense, <a href=\"http:\/\/books.google.com\/books?id=_zKNyKK4zN4C&amp;pg=PA74&amp;lpg=PA74&amp;dq=thurber+cats+the+way+some+people+have+mice&amp;source=web&amp;ots=MeDhQwHJi2&amp;sig=2nE3X5uuQbtfoYOx8cmq3uCAn4U\">we               now have modules the way other people have chips<\/a>. (And in saying               so I am indeed just boasting.) We can raise our consciousness to               the level of connecting functional blocks rather than individual               inverters and logic gates. That is a <i>very<\/i> big win.<\/p>\n<p><a href=\"http:\/\/www.amazon.com\/exec\/obidos\/ASIN\/159200346X\/ref=nosim\/jeffduntemann-20\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.duntemann.com\/physicalcomputingcover.jpg\" align=\"right\" border=\"0\" height=\"254\" width=\"205\" style=\"float: right; margin-left: 1em; margin-bottom: 1em;\"><\/a>The               book is patient (as good tutorials must be) and begins with probably               the finest introduction to low-level networking that I have ever               seen. If you are a software developer you will understand it; if               you have no experience whatsoever in networking or programming,               you may have some trouble. A good prerequisite text would be Tom               Igoe&apos;s 2004 <i><a href=\"http:\/\/www.amazon.com\/exec\/obidos\/ASIN\/159200346X\/ref=nosim\/jeffduntemann-20\">Physical               Computing<\/a><\/i> (written with Dan O&apos;Sullivan) which focuses on               the older Basic Stamp modules and their close relatives. <i>Physical               Computing<\/i> introduces both electronics and programming to a degree               that <i>Making Things Talk<\/i> cannot. That said, <i>Making Things               Talk<\/i> presents examples using a Java-derivative programming environment               called <a href=\"http:\/\/en.wikipedia.org\/wiki\/Processing_%28programming_language%29\">Processing<\/a>,               which is free and open source and much gentler conceptually than               programming in raw Java or, merciful God help us, C. (Pascal would               be gentler still, but as we all know, Pascal is a kiddie language               that cannot accomplish anything useful. You <i>must<\/i> believe               this. A C programmer said it. QED.)<\/p>\n<p>Once the essential groundwork is done, the book teaches through               projects, good projects that are mostly fun and in many cases even               useful. The book explains how RFID tags work and how to read them,               and how to read 2-D barcodes with a Web cam. The most fascinating               projects are those that involve physical location sensing, using               modules that perform infrared ranging, ultrasonic ranging, GPS,               and &#8220;digital compass&#8221; modules, all of which made the robot               guy within me itch like hell. We didn&apos;t have stuff like that thirty               years ago.<\/p>\n<p>Although it doesn&apos;t get a huge amount of coverage in the book,               the XBee module (which implements a Zigbee data radio system) fascinates               me: It&apos;s basically jelly-bean logic implementing a short-range mesh               network, and I intuit that hobby robots of the future may well consist               of swarms of semi-independent functional blocks knit together coherently               through the Zigbee network protocols, under the control of a multicore               master processor. And damn, I would love to build something like               that.<\/p>\n<p>Anyway. Here are a few additional observations on the book:<\/p>\n<ul>\n<li>It has at least process color on most pages, with beautifully                 shot full-color photos on many of them.<\/li>\n<li>The technical figures are abundant and very well done.<\/li>\n<li>The type is very small, the margins narrow. This 425-page book                 would have been a 600-page book back in the 90s. My guess is that                 O&apos;Reilly wanted to the keep page count down because of all the                 costly interior color. Note to my age cohort: Prepare to squint,                 or go get yer readers.<\/li>\n<li>There is far less discussion on debugging than I&apos;d like. Coding                 is easy\u2014as is plugging jumper wires into breadboard blocks.                 But when something doesn&apos;t work the way it should, where do you                 start? The book is mostly silent on that crucial point.<\/li>\n<li>In general, the book probably covers a little too much ground,                 and doesn&apos;t go for quite enough depth. Zigbee is subtle, and its                 subtler features are not explored here. This may not be a completely                 fair criticism, but it supports my conviction that you must be                 a journeyman embedded systems type to really get the most from                 this book, as a lot of the blanks you must fill in yourself.<\/li>\n<\/ul>\n<p>Don&apos;t let any of that stop you: If you have some clue about embedded               systems modules and want to learn embedded systems-level data communications,               there is nothing like this book anywhere. And if I do decide to               go back to embedded systems tinkering, this will be the book that               pushes me over the edge. Not yet\u2014I have a rocket or two to               finish and a few other things to do\u2014but soon, soon.<\/p>\n<p><i>Highly<\/i> recommended.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Triage is a harsh mistress. I started out in computing with the CDP1802, a microprocessor designed for embedded systems work (it was used on the Viking Landers!) and for all the software I&apos;ve used and the code I&apos;ve written since then, I miss poking wires in breadboard holes and hitting the trigger of a wire-wrap [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[27],"tags":[33,15],"class_list":["post-490","post","type-post","status-publish","format-standard","hentry","category-reviews","tag-books","tag-hardware"],"_links":{"self":[{"href":"http:\/\/www.contrapositivediary.com\/index.php?rest_route=\/wp\/v2\/posts\/490","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.contrapositivediary.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.contrapositivediary.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.contrapositivediary.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/www.contrapositivediary.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=490"}],"version-history":[{"count":2,"href":"http:\/\/www.contrapositivediary.com\/index.php?rest_route=\/wp\/v2\/posts\/490\/revisions"}],"predecessor-version":[{"id":503,"href":"http:\/\/www.contrapositivediary.com\/index.php?rest_route=\/wp\/v2\/posts\/490\/revisions\/503"}],"wp:attachment":[{"href":"http:\/\/www.contrapositivediary.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=490"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.contrapositivediary.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=490"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.contrapositivediary.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=490"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}