<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-16875966</id><updated>2012-01-26T16:11:45.361-08:00</updated><title type='text'>Tech Art Blog</title><subtitle type='html'>Technical art projects by Thomas Edwards</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default?start-index=101&amp;max-results=100'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>202</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-16875966.post-278615668841116296</id><published>2012-01-26T16:08:00.000-08:00</published><updated>2012-01-26T16:11:45.376-08:00</updated><title type='text'>Laser Cut Litiholo Holographic Plate Holder Take 2</title><content type='html'>&lt;a href="https://lh6.googleusercontent.com/-mi0zeUmY_Gg/TxeskaMVs5I/AAAAAAAAAZI/rNNHHrjJpYA/w402/12%2B-%2B1" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 402px; height: 300px;" src="https://lh6.googleusercontent.com/-mi0zeUmY_Gg/TxeskaMVs5I/AAAAAAAAAZI/rNNHHrjJpYA/w402/12%2B-%2B1" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So this time I did an EPS export from Inkscape, then used OS X Preview to convert to PDF, which imported OK into Corel Draw running the Crash Space Epilog laser cutter, and it appears that the geometry was not distorted, hurrah!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;[That is a hologram of a mold of my teeth from when I got braces when I was a teenager BTW]&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-278615668841116296?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/278615668841116296/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=278615668841116296' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/278615668841116296'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/278615668841116296'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2012/01/laser-cut-litiholo-holographic-plate.html' title='Laser Cut Litiholo Holographic Plate Holder Take 2'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-3715532721460359385</id><published>2012-01-22T05:26:00.000-08:00</published><updated>2012-01-22T05:29:06.462-08:00</updated><title type='text'>Linear Algebra for Quantum Computing</title><content type='html'>Even if you took Linear Algrebra, you might be confused by all the linear operations in Quantum Computing, mainly because the physicists use slightly different notation than mathematicians.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This video from &lt;a href="http://iqc.uwaterloo.ca/conferences/useqip2011"&gt;USEQIP 2011&lt;/a&gt; provides a lot of points to help you decipher quantum physics notation:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;iframe width="560" height="315" src="http://www.youtube.com/embed/TIkxRVp5ceY" frameborder="0" allowfullscreen=""&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-3715532721460359385?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/3715532721460359385/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=3715532721460359385' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/3715532721460359385'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/3715532721460359385'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2012/01/linear-algebra-for-quantum-computing.html' title='Linear Algebra for Quantum Computing'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/TIkxRVp5ceY/default.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-7053641199022556946</id><published>2012-01-20T11:01:00.000-08:00</published><updated>2012-01-20T11:02:02.091-08:00</updated><title type='text'>Arduino WiFi options</title><content type='html'>Here is a link to a great posting on &lt;a href="http://postscapes.com/arduino-wifi"&gt;Arduino WiFi boards&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-7053641199022556946?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/7053641199022556946/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=7053641199022556946' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/7053641199022556946'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/7053641199022556946'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2012/01/arduino-wifi-options.html' title='Arduino WiFi options'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-5851920002679972072</id><published>2011-12-10T20:48:00.000-08:00</published><updated>2011-12-10T20:54:06.745-08:00</updated><title type='text'>Laser Cutting</title><content type='html'>&lt;div&gt;This week I got to do my first laser cutting at &lt;a href="http://blog.crashspace.org/"&gt;Crash Space&lt;/a&gt;. I drew the design in &lt;a href="http://inkscape.org/"&gt;Inskscape&lt;/a&gt;, then imported the SVG into Corel Draw for export to the Epilog laser cutter:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://2.bp.blogspot.com/-OLiABmeYozc/TuQ2-V_ylgI/AAAAAAAAAXE/-KMTlKh3cu0/s1600/photo-6.JPG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 239px; height: 320px;" src="http://2.bp.blogspot.com/-OLiABmeYozc/TuQ2-V_ylgI/AAAAAAAAAXE/-KMTlKh3cu0/s320/photo-6.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5684729074332898818" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;div&gt;It went OK, except a line that was 5.75" in Inskcape ended up 5.25" on the laser cutter.  I'm not sure if this is a scaling problem with Corel Draw import or with something else.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-5851920002679972072?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/5851920002679972072/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=5851920002679972072' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/5851920002679972072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/5851920002679972072'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2011/12/laser-cutting.html' title='Laser Cutting'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-OLiABmeYozc/TuQ2-V_ylgI/AAAAAAAAAXE/-KMTlKh3cu0/s72-c/photo-6.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-1703538089527649453</id><published>2011-11-10T14:08:00.000-08:00</published><updated>2011-11-10T14:30:03.194-08:00</updated><title type='text'>Litiholo Laser Wavelength: 635 nm</title><content type='html'>The &lt;a href="http://www.litiholo.com/"&gt;Litiholo Kit&lt;/a&gt; is awesome for making holograms at home, but it only comes with one laser.  So if you make a bunch of holograms and want to display them all of at once, you are stuck.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A fellow &lt;a href="http://blog.crashspace.org/"&gt;Crash Space&lt;/a&gt; member (who runs a &lt;a href="http://www.el-w.com/"&gt;cool electroluminescent supply site&lt;/a&gt;) was kind enough to run the Litiholo laser through a spectogram.   Most of the power is at 637 nm and 638 nm, with some power at 636 nm and 639 nm:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/-5rs0Oah1Q4Q/TrxQRXRGkhI/AAAAAAAAAWw/Z8fvlSRPIA4/s1600/litiholo_laser.gif" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img src="http://2.bp.blogspot.com/-5rs0Oah1Q4Q/TrxQRXRGkhI/AAAAAAAAAWw/Z8fvlSRPIA4/s400/litiholo_laser.gif" border="0" alt="" id="BLOGGER_PHOTO_ID_5673497889813729810" style="cursor: pointer; width: 400px; height: 400px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It turns out this is almost exactly the same spectrum as a "5mW 635nm Red Laser Module Focusable Dot" I purchased from DinoDirect for $10!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-1703538089527649453?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/1703538089527649453/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=1703538089527649453' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/1703538089527649453'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/1703538089527649453'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2011/11/litiholo-laser-wavelength-635-nm.html' title='Litiholo Laser Wavelength: 635 nm'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-5rs0Oah1Q4Q/TrxQRXRGkhI/AAAAAAAAAWw/Z8fvlSRPIA4/s72-c/litiholo_laser.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-1315644088477593174</id><published>2011-11-07T09:48:00.000-08:00</published><updated>2011-11-07T09:50:20.993-08:00</updated><title type='text'>DTV Talk at Crash Sapce</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Arial, sans-serif; font-size: 13px; line-height: 18px; "&gt;"Digital Television w/ Thomas Edwards&lt;div&gt;Upcoming Event: Monday, November 7th @ 8:00pm&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Did you know there is high-definition digital TV in the air all around you for free? Thomas Edwards, VP Engineering &amp;amp; Development for the FOX Technology Group, will present on ATSC digital TV, including the history of digital and high definition TV, 8VSB modulation, MPEG transport streams, MPEG-2 video coding, AC-3 audio coding, and PSIP program guide data. There will also be a brief discussion of the new ATSC A/153 Mobile/Handheld DTV standard."&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://blog.crashspace.org/"&gt;Crash Space&lt;/a&gt;&lt;/div&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; color: rgb(34, 34, 34); line-height: 16px; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: arial, sans-serif; font-size: small; "&gt;10526 Venice Boulevard  Culver City, CA 90232&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-1315644088477593174?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/1315644088477593174/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=1315644088477593174' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/1315644088477593174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/1315644088477593174'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2011/11/dtv-talk-at-crash-sapce.html' title='DTV Talk at Crash Sapce'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-8559792155670094602</id><published>2011-10-30T17:13:00.000-07:00</published><updated>2011-11-01T15:09:16.034-07:00</updated><title type='text'>Arduinos etc with Ethernet</title><content type='html'>Now there are some Arduinos with built-in Ethernet.  From Freetronics, the &lt;a href="http://www.freetronics.com/products/etherten"&gt;EtherTen&lt;/a&gt;, which has a Wiznet W5100 chip on board at $69.95.  It looks much like an Arduino (including USB port) that happens to also have an Ethernet port.  Apparently it works, &lt;a href="http://echorand.me/2011/09/24/exploring-arduino-arduino-ethernet-dhcp-with-etherten/"&gt;even with DHCP&lt;/a&gt;.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Sparkfun has the &lt;a href="http://www.sparkfun.com/products/10536"&gt;Ethernet Pro&lt;/a&gt; at $54.95, which also has a W5100 but is a little more slimmed down.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And if instead of an Arduino, you want a ARM Cortex-A8 board that runs Linux, has 60 digital I/Os, and built-in Ethernet, you can try the &lt;a href="http://www.adafruit.com/blog/2011/10/31/meet-beaglebone-the-new-89-open-source-hardware-platform/"&gt;BeagleBone&lt;/a&gt; for $89.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Also in ARM-land is the &lt;a href="http://mbed.org/"&gt;mBED&lt;/a&gt;, (&lt;a href="http://www.mouser.com/ProductDetail/NXP-Semiconductors/OM11043598/?qs=sGAEpiMZZMsT%252b4Qrr2iI8mk%2flFtAWoCK"&gt;$50.80 from Mouser&lt;/a&gt;) which has built-in Ethernet but needs a carrier board with magnetics such as &lt;a href="http://shop.ngxtechnologies.com/product_info.php?cPath=21_33&amp;amp;products_id=96"&gt;mbed-Xpresso Baseboard&lt;/a&gt; ($45.14 with LCD display and VGA out), &lt;a href="http://www.coolcomponents.co.uk/catalog/product_info.php?products_id=608"&gt;mbed LPC1768 Workshop Development Board&lt;/a&gt; ($25 but barebones), or Mission Control &lt;a href="http://missioncognition.com/hardware/mc00101features.html"&gt;MC-101 baseboard&lt;/a&gt; ($45 with lots of screw-down terminals). &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Meanwhile the coolest PIC board ever is the MikroElectronica &lt;a href="http://www.mikroe.com/eng/products/view/573/multimedia-board-for-pic32mx7/"&gt;Multimedia Board for PIC32MX7&lt;/a&gt; ($149) that has a touchable TFT display and SD card as well as Ethernet.  MikroE also has a bunch of dedicated &lt;a href="http://www.mikroe.com/eng/categories/view/36/communication-boards/"&gt;Ethernet boards&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Finally there is the good old &lt;a href="http://www.modtronix.com/product_info.php?products_id=149"&gt;Modtronix SBC65EC &lt;/a&gt;($65) a PIC-based system that has Ethernet and RS-232.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-8559792155670094602?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/8559792155670094602/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=8559792155670094602' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/8559792155670094602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/8559792155670094602'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2011/10/arduinos-with-ethernet.html' title='Arduinos etc with Ethernet'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-7796623613583347087</id><published>2011-10-19T13:34:00.000-07:00</published><updated>2011-10-19T13:39:04.439-07:00</updated><title type='text'>Dirac bra-ket notation tutorial</title><content type='html'>If you are having some trouble with the Dirac bra-ket notation used in Quantum Computing, read carefully &lt;a href="http://www.physics.umd.edu/courses/Phys374/fall05/files/DiracNotation.pdf"&gt;this tutorial&lt;/a&gt; by Prof. Reddish from UMCP.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-7796623613583347087?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/7796623613583347087/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=7796623613583347087' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/7796623613583347087'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/7796623613583347087'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2011/10/dirac-bra-ket-notation-tutorial.html' title='Dirac bra-ket notation tutorial'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-5937101989771332285</id><published>2011-10-10T17:44:00.001-07:00</published><updated>2011-10-10T17:44:46.633-07:00</updated><title type='text'>Caltech Quantum Computing Course</title><content type='html'>Caltech has a great class on Quantum Computing whose &lt;a href="http://www.theory.caltech.edu/%7Epreskill/ph219/index.html#lecture"&gt;notes are here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-5937101989771332285?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/5937101989771332285/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=5937101989771332285' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/5937101989771332285'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/5937101989771332285'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2011/10/caltech-quantum-computing-course.html' title='Caltech Quantum Computing Course'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-7794081459004202891</id><published>2011-10-08T10:48:00.000-07:00</published><updated>2011-10-08T10:49:07.766-07:00</updated><title type='text'>Dorkbot SoCal 46 - Sunday Oct. 16, 2011</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: monospace; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-size: medium; "&gt;&lt;h2&gt;Dorkbot SoCal 46&lt;/h2&gt;***** Sunday, October 16, 2011&lt;br /&gt;***** 1:00pm-3:00pm&lt;br /&gt;***** Machine Project&lt;br /&gt;***** 1200 D North Alvarado Street&lt;br /&gt;***** Los Angeles, CA 90026&lt;br /&gt;***** &lt;a href="http://maps.google.com/maps?f=q&amp;amp;hl=en&amp;amp;q=1200+D+North+Alvarado+Street%2C+Los+Angeles%2C+CA"&gt;Google map of Machine Project&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Sean Bonner - Safecast.org&lt;/b&gt;&lt;br /&gt;&lt;a href="http://www.safecast.org/"&gt;http://www.safecast.org/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Sean Bonner will present Safecast, a global project working to empower people with data, primarily by mapping radiation levels and building a sensor network, enabling people to both contribute and freely use the data collected. Created 1 week after the 3/11 Japan earthquake, Safecast has deployed 25 mobile, 50 handheld, and 50 static radiation sensors.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.dorkbot.org/dorkbotsocal/img/seanbonner.jpg" /&gt; &lt;img src="http://www.dorkbot.org/dorkbotsocal/img/safecast.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Carlyn Maw - Store Front Music&lt;/b&gt;&lt;br /&gt;&lt;a href="http://blog.makezine.com/archive/2011/07/store-front-music-the-diy-edition.html"&gt;http://blog.makezine.com/archive/2011/07/store-front-music-the-diy-edition.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Carlyn Maw is a co-founder of &lt;a href="http://blog.crashspace.org/"&gt;Crash Space&lt;/a&gt;, a hackerspace in Culver City, CA. Carlyn will describe the Crash Space group project "Store Front Music", which allows people who walk past the hackerspace to interact with a music making machine.&lt;br /&gt;&lt;img src="http://www.dorkbot.org/dorkbotsocal/img/Carlyn1.jpg" /&gt; &lt;img src="http://www.dorkbot.org/dorkbotsocal/img/sfm.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Jim Jenkins&lt;/b&gt;&lt;br /&gt;&lt;a href="http://www.jimjenkins.net/"&gt;http://www.jimjenkins.net/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Part sculptor, part engineer, and part choreographer, Jim Jenkins' work primarily features the animation of text and objects to represent a situation or an observation. Inspirations also come from simple movements often found in nature, such as the rhythmic flapping of a bird's wings to the hypnotic swaying of a cat's tail.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.dorkbot.org/dorkbotsocal/img/Abirddetailgreenfront.jpg" /&gt; &lt;img src="http://www.dorkbot.org/dorkbotsocal/img/Noangle.jpg" /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-7794081459004202891?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/7794081459004202891/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=7794081459004202891' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/7794081459004202891'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/7794081459004202891'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2011/10/dorkbot-socal-46-sunday-oct-16-2011.html' title='Dorkbot SoCal 46 - Sunday Oct. 16, 2011'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-6640581521475202278</id><published>2011-10-02T17:09:00.001-07:00</published><updated>2011-10-02T17:10:27.974-07:00</updated><title type='text'>Michael Nielsen Quantum Computing Course on YouTube</title><content type='html'>If you want to get a background in quantum computing, check out &lt;a href="http://www.youtube.com/user/mnielsencourses"&gt;Michael Nielsen's courses&lt;/a&gt; on YouTube.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-6640581521475202278?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/6640581521475202278/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=6640581521475202278' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/6640581521475202278'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/6640581521475202278'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2011/10/michael-nielsen-quantum-computing.html' title='Michael Nielsen Quantum Computing Course on YouTube'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-716484014206650790</id><published>2011-09-15T21:39:00.000-07:00</published><updated>2011-09-15T22:36:18.416-07:00</updated><title type='text'>Augmented Reality in the Dark</title><content type='html'>A few months ago, I was preparing my &lt;a href="http://www.youtube.com/watch?v=SGbHNRZCQhs"&gt;Second Head&lt;/a&gt; for a &lt;a href="http://blog.crashspace.org/"&gt;Crash Space&lt;/a&gt; demo table at an event.  I was unsure of the lighting, and thought it might be pretty dark there.  &lt;a href="http://www.hitl.washington.edu/artoolkit/"&gt;ARtoolkit&lt;/a&gt; does a good job of augmented reality in good lighting, but if the lighting is not good, the system does not perform well.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So I decided to try to put a large EL panel behind my paper marker to backlight it.  I purchased a large white EL panel from &lt;a href="http://shop.el-w.com/Stock-EL-Panel-Stock-EL-Panel.htm"&gt;EL-Works&lt;/a&gt; and a battery-powered inverter.  It worked great in dim light, even in the dark, as you can see in this video:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;  &lt;iframe width="560" height="315" src="http://www.youtube.com/embed/zefq2i8ZbC0" frameborder="0" allowfullscreen=""&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-716484014206650790?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/716484014206650790/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=716484014206650790' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/716484014206650790'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/716484014206650790'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2011/09/augmented-reality-in-dark.html' title='Augmented Reality in the Dark'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/zefq2i8ZbC0/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-1826870273710346150</id><published>2011-09-10T17:33:00.001-07:00</published><updated>2011-09-13T14:43:21.905-07:00</updated><title type='text'>Trivial quantum computing with QCF</title><content type='html'>Here is the same &lt;a href="http://techartblog.blogspot.com/2011/09/messing-around-with-quantum-computing.html"&gt;trivial quantum computing example&lt;/a&gt; I did in &lt;a href="http://tph.tuwien.ac.at/~oemer/qcl.html"&gt;QCL&lt;/a&gt; in &lt;a href="http://sourceforge.net/projects/qcf/"&gt;QCF&lt;/a&gt; running on &lt;a href="http://www.gnu.org/software/octave/"&gt;Octave&lt;/a&gt;.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Again, I start with a two-qubit register &lt;i&gt;psi&lt;/i&gt;, initialized to zero.  I perform the Hadamard on it to create an equal superposition of states.  Then I measure it, getting a different result each time I try it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Note the two different quantum state notations used.  Vector notation is used be default in QCF as it makes computation simpler.  But as a human, I prefer binary ket notation, so I go from binary ket to vector notation using &lt;i&gt;bin2vec()&lt;/i&gt;, and vector to binary ket notation using &lt;i&gt;pretty()&lt;/i&gt;. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Also measurement in QCF does not collapse the wavefunction explicitly (although you could do &lt;i&gt;psi=measure(psi)&lt;/i&gt; to be more realistic about the measurement process collapsing the waveform).&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;div&gt;octave-3.2.3:132&amp;gt; addpath("/pathtoqcf/qcf")&lt;/div&gt;&lt;div&gt;octave-3.4.0:133&amp;gt; psi=bin2vec("00")&lt;/div&gt;&lt;div&gt;psi =&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;   1&lt;/div&gt;&lt;div&gt;   0&lt;/div&gt;&lt;div&gt;   0&lt;/div&gt;&lt;div&gt;   0&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;octave-3.4.0:134&amp;gt; pretty(psi)&lt;/div&gt;&lt;div&gt;ans =  1|00&amp;gt; &lt;/div&gt;&lt;div&gt;octave-3.4.0:135&amp;gt; psi=hadamard(2)*psi&lt;/div&gt;&lt;div&gt;psi =&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;   0.50000&lt;/div&gt;&lt;div&gt;   0.50000&lt;/div&gt;&lt;div&gt;   0.50000&lt;/div&gt;&lt;div&gt;   0.50000&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;octave-3.4.0:136&amp;gt; pretty(psi)&lt;/div&gt;&lt;div&gt;ans =  0.5|00&amp;gt; + 0.5|01&amp;gt; + 0.5|10&amp;gt; + 0.5|11&amp;gt; &lt;/div&gt;&lt;div&gt;octave-3.4.0:137&amp;gt; pretty(measure(psi))&lt;/div&gt;&lt;div&gt;ans =  1|10&amp;gt; &lt;/div&gt;&lt;div&gt;octave-3.4.0:138&amp;gt; pretty(measure(psi))&lt;/div&gt;&lt;div&gt;ans =  1|01&amp;gt; &lt;/div&gt;&lt;div&gt;octave-3.4.0:139&amp;gt; pretty(measure(psi))&lt;/div&gt;&lt;div&gt;ans =  1|11&amp;gt; &lt;/div&gt;&lt;div&gt;octave-3.4.0:140&amp;gt; pretty(measure(psi))&lt;/div&gt;&lt;div&gt;ans =  1|01&amp;gt; &lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-1826870273710346150?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/1826870273710346150/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=1826870273710346150' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/1826870273710346150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/1826870273710346150'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2011/09/trivial-quantum-computing-with-qcf.html' title='Trivial quantum computing with QCF'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-4134516323951300204</id><published>2011-09-07T08:28:00.000-07:00</published><updated>2011-09-07T10:44:17.445-07:00</updated><title type='text'>Messing around with Quantum Computing</title><content type='html'>If you want to start messing around with Quantum Computing simulators (ahead of actual Quantum Computers being developed), there are a couple of options:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Bernhard Omer's &lt;a href="http://tph.tuwien.ac.at/~oemer/qcl.html"&gt;QCL&lt;/a&gt; language, developed specifically for QC simulation.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://sourceforge.net/projects/qcf/"&gt;QCF&lt;/a&gt; toolbox of Quantum Computing Functions for Matlab and &lt;a href="http://www.gnu.org/software/octave/"&gt;Octave&lt;/a&gt; (a free clone of Matlab).&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Matt Purkeypile's &lt;a href="https://cove.purkeypile.com/trac/"&gt;Cove framework&lt;/a&gt;, that could potentially be extended to any language, but currently really only works with C#.  He has a number of &lt;a href="http://www.youtube.com/user/drpurkeypile#p/u"&gt;YouTube videos about it&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here is a short (and useless) QCL example, where we put a 2-Qbit register into a superposition of states, then measure the Qbits.  The first time we try this, we get a 3, the second time we try it, we get a 2:&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;qcl&amp;gt; qureg s[2];  // set up 2-Qbit register s, initially all zero&lt;/div&gt;&lt;div&gt;qcl&amp;gt; H(s);          // apply Hadamard operator to create equal superposition of states&lt;/div&gt;&lt;div&gt;[2/32] 0.5 |0&amp;gt; + 0.5 |1&amp;gt; + 0.5 |2&amp;gt; + 0.5 |3&amp;gt;&lt;/div&gt;&lt;div&gt;qcl&amp;gt; measure s;  // now actually measure and collapse wavefunction&lt;/div&gt;&lt;div&gt;[2/32] 1 |3&amp;gt;    // result is 3 (0b11)&lt;/div&gt;&lt;div&gt;qcl&amp;gt; reset;      // reset Qbits to zero&lt;/div&gt;&lt;div&gt;[2/32] 1 |0&amp;gt;&lt;/div&gt;&lt;div&gt;qcl&amp;gt; H(s);       // apply Hadamard operator again&lt;/div&gt;&lt;div&gt;[2/32] 0.5 |0&amp;gt; + 0.5 |1&amp;gt; + 0.5 |2&amp;gt; + 0.5 |3&amp;gt;&lt;/div&gt;&lt;div&gt;qcl&amp;gt; measure s;  // measure again&lt;/div&gt;&lt;div&gt;&lt;div&gt;[2/32] 1 |2&amp;gt;  // result is 2 (0b10)&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-4134516323951300204?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/4134516323951300204/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=4134516323951300204' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/4134516323951300204'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/4134516323951300204'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2011/09/messing-around-with-quantum-computing.html' title='Messing around with Quantum Computing'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-7778631770308424330</id><published>2011-09-06T11:59:00.000-07:00</published><updated>2011-09-06T12:01:25.364-07:00</updated><title type='text'>SentiSight object recognition SDK</title><content type='html'>The &lt;a href="http://www.neurotechnology.com/sentisight.html"&gt;SentiSight object recognition SDK&lt;/a&gt; from NEUROTechnology sounds pretty cool.  It looks like you can &lt;a href="http://www.neurotechnology.com/download.html"&gt;download a demo app&lt;/a&gt; from them as well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-7778631770308424330?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/7778631770308424330/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=7778631770308424330' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/7778631770308424330'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/7778631770308424330'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2011/09/sentisight-object-recognition-sdk.html' title='SentiSight object recognition SDK'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-6042603714241339458</id><published>2011-09-02T10:15:00.000-07:00</published><updated>2011-09-02T10:22:13.795-07:00</updated><title type='text'>$35 Linux PC with Ethernet?</title><content type='html'>Check out the &lt;a href="http://www.raspberrypi.org/?page_id=8"&gt;Raspberry Pi&lt;/a&gt;, which for $25 will [when released "later in 2011"] get you:&lt;blockquote&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(55, 55, 55); font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 15px; font-weight: 300; line-height: 24px; "&gt;&lt;li style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-family: inherit; font-size: 15px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; "&gt;700MHz ARM11&lt;/li&gt;&lt;li style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-family: inherit; font-size: 15px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; "&gt;128MB or 256MB of SDRAM&lt;/li&gt;&lt;li style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-family: inherit; font-size: 15px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; "&gt;OpenGL ES 2.0&lt;/li&gt;&lt;li style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-family: inherit; font-size: 15px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; "&gt;1080p30 H.264 high-profile decode&lt;/li&gt;&lt;li style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-family: inherit; font-size: 15px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; "&gt;Composite and HDMI video output&lt;/li&gt;&lt;li style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-family: inherit; font-size: 15px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; "&gt;USB 2.0&lt;/li&gt;&lt;li style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-family: inherit; font-size: 15px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; "&gt;SD/MMC/SDIO memory card slot&lt;/li&gt;&lt;li style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-family: inherit; font-size: 15px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; "&gt;General-purpose I/O&lt;/li&gt;&lt;li style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-family: inherit; font-size: 15px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; "&gt;Optional integrated 2-port USB hub and 10/100 Ethernet controller&lt;/li&gt;&lt;li style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; font-family: inherit; font-size: 15px; font-style: inherit; font-weight: inherit; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; outline-width: 0px; outline-style: initial; outline-color: initial; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; vertical-align: baseline; "&gt;Open software (Ubuntu, Iceweasel, KOffice, Python)&lt;/li&gt;&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;...and for $35 a 10/100 wired Ethernet (though they claim you might be able to use a WiFi USB dongle on the $25 board).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Regarding GPIO, they say:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: sans-serif; font-size: 13px; line-height: 19px; "&gt;&lt;p style="margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 1.5em; "&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p style="margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 1.5em; "&gt;There are approximately 16 spare GPIOs, which are brought out to 1.27mm pin-strip. Voltage levels are 3v3. The connector choice is deliberately annoying to connect to directly; there is no over-voltage protection on the board so the intention is that people interested in serious interfacing will use an external board with buffers, level conversion and analog I/O rather than soldering directly onto the main board.&lt;/p&gt;&lt;p style="margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 1.5em; "&gt;We also bring 2x I2C (3v3), I2S and an SPI (3v3) interface out to the same connector. We support one slave interface for I2C and one for SPI.&lt;/p&gt;&lt;/blockquote&gt;&lt;p style="margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 1.5em; "&gt;&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-6042603714241339458?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/6042603714241339458/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=6042603714241339458' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/6042603714241339458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/6042603714241339458'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2011/09/35-linux-pc-with-ethernet.html' title='$35 Linux PC with Ethernet?'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-7935069004108937688</id><published>2011-07-24T17:30:00.000-07:00</published><updated>2011-07-24T17:31:25.964-07:00</updated><title type='text'>Dorkbot SoCal 45 Tuesday night July 26</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: monospace; font-size: medium; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; "&gt;&lt;h2&gt;&lt;a href="http://www.dorkbot.org/dorkbotsocal"&gt;Dorkbot SoCal&lt;/a&gt; 45 &amp;amp; Book Launch: Xtine Borrough, Jonah Brucker-Cohen, Jeremy Rotsztain&lt;/h2&gt;***** TUESDAY, JULY 26th, 2011&lt;br /&gt;***** 7:00pm&lt;br /&gt;***** Machine Project&lt;br /&gt;***** 1200 D North Alvarado Street&lt;br /&gt;***** Los Angeles, CA 90026&lt;br /&gt;***** &lt;a href="http://maps.google.com/maps?f=q&amp;amp;hl=en&amp;amp;q=1200+D+North+Alvarado+Street%2C+Los+Angeles%2C+CA"&gt;Google map of Machine Project&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;Presenters will include...&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1. Xtine Borrough&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://missconceptions.net/"&gt;http://missconceptions.net&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.routledge.com/books/details/9780415882224/"&gt;http://www.routledge.com/books/details/9780415882224/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;xtine is a media artist, educator, editor of Net Works: Case Studies in Web Art and Design (Routledge 2011) and co-author of Digital Foundations (New Riders/AIGA 2009). Informed by the history of conceptual art, she uses social networking, databases, search engines, blogs, and applications in combination with popular sites like Facebook, YouTube, or Mechanical Turk, to create web communities promoting interpretation and autonomy. xtine believes art shapes social experiences by mediating consumer culture with rebellious practices. As an associate professor of communication at CSUF, she bridges the gap between histories, theories, and production in design and new media education. Her website is &lt;a href="http://missconceptions.net/"&gt;http://missconceptions.net&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;"Net Works: Case Studies in Web Art and Design" offers an inside look into the process of successfully developing thoughtful, innovative digital media. In many practice-based art texts and classrooms, technology is divorced from the socio-political concerns of those using it. Although there are many resources for media theorists, practice-based students sometimes find it difficult to engage with a text that fails to relate theoretical concerns to the act of creating. Net Works strives to fill that gap. Using websites as case studies, each chapter introduces a different style of web project--from formalist play to social activism to data visualization--and then includes the artists' or entrepreneurs' reflections on the particular challenges and outcomes of developing that web project. Scholarly introductions to each section apply a theoretical frame for the projects. Beyond project summaries, chapters also include an explanation of the websites' technological components; historical, cultural, and ethical perspectives; a list of links; key words; and short online exercises that relate technical skills to individual projects. Combining practical skills for web authoring with critical perspectives on the web, Net Works is ideal for courses in new media design, art, communication, critical studies, media and technology, or popular digital/internet culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.routledge.com/books/details/9780415882224/"&gt;&lt;img src="http://www.dorkbot.org/dorkbotsocal/img/2011july-burrough-networks-500x716.gif" width="500" height="716" alt="Net Works: Case Studies in Web Art and Design (Routledge 2011)" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2. Jonah Brucker-Cohen&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.coin-operated.com/"&gt;http://www.coin-operated.com&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.scrapyardchallenge.com/"&gt;http://www.scrapyardchallenge.com&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.twitter.com/coinop29"&gt;http://www.twitter.com/coinop29&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Jonah Brucker-Cohen is a researcher, artist, and writer. He received his Ph.D. in the Disruptive Design Team of the Networking and Telecommunications Research Group (NTRG), Trinity College Dublin. He is an adjunct assistant professor at Parsons MFA in Design &amp;amp; Technology. He has held a Research Fellow positions at Media Lab Europe and Eyebeam Center for Art and Technology in New York City. His work and thesis focuses on the theme of "Deconstructing Networks" which includes over 77 projects that attempt to critically challenge and subvert accepted perceptions of network interaction and experience. His writing has appeared in numerous international publications including WIRED Magazine, Make Magazine, Neural, Rhizome.org, Art Asia Pacific, Gizmodo and more, and his work has been presented at events and organizations such as DEAF (03,04), Future Everything (2004, 2009), Art Futura (04), SIGGRAPH (00,05),Transmediale (02,04,08), ISEA (02,04,06,09), Institute of Contemporary Art in London (04), Tate Modern (03), Whitney Museum of American Art's ArtPort (03), Ars Electronica (02,04,08), ZKM Museum of Contemporary Art (04-5), Museum of Modern Art (MOMA - NYC)(2008),San Francisco Museum of Modern Art (SFMOMA) (2008), and Palais Du Tokyo, Paris (2009). His work has been reported about in The New York Times, Wired News, Make, El Pais, Gizmodo, Engadget, The Register, Slashdot, The Wire, Rhizome, Crunch Gear, Beyond the Beyond, Neural, Liberation, Village Voice, IEEE Spectrum, The Age, Taschen Books, and more.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.coin-operated.com/"&gt;&lt;img src="http://www.dorkbot.org/dorkbotsocal/img/2011july-bruckercohen-scrapyard-500x390.jpg" width="500" height="390" alt="Jonah Brucker-Cohen - Scapyard Challenge" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;3. Jeremy Rotsztain&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.mantissa.ca/"&gt;http://www.mantissa.ca&lt;/a&gt;&lt;br /&gt;&lt;a href="http://twitter.com/jmantissa"&gt;http://twitter.com/jmantissa&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.photoribbons.com/"&gt;http://www.photoribbons.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Jeremy Rotsztain is a Canadian digital artist who, taking cues from the practice of painting, works with movies, images, and sound as a kind of malleable and expressive material. In his work, popular narratives, pixels, and sound bites are sampled, transformed, re-arranged and composed in an effort to examine the language and patterns of contemporary media and the shared cultural experiences that we have with them. Jeremy writes custom software, enabling him to collect, edit, and compose with his materials in hybrid and unconventional ways that aren't supported by existing commercial software applications. His work has been screened, performed and exhibited at the Cooper Hewitt and the New York Hall of Science in NYC, Urban Screens in Melbourne, Subtle Technologies and InterAccess in Toronto, Electric Fields in Ottawa, SAT in Montreal, and New Forms Festival in Vancouver.&lt;br /&gt;&lt;br /&gt;Action Painting is a series of animated digital paintings composed using cinematic gestures from Hollywood action flicks. Moving visual elements from popular action films -- explosions, fistfights, car chases, and gunshots-- are used as compositional material to create works in the style of abstract expressionist painters such as Jackson Pollock. Action Painting brings together the adrenalin-filled culture of action cinema and the formalist canon of modernist painting. It is a line of inquiry into spontaneity and self-expression that contrasts user-generated web 2.0 culture against the work of the genius craftsman -- and reflects cinema's use of violence as pure spectacle.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.mantissa.ca/"&gt;&lt;img src="http://www.dorkbot.org/dorkbotsocal/img/2011july-rotsztain-actionpainting-500x843.jpg" width="500" height="843" alt="Jeremy Rotsztain - Action Paintings" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-7935069004108937688?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/7935069004108937688/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=7935069004108937688' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/7935069004108937688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/7935069004108937688'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2011/07/dorkbot-socal-45-tuesday-night-july-26.html' title='Dorkbot SoCal 45 Tuesday night July 26'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-3112820370227787221</id><published>2011-06-27T22:30:00.000-07:00</published><updated>2011-06-27T23:07:55.255-07:00</updated><title type='text'>Second Head</title><content type='html'>You may remember my previous effort to have a &lt;a href="http://www.youtube.com/watch?v=CFoxwznAUoM"&gt;head track you using PIR sensors&lt;/a&gt;.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well, it turns out the PIR sensors are great for detecting someone - at first.  Then they are useless for 10 seconds.  Which doesn't make them great for tracking.  So I ended up giving up.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Then I was reading somewhere on the Interwebzors about someone trying to use a Bluetooth-enabled solid state gyro board for controlling a halloween head.  I started thinking, there has to be an easier way.  Then I thought about &lt;a href="http://syynlabs.com/projects/augmented-reality/cloud-mirror"&gt;Synn Labs augmented reality work&lt;/a&gt;, and hit upon the idea: stick a fiduciary mark on your head:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;iframe width="560" height="349" src="http://www.youtube.com/embed/SGbHNRZCQhs" frameborder="0" allowfullscreen=""&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The concept is simple: use &lt;a href="http://www.hitl.washington.edu/artoolkit/"&gt;ARToolkit&lt;/a&gt; to track the pan angle of a fiduciary mark, convert to serial data, send to Arduino, have the Arduino set the servo angle of the &lt;a href="http://www.servocity.com/html/ddp155_base_pan.html"&gt;Robotzone DDP155 pan table&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here is my tweak to ARToolkit's simpleLite.c example, a few lines I added to the&lt;i&gt; "if (gPatt_found)"&lt;/i&gt; block of the &lt;i&gt;"Display"&lt;/i&gt; function:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div id="iframeDiv8ac969fc-9700-4d0d-8baf-5deffe6caae2" style="display:none;margin:0px;"&gt;&lt;iframe id="iframe8ac969fc-9700-4d0d-8baf-5deffe6caae2" src="http://www.blogtrog.com/code.aspx?id=8ac969fc-9700-4d0d-8baf-5deffe6caae2" style="width: 600px; height: 200px; border: 1px solid #e0e0e0;margin:0px;" frameborder="0"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;div id="noIframeDiv8ac969fc-9700-4d0d-8baf-5deffe6caae2" style="display:block;margin:0px;"&gt;&lt;pre&gt;&lt;div&gt;&lt;!--  Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/  --&gt;&lt;span style="color:#000000;"&gt;FILE &lt;/span&gt;&lt;span style="color:#000000;"&gt;*&lt;/span&gt;&lt;span style="color:#000000;"&gt;head&lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;fopen(&lt;/span&gt;&lt;span style="color:#800000;"&gt;"&lt;/span&gt;&lt;span style="color:#800000;"&gt;/dev/cu.usbserial-A4000QBg&lt;/span&gt;&lt;span style="color:#800000;"&gt;"&lt;/span&gt;&lt;span style="color:#000000;"&gt;,&lt;/span&gt;&lt;span style="color:#800000;"&gt;"&lt;/span&gt;&lt;span style="color:#800000;"&gt;w&lt;/span&gt;&lt;span style="color:#800000;"&gt;"&lt;/span&gt;&lt;span style="color:#000000;"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;char&lt;/span&gt;&lt;span style="color:#000000;"&gt; head_turn&lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#800080;"&gt;90&lt;/span&gt;&lt;span style="color:#000000;"&gt;-&lt;/span&gt;&lt;span style="color:#800080;"&gt;50&lt;/span&gt;&lt;span style="color:#000000;"&gt;*&lt;/span&gt;&lt;span style="color:#000000;"&gt;gPatt_trans[&lt;/span&gt;&lt;span style="color:#800080;"&gt;2&lt;/span&gt;&lt;span style="color:#000000;"&gt;][&lt;/span&gt;&lt;span style="color:#800080;"&gt;0&lt;/span&gt;&lt;span style="color:#000000;"&gt;];&lt;br /&gt;fprintf(head,&lt;/span&gt;&lt;span style="color:#800000;"&gt;"&lt;/span&gt;&lt;span style="color:#800000;"&gt;%c&lt;/span&gt;&lt;span style="color:#800000;"&gt;"&lt;/span&gt;&lt;span style="color:#000000;"&gt;,head_turn);&lt;br /&gt;printf(&lt;/span&gt;&lt;span style="color:#800000;"&gt;"&lt;/span&gt;&lt;span style="color:#800000;"&gt;%d:%c:\n&lt;/span&gt;&lt;span style="color:#800000;"&gt;"&lt;/span&gt;&lt;span style="color:#000000;"&gt;,head_turn,head_turn);&lt;br /&gt;fclose(head);&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;&lt;script language="javascript" src="http://www.blogtrog.com/scripts/bt_code.js" type="text/javascript"&gt;&lt;/script&gt;&lt;script language="javascript" type="text/javascript"&gt;bt_code_init('8ac969fc-9700-4d0d-8baf-5deffe6caae2');&lt;/script&gt;&lt;br /&gt;&lt;div&gt;And here is the short Arduino program:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div id="iframeDivabd521f7-3205-48b9-8944-a33a5ce701e3" style="display:none;margin:0px;"&gt;&lt;iframe id="iframeabd521f7-3205-48b9-8944-a33a5ce701e3" src="http://www.blogtrog.com/code.aspx?id=abd521f7-3205-48b9-8944-a33a5ce701e3" style="width: 600px; height: 200px; border: 1px solid #e0e0e0;margin:0px;" frameborder="0"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;div id="noIframeDivabd521f7-3205-48b9-8944-a33a5ce701e3" style="display:block;margin:0px;"&gt;&lt;pre&gt;&lt;div&gt;&lt;!--  Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/  --&gt;&lt;span style="color:#000000;"&gt;#include &lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;Servo.h&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;br /&gt;&lt;br /&gt;Servo myservo;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;void&lt;/span&gt;&lt;span style="color:#000000;"&gt; setup() {&lt;br /&gt;myservo.attach(&lt;/span&gt;&lt;span style="color:#800080;"&gt;9&lt;/span&gt;&lt;span style="color:#000000;"&gt;);&lt;br /&gt;Serial.begin(&lt;/span&gt;&lt;span style="color:#800080;"&gt;9600&lt;/span&gt;&lt;span style="color:#000000;"&gt;);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;void&lt;/span&gt;&lt;span style="color:#000000;"&gt; loop() {&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;int&lt;/span&gt;&lt;span style="color:#000000;"&gt; value&lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#800080;"&gt;40&lt;/span&gt;&lt;span style="color:#000000;"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;if&lt;/span&gt;&lt;span style="color:#000000;"&gt; (Serial.available() &lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#800080;"&gt;0&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;br /&gt;{&lt;br /&gt; value &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; Serial.read(); &lt;/span&gt;&lt;span style="color:#008000;"&gt;//&lt;/span&gt;&lt;span style="color:#008000;"&gt;reads the incoming byte&lt;/span&gt;&lt;span style="color:#008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;    myservo.write(value);&lt;br /&gt;}&lt;br /&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;&lt;script language="javascript" src="http://www.blogtrog.com/scripts/bt_code.js" type="text/javascript"&gt;&lt;/script&gt;&lt;script language="javascript" type="text/javascript"&gt;bt_code_init('abd521f7-3205-48b9-8944-a33a5ce701e3');&lt;/script&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-3112820370227787221?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/3112820370227787221/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=3112820370227787221' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/3112820370227787221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/3112820370227787221'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2011/06/second-head.html' title='Second Head'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/SGbHNRZCQhs/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-2166125399491943516</id><published>2011-06-22T17:37:00.000-07:00</published><updated>2011-06-22T17:44:00.778-07:00</updated><title type='text'>VIC-20 of the Modern Era: Maximite</title><content type='html'>If you miss the VIC-20, here comes the &lt;a href="http://geoffg.net/MaximiteFeatures.html"&gt;Maximite&lt;/a&gt;.  BASIC programming, uses PS2 keyboard, VGA out, and based on a PIC32.  Prices look aorund $60-$70.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In a way it reminds my of my old &lt;a href="http://techartblog.blogspot.com/2006/05/rvhes-arrived.html"&gt;RVHE boards&lt;/a&gt; (which are no longer produced).  They were incredibly simple to program in BASIC with a very fast interpreter.  They didn't have a keyboard/VGA connection, but did have Ethernet you could telnet into!  The Ethernet did not DHCP very well though, so they were not as useful as I was hoping.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-2166125399491943516?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/2166125399491943516/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=2166125399491943516' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/2166125399491943516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/2166125399491943516'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2011/06/vic-20-of-modern-era-maximite.html' title='VIC-20 of the Modern Era: Maximite'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-3645090327671232884</id><published>2011-06-09T10:47:00.000-07:00</published><updated>2011-06-09T10:51:25.550-07:00</updated><title type='text'>Arduino Frequency measurement</title><content type='html'>I've been thinking about ways audio output from an iPhone could communicate with an Arduino.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Oh yes, you could use DTMF with an external DTMF detector chip, but what about doing frequency detection without any active external devices?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here is a &lt;a href="http://interface.khm.de/index.php/lab/experiments/frequency-measurement-library/"&gt;Frequency Measurement Library&lt;/a&gt; for Arduino w. Atmega168/328 that needs some external resistors and capacitors, no active devices needed.  A 1:1 audio transformer might be wise as well.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Supposedly this works up to 20 kHz!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-3645090327671232884?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/3645090327671232884/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=3645090327671232884' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/3645090327671232884'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/3645090327671232884'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2011/06/arduino-frequency-measurement.html' title='Arduino Frequency measurement'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-1701157044318845639</id><published>2011-06-08T20:32:00.001-07:00</published><updated>2011-06-08T20:45:46.916-07:00</updated><title type='text'>Geiger Counter</title><content type='html'>I recently built a geiger counter kit (&lt;a href="http://www.electronickitsbychaneyelectronics.com/Digital-Display-Geiger-Counter-Kit/productinfo/C6981/"&gt;Chaney Electronics C6981&lt;/a&gt;).  It can measure the number of times particles of ionizing radiation pass through the tube per minute.  So does it work?&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;First, let's try it on wood:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;img src="http://farm3.static.flickr.com/2632/5813546981_6a99d65d20.jpg" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now, let's try it on granite:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;img src="http://farm3.static.flickr.com/2618/5813547481_3f97927f50.jpg" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So indeed, the granite is more than twice as radioactive as the wood!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-1701157044318845639?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/1701157044318845639/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=1701157044318845639' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/1701157044318845639'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/1701157044318845639'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2011/06/geiger-counter.html' title='Geiger Counter'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm3.static.flickr.com/2632/5813546981_6a99d65d20_t.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-3076851255824482554</id><published>2011-06-04T11:16:00.000-07:00</published><updated>2011-06-04T11:23:11.341-07:00</updated><title type='text'>EthernetDHCP for Arduino</title><content type='html'>I have often expressed my sadness about the cheap Ethernet shields for Arduino not having working DHCP.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well, it appears there is now an &lt;a href="http://gkaindl.com/software/arduino-ethernet/dhcp/"&gt;EthernetDHCP Library&lt;/a&gt; for the &lt;a href="http://www.sparkfun.com/products/9026"&gt;Wiznet-based shield&lt;/a&gt; and apparently it &lt;a href="http://forum.sparkfun.com/viewtopic.php?f=7&amp;amp;t=20765"&gt;actually works&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But the Wiznet-based shield is still $40.  On the horizon, for $46, is the new Microchip-based &lt;a href="http://www.digilentinc.com/Products/Detail.cfm?NavPath=2,892,894&amp;amp;Prod=CHIPKIT-MAX32"&gt;chipKIT Max32 Arduino-Compatible&lt;/a&gt; that has Ethernet on board - but the PHY/magnetics might require a shield that is not yet released.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Some day we will have an easy-to-program microcontroller for an affordable price that can do DHCP! &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-3076851255824482554?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/3076851255824482554/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=3076851255824482554' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/3076851255824482554'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/3076851255824482554'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2011/06/ethernetdhcp-for-arduino.html' title='EthernetDHCP for Arduino'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-7648337461771770164</id><published>2011-05-15T18:17:00.000-07:00</published><updated>2011-05-15T18:19:24.320-07:00</updated><title type='text'>Dorkbot SoCal 44</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: monospace; font-size: medium; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; "&gt;***** SUNDAY, June 5, 2011&lt;br /&gt;***** 1:00pm&lt;br /&gt;***** Machine Project&lt;br /&gt;***** 1200 D North Alvarado Street&lt;br /&gt;***** Los Angeles, CA 90026&lt;br /&gt;***** &lt;a href="http://maps.google.com/maps?f=q&amp;amp;hl=en&amp;amp;q=1200+D+North+Alvarado+Street%2C+Los+Angeles%2C+CA"&gt;Google map of Machine Project&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;Presenters will include...&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;John Carpenter&lt;/b&gt;&lt;br /&gt;&lt;a href="http://www.johnbcarpenter.com/"&gt;http://www.johnbcarpenter.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;John Carpenter is an interactive designer and artist who explores complex data and spaces. based in santa monica, he works for morphosis architects (2005-present) as the visual and interactive designer and teaches media arts at loyola marymount university. john earned his MFA from the department of design | media arts in the school of the arts and architecture at UCLA (2009) where his thesis work, Shoreline Equivalent: Qualitative Spaces in Interactive Art, used qualitative observations of sand patterns at the beach to create an immersive, interactive installation that allowed viewers to explore the fluid, dynamic and emergent nature of the shoreline.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://dorkbot.org/dorkbotsocal/img/2011-carpenter.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Karl Lautman&lt;/b&gt;&lt;br /&gt;&lt;a href="http://www.karllautman.com/"&gt;http://www.karllautman.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Karl Lautman makes kinetic sculpture. His work, which is in public, private, and corporate collections and was recently on display at Mindshare LA, explores the tension between what we want or expect machines to do, and their often conflicting agenda. He'll be discussing this theme in more detail, with photos, video, and actual examples of finished and in-process work. The &lt;a href="http://www.youtube.com/watch?v=oFNG-sxLnM8"&gt;video of his piece&lt;/a&gt;, "Ouroborus" (pictured), has been viewed more than 600,000 times on YouTube.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://dorkbot.org/dorkbotsocal/img/2011-lautman.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Alex Braidwood&lt;/b&gt;&lt;br /&gt;&lt;a href="http://www.listeninginstruments.com/"&gt;http://www.listeninginstruments.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Alex Braidwood will be demonstrating "&lt;a href="http://www.listeninginstruments.com/index.php?l=LI+No.+W02011.01-0008"&gt;Noisolation Headphones&lt;/a&gt;", an invention for mechanically transforming the relationship between a person and the noise in their environment. Alex Braidwood is a designer and design educator who maintains a practice centered around a process of play, experimentation and research through making. Alex's current work explores methods for transforming the relationship between people and the noise in their environment. Alex earned his BFA in Graphic Design from the College for Creative Studies in Detroit, MI and his MFA in Media Design from the Art Center College of Design in Pasadena, CA.&lt;br /&gt;&lt;br /&gt;&lt;iframe src="http://player.vimeo.com/video/23021356?byline=0&amp;amp;portrait=0" width="500" height="331" frameborder="0"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-7648337461771770164?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/7648337461771770164/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=7648337461771770164' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/7648337461771770164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/7648337461771770164'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2011/05/dorkbot-socal-44.html' title='Dorkbot SoCal 44'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-3034305563677077786</id><published>2011-03-23T22:30:00.001-07:00</published><updated>2011-03-25T09:55:05.579-07:00</updated><title type='text'>Chumby Widget Control of Arduino</title><content type='html'>So here is a proof-of-concept of using a Chumby Widget to send commands using XMLsockets to a Python program running on the Chumby, which in turns controls the Arduino over USB serial using &lt;a href="http://firmata.org/"&gt;Firmata&lt;/a&gt;.  Note the LED on pin 13 turning on and off when I hit the orange rectangle on the widget:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="320" height="266" class="BLOG_video_class" id="BLOG_video-9f2201883e730c33" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="movie" value="http://www.youtube.com/get_player"&gt;&lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="flashvars" value="flvurl=http://v5.nonxt4.googlevideo.com/videoplayback?id%3D9f2201883e730c33%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330109597%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D7DE59CFD2AF4FC24C02F9DDF18F5F850E22565B1.29D8C792468A572D0036C3626870114B67BCB8B6%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D9f2201883e730c33%26offsetms%3D5000%26itag%3Dw160%26sigh%3DsyBj2C5eP-sI4Adng_l1gjar0fQ&amp;amp;autoplay=0&amp;amp;ps=blogger"&gt;&lt;embed src="http://www.youtube.com/get_player" type="application/x-shockwave-flash"width="320" height="266" bgcolor="#FFFFFF"flashvars="flvurl=http://v5.nonxt4.googlevideo.com/videoplayback?id%3D9f2201883e730c33%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330109597%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D7DE59CFD2AF4FC24C02F9DDF18F5F850E22565B1.29D8C792468A572D0036C3626870114B67BCB8B6%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D9f2201883e730c33%26offsetms%3D5000%26itag%3Dw160%26sigh%3DsyBj2C5eP-sI4Adng_l1gjar0fQ&amp;autoplay=0&amp;ps=blogger"allowFullScreen="true" /&gt;&lt;/object&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-3034305563677077786?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/3034305563677077786/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=3034305563677077786' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/3034305563677077786'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/3034305563677077786'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2011/03/chumby-widget-control-of-arduino.html' title='Chumby Widget Control of Arduino'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-4129674032828432351</id><published>2011-03-22T23:32:00.000-07:00</published><updated>2011-03-23T22:43:35.558-07:00</updated><title type='text'>xmlsockets in Chumby Widget</title><content type='html'>This took me a while to figure out.  I don't think there are a lot of people using ActionScript xmlsockets in a Chumby widget to talk directly with the Chumby - they are usually hitting external websites.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you want to talk to a python program running on the Chumby itself, you need something like:&lt;div&gt;&lt;br /&gt;&lt;div id='iframeDivb8dd7d5b-a2ab-4827-b58d-72352113e2b5' style='display:none;margin:0px;'&gt;&lt;iframe id='iframeb8dd7d5b-a2ab-4827-b58d-72352113e2b5' src='http://www.blogtrog.com/code.aspx?id=b8dd7d5b-a2ab-4827-b58d-72352113e2b5' style='width: 600px; height: 200px; border: 1px solid #e0e0e0;margin:0px;' frameborder='0'&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;div id='noIframeDivb8dd7d5b-a2ab-4827-b58d-72352113e2b5' style='display:block;margin:0px;'&gt;&lt;pre&gt;&lt;div&gt;&lt;!--&lt;br /&gt;&lt;br /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;br /&gt;&lt;br /&gt;--&gt;&lt;span style="color: #0000FF;"&gt;from&lt;/span&gt;&lt;span style="color: #000000;"&gt; socket &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;import&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;s&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;socket(AF_INET,SOCK_STREAM)&lt;br /&gt;s.bind((&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;localhost&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #000000;"&gt;6666&lt;/span&gt;&lt;span style="color: #000000;"&gt;))&lt;br /&gt;s.listen(&lt;/span&gt;&lt;span style="color: #000000;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br /&gt;policyFile &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&amp;lt;!DOCTYPE cross-domain-policy SYSTEM &amp;quot;http://www.adobe.com/xml/dtds/cross-domain-policy.dtd&amp;quot;&amp;gt;&amp;lt;!-- Policy file for xmlsocket://socks.mysite.com --&amp;gt;&amp;lt;cross-domain-policy&amp;gt;&amp;lt;allow-access-from domain=&amp;quot;*&amp;quot; to-ports=&amp;quot;6666&amp;quot; /&amp;gt;&amp;lt;/cross-domain-policy&amp;gt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000FF;"&gt;while&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;:&lt;br /&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;print&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;waiting for connection...&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt; conn,addr&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;s.accept()&lt;br /&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;print&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;connection made&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt; data&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;conn.recv(&lt;/span&gt;&lt;span style="color: #000000;"&gt;2000&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br /&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;print&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;data: &lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt;,data&lt;br /&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;policy-file-request&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt; data):&lt;br /&gt;  conn.send(policyFile)&lt;br /&gt; conn.close()&lt;br /&gt; &lt;/span&gt;&lt;span style="color: #0000FF;"&gt;print&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000;"&gt;connection closed.&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;quot;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;&lt;script language='javascript' src='http://www.blogtrog.com/scripts/bt_code.js' type='text/javascript'&gt;&lt;/script&gt;&lt;script language='javascript' type='text/javascript'&gt;bt_code_init('b8dd7d5b-a2ab-4827-b58d-72352113e2b5');&lt;/script&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Note the weird XML.  You to send that back to the Flash Player in response to a policy-file-request to assure the Player that you have the right to access that socket.  After that, your ActionScript can talk freely using xmlsockets with the python program running on the Chumby.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-4129674032828432351?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/4129674032828432351/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=4129674032828432351' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/4129674032828432351'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/4129674032828432351'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2011/03/xmlsockets-in-chumby-widget.html' title='xmlsockets in Chumby Widget'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-8287608980420218362</id><published>2011-03-19T17:37:00.000-07:00</published><updated>2011-03-22T23:34:33.371-07:00</updated><title type='text'>My First Chumby Widget</title><content type='html'>So here is my first Chumby Widget:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;object width="320" height="266" class="BLOG_video_class" id="BLOG_video-f6050c1a89d0a92" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="movie" value="http://www.youtube.com/get_player"&gt;&lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="flashvars" value="flvurl=http://v5.nonxt8.googlevideo.com/videoplayback?id%3D0f6050c1a89d0a92%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330109597%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D34019F519558E5FF0B8A30DC030304DEB1CDA2E2.3F3657A03C4B70B93EC4BD918FA5B1666551FFB0%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3Df6050c1a89d0a92%26offsetms%3D5000%26itag%3Dw160%26sigh%3DoCtaZGgPLv6AR_QbRmq7szKolI0&amp;amp;autoplay=0&amp;amp;ps=blogger"&gt;&lt;embed src="http://www.youtube.com/get_player" type="application/x-shockwave-flash"width="320" height="266" bgcolor="#FFFFFF"flashvars="flvurl=http://v5.nonxt8.googlevideo.com/videoplayback?id%3D0f6050c1a89d0a92%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330109597%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D34019F519558E5FF0B8A30DC030304DEB1CDA2E2.3F3657A03C4B70B93EC4BD918FA5B1666551FFB0%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3Df6050c1a89d0a92%26offsetms%3D5000%26itag%3Dw160%26sigh%3DoCtaZGgPLv6AR_QbRmq7szKolI0&amp;autoplay=0&amp;ps=blogger"allowFullScreen="true" /&gt;&lt;/object&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is some pretty simple Actionscript.  Now, to try to use XML sockets, this Actionscript appears to work:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;var xmlSocket:XMLSocket=new XMLSocket();&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;xmlSocket.onConnect=function() {&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;    xmlSocket.send(new XML("&lt;message&gt;&lt;text&gt;Hello, World!&lt;/text&gt;&lt;/message&gt;"));&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;xmlSocket.onXML=function(myXML) {&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;    trace(myXML.firstChild.childNodes[2].firstChild.nodeValue);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;    xmlSocket.close();&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;xmlSocket.connect("localhost",6666);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And on the python side:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&gt;&gt;&gt; from socket import *&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&gt;&gt;&gt; s=socket(AF_INET,SOCK_STREAM)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&gt;&gt;&gt; s.bind(('localhost',6666))&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&gt;&gt;&gt; s.listen(1)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&gt;&gt;&gt; conn,addr=s.accept()&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&gt;&gt;&gt; conn.recv(1024)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;'&lt;message&gt;&lt;text&gt;Hello, World!&lt;/text&gt;&lt;/message&gt;\x00'&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now I just need to have the Chumby widget XML socket messages control Firmata transmissions to contol the Arduino.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Followup:&lt;/b&gt;  Well, the Actionscript and Python worked fine on my laptop, but a Chumby Widget needs a proper "crossdomain.xml" served out for the pair to work...see the next post!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-8287608980420218362?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/8287608980420218362/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=8287608980420218362' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/8287608980420218362'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/8287608980420218362'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2011/03/my-first-chumby-widget.html' title='My First Chumby Widget'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-7646893876879749338</id><published>2011-03-07T13:29:00.001-08:00</published><updated>2011-04-04T10:07:14.896-07:00</updated><title type='text'>Firmatization</title><content type='html'>&lt;a href="http://firmata.org/wiki/Main_Page"&gt;Firmata&lt;/a&gt; is based (mainly) on a three-byte MIDI-like message.  If you read the protocol and have no background, it won't make any sense.  Let's start with a digital output message.&lt;div&gt;&lt;br /&gt;&lt;div id='iframeDivc2fc6c4a-9ffb-41b7-a47d-fb077427ba63' style='display:none;margin:0px;'&gt;&lt;iframe id='iframec2fc6c4a-9ffb-41b7-a47d-fb077427ba63' src='http://www.blogtrog.com/code.aspx?id=c2fc6c4a-9ffb-41b7-a47d-fb077427ba63' style='width: 600px; height: 200px; border: 1px solid #e0e0e0;margin:0px;' frameborder='0'&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;div id='noIframeDivc2fc6c4a-9ffb-41b7-a47d-fb077427ba63' style='display:block;margin:0px;'&gt;&lt;pre&gt;&lt;div&gt;&lt;!--&lt;br /&gt;&lt;br /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;br /&gt;&lt;br /&gt;--&gt;&lt;span style="color: #0000FF;"&gt;import&lt;/span&gt;&lt;span style="color: #000000;"&gt; serial&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;#&lt;/span&gt;&lt;span style="color: #008000;"&gt; find your own usb serial port by &amp;quot;ls /dev&amp;quot; and note I changed the Firmata on my Arduino to use 9600 bps&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;ser&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;serial.Serial(&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;/dev/ttyUSB0&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #000000;"&gt;9600&lt;/span&gt;&lt;span style="color: #000000;"&gt;,timeout&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;#&lt;/span&gt;&lt;span style="color: #008000;"&gt; 0x91 is the digital write message (0x90) + &amp;quot;port&amp;quot; 1 (on larger board, there might be more ports), the second two bytes are a bitmask of the digital I/O pins in terms of if they should be on or off&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;#&lt;/span&gt;&lt;span style="color: #008000;"&gt; turn on all digital outputs&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;ser.write(chr(&lt;/span&gt;&lt;span style="color: #000000;"&gt;0x91&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt;chr(&lt;/span&gt;&lt;span style="color: #000000;"&gt;0x7F&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt;chr(&lt;/span&gt;&lt;span style="color: #000000;"&gt;0x7F&lt;/span&gt;&lt;span style="color: #000000;"&gt;))&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;#&lt;/span&gt;&lt;span style="color: #008000;"&gt; turn off all digital outputs&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;ser.write(chr(&lt;/span&gt;&lt;span style="color: #000000;"&gt;0x91&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt;chr(&lt;/span&gt;&lt;span style="color: #000000;"&gt;0x00&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt;chr(&lt;/span&gt;&lt;span style="color: #000000;"&gt;0x00&lt;/span&gt;&lt;span style="color: #000000;"&gt;))&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;&lt;script language='javascript' src='http://www.blogtrog.com/scripts/bt_code.js' type='text/javascript'&gt;&lt;/script&gt;&lt;script language='javascript' type='text/javascript'&gt;bt_code_init('c2fc6c4a-9ffb-41b7-a47d-fb077427ba63');&lt;/script&gt;&lt;/div&gt;&lt;div&gt;If that isn't exciting enough, let's enable this over a TCP socket using &lt;a href="http://pyserial.sourceforge.net/examples.html#tcp-ip-serial-bridge"&gt;tcp_serial_redirect.py&lt;/a&gt;.  One on terminal:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;python ./tcp_serial_redirect.py -p /dev/tty.usbserial-A4000QBg -P 6666&lt;/div&gt;&lt;div&gt;--- TCP/IP to Serial redirector --- type Ctrl-C / BREAK to quit&lt;/div&gt;&lt;div&gt;--- /dev/tty.usbserial-A4000QBg 9600,8,N,1 ---&lt;/div&gt;&lt;div&gt;Waiting for connection on 6666...&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;On the other:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;from socket import *&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;s=socket(AF_INET, SOCK_STREAM)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;s.connect(('127.0.0.1',6666))&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And you know it is working because terminal 1 will say:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Connected by ('127.0.0.1', 50961)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Then on terminal 2, you can turn the Arduino pin 13 LED on/off with:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;s.send(chr(0x91)+chr(0x20)+chr(0))&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;s.send(chr(0x91)+chr(0x00)+chr(0))&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;(I should note that for now on I am using &lt;a href="http://www.blogtrog.com/"&gt;BlogTrog CodeWindow&lt;/a&gt; for my Python)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-7646893876879749338?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/7646893876879749338/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=7646893876879749338' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/7646893876879749338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/7646893876879749338'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2011/03/firmatization.html' title='Firmatization'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-649360153092196991</id><published>2011-03-07T12:51:00.000-08:00</published><updated>2011-03-07T13:14:33.881-08:00</updated><title type='text'>Chumbuino and Firmata</title><content type='html'>My scheme to establish a simple method for web-enabled / widget-enabled control of an Arduino from a Chumby (aka "Chumbuino") moves forward.  &lt;a href="http://blog.bangsplatpresents.com/"&gt;Theron Trowbridge&lt;/a&gt; suggested the use of &lt;a href="http://www.firmata.org/"&gt;Firmata&lt;/a&gt;, a MIDI-like protocol, as a standard serial control protocol between the Chumby and the Arduino.  I grabbed &lt;a href="http://at.or.at/hans/pd/objects.html"&gt;PDuino&lt;/a&gt; (Firmata for PD) and &lt;a href="http://code.google.com/p/pyduino/source/checkout"&gt;Pyduino&lt;/a&gt; (Firmata for Python), loaded up "OldStandardFirmata" on my aging Arduino NG, and was able to get the Pin 13 LED to flip on and off reliably through both.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now I need to 1) create a Python program to hit a web service to implement Firmata and 2) then create the web service using Google App Engine&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Follow-on projects include 3) socket-to-serial gateway in Python and 4) tweak Pduino to output to a socket and 5) then xmlsocket-to-serial gateway in Python with 6) Chumby Widget with xmlsockets to control Arduino. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;[it turns out the Chumby widget might be easier than I think, as there already is a &lt;a href="http://www.kasperkamperman.com/blog/arduino/arduino-flash-communication-as3/"&gt;Flash Arduino Firmata controller&lt;/a&gt;.]&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-649360153092196991?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/649360153092196991/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=649360153092196991' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/649360153092196991'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/649360153092196991'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2011/03/chumbuino-and-firmata.html' title='Chumbuino and Firmata'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-1520892086781889756</id><published>2011-02-26T19:02:00.000-08:00</published><updated>2011-02-26T19:10:22.827-08:00</updated><title type='text'>Web Service for Full "Chumbified Ardunio" control?</title><content type='html'>You may remember my &lt;a href="http://techartblog.blogspot.com/2009/12/example-phy2phy-interaction-web-service.html"&gt;PHY2PHY-intermediating web service&lt;/a&gt;.  &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It occurs to me that one could have an intermediating web service that exposes all the aspects of an Arduino through a Chumby One.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The Chumby could hit the web service every so often (say 1-2 s) to get commands for getting/settings the connected Arduino I/O values.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Someone has already &lt;a href="http://forums.trossenrobotics.com/tutorials/how-to-diy-128/complete-control-of-an-arduino-via-serial-3300/"&gt;written a protocol for full serial control of the Arduino&lt;/a&gt;, so adding the web service would be simple...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;By the way, should an Arduino on a Chumby be a "Chumbified Arduino" or a "Chumbuino"?&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-1520892086781889756?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/1520892086781889756/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=1520892086781889756' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/1520892086781889756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/1520892086781889756'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2011/02/web-service-for-full-chumbified-ardunio.html' title='Web Service for Full &quot;Chumbified Ardunio&quot; control?'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-5030311808258953698</id><published>2011-02-26T13:08:00.000-08:00</published><updated>2011-02-26T13:35:54.914-08:00</updated><title type='text'>Arduino to Chumby to UDP</title><content type='html'>So after getting &lt;a href="http://wiki.chumby.com/mediawiki/index.php/Python"&gt;Chumby Python&lt;/a&gt; + &lt;a href="http://www.psychicorigami.com/2010/06/26/chumby-to-arduino-communication-using-pyserial/"&gt;PySerial&lt;/a&gt; on a USB stick, I hooked up a USB hub to the &lt;a href="http://www.chumby.com/pages/chumby_one"&gt;Chumby One&lt;/a&gt;, hooked up the USB stick to the hub (which ends up at /mnt/usb on the Chumby), and also hooked up the Arduino to the USB hub:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-JUq9dwCimuQ/TWlvdFJYFzI/AAAAAAAAAMM/Zmsg9KZIsjY/s1600/chumby_usb_arduino.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 271px;" src="http://4.bp.blogspot.com/-JUq9dwCimuQ/TWlvdFJYFzI/AAAAAAAAAMM/Zmsg9KZIsjY/s320/chumby_usb_arduino.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5578112158863464242" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Then I wrote this program on the Chumby:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;from socket import *&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;import serial&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;from time import sleep&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;ser=serial.Serial('/dev/ttyUSB0',9600,timeout=0)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;s=socket(AF_INET,SOCK_DGRAM)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;s.bind(('',10001))&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;while 1:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;data = ser.read(256)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;if len(data) &gt; 0:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;print "Got:",data&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;s.sendto(data,('[my server IP  addr]',10001))&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;sleep(0.5)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;print "not blocked"&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Note that this program is &lt;a href="http://eli.thegreenplace.net/2009/07/30/setting-up-python-to-work-with-the-serial-port/"&gt;not blocked &lt;/a&gt;waiting for Serial input from the Arduino.  On my Internet server, I wrote:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;from socket import *&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;s=socket(AF_INET,SOCK_DGRAM)  # create UDP socket&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;s.bind(('[my server IP addr',10001)) # bind to port 10001&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;while 1:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;[msg,addr]=s.recvfrom(256)  # receive packet of up to 256 bytes&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;print "addr:",addr," message:",msg&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Then everything that the Arduino sends out on Serial to the Chumby goes over UDP to my Internet server.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is easy!&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-5030311808258953698?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/5030311808258953698/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=5030311808258953698' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/5030311808258953698'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/5030311808258953698'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2011/02/arduino-to-chumby-to-udp.html' title='Arduino to Chumby to UDP'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-JUq9dwCimuQ/TWlvdFJYFzI/AAAAAAAAAMM/Zmsg9KZIsjY/s72-c/chumby_usb_arduino.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-5873130443599988740</id><published>2011-02-23T21:24:00.000-08:00</published><updated>2011-02-24T09:38:53.384-08:00</updated><title type='text'>Making Holograms</title><content type='html'>I once had a holography kit a long time ago (for use with my HeNe laser), but never got around to building the recommended stable sandbox for it, and it got lost in a move.  &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This Christmas, Carla bought me the &lt;a href="http://www.litiholo.com/"&gt;Litiholo Kit&lt;/a&gt;.  This is the most awesome introductory holography kit ever.  First, there is no wet development of the plates.  You just expose them for around five minutes, and they are done.  It even comes with a blue LED keychain light to use as a "safelight" while you are exposing the film in the dark with the red laser.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The Litiholo Kit uses a known technique for easy holograms - there is only a single expanded beam cone from a solid-state laser.  The part that directly illuminates the film plate is the reference beam, and the part that illuminates the object and bounces off of it is the object beam.  There is no need for additional mirrors or lenses to steer the reference beam around separately from the object beam.  Plus the system is designed to minimize vibration between the object and the plate, which is one of the biggest source of failed holograms.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So how was my first five minute exposure?&lt;/div&gt;&lt;br /&gt;&lt;img src="http://farm6.static.flickr.com/5097/5430340154_2b5568be34.jpg" width="500" height="374" alt="Car Hologram and Car" /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You can see the hologram above, and the red matchbox car comes with the kit below.  I was amazed how easy it was to make a hologram!  So I got creative:&lt;/div&gt;&lt;br /&gt;&lt;object type="application/x-shockwave-flash" width="400" height="225" data="http://www.flickr.com/apps/video/stewart.swf?v=71377" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"&gt; &lt;param name="flashvars" value="intl_lang=en-us&amp;amp;photo_secret=f7664aab3e&amp;amp;photo_id=5429890683"&gt; &lt;param name="movie" value="http://www.flickr.com/apps/video/stewart.swf?v=71377"&gt; &lt;param name="bgcolor" value="#000000"&gt; &lt;param name="allowFullScreen" value="true"&gt;&lt;embed type="application/x-shockwave-flash" src="http://www.flickr.com/apps/video/stewart.swf?v=71377" bgcolor="#000000" allowfullscreen="true" flashvars="intl_lang=en-us&amp;amp;photo_secret=f7664aab3e&amp;amp;photo_id=5429890683" height="225" width="400"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So obviously these are not the best holograms - they are a bit messy, they are small, and because of the angle of illumination you have real limitations on the size and shape of what looks good.  But on the other hand, it is incredibly simple, works, and is a great introduction to holography!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-5873130443599988740?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/5873130443599988740/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=5873130443599988740' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/5873130443599988740'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/5873130443599988740'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2011/02/making-holograms.html' title='Making Holograms'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm6.static.flickr.com/5097/5430340154_2b5568be34_t.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-2005525789964938307</id><published>2011-02-23T20:59:00.000-08:00</published><updated>2011-02-24T09:40:10.911-08:00</updated><title type='text'>Chumby One and Arduino</title><content type='html'>So I got a &lt;a href="http://www.chumby.com/pages/chumby_one"&gt;Chumby One&lt;/a&gt;.  I loaded this up on the Arduino:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;int ledPin =  13;  &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;int i=0;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;void setup()   {                &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  Serial.begin(9600);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  pinMode(ledPin, OUTPUT);     &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;void loop()                     &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  i=i+1;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  Serial.println(i,DEC);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  digitalWrite(ledPin, HIGH);   &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  delay(500);           &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  digitalWrite(ledPin, LOW);    &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;  delay(500);              &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Georgia, serif;"&gt;Then I plugged the Arduino into the Chumby One USB port, I turned on the &lt;a href="http://wiki.chumby.com/mediawiki/index.php/Chumby_tricks#Hidden_screen_in_Control_Panel"&gt;Chumby sshd&lt;/a&gt;, ssh'ed into the Chumby One, and did this:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;stty -F /dev/ttyUSB0 9600&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;while true; do&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        read LINE &lt; /dev/ttyUSB0&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;        echo $LINE&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;done&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Georgia, serif;"&gt;And boom, I started seeing data coming in from the Arduino.  Wow, that was simple! &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Georgia, serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Georgia, serif;"&gt;Next to get a USB hub so I can have the USB drive with &lt;a href="http://wiki.chumby.com/mediawiki/index.php/Python"&gt;Chumby Python&lt;/a&gt; &amp;amp; &lt;a href="http://www.psychicorigami.com/2010/06/26/chumby-to-arduino-communication-using-pyserial/"&gt;PySerial&lt;/a&gt; on it as well as connecting the Arduino.  I assume that would work...&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-2005525789964938307?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/2005525789964938307/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=2005525789964938307' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/2005525789964938307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/2005525789964938307'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2011/02/chumby-one-and-arduino.html' title='Chumby One and Arduino'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-7896531171655056820</id><published>2011-02-23T15:20:00.000-08:00</published><updated>2011-02-24T09:35:05.174-08:00</updated><title type='text'>2 USARTs and new Breath Sensor</title><content type='html'>Regarding cheap &lt;a href="http://phy2phy.wikidot.com/"&gt;PHY2PHY&lt;/a&gt; (physical to physical interactions over the Internet), I am still convinced that it is hard to beat the Lantronix products for having a solid serial to TCP/UDP/IP/DCHP stack.  My best results was with the good old &lt;a href="http://www.gridconnect.com/xport.html"&gt;Xport&lt;/a&gt;.  My results with the &lt;a href="http://www.gridconnect.com/xportdirect-.html"&gt;Xport Direct&lt;/a&gt; and an Xport Arduino Shield have been less than stellar, but it may just be do to the sad state of Arduino SoftwareSerial (even the better versions).   Both Lantronix products are around $50.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My best results were with &lt;a href="http://cubloc.com/product/01_01cb220.php"&gt;Comfile CUBLOC&lt;/a&gt; that has two USARTS, one for monitoring the system, the other for serial-to-Ethernet.  But wait, now you can get the Arduino/&lt;a href="http://wiring.org.co/hardware/"&gt;Wiring Board&lt;/a&gt;-esque &lt;a href="http://sanguino.cc/"&gt;Sanguino&lt;/a&gt; with 2 USARTS.  The Sanguino (no USB) is around $30, the Wiring Board itself is $60 if you need a lot of digi I/O.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Then I come upon a new &lt;a href="http://shop.moderndevice.com/products/wind-sensor"&gt;Wind Sensor&lt;/a&gt; from Modern Device.  The anemometer impeller solution was always kind of expensive plus it took a long time to spin down once spun up.  I wonder how responsive this one is?  At $17, it is also way cheaper.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-7896531171655056820?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/7896531171655056820/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=7896531171655056820' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/7896531171655056820'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/7896531171655056820'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2011/02/2-usarts-and-new-breath-sensor.html' title='2 USARTs and new Breath Sensor'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-8672096572723943345</id><published>2011-02-18T17:02:00.001-08:00</published><updated>2011-02-18T17:33:48.799-08:00</updated><title type='text'>My Phy2Phy SBC obsession</title><content type='html'>OK, here is what I want:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1) Linux SBC with Python (out of the box)&lt;/div&gt;&lt;div&gt;2) Ethernet with DHCP working (out of the box)&lt;/div&gt;&lt;div&gt;2) Lots of GPIOs&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I have a Mini2440, but it came with a Linux with unworkable DHCP.  Weird.  Oh yes, I can download a toolchain and compile my own kernel and load it up to get DHCP working.  Maybe I can even compile and get Python going.  If I could spend a week straight working on this, sure I could do it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Meanwhile I have the SheevaPlug, which does DHCP and Python out of the box, but no easy GPIOs.  You can &lt;a href="http://www.arcfn.com/2009/06/arduino-sheevaplug-cool-hardware.html"&gt;hook it up to an Arduino&lt;/a&gt; though.  So looks like that will be the answer to my madness.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;On the other hand, I may just go &lt;a href="http://www.psychicorigami.com/2010/06/26/chumby-to-arduino-communication-using-pyserial/"&gt;Chumby &amp;amp; Arduino&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-8672096572723943345?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/8672096572723943345/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=8672096572723943345' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/8672096572723943345'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/8672096572723943345'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2011/02/my-phy2phy-sbc-obsession.html' title='My Phy2Phy SBC obsession'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-7375610515566271646</id><published>2011-02-13T10:16:00.000-08:00</published><updated>2011-02-13T10:17:16.575-08:00</updated><title type='text'>Dorkbot SoCal 43 - Feb. 27, 2011</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: monospace; font-size: medium; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; "&gt;&lt;h2&gt;Dorkbot SoCal 43&lt;/h2&gt;&lt;br /&gt;***** SUNDAY, February 27, 2011&lt;br /&gt;***** 1:00pm&lt;br /&gt;***** Machine Project&lt;br /&gt;***** 1200 D North Alvarado Street&lt;br /&gt;***** Los Angeles, CA 90026&lt;br /&gt;***** &lt;a href="http://maps.google.com/maps?f=q&amp;amp;hl=en&amp;amp;q=1200+D+North+Alvarado+Street%2C+Los+Angeles%2C+CA"&gt;Google map of Machine Project&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Christopher O'Leary&lt;/b&gt;&lt;br /&gt;&lt;a href="http://users.design.ucla.edu/~oleary/index.html"&gt;http://users.design.ucla.edu/~oleary/index.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Christopher O'Leary is an artist who works across mediums including video, photography, sound and installation. Utilizing novel lighting and post-production techniques, the creation of his work is tightly controlled, enhancing and building upon the performative aspects of his projects. These activities include performance art, computer-vision systems and non-linear videos.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://users.design.ucla.edu/~oleary/images/front/front.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Lewis Keller&lt;/b&gt;&lt;br /&gt;&lt;a href="http://adagio.calarts.edu/~glewlio/"&gt;http://adagio.calarts.edu/~glewlio/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Los Angeles based artist Lewis Keller manipulates frequency, timbre and amplitude via performance, installation, fabrication and digital media. His work combines sophisticated technology with crude humble structures, inviting listeners to question their relationships with time, technology, space, sound and silence. He received his BA from Colorado College and his MFA from CalArts.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://adagio.calarts.edu/~glewlio/keller_dangcurve.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Michael Wilson and Chris Weisbart&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Michael Wilson and Chris Weisbart of the &lt;a href="http://www.nhm.org/site/"&gt;Natural History Museum of Los Angeles&lt;/a&gt; will be presenting on the incorporation of DIY and open source technologies in the museum exhibit world, where the need for interpretive and educational technology is often not matched by budgets. The team will present a lecture on projects they have developed for the NHM as well as a current project that Michael and Chris have been working on in collaboration with students at New Mexico Highlands University dealing with the &lt;a href="http://en.wikipedia.org/wiki/Miller%E2%80%93Urey_experiment"&gt;Miller-Urey experiment&lt;/a&gt;.&lt;br /&gt;&lt;img src="http://www.dorkbot.org/dorkbotsocal/img/chrismichael.jpg" /&gt; &lt;img src="http://upload.wikimedia.org/wikipedia/commons/thumb/5/54/Miller-Urey_experiment-en.svg/350px-Miller-Urey_experiment-en.svg.png" /&gt; &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-7375610515566271646?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/7375610515566271646/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=7375610515566271646' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/7375610515566271646'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/7375610515566271646'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2011/02/dorkbot-socal-43-feb-27-2011.html' title='Dorkbot SoCal 43 - Feb. 27, 2011'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-4808855678749137447</id><published>2011-02-11T14:41:00.000-08:00</published><updated>2011-02-11T15:07:33.866-08:00</updated><title type='text'>OpenServo</title><content type='html'>I think the &lt;a href="http://www.openservo.com/"&gt;OpenServo&lt;/a&gt; project is pretty cool!  My first scheme on how to do &lt;a href="http://www.t11s.com/touch.html"&gt;Touch&lt;/a&gt; was to read the error voltage from a servo driving the finger to indicate how hard someone was pressing on it.  Because of the opacity of the servo circuit, I pretty quickly gave up on this idea, and went with pressure sensitive resistors on the fingertip.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now with OpenServo, I could use the actual &lt;a href="http://www.openservo.com/TWIProtocol-dev"&gt;position register and/or the back EMF register&lt;/a&gt; to try to determine position in a touch-over-IP solution, without having to deal with any funky pressure sensors.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Whether this would actually work or not is unclear, as you would need to apply enough touch pressure to either move the servo at least one notch out of position, or enough to increase the servo power or back EMF reading.  But the &lt;a href="http://www.sparkfun.com/products/9014"&gt;price is right&lt;/a&gt;!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You know what would go good with the OpenServo?  The &lt;a href="http://www.olimex.com/dev/pic-mini-web.html"&gt;PIC-MINI-WEB&lt;/a&gt;! At &lt;a href="http://www.sparkfun.com/products/7829"&gt;$40.95&lt;/a&gt; you get an Ethernet PHY, TCP/IP stack, and it would be easy to I2C over to the OpenServo.  Cheap PHY2PHY goodness!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-4808855678749137447?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/4808855678749137447/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=4808855678749137447' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/4808855678749137447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/4808855678749137447'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2011/02/openservo.html' title='OpenServo'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-2252277264962229618</id><published>2010-12-24T19:48:00.000-08:00</published><updated>2010-12-24T19:53:26.383-08:00</updated><title type='text'>Dorkbot SoCal Dec. 28</title><content type='html'>&lt;div&gt;Dorkbot SoCal 42: Snowball Blaster Demo in Santa Clarita&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;***** Tuesday, December 28, 2010&lt;/div&gt;&lt;div&gt;***** 7:00pm&lt;/div&gt;&lt;div&gt;***** The Driveway of Ric Turner&lt;/div&gt;&lt;div&gt;***** &lt;a href="http://tinyurl.com/snowblast"&gt;The brightest house on Philbrook Avenue&lt;/a&gt;&lt;/div&gt;&lt;div&gt;***** Santa Clarita, CA 91354&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Google map:&lt;/div&gt;&lt;div&gt;&lt;a href="http://tinyurl.com/snowblast"&gt;http://tinyurl.com/snowblast&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="  -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family:monospace;font-size:medium;"&gt;&lt;b&gt;Ric Turner&lt;/b&gt; - Snowball Blaster&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=xDZtIirXXtQ"&gt;http://www.youtube.com/watch?v=xDZtIirXXtQ&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="640" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/xDZtIirXXtQ?fs=1&amp;amp;hl=en_US"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/xDZtIirXXtQ?fs=1&amp;amp;hl=en_US" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is a special holiday edition of Dorkbot SoCal, held at perhaps the most ambitious light display in Southern California. We'll meet at the driveway of Ric Turner at 7pm on Tuesday December 28th 2010, and he'll demo and explain his latest Christmas Light video game project, Snowball Blaster.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Ric Turner is a former Disney Imagineer who created special effects for theme park attractions and shows such as Space Mountain, The Haunted Mansion, and the Finding Nemo Submarine Voyage.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Snowball Blaster Description&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Hop in Santa's electric training sled and grab the game controller for an adventure in snowball dodging. Press the left button to move left and the right to move right. Make it past all the snowballs for a big light show! (nobody has made it yet!) Game is easy enough for kids and challenging for adults... and quite addictive.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Snowball Blaster has 128 channels of Light-o-rama controlled by a PC. The game logic is running on a Basic Stamp which accepts inputs from the player switches and controls the Red Arrows with sold state relays. The BS also sends logic level triggers to the LOR system for Game start and Crash. The snowballs, scoreboard (and the rest of the light show live in the LOR program.) There are separate LOR programs for Attract, Crash and Game play. The BS knows when the snowballs reach the bottom, and compares that to where it knows the Arrow is to detect crashes.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The game is designed around the limitation of having very few positions to light up. The timing of when they light up is more versatile, so that's where the game lives. It's easy to learn, starts easy and gets harder pretty quick. The audio is broadcast on FM so people watching in cars get a good show too.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Come on out, and bring your friends and family!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-2252277264962229618?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/2252277264962229618/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=2252277264962229618' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/2252277264962229618'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/2252277264962229618'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2010/12/dorkbot-socal-dec-28.html' title='Dorkbot SoCal Dec. 28'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-9104357095302325314</id><published>2010-11-13T23:11:00.000-08:00</published><updated>2010-11-13T23:13:32.515-08:00</updated><title type='text'>AtCrashSpace app</title><content type='html'>This is the support page for the AtCrashSpace app.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This app allows you to see if the &lt;a href="http://blog.crashspace.org/"&gt;Crash Space&lt;/a&gt; hackerspace in Los Angeles is open.  If you are connected to a network inside Crash Space, you can also "check in" to indicate your presence.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-9104357095302325314?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/9104357095302325314/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=9104357095302325314' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/9104357095302325314'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/9104357095302325314'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2010/11/atcrashspace-app.html' title='AtCrashSpace app'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-5280715436850399331</id><published>2010-10-09T14:46:00.000-07:00</published><updated>2010-10-09T14:50:26.506-07:00</updated><title type='text'>Dorkbot SoCal Oct. 16</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: monospace; font-size: medium; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; "&gt;&lt;h2&gt;Dorkbot SoCal 41&lt;/h2&gt;***** Saturday, October 16, 2010&lt;br /&gt;***** 1:00pm&lt;br /&gt;***** Machine Project&lt;br /&gt;***** 1200 D North Alvarado Street&lt;br /&gt;***** Los Angeles, CA 90026&lt;br /&gt;***** &lt;a href="http://maps.google.com/maps?f=q&amp;amp;hl=en&amp;amp;q=1200+D+North+Alvarado+Street%2C+Los+Angeles%2C+CA"&gt;Google map of Machine Project&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;David Resnick&lt;/b&gt; - Undulating Flux&lt;br /&gt;&lt;a href="http://www.davidresnick.me/"&gt;http://www.davidresnick.me/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Undulating Flux is David's first-year project in the Arts Computation Engineering program at UC Irvine. The goal of Undulating Flux is to bring the participant into what psychologist Mihalyi Csikszentmihalyi termed a flow state, described as a state of being wherein action follows upon action according to an internal logic that seems to need no conscious intervention by the participant. Undulating Flux explores these questions by setting up a transduction chain wherein a vibrationist sends intense music and motion-synced vibrations into the participants body. The technology behind this project centers around the Nintendo Wii remote and the Max programming environment. The wiimote data is streamed into Max wherein parameters are set to control the intensity of each vibrator individually. A Max package called Maxuino is used to send the control data to an Arduino microcontroller, which is connected to the motors.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.dorkbot.org/dorkbotsocal/img/undulating_flux.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Theron Trowbridge&lt;/b&gt; - DIY 3D Printing&lt;br /&gt;&lt;br /&gt;Theron Trowbridge lives in Los Angeles and manages the digital video encoding department of a Hollywood post production facility. A life-long DIY-er, he is a founding member of &lt;a href="http://www.crashspace.org/"&gt;CRASH Space&lt;/a&gt;, a hackerspace in Los Angeles, where he helped build, maintain, and upgrade multiple &lt;a href="http://wiki.makerbot.com/cupcake"&gt;MakerBot Cupcake CNCs&lt;/a&gt;. He has also 3D objects for priting and is a regular contributor to &lt;a href="http://www.thingiverse.com/"&gt;Thingiverse.&lt;/a&gt; In his spare time, Theron creates and performs weird computer-generated electronic music under the monicker &lt;a href="http://www.bangsplatpresents.com/"&gt;Bangsplat&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.dorkbot.org/dorkbotsocal/img/makerbots.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Kevin Nelson&lt;/b&gt; - Nexus Pyrosphere&lt;br /&gt;&lt;a href="http://nexusorg.org/category/fire-art/pyrosphere-fire-art/"&gt;http://nexusorg.org/category/fire-art/pyrosphere-fire-art/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Created by the Nexus group, The PyroSphere is a 22 ft diameter geodesic sphere, elevated on five 15 ft legs for a total hieght of 37 ft. The sphere itself has 92 flame effect valves, each located at one of the sphere's 92 vertices, which emits a 3 to 4 ft fire ball, controlled individually by a microcontroller. &lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: monospace; font-size: medium; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; "&gt;&lt;br /&gt;&lt;img src="http://www.dorkbot.org/dorkbotsocal/img/pyrosphere.jpg" /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-5280715436850399331?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/5280715436850399331/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=5280715436850399331' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/5280715436850399331'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/5280715436850399331'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2010/10/dorkbot-socal-oct-16.html' title='Dorkbot SoCal Oct. 16'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-6115953906253984594</id><published>2010-09-23T21:26:00.000-07:00</published><updated>2010-09-23T22:08:28.949-07:00</updated><title type='text'>Ducted Fan and Arduino</title><content type='html'>&lt;div&gt;So I was looking for more of a breeze...&lt;/div&gt;&lt;br /&gt;&lt;object width="640" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/pocGyylyRE8?fs=1&amp;amp;hl=en_US&amp;amp;rel=0"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/pocGyylyRE8?fs=1&amp;amp;hl=en_US&amp;amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;...seems like I've got some good breeze now with the 56mm ducted fan.  Be careful, these ducted fans will slice your finger off!&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Set up: &lt;a href="http://www3.towerhobbies.com/cgi-bin/wti0001p?&amp;amp;I=LXLWW9"&gt;Great Planes Ammo 20-40-3500 In-Runner Brushless Motor&lt;/a&gt;, &lt;a href="http://www3.towerhobbies.com/cgi-bin/wti0001p?&amp;amp;I=LXKSY4"&gt;Great Planes Silver Series 25A Brushless ESC&lt;/a&gt;, &lt;a href="http://www3.towerhobbies.com/cgi-bin/wti0001p?&amp;amp;I=LXLXA2&amp;amp;P=7"&gt;Great Planes HyperFlow 370 56mm Ducted Fan Unit&lt;/a&gt;,  &lt;a href="http://www.mpja.com/prodinfo.asp?number=16019+PS"&gt;9V/17A power supply from MPJA&lt;/a&gt;, and &lt;a href="http://www.arduino.cc/"&gt;Arduino&lt;/a&gt;.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Below is the sketch that works with the Great Planes ESC (adapted from other people's ESC sketches).  It arms the ESC, then sweeps the speed up, stop, back to full speed, and sweeps back down to off.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#include &amp;lt;Servo.h&amp;gt;&lt;br /&gt;&lt;br /&gt;Servo myservo;&lt;br /&gt;&lt;br /&gt;void arm(){&lt;br /&gt;// arm the speed controller, modify as necessary for your ESC&lt;br /&gt;Serial.println("arming");&lt;br /&gt;setSpeed(30);&lt;br /&gt;delay(2000);&lt;br /&gt;setSpeed(90);&lt;br /&gt;delay(2000);&lt;br /&gt;Serial.println("armed");&lt;br /&gt;setSpeed(30);&lt;br /&gt;delay(2000);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void setSpeed(int speed){&lt;br /&gt;// speed is from 0 to 100 where 0 is off and 100 is maximum speed&lt;br /&gt;//the following maps speed values of 0-100 to angles from 0-180,&lt;br /&gt;int angle = map(speed, 0, 100, 0, 180);&lt;br /&gt;myservo.write(angle);  &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void setup()&lt;br /&gt;{&lt;br /&gt;Serial.begin(115200);&lt;br /&gt;myservo.attach(9);&lt;br /&gt;arm();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void loop()&lt;br /&gt;{&lt;br /&gt;int speed;&lt;br /&gt;&lt;br /&gt;Serial.println("Sweeping up");&lt;br /&gt;for(speed = 37; speed &amp;lt;= 90; speed += 1) {&lt;br /&gt;  setSpeed(speed);&lt;br /&gt;  Serial.println(speed);&lt;br /&gt;  delay(100);&lt;br /&gt;}&lt;br /&gt;setSpeed(30);&lt;br /&gt;delay(1000);&lt;br /&gt;Serial.println("Sweeping down");&lt;br /&gt;for(speed = 90; speed &amp;gt; 37; speed -= 1) {&lt;br /&gt;  setSpeed(speed);&lt;br /&gt;  Serial.println(speed);&lt;br /&gt;  delay(100);&lt;br /&gt;}&lt;br /&gt;Serial.println("30 halting...");&lt;br /&gt;setSpeed(30);&lt;br /&gt;delay(5000);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-6115953906253984594?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/6115953906253984594/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=6115953906253984594' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/6115953906253984594'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/6115953906253984594'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2010/09/ducted-fan-and-arduino.html' title='Ducted Fan and Arduino'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-2786807438955593252</id><published>2010-09-19T10:13:00.000-07:00</published><updated>2010-09-23T21:24:15.774-07:00</updated><title type='text'>Brushless Motor Test</title><content type='html'>I hooked up a &lt;a href="http://www3.towerhobbies.com/cgi-bin/wti0001p?&amp;amp;I=LXLWW9"&gt;Great Planes Ammo 20-40-3500&lt;/a&gt; In-Runner Brushless Motor attached to &lt;a href="http://www3.towerhobbies.com/cgi-bin/wti0001p?&amp;amp;I=LXKSY4"&gt;Great Planes Silver Series 25A Brushless ESC&lt;/a&gt; 5V/2A BEC powered by Radio Shack 7.2V battery and controlled by Arduino servo library.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This ESC has three control wires.  Brown is ground, Red is the ESC "battery eliminator ciruit (BEC)" +5V, and Orange is the servo pulse control.  I hooked up the Brown wire to the Arduino ground, and the Orange wire to Arduino pin 9, and left the Red wire not hooked to anything:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;object width="640" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/CH2dY3IRhY4?fs=1&amp;amp;hl=en_US"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/CH2dY3IRhY4?fs=1&amp;amp;hl=en_US" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-2786807438955593252?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/2786807438955593252/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=2786807438955593252' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/2786807438955593252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/2786807438955593252'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2010/09/brushless-motor-test.html' title='Brushless Motor Test'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-4787137977510765503</id><published>2010-09-17T16:30:00.001-07:00</published><updated>2010-09-17T16:32:25.981-07:00</updated><title type='text'>Cross-method PHY2PHY?</title><content type='html'>&lt;div&gt;So I'm all in to physical-to-physical interactions over the Internet (PHY2PHY), but here is an interesting cross-method interaction which is just asking to be extended over the Internet:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;object width="480" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/vojEwmnt1NI?fs=1&amp;amp;hl=en_US"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/vojEwmnt1NI?fs=1&amp;amp;hl=en_US" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-4787137977510765503?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/4787137977510765503/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=4787137977510765503' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/4787137977510765503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/4787137977510765503'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2010/09/cross-method-phy2phy.html' title='Cross-method PHY2PHY?'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-2358268057633056542</id><published>2010-09-11T17:47:00.001-07:00</published><updated>2010-09-11T18:00:36.779-07:00</updated><title type='text'>Speeding up Arduino PWM</title><content type='html'>If you ever need to speed up the Arduino PWM frequency, here is an example.  You can manipulate the counter prescalar with TCCR1B, and the amount it counts up each cycle with ICR1:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;int i;&lt;br /&gt;&lt;br /&gt;void setup()&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;pinMode(2, OUTPUT); // direction pin&lt;br /&gt;digitalWrite(2, LOW); // set direction CW&lt;br /&gt;&lt;br /&gt;TCCR1A = 0x00; // sets timer control bits to PWM Phase and Frequency Correct mode&lt;br /&gt;TCCR1B = 0x12; // sets timer control bits to Prescaler N = 8&lt;br /&gt;ICR1 = 500; // Upper Timer Limit&lt;br /&gt;&lt;br /&gt;analogWrite(9,1); // for Geckodrive controller you want a very short on pulse&lt;br /&gt;&lt;br /&gt;Serial.begin(115200);&lt;br /&gt;Serial.println("Delaying 100...");&lt;br /&gt;delay(100);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void loop()&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt; for(i=500;i&amp;gt;70;i=i-1){&lt;br /&gt;   Serial.println(i);&lt;br /&gt;   ICR1=i;&lt;br /&gt;   delay(20);&lt;br /&gt; }&lt;br /&gt; for(i=70;i&amp;lt;500;i=i 1){&lt;br /&gt;   Serial.println(i);&lt;br /&gt;   ICR1=i;&lt;br /&gt;   delay(20);&lt;br /&gt; }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;I believe the prescalar leads to 16 MHz / 8 = 2 MHz, then I count up to 500 meaning about 4 kHz frequency output, then I move it up to a 70 count or 28.5 kHz.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-2358268057633056542?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/2358268057633056542/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=2358268057633056542' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/2358268057633056542'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/2358268057633056542'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2010/09/speeding-up-arduino-pwm.html' title='Speeding up Arduino PWM'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-4176956734125324577</id><published>2010-09-08T16:10:00.000-07:00</published><updated>2010-09-08T16:46:23.607-07:00</updated><title type='text'>Ducted fans!</title><content type='html'>When you are starting a new tech art project, you are engaging in a search for the best way to implement your idea.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As soon as you make a large purchase, you immediately will find an even better solution!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I've had lots of fun with the servomotors, but now I am wondering about &lt;a href="http://www.bphobbies.com/view.asp?id=B1098409&amp;amp;pid=D3065060"&gt;ducted fans&lt;/a&gt; and from the R/C hobby world for breath-over-IP, it sure would be a BLAST!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;They appear to have&lt;a href="http://www.bphobbies.com/view.asp?id=A0780192&amp;amp;pid=B2049175"&gt; electronic speed control&lt;/a&gt;, but I wonder how fast they can speed up/slow down.  Also I'd need a 34A @ 11V power supply, not hard for a big battery, but tougher for a 120V based system.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;These R/C electric airplane motors are much faster than industrial servomotors (8-20 kRPM versus 3-4 kRPM), so I suspect their &lt;a href="http://www.bphobbies.com/view.asp?id=V748425&amp;amp;pid=S252554&amp;amp;img=l"&gt;props&lt;/a&gt; are probably more efficient (more lift, less drag).  Apparently you can get the &lt;a href="http://www.headsuprc.com/servlet/the-1545/2410-dsh-09Y-Brushless-Motor-%26/Detail"&gt;motor and esc together&lt;/a&gt; or a &lt;a href="http://www.aeromicro.com/Catalog/micro_fan_with_astro_flight_010_brushless_motor__8_t__and_varibale_speed_esc__80_1564456.htm"&gt;ducted fan motor/prop/esc together&lt;/a&gt; well.   But you better put some mesh on it or you will slice off someone's finger!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-4176956734125324577?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/4176956734125324577/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=4176956734125324577' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/4176956734125324577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/4176956734125324577'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2010/09/ducted-fans.html' title='Ducted fans!'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-6823709666356183091</id><published>2010-09-04T12:02:00.000-07:00</published><updated>2010-09-09T10:16:50.649-07:00</updated><title type='text'>Geckodrive accuracy test</title><content type='html'>&lt;div&gt;&lt;br /&gt;&lt;object style="background-image:url(http://i2.ytimg.com/vi/ij6k8dwmAig/hqdefault.jpg)" width="480" height="295"&gt;&lt;param name="movie" value="http://www.youtube.com/v/ij6k8dwmAig?fs=1&amp;amp;hl=en_US"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/ij6k8dwmAig?fs=1&amp;amp;hl=en_US" width="480" height="295" allowscriptaccess="never" allowfullscreen="true" wmode="transparent" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;I hooked up the quadrature encoder outputs from one Tohoko Ricoh Type 7K00011 servomotor into an Arduino.  I am using the input pull-up trick of doing a digitalWrite(HIGH) on the quadrature input pins.  The quadrature A and B inputs are translated by the Arduino program into the step and direction signals into &lt;a href="https://www.geckodrive.com/product.aspx?c=2&amp;amp;i=14474"&gt;Geckodrive 320X&lt;/a&gt; controller attached to a second 7K00011 servomotor.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;One thing I found is that to ensure accuracy, the pulses going to the Geckodrive 320X must have a very short high time.  I started with a 500 uS high time, but the second motor was not tracking the first one very closely.  I ended up with 10 uS high time for the pulse, and that seemed to keep the two motor shafts perfectly synchronized.  The Geckodrive is rated for Step Pulse "1" Time down to 1.5 uS.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A second thing I found is that for every one quadrature step on the first motor, I needed to send four pulses to the Geckodrive.  There is something in the spec sheet that says "Feedback Resolution: X4 Encoder Line Count", so maybe that explains it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;Here is the code for this example (which can help you with quadrature encoder decoding in general as well):&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;//&lt;br /&gt;// Use quadrature sensors in one unpowered motor to&lt;br /&gt;// drive other powered motor in synchronized fashion&lt;br /&gt;//&lt;br /&gt;&lt;br /&gt;int a=0;   // current quadrature A&lt;br /&gt;int b=0;   // current quadrature B&lt;br /&gt;int al=0;  // last quadrature A&lt;br /&gt;int bl=0;  // last quadrature B&lt;br /&gt;&lt;br /&gt;void setup() {&lt;br /&gt; pinMode(2, OUTPUT);  // step to Geckodrive&lt;br /&gt; pinMode(3,OUTPUT);   // direction to Geckodrive&lt;br /&gt; digitalWrite(3,LOW); &lt;br /&gt; pinMode(6, INPUT);   // A quadrature input&lt;br /&gt; pinMode(7, INPUT);   // B quadrature input&lt;br /&gt; digitalWrite(6,HIGH); // pull-up A input&lt;br /&gt; digitalWrite(7,HIGH); // pull-up B input&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void pulse(int direction)&lt;br /&gt;// perform one pulse&lt;br /&gt;{&lt;br /&gt; unsigned long wait=0;&lt;br /&gt; digitalWrite(3,direction); // signal direction&lt;br /&gt; for(int i=0;i&amp;lt;4;  i){&lt;br /&gt;   wait=micros();&lt;br /&gt;   digitalWrite(2,HIGH);&lt;br /&gt;   while(micros()-wait&amp;lt;10); // high for 10 uS&lt;br /&gt;   digitalWrite(2,LOW);&lt;br /&gt;   wait=micros();&lt;br /&gt;   while(micros()-wait&amp;lt;15); // low for at least 15 uS&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void loop()&lt;br /&gt;{&lt;br /&gt; a=digitalRead(6); // read quadrature A&lt;br /&gt; b=digitalRead(7); // read quadrature B&lt;br /&gt;&lt;br /&gt; // decode quadrature input&lt;br /&gt; // and pulse in proper direction&lt;br /&gt;&lt;br /&gt; if((al != a) || (bl != b)){&lt;br /&gt;   if((al == 0) &amp;amp;&amp;amp; (bl == 0)){&lt;br /&gt;     if((a==0)&amp;amp;&amp;amp;(b==1)){&lt;br /&gt;       pulse(LOW);&lt;br /&gt;     }else if((a==1)&amp;amp;&amp;amp;(b==0)){&lt;br /&gt;       pulse(HIGH);&lt;br /&gt;    }&lt;br /&gt;   }&lt;br /&gt;   if((al=0)&amp;amp;&amp;amp;(bl=1)){&lt;br /&gt;     if((a==1)&amp;amp;&amp;amp;(b==1)){&lt;br /&gt;            pulse(LOW);&lt;br /&gt;     }else if((a==0)&amp;amp;&amp;amp;(b==0)){&lt;br /&gt;       pulse(HIGH);&lt;br /&gt;     }&lt;br /&gt;   }&lt;br /&gt;   if((al==1)&amp;amp;&amp;amp;(bl==1)){&lt;br /&gt;     if((a==1)&amp;amp;&amp;amp;(b==0)){&lt;br /&gt;            pulse(LOW);&lt;br /&gt;     }else if((a==0)&amp;amp;&amp;amp;(b==0)){&lt;br /&gt;       pulse(HIGH);&lt;br /&gt;     }&lt;br /&gt;   }&lt;br /&gt;   if((al==1)&amp;amp;&amp;amp;(bl==0)){&lt;br /&gt;     if((a==0)&amp;amp;&amp;amp;(b==0)){&lt;br /&gt;            pulse(LOW);&lt;br /&gt;     }else if((a==1)&amp;amp;&amp;amp;(b==1)){&lt;br /&gt;       pulse(HIGH);&lt;br /&gt;     }&lt;br /&gt;   }&lt;br /&gt; }&lt;br /&gt; // record history of last quadrature state&lt;br /&gt; al=a;&lt;br /&gt; bl=b;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-6823709666356183091?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/6823709666356183091/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=6823709666356183091' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/6823709666356183091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/6823709666356183091'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2010/09/geckodrive-accuracy-test.html' title='Geckodrive accuracy test'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-8016346307350528494</id><published>2010-09-03T12:43:00.001-07:00</published><updated>2010-09-03T13:05:23.483-07:00</updated><title type='text'>Linux SBCs with Ethernet - too many!</title><content type='html'>Finally, the affordable (~$100) Linux SBC with Ethernet is here.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The &lt;a href="http://www.adafruit.com/index.php?main_page=product_info&amp;amp;cPath=46&amp;amp;products_id=278"&gt;Chumby Board&lt;/a&gt; is now available for $89.  Add &lt;a href="http://wiki.ladyada.net/chumbyhackerboard/ethernet"&gt;USB Ethernet connector&lt;/a&gt; for $15, and you've got yourself a $104 Ethernet-enabled Linux SBC with:&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Freescale iMX.233 processor running at 454 MHZ&lt;/li&gt;&lt;li&gt;64 MB onboard RAM&lt;/li&gt;&lt;li&gt;Comes with 512MB uSD card with 100 MB Linux installation all ready to go&lt;/li&gt;&lt;li&gt;3 USB ports (2 after you add Ethernet)&lt;/li&gt;&lt;li&gt;Built-in Lithium Ion/Polymer battery charger and 5V boost converter for portable projects&lt;/li&gt;&lt;li&gt;1.9W mono speaker amplifier into 4ohm (0.1" JST onboard connector)&lt;/li&gt;&lt;li&gt;Microphone input (0.05" JST onboard connector)&lt;/li&gt;&lt;li&gt;LCD controller with 2mm output port&lt;/li&gt;&lt;li&gt;3.5mm A/V output jack with stereo audio and NTSC/PAL composite video&lt;/li&gt;&lt;li&gt;&lt;/li&gt;&lt;li&gt;Quadrature encoder connections onboard&lt;/li&gt;&lt;li&gt;5-way joystick on-board&lt;/li&gt;&lt;li&gt;MMA7455 3-axis +-2G to +-8G accelerometer on-board&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Very interesting, and great competition to the &lt;a href="http://www.andahammer.com/mini244/?PHPSESSID=7d9034873e3968d63bd2c52c98ed4eb8"&gt;Mini2440&lt;/a&gt; board, which is $89 with Ethernet, with the same amount of RAM and 128MB of flash RAM on board (can be as big as 1GB for more money).  The Mini2440 doesn't have the NTSC/PAL video, accelerometer, or battery charger.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I am having some trouble getting DHCP to work on the Mini2440 with the base Linux/Qtopia load (based on Busybox, it evidently uses udhcpc which requires me to write a not-well-documented script).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Meanwhile my &lt;a href="http://en.wikipedia.org/wiki/SheevaPlug"&gt;SheevaPlug&lt;/a&gt; finally showed up ($99, but with 120VAC supply):&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/mpeg2tom/4906064643/" title="SheevaPlug by mpeg2tom, on Flickr"&gt;&lt;img src="http://farm5.static.flickr.com/4136/4906064643_9c6204869a.jpg" width="418" height="500" alt="SheevaPlug" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Not much time to play with it the SheevaPlug yet.  I am intending to use it for an Ethernet-to-serial application (using a USB-to-serial converter).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The GPIO lines are pretty much hidden in the SheevaPlug, whereas the Mini2440 and Chumby Board have them easily available.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;On the other hand, SheevaPlug ships with Python, so development on it is a breeze!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-8016346307350528494?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/8016346307350528494/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=8016346307350528494' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/8016346307350528494'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/8016346307350528494'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2010/09/linux-sbcs-with-ethernet-too-many.html' title='Linux SBCs with Ethernet - too many!'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm5.static.flickr.com/4136/4906064643_9c6204869a_t.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-8231288530655215218</id><published>2010-09-02T22:20:00.000-07:00</published><updated>2010-09-03T12:24:31.268-07:00</updated><title type='text'>Geckodrive is awesome</title><content type='html'>I am very impressed with the &lt;a href="https://www.geckodrive.com/product.aspx?c=2&amp;amp;i=14474"&gt;Geckodrive 320x&lt;/a&gt;. It works very well with the Tohoko Ricoh Type 7K00011 Servo Motor.  I used an Arduino as the pulse source to control the speed:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;object width="640" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Q93XLws5oCE?fs=1&amp;amp;hl=en_US"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/Q93XLws5oCE?fs=1&amp;amp;hl=en_US" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As you hook up the Geckodrive 320X, follow the instructions step by step, and don't forget to hook Terminal 5 (ERR/RES) to Terminal 7 (Encoder +5VDC), or else the controller won't work.   Also for the Tohoko Ricoh Type 7K00011 Servo Motor, you should set switch SW6 (HEDS) to "ON" to provide an active pullup for the encoder.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And the 320X didn't even get very warm - great heat engineering!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The Geckodrive is a highly precise device.  You drive it with pulses.  Each pulse means the motor is to move ahead on pulse on the encoder.  Of course, motors can just speed up and slow down infinitely fast, so if you change the input pulse rate, there is a brief period of error where the Geckodrive applies a higher duty cycle PWM to the motor to catch up.  However if the error is too much (configurable by DIP switches on the Geckodrive), the controller assumes there is a fault, stops for a second, accepts the new position as "good" and starts again.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;At the end of the video above, I am probably trying to drive the motor faster than it can actually go, thus the controller faults out.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Also you can't just start the motor at its highest speed.  You might have to start it at a slightly lower pulse rate and ramp it up to a higher speed, or else the controller might fault out.  I am going to experiment with increasing the 256 count following error limit to the 2048 count following error limit and see how that changes the ability to do a cold start to a high speed.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Also I may try a sneaky thing where I hook up the encoder from a second motor to an Arduino, read the quadrature input to generate a pulse and direction signal, and send that into the Geckodrive to see if my twisting of the rotor on the undriven motor is reflected in the driven motor.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I think the Geckodrive and Tohoko Ricoh Type 7K00011 Servo Motor may work not only for "Breath 2 - the proportional version" but also for Ouija board over IP.  I have to put a fan on the motor and see if I get a good breeze from it.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-8231288530655215218?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/8231288530655215218/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=8231288530655215218' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/8231288530655215218'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/8231288530655215218'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2010/09/geckodrive-is-awesome.html' title='Geckodrive is awesome'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-5585580528813551449</id><published>2010-08-31T22:03:00.000-07:00</published><updated>2010-08-31T22:11:49.141-07:00</updated><title type='text'>Meltdown</title><content type='html'>&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'times new roman';"&gt;There is pretty much no heat sink on the &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 20px; "&gt;&lt;a href="http://www.pololu.com/catalog/product/1392" style="color: rgb(204, 102, 0); text-decoration: underline; "&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'times new roman';"&gt;Pololu Jrk 21v3 USB Motor Controller with Feedback&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'times new roman';"&gt;.  So basically that means if you try to do any kind of serious control of start/stop/speed of a real motor (say 24V / 0.3A), you will end up melting it.  There isn't much in the manual about how to even mount a heat sink, the thing is so small and there is plenty of exposed solder blobs that it would be tough to do.  Having made other motor controllers get seriously hot in the past using PWM control, I guess I'm not surprised.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 20px; "&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'times new roman';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); line-height: 20px; "&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'times new roman';"&gt;I'm moving up to the &lt;/span&gt;&lt;/span&gt;&lt;a href="https://www.geckodrive.com/product.aspx?c=2&amp;amp;i=14474"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'times new roman';"&gt;Geckodrive &lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; "&gt;&lt;a href="https://www.geckodrive.com/product.aspx?c=2&amp;amp;i=14474"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'times new roman';"&gt;G320X&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'times new roman';"&gt;.  The whole bottom of it is a heat sink.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; "&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'times new roman';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; "&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;span class="Apple-style-span"  style="font-family:'times new roman';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-5585580528813551449?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/5585580528813551449/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=5585580528813551449' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/5585580528813551449'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/5585580528813551449'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2010/08/meltdown.html' title='Meltdown'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-3163791170353976658</id><published>2010-08-18T12:10:00.000-07:00</published><updated>2010-08-18T12:29:29.776-07:00</updated><title type='text'>Going servo part 2</title><content type='html'>So I went ahead and purchased:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&amp;amp;item=260297192689"&gt;Tohoko Ricoh Type 7K00011 Servo Motor&lt;/a&gt; (whose technical details are in &lt;a href="http://www.townlabs.com/Documents/TL512%20Manual.pdf"&gt;this document&lt;/a&gt;)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.pololu.com/catalog/product/1392"&gt;Pololu Jrk 21v3 USB Motor Controller with Feedback&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;and to power it all: &lt;a href="http://www.mpja.com/prodinfo.asp?number=17436+PS"&gt;24VDC @ 6.5A power supply&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I suspect this is way overkill for a fan, but it should be interesting to enter the world of servomotors.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-3163791170353976658?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/3163791170353976658/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=3163791170353976658' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/3163791170353976658'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/3163791170353976658'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2010/08/going-servo-part-2.html' title='Going servo part 2'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-5656324149724685215</id><published>2010-08-11T09:37:00.001-07:00</published><updated>2010-08-11T10:02:47.694-07:00</updated><title type='text'>Going Servo</title><content type='html'>So I have this desire to redo "Breath" using a servomotor to accurately actuate breath strength, rather than just on/off.  Here are some options:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1)  Pololu has a &lt;a href="http://www.pololu.com/catalog/product/1392/resources"&gt;3A Motor Controller with feedback&lt;/a&gt;($49.95).  It works with a tach on a motor, and you can interrogate it over USB to control/configure it and get all kinds of neat info.  It also works with TTL, PWM, and analog input for control.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2) Geckodrive &lt;a href="http://www.geckodrive.com/product.aspx?c=2&amp;amp;i=14474"&gt;G320X&lt;/a&gt; 20A ($114) motor controller that works with a quadrature encoder.  It only accepts pulse control.  This is probably great if I needed bi-directional strict control of a big expensive motor with a quadrature encoder, but is probably overkill for a fan.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;3)  Encodergeek's &lt;a href="http://www.encodergeek.com/MotorControllers.html"&gt;Model 100&lt;/a&gt; 3A  ($99) motor controller.  It isn't clear to me if it works with tach or quadrature encoders (though he sells quadrature encoders, so you'd think it would work with them) and does pulse and analog control.  He also sells his own 3A motors with encoders for $40, as well as compatible gearboxes, encoder wheels, encoders.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Also I'd need a motor.  A case fan needs to spin up to 2K-3K RPM or so.  I saw some motors with tach encoders over at &lt;a href="http://www.allelectronics.com/"&gt;All Electronics&lt;/a&gt; in Van Nuys, maybe I'll check there and see what they have.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-5656324149724685215?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/5656324149724685215/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=5656324149724685215' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/5656324149724685215'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/5656324149724685215'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2010/08/going-servo.html' title='Going Servo'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-8018537797946855705</id><published>2010-08-04T22:05:00.000-07:00</published><updated>2010-08-04T22:24:30.510-07:00</updated><title type='text'>Updates</title><content type='html'>Here are some quick updates:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My &lt;a href="http://www.blogger.com/post-create.g?blogID=16875966"&gt;Breath OSC Interface App&lt;/a&gt; is now on iTunes, hurrah!  &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I am picking up from three years ago on &lt;a href="http://techartblog.blogspot.com/2007/02/dogceleration-progress.html"&gt;DogCeleration&lt;/a&gt;.  Especially now that &lt;a href="http://www.hollywoodbeagles.com"&gt;my beagles&lt;/a&gt; are in LA and just had their first movie released, I thought they should join the art world as world.  They key to interfacing with the Bluetooth BlueRadios on OS X is &lt;a href="http://homepage.mac.com/dalverson/zterm/"&gt;Zterm&lt;/a&gt;, just remember to hit shift when you run it to choose the right connection.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Alberto Gaitán recently mentioned the existance of &lt;a href="http://www.pachube.com/"&gt;Pachube&lt;/a&gt;, "realtime sensor, energy and environment data", which includes wind sensor data.  Which would be a great source for "wind over IP" to a &lt;a href="http://www.encodergeek.com/DCMtr_LARGE.html"&gt;servomotor&lt;/a&gt; driven fan.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I also recently picked up a &lt;a href="http://www.friendlyarm.net/products/mini2440"&gt;Mini2440&lt;/a&gt;, which is an awesome Linux-capable ARM-based SBC with Ethernet, serial ports, A/D converters, a cheap camera, and much more!  I am still exploring it, but it seems pretty cool.&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-8018537797946855705?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/8018537797946855705/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=8018537797946855705' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/8018537797946855705'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/8018537797946855705'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2010/08/updates.html' title='Updates'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-5784916107124273227</id><published>2010-07-13T11:08:00.001-07:00</published><updated>2010-07-13T11:09:03.335-07:00</updated><title type='text'>Breath OSC Interface iPhone App Support</title><content type='html'>This page is for support of the Breath OSC Interface iPhone App.  Please feel free to ask any questions or provide bug reports below.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-5784916107124273227?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/5784916107124273227/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=5784916107124273227' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/5784916107124273227'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/5784916107124273227'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2010/07/breath-osc-interface-iphone-app-support.html' title='Breath OSC Interface iPhone App Support'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-5995179777455604130</id><published>2010-06-11T17:10:00.001-07:00</published><updated>2010-06-11T18:00:49.944-07:00</updated><title type='text'>Ordered SheevaPlug</title><content type='html'>So I went ahead and put in an order for a &lt;a href="http://www.globalscaletechnologies.com/p-22-sheevaplug-dev-kit-us.aspx"&gt;SheevaPlug&lt;/a&gt;.  They say it will take "2-3 weeks" from order date.  I ignored the GuruPlugs because of the &lt;a href="http://1wt.eu/articles/guruplug-slow-heater/#intr"&gt;reported heat problems&lt;/a&gt;.  I may use the SheevaPlug as a "more reliable/powerful" network interface for physical computing systems like Arduino that can hang off of its USB.  I may also use it as an el-cheapo "meet-in-the-middle" server for &lt;a href="http://phy2phy.wikidot.com/"&gt;PHY2PHY&lt;/a&gt; projects.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;No sooner had I ordered the SheevaPlug did I see a neat mini-systemboard &lt;a href="http://pcengines.ch/alix3d2.htm"&gt;ALIX3d2&lt;/a&gt;.   LAN / 2 miniPCI / LX800 / 256 MB / USB / 500 MHz AMD Geode LX800, $99.  Needs an external DC power supply.  But, hmmm.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Then I saw the &lt;a href="http://elec.tkjweb.dk/blog/2010/03/mini2440-my-new-arm-toy/"&gt;Mini2440&lt;/a&gt;.  Also in the $100 department, it has a 405 MHz Samsung S3C2440A ARM920T chip, a 3.5″ touch screen display, 2MB NOR flash, 64MB SRAM, and 128MB NAND flash, Ethernet, USB, COM, audio out.   It comes preinstalled with Linux 2.6.3 and a Qtopia graphics.  There seems to be a version without the touch screen a bit cheaper &lt;a href="http://andahammer.com/mini244/?PHPSESSID=84f86966a9c8c974a76426d56f37db95"&gt;here&lt;/a&gt;.  And it appears to have a cheap &lt;a href="http://andahammer.com/cam13/"&gt;camera&lt;/a&gt; available as well.  And, oh yeah, it has 8‐channel 10 bit A/D converter with sample and hold, and a bunch of digital GPIOs (more info &lt;a href="http://www.scribd.com/doc/19539112/Mini-2440-Essentials"&gt;here&lt;/a&gt;).  And &lt;a href="http://www.youtube.com/watch?v=9tr2FXdrZYg&amp;amp;feature=related"&gt;here is a video&lt;/a&gt; of the GPIO at work.  This sounds like an awesome system for PHY2PHY projects, it could be its own webcam and webcam display as well.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-5995179777455604130?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/5995179777455604130/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=5995179777455604130' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/5995179777455604130'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/5995179777455604130'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2010/06/so-i-went-ahead-and-put-in-order-for.html' title='Ordered SheevaPlug'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-4774156230379611677</id><published>2010-06-11T12:57:00.001-07:00</published><updated>2010-06-11T12:59:51.038-07:00</updated><title type='text'>Tesseract OCR</title><content type='html'>If you need a free OCR program, try &lt;a href="http://code.google.com/p/tesseract-ocr/"&gt;Tesseract&lt;/a&gt;.  It is awesome!!!  Skip GOCR.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;No problems building it on OS X.  One thing you may need to know is to use &lt;a href="http://www.imagemagick.org/script/index.php"&gt;ImageMagick&lt;/a&gt; "convert" command with "-depth 8" to build TIFF files that Tesseract can read. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-4774156230379611677?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/4774156230379611677/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=4774156230379611677' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/4774156230379611677'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/4774156230379611677'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2010/06/tesseract-ocr.html' title='Tesseract OCR'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-2606814589873489240</id><published>2010-06-05T12:58:00.000-07:00</published><updated>2010-06-05T13:12:55.947-07:00</updated><title type='text'>Breath-over-IP redux</title><content type='html'>So honestly, my breath-over-IP project is not at cool as I want it to be.  It actually an on/off system rather than a more "analog" transmission of breath speed.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The problem is that the anemometer impeller and the output fan both have too much inertia.  The anemometer impeller is incredibly sensitive, but once it starts spinning it can take several seconds to stop, even without any breath.  The fan is the same way, once you turn it off, it takes several seconds to spin down.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So I am contemplating redoing Breath-over-IP using a &lt;a href="http://www.encodergeek.com/DCMtr_LARGE.html"&gt;servo motor&lt;/a&gt; and &lt;a href="http://www.encodergeek.com/MotCon75.html"&gt;servo controller&lt;/a&gt;.  This should allow me to speed up and slow down the fan motor very quickly.  On the breath sensor side, I could use a &lt;a href="http://www.sensorwiki.org/doku.php/sensors/air_pressure"&gt;pressure sensor chip&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Finally, I'd like to solve my networking challenges using a &lt;a href="http://www.plugcomputer.org/"&gt;plug based Linux PC&lt;/a&gt; with a USB-attached Arduino.  That way I can do very complex networking in Python on the plug computer, and let the Arduino handle analog/digital I/O, which it does well.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So that's my plan...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-2606814589873489240?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/2606814589873489240/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=2606814589873489240' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/2606814589873489240'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/2606814589873489240'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2010/06/breath-over-ip-redux.html' title='Breath-over-IP redux'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-6285365854436715838</id><published>2010-03-10T12:45:00.000-08:00</published><updated>2010-03-10T12:48:35.903-08:00</updated><title type='text'>Physical Computing Talk TONIGHT [Thousand Oaks]</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; white-space: pre-wrap; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; "&gt;&lt;a href="http://www.ieee-bv-cs.org/2010/02/13/physical-computing-a-new-paradigm-for-teaching-computing/"&gt;“Physical Computing – Interaction Design and Systems Engineering”&lt;/a&gt; &lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:arial, sans-serif;font-size:100%;"&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-size: 13px; white-space: pre-wrap; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; white-space: pre-wrap; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; "&gt;Wednesday, 10 March 2010, 6:30-8:30pm&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; white-space: pre-wrap; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; "&gt;&lt;a href="http://www.ieee-bv-cs.org/meetings/"&gt;Richter Auditorium, Cal Lutheran University, Thousand Oaks&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:arial, sans-serif;font-size:100%;"&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-size: 13px; white-space: pre-wrap; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; white-space: pre-wrap; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; "&gt;&lt;a href="http://www.ieee-bv-cs.org/meetings/"&gt;&lt;/a&gt;Meetings are free and open to the public. Parking is free. &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:arial, sans-serif;font-size:100%;"&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-size: 13px; white-space: pre-wrap; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; white-space: pre-wrap; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; "&gt;Carlyn Maw, a co-founder of &lt;a href="http://blog.crashspace.org/"&gt;CrashSpace&lt;/a&gt;, a Los Angeles Hackerspace, formerly an instructor and graduate of NYU ITP, presents an introduction to Physical Computing.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:arial, sans-serif;font-size:100%;"&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-size: 13px; white-space: pre-wrap; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; white-space: pre-wrap; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; "&gt;Physical Computing is a hands-on multidisciplinary approach to interaction design and systems engineering. It is neither electrical engineering light nor advanced hobby electronics, but rather a holistic approach to invention and problem solving. Practitioners are frequently experts in their fields who want to harness the power of electronics within their own discipline. Examples include:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:arial, sans-serif;font-size:100%;"&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-size: 13px; white-space: pre-wrap; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; white-space: pre-wrap; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; "&gt;· A musician composing a symphonies based on data collected from sensors on the body.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; white-space: pre-wrap; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; "&gt;· An occupational therapist working to develop a pressure vest for children with sensory modulation disorders.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; white-space: pre-wrap; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; "&gt;· A scientist tracking monkeys.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; white-space: pre-wrap; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; "&gt;· A fashion designer creating a dress that unfurls like a flower.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; white-space: pre-wrap; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; white-space: pre-wrap; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; "&gt;Physical Computing methodologies quickly grab the imagination of beginners by treating electronics and programing as tools which extend what the new-comer already knows rather than as complete separate realms of expertise. With an emphasis on learning by doing and rapid prototyping, Physical Computing provides a quick pay off for those just starting out and for experts making “sketches.”&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse; white-space: pre-wrap; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; "&gt;Additionally, Physical Computing has become a way of life for the communities forming around it. People around the world are working to increase the accessibility of the making things way of life. Carlyn will provide an overview of the conceptual approaches, tools, people and communities that are contributing to Physical Computing today.  &lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-6285365854436715838?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/6285365854436715838/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=6285365854436715838' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/6285365854436715838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/6285365854436715838'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2010/03/physical-computing-talk-tonight.html' title='Physical Computing Talk TONIGHT [Thousand Oaks]'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-4555550591753150045</id><published>2010-03-01T10:16:00.000-08:00</published><updated>2010-03-01T10:21:34.416-08:00</updated><title type='text'>Ignite LA tonight (Monday, March 1)</title><content type='html'>&lt;div&gt;Tonight is Ignite/LA, the event where speakers get 5 minutes/20&lt;/div&gt;&lt;div&gt;slides/15 seconds per slide to give a lightning presentation.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;At the last Ignite/LA, talks included:&lt;/div&gt;&lt;div&gt;- The Future of Money&lt;/div&gt;&lt;div&gt;- Turning AI gurus into Comets and Star Field Explosions&lt;/div&gt;&lt;div&gt;- Bubble Nets among Humpback Whales&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- A talk by former Dorkbot SoCal speaker Heather Knight on Social Robotics:&lt;/div&gt;&lt;div&gt;&lt;a href="http://ignite.oreilly.com/2009/07/heather-knight-on-social-robots.html"&gt;http://ignite.oreilly.com/2009/07/heather-knight-on-social-robots.html&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- A talk on physical interactions over IP by myself&lt;/div&gt;&lt;div&gt;&lt;a href="http://igniteshow.com/videos/getting-physical-over-ip"&gt;http://igniteshow.com/videos/getting-physical-over-ip&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You MUST sign up to attend tonight ASAP here:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://ignitela.eventbrite.com/"&gt;http://ignitela.eventbrite.com/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;7PM&lt;/div&gt;&lt;div&gt;Cinespace&lt;/div&gt;&lt;div&gt;6356 Hollywood Boulevard&lt;/div&gt;&lt;div&gt;Los Angeles, CA 90028&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Cinespace is an awesome venue, and after the talks you stay there for&lt;/div&gt;&lt;div&gt;live band karaoke hosted by Cedric Yarbrough of Reno 911.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;-Thomas&lt;/div&gt;&lt;div&gt; http://www.t11s.com&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-4555550591753150045?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/4555550591753150045/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=4555550591753150045' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/4555550591753150045'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/4555550591753150045'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2010/03/ignite-la-tonight-monday-march-1.html' title='Ignite LA tonight (Monday, March 1)'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-1663008136836263621</id><published>2010-02-23T23:13:00.000-08:00</published><updated>2010-02-23T23:16:29.169-08:00</updated><title type='text'>Dorkbot SoCal March 20, 2010</title><content type='html'>&lt;span class="Apple-style-span"   style="  -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family:monospace;font-size:medium;"&gt;&lt;h2&gt;Dorkbot SoCal 39&lt;/h2&gt;***** Saturday, March 20, 2010&lt;br /&gt;***** 1:00pm&lt;br /&gt;***** Machine Project&lt;br /&gt;***** 1200 D North Alvarado Street&lt;br /&gt;***** Los Angeles, CA 90026&lt;br /&gt;***** &lt;a href="http://maps.google.com/maps?f=q&amp;amp;hl=en&amp;amp;q=1200+D+North+Alvarado+Street%2C+Los+Angeles%2C+CA"&gt;Google map of Machine Project&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Ruth West, Todd Margolis, Joachim Gossmann&lt;/b&gt;&lt;br /&gt;&lt;a href="http://www.atlasinsilico.net/"&gt;http://www.atlasinsilico.net/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;"ATLAS in silico" is the result of a vibrant collaboration between artists and scientists spanning new media, computer science, metagenomics, biology, and engineering.&lt;br /&gt;&lt;br /&gt;Ruth West is an artist with background as a molecular genetics researcher. She is Director, Interactive Technologies for CENS (Center for Embedded Networked Sensing) on the UCLA campus and is concurrently an Artist-Research Associate at the UCSD Center for Research in Computing and the Arts, where she is the first CALIT2 New Media Artist crossing over to the Digitally Enabled Genomic Medicine Layer.&lt;br /&gt;&lt;br /&gt;Todd Margolis is currently the Technical Director of the Center for Research in Computing and the Arts (CRCA) at UCSD. In 2004, he received his MFA in Electronic Visualization from the Electronic Visualization Laboratory at the University of Illinois at Chicago. He is a founding member of the immersive and interactive art and technology non-profit organization, Applied Interactives, and also a member of the art collaborative Sine::apsis Experiments.&lt;br /&gt;&lt;br /&gt;Joachim Gossmann is an audiocentric media artist interested in a true interdisciplinary discourse between science and the senses. He is currently working on a PhD in Computer Music at the Center for Research and Computing in the Arts at U. C. San Diego. He also holds a a Tonmeister degree from University of the Arts, Berlin, a MFA in Composition/Experimental Sound Practices from the Californian Institute of the Arts, and has 6 years of professional experience in research, production and development of music in experimental media working at Fraunhofer IMK and the Center for Arts and Media Technology in Karlsruhe, Germany.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.atlasinsilico.net/images/pic_2.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Dane Picard&lt;/b&gt;&lt;br /&gt;&lt;a href="http://www.danepicard.com/"&gt;http://www.danepicard.com/&lt;/a&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:monospace, serif;"&gt;&lt;span class="Apple-style-span"  style=" -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;font-size:medium;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="  -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family:monospace;font-size:medium;"&gt;&lt;a href="http://www.danepicard.com/"&gt;&lt;/a&gt;&lt;span class="Apple-style-span"   style=" border-collapse: collapse;  white-space: pre-wrap; font-family:arial, sans-serif;font-size:13px;"&gt;Dane holds an MFA from CALARTS, and creates electronic sculptural works that blur the line between organic and inorganic.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.danepicard.com/art_video_docs/video_docs_cornucopia_zoetropia_sm.jpg" /&gt; &lt;img src="http://www.danepicard.com/art_video_docs/video_docs_littlewoods_law_sm.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;MluM&lt;/b&gt;&lt;br /&gt;&lt;a href="http://mlum.com/"&gt;http://mlum.com&lt;/a&gt;&lt;br /&gt;MLuM is a Long Beach and Singapore based punceptual histriophonic art ensemble, comprised of multi-national artists whose creato-researchive interests include: The utilization and/or incorporation of scientific, scientistic and pseudo-scientific technologies, methodologies, idealogies and procedures in(to) aesthetic and artistic processes and practices; The aesthetics of sustainability; Sustainability as artistic tradition and genre; The geographics of social networking pertaining to the environmentics of location and mindset; Performance orientations relative to interactive systems within improvisational structures and environments; Charting influence within the aesthetic-ismos.&lt;br /&gt;&lt;br /&gt;Always in search of collaborators, MLuM will deliver a paper (presented at MUSICACOUSTICA, Beijing) entitled "Databasethetics."&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:monospace, serif;font-size:100%;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:monospace, serif;font-size:100%;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;"&gt;&lt;span class="Apple-style-span" style="font-family: monospace; font-size: medium; "&gt;&lt;br /&gt;&lt;img src="http://www.digitaleyes2008.org/files/artists/MLuM/performance1.jpg" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-1663008136836263621?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/1663008136836263621/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=1663008136836263621' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/1663008136836263621'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/1663008136836263621'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2010/02/dorbot-socal-march-20-2010.html' title='Dorkbot SoCal March 20, 2010'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-7581903094673931455</id><published>2010-01-26T23:38:00.000-08:00</published><updated>2010-02-23T23:17:56.682-08:00</updated><title type='text'>Breath-over-IP for Arduino</title><content type='html'>This is the code for breath-over-IP for an Arduino.  This code uses the &lt;a href="http://arduiniana.org/libraries/newsoftserial/"&gt;NewSoftSerial&lt;/a&gt; library, and assumes the use of a Lantronix &lt;a href="http://www.lantronix.com/device-networking/embedded-device-servers/xport.html"&gt;Xport&lt;/a&gt; / &lt;a href="http://www.lantronix.com/device-networking/embedded-device-servers/xport-direct-plus.html"&gt;Xport Direct&lt;/a&gt; (perhaps with a LadyAda &lt;a href="http://www.ladyada.net/make/eshield/"&gt;Ethernet Shield&lt;/a&gt;).&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;#include &amp;lt;NewSoftSerial.h&amp;gt;&lt;br /&gt;&lt;br /&gt;// breath-over-IP for Arduino&lt;br /&gt;&lt;br /&gt;unsigned long time = 0;   // time of last edge&lt;br /&gt;int minTime = 25;         // minimum time for edge&lt;br /&gt;int good = 0;             // number of consecutive good (fast) edges&lt;br /&gt;int minGoods = 20;        // minimum number of consecutive good (fast) edges to indicate breath&lt;br /&gt;&lt;br /&gt;int ledPin = 13;          // on-board LED pin        &lt;br /&gt;int irLedPin = 10;        // IR LED attached to pin 12 with 220 ohm resistor&lt;br /&gt;int irDetPin = 0;         // IR phototransistor attached to analog 0 with 5V and 10K&lt;br /&gt;int relayPin = 11;        // solid-state relay pin&lt;br /&gt;&lt;br /&gt;unsigned long onTime = 0; // relay on time'&lt;br /&gt;&lt;br /&gt;int i=0;                  // counts up received breath packets for diagnostics&lt;br /&gt;int light=0;              // whether IR detector sees light or dark&lt;br /&gt;int lastLight=0;          // what IR detector saw last time&lt;br /&gt;int state=0;              // current state of state machine for reading HTTP&lt;br /&gt;&lt;br /&gt;char c=0;&lt;br /&gt;&lt;br /&gt;unsigned long sendTime=0; // last time breath packet was sent out&lt;br /&gt;&lt;br /&gt;NewSoftSerial xport(3,2);&lt;br /&gt;&lt;br /&gt;void setup()&lt;br /&gt;{&lt;br /&gt;  pinMode(relayPin,OUTPUT);&lt;br /&gt;  digitalWrite(relayPin, LOW);&lt;br /&gt; &lt;br /&gt;  Serial.begin(57600);&lt;br /&gt;  xport.begin(9600);&lt;br /&gt;  xport.print("GET /update?d=B2&amp;amp;s=0 HTTP/1.1\r\nHost: phy-to-phy.appspot.com\r\n\r\n");&lt;br /&gt;  pinMode(ledPin, OUTPUT);&lt;br /&gt;  pinMode(irLedPin, OUTPUT);&lt;br /&gt;  digitalWrite(irLedPin, HIGH);&lt;br /&gt;  //Serial.print("Starting up");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void loop()&lt;br /&gt;{&lt;br /&gt;  //Serial.println(analogRead(irDetPin));&lt;br /&gt;  if(analogRead(irDetPin)&amp;gt;850){&lt;br /&gt;    light=0; // impeller blade blocking IR&lt;br /&gt;  }&lt;br /&gt;  else{&lt;br /&gt;    light=1; // impeller blade not blocking IR&lt;br /&gt;  }&lt;br /&gt; &lt;br /&gt;  if(light != lastLight){&lt;br /&gt;    // edge&lt;br /&gt;    if(millis()-time&amp;lt;minTime){&lt;br /&gt;      // fast edge&lt;br /&gt;      good++;&lt;br /&gt;    }&lt;br /&gt;    else{&lt;br /&gt;      // not fast edge&lt;br /&gt;      good=0;&lt;br /&gt;    }&lt;br /&gt;    time=millis();&lt;br /&gt;    lastLight=light;&lt;br /&gt;  }&lt;br /&gt; &lt;br /&gt;  if(good&amp;gt;minGoods) {&lt;br /&gt;    // enough good (fast) edges&lt;br /&gt;    digitalWrite(ledPin,HIGH);&lt;br /&gt;    if(millis()-sendTime&amp;gt;100){&lt;br /&gt;      // send a breath, not too fast though&lt;br /&gt;      //Serial.print("I'm sending a breath\n");&lt;br /&gt;      xport.print("GET /update?d=B2&amp;amp;s=1 HTTP/1.1\r\nHost: phy-to-phy.appspot.com\r\n\r\n");&lt;br /&gt;      sendTime = millis();&lt;br /&gt;      }&lt;br /&gt;    }&lt;br /&gt;  else{&lt;br /&gt;    // not enough good (fast) edges&lt;br /&gt;    digitalWrite(ledPin,LOW);&lt;br /&gt;    if(millis()-sendTime&amp;gt;500){&lt;br /&gt;      // send a non-breath, not too fast though&lt;br /&gt;      //Serial.print("I'm sending a non-breath...\n");&lt;br /&gt;      xport.print("GET /update?d=B2&amp;amp;s=0&amp;amp;q=B1 HTTP/1.1\r\nHost: mylameapp.appspot.com\r\n\r\n");&lt;br /&gt;      sendTime = millis();&lt;br /&gt;    &lt;br /&gt;     }&lt;br /&gt;    }&lt;br /&gt;  if(millis() - onTime &amp;gt; 5000){  // timeout after 5 seconds&lt;br /&gt;    digitalWrite(relayPin,LOW);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;  while(xport.available()){&lt;br /&gt;         c=(char)xport.read();&lt;br /&gt;         //Serial.print(c);    &lt;br /&gt;         if((c=='B') &amp;amp;&amp;amp; (state==0)){state=1;}&lt;br /&gt;         else if((c=='1') &amp;amp;&amp;amp; (state==1)){state=2;}&lt;br /&gt;         else if((c==':') &amp;amp;&amp;amp; (state==2)){state=3;}&lt;br /&gt;         else if((c=='1') &amp;amp;&amp;amp; (state==3)){&lt;br /&gt;           digitalWrite(relayPin,HIGH);&lt;br /&gt;           onTime = millis();&lt;br /&gt;           //Serial.print("REMOTE BREATH!!!\n");&lt;br /&gt;           state=0;&lt;br /&gt;           }&lt;br /&gt;         else if((c=='0') &amp;amp;&amp;amp; (state==3)){&lt;br /&gt;           digitalWrite(relayPin,LOW);&lt;br /&gt;           //Serial.print("No remote breath\n");&lt;br /&gt;         }&lt;br /&gt;         else state=0;&lt;br /&gt;      }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-7581903094673931455?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/7581903094673931455/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=7581903094673931455' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/7581903094673931455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/7581903094673931455'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2010/01/breath-over-ip-for-arduino.html' title='Breath-over-IP for Arduino'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-476563410924357038</id><published>2009-12-25T20:30:00.000-08:00</published><updated>2009-12-25T21:09:58.729-08:00</updated><title type='text'>New ARM Microcontroller boards</title><content type='html'>I have found out about some new ARM microcontroller boards:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://mbed.org/"&gt;Mbed&lt;/a&gt; - founded by ARM folks, an LPC1768 ARM Cortex-M3 based board.  The "special sauce" is that the board looks like a USB drive that you drop your programs onto, as well as providing a web-based development environment, making it more cross-platform and usable even with "locked-down" computers.  It comes in a "STAMP-like" 40-pin 0.1" pitch DIP form-factor.  C++ programming with many peripheral API libraries.  It has 10/100 Ethernet MAC and an IP stack, but you need to add an Ethernet jack (like the MagJack SI-60002-F, which is ~$5).  A 100 MHz ARM with 64 KB of SRAM, 512 KB of Flash.  It looks like 25 GPIOs pins that can also be 6x12-bit A/D, one 10-bit D/A, 6xPWM out, 2x I2C, 2x CAN, 2x SPI, 3xSerial ports.  4.5v-9.0v input, 3.3v and 5.0v regulated outputs.  Pre-order price is $60.   Supposedly final MSRP is $99.  I think $60 is more reasonable, because at $99 you have to ask yourself why not go Make Controller kit at $120 and have all the motor drivers.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.futurlec.com/ET-STM32_Stamp.shtml"&gt;ET-STM32 Stamp Module&lt;/a&gt; - &lt;span class="Apple-style-span" style="font-family: 'Times New Roman', serif; font-size: medium; -webkit-border-horizontal-spacing: 4px; -webkit-border-vertical-spacing: 4px; "&gt;ARM Cortex M3 processor in "STAMP" form-factor with 512K flash, 64K RAM.  Has 48 GPIO ports including 16x12-bit A/D, 2xD/A, 5 USARTs, CAN, I2C, USB (but no USB connector), needs 3.3VDC, $24.90.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'Times New Roman', serif;"&gt;&lt;span class="Apple-style-span" style="font-size: medium; -webkit-border-horizontal-spacing: 4px; -webkit-border-vertical-spacing: 4px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'Times New Roman', serif;"&gt;&lt;span class="Apple-style-span" style="font-size: medium; -webkit-border-horizontal-spacing: 4px; -webkit-border-vertical-spacing: 4px;"&gt;&lt;a href="http://leaflabs.com/Maple"&gt;LeafLabs Maple&lt;/a&gt; - Another ARM Cortex M3 board in an Arduino form-factor.  128K flash, 20K RAM,  39 digital input/output pins, 16 analog inputs, USB, 3 USARTs, SPI/I2C, 3-18VDC input.  Uses an open-source, Arduino like sketch programming interface.  $39.99, but sold out right now.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-476563410924357038?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/476563410924357038/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=476563410924357038' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/476563410924357038'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/476563410924357038'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2009/12/new-arm-microcontroller-boards.html' title='New ARM Microcontroller boards'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-6579594423585827261</id><published>2009-12-22T11:49:00.000-08:00</published><updated>2009-12-23T10:45:33.511-08:00</updated><title type='text'>Example Phy2Phy Interaction web service</title><content type='html'>So here is an example of a Phy2Phy interaction web service: &lt;a href="http://phy-to-phy.appspot.com/"&gt;http://phy-to-phy.appspot.com&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The concept is that the web service is a database of devices and their states.  The main URL is a "human interface" that displays the entire database and lets you enter a device name and it's current state.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The "computer interface" is at &lt;b&gt;http://phy-to-phy.appspot.com/update&lt;/b&gt;.  You perform an HTTP GET, with a URL of the form:&lt;/div&gt;&lt;br /&gt;&lt;code&gt;http://phy-to-phy.appspot.com/update?q=&lt;i&gt;[device to query]&lt;/i&gt;&amp;amp;d=&lt;i&gt;[device to set state]&lt;/i&gt;&amp;amp;s=&lt;i&gt;[state]&lt;/i&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;div&gt;So for example, if I want to set the state of device "PIR" to "1" and at the same time query the state of "SolarCell", I'd send:&lt;/div&gt;&lt;code&gt;&lt;br /&gt;http://phy-to-phy.appspot.com/update?d=PIR&amp;amp;s=1&amp;amp;q=SolarCell&lt;/code&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And the response would be something like:&lt;/div&gt;&lt;code&gt;&lt;br /&gt;SolarCell:1.8&lt;br /&gt;&lt;span class="Apple-style-span"   style="  ;font-family:Georgia, serif;font-size:16px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;div&gt;&lt;code&gt;&lt;span class="Apple-style-span"   style="  ;font-family:Georgia, serif;font-size:16px;"&gt;Indicating that the device "SolarCell" has a state "1.8".  When calling the service, you can leave out the "q=" query if you just want to set a device to a state, or leave out the "d=" and "s=" if you just want to query for a device state.&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So for example, on an Arduino you would attach an Xport set to connect using TCP to IP address 74.125.91.141 (phy-to-phy.appspot.com), port 80, and using the &lt;a href="http://arduiniana.org/libraries/NewSoftSerial/"&gt;NewSoftSerial&lt;/a&gt; library, your code snippet to set "PIR" to "1" would look like:&lt;/div&gt;&lt;code&gt;&lt;br /&gt;&lt;div&gt;NewSoftSerial xport(3,2);&lt;/div&gt;&lt;br /&gt;&lt;div&gt;...&lt;/div&gt;&lt;br /&gt;&lt;div&gt;xport.print("GET /update?d=PIR&amp;amp;s=1 HTTP/1.1\r\nHost: phy-to-phy.appspot.com\r\n\r\n");&lt;/div&gt;&lt;/code&gt;&lt;br /&gt;&lt;div&gt;On a Make Controller, you would send the same string using &lt;a href="http://www.makingthings.com/ref/firmware/html/group___sockets.html#g1031bc0757e65ea265deb5dc3ded3029"&gt;SocketWrite&lt;/a&gt;.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In a few weeks, I will put up some code that also reads queries back from the phy2phy intermediation web service as well.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-6579594423585827261?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/6579594423585827261/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=6579594423585827261' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/6579594423585827261'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/6579594423585827261'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2009/12/example-phy2phy-interaction-web-service.html' title='Example Phy2Phy Interaction web service'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-2875351308273580961</id><published>2009-12-20T10:38:00.001-08:00</published><updated>2009-12-22T11:49:16.617-08:00</updated><title type='text'>Web service for phy2phy working</title><content type='html'>I have been able to get an Arduino+Xport Direct and a Make Controller to talk to each other over my &lt;a href="http://techartblog.blogspot.com/2009/12/google-app-for-networked-physical.html"&gt;Google web app for phy2phy interconnection&lt;/a&gt;! More details later.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;- Posted using BlogPress from my iPhone&lt;br /&gt;&lt;p class="blogpress_location"&gt;Location:&lt;a href="http://maps.google.com/maps?q=World%20Way,Los%20Angeles,United%20States%4033.945439%2C-118.401391&amp;amp;z=10"&gt;World Way,Los Angeles,United States&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-2875351308273580961?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/2875351308273580961/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=2875351308273580961' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/2875351308273580961'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/2875351308273580961'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2009/12/web-service-for-phy2phy-working.html' title='Web service for phy2phy working'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-5809235039579357511</id><published>2009-12-11T10:38:00.000-08:00</published><updated>2009-12-15T23:17:50.411-08:00</updated><title type='text'>Google App for Networked Physical Computing</title><content type='html'>Networked physical computing projects face two major problems:  finding each other on the Internet, and dealing with NAT filtering at Internet access routers.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Previously, I have dealt with this using a cheap shell account, where I ran a python server program at a known IP address to receive UDP packets sent by physical computing devices.  The server program could then help the devices communicate by sending UDP packets back to the physical computing devices.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Unfortunately, I am finding that UDP, the unreliable datagram protocol, is becoming less and less reliable all the time.  In particular, it looks like my cheap shell account system is rejecting small UDP packets with just a few characters of payload.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Given that the world is going to Web services, I figured hey, Google Apps are free (for low-CPU utilization use),  so I went ahead and created a Google App for generalized physical computing networking.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The App keeps a database of devices and their states.  For example, device "board1lLED" may have the state "1" to indicate an LED is on.   If you hit the main "/" URL, you get a human-readable display of all the received devices and their states and an opportunity to enter your own device and state for an update.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Physical computing devices interface with the web service through the "/update" URL using a GET.  The "d" parameter is a device to set to a state indicated by the "s" parameter, and a "q" parameter allows you to also query for the state of a device.  For example GETing "/update?d=board1LED&amp;amp;s=1&amp;amp;q=button1" sets board1LED to 1 and gets the value of button1, which may return "button1:pressed" if its state is "pressed".&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The App uses about 40 CPU mS per run, thus the 6.5 CPU hour/day quota should allow me to hit it 6 times per second all the time without running over the quota.&lt;/div&gt;&lt;div&gt;&lt;div id="iframeDivfe3207ed-20aa-4054-a76d-86b990f28264" style="display:none;margin:0px;"&gt;&lt;iframe id="iframefe3207ed-20aa-4054-a76d-86b990f28264" src="http://www.blogtrog.com/code.aspx?id=fe3207ed-20aa-4054-a76d-86b990f28264" style="width: 600px; height: 200px; border: 1px solid #e0e0e0;margin:0px;" frameborder="0"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;div id="noIframeDivfe3207ed-20aa-4054-a76d-86b990f28264" style="display:block;margin:0px;"&gt;&lt;pre&gt;&lt;div&gt;&lt;!--  Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/  --&gt;&lt;span style="color:#0000FF;"&gt;import&lt;/span&gt;&lt;span style="color:#000000;"&gt; cgi&lt;br /&gt;&lt;span style="color:#0000FF;"&gt;from&lt;/span&gt; google.appengine.ext &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;import&lt;/span&gt;&lt;span style="color:#000000;"&gt; webapp&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;from&lt;/span&gt;&lt;span style="color:#000000;"&gt; google.appengine.ext.webapp.util &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;import&lt;/span&gt;&lt;span style="color:#000000;"&gt; run_wsgi_app&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;from&lt;/span&gt;&lt;span style="color:#000000;"&gt; google.appengine.ext &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;import&lt;/span&gt;&lt;span style="color:#000000;"&gt; db&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;class&lt;/span&gt;&lt;span style="color:#000000;"&gt; DeviceState(db.Model):&lt;br /&gt;       device &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; db.StringProperty()&lt;br /&gt;       device_state &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; db.StringProperty()&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;class&lt;/span&gt;&lt;span style="color:#000000;"&gt; MainPage(webapp.RequestHandler): &lt;br /&gt;     &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;def&lt;/span&gt;&lt;span style="color:#000000;"&gt; get(self):&lt;br /&gt;               self.response.out.write(&lt;/span&gt;&lt;span style="color:#800000;"&gt;'&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;lt;html&amp;gt;&amp;lt;body&amp;gt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;'&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;br /&gt;               states&lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;db.GqlQuery(&lt;/span&gt;&lt;span style="color:#800000;"&gt;"&lt;/span&gt;&lt;span style="color:#800000;"&gt;SELECT * FROM DeviceState ORDER BY device&lt;/span&gt;&lt;span style="color:#800000;"&gt;"&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;br /&gt;               &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;for&lt;/span&gt;&lt;span style="color:#000000;"&gt; state &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;in&lt;/span&gt;&lt;span style="color:#000000;"&gt; states:&lt;br /&gt;                       self.response.out.write(&lt;/span&gt;&lt;span style="color:#800000;"&gt;"&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;"&lt;/span&gt;&lt;span style="color:#000000;"&gt;+&lt;/span&gt;&lt;span style="color:#000000;"&gt;cgi.escape(state.device)&lt;/span&gt;&lt;span style="color:#000000;"&gt;+&lt;/span&gt;&lt;span style="color:#800000;"&gt;"&lt;/span&gt;&lt;span style="color:#800000;"&gt;:&lt;/span&gt;&lt;span style="color:#800000;"&gt;"&lt;/span&gt;&lt;span style="color:#000000;"&gt;+&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;br /&gt;                               cgi.escape(state.device_state)&lt;/span&gt;&lt;span style="color:#000000;"&gt;+&lt;/span&gt;&lt;span style="color:#800000;"&gt;"&lt;/span&gt;&lt;span style="color:#800000;"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;"&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;br /&gt;               self.response.out.write(&lt;/span&gt;&lt;span style="color:#800000;"&gt;"""&lt;/span&gt;&lt;span style="color:#800000;"&gt;&lt;br /&gt;                       &amp;lt;form action="/humanSet" method="get"&amp;gt;&lt;br /&gt;                       &amp;lt;div&amp;gt;Device:&amp;lt;input type="text" name="d"&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;                       &amp;lt;div&amp;gt;State:&amp;lt;input type="text" name="s"&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;                       &amp;lt;div&amp;gt;&amp;lt;input type="submit" value="submit"&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;                     &amp;lt;/form&amp;gt;&lt;br /&gt;                   &amp;lt;/body&amp;gt;&lt;br /&gt;                 &amp;lt;/html&amp;gt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;"""&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;class&lt;/span&gt;&lt;span style="color:#000000;"&gt; UpdateState(webapp.RequestHandler):&lt;br /&gt;       &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;def&lt;/span&gt;&lt;span style="color:#000000;"&gt; get(self):&lt;br /&gt;               &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;if&lt;/span&gt;&lt;span style="color:#000000;"&gt;(self.request.get(&lt;/span&gt;&lt;span style="color:#800000;"&gt;'&lt;/span&gt;&lt;span style="color:#800000;"&gt;d&lt;/span&gt;&lt;span style="color:#800000;"&gt;'&lt;/span&gt;&lt;span style="color:#000000;"&gt;)):&lt;br /&gt;                       states&lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;db.GqlQuery(&lt;/span&gt;&lt;span style="color:#800000;"&gt;"&lt;/span&gt;&lt;span style="color:#800000;"&gt;SELECT * FROM DeviceState WHERE device = :1&lt;/span&gt;&lt;span style="color:#800000;"&gt;"&lt;/span&gt;&lt;span style="color:#000000;"&gt;,&lt;br /&gt;                               self.request.get(&lt;/span&gt;&lt;span style="color:#800000;"&gt;'&lt;/span&gt;&lt;span style="color:#800000;"&gt;d&lt;/span&gt;&lt;span style="color:#800000;"&gt;'&lt;/span&gt;&lt;span style="color:#000000;"&gt;))&lt;br /&gt;                       &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;if&lt;/span&gt;&lt;span style="color:#000000;"&gt;(states.count()&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;0):&lt;br /&gt;                               &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;for&lt;/span&gt;&lt;span style="color:#000000;"&gt; state &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;in&lt;/span&gt;&lt;span style="color:#000000;"&gt; states:&lt;br /&gt;                                       state.device_state&lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;self.request.get(&lt;/span&gt;&lt;span style="color:#800000;"&gt;'&lt;/span&gt;&lt;span style="color:#800000;"&gt;s&lt;/span&gt;&lt;span style="color:#800000;"&gt;'&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;br /&gt;                                       state.put()&lt;br /&gt;                       &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;else&lt;/span&gt;&lt;span style="color:#000000;"&gt;:&lt;br /&gt;                               deviceState &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; DeviceState()&lt;br /&gt;                               deviceState.device &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; self.request.get(&lt;/span&gt;&lt;span style="color:#800000;"&gt;'&lt;/span&gt;&lt;span style="color:#800000;"&gt;d&lt;/span&gt;&lt;span style="color:#800000;"&gt;'&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;br /&gt;                               deviceState.device_state &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; self.request.get(&lt;/span&gt;&lt;span style="color:#800000;"&gt;'&lt;/span&gt;&lt;span style="color:#800000;"&gt;s&lt;/span&gt;&lt;span style="color:#800000;"&gt;'&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;br /&gt;                               deviceState.put()&lt;br /&gt;               &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;if&lt;/span&gt;&lt;span style="color:#000000;"&gt;(self.request.get(&lt;/span&gt;&lt;span style="color:#800000;"&gt;'&lt;/span&gt;&lt;span style="color:#800000;"&gt;q&lt;/span&gt;&lt;span style="color:#800000;"&gt;'&lt;/span&gt;&lt;span style="color:#000000;"&gt;)):&lt;br /&gt;                       &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;if&lt;/span&gt;&lt;span style="color:#000000;"&gt;(self.request.get(&lt;/span&gt;&lt;span style="color:#800000;"&gt;'&lt;/span&gt;&lt;span style="color:#800000;"&gt;q&lt;/span&gt;&lt;span style="color:#800000;"&gt;'&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#000000;"&gt;==&lt;/span&gt;&lt;span style="color:#800000;"&gt;'&lt;/span&gt;&lt;span style="color:#800000;"&gt;*&lt;/span&gt;&lt;span style="color:#800000;"&gt;'&lt;/span&gt;&lt;span style="color:#000000;"&gt;):&lt;br /&gt;                               states&lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;db.GqlQuery(&lt;/span&gt;&lt;span style="color:#800000;"&gt;"&lt;/span&gt;&lt;span style="color:#800000;"&gt;SELECT * FROM DeviceState ORDER BY device&lt;/span&gt;&lt;span style="color:#800000;"&gt;"&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;br /&gt;                       &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;else&lt;/span&gt;&lt;span style="color:#000000;"&gt;:&lt;br /&gt;                               states&lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;db.GqlQuery(&lt;/span&gt;&lt;span style="color:#800000;"&gt;"&lt;/span&gt;&lt;span style="color:#800000;"&gt;SELECT * FROM DeviceState WHERE device='&lt;/span&gt;&lt;span style="color:#800000;"&gt;"&lt;/span&gt;&lt;span style="color:#000000;"&gt;+&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;br /&gt;                                       self.request.get(&lt;/span&gt;&lt;span style="color:#800000;"&gt;'&lt;/span&gt;&lt;span style="color:#800000;"&gt;q&lt;/span&gt;&lt;span style="color:#800000;"&gt;'&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;span style="color:#000000;"&gt;+&lt;/span&gt;&lt;span style="color:#800000;"&gt;"&lt;/span&gt;&lt;span style="color:#800000;"&gt;'&lt;/span&gt;&lt;span style="color:#800000;"&gt;"&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;br /&gt;                       &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;for&lt;/span&gt;&lt;span style="color:#000000;"&gt; state &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;in&lt;/span&gt;&lt;span style="color:#000000;"&gt; states:&lt;br /&gt;                               self.response.out.write(cgi.escape(state.device)&lt;/span&gt;&lt;span style="color:#000000;"&gt;+&lt;/span&gt;&lt;span style="color:#800000;"&gt;"&lt;/span&gt;&lt;span style="color:#800000;"&gt;:&lt;/span&gt;&lt;span style="color:#800000;"&gt;"&lt;/span&gt;&lt;span style="color:#000000;"&gt;+&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;br /&gt;                                       cgi.escape(state.device_state)&lt;/span&gt;&lt;span style="color:#000000;"&gt;+&lt;/span&gt;&lt;span style="color:#800000;"&gt;"&lt;/span&gt;&lt;span style="color:#800000;"&gt;\r\n&lt;/span&gt;&lt;span style="color:#800000;"&gt;"&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;class&lt;/span&gt;&lt;span style="color:#000000;"&gt; HumanSet(webapp.RequestHandler):&lt;br /&gt;       &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;def&lt;/span&gt;&lt;span style="color:#000000;"&gt; get(self):&lt;br /&gt;               states&lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;db.GqlQuery(&lt;/span&gt;&lt;span style="color:#800000;"&gt;"&lt;/span&gt;&lt;span style="color:#800000;"&gt;SELECT * FROM DeviceState WHERE device = :1&lt;/span&gt;&lt;span style="color:#800000;"&gt;"&lt;/span&gt;&lt;span style="color:#000000;"&gt;,&lt;br /&gt;                       self.request.get(&lt;/span&gt;&lt;span style="color:#800000;"&gt;'&lt;/span&gt;&lt;span style="color:#800000;"&gt;d&lt;/span&gt;&lt;span style="color:#800000;"&gt;'&lt;/span&gt;&lt;span style="color:#000000;"&gt;))&lt;br /&gt;               &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;if&lt;/span&gt;&lt;span style="color:#000000;"&gt;(states.count()&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;0):&lt;br /&gt;                       &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;for&lt;/span&gt;&lt;span style="color:#000000;"&gt; state &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;in&lt;/span&gt;&lt;span style="color:#000000;"&gt; states:&lt;br /&gt;                               state.device_state&lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;self.request.get(&lt;/span&gt;&lt;span style="color:#800000;"&gt;'&lt;/span&gt;&lt;span style="color:#800000;"&gt;s&lt;/span&gt;&lt;span style="color:#800000;"&gt;'&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;br /&gt;                               state.put()&lt;br /&gt;               &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;else&lt;/span&gt;&lt;span style="color:#000000;"&gt;:&lt;br /&gt;                       deviceState &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; DeviceState()&lt;br /&gt;                       deviceState.device &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; self.request.get(&lt;/span&gt;&lt;span style="color:#800000;"&gt;'&lt;/span&gt;&lt;span style="color:#800000;"&gt;d&lt;/span&gt;&lt;span style="color:#800000;"&gt;'&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;br /&gt;                       deviceState.device_state &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; self.request.get(&lt;/span&gt;&lt;span style="color:#800000;"&gt;'&lt;/span&gt;&lt;span style="color:#800000;"&gt;s&lt;/span&gt;&lt;span style="color:#800000;"&gt;'&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;br /&gt;                       deviceState.put()&lt;br /&gt;               self.redirect(&lt;/span&gt;&lt;span style="color:#800000;"&gt;'&lt;/span&gt;&lt;span style="color:#800000;"&gt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;'&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;class&lt;/span&gt;&lt;span style="color:#000000;"&gt; Reset(webapp.RequestHandler):&lt;br /&gt;       &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;def&lt;/span&gt;&lt;span style="color:#000000;"&gt; get(self):&lt;br /&gt;               states&lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;DeviceState.all()&lt;br /&gt;               &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;for&lt;/span&gt;&lt;span style="color:#000000;"&gt; state &lt;/span&gt;&lt;span style="color:#0000FF;"&gt;in&lt;/span&gt;&lt;span style="color:#000000;"&gt; states:&lt;br /&gt;                       state.delete()&lt;br /&gt;               self.response.out.write(&lt;/span&gt;&lt;span style="color:#800000;"&gt;"&lt;/span&gt;&lt;span style="color:#800000;"&gt;All Data Deleted\n&lt;/span&gt;&lt;span style="color:#800000;"&gt;"&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;br /&gt;&lt;br /&gt;application &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; webapp.WSGIApplication([(&lt;/span&gt;&lt;span style="color:#800000;"&gt;'&lt;/span&gt;&lt;span style="color:#800000;"&gt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;'&lt;/span&gt;&lt;span style="color:#000000;"&gt;,MainPage),&lt;br /&gt;                                     (&lt;/span&gt;&lt;span style="color:#800000;"&gt;'&lt;/span&gt;&lt;span style="color:#800000;"&gt;/humanSet&lt;/span&gt;&lt;span style="color:#800000;"&gt;'&lt;/span&gt;&lt;span style="color:#000000;"&gt;,HumanSet),&lt;br /&gt;                                     (&lt;/span&gt;&lt;span style="color:#800000;"&gt;'&lt;/span&gt;&lt;span style="color:#800000;"&gt;/update&lt;/span&gt;&lt;span style="color:#800000;"&gt;'&lt;/span&gt;&lt;span style="color:#000000;"&gt;,UpdateState),&lt;br /&gt;                                     (&lt;/span&gt;&lt;span style="color:#800000;"&gt;'&lt;/span&gt;&lt;span style="color:#800000;"&gt;/reset&lt;/span&gt;&lt;span style="color:#800000;"&gt;'&lt;/span&gt;&lt;span style="color:#000000;"&gt;,Reset)],debug&lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt;True)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;def&lt;/span&gt;&lt;span style="color:#000000;"&gt; main():&lt;br /&gt;       run_wsgi_app(application)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000FF;"&gt;if&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#800080;"&gt;__name__&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#000000;"&gt;==&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#800000;"&gt;"&lt;/span&gt;&lt;span style="color:#800000;"&gt;__main__&lt;/span&gt;&lt;span style="color:#800000;"&gt;"&lt;/span&gt;&lt;span style="color:#000000;"&gt;:&lt;br /&gt;       main()&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;&lt;script language="javascript" src="http://www.blogtrog.com/scripts/bt_code.js" type="text/javascript"&gt;&lt;/script&gt;&lt;script language="javascript" type="text/javascript"&gt;bt_code_init('fe3207ed-20aa-4054-a76d-86b990f28264');&lt;/script&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-5809235039579357511?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/5809235039579357511/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=5809235039579357511' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/5809235039579357511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/5809235039579357511'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2009/12/google-app-for-networked-physical.html' title='Google App for Networked Physical Computing'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-830999371803747211</id><published>2009-11-18T10:16:00.000-08:00</published><updated>2009-11-18T10:37:35.423-08:00</updated><title type='text'>USB debugging Make Controller Kit</title><content type='html'>&lt;div&gt;One of the problems of the &lt;a href="http://www.makingthings.com/"&gt;Make Controller&lt;/a&gt; system is that there is not too much example code out there on the Net.  I was having a very hard time understanding how the Debug system worked.  It turns out that the Debug system is done through OSC, so I just gave up and started using the much simpler &lt;a href="http://www.makingthings.com/ref/firmware/html/group___u_s_b.html"&gt;USB system&lt;/a&gt;.&lt;/div&gt;&lt;br /&gt;When compiling your program (aka Firmware) in MCBuilder, don't forget to go into "Info" and under the "Config" tab make sure you check "Include USB System".&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;At least on OS X, once you've built and uploaded your compiled program to the Make Controller board, you need to unplug the USB cable between your computer and the board, and plug it back in.  Then bring up the "USB Console".  If there is nothing in the "port" selector, unplug the USB cable and plug it back in one more time.  This time, you should see some kind of "/dev/..." device in your port list, and that means that the USB system is working.  If not, unplug and replug the USB cable again.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;Here is a sample code snippet that should output some data to the USB Console:&lt;/div&gt;&lt;code&gt;&lt;br /&gt;char buffer[40];&lt;br /&gt;int blen;&lt;br /&gt;&lt;br /&gt;Usb_SetActive(1);&lt;br /&gt;blen=sprintf(buffer,"delta=%d\n",my_time-last_time);&lt;br /&gt;Usb_Write(buffer,blen);&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-830999371803747211?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/830999371803747211/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=830999371803747211' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/830999371803747211'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/830999371803747211'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2009/11/usb-debugging-make-controller-kit.html' title='USB debugging Make Controller Kit'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-5677813478542875596</id><published>2009-08-02T21:20:00.000-07:00</published><updated>2009-08-02T21:30:42.444-07:00</updated><title type='text'>Five servos on the Make Controller Application Board</title><content type='html'>So can you run five servos on the &lt;a href="http://www.makingthings.com/documentation/tutorial/application-board-overview/tutorial-all-pages"&gt;Make Controller Application board&lt;/a&gt;?  Yes, four of the "normal" servo connections and one (and possibly more) on the PWM outputs.  Here is an example of five servos:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;// five servos.c&lt;br /&gt;// created Aug 1, 2009&lt;br /&gt;&lt;br /&gt;#include "config.h"&lt;br /&gt;#include "appled.h"&lt;br /&gt;#include "pwmout.h"&lt;br /&gt;#include "servo.h"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;void UDPTask( void* p );&lt;br /&gt;void Blink(void* p);&lt;br /&gt;struct netconn* udpSocket;&lt;br /&gt;&lt;br /&gt;void Run( ) // this task gets called as soon as we boot up.&lt;br /&gt;{&lt;br /&gt;AppLed_SetActive(0, 1); // enable LED 0&lt;br /&gt;PwmOut_SetActive(0, 1);  // between digital outs 0,1&lt;br /&gt;Servo_SetActive(0,1);&lt;br /&gt;Servo_SetActive(1,1);&lt;br /&gt;Servo_SetActive(2,1);&lt;br /&gt;Servo_SetActive(3,1);&lt;br /&gt;&lt;br /&gt;Servo_SetSpeed(0,1023); &lt;br /&gt;Servo_SetSpeed(1,1023); &lt;br /&gt;Servo_SetSpeed(2,1023); &lt;br /&gt;Servo_SetSpeed(3,1023); &lt;br /&gt;PwmOut_SetDividerAValue(64); // servo limits duty 25 to 110&lt;br /&gt;TaskCreate( Blink, "Blink", 1000, 0, 1 );&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;void Blink(void* p)&lt;br /&gt;{&lt;br /&gt;(void)p;&lt;br /&gt;int i=25;&lt;br /&gt;&lt;br /&gt;Led_SetState(1);&lt;br /&gt;Sleep(1000);&lt;br /&gt;while(1)&lt;br /&gt;{&lt;br /&gt;  Led_SetState(0);&lt;br /&gt;  Sleep(100);&lt;br /&gt;  Led_SetState(1);&lt;br /&gt;  Sleep(100);&lt;br /&gt;  Servo_SetPosition(0,(i % 85)*12);&lt;br /&gt;  Servo_SetPosition(1,((i+20) % 85)*12);&lt;br /&gt;  Servo_SetPosition(2,((i+40) % 85)*12);&lt;br /&gt;  Servo_SetPosition(3,((i+60) % 85)*12);&lt;br /&gt;  PwmOut_SetDuty(0,i);&lt;br /&gt;  i++;&lt;br /&gt;  if(i&gt;110){&lt;br /&gt;   i=25;&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-5677813478542875596?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/5677813478542875596/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=5677813478542875596' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/5677813478542875596'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/5677813478542875596'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2009/08/five-servos-on-make-controller.html' title='Five servos on the Make Controller Application Board'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-1088337539237359230</id><published>2009-07-21T10:44:00.000-07:00</published><updated>2009-07-21T10:47:34.247-07:00</updated><title type='text'>Ignite LA Tuesday Night July 21</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 14px; color: rgb(51, 51, 51); line-height: 19px; "&gt;&lt;blockquote&gt;"The first Ignite LA is tomorrow. We've got a great line-ups of talks. The topics range from social engineering to humpback whales. As always speakers will get 20 slides that auto-advance every 15 seconds."&lt;/blockquote&gt;I'm speaking on PHY2PHY.  More info &lt;a href="http://upcoming.yahoo.com/event/2473026/"&gt;here&lt;/a&gt;.&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"    style="font-family:Arial, Verdana, Helvetica, sans-serif;font-size:130%;color:#333333;"&gt;&lt;span class="Apple-style-span" style="font-size: 14px; line-height: 19px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"    style="font-family:Arial, Verdana, Helvetica, sans-serif;font-size:130%;color:#333333;"&gt;&lt;span class="Apple-style-span" style="font-size: 14px; line-height: 19px;"&gt;Cinesapce&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"    style="font-family:Arial, Verdana, Helvetica, sans-serif;font-size:130%;color:#333333;"&gt;&lt;span class="Apple-style-span" style="font-size: 14px; line-height: 19px;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); font-family: arial, helvetica, clean, sans-serif; font-size: 13px; line-height: 16px; "&gt;&lt;span class="street-address"&gt;6356 Hollywood Boulevard&lt;/span&gt;&lt;br /&gt;&lt;span class="locality"&gt;Los Angeles&lt;/span&gt;, &lt;span class="region"&gt;California&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:arial, helvetica, clean, sans-serif;font-size:100%;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 16px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:arial, helvetica, clean, sans-serif;font-size:100%;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 16px;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); "&gt;6:30pm Geek Dinner starts (with drink specials from 6:30-7)&lt;br /&gt;8pm-9:30 Ignite talks&lt;br /&gt;10pm Cinespace opens to the general public for Dim Mak (you're welcome to stay for the band) &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:arial, helvetica, clean, sans-serif;font-size:100%;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 16px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:arial, helvetica, clean, sans-serif;font-size:100%;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px; line-height: 16px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-1088337539237359230?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/1088337539237359230/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=1088337539237359230' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/1088337539237359230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/1088337539237359230'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2009/07/ignite-la-tuesday-night-july-21.html' title='Ignite LA Tuesday Night July 21'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-4936470046242294197</id><published>2009-07-14T23:54:00.000-07:00</published><updated>2009-07-15T09:01:23.968-07:00</updated><title type='text'>Make Controller &amp; Application Board - First Impressions</title><content type='html'>The sad truth is that I have received report that one side of "Breath" that I shipped across the continent for a test "smoked" when turned on after it was received, and no, I was not shooting for "smoke-over-IP".&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I have a love-hate relationship with &lt;a href="http://www.arduino.cc/"&gt;Arduino&lt;/a&gt;.  The system is really easy to get going and use, but its limitations in speed, flakey software serial port, and questionable thermal properties of its voltage regulator system always bug me.  And for a project like "Breath," I have to add a bunch of other elements (Xport, Solid state relay, etc.)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Needless to say, I was a little despondent about the melt down, but then, in the midst of my preparations for hari kiri, it came to me:  I bought a Making Things Make Controller 2.0 and Make Application Board 2.0 (purchased as the &lt;a href="http://www.makingthings.com/store/make-controller/make-controller-kit.html"&gt;Make Controller Kit&lt;/a&gt;).  This combo packs a good microcontroller with Ethernet and 1 Amp digital outputs, powered by 5-24V DC or USB, with four servo connectors and four on-board LEDs as well, and oh yeah a serial port.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My first day thoughts:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Hardware: a 10/10.  Awesome stuff, all on one board, and the Ethernet appears to DHCP correctly (i.e. also grabs a gateway), and no problem with the hefty digi driver outputs driving a small 12V fan (with a 12V power supply).  The size is a bit smaller than I had imagined, which is nice:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/mpeg2tom/3723196550/" title="Make Controller Application Board Size by mpeg2tom, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3534/3723196550_084bb2d39e.jpg" width="500" height="432" alt="Make Controller Application Board Size" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Documentation: 4/10.  All the documents are there, but the organization is very confused.  There are several tutorials, but you have to work through a bunch of them to get over the initial hump of understanding what is going on.  Plus the two different versions of the board and the many different ways to build firmware are confusing.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So here are some things you should know:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;0) Look at the &lt;a href="http://www.makingthings.com/files/schematics/appboard_v20.pdf"&gt;Make Application Board v2.0 documentation&lt;/a&gt;.  This will help you from going crazy since most of the documentation refers to the older version of the board.  Note that the 2.0 board does not have DIP switches or a potentiometer.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1)  The Make Controller 2.0 is a board that fits into the Make Application Board (or a few other boards they sell as well).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2)  Out-of-the-box, the Make Controller runs firmware called "Heavy" that can do USB &amp;amp; Ethernet I/O and accepts Open Sound Control (OSC) commands.  By the way, download the most recent version of "Heavy" as you may want to put it back on the board later after your erase it.  Make Controller &lt;a href="http://www.makingthings.com/resources/downloads"&gt;downloads are here&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;3) &lt;a href="http://www.makingthings.com/documentation/tutorial/getting-started/download-mchelper-and-test"&gt;mchelper&lt;/a&gt; is the first program you want.  It will show you any Make Boards hooked up via USB, or any Make Boards it can find on the LAN (note: if you are running both wired and wireless LANs on your laptop, you may need to turn the one which your board is not on to find it, it looks like mchelper only searches one LAN).  Here is a screenshot:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/mpeg2tom/3722382553/" title="mchelper on OS X by mpeg2tom, on Flickr"&gt;&lt;img src="http://farm3.static.flickr.com/2441/3722382553_7d48b03ed3.jpg" width="500" height="368" alt="mchelper on OS X" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;4) Once you've played around with sending some OSC commands (like "/appled/0/state 1" which turns on one of the LEDs on the board), you can try to write and build your own firmware with &lt;b&gt;mcbuilder&lt;/b&gt;.  There isn't too much documentation on it, but you can think of it like the Arduino software you run on your PC to write programs and then upload them to the Arduino.  I don't think you need those other "toolchains" if you aren't doing anything too bizarre.  But to upload your ".bin" built files to the board, &lt;u&gt;you need to first erase the board.&lt;/u&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;5)  I can't get the erase to work with USB or Ethernet from mchelper on OS X!  So after looking around, I found out there was an "erase" function on the board: you short 3.3V to "erase" on the upper left of the board, then power cycle.  I went ahead and soldered in two header pins and I can short them easily that way, or hook up a pushbutton if I need to erase it often during development.  See the upper middle of this photo:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/mpeg2tom/3723197058/" title="Make Controller Erase by mpeg2tom, on Flickr"&gt;&lt;img src="http://farm3.static.flickr.com/2454/3723197058_f72cbb0609.jpg" width="500" height="400" alt="Make Controller Erase" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;6)  Once you have erased the board, you can upload your ".bin" program from either mchelper or mcbuilder.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;7)  mcbuilder has a small number of "examples" to get you going, much like the Arduino IDE software.  For example, there is a web server example that allows you to light up the LEDs on the board through a web form.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So I'm pretty happy: with "Heavy" installed right now, the board DHCPing an IP address from my wired/wireless LAN router, I can send OSC commands using mchelper over wireless through my router to the wired connection to the board, and can drive a small 12V fan with the digital outputs using the "motor" OSC commands.  I think there is hope for "breath" to be ported to the Make Controller, but now I need to learn a bit more about writing software for it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-4936470046242294197?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/4936470046242294197/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=4936470046242294197' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/4936470046242294197'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/4936470046242294197'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2009/07/make-controller-application-board-first.html' title='Make Controller &amp; Application Board - First Impressions'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3534/3723196550_084bb2d39e_t.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-1327407612099377960</id><published>2009-07-08T22:43:00.000-07:00</published><updated>2009-07-15T09:13:11.870-07:00</updated><title type='text'>Breath-over-IP</title><content type='html'>&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/3GXrx-Ho7HI&amp;amp;hl=en&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/3GXrx-Ho7HI&amp;amp;hl=en&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The "Breath-over-IP" project is a &lt;a href="http://phy2phy.wikidot.com/"&gt;PHY2PHY&lt;/a&gt; project to deliver someone's breath across the Internet.  It is based on an Arduino with a double stack of shields.  The first shield is a &lt;a href="http://www.sparkfun.com/commerce/product_info.php?products_id=7914"&gt;SparkFun Arduino protoshield&lt;/a&gt; where I mount some resistors and a solid-state relay.  I used wire-wrap sockets to provide a stand-off from the Arduino:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/mpeg2tom/3136561099/" title="Protoshield with wire wrap sockets by mpeg2tom, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3227/3136561099_010473fbff.jpg" width="500" height="375" alt="Protoshield with wire wrap sockets" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Then on top of that I added an &lt;a href="http://www.adafruit.com/index.php?main_page=product_info&amp;amp;products_id=83"&gt;AdaFruit Xport shield&lt;/a&gt;, which I populated with a &lt;a href="http://www.lantronix.com/device-networking/embedded-device-servers/xport-direct.html"&gt;Lantronix Xport Direct&lt;/a&gt;:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/mpeg2tom/3137389446/" title="Stacking Arduino, Protoshield, and Ethernet shield by mpeg2tom, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3082/3137389446_550ca89aee.jpg" width="500" height="375" alt="Stacking Arduino, Protoshield, and Ethernet shield" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/mpeg2tom/3137390022/" title="Arduino, Protoshield, and Ethernet shield by mpeg2tom, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3125/3137390022_4f74eeac96.jpg" width="500" height="375" alt="Arduino, Protoshield, and Ethernet shield" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now I had to build the Breath sensor.  I tried using gutted case fans, but they were always a bit too hard to blow.  Here I am testing an IR led and IR phototransistor on a breadboard with a gutted case fan:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://www.flickr.com/photos/mpeg2tom/3098864150/" title="IR emitter/detector pair and fan by mpeg2tom, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3041/3098864150_d5a9555d62.jpg" width="500" height="375" alt="IR emitter/detector pair and fan" /&gt;&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I eventually decided on using a &lt;a href="http://www.nkhome.com/store/product.php?productid=16147"&gt;replacement Kestrel anemometer impeller&lt;/a&gt;.  To provide some kind of structure to mount the IR LED and phototransistor to, I used FastSteel:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.flickr.com/photos/mpeg2tom/3254216935/" title="FastSteel by mpeg2tom, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3441/3254216935_afb8ef62f6_m.jpg" width="240" height="180" alt="FastSteel" /&gt;&lt;/a&gt; &lt;a href="http://www.flickr.com/photos/mpeg2tom/3254218363/" title="FastSteel by mpeg2tom, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3303/3254218363_71b6377c40_m.jpg" width="240" height="180" alt="FastSteel" /&gt;&lt;/a&gt; &lt;a href="http://www.flickr.com/photos/mpeg2tom/3111775854/" title="Kestrel Anemometer Impeller by mpeg2tom, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3208/3111775854_0a6b88ce7a_m.jpg" width="240" height="180" alt="Kestrel Anemometer Impeller" /&gt;&lt;/a&gt; &lt;a href="http://www.flickr.com/photos/mpeg2tom/3255050090/" title="Impeller encased in FastSteel by mpeg2tom, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3048/3255050090_0eab5ea77d_m.jpg" width="240" height="180" alt="Impeller encased in FastSteel" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Then I added the side-looking &lt;a href="http://www.nteinc.com/specs/3000to3099/pdf/nte3029b.pdf"&gt;NTE 3029B IR LED&lt;/a&gt; (with a 220 Ohm current-limiting resistor off 5V) and &lt;a href="http://www.nteinc.com/specs/3000to3099/pdf/nte3034a.pdf"&gt;NTE 3034A IR Phototransistor detector&lt;/a&gt; (with a 10K Ohm pull-up to 5V) held in place with a bit more FastSteel:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.flickr.com/photos/mpeg2tom/3673660799/" title="Breath Impeller by mpeg2tom, on Flickr"&gt;&lt;img src="http://farm3.static.flickr.com/2589/3673660799_8b4594fac6.jpg" width="500" height="375" alt="Breath Impeller" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And for flexibility, I mounted it on a mini-tripod:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/mpeg2tom/3673663205/" title="Breath Impeller by mpeg2tom, on Flickr"&gt;&lt;img src="http://farm3.static.flickr.com/2550/3673663205_ee32885c6d_m.jpg" width="180" height="240" alt="Breath Impeller" /&gt;&lt;/a&gt; &lt;a href="http://www.flickr.com/photos/mpeg2tom/3673665495/" title="Breath Impeller System by mpeg2tom, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3404/3673665495_aa7fc44a44_m.jpg" width="180" height="240" alt="Breath Impeller System" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For the "first side" of Breath, I used a solid-state relay capable of AC or DC operation.  I figured I might want the Breath to drive a full-sized AC fan, so the "output" is an AC plug.  I found a powerful, yet compact AC fan for standard operation.  Then I tested it and mounted it in a box:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://www.flickr.com/photos/mpeg2tom/3533890151/" title="Breath box in testing by mpeg2tom, on Flickr"&gt;&lt;img src="http://farm3.static.flickr.com/2099/3533890151_e03ce948db.jpg" width="500" height="375" alt="Breath box in testing" /&gt;&lt;/a&gt;&lt;div&gt;&lt;a href="http://www.flickr.com/photos/mpeg2tom/3533890151/" title="Breath box in testing by mpeg2tom, on Flickr"&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://www.flickr.com/photos/mpeg2tom/3674481388/" title="Breath Box by mpeg2tom, on Flickr"&gt;&lt;img src="http://farm3.static.flickr.com/2566/3674481388_ff666fce71.jpg" width="500" height="375" alt="Breath Box" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/mpeg2tom/3674478476/" title="&amp;quot;Home Base&amp;quot; Breath System by mpeg2tom, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3658/3674478476_008dcc3bf3.jpg" width="500" height="375" alt="&amp;quot;Home Base&amp;quot; Breath System" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I realized that I would be shipping the "other side" of Breath all over the planet, so perhaps it should be a little more compact, and DC only so I wouldn't have to worry about different AC voltages/frequencies in other countries.  So I found a powerful 12VDC fan.  I mounted the impeller and IR LED and phototransistor into a piece of PVC pipe, and JB Welded the pipe on top of the fan.  The pipe is long enough so that the wind from the fan doesn't make the impeller spin, as it is very sensitive!  The result:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/mpeg2tom/3674477366/" title="&amp;quot;Mobile&amp;quot; Breath System by mpeg2tom, on Flickr"&gt;&lt;img src="http://farm3.static.flickr.com/2463/3674477366_dff27b5907.jpg" width="500" height="375" alt="&amp;quot;Mobile&amp;quot; Breath System" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here is the Arduino program, which used the &lt;a href="http://arduiniana.org/libraries/NewSoftSerial/"&gt;NewSoftSerial&lt;/a&gt; library to talk to the Xport Direct:&lt;/div&gt;&lt;div&gt;&lt;pre&gt;#include NewSoftSerial.h&lt;br /&gt;&lt;br /&gt;// breath&lt;br /&gt;&lt;br /&gt;unsigned long time = 0;   // time of last edge&lt;br /&gt;int minTime = 25;         // minimum time for edge&lt;br /&gt;int good = 0;             // number of consecutive good (fast) edges&lt;br /&gt;int minGoods = 20;        // minimum number of consecutive good (fast) edges to indicate breath&lt;br /&gt;&lt;br /&gt;int ledPin = 13;          // on-board LED pin     &lt;br /&gt;int irLedPin = 10;        // IR LED attached to pin 12 with 220 ohm resistor&lt;br /&gt;int irDetPin = 0;         // IR phototransistor attached to analog 0 with 5V and 10K&lt;br /&gt;int relayPin = 11;        // solid-state relay pin&lt;br /&gt;&lt;br /&gt;unsigned long onTime = 0; // relay on time'&lt;br /&gt;unsigned long pingTime = 0; // time to "ping" server&lt;br /&gt;&lt;br /&gt;int i=0;                  // counts up received breath packets for diagnostics&lt;br /&gt;int light=0;              // whether IR detector sees light or dark&lt;br /&gt;int lastLight=0;          // what IR detector saw last time&lt;br /&gt;&lt;br /&gt;unsigned long sendTime=0; // last time breath packet was sent out&lt;br /&gt;&lt;br /&gt;NewSoftSerial xport(3,2);&lt;br /&gt;&lt;br /&gt;void setup()&lt;br /&gt;{&lt;br /&gt;pinMode(relayPin,OUTPUT);&lt;br /&gt;digitalWrite(relayPin, LOW);&lt;br /&gt;&lt;br /&gt;Serial.begin(57600);&lt;br /&gt;xport.begin(9600);&lt;br /&gt;&lt;br /&gt;pinMode(ledPin, OUTPUT);&lt;br /&gt;pinMode(irLedPin, OUTPUT);&lt;br /&gt;digitalWrite(irLedPin, HIGH);&lt;br /&gt;Serial.print("Starting");  //for debugging&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void loop()&lt;br /&gt;{&lt;br /&gt;if(analogRead(irDetPin)&gt;850){&lt;br /&gt; light=0;&lt;br /&gt;}&lt;br /&gt;else{&lt;br /&gt; light=1;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;if(light != lastLight){&lt;br /&gt; // edge&lt;br /&gt; if(millis()-time&lt;mintime){ fast="" edge="" not="" good="0;" time="millis();" lastlight="light;"&gt;minGoods) {&lt;br /&gt; // enough good (fast) edges&lt;br /&gt; digitalWrite(ledPin,HIGH);&lt;br /&gt; if(millis()-sendTime&gt;100){&lt;br /&gt;   // send a breath, not too fast though&lt;br /&gt;   xport.print("B2");&lt;br /&gt;   sendTime = millis();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;else{&lt;br /&gt; // not enough good (fast) edges&lt;br /&gt; digitalWrite(ledPin,LOW);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;if(millis() - onTime &gt; 100){&lt;br /&gt; digitalWrite(relayPin,LOW);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;if (xport.available()) {&lt;br /&gt;  if((char)xport.read()=='B'){&lt;br /&gt;    // receive a breath&lt;br /&gt;    digitalWrite(relayPin,HIGH);&lt;br /&gt;    onTime = millis();&lt;br /&gt;    //Serial.println(onTime);&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;if(millis() - pingTime &gt; 1000){&lt;br /&gt; xport.print("A2");&lt;br /&gt; pingTime=millis();&lt;br /&gt;}&lt;br /&gt;}&lt;span class="Apple-style-span"   style="font-family:Georgia, fantasy;font-size:130%;"&gt;&lt;span class="Apple-style-span"  style=" white-space: normal;font-size:16px;"&gt;&lt;span class="Apple-style-span"   style="font-family:monospace, fantasy;font-size:100%;"&gt;&lt;span class="Apple-style-span"  style=" white-space: pre;font-size:13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/mintime){&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style=" ;font-family:Georgia, -webkit-fantasy;"&gt;The last thing needed is a "meet in the middle" server.  The two sides of breath send UDP packets to the server.  Every second they send a "ping" to make sure the server knows where they are (and this also helps to "punch out" through a firewall).  Then when the sides sense a breath, they send a "breath" signal to the server, which relays the breath signal to the other side.  Here is the Python program:&lt;pre&gt;from socket import *&lt;br /&gt;s=socket(AF_INET,SOCK_DGRAM) # create UDP socket&lt;br /&gt;s.bind(('[ip address]',[port])) # bind to port&lt;br /&gt;count=0&lt;br /&gt;a1=('10.0.0.0',80) # will hold address of Breath side 1&lt;br /&gt;a2=('10.0.0.0',80) # will hold address of Breath side 2&lt;br /&gt;while 1:&lt;br /&gt;[msg,addr]=s.recvfrom(128) # receive packet of up to 4 bytes&lt;br /&gt;print(addr,':',msg)&lt;br /&gt;if(msg[0:2] == "A1"): # address "ping" from Breath side 1&lt;br /&gt;a1=addr&lt;br /&gt;if(msg[0:2] == "A2"): # address "ping" from Breath side 2&lt;br /&gt;a2=addr&lt;br /&gt;if(msg[0:2] == "B1"): # breath sensed on Breath side 1&lt;br /&gt;a1=addr&lt;br /&gt;s.sendto("B",a2) # relay breath to Breath side 2&lt;br /&gt;if(msg[0:2] == "B2"): # breath sensed on Breath side 2&lt;br /&gt;a2=addr&lt;br /&gt;s.sendto("B",a1) # relay breath to Breath side 1&lt;br /&gt;&lt;/pre&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-1327407612099377960?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/1327407612099377960/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=1327407612099377960' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/1327407612099377960'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/1327407612099377960'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2009/07/breath-over-ip.html' title='Breath-over-IP'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3227/3136561099_010473fbff_t.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-2309748387006042200</id><published>2009-07-06T21:40:00.000-07:00</published><updated>2009-07-06T21:42:56.154-07:00</updated><title type='text'>Dorkbot SoCal 37</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: monospace; font-size: medium; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; "&gt;&lt;h2&gt;Dorkbot SoCal 37&lt;/h2&gt;***** Saturday, July 11, 2009&lt;br /&gt;***** 1:00pm&lt;br /&gt;***** Machine Project&lt;br /&gt;***** 1200 D North Alvarado Street&lt;br /&gt;***** Los Angeles, CA 90026&lt;br /&gt;***** &lt;a href="http://maps.google.com/maps?f=q&amp;amp;hl=en&amp;amp;q=1200+D+North+Alvarado+Street%2C+Los+Angeles%2C+CA"&gt;Google map of Machine Project&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Heather Knight&lt;/b&gt;&lt;br /&gt;&lt;a href="http://www.marilynmonrobot.com/"&gt;http://www.marilynmonrobot.com/&lt;/a&gt;&lt;br /&gt;A newbie Angelino and recent alumnus from the &lt;a href="http://robotic.media.mit.edu/"&gt;Personal Robots Group&lt;/a&gt; at the MIT Media Lab, Heather is a Social Roboticist who works at the Jet Propulsion Lab. She has two degrees from MIT in Electrical Engineering and Computer Science and a minor in Mechanical Engineering, working in Robotics since 2002 under Professor &lt;a href="http://web.media.mit.edu/~cynthiab/"&gt;Cynthia Breazeal&lt;/a&gt;. This dorkbot she will present her work enabling robots to understand nonverbal human gestures and talk about the potentials for interactive technology incorporated into everyday objects, such as clothing.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://dorkbot.org/dorkbotsocal/img/sensate3.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Jody Zellen&lt;/b&gt;&lt;br /&gt;&lt;a href="http://www.jodyzellen.com/"&gt;http://www.jodyzellen.com/&lt;/a&gt;&lt;br /&gt;Jody Zellen is an artist living in Los Angeles, California. She works in many media simultaneously making photographs, installations, net art, public art, as well as artists' books that explore the subject of the urban environment. She employs media-generated representations of contemporary and historic cities as raw material for aesthetic and social investigations.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://dorkbot.org/dorkbotsocal/img/fringe1.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Xuan "Sean" Li&lt;/b&gt;&lt;br /&gt;&lt;a href="http://www.way2sky.com/portfolio/"&gt;http://www.way2sky.com/portfolio/&lt;/a&gt;&lt;br /&gt;Xuan "Sean" Li creates works that merge concepts and ideas from different disciplines into new digital and electronic expression. He has worked in the areas of web design, game level design, product design, and 3D rendering and animation. His most recent work attempts to expand the role of information visualization as an art form through a novel combination of physical sensors with generative visuals, exploring new aesthetic possibilities by expressing the nature of the wireless data flow.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://dorkbot.org/dorkbotsocal/img/xuan_li.jpg" /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-2309748387006042200?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/2309748387006042200/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=2309748387006042200' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/2309748387006042200'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/2309748387006042200'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2009/07/dorkbot-socal-37.html' title='Dorkbot SoCal 37'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-3536137500047239538</id><published>2009-06-14T13:38:00.000-07:00</published><updated>2009-06-21T12:06:23.042-07:00</updated><title type='text'>Analog TV Termination Results</title><content type='html'>From the event at &lt;a href="http://machineproject.com/"&gt;Machine Project&lt;/a&gt;, first a &lt;a href="http://en.wikipedia.org/wiki/Mechanical_television"&gt;mechanical television&lt;/a&gt; that uses a &lt;a href="http://en.wikipedia.org/wiki/Nipkow_disk"&gt;Nipkow Disk&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/mpeg2tom/3622266217/" title="Mechanical Television @ Machine Project by mpeg2tom, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3603/3622266217_c7965ac23d_m.jpg" width="180" height="240" alt="Mechanical Television @ Machine Project" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;So there was a stack of analog TVs:&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/mpeg2tom/3622265143/" title="Analog Termination event @ Machine Project by mpeg2tom, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3585/3622265143_c6b3c9e6ea_m.jpg" width="240" height="202" alt="Analog Termination event @ Machine Project" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And just before midnight, they turned off the lights:&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/mpeg2tom/3622268997/" title="Before the analog termination by mpeg2tom, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3615/3622268997_e66e6936f9_m.jpg" width="180" height="240" alt="Before the analog termination" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Then as the minutes ticked away, the analog signals winked out, until finally at midnight:&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/mpeg2tom/3622270123/" title="After the ananlog termination by mpeg2tom, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3626/3622270123_68852f075f_m.jpg" width="180" height="240" alt="After the ananlog termination" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-3536137500047239538?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/3536137500047239538/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=3536137500047239538' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/3536137500047239538'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/3536137500047239538'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2009/06/anaog-tv-terminal-results.html' title='Analog TV Termination Results'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3603/3622266217_c7965ac23d_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-4708357122921833072</id><published>2009-06-11T12:55:00.000-07:00</published><updated>2009-06-11T12:56:40.726-07:00</updated><title type='text'>Analog TV Termination Party in LA - Friday, June 12</title><content type='html'>&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: arial; font-size: 13px; "&gt;Friday June 12th at 10pm - a talk by Jason Torchinsky about mechanical televisions, to be followed by a midnight countdown to the demise of analog TV. Sometime Friday night (depending on the station) all the old analog television broadcasts will stop, to be replaced by digital signals. That means old TVs without converter boxes won’t work anymore. In memoriam of the TVs we all have known and loved/hated, we’ll be gathering a pyramid of old TVs together for a countdown as they go to static. Please join us, and if you promise to bring it home with you afterwards, bring a TV for the pyramid.&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: arial; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: arial; font-size: 13px;"&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; font-size: 12px; "&gt;Machine Project &lt;br /&gt;1200 D North Alvarado &lt;br /&gt;Los Angeles, CA 90026 &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: arial; font-size: 13px; "&gt;&lt;br /&gt;&lt;a href="http://machineproject.com/events/2009/06/12/farewell-to-analog-tv/" target="_blank" style="color: rgb(0, 0, 204); "&gt;http://machineproject.com/&lt;wbr&gt;events/2009/06/12/farewell-to-&lt;wbr&gt;analog-tv/&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-4708357122921833072?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/4708357122921833072/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=4708357122921833072' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/4708357122921833072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/4708357122921833072'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2009/06/analog-tv-termination-party-in-la.html' title='Analog TV Termination Party in LA - Friday, June 12'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-856352460746958390</id><published>2009-06-11T12:53:00.000-07:00</published><updated>2009-06-11T12:54:23.365-07:00</updated><title type='text'>Gel Electrophoresis Artwork</title><content type='html'>Here is a neat web page about using restriction digestion of DNA samples to make artwork using gel electrophoresis:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.contrib.andrew.cmu.edu/~pv28/lfp3.html"&gt;Latent Figure Protocol&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-856352460746958390?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/856352460746958390/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=856352460746958390' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/856352460746958390'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/856352460746958390'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2009/06/gel-electrophoresis-artwork.html' title='Gel Electrophoresis Artwork'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-3273980704679458035</id><published>2009-06-04T21:14:00.000-07:00</published><updated>2009-06-04T21:17:52.061-07:00</updated><title type='text'>Dorkbot SoCal 36</title><content type='html'>&lt;span class="Apple-style-span"   style="  -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family:-webkit-monospace;font-size:13px;"&gt;&lt;h2&gt;&lt;a href="http://dorkbot.org/dorkbotsocal"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Dorkbot SoCal 36&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;***** Saturday, June 20, 2009&lt;br /&gt;***** 1:00pm&lt;br /&gt;***** Machine Project&lt;br /&gt;***** 1200 D North Alvarado Street&lt;br /&gt;***** Los Angeles, CA 90026&lt;br /&gt;***** &lt;/span&gt;&lt;/span&gt;&lt;a href="http://maps.google.com/maps?f=q&amp;amp;hl=en&amp;amp;q=1200+D+North+Alvarado+Street%2C+Los+Angeles%2C+CA"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Google map of Machine Project&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="  -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="  -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px;font-family:-webkit-monospace;font-size:13px;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Design Algorithms: Skeuomorphs, Spandrels &amp;amp; Palimpsests&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;br /&gt;This event will explore how cultural objects shift over time, with each presenter exploring a single term related to patterns of cultural change. &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Skeuomorphs - &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.conceptlab.com/"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Garnet Hertz&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; - UC Irvine&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;"An ornament or design on an object copied from a form of the object when made from another material or by other techniques"&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;br /&gt;&lt;br /&gt;Garnet Hertz is an interdisciplinary artist, Fulbright Scholar and doctoral candidate in Visual Studies at UC Irvine. He also holds an MFA from the Arts Computation Engineering program at UCI, has completed UCI's Critical Theory Emphasis and is currently an affiliate of the Laboratory for Ubiquitous Computing and Interaction in the Department of Informatics. His dissertation research explores the creative, historical and cultural advantages of reusing obsolete information technologies in the media arts, and uses these examples to construct a critical theory of a cluster of related activities: circuit bending, D.I.Y., critical design and media archaeology. He has shown his work at several notable international venues in eleven countries including Ars Electronica, DEAF and SIGGRAPH and was awarded the prestigious 2008 Oscar Signorini Award in robotics. He is founder and director of Dorkbot SoCal, a monthly Los Angeles-based DIY lecture and workshop series on electronic art and design. His research is widely cited in academic publications, and popular press on his work has disseminated through 25 countries including The New York Times, Wired, The Washington Post, NPR, USA Today, NBC, CBS, TV Tokyo and CNN Headline News. &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Spandrels - Tim Durfee - Art Center&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;"The roughly triangular space between the left or right exterior curve of an arch and the rectangular framework surrounding it"&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;br /&gt;&lt;br /&gt;Tim Durfee is an architect based in Los Angeles. His independent and collaborative work has produced buildings, exhibitions, temporary installations, furniture, urban sign systems, interfaces, videos, and maps. &lt;br /&gt;&lt;br /&gt;He is a partner of the Los Angeles office Durfee | Regn and teaches at Art Center College of Design in the Graduate Media Design Program. He was director of the Visual Studies Program at the Southern California Institute of Architecture (SCI-Arc), and recently completed a Visiting Professorship at Woodbury University. &lt;br /&gt;&lt;br /&gt;Current projects include several houses, a penthouse loft and rooftop in downtown LA, signs for the Gallery Row district in Los Angeles, and a museum on the history of transportation in Los Angeles near the Port of Los Angeles. With Durfee Regn Sandhaus (DRS), Tim Durfee has also created award-winning exhibitions for museums across the country. &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Palimpsests - &lt;/span&gt;&lt;/span&gt;&lt;a href="http://calarts.edu/faculty_bios/criticalstudies/faculty/normanklein/normanklein"&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Norman Klein&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; - CalArts / Art Center&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;"A manuscript, typically of papyrus or parchment, that has been written on more than once, with the earlier writing incompletely erased and often legible."&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;br /&gt;Norman Klein is a cultural critic, and both an urban and media historian, as well as a novelist. His books include "The History of Forgetting: Los Angeles and the Erasure of Memory," "Seven Minutes: The Life and Death of the American Animated Cartoon," and the data/cinematic novel, "Bleeding Through: Layers of Los Angeles, 1920-86" (DVD-ROM with book). His next book will be "The Vatican to Vegas: The History of Special Effects." (Fall, 2003). His essays appear in anthologies, museum catalogs, newspapers, scholarly journals, on the web -- symptoms of a polymath's career, from European cultural history to animation and architectural studies, to LA studies, to fiction, media design and documentary film. His work (including museum shows) centers on the relationship between collective memory and power, from special effects to cinema to digital theory, usually set in urban spaces; and often on the thin line between fact and fiction; about erasure, forgetting, scripted spaces, the social imaginary.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-3273980704679458035?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/3273980704679458035/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=3273980704679458035' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/3273980704679458035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/3273980704679458035'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2009/06/dorkbot-socal-36.html' title='Dorkbot SoCal 36'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-8707135895180620865</id><published>2009-05-29T17:27:00.000-07:00</published><updated>2009-05-29T17:30:03.089-07:00</updated><title type='text'>Monochrom on Computers in Popular Music @ Machine Project</title><content type='html'>The Monochrom folks are awesome...this is worth checking out....&lt;br /&gt;&lt;br /&gt;&lt;a href="http://machineproject.com/events/2009/06/06/i-can-count/"&gt;“I can count every star in the heavens above but I have no heart I can’t fall in love…”&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The image of computers in popular music&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://machineproject.com/"&gt;Machine Project&lt;/a&gt;&lt;br /&gt;1200 D North Alvarado&lt;br /&gt;Los Angeles, CA 90026&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Saturday, June 6th, 2009&lt;br /&gt;8pm&lt;br /&gt;&lt;br /&gt;A talk (with audio examples) by monochrom, presented by Johannes Grenzfurthner&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Bourgeois culture was paralyzed and finally overrun by modern technologies which broke through the traditional class barriers. It went into a panic and produced these very stupid technophobic manifestos and images e.g. of “the computer”. Pop music discovered and explored the computer not only as a musical instrument but also as something to sing and reflect about in a less aversive way. In doing so it influenced the conception people had of computers. The public image of computers was shaped by groups such as Kraftwerk as well as through obscure Schlager songs such as France Gall’s “Computer No. 3”. Not only was that image influenced by high culture computer panic but also by naïve technomania, and so it delivered the very dialectics of the computer as a means of cultural technology in capitalist society.&lt;/blockquote&gt;&lt;a href="http://monochrom.org/english/"&gt;monochrom&lt;/a&gt; is an art-technology-philosophy group having its seat in Vienna:&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-8707135895180620865?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/8707135895180620865/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=8707135895180620865' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/8707135895180620865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/8707135895180620865'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2009/05/monochrom-on-computers-in-popular-music.html' title='Monochrom on Computers in Popular Music @ Machine Project'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-9119981485557877576</id><published>2009-04-02T14:49:00.000-07:00</published><updated>2009-04-02T15:13:09.216-07:00</updated><title type='text'>OSC control from iPhone to pd on Mac</title><content type='html'>Everyone seems to be using &lt;a href="http://opensoundcontrol.org/"&gt;Open Sound Control &lt;/a&gt;(OSC), so I figured I'd try controlling &lt;a href="http://puredata.info/"&gt;pd&lt;/a&gt; (aka Pure Data) on my MacBook from my iPhone using the &lt;a href="http://hexler.net/software/touchosc"&gt;TouchOSC&lt;/a&gt; app.&lt;br /&gt;&lt;br /&gt;Here is how you do it...&lt;br /&gt;&lt;br /&gt;1)  Get a recent build of pd, I used &lt;a href="http://autobuild.puredata.info/auto-build/2009-04-01/"&gt;this build&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;2) Set up a new computer-to-computer WiFi network:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/mpeg2tom/3408070428/" title="Create Computer-to-Computer network by mpeg2tom, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3392/3408070428_722bebdc0e_o.png" width="235" height="169" alt="Create Computer-to-Computer network" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/mpeg2tom/3408070300/" title="Create Computer-to-Computer network by mpeg2tom, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3371/3408070300_184cf4b404_o.png" width="423" height="234" alt="Create Computer-to-Computer network" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;3) Connect to the WiFi network "osc" on your iPhone.&lt;br /&gt;&lt;br /&gt;4) Find your PC's IP address on that computer-to-computer WiFi network:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/mpeg2tom/3405663575/" title="Check your IP address by mpeg2tom, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3597/3405663575_7fc4e213fa_o.png" width="384" height="209" alt="Check your IP address" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;5) Put your IP address into the "Host" configuration on TouchOSC on your iPhone, and set your outgoing port:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/mpeg2tom/3405626835/" title="TouchOSC Configuration by mpeg2tom, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3648/3405626835_e9b2771f9b.jpg" width="375" height="500" alt="TouchOSC Configuration" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;6) Set up your pd patch:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/mpeg2tom/3405670217/" title="OSC pd Example by mpeg2tom, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3467/3405670217_8fbef71e1c_o.png" width="195" height="246" alt="OSC pd Example" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;"dumpOSC 9999" receives on port 9999, "OSCroute" parses the command, and I use "unpack" to grab the second element of the message, which is the fader value or toggle setting:&lt;br /&gt;&lt;br /&gt;6) Play!&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/GH9Qspl_3r8&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/GH9Qspl_3r8&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-9119981485557877576?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/9119981485557877576/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=9119981485557877576' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/9119981485557877576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/9119981485557877576'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2009/04/osc-control-from-iphone-to-pd-on-mac.html' title='OSC control from iPhone to pd on Mac'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3648/3405626835_e9b2771f9b_t.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-3551345514088921520</id><published>2009-02-28T11:01:00.000-08:00</published><updated>2009-02-28T11:26:59.799-08:00</updated><title type='text'>Dorkbot SoCal 34</title><content type='html'>Next &lt;a href="http://dorkbot.org/dorkbotsocal/"&gt;Dorkbot SoCal&lt;/a&gt; meeting...&lt;br /&gt;&lt;br /&gt;Sunday, March 8, 2009&lt;br /&gt;1:00pm [warning: first day daylight savings time!]&lt;br /&gt;&lt;a href="http://machineproject.com/"&gt;Machine Project&lt;/a&gt;&lt;br /&gt;1200 D North Alvarado Street&lt;br /&gt;Los Angeles, CA 90026&lt;br /&gt;&lt;br /&gt;Presenters will include:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://directedplay.com/"&gt;Dan Goods&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Dan is the "Visual Strategist" for NASA's Jet Propulsion Laboratory at CalTech where he develops creative ways of communicating science. He recently has done artwork with aerogel and on a team to develop a 108-foot long data driven sculpture at the San Jose airport.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://dorkbot.org/dorkbotsocal/img/ecloud_onoff.jpg" width=400&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Eric Gradman and Brent Bushnell&lt;br /&gt;&lt;br /&gt;&lt;a href="http://mindshare.la/labs/"&gt;Mindshare LA Labs'&lt;/a&gt; Eric and Brent will present ArtFall: a dynamic physical simulation by drawing on a whiteboard.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://dorkbot.org/dorkbotsocal/img/artfall.jpg" width=400&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Brian O'Connor&lt;div&gt;&lt;br /&gt;Arduino + Chumby = Fun!: The Chumby is an open-source, ambient Internet device running Linux while the Arduino is an open-source prototyping platform. Brian will show how to connect an Arduino to the Chumby and develop a simple application that monitors the environment.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://dorkbot.org/dorkbotsocal/img/chumby.jpg" width=400&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://upcoming.yahoo.com/event/1900300/"&gt;Upcoming.yahoo.com Link&lt;/a&gt;&lt;br&gt;&lt;br /&gt;&lt;a href="http://www.facebook.com/event.php?eid=60718166499"&gt;Facebook Event&lt;/a&gt;&lt;br&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-3551345514088921520?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/3551345514088921520/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=3551345514088921520' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/3551345514088921520'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/3551345514088921520'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2009/02/dorkbot-34.html' title='Dorkbot SoCal 34'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-9123478829266684544</id><published>2009-02-24T13:18:00.001-08:00</published><updated>2009-02-24T13:29:56.533-08:00</updated><title type='text'>Cheap Absolute Optical Encoder</title><content type='html'>If you need a cheap absolute optical encoder, check out the &lt;a href="http://www.bourns.com/data/global/pdfs/ACE.pdf"&gt;Bourns EAW&lt;/a&gt; which is &lt;a href="http://www.mouser.com/Search/ProductDetail.aspx?qs=sGAEpiMZZMsWp46O%252bq11WcGoMlc56u%2f2bpB9G4of5q0%3d"&gt;~$15 from Mouser&lt;/a&gt;.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I'm again considering my spinning head driven by the &lt;a href="http://www.parallax.com/Store/Sensors/ObjectDetection/tabid/176/CategoryID/51/List/0/Level/a/ProductID/83/Default.aspx?SortField=ProductName%2cProductName"&gt;Parallax PIR sensors&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The only question is whether I use a &lt;a href="http://www.servocity.com/html/robotzone_servos.html"&gt;gearbox servo&lt;/a&gt; or build my own motor &amp;amp; encoder.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-9123478829266684544?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/9123478829266684544/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=9123478829266684544' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/9123478829266684544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/9123478829266684544'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2009/02/cheap-absolute-optical-encoder.html' title='Cheap Absolute Optical Encoder'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-7362295725751446270</id><published>2009-01-12T22:03:00.000-08:00</published><updated>2009-01-12T22:19:10.975-08:00</updated><title type='text'>New Ethernet/USB Microcontrollers</title><content type='html'>The Cyan Technologies &lt;a href="http://www.cyantechnology.com/support/USB_Ethernet.php"&gt;USB/Ethernet-Solved board&lt;/a&gt; based on the &lt;a href="http://www.cyantechnology.com/mcu/mcu_eCOG1X.php"&gt;eCOG1X14Z5 microcontroller&lt;/a&gt; looks interesting.  It appears to come with a nice IDE and you can download projects to do Web and FTP servers.  The eval board is &lt;a href="http://www.mouser.com/search/ProductDetail.aspx?qs=WqWCsLCZBkoxTWqK8gVs9Q%3d%3d"&gt;$99 from Mouser&lt;/a&gt;.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Also ATMEL has a new family of microcontrollers, the &lt;a href="http://www.atmel.com/products/avr32/uc3/uc3_2.asp?family_id=682"&gt;AVR32 UC3A&lt;/a&gt; which features a 512K bytes Flash, an embedded 10/100 Ethernet MAC, 12 Mbps USB 2.0 and an SRAM/SDRAM external bus interface. .  The eval kit is $&lt;a href="http://www.mouser.com/Search/ProductDetail.aspx?qs=fH4tvdCgwtOf3w5A%252bWNZrg%3d%3d"&gt;129 from Mouser&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-7362295725751446270?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/7362295725751446270/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=7362295725751446270' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/7362295725751446270'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/7362295725751446270'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2009/01/new-ethernetusb-microcontroller-board.html' title='New Ethernet/USB Microcontrollers'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-4396174915513714861</id><published>2008-12-29T20:58:00.000-08:00</published><updated>2008-12-29T21:07:25.222-08:00</updated><title type='text'>Dorkbot SoCal Jan. 10 - Aschheimm, Evans, Guttman</title><content type='html'>&lt;a href="http://www.dorkbot.org/dorkbotsocal"&gt;http://www.dorkbot.org/dorkbotsocal&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Saturday, January 10, 2009&lt;br /&gt;1:00pm&lt;br /&gt;Machine Project&lt;br /&gt;1200 D North Alvarado Street&lt;br /&gt;Los Angeles, CA 90026&lt;br /&gt;&lt;br /&gt;Presenters will include:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Deborah Aschheim&lt;/b&gt;&lt;br /&gt;&lt;a href="http://www.deborahaschheim.com/"&gt;http://www.deborahaschheim.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Deborah Aschheim creates works that blur biology and technology, exploring concepts of memory, architecture, and neural networks through drawings, sculpture, writing, installation and sounds.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.dorkbot.org/dorkbotsocal/img/aschheim.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Brian Evans&lt;/b&gt;&lt;br /&gt;&lt;a href="http://www.bwevans.net/"&gt;http://www.bwevans.net/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Brian Evans explores the intersection between reductivist sculptural form and the aesthetics of behavior, where structure and thought are fused.  He creates simple moving objects with seemingly life-like qualities - electromechanical life forms with motivations only just beyon our understanding.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.dorkbot.org/dorkbotsocal/img/evans.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;David Guttman&lt;/b&gt;&lt;br /&gt;&lt;a href="http://www.davidguttman.com/"&gt;http://www.davidguttman.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;David Guttman creates interactive works that generate unique colors and shapes from sound and EEG.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.dorkbot.org/dorkbotsocal/img/david_guttman.jpg" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-4396174915513714861?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/4396174915513714861/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=4396174915513714861' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/4396174915513714861'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/4396174915513714861'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2008/12/dorkbot-socal-jan-10-aschheimm-evans.html' title='Dorkbot SoCal Jan. 10 - Aschheimm, Evans, Guttman'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-2137885748160961137</id><published>2008-12-25T20:55:00.000-08:00</published><updated>2008-12-25T21:16:42.142-08:00</updated><title type='text'>Stacking Arduino Shields</title><content type='html'>So what if you need two shields on your Arduino?  Try using wire wrap sockets.  The wire wrap bit will fit into the socket below (snugly), and the socket bit will serve as a socket for the next shield up.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;From Digikey, I picked up two &lt;a href="http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&amp;amp;name=SAM1125-06-ND"&gt;SAM1125-06-ND&lt;/a&gt; (CONN RCPT .100" 6POS TIN WW) and two &lt;a href="http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&amp;amp;name=SAM1125-08-ND"&gt;SAM1125-08-ND&lt;/a&gt; (CONN RCPT .100" 8POS TIN WW) to replace the standard header pins in a SparkFun &lt;a href="http://www.sparkfun.com/commerce/product_info.php?products_id=7914"&gt;Protoshield&lt;/a&gt;.  That is where I will be placing the support circuitry for the "Breath" project.  On top I will have a LadyAda &lt;a href="http://www.ladyada.net/make/eshield/"&gt;Ethernet Shield&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here are the results:&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/mpeg2tom/3137388876/" title="Protoshield with wire wrap sockets by mpeg2tom, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3249/3137388876_0ec192f864_m.jpg" width="240" height="180" alt="Protoshield with wire wrap sockets" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/mpeg2tom/3136561099/" title="Protoshield with wire wrap sockets by mpeg2tom, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3227/3136561099_010473fbff_m.jpg" width="240" height="180" alt="Protoshield with wire wrap sockets" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/mpeg2tom/3137389446/" title="Arduino, Protoshield, and Ethernet shield by mpeg2tom, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3082/3137389446_550ca89aee_m.jpg" width="240" height="180" alt="Arduino, Protoshield, and Ethernet shield" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/mpeg2tom/3137390022/" title="Arduino, Protoshield, and Ethernet shield by mpeg2tom, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3125/3137390022_4f74eeac96_m.jpg" width="240" height="180" alt="Arduino, Protoshield, and Ethernet shield" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-2137885748160961137?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/2137885748160961137/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=2137885748160961137' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/2137885748160961137'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/2137885748160961137'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2008/12/stacking-arduino-shields.html' title='Stacking Arduino Shields'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3249/3137388876_0ec192f864_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-7161287203931095545</id><published>2008-12-15T14:19:00.000-08:00</published><updated>2008-12-15T14:45:41.784-08:00</updated><title type='text'>Anemometer Impellers</title><content type='html'>I saw some &lt;a href="http://nkhome.com/store/product.php?productid=16147"&gt;Kestrel replacement anemometer impellers&lt;/a&gt; for a reasonable price, and thought they might be good for the "input" section of my breath-over-IP project.  PC case fans turn better when "gutted" of their coils, but you still have to blow pretty hard to make them move.  The replacement impellers brought the promise of spinning under exceedingly low air speeds because of their jeweled bearings.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So the good news:  The replacement impellers do spin very easily.  The lightest breeze your mouth can produce will spin them.  Perhaps they are even too sensitive, as just moving the impeller will make the blades move.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The surprise:  They are really small - from left to right is the case fan, the impeller, and a quarter:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/mpeg2tom/3110945671/" title="IMG_0006 by mpeg2tom, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3037/3110945671_5c49e70033_m.jpg" width="240" height="180" alt="IMG_0006" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My &lt;a href="http://www.radioshack.com/product/index.jsp?productId=2049723"&gt;Radio Shack IR emitter/detector pair&lt;/a&gt; were going to be too big &amp;amp; bright for the job, so I went to Fry's and picked up an &lt;a href="http://www.nteinc.com/specs/3000to3099/pdf/nte3029b.pdf"&gt;NTE3029B&lt;/a&gt; IR emitter and the matched &lt;a href="http://www.nteinc.com/specs/3000to3099/pdf/nte3034a.pdf"&gt;NTE3034A&lt;/a&gt; phototransistor.  These devices are small, side-looking devices with integrated lenses and are much more appropriate for the job with the small impeller.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/mpeg2tom/3111775854/" title="IMG_0002 by mpeg2tom, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3208/3111775854_0a6b88ce7a_m.jpg" width="240" height="180" alt="IMG_0002" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here is the Kestrel impeller as a "breath input" using an Arduino and a case fan "breath output":&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/bBP0vdXaGDE&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/bBP0vdXaGDE&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;According to the &lt;a href="http://patft.uspto.gov/netacgi/nph-Parser?Sect1=PTO1&amp;amp;Sect2=HITOFF&amp;amp;d=PALL&amp;amp;p=1&amp;amp;u=%2Fnetahtml%2FPTO%2Fsrchnum.htm&amp;amp;r=1&amp;amp;f=G&amp;amp;l=50&amp;amp;s1=5,939,645.PN.&amp;amp;OS=PN/5,939,645&amp;amp;RS=PN/5,939,645"&gt;Nielsen-Kellerman patent&lt;/a&gt;, there actually is a little magnet in the impeller somewhere which might be able to sensed with the proper sensor.  I am considering getting a Hall Effect sensor and trying it out, but at least I know the IR scheme works.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-7161287203931095545?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/7161287203931095545/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=7161287203931095545' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/7161287203931095545'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/7161287203931095545'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2008/12/anemometer-impellers.html' title='Anemometer Impellers'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3037/3110945671_5c49e70033_t.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-3186452478934837587</id><published>2008-12-10T13:20:00.000-08:00</published><updated>2008-12-10T13:44:27.451-08:00</updated><title type='text'>Opto-interrupters for Breath</title><content type='html'>Recap:  "Breath" is a breath-over-IP &lt;a href="http://phy2phy.wikidot.com/"&gt;phy2phy&lt;/a&gt; system.  You blow on one fan (anemometer, whatever you want to call it), that data is sent over IP to the other side where a fan it turned on to match how strong you are blowing on it.  It was inspired to some extend by Scott Snibbe's &lt;a href="http://snibbe.com/scott/breath/blowup/index.html"&gt;"Blow Up"&lt;/a&gt;.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;At first I thought I'd do a "half-duplex" solution with a single fan being both the anemometer and the powered fan.  Unfortunately, it takes a lot of wind to blow a case fan around.  I discovered that &lt;a href="http://forums.bit-tech.net/showthread.php?t=65936"&gt;if you take the coils out of a fan&lt;/a&gt;, it spins much easier!  Which lead me to a "full-duplex" solution of one gutted fan as an anemometer, and another as the actual fan.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To measure the anemometer, I started out with an &lt;a href="http://www.nteinc.com/specs/3100to3199/pdf/nte3100.pdf"&gt;NTE3100&lt;/a&gt; slot-type opto-interruptor, using a piece of aluminum from a can to slide through the slot:&lt;/div&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/mpeg2tom/3098028067/" title="Using a slot-style opto-interrupter by mpeg2tom, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3250/3098028067_d3ef418aef_m.jpg" width="240" height="180" alt="Using a slot-style opto-interrupter" /&gt;&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This had the advantage that the NTE3100 available at Fry's.  The disadvantage was that the aluminum bit takes up excess space and could get bent.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We all know that Radio Shack isn't what it used to be, but guess what, they still carry &lt;a href="http://www.radioshack.com/product/index.jsp?productId=2049723"&gt;276-142&lt;/a&gt; "Matched IR Emitter and Phototransistor".  So I mocked them up on a breadboard with the Arduino to ensure it was dependably reading over the distance required:&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/mpeg2tom/3098863688/" title="IR Emitter, Detector, and Arduino by mpeg2tom, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3052/3098863688_d9d6b8fa4c_m.jpg" width="240" height="180" alt="IR Emitter, Detector, and Arduino" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/mpeg2tom/3098028635/" title="IR Emitter (looks blue to camera) by mpeg2tom, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3112/3098028635_9427bf97d8_m.jpg" width="240" height="180" alt="IR Emitter (looks blue to camera)" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/mpeg2tom/3098864150/" title="IR Emitter detector pair and fan by mpeg2tom, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3041/3098864150_d5a9555d62_m.jpg" width="240" height="180" alt="IR Emitter detector pair and fan" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Next step:  I need to get another &lt;a href="http://www.nteinc.com/specs/2900to2999/pdf/nte2987.pdf"&gt;NTE2987&lt;/a&gt; (N-ch, logic level FET) from Fry's.  I also need wire wrap sockets from Fry's so that I can stick an Arduino &lt;a href="http://www.sparkfun.com/commerce/product_info.php?products_id=7914"&gt;ProtoShield&lt;/a&gt; in between the Arduino and the &lt;a href="http://www.ladyada.net/make/eshield/"&gt;Ethernet Shield&lt;/a&gt;.  Then just solder it all together and do the software!&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Also I may move up from a gutted fan to a real &lt;a href="http://nkhome.com/store/product.php?productid=16147"&gt;anemometer impeller&lt;/a&gt; (with jewel bearings, etc.)&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-3186452478934837587?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/3186452478934837587/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=3186452478934837587' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/3186452478934837587'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/3186452478934837587'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2008/12/opto-interrupters-for-breath.html' title='Opto-interrupters for Breath'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3250/3098028067_d3ef418aef_t.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-8896502320944595642</id><published>2008-11-23T21:11:00.000-08:00</published><updated>2008-11-23T21:42:18.292-08:00</updated><title type='text'>"Observe" at Art Center College of Design, Pasadena, CA</title><content type='html'>&lt;a href="http://www.artcenter.edu/williamson/"&gt;OBSERVE &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;October 11, 2008 — January 9, 2009&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Alyce de Roulet Williamson Gallery&lt;br /&gt;Art Center College of Design&lt;br /&gt;1700 Lida Street&lt;br /&gt;Pasadena, CA 91103&lt;br /&gt;626.396.2200&lt;br /&gt;&lt;br /&gt;Gallery hours:&lt;br /&gt;Tuesday through Sunday:&lt;br /&gt;12 noon to 5 pm&lt;br /&gt;Friday:&lt;br /&gt;12 noon to 9 pm&lt;br /&gt;&lt;br /&gt;A collaboration between Spitzer Science Center, California Institute of Technology and Alyce de Roulet Williamson Gallery, Art Center College of Design.&lt;br /&gt;&lt;br /&gt;In August 2007 scientists managing the infra-red NASA &lt;a href="http://www.spitzer.caltech.edu/"&gt;Spitzer Space Telescope&lt;/a&gt; began a series of conversations with five contemporary artists.&lt;br /&gt;&lt;br /&gt;Intended to inform the artists' creation of original artworks, the conversations were a port of OBSERVE, a collaboration between Art Center College of Design and California Institute of Technology. Deep space exploration reveals spectacular concepts that torque our everyday understanding of reality -- black hole physics, multiple universes, string theories, time distortions -- and that challenge our human-centered cultural traditions and beliefs.&lt;br /&gt;&lt;br /&gt;OBSERVE commissioned Southern California artists Lita Albuquerque, Lynn Aldrich, Dan Goods, George Legrady, and Daniel Wheeler to engage with Spitzer's knowledge and technology resources, and explore the implications of its discoveries. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-8896502320944595642?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/8896502320944595642/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=8896502320944595642' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/8896502320944595642'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/8896502320944595642'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2008/11/observe-at-art-center-college-of-design.html' title='&quot;Observe&quot; at Art Center College of Design, Pasadena, CA'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-550071649991121345</id><published>2008-11-09T17:12:00.000-08:00</published><updated>2008-11-09T18:10:08.618-08:00</updated><title type='text'>Digital Eyes 2008</title><content type='html'>&lt;a href="http://digitaleyes2008.org/"&gt;Digital Eyes 2008&lt;/a&gt;, New Esthetic Dimensions in Computer Visualization Technology.&lt;br /&gt;&lt;br /&gt;November 6, 2008 – January 18, 2009&lt;br /&gt;&lt;a href="http://www.culturela.org/lamag/Home.html"&gt;Los Angeles Municipal Art Gallery&lt;/a&gt; &lt;a href="http://digitaleyes2008.org/?q=la-municipal-art-gallery"&gt;(map)&lt;/a&gt;&lt;br /&gt;4800 Hollywood Blvd., Los Angeles, CA 90027&lt;br /&gt;&lt;br /&gt;Gallery Hours&lt;br /&gt;Thursday – Sunday, 12 noon - 5 pm&lt;br /&gt;(First Friday of the month, 12 noon – 9 pm)&lt;br /&gt;(323) 644-6269&lt;div&gt;&lt;br /&gt;DigitalEyes 2008 – 2009 is a mind-bending overview of new esthetic dimensions in computer visualization technology. The exhibition exists in both the real and virtual worlds, representing innovative and spectacular work by artists from artists from twenty-five countries, including Argentina, Austria, Australia, Belgium, Canada, China, Croatia, France, Germany, Hungary, India, Ireland, Israel, Japan, Latvia, Mexico, New Zealand, Poland, Romania, South Korea, Spain, Switzerland, Ukraine, United Kingdom, and USA.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-550071649991121345?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/550071649991121345/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=550071649991121345' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/550071649991121345'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/550071649991121345'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2008/11/digital-eyes-2008.html' title='Digital Eyes 2008'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-180043232709100788</id><published>2008-09-16T04:15:00.000-07:00</published><updated>2008-09-23T22:25:55.288-07:00</updated><title type='text'>Dorkbot SoCal Sept. 27</title><content type='html'>&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Dorkbot SoCal 31 - "Nerd Droid", univac, Mack&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://www.dorkbot.org/dorkbotsocal"&gt;http://www.dorkbot.org/dorkbotsocal&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Saturday, September 27, 2008&lt;br /&gt;1:00pm&lt;br /&gt;Machine Project&lt;br /&gt;1200 D North Alvarado Street&lt;br /&gt;Los Angeles, CA 90026&lt;br /&gt;free!&lt;br /&gt;&lt;br /&gt;Dorkbot SoCal is the LA chapter of the global technological arts ogranization whose motto is "people doing strange things with electricity!"&lt;br /&gt;&lt;br /&gt;Presenters:&lt;br /&gt;&lt;br /&gt;"Nerd Droid" (Jerrold Ridenour &amp;amp; Anthony Magnetta)&lt;br /&gt;&lt;a href="http://myspace.com/nerddroid"&gt;http://myspace.com/nerddroid&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.dorkbot.org/dorkbotsocal/img/nerd_droid.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px;" src="http://www.dorkbot.org/dorkbotsocal/img/nerd_droid.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Instrument bending and video glitching VJ duo&lt;br /&gt;&lt;br /&gt;Tom Koch (univac)&lt;br /&gt;&lt;a href="http://techdweeb.com/"&gt;http://techdweeb.com&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.dorkbot.org/dorkbotsocal/img/univac_cell.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px;" src="http://www.dorkbot.org/dorkbotsocal/img/univac_cell.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;div&gt;Musical Gadgets&lt;br /&gt;&lt;br /&gt;Kevin Mack&lt;br /&gt;&lt;a href="http://www.kevinmackart.com/"&gt;http://www.kevinmackart.com/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://dorkbot.org/dorkbotsocal/img/mack_painting.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px;" src="http://dorkbot.org/dorkbotsocal/img/mack_painting.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;Mathematical Abstract 3D Art&lt;br /&gt;&lt;br /&gt;More info at:&lt;br /&gt;http://dorkbot.org/dorkbotsocal&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-180043232709100788?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/180043232709100788/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=180043232709100788' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/180043232709100788'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/180043232709100788'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2008/09/dorkbot-socal-sept-27.html' title='Dorkbot SoCal Sept. 27'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-234763858705294686</id><published>2008-09-04T11:37:00.000-07:00</published><updated>2008-09-04T12:05:12.524-07:00</updated><title type='text'>XLST and Namespace Pain</title><content type='html'>OK, imagine you have this XML:&lt;br /&gt;&lt;br /&gt;&amp;lt;?xml version = "1.0" encoding = "ISO-8859-1"?&amp;gt;&lt;br /&gt;&amp;lt;alert xmlns = "urn:oasis:names:tc:emergency:cap:1.1"&amp;gt;&lt;br /&gt;   &amp;lt;info&amp;gt;&lt;br /&gt;      &amp;lt;category&amp;gt;Met&amp;lt;/category&amp;gt;&lt;br /&gt;   &amp;lt;/info&amp;gt;&lt;br /&gt;&amp;lt;alert&amp;gt;&lt;br /&gt;&lt;br /&gt;How do you refer to the "category" tag in XPath for XSLT, as it is in the "urn:oasis:names..." namespace?&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Ignore the namespace, and do something like:  &lt;br /&gt;&lt;br /&gt;&amp;lt;xsl:apply-templates select ="//*[local-name()='category']" /&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Define the namespace in the stylesheet tag and use the full path:&lt;br /&gt;&lt;br /&gt;&amp;lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:cap = "urn:oasis:names:tc:emergency:cap:1.1"&amp;gt;&lt;br /&gt;...&lt;br /&gt;&amp;lt;xsl:apply-templates select ="cap:alert/cap:info/cap:category" /&amp;gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Or define the namespace and use a simplified path:&lt;br /&gt;&lt;br /&gt;&amp;lt;xsl:apply-templates select ="//cap:category" /&amp;gt&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;br /&gt;It took me a&lt;span style="font-weight:bold;"&gt; long time&lt;/span&gt; to work this out....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-234763858705294686?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/234763858705294686/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=234763858705294686' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/234763858705294686'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/234763858705294686'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2008/09/xlst-and-namespace-pain.html' title='XLST and Namespace Pain'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-7664994444786103144</id><published>2008-08-28T10:25:00.000-07:00</published><updated>2008-08-28T10:37:18.915-07:00</updated><title type='text'>Cool iPhone apps</title><content type='html'>This is barely art related, but I have three new favorite iPhone apps.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;OliveToast &lt;a href="http://www.olivetoast.com/Files/"&gt;files&lt;/a&gt; is awesome.  It allows you to send files over WiFi (I often use an Ad-Hoc network) to the iPhone, and then you can read them (PDF, Word, JPEG, etc.) along with the ability to bookmark where you are in the files.  I am going to use this to learn &lt;a href="http://en.wikipedia.org/wiki/Objective-C"&gt;Objective C&lt;/a&gt; from the Apple PDF book so I can program the iPhone. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you are musical, you will like &lt;a href="http://www.intua.net/"&gt;BeatMaker&lt;/a&gt; sampler/sequencer from Intua.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And for those who miss HP calculators, try &lt;a href="http://www.pcalc.com/iphone/index.html"&gt;PCalc&lt;/a&gt; for iPhone.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-7664994444786103144?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/7664994444786103144/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=7664994444786103144' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/7664994444786103144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/7664994444786103144'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2008/08/cool-iphone-apps.html' title='Cool iPhone apps'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-3196465835589258644</id><published>2008-07-09T09:29:00.000-07:00</published><updated>2008-07-09T09:49:25.831-07:00</updated><title type='text'>LA Tech Art Events for July</title><content type='html'>&lt;a href="http://www.machineproject.com/2008/05/29/jumper/"&gt;Midnight Thursday July 10th to midnight Friday July 11th&lt;/a&gt;&lt;br /&gt;&lt;div&gt;Machine Project (in Echo Park) will be projecting a continuous live broadcast which tracks the sun around the Earth, with help from a very large circle of camera-ready friends and volunteers worldwide. A participant in every time zone points their computer camera to the sky between 11:30am and 12:30pm, with one timezone handing off to the next, feeding back “mid-day” to Machine Project via live video for 24 hours. Have you always been curious what it is like to stare directly at the sun from places like Tonga, Estonia, Texas, Iran or the Polar ice cap in Greenland? This is your chance to find out.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;div&gt;July 17, 2008 8PM &lt;/div&gt;&lt;a href="http://www.steveallentheater.com/resbox"&gt;ResBox&lt;/a&gt; @ STEVE ALLEN THEATER at the Center For Inquiry - West, 4773 Hollywood Blvd.&lt;br /&gt;&lt;br /&gt;A monthly event featuring the world's best experimental music, curated&lt;br /&gt;by musician and filmmaker Hans Fjellestad.&lt;br /&gt;&lt;br /&gt;This month: &lt;a href="http://profile.myspace.com/index.cfm?fuseaction=user.viewprofile&amp;amp;friendid=52408227"&gt;EZRA BUCHLA&lt;/a&gt;, &lt;a href="http://www.youtube.com/watch?v=2WBaPk0EKEY"&gt;TREASURE MAMMAL&lt;/a&gt;, &lt;a href="http://www.jasonrobinson.com/"&gt;JASON ROBINSON&lt;/a&gt; &amp;amp; &lt;a href="http://www.youtube.com/watch?v=bmcc-U7dgmo"&gt;DJ TENSHUN&lt;/a&gt;, &lt;a href="http://www.tektonicshift.com/kadet_main.htm"&gt;KADET KUHNE&lt;/a&gt; and the resident audio visualist &lt;a href="http://www.youtube.com/vjfader"&gt;VJ FADER&lt;/a&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;July 19 7PM - 7AM &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.smgov.net/smarts/glow/"&gt;GLOW on the beach in Santa Monica:&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;"Glow will fill the hours between dusk to dawn with compelling, enchanting and effervescent sights and sounds situated in spaces and times that expand possibilities for where, how and when the public experiences contemporary art."&lt;br /&gt;&lt;br /&gt;Artists will include &lt;a href="http://www.haque.co.uk/)"&gt;Usman Haque&lt;/a&gt; (who did the 1000 helium balloons with radio controlled LEDs inside for the 2006 Signapore Biennale.  Also there will be &lt;a href="http://www.messymix.com/"&gt;Shih Chieh Huang&lt;/a&gt; who will be creating a "Neptunian lair" along the pedestrian path under the Santa Monica Pier.&lt;br /&gt;&lt;br /&gt;Machine Project also says &lt;a href="http://machineproject.com/glow"&gt;they will be presenting&lt;/a&gt; at GLOW as well.&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;July 26 1PM @ Machine Project&lt;/div&gt;&lt;div&gt;&lt;a href="http://dorkbot.org/dorkbotsocal/"&gt;Dorkbot Socal&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.roborealm.com/"&gt;Steven Gentner&lt;/a&gt;  will be speaking about a robot project built using RoboRealm, a powerful free computer vision based application for use in machine vision, image analysis, and image processing systems.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.unsound.com/"&gt;Gil Kuno&lt;/a&gt;  whose sonic artwork displace natural activity from its context, revealing an otherwise hidden level of metaphorical absurdity within the ordinary patterns present before our eyes.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://brettdoar.kingvolcano.com/"&gt;Brett Doar&lt;/a&gt; a "paratechnologist" who creates "idiosyncratic electro-mechanical creatures out of inappropriate materials."&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-3196465835589258644?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/3196465835589258644/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=3196465835589258644' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/3196465835589258644'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/3196465835589258644'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2008/07/la-tech-art-events.html' title='LA Tech Art Events for July'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-1633585586018666174</id><published>2008-05-28T22:08:00.000-07:00</published><updated>2008-05-29T12:04:37.397-07:00</updated><title type='text'>Breath Progress</title><content type='html'>Here is the Arduino BBB connected with the Adafruit Ethernet shield:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/mpeg2tom/2533269974/" title="Arduino BBB and Ethernet Shield by mpeg2tom, on Flickr"&gt;&lt;img src="http://farm3.static.flickr.com/2386/2533269974_3d2bbbefca_m.jpg" width="240" height="170" alt="Arduino BBB and Ethernet Shield" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;One important issue if you get the Adafruit Ethernet shield, it will be much more useful if you have an Arduino with an ATmega168, since then it can use the &lt;a href="http://www.ladyada.net/make/eshield/download.html"&gt;AF SoftSerial&lt;/a&gt; library.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You see, the ATmega only has one hardware serial port, and you are generally busy using that to upload programs and monitor Arduino operation during testing.  Lady Ada has put together a software serial library that doesn't suck (unlike the standard Arduino software serial library), but it depends on having an ATmega168 rather than an ATmega8.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you have an old Arduino (like the NG), you can pick up a &lt;a href="http://www.adafruit.com/index.php?main_page=product_info&amp;amp;cPath=17&amp;amp;products_id=56"&gt;pre-programmed ATmega168&lt;/a&gt; from Adafruit to swap for your old ATmega8.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here is my simplified version of a Lady Ada Xport example, creating a general "httpget" example.  And yes, it works!&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;#include "AFSoftSerial.h"&lt;br /&gt;#include "AF_XPort.h"&lt;br /&gt;#include &lt;avr/io.h&gt;&lt;/span&gt;&lt;a include=""&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;string.h&gt;&lt;/string.h&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a include=""&gt;&lt;string.h&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;#include &lt;stirng.h&gt;&lt;br /&gt;&lt;br /&gt;char linebuffer[256];&lt;br /&gt;int lines = 0;&lt;br /&gt;&lt;br /&gt;#define XPORT_RXPIN 2&lt;br /&gt;#define XPORT_TXPIN 3&lt;br /&gt;#define XPORT_RESETPIN 4&lt;br /&gt;#define XPORT_DTRPIN 0  // I'm not using DTR&lt;br /&gt;#define XPORT_CTSPIN 6&lt;br /&gt;#define XPORT_RTSPIN 7&lt;br /&gt;&lt;br /&gt;AF_XPort xport = AF_XPort(XPORT_RXPIN, XPORT_TXPIN, XPORT_RESETPIN, XPORT_DTRPIN, XPORT_RTSPIN, XPORT_CTSPIN);&lt;br /&gt;&lt;br /&gt;uint8_t errno,ret;&lt;br /&gt;uint32_t laststatus = 0, currstatus = 0;&lt;br /&gt;&lt;br /&gt;void setup()  {&lt;br /&gt;&lt;br /&gt;Serial.begin(57600);&lt;br /&gt;xport.begin(9600);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void loop()                 &lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ret = httpget("64.233.183.104",80,"www.google.com","/"); &lt;br /&gt;&lt;br /&gt;if (ret)&lt;br /&gt;  Serial.println("get successful");&lt;br /&gt;else&lt;br /&gt;  Serial.println("not successful");&lt;br /&gt;delay(10000);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;uint8_t httpget(char *ipaddr,&lt;br /&gt;             int port,&lt;br /&gt;             char *hostname,&lt;br /&gt;             char *httppath) {&lt;br /&gt;uint8_t ret;&lt;br /&gt;uint8_t success = 0;&lt;br /&gt;&lt;br /&gt;ret = xport.reset();&lt;br /&gt;Serial.print("Ret: "); Serial.print(ret, HEX);&lt;br /&gt;&lt;br /&gt;switch (ret) {&lt;br /&gt;case  ERROR_TIMEDOUT: {&lt;br /&gt;   Serial.println("Timed out on reset!");&lt;br /&gt;   return 0;&lt;br /&gt;}&lt;br /&gt;case ERROR_BADRESP:  {&lt;br /&gt;   Serial.println("Bad response on reset!");&lt;br /&gt;   return 0;&lt;br /&gt;}&lt;br /&gt;case ERROR_NONE: {&lt;br /&gt; Serial.println("Reset OK!");&lt;br /&gt; break;&lt;br /&gt;}&lt;br /&gt;default:&lt;br /&gt;  Serial.println("Unknown error");&lt;br /&gt;  return 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;// time to connect...&lt;br /&gt;&lt;br /&gt;ret = xport.connect(ipaddr, port);&lt;br /&gt; switch (ret) {&lt;br /&gt;case  ERROR_TIMEDOUT: {&lt;br /&gt;   Serial.println("Timed out on connect");&lt;br /&gt;   return 0;&lt;br /&gt;}&lt;br /&gt;case ERROR_BADRESP:  {&lt;br /&gt;   Serial.println("Failed to connect");&lt;br /&gt;   return 0;&lt;br /&gt;}&lt;br /&gt;case ERROR_NONE: {&lt;br /&gt;  Serial.println("Connected..."); break;&lt;br /&gt;}&lt;br /&gt;default:&lt;br /&gt;  Serial.println("Unknown error");&lt;br /&gt;  return 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;xport.print("GET ");&lt;br /&gt;xport.print(httppath);&lt;br /&gt;xport.println(" HTTP/1.1");&lt;br /&gt;xport.print("Host: "); xport.println(hostname);&lt;br /&gt;xport.println("");&lt;br /&gt;&lt;br /&gt;success=0;&lt;br /&gt;while (1) {&lt;br /&gt; // read one line from the xport at a time&lt;br /&gt; ret = xport.readline_timeout(linebuffer, 255, 3000); // 3s timeout&lt;br /&gt; // if we're using flow control, we can actually dump the line at the same time!&lt;br /&gt; Serial.println(linebuffer);&lt;br /&gt; if (strstr(linebuffer, "HTTP/1.1 200 OK") == linebuffer)&lt;br /&gt;      success = 1;&lt;br /&gt;&lt;br /&gt; if (errno == ERROR_TIMEDOUT)&lt;br /&gt;   Serial.println("ERROR_TIMEDOUT");&lt;br /&gt;&lt;br /&gt; if (xport.disconnected())&lt;br /&gt;   Serial.println("xport.disconnected");&lt;br /&gt;&lt;br /&gt; if (((errno == ERROR_TIMEDOUT) &amp;amp;&amp;amp; xport.disconnected()) ||&lt;br /&gt;     ((XPORT_DTRPIN == 0) &amp;amp;&amp;amp;&lt;br /&gt;      (linebuffer[0] == 'D') &amp;amp;&amp;amp; (linebuffer[1] == 0)))  {&lt;br /&gt;    Serial.println("\nDisconnected...");&lt;br /&gt;    return success;&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/string.h&gt;&lt;/a&gt;&lt;/div&gt;&lt;a include=""&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-1633585586018666174?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/1633585586018666174/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=1633585586018666174' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/1633585586018666174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/1633585586018666174'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2008/05/breath-progress.html' title='Breath Progress'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm3.static.flickr.com/2386/2533269974_3d2bbbefca_t.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-5158119219509974466</id><published>2008-05-11T19:04:00.000-07:00</published><updated>2008-05-12T09:38:05.891-07:00</updated><title type='text'>BBB for Breath-to-Breath</title><content type='html'>I am working on a breath-to-breath &lt;a href="http://phy2phy.wikidot.com/"&gt;phy2phy&lt;/a&gt; project.  I already had one Arduino NG around, so I purchased an Adafruit &lt;a href="http://www.ladyada.net/make/eshield/"&gt;Ethernet Shield&lt;/a&gt;, and also a Modern Device &lt;a href="http://moderndevice.com/index.shtml"&gt;Bare-Bones Board&lt;/a&gt; Arduino clone with a USB-to-TTL serial cable.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/mpeg2tom/2483840431/" title="&amp;quot;Arduino&amp;quot; Bare-Bones Board by mpeg2tom, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3003/2483840431_c67d92176d_m.jpg" width="240" height="180" alt="&amp;quot;Arduino&amp;quot; Bare-Bones Board" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The BBB board had a couple of holes that were still filled with solder, so I had to solder wick them and then heat up a little piece of lead snipped from a resistor and used the soldering iron to heat up the lead and push through the solder-filled holes to open them up.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/mpeg2tom/2484651382/" title="BBB versus Arduino by mpeg2tom, on Flickr"&gt;&lt;img src="http://farm3.static.flickr.com/2233/2484651382_a608f00047_m.jpg" width="240" height="180" alt="BBB versus Arduino" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Just to be clear, standard Arduino shields do not fit on the Bare-Bones Board (so I probably should have purchased a &lt;a href="http://moderndevice.com/RBBB_revB.shtml"&gt;Really Bare-Bones Board&lt;/a&gt;), but you can always hook it up with wires.&lt;br /&gt;&lt;br /&gt;I am developing for the Arduino and BBB on a MacBook using the USB to TTL serial cable fro FDTI.  Make sure you follow the &lt;a href="http://www.arduino.cc/en/Guide/MacOSX"&gt;OS X instructions&lt;/a&gt; on how to install the FDTI drivers.  These will allow you to use either a USB cable to a Arduino or the FDTI USB to TTL cable for the BBB/RBBB.  Also make sure you choose the correct ATMEGA chip from the Arduino software menu.  And since there isn't much indication that the BBB works (unlike the flashing LEDs on the Arduino), so try a serial example on the BBB to convince yourself that you are uploading and running a program.  &lt;br /&gt;&lt;br /&gt;Here is the Ethernet shield on an Arduino NG:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/mpeg2tom/2484662824/" title="Xport Shield on Arduino by mpeg2tom, on Flickr"&gt;&lt;img src="http://farm3.static.flickr.com/2348/2484662824_4dfb9f09b0_m.jpg" width="240" height="180" alt="Xport Shield on Arduino" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I am awaiting two Xport directs in the post, then I can really get to business.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-5158119219509974466?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/5158119219509974466/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=5158119219509974466' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/5158119219509974466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/5158119219509974466'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2008/05/bbb-for-breath-to-breath.html' title='BBB for Breath-to-Breath'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3003/2483840431_c67d92176d_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-426568017293548958</id><published>2008-04-08T16:41:00.000-07:00</published><updated>2008-04-08T16:52:53.061-07:00</updated><title type='text'>2,300 mile touch over IP</title><content type='html'>On Saturday, I guest hosted &amp;amp; presented at &lt;a href="http://dorkbot.org/dorkbotsocal/"&gt;Dorkbot SoCal&lt;/a&gt;.  Along with Damon Seeley who showed off some super projects by &lt;a href="http://electroland.net/"&gt;Electroland&lt;/a&gt; (including live video from their &lt;a href="http://electroland.net/projects/targetbreezeway/"&gt;Target Breezeway&lt;/a&gt; in Rockefeller Center), &lt;a href="http://giladlotan.com/"&gt;Gilad Lotan&lt;/a&gt; who showed some of his projects including the heartbeat-sharing &lt;a href="http://giladlotan.com/projects/impulse.htm"&gt;imPulse&lt;/a&gt;, and a discussion of the &lt;a href="http://www.makewayracing.com/"&gt;Make:Way entry to the 24 Hours of LeMons race&lt;/a&gt;, I demoed touching someone 2,300 miles away over IP.  &lt;a href="http://welchwrite.com/blog/"&gt;Douglas Welch&lt;/a&gt; shot and edited this great video of the demo:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;object type="application/x-shockwave-flash" data="http://blip.tv/scripts/flash/showplayer.swf?enablejs=true&amp;amp;feedurl=http%3A%2F%2Fdouglaswelch%2Eblip%2Etv%2Frss%2Fflash&amp;amp;file=http%3A%2F%2Fblip%2Etv%2Frss%2Fflash%2F812560&amp;amp;brandlink=http%3A%2F%2Fblip%2Etv%2F%3Futm%5Fsource%3Dbrandlink&amp;amp;brandname=blip%2Etv&amp;amp;showplayerpath=http%3A%2F%2Fblip%2Etv%2Fscripts%2Fflash%2Fshowplayer%2Eswf" width="400" height="255" allowfullscreen="true" id="showplayer"&gt;&lt;param name="movie" value="http://blip.tv/scripts/flash/showplayer.swf?enablejs=true&amp;amp;feedurl=http%3A%2F%2Fdouglaswelch%2Eblip%2Etv%2Frss%2Fflash&amp;amp;file=http%3A%2F%2Fblip%2Etv%2Frss%2Fflash%2F812560&amp;amp;brandlink=http%3A%2F%2Fblip%2Etv%2F%3Futm%5Fsource%3Dbrandlink&amp;amp;brandname=blip%2Etv&amp;amp;showplayerpath=http%3A%2F%2Fblip%2Etv%2Fscripts%2Fflash%2Fshowplayer%2Eswf"&gt;&lt;param name="quality" value="best"&gt;&lt;embed src="http://blip.tv/scripts/flash/showplayer.swf?enablejs=true&amp;amp;feedurl=http%3A%2F%2Fdouglaswelch%2Eblip%2Etv%2Frss%2Fflash&amp;amp;file=http%3A%2F%2Fblip%2Etv%2Frss%2Fflash%2F812560&amp;amp;brandlink=http%3A%2F%2Fblip%2Etv%2F%3Futm%5Fsource%3Dbrandlink&amp;amp;brandname=blip%2Etv&amp;amp;showplayerpath=http%3A%2F%2Fblip%2Etv%2Fscripts%2Fflash%2Fshowplayer%2Eswf" quality="best" width="400" height="255" name="showplayer" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-426568017293548958?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/426568017293548958/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=426568017293548958' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/426568017293548958'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/426568017293548958'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2008/04/2300-mile-touch-over-ip.html' title='2,300 mile touch over IP'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-8507861864794082887</id><published>2008-01-31T16:00:00.000-08:00</published><updated>2008-02-02T14:29:09.280-08:00</updated><title type='text'>First "real" PCB</title><content type='html'>Back in high school, I made some PCBs using resist pens and etching the copper, but nothing very serious.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I decided it was finally time to try using the free &lt;a href="http://www.cadsoft.de/"&gt;Eagle&lt;/a&gt; design tool along with &lt;a href="http://www.batchpcb.com/"&gt;BatchPCB.com&lt;/a&gt; service to make a PCB.  My issue was that the wonderfully cheap &lt;a href="http://www.lantronix.com/device-networking/embedded-device-servers/xport-direct.html"&gt;Lantronix Xport Direct&lt;/a&gt; uses 0.2mm spaced pins which are a pain to interface to.  So I figured this would be a good opportunity to design a PCB with a 3.3V power supply and the Xport broken out to 0.1" spaced standard headers.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/82207382@N00/2223518185/" title="pcb_design by mpeg2tom, on Flickr"&gt;&lt;img src="http://farm3.static.flickr.com/2041/2223518185_0ee8d2096d.jpg" alt="pcb_design" height="255" width="500" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/82207382@N00/2221851463/" title="Xport PCB by mpeg2tom, on Flickr"&gt;&lt;img src="http://farm3.static.flickr.com/2134/2221851463_e1801c8b32.jpg" alt="Xport PCB" height="375" width="500" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/82207382@N00/2221851735/" title="Xport PCB by mpeg2tom, on Flickr"&gt;&lt;img src="http://farm3.static.flickr.com/2391/2221851735_024c4f01c6.jpg" alt="Xport PCB" height="375" width="500" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;The boards took about 3 weeks from submission to delivery (which was over New Year's so it might be faster for you), and cost $24.60.  For that price you get two boards (this was a 3.8 sq. inch design).&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/82207382@N00/2215464233/" title="my_populated_board by mpeg2tom, on Flickr"&gt;&lt;img src="http://farm3.static.flickr.com/2277/2215464233_d0f47f0623.jpg" alt="my_populated_board" height="375" width="500" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So I populated the board and hooked everything up, and it appeared to work fine...until I started smelling something burning.  I powered down, and after a short reference of the &lt;a href="http://lwww.ece.uidaho.edu/ee/classes/ECE341/datasheets/LM1117.pdf"&gt;LM1117&lt;/a&gt; documentation, I realized even though the regulator is only providing 200mA to the Xport, with a 9V supply the regulator needs to dissipate ~1.2W, which multiplied by the thermal resistance of the SOT-223 to ambient of 136 degrees C per Watt, means the regulator is warming up 163C above room temp, about 183C.  OK, that is a little hot!  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;Max junction temperature is 125C, so if room temp is 20C, I can get by with 100C rise which for 1.2W implies a heatsink with a thermal resistance of ~80C/W, which means 0.3-0.5 sq. inch of heatsink (two wings larger than the size of the actual chip).  Anyway, next time I'm doing at least a TO-252 or just go TO-220 with the ability to add an external heatsink if needed.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;For the short term, I think I can jury-rig an external heatsink, but the lesson has been learned for my next design:  an Ethernet-enabled &lt;a href="http://www.freeduino.org/freeduino_open_designs.html"&gt;Freeduino&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Here is a link to my &lt;a href="http://www.t11s.com/Lantronix-Xport-Direct.lbr"&gt;Eagle library for the Lantronix Xport Direct.&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-8507861864794082887?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/8507861864794082887/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=8507861864794082887' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/8507861864794082887'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/8507861864794082887'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2008/01/first-real-pcb.html' title='First &quot;real&quot; PCB'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm3.static.flickr.com/2041/2223518185_0ee8d2096d_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-5820038893558319532</id><published>2008-01-31T14:39:00.000-08:00</published><updated>2008-01-31T14:44:50.830-08:00</updated><title type='text'>If you need a PC fast in LA...</title><content type='html'>Here is my suggestion if you need a PC fast in LA:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://pcclub.com"&gt;PC Club&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-5820038893558319532?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/5820038893558319532/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=5820038893558319532' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/5820038893558319532'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/5820038893558319532'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2008/01/if-you-need-pc-fast-in-la.html' title='If you need a PC fast in LA...'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-7402574912227229106</id><published>2007-12-02T15:21:00.001-08:00</published><updated>2007-12-02T16:36:49.509-08:00</updated><title type='text'>Move and SymbioticA</title><content type='html'>I recently moved to Los Angeles, so last night I hit &lt;a href="http://www.machineproject.com/"&gt;Machine Project&lt;/a&gt;  to go see Oron Catts &amp;amp; IonatZurr of &lt;a href="http://www.symbiotica.uwa.edu.au/"&gt;SymbioticA&lt;/a&gt; speak about tissue culture art.  Definitely cool stuff!&lt;br /&gt;&lt;br /&gt;iTunesU has a neat video about creating art-games, go to the iTunes store and search for&lt;br /&gt;"joe mckay finding balance".&lt;br /&gt;&lt;br /&gt;More info here:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://hci.stanford.edu/cs547/abstracts/06-07/061006-niemeyer.html"&gt;http://hci.stanford.edu/cs547/abstracts/06-07/061006-niemeyer.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You can also check out &lt;a href="http://homepage.mac.com/joester5/art/index.html"&gt;Joe McKay's website.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-7402574912227229106?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/7402574912227229106/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=7402574912227229106' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/7402574912227229106'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/7402574912227229106'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2007/12/move-and-symbiotica.html' title='Move and SymbioticA'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-4298173904839274544</id><published>2007-09-09T13:24:00.000-07:00</published><updated>2007-09-09T13:26:00.471-07:00</updated><title type='text'>Dorkbot DC Meeting September 10, 2007</title><content type='html'>&lt;a href="http://www.dorkbot.org/dorkbotdc"&gt;Dorkbot DC&lt;/a&gt; is a monthly meeting of artists (sound/image/movement/etc.), designers, engineers, students and others in the DC area who are interested in electronic art (in the broadest sense of the term.)&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;Next Meeting:&lt;/b&gt;&lt;/p&gt; &lt;p&gt;&lt;b&gt;Monday, September 10, 2007&lt;/b&gt;&lt;br /&gt;&lt;b&gt;7 PM - 9 PM (ET)&lt;/b&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.koshlandscience.org/visitor/dandp.jsp" target="_new"&gt;Marian Koshland Science Museum of the National Academy of Sciences&lt;/a&gt;&lt;br /&gt;6th and E Streets, NW&lt;br /&gt;Washington, DC 20001&lt;br /&gt;&lt;/p&gt; &lt;a href="http://www.t11s.com/dorkbotdc/dorkbotdc_sept_meeting.pdf"&gt;(PDF Meeting Flyer/Poster)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Presentations will include...&lt;/h2&gt; &lt;p&gt;&lt;img src="http://www.t11s.com/dorkbotdc/picnicmob.jpg" align="left" /&gt;&lt;b&gt;Conrad Barski: &lt;/b&gt;&lt;a href="http://www.picnicmob.org/" target="_new"&gt;PicnicMob.Org&lt;/a&gt;&lt;/p&gt; &lt;p&gt;PicnicMob is a concept to create "flash mob" picnics in parks of major U.S. cities, but it assigns each participant to a location in the park so that they are near other participants with similar interests (calculated using simulated annealing).&lt;/p&gt; &lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;img src="http://www.t11s.com/touch_my_finger_h.jpg" align="right" /&gt;&lt;a href="http://www.t11s.com/" target="_new"&gt;&lt;b&gt;Thomas Edwards:&lt;/b&gt;&lt;/a&gt; &lt;a href="http://phy2phy.wikidot.com/touch" target="_new"&gt;"Touch"&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Mechatronic and robotic artist Thomas Edwards will present his work "Touch" which allows two individuals to physically touch each other over the Internet.  During the meeting, Edwards will demonstrate touching fingers between Washington, DC, and Toronto, Canada. &lt;/p&gt; On the other side will be &lt;a href="http://beige-box.org/" target="_new"&gt;Liav Koren&lt;/a&gt; at  the University of Toronto's &lt;a href="http://www.ald.utoronto.ca/" target="_new"&gt;Faculty of Architecture, Landscape and Design.&lt;/a&gt;  "Touch" is part of the &lt;a href="http://phy2phy.wikidot.com/" target="_new"&gt;Phy2Phy&lt;/a&gt; project to link physical artworks over IP. &lt;br /&gt; &lt;p&gt;&lt;img src="http://www.t11s.com/dorkbotdc/pkohn_looking.jpg" align="left" /&gt;&lt;b&gt;Philip Kohn&lt;/b&gt;&lt;/p&gt; &lt;p&gt;Philip Kohn will lead a tour through &lt;a href="http://www.youtube.com/watch?v=tVVeThERbLY" target="_new"&gt;"The Looking Glass"&lt;/a&gt; , an evolving interactive video piece that encourages participants to move about in silly ways by rewarding them with cool effects when they do. &lt;/p&gt;&lt;p&gt; He'll reveal plans for a new (hopefully!) commissioned collaboration with ceramicist &lt;a href="http://novietrump.com/" target="_new"&gt;Novie Trump&lt;/a&gt;  called "Through the Hedge" which will create an artificial real-time jungle including magical creatures that do things to you when you touch them.   It will attempt to blend and bring life a large ceramic mural with an embedded huge LCD flat screen.  &lt;/p&gt;&lt;p&gt; If he gets it together, he may also debut a new piece called "Feeling Lucky" which crawls along the web as a stream of consciousness in pictures using Google image and Google search. &lt;/p&gt;&lt;p&gt; For desert, he will offer "Pastry", a recent piece that shows organic layers of texture that come out of the screen, &lt;a href="http://www.mobilemag.com/content/100/334/C2020" target="_new"&gt;without the need for 3D glasses&lt;/a&gt;. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-4298173904839274544?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/4298173904839274544/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=4298173904839274544' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/4298173904839274544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/4298173904839274544'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2007/09/dorkbot-dc-meeting-september-10-2007.html' title='Dorkbot DC Meeting September 10, 2007'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-6802639696409234626</id><published>2007-09-01T14:56:00.000-07:00</published><updated>2007-09-01T17:09:46.652-07:00</updated><title type='text'>Real Life to Second Life</title><content type='html'>I'm investigating having &lt;a href="http://www.t11s.com/touch.html"&gt;"Touch"&lt;/a&gt; bridge between the physical world and Second Life.&lt;br /&gt;&lt;br /&gt;There are a couple of mechanisms for objects in SL to talk to the outside world.  Andy Fundinger has a summary of the three mechanisms &lt;a href="http://channel3b.wordpress.com/2007/02/16/slrl-interfaces-an-overview/"&gt;here&lt;/a&gt;.  The one that makes the most sense for "Touch" is probably having the object do HTTP requests to the outside world using &lt;a href="http://www.lsleditor.org/examples/sources/HTTPRequest.htm"&gt;llHTTPRequest&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-6802639696409234626?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/6802639696409234626/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=6802639696409234626' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/6802639696409234626'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/6802639696409234626'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2007/09/real-life-to-second-life.html' title='Real Life to Second Life'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-7753549950080872660</id><published>2007-08-31T20:03:00.001-07:00</published><updated>2007-08-31T20:18:14.767-07:00</updated><title type='text'>Touching distance</title><content type='html'>It turns out a more accurate translation of the last bit of the Make:Japan blog entry about touch is:&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;From Translator: As far as I can tell from the video, it looks ordinary.  However, reading this explanation, it sounds  innovative.  I wonder how I can use this for what, though. I can't think of any idea for it, from this mediocre brain....&lt;/blockquote&gt;I was thinking that when I "touch" between DC and Toronto, it won't just be 356 miles between the two cities, but actually the "touch" signals will go between DC and Sunnyvale, CA (where the server is, 2429 miles away) and then to Toronto (2262 miles away), for a total of  4691 miles.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-7753549950080872660?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/7753549950080872660/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=7753549950080872660' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/7753549950080872660'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/7753549950080872660'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2007/08/touching-distance.html' title='Touching distance'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-1775488614023793681</id><published>2007-08-29T20:34:00.000-07:00</published><updated>2007-08-29T20:52:30.433-07:00</updated><title type='text'>Big in Japan</title><content type='html'>"Touch" was on the MAKE:Japan blog today, link &lt;a href="http://jp.makezine.com/blog/2007/08/physical_interactions_ove.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Google language tools translate:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Perhaps Thomas Edwards of the friend who serves [aruhuagiku] with Dorkbot DC that (the other technical field artist includes) started wiki of new project. The name is, Phy2Phy, in addition name " the physical interaction on IP (physical interaction) “. The video of YouTube which is introduced here has become up-to-date report of that " touch " project. The pressure perception register was used, it is the system that 2 humans it is touched mutually via the net. Here cool hard is used the large quantity. The Comfile CUBLOC CB220 microprocessor and the Pololu micro serial servo controller, it is Lantronix Xport and the pressure sensor etc. As for all details and link, there is the page of Touch Project of Phy2Phy. Thomas is the expectation which announces halfway lapse with Dorkbot DC September 10th.&lt;br /&gt;&lt;br /&gt;From translator: If you looked at video, but with plainness when explanation is read, you can think enormously in epoch-making ones, don't you think?. Whether so being able to utilize in something. At the point where the ordinary person it is sad for such idea not to emerge, .......&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-1775488614023793681?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/1775488614023793681/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=1775488614023793681' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/1775488614023793681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/1775488614023793681'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2007/08/big-in-japan.html' title='Big in Japan'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-1809200590587321537</id><published>2007-08-23T08:53:00.000-07:00</published><updated>2007-08-23T09:01:24.537-07:00</updated><title type='text'>Interesting Thesis</title><content type='html'>&lt;a href="http://cms.mit.edu/research/theses/KarenVerschooren2007.pdf"&gt;.art - Situating Internet Art in the Traditional Institution for Contemporary Art&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;(Karen A. Verschooren - MIT)&lt;br /&gt;&lt;blockquote&gt;This thesis provides a critical analysis of the relation between Internet art and the traditional institution for contemporary art in the North American and West-European regions.  Thirteen years after its inception as an art form, the Internet art world finds itself in a developmental stage and its relation to the traditional institution for contemporary art is accordingly.  Through an elaborate discussion of the key players, institutions and discourses on aesthetics, economics and exhibition methodologies, this sociological analysis of the past and current situation hopes to offer a solid ground for extrapolation and predictions for Internet art’s future as an art world in its relation to the traditional art institutions.&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-1809200590587321537?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/1809200590587321537/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=1809200590587321537' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/1809200590587321537'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/1809200590587321537'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2007/08/interesting-thesis.html' title='Interesting Thesis'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16875966.post-670760365315611518</id><published>2007-08-21T08:29:00.000-07:00</published><updated>2007-08-21T08:56:04.733-07:00</updated><title type='text'>Washington Post mention</title><content type='html'>Some of my work got a mention in the &lt;a href="http://www.washingtonpost.com/wp-dyn/content/discussion/2007/08/01/DI2007080101547.html"&gt;Washington Post "Weekend Now" chat&lt;/a&gt; for August 3, 2007:&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;b&gt;Washington, D.C.:&lt;/b&gt; I read in the Post about the great success of Tom Greaves's street installation "The Compliment Machine," which dishes out compliments to people as they walk by.&lt;/p&gt;&lt;p&gt;Then I read online about an Artomatic artist who had a similar machine called "Sycophant" a few years earlier but had very little notice.&lt;/p&gt;&lt;p&gt;Mr. O'Sullivan: Do you recall the Artomatic machine? Are they similar?&lt;/p&gt;&lt;p&gt;&lt;b&gt;washingtonpost.com:&lt;/b&gt; &lt;a href="http://www.washingtonpost.com/wp-dyn/content/article/2007/07/20/AR2007072002123.html" target=""&gt;The Art of Gratuitous Praise&lt;/a&gt; ( &lt;i&gt;Post, July 21&lt;/i&gt;)&lt;/p&gt;&lt;p&gt;&lt;b&gt;Michael O'Sullivan:&lt;/b&gt; I do remember "Sycophant" quite well. It was similar to the "Compliment Machine" in that they both dole out compliments, but "Sycophant," by Thomas Edwards, an artist who organizes DC's Dorbot meetings of tech/art people, was not just an impersonal box, but a robotic human head. It was rather hilarious, as I recall, saying things like, "You look really hot" and "I love your sweater."&lt;/p&gt;&lt;p&gt;...&lt;/p&gt;&lt;p&gt;&lt;b&gt;Was Sycophant:&lt;/b&gt; the one next to the talking fish?&lt;/p&gt;&lt;p&gt;&lt;b&gt;Michael O'Sullivan:&lt;/b&gt; Yes! That was the one. The fish--an altered version of one of the Big Mouth Billy Bass novelties--shouted out things like: "They're eating my eggs!" By the way, you can find more about the monthly DC Dorbot meetings (where art and tech collide) at http://www.dorkbot.org/dorkbotdc/.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;Links:  &lt;a href="http://www.t11s.com/sycophant.html"&gt;Sycophant&lt;/a&gt;, &lt;a href="http://www.t11s.com/fishpain.html"&gt;School of Fish Pain&lt;/a&gt;, &lt;a href="http://www.dorkbot.org/dorkbotdc/"&gt;Dorkbot DC&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16875966-670760365315611518?l=techartblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techartblog.blogspot.com/feeds/670760365315611518/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16875966&amp;postID=670760365315611518' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/670760365315611518'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16875966/posts/default/670760365315611518'/><link rel='alternate' type='text/html' href='http://techartblog.blogspot.com/2007/08/washington-post-mention.html' title='Washington Post mention'/><author><name>t11s</name><uri>http://www.blogger.com/profile/08011978834331908728</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
