<?xml version="1.0" encoding="utf-8"?>
<!-- If you are running a bot please visit this policy page outlining rules you must respect. http://www.livejournal.com/bots/ -->
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:lj="http://www.livejournal.com">
  <id>urn:lj:livejournal.com:atom1:foofers</id>
  <title>Helvetica 'Foofers' Bold</title>
  <subtitle>Helvetica 'Foofers' Bold</subtitle>
  <author>
    <name>Helvetica 'Foofers' Bold</name>
  </author>
  <link rel="alternate" type="text/html" href="http://foofers.livejournal.com/"/>
  <link rel="self" type="text/xml" href="http://foofers.livejournal.com/data/atom"/>
  <updated>2008-05-12T03:35:30Z</updated>
  <lj:journal username="foofers" type="personal"/>
  <link rel="service.feed" type="application/x.atom+xml" href="http://foofers.livejournal.com/data/atom" title="Helvetica 'Foofers' Bold"/>
  <entry>
    <id>urn:lj:livejournal.com:atom1:foofers:302154</id>
    <link rel="alternate" type="text/html" href="http://foofers.livejournal.com/302154.html"/>
    <link rel="self" type="text/xml" href="http://foofers.livejournal.com/data/atom/?itemid=302154"/>
    <title>White Elephants</title>
    <published>2008-05-12T03:35:30Z</published>
    <updated>2008-05-12T03:35:30Z</updated>
    <content type="html">I think it’s written into the Geneva Convention that every garage sale must include one stationary exercise bike. And every swap meet vendor must have an old inkjet printer. It’s like a prerequisite to participation or something.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:foofers:301851</id>
    <link rel="alternate" type="text/html" href="http://foofers.livejournal.com/301851.html"/>
    <link rel="self" type="text/xml" href="http://foofers.livejournal.com/data/atom/?itemid=301851"/>
    <title>Om nom nom nom</title>
    <published>2008-05-12T01:41:45Z</published>
    <updated>2008-05-12T01:41:45Z</updated>
    <content type="html">&lt;b&gt;Paying nomage:&lt;/b&gt; &lt;i&gt;v.&lt;/i&gt; to exhibit respect for someone by giving them food.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:foofers:301815</id>
    <link rel="alternate" type="text/html" href="http://foofers.livejournal.com/301815.html"/>
    <link rel="self" type="text/xml" href="http://foofers.livejournal.com/data/atom/?itemid=301815"/>
    <title>Turdlets</title>
    <published>2008-05-11T21:41:46Z</published>
    <updated>2008-05-11T21:52:31Z</updated>
    <content type="html">Oh yeah. So &lt;a href="http://flickr.com/photos/spacemansam/2469534495/"&gt;Scabrous was invited to a rather unconventional wedding&lt;/a&gt; last Sunday at the Maker Faire. That was pretty neat. In prior years I’d wished there was &lt;i&gt;some&lt;/i&gt; fitting excuse to have Scab around. And, having done it…65,000 people, no handler*…can definitely say this was among the more retarded ideas I’ve had, and any such impulses are out of my system. &lt;font size="-2"&gt;For now.&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;* &lt;span class='ljuser' lj:user='missmonstermel' style='white-space: nowrap;'&gt;&lt;a href='http://missmonstermel.livejournal.com/profile'&gt;&lt;img src='http://p-stat.livejournal.com/img/userinfo.gif' alt='[info]' width='17' height='17' style='vertical-align: bottom; border: 0; padding-right: 1px;' /&gt;&lt;/a&gt;&lt;a href='http://missmonstermel.livejournal.com/'&gt;&lt;b&gt;missmonstermel&lt;/b&gt;&lt;/a&gt;&lt;/span&gt; did wrangle for the first hour or two. After that it was just unmitigated lunacy.&lt;br /&gt;&lt;br /&gt;Have I&lt;sup&gt;2&lt;/sup&gt;C stuff working in Linux. No Windows yet.&lt;br /&gt;&lt;br /&gt;Also, I hate wikis, especially open source project wikis which tend to suffer from a condition I’ll refer to as “MOAR TEXT!” This is when bulk takes precedence over clarity, and obsolete and even patently wrong passages will be left in-place (and usually &lt;i&gt;before&lt;/i&gt; the correct information) for no good reason. Maybe it’s that the original author’s ego is bruised when such passages are removed and they immediately restore them. Maybe it’s other authors’ concern in bruising others’ egos that they don’t want to strip out the incorrect passages when replacing the information. Most likely though…having been and worked alongside programmers for multiple decades, and understanding a bit about what makes many of them tick…I suspect a “MOAR IS BETTAR!!!1!11” attitude among many contributors. &lt;i&gt;If our project has like a billion pages of documentation, it must be &lt;b&gt;that much awesomer!&lt;/b&gt;&lt;/i&gt; Creeping featurism at its worst.&lt;br /&gt;&lt;br /&gt;Hypothetical example:&lt;br /&gt;&lt;h1&gt;How to make Foonting Turlingdromes&lt;/h1&gt;&lt;ol&gt;&lt;li&gt;Find a joyful and innocent child with a balloon…and pop it. (If they have candy, take this as well.)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Fill sack with kittens and throw in the river.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Slap your mammy.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Stand in bucket of water. Insert fork into electrical socket.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The previous steps are wrong. Under the Application menu, select the item labeled “Foont Turlingdrome” to initiate the foonting process.&lt;/li&gt;&lt;/ol&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:foofers:301213</id>
    <link rel="alternate" type="text/html" href="http://foofers.livejournal.com/301213.html"/>
    <link rel="self" type="text/xml" href="http://foofers.livejournal.com/data/atom/?itemid=301213"/>
    <title>For flipperanubi</title>
    <published>2008-05-06T03:04:09Z</published>
    <updated>2008-05-06T03:04:09Z</updated>
    <content type="html">Spotted in the parking lot at this past weekend’s &lt;a href="http://www.makerfaire.com/"&gt;Maker Faire&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://members.dslextreme.com/users/helvetica/smug.jpg" width="400" height="300"&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:foofers:301052</id>
    <link rel="alternate" type="text/html" href="http://foofers.livejournal.com/301052.html"/>
    <link rel="self" type="text/xml" href="http://foofers.livejournal.com/data/atom/?itemid=301052"/>
    <title>Actual CNN.com Headline</title>
    <published>2008-05-01T07:22:53Z</published>
    <updated>2008-05-01T07:22:53Z</updated>
    <content type="html">&lt;a href="http://www.cnn.com/2008/TECH/science/04/30/dinosaur.dung.ap/index.html"&gt;130-million-year-old poop sells for $960&lt;/a&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:foofers:300648</id>
    <link rel="alternate" type="text/html" href="http://foofers.livejournal.com/300648.html"/>
    <link rel="self" type="text/xml" href="http://foofers.livejournal.com/data/atom/?itemid=300648"/>
    <title>foofers @ 2008-04-30T17:49:00</title>
    <published>2008-05-01T00:57:13Z</published>
    <updated>2008-05-01T01:11:51Z</updated>
    <content type="html">Pet Peeve for the Day™: taking someone to a pizza place you consider notable for intricate and sublime flavors, and first they order pepperoni and sausage (basically spiced fat and more spiced fat on top of shredded, molten fat), then when it arrives proceed to angrily wring it out while complaining how greasy it is and berate you for having dreadful taste in pizza joints.&lt;br /&gt;&lt;br /&gt;Last time I had sausage pizza that was dry was in middle school.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:foofers:300437</id>
    <link rel="alternate" type="text/html" href="http://foofers.livejournal.com/300437.html"/>
    <link rel="self" type="text/xml" href="http://foofers.livejournal.com/data/atom/?itemid=300437"/>
    <title>Oakland Causes Fatness?</title>
    <published>2008-04-30T19:40:26Z</published>
    <updated>2008-04-30T19:40:26Z</updated>
    <content type="html">&lt;a href="http://www.insidebayarea.com/argus/ci_9101793"&gt;Neighborhood affects diabetes, obesity rates, study shows.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Maybe they have it backwards. It could be that a disproportionately obese and diabetic neighborhood is just naturally conducive to the success of certain types of business. Correlation does not imply causation.&lt;br /&gt;&lt;br /&gt;In the future we’ll all eat Nutri-loaf™.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:foofers:299931</id>
    <link rel="alternate" type="text/html" href="http://foofers.livejournal.com/299931.html"/>
    <link rel="self" type="text/xml" href="http://foofers.livejournal.com/data/atom/?itemid=299931"/>
    <title>foofers @ 2008-04-30T08:05:00</title>
    <published>2008-04-30T15:07:28Z</published>
    <updated>2008-04-30T15:07:28Z</updated>
    <content type="html">&lt;a href="http://www.herecomeseverybody.org/2008/04/looking-for-the-mouse.html"&gt;On the value of lolcats.&lt;/a&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:foofers:299541</id>
    <link rel="alternate" type="text/html" href="http://foofers.livejournal.com/299541.html"/>
    <link rel="self" type="text/xml" href="http://foofers.livejournal.com/data/atom/?itemid=299541"/>
    <title>Is it just me?</title>
    <published>2008-04-29T06:10:04Z</published>
    <updated>2008-04-29T06:10:04Z</updated>
    <content type="html">&lt;center&gt;&lt;img src="http://members.dslextreme.com/users/helvetica/jawas.jpg" width="640" height="250"&gt;&lt;br /&gt;&lt;br /&gt;Left: impending development in San Jose, California. Right: Jawa Sandcrawler from &lt;i&gt;Star Wars.&lt;/i&gt;&lt;/center&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:foofers:298867</id>
    <link rel="alternate" type="text/html" href="http://foofers.livejournal.com/298867.html"/>
    <link rel="self" type="text/xml" href="http://foofers.livejournal.com/data/atom/?itemid=298867"/>
    <title>Thrift Store Horrors</title>
    <published>2008-04-23T23:04:22Z</published>
    <updated>2008-04-23T23:04:22Z</updated>
    <content type="html">Spotted this clock at Darth Paul:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://members.dslextreme.com/users/helvetica/adamclock.jpg" width="480" height="280"&gt;&lt;br /&gt;&lt;br /&gt;The Creation of Adam, abridged edition.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:foofers:298611</id>
    <link rel="alternate" type="text/html" href="http://foofers.livejournal.com/298611.html"/>
    <link rel="self" type="text/xml" href="http://foofers.livejournal.com/data/atom/?itemid=298611"/>
    <title>Ego Stroke</title>
    <published>2008-04-23T18:32:44Z</published>
    <updated>2008-04-23T18:52:28Z</updated>
    <content type="html">Posted a summary of my &lt;a href="http://www.instructables.com/id/Worlds-Cheapest-I2C-I-Squared-C-Adapter/"&gt;cheap I2C hack&lt;/a&gt; to Instructables late last night, and just a few hours later it’s already had well over a thousand views. Groovy. The writing kind of jumps around a bit, but whatever…there it is. Recoil in horror at my coding style.&lt;br /&gt;&lt;br /&gt;And hey, if folks vote for it in Instructables’ &lt;a href="http://www.instructables.com/contest/robotcontest/"&gt;robot contest&lt;/a&gt;, maybe I can win some crap!</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:foofers:298108</id>
    <link rel="alternate" type="text/html" href="http://foofers.livejournal.com/298108.html"/>
    <link rel="self" type="text/xml" href="http://foofers.livejournal.com/data/atom/?itemid=298108"/>
    <title>Yeah, I said I’d shelve it for a bit…</title>
    <published>2008-04-06T08:39:32Z</published>
    <updated>2008-04-06T10:27:26Z</updated>
    <content type="html">…but I lied. Curiosity got the best of me. Now successfully programming and verifying serial EEPROM chips using half a VGA cable. Rock solid.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:foofers:297523</id>
    <link rel="alternate" type="text/html" href="http://foofers.livejournal.com/297523.html"/>
    <link rel="self" type="text/xml" href="http://foofers.livejournal.com/data/atom/?itemid=297523"/>
    <title>You Oughtta be in Pixels</title>
    <published>2008-04-05T16:56:54Z</published>
    <updated>2008-04-05T18:51:38Z</updated>
    <content type="html">&lt;a href="http://maps.google.com/maps?f=q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=94555&amp;amp;ie=UTF8&amp;amp;ll=37.572984,-122.033901&amp;amp;spn=0.010731,0.018196&amp;amp;z=16&amp;amp;layer=c&amp;amp;cbll=37.56901,-122.03496&amp;amp;cbp=1,285.46732221157913,,1,6.004934981416903"&gt;Me in the Google Maps Street View&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;One afternoon last summer when I was out to get a soda or go to Darth Paul or something, I remember this unassuming car coming around the corner with an aluminum and PVC contraption strapped to the roof which I surmised was a panoramic camera. Although there was no signage on the car to indicate its origins, I figured there was a good chance it was from the Google Street View project (though I’d always pictured they’d be in ominous black vans or something), and so maybe once a month or so since then, whenever I happened to be using Google Maps and remembered, I would check that spot and see if Street View maps were available for the area yet. Well, as of this morning, there it is (along with nearly all of the metropolitan bay area)!&lt;br /&gt;&lt;br /&gt;And no, I’m not picking my nose or using a cel phone. I was peering over the tops of my sunglasses with a “is that what I think it is?” stare.&lt;br /&gt;&lt;br /&gt;This amuses me greatly. Over a quarter century ago, a bit on Nova or some other science program about the &lt;a href="http://en.wikipedia.org/wiki/Aspen_Movie_Map"&gt;Aspen Movie Map&lt;/a&gt; is one of the key things that got me fired up about computers, graphics and interaction design. At the scale Google has taken it to, the storage, bandwidth and computational requirements just break my old man brain, and now there I am gawking like a yokel for everyone to see.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:foofers:297181</id>
    <link rel="alternate" type="text/html" href="http://foofers.livejournal.com/297181.html"/>
    <link rel="self" type="text/xml" href="http://foofers.livejournal.com/data/atom/?itemid=297181"/>
    <title>foofers @ 2008-04-04T00:45:00</title>
    <published>2008-04-04T07:45:43Z</published>
    <updated>2008-04-04T08:01:29Z</updated>
    <content type="html">&lt;center&gt;&lt;img src="http://members.dslextreme.com/users/helvetica/rainbows.png" width="320" height="320"&gt;&lt;br /&gt;(&lt;span class='ljuser' lj:user='missmonstermel' style='white-space: nowrap;'&gt;&lt;a href='http://missmonstermel.livejournal.com/profile'&gt;&lt;img src='http://p-stat.livejournal.com/img/userinfo.gif' alt='[info]' width='17' height='17' style='vertical-align: bottom; border: 0; padding-right: 1px;' /&gt;&lt;/a&gt;&lt;a href='http://missmonstermel.livejournal.com/'&gt;&lt;b&gt;missmonstermel&lt;/b&gt;&lt;/a&gt;&lt;/span&gt; started it. Srsly.)&lt;/center&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:foofers:296704</id>
    <link rel="alternate" type="text/html" href="http://foofers.livejournal.com/296704.html"/>
    <link rel="self" type="text/xml" href="http://foofers.livejournal.com/data/atom/?itemid=296704"/>
    <title>Ah, bugger.</title>
    <published>2008-04-04T07:23:32Z</published>
    <updated>2008-04-04T08:12:45Z</updated>
    <content type="html">Okay, after much banging of head on desk, I think I figured out the problem.&lt;br /&gt;&lt;br /&gt;Discovered in the fine print of the Apple developer documentation somewhere that whether or not a user-space application can address the outside I2C bus is entirely optional and at the whim of whomever implements the specific video driver, but with no clear outside indication. It just so happened that the first system I tested this stuff on permitted this (MacBook w/Intel GMA950 graphics) and that initial success led me down a path of irrational exuberance. Same code on the Apple TV, no such luck (NVIDIA GeForce Go 7300). My roommate’s current-generation iMac worked (ATI video), while my prior-generation did not (NVIDIA). Took a while before I noticed the pattern and correlated it with the initial fact.&lt;br /&gt;&lt;br /&gt;This still has a great deal of usefulness for some specific things I want to do, and I’ll still write up about it because, c’mon, it’s a pretty funny hack. But the willy-nilly driver support does limit its general utility outside these walls, and I’m a bit bummed that it can’t work on the Apple TV, which really needed a set of mechanized spider legs, y’know?&lt;br /&gt;&lt;br /&gt;Need to get caught up on some other projects, but I’ll come back to this later and see if and how the same capability exists in Linux…hopefully more uniformly regardless of the graphics card vendor. It’s the kind of thing that might appeal to the tinkery Linuxy Lego Mindstormsy sort of mindset…it’s just code, wire and cheap sensors then to put together a data-logging weather monitor or things like that. Then you just need a gray beard, suspenders, recumbent bicycle and subscription to &lt;i&gt;Home Power&lt;/i&gt; magazine to complete the effect.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:foofers:296560</id>
    <link rel="alternate" type="text/html" href="http://foofers.livejournal.com/296560.html"/>
    <link rel="self" type="text/xml" href="http://foofers.livejournal.com/data/atom/?itemid=296560"/>
    <title>Version 2</title>
    <published>2008-04-02T21:48:36Z</published>
    <updated>2008-04-02T21:48:36Z</updated>
    <content type="html">&lt;center&gt;&lt;img src="http://members.dslextreme.com/users/helvetica/i2c/v2.jpg" width="320" height="380"&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Monitor-b-gone. Most of the bulk is now in those DVI connectors. If I can just bring myself to cut apart a brand new $17 Mini-DVI adapter, that entire bulbous nodule would go away and the adapter would be the size of a flea fart.&lt;br /&gt;&lt;br /&gt;I’ve been obsessing over the whole DVI-ness of it all, but the fact is that the idea should work just as well on anything recent with a VGA port (the I2C lines are still there)…and you can find VGA cables littering up the local Goodwill store for a buck a pop these days.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:foofers:296375</id>
    <link rel="alternate" type="text/html" href="http://foofers.livejournal.com/296375.html"/>
    <link rel="self" type="text/xml" href="http://foofers.livejournal.com/data/atom/?itemid=296375"/>
    <title>Follow-Up to Prior Geekery</title>
    <published>2008-04-02T10:02:04Z</published>
    <updated>2008-04-02T10:43:41Z</updated>
    <content type="html">Okay, figured out how to access those lines without needing a second screen to be attached. The code needs a lot of cleanup, but basically works. This means I only need one side of the DVI cable as originally planned. Small is good. If I wanted to be exceedingly anal-retentive…I could dissect and do the same to the Mini-DVI adapter directly, so just a tiny little nubbin would be required to interface with the servo controller!&lt;br /&gt;&lt;br /&gt;If one’s computer has a full-size DVI port, all that’s required then is the DVI cable ($4.56 from monoprice.com)…but since it’s cut in half, that’s actually enough for &lt;i&gt;two&lt;/i&gt; interface cables. So going in with a friend, it’s a mere $2.28 for such an interface! For us poor sods with only a Mini-DVI port, I found the Dynex Mini-DVI to DVI adapter at Best Buy for $16.99. This can be used as-is with the half DVI cable, or cut apart as previously mentioned for maximum smallness. Unfortunately I don’t know of a source for just the Mini-DVI plugs, else I’d be buying a crapload of them right now.&lt;br /&gt;&lt;br /&gt;The HDMI breakout cable should hopefully arrive tomorrow, so I’ll be able to try this out on the Apple TV as well.&lt;br /&gt;&lt;br /&gt;One slight downside to this implementation is that the resulting I2C bus is “single master,” meaning the computer can &lt;i&gt;poll&lt;/i&gt; devices for their state, but there’s no means for the computer to respond to events that originate elsewhere on the bus (“multi master”). A lot of systems work in this manner anyway, so it’s not necessarily a huge downside, just mentioning it to avoid any impression of this being a be-all, do-all I2C interface for all occasions. For things like sensors and servos, it’ll work fine.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:foofers:295959</id>
    <link rel="alternate" type="text/html" href="http://foofers.livejournal.com/295959.html"/>
    <link rel="self" type="text/xml" href="http://foofers.livejournal.com/data/atom/?itemid=295959"/>
    <title>Any Port in a Storm</title>
    <published>2008-04-01T09:37:21Z</published>
    <updated>2008-04-02T10:46:05Z</updated>
    <content type="html">Macs, microcontrollers, embedded systems and assorted hacking. &lt;a name="cutid1"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you’ve been reading this journal for like a billion years, you might recall some incidents a long while back where I was wanting do to some work with resins and silicones and whatnot, but my efforts were foiled by cool winter temperatures and an unheated garage. The matter was partially solved with the acquisition of propane and electric heaters…but as it was a struggle against the elements, I knew even these were a fix suitable for only the mildest winter days. The more practical other half of the solution was to simply adopt a cyclical annual hobby schedule: I would “play with chemicals” for the warmer part of the year and find something else constructive to do with myself for those months where epoxy will never cure.&lt;br /&gt;&lt;br /&gt;This year it’s been electronics and microcontrollers. Partly it seemed a good complement to the chemical work; there are some applications for animatronics and costuming here. And partly was a dissatisfaction with a significant chunk of what I’ve seen from animatronics, especially at the hobbyist level: all canned sequences, straight lines and perfect interpolation. I’ve wanted to apply some methods of traditional animation here, such as anticipation and follow-through, ease in/out, etc. so as to achieve a more organic effect. I’m nowhere near the goal yet…in fact, most of the season has been spent just learning and tooling up.&lt;br /&gt;&lt;br /&gt;We’ve hit spring and warmer temperatures are imminent, so a lot of this stuff will soon be shifting to the back burner as the chemistry season returns. I’d planned on making a post summarizing my findings with regards to various embedded systems and microcontroller platforms (with some emphasis on how they relate to the Mac) in order to have closure, but something came up last night…something so simple yet epic at the same time. I was going to work on my income tax today but this derailed everything.&lt;br /&gt;&lt;br /&gt;In the fields of computers and robotics, one of the most fundamental interconnections between devices is something known as the I2C bus (“I-squared-C” — the 2 is supposed to be an exponent, but I’m too lazy for all the markup ahead). Yet there’s a good chance you’ve never heard of it…it’s not exactly like there’s an “I2C port” on the back of your machine next to the USB ports. This is something that’s primarily used internally as a lowest-level interconnect between system components. Your memory DIMMs, for instance…that odd tiny chip that’s on there in addition to the RAM chips? When you first flick on your system, before anything even boots, the CPU can’t so much address this RAM until the BIOS and that little chip have a conversation wherein the specifications for each and every DIMM (and many other system components) are conveyed. That little chat takes place across an I2C bus. &lt;i&gt;That&lt;/i&gt; sort of low-level.&lt;br /&gt;&lt;br /&gt;I2C is &lt;i&gt;huge&lt;/i&gt; in robotics. Mostly because it’s dead nuts simple, requiring just two lines (aside from power and ground) and minimal coding, and also mostly because nearly every sensor, actuator and microcontroller in the known universe speaks the language. Ultrasonic range sensors, temperature sensors, pressure sensors, RC servo controllers, even the tiny infrared camera that’s inside the Wii remote…nearly all of that stuff intercommunicates at a very low internal level via I2C. It’s not especially fast, nor robust, nor feature-filled…but fast &lt;i&gt;enough&lt;/i&gt; and robust &lt;i&gt;enough&lt;/i&gt; for the task it’s being asked to do. And most importantly, omnipresent. If it’s a component and has pins, there’s a very good chance it’s I2C compatible.&lt;br /&gt;&lt;br /&gt;I’ve wanted to make my own I2C servo controller as something of an exercise in microcontroller programming, and with obvious applications toward the animatronics goals. I’m not &lt;i&gt;quite&lt;/i&gt; at that level yet…I’ve twiddled a couple of servos, and on other occasions have sort of willy-nilly almost talked across I2C…but haven’t brought it all together yet in anything that would be considered production quality. So as a shortcut in the interim I bought an existing I2C servo controller to play around with…that way I could mess around with the higher-level code right away and then come back to the nitty-gritty stuff when I had a better handle on it.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;img src="http://members.dslextreme.com/users/helvetica/i2c/i2c-controller.jpg" width="320" height="320"&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;So there’s the controller…now I just needed the higher-level “brains.” I could just take a PIC chip and throw some commands out at it, but that wasn’t the point of the exercise; I needed something bigger and smarter (but that could still easily interface to and render I2C commands), and to that end also acquired a &lt;a href="http://gumstix.com/"&gt;Gumstix&lt;/a&gt; embedded system along with the breakout board that would give me physical access to the I2C lines.&lt;br /&gt;&lt;br /&gt;The Gumstix is adorable, reasonably well powered, very well-connected. But it’s also turned into a big clusterfuck of its own, which is one of the things I was going to write about in my survey of this stuff until today’s derailings. I know for a fact it can do the I2C things needed, I just haven't gotten to that stage yet amidst many thousands of other little projects and moving parts.&lt;br /&gt;&lt;br /&gt;There’s probably a dozen different microcontroller platforms and embedded systems of all sizes that I’ve looked into, bought, dabbled with, whatever. At the bigger and beefier end, one such system being evaluated for possible higher-level-controller hack value was the Apple TV. No wait, seriously, hear me out. This actually has quite a few things going for it: it’s cheap (I got mine secondhand for $190, but even new they’re only $230 now), readily available if it needs replacing (just hop over to Best Buy, Fry’s, etc.), is running a full-fledged operating system (an only mildly castrated version of Mac OS X—which gosh, just happens to be my OS of preference…so no virtual machines, no cross-compilers), and is actually pretty well spec’d by embedded systems standards: 1GHz Pentium-M, 256 MB RAM, 40 GB disk, Ethernet and 802.11b/g/n connectivity. Sure, a Mac mini isn’t much bigger and has more horsepower…for &lt;i&gt;$600!&lt;/i&gt; Oof. (And “quantity one” PC104 embedded systems are usually even worse!)&lt;br /&gt;&lt;br /&gt;Downsides include power consumption (about 15 watts) and the USB port is pretty much disabled (there are some kernel hacks to get this working, but done wrong risk “bricking” the unit, so I’m holding off until I have a better understanding). Which is a real pity, as there are a lot of USB peripherals that could also have some applications for what I want to do; joysticks and other input devices, cameras (possibly for eye and face tracking), a few sensors and actuators that use USB instead of I2C…and for everything else, a USB to I2C adapter.&lt;br /&gt;&lt;br /&gt;I've goofed around and done just about everything that could be done to the Apple TV without getting into the warranty-voiding realm of actually cracking the case open. But I was out of ideas for connecting to the things I wanted to connect to, so had just about reached that stage. Installing full OS X was one possibility (it's doable, and enables the precious USB port…in fact, it's possible to boot full OS X from an external drive without any case-cracking, but it’s such a pain in the rear that I only goofed around with it a handful of times). Or perhaps, as some folks have done in their hacking of the Linksys NSLU2 (a Linux-based NAS adapter), go rooting around for I2C lines on the motherboard to which things could be connected, and see if there’s any means of accessing these lines programmatically.&lt;br /&gt;&lt;br /&gt;And it was in my research for the latter (which further reading indicates would’ve been a dead end anyway) that I stumbled upon that simple yet epic thing; a simple hack that obviates the need for the USB to I2C adapter, saving a good chunk of change for a commercial unit. Tested and confirmed today. There's no need for case-cracking, and the technique should be equally applicable to Mac, Windows or Linux. Oddest of all though…searching around the net, I haven’t seen anyone else doing this for robotics and sensor projects. This might be a first.&lt;br /&gt;&lt;br /&gt;That bit where I said there’s no “I2C port” alongside the USB ports and other standard connections? I lied. It’s there, and it’s been there all along for about a decade now. Most modern graphics cards and monitors have support for something called Display Data Channel (DDC), an interface by which the monitor may communicate allowable operating frequencies to the graphics card so as to avoid “Out of Range” errors on the display. VGA, DVI, HDMI, they all have it. And it turns out DDC is nothing more than an I2C bus. Not even a fancy, tarted-up, “oh, but this one is &lt;i&gt;special!&lt;/i&gt;” I2C bus. Have you seen those monitors that you pivot and the system redraws at the new orientation? That’s DDC. Which is just I2C. And which, yes, there is programmatic access to. The essential parts of the OS X code amount to just a couple dozen lines and work entirely in user space (no drivers needed).&lt;br /&gt;&lt;br /&gt;I haven’t tested this on the Apple TV yet, as I’ve only just ordered the needed HDMI breakout cable and am awaiting its arrival (it was only $5 mail order, whereas buying an HDMI cable locally for dissection would’ve been $25+; I’m cheap that way). But I’ve goofed around with the idea on my MacBook and, holy crap, it works!&lt;br /&gt;&lt;br /&gt;I already had a crappy $4 surplus DVI cable I was willing to donate to science. But first I needed an adapter to attach that to the MacBook’s “Mini-DVI” port (I know, hard to believe, a non-standard connector on an Apple product!*):&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;img src="http://members.dslextreme.com/users/helvetica/i2c/mini-dvi.jpg" width="400" height="200"&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;&lt;font size="-1"&gt;(*To be fair and balanced, from what I've read the Windows APIs for DDC are undocumented. So it’s 2008 and you've got a proprietary connector on the Mac side, and a hidden API on the Microsoft side. Some things never change.)&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;I chopped the DVI cable in half, unshielded a couple of inches and stripped the ends of the exposed wires, then (using a pinout found by way of Wikipedia), tested the continuity of each line to find the essential four that would interface to the I2C servo controller board: +5V, ground, serial clock and data. Soldered those lines to a 4-pin plug for the servo controller, plugged it into the Mini-DVI port, and got…BLUE SMOKE! No, I’m kidding. No blue smoke. The servo controller’s “heartbeat” LED indicated it was getting power, so that was good, but my commands to the I2C bus were having no effect (not generating errors, just no effect). But I already had a pretty good idea as to why…&lt;br /&gt;&lt;br /&gt;The OS X function involved in accessing the DDC (I2C) bus requires a framebuffer (let’s just think of it as a screen for conversation sake) as a parameter. But without an &lt;i&gt;actual&lt;/i&gt; screen connected to the Mini-DVI port (just my hacked cable and the servo controller), the computer was still operating in a single-screen state; the bus returned, if it’s connected to anything at all, pertains then only to the laptop’s internal display, entirely separate from the I2C lines on the DVI connection. What I needed was not a cable with DVI at one end and the four I2C lines at the other, but an actual connection to another screen, with the I2C lines tapping off that in sort of a “Y” cable configuration. So I had the pleasure of resoldering all the lines of the two halves of the DVI cable back together, tapping those four lines for the servo controller. &lt;b&gt;Edit: I’ve since found a workaround and can communicate on the I2C bus without the second display attached.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;img src="http://members.dslextreme.com/users/helvetica/i2c/cable-hack.jpg" width="400" height="240"&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;What’s funny is that all of my current computers are either laptops or all-in-one systems. It’s only by a stroke of luck that I hadn’t hauled off this one monitor to e-waste recycling this past weekend. Although the monitor doesn’t work, it seems to apply whatever load is required on the lines for the Mac to &lt;i&gt;think&lt;/i&gt; there’s a second display attached. So I just have to rig the code to query the external (second) display, connect my servo controller, and…MORE BLUE SMOKE!&lt;br /&gt;&lt;br /&gt;No, no, kidding. It works. I’m now talking bidirectionally to the servo controller. Through the monitor port. Who’d’a thunk? No USB-I2C adapter to buy, no drivers to install, no open case or voided warranty.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;img src="http://members.dslextreme.com/users/helvetica/i2c/everything.jpg" width="600" height="480"&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Since the Apple TV only has the one HDMI port, I’m guessing (or maybe just hoping) that the single framebuffer is always present and queries the same regardless of whether it’s actually connected to a telly or not. And if that’s the case, then the whole Y-cable nonsense (not to mention lugging around a 120 pound TV set) is unnecessary. Just a hacked-up HDMI cable with the desired I2C sensors and actuators attached, and you’ve got an extremely potent, relatively cheap ’bot.&lt;br /&gt;&lt;br /&gt;No foolin’. Maybe I’ll write this up for Instructables or Make or something!</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:foofers:295661</id>
    <link rel="alternate" type="text/html" href="http://foofers.livejournal.com/295661.html"/>
    <link rel="self" type="text/xml" href="http://foofers.livejournal.com/data/atom/?itemid=295661"/>
    <title>foofers @ 2008-03-18T16:46:00</title>
    <published>2008-03-18T23:47:50Z</published>
    <updated>2008-03-18T23:47:50Z</updated>
    <content type="html">&lt;a href="http://www.msnbc.msn.com/id/23697230/"&gt;R.I.P. A.C.C.&lt;/a&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:foofers:295351</id>
    <link rel="alternate" type="text/html" href="http://foofers.livejournal.com/295351.html"/>
    <link rel="self" type="text/xml" href="http://foofers.livejournal.com/data/atom/?itemid=295351"/>
    <title>For flipperanubi</title>
    <published>2008-03-16T17:09:57Z</published>
    <updated>2008-03-16T17:09:57Z</updated>
    <content type="html">Because this probably isn’t funny to anyone else: &lt;a href="http://macenstein.com/default/archives/1220"&gt;If an iPhone ends up in your butt, it’s because Steve Jobs said that’s where you want it.&lt;/a&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:foofers:295096</id>
    <link rel="alternate" type="text/html" href="http://foofers.livejournal.com/295096.html"/>
    <link rel="self" type="text/xml" href="http://foofers.livejournal.com/data/atom/?itemid=295096"/>
    <title>foofers @ 2008-03-12T16:41:00</title>
    <published>2008-03-12T23:43:45Z</published>
    <updated>2008-03-12T23:43:45Z</updated>
    <content type="html">Have you heard the one about the Islamic A.I. computer?&lt;br /&gt;&lt;br /&gt;They named it &lt;i&gt;Halal 9000.&lt;/i&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:foofers:294825</id>
    <link rel="alternate" type="text/html" href="http://foofers.livejournal.com/294825.html"/>
    <link rel="self" type="text/xml" href="http://foofers.livejournal.com/data/atom/?itemid=294825"/>
    <title>Ungrf.</title>
    <published>2008-03-07T07:15:56Z</published>
    <updated>2008-03-07T07:15:56Z</updated>
    <content type="html">Spent most of the day in bed with a seriously nasty headache. Tried to do some stuff other than the headache, but it was largely futile.&lt;br /&gt;&lt;br /&gt;Firstly…some fiend got ahold of my credit card info and ran up some horrendous charges. Good thing I check in on my banking stuff each morning. I won’t be held liable, but there’s still the hassle of having to do the fraud report, change over a bunch of bills and services to the new card once that arrives, junk like that…slightly less than a year after the last time this happened. Dayum.&lt;br /&gt;&lt;br /&gt;Secondly…for the first time ever, I was completely skunked at Half Price Books. Went in looking for anything (but especially any of the Taschen books) that might make good visual reference in the way of tiki style, classic surf movie posters, etc. Zippo. Not a thing. I’ve always found at least &lt;i&gt;something&lt;/i&gt; useable for any need when I’ve gone in there, but just got a red hot dicking today.&lt;br /&gt;&lt;br /&gt;At least the sandwich at Quizno’s was good. And I did manage to get my head around an awkward bit of code refactoring despite the headache. The best way of handling garbage collection is to not have garbage.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:foofers:294637</id>
    <link rel="alternate" type="text/html" href="http://foofers.livejournal.com/294637.html"/>
    <link rel="self" type="text/xml" href="http://foofers.livejournal.com/data/atom/?itemid=294637"/>
    <title>foofers @ 2008-03-04T08:49:00</title>
    <published>2008-03-04T16:51:26Z</published>
    <updated>2008-03-04T16:51:26Z</updated>
    <content type="html">&lt;a href="http://www.cnn.com/2008/TECH/03/04/octopus.uk/index.html"&gt;Ray Harryhausen’s six-legged octopus discovered in England&lt;/a&gt;.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:foofers:294147</id>
    <link rel="alternate" type="text/html" href="http://foofers.livejournal.com/294147.html"/>
    <link rel="self" type="text/xml" href="http://foofers.livejournal.com/data/atom/?itemid=294147"/>
    <title>WonderCon 2008 (NSFW?)</title>
    <published>2008-02-25T00:28:13Z</published>
    <updated>2008-02-25T00:28:54Z</updated>
    <content type="html">&lt;a href="http://flickr.com/photos/katedollarhyde/2288558107/sizes/l/"&gt;YOU’RE DOING IT WRONG&lt;/a&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:foofers:294095</id>
    <link rel="alternate" type="text/html" href="http://foofers.livejournal.com/294095.html"/>
    <link rel="self" type="text/xml" href="http://foofers.livejournal.com/data/atom/?itemid=294095"/>
    <title>Memeorrhea</title>
    <published>2008-02-22T07:42:31Z</published>
    <updated>2008-02-22T07:45:11Z</updated>
    <content type="html">I got tagged &lt;i&gt;twice&lt;/i&gt; now, so guess I can’t ignore it any longer. The Seven Quirks/Habits/Facts Meme™:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;While there are a number of foods and cuisines that I don’t especially care for, to the best of my knowledge I only have two food allergies: crab (instant migraine), and alcohol (instant nausea). The former is a bit odd in that other crustaceans generally don’t lead to the same symptoms; lobster is awesome. The latter is odd in that I’ve never heard of anyone else being allergic to alcohol, which has me wondering if it’s really just some sort of psychosomatic response to addictions within my family…yet it’s so acute that just a waft from a glass or pitcher of beer set too close, or the taste of a strong tiramisu, will sometimes make me retch.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Retching aside, and with the exception of the occasional strong burp that demands a drink of water afterward, I haven’t actually &lt;i&gt;thrown up&lt;/i&gt; in over 25 years (if memory serves, I believe it was the summer of 1980 and a tuna sandwich in Fairview Township, Pennsylvania).&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Speaking of Pennsylvania, have you ever been in a warehouse-type building and seen one of those big gas heaters with a “Reznor” logo on it? The company was founded there by a great-great-grandfather of mine, George Reznor. Another of his descendants, a great-great-grandson (and hence a third cousin), is a musician who goes by Trent.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;And following the musical tangent, the first CD I ever bought was Jean-Michel Jarre’s &lt;i&gt;Zoolook.&lt;/i&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;I really dislike being called “Foofers” in real life. Absolutely hate it. What happened is that I just picked the name on a whim here because “Helvetica” was already taken and I figured this whole LiveJournal thing would just be a quick passing fad. Please, just call me Phil in person.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;I was an utterly horrible student in middle and high school. There were several occasions where I technically should have been held back, but it was just close enough that my counselor let me pass, with the expectation that I would make up for the slack in performance the following semester. But I never did take up that slack, and at the end of my senior year I did not walk across the stage nor receive a diploma. I could either repeat my senior year (Whee! Another year of bullying!), drop out entirely, or try for the GED test. I opted for the test…and scored in the top one percentile.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;I am more comfortable clothed than naked, and more comfortable beshoed than barefoot. This honestly isn’t so much an inhibition or body shame thing, I just physically don’t like the sensation of the elements against my skin or the way-too-delicate soles of my feet.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Tag: &lt;span class='ljuser' lj:user='drleo' style='white-space: nowrap;'&gt;&lt;a href='http://drleo.livejournal.com/profile'&gt;&lt;img src='http://p-stat.livejournal.com/img/userinfo.gif' alt='[info]' width='17' height='17' style='vertical-align: bottom; border: 0; padding-right: 1px;' /&gt;&lt;/a&gt;&lt;a href='http://drleo.livejournal.com/'&gt;&lt;b&gt;drleo&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;, &lt;span class='ljuser' lj:user='flipperanubi' style='white-space: nowrap;'&gt;&lt;a href='http://flipperanubi.livejournal.com/profile'&gt;&lt;img src='http://p-stat.livejournal.com/img/userinfo.gif' alt='[info]' width='17' height='17' style='vertical-align: bottom; border: 0; padding-right: 1px;' /&gt;&lt;/a&gt;&lt;a href='http://flipperanubi.livejournal.com/'&gt;&lt;b&gt;flipperanubi&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;, &lt;span class='ljuser' lj:user='kitelessd' style='white-space: nowrap;'&gt;&lt;a href='http://kitelessd.livejournal.com/profile'&gt;&lt;img src='http://p-stat.livejournal.com/img/userinfo.gif' alt='[info]' width='17' height='17' style='vertical-align: bottom; border: 0; padding-right: 1px;' /&gt;&lt;/a&gt;&lt;a href='http://kitelessd.livejournal.com/'&gt;&lt;b&gt;kitelessd&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;, &lt;span class='ljuser' lj:user='missmonstermel' style='white-space: nowrap;'&gt;&lt;a href='http://missmonstermel.livejournal.com/profile'&gt;&lt;img src='http://p-stat.livejournal.com/img/userinfo.gif' alt='[info]' width='17' height='17' style='vertical-align: bottom; border: 0; padding-right: 1px;' /&gt;&lt;/a&gt;&lt;a href='http://missmonstermel.livejournal.com/'&gt;&lt;b&gt;missmonstermel&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;, &lt;span class='ljuser' lj:user='phar' style='white-space: nowrap;'&gt;&lt;a href='http://phar.livejournal.com/profile'&gt;&lt;img src='http://p-stat.livejournal.com/img/userinfo.gif' alt='[info]' width='17' height='17' style='vertical-align: bottom; border: 0; padding-right: 1px;' /&gt;&lt;/a&gt;&lt;a href='http://phar.livejournal.com/'&gt;&lt;b&gt;phar&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;, &lt;span class='ljuser' lj:user='porsupah' style='white-space: nowrap;'&gt;&lt;a href='http://porsupah.livejournal.com/profile'&gt;&lt;img src='http://p-stat.livejournal.com/img/userinfo.gif' alt='[info]' width='17' height='17' style='vertical-align: bottom; border: 0; padding-right: 1px;' /&gt;&lt;/a&gt;&lt;a href='http://porsupah.livejournal.com/'&gt;&lt;b&gt;porsupah&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;, &lt;span class='ljuser' lj:user='skadjer' style='white-space: nowrap;'&gt;&lt;a href='http://skadjer.livejournal.com/profile'&gt;&lt;img src='http://p-stat.livejournal.com/img/userinfo.gif' alt='[info]' width='17' height='17' style='vertical-align: bottom; border: 0; padding-right: 1px;' /&gt;&lt;/a&gt;&lt;a href='http://skadjer.livejournal.com/'&gt;&lt;b&gt;skadjer&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;.</content>
  </entry>
</feed>
