<?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-7377057412446264720</id><updated>2012-01-26T08:03:47.581-08:00</updated><category term='RelaySquid'/><category term='Arduino'/><category term='Illuminato X Machina'/><category term='Arduino TouchShield Code'/><category term='Linux'/><category term='Music'/><category term='Arduino GPS Datalogging'/><category term='Project'/><category term='Aardvark'/><category term='Lights'/><category term='Parts Supplies Sensors Current'/><category term='open source hardware economics'/><category term='Antipasto IDE'/><category term='Arduino IDE'/><title type='text'>Antipasto Hardware Blog</title><subtitle type='html'>Open Source Hardware at Liquidware</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://antipastohw.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://antipastohw.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default?start-index=101&amp;max-results=100'/><author><name>Matt</name><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>369</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7377057412446264720.post-405491177881340042</id><published>2011-11-17T17:46:00.000-08:00</published><updated>2011-11-17T18:08:19.530-08:00</updated><title type='text'>Android Hardware Development Environment</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.liquidware.com/shop/show/BB-AND-HDE/Android+Hardware+Development+Environment"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 319px;" src="http://4.bp.blogspot.com/-DmtHSZu_JwA/TsW5nloCnDI/AAAAAAAAB_Y/kRAm6_AxG3Y/s320/android_hde.png" alt="" id="BLOGGER_PHOTO_ID_5676146995136470066" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;My favorite part of the &lt;a href="http://www.liquidware.com/shop/show/BB-AND-HDE/Android+Hardware+Development+Environment"&gt;Android Hardware Development Environment&lt;/a&gt; is that I can easily connect to a &lt;a href="http://antipastohw.pbworks.com/w/page/41729078/How-to%20use%20a%20serial%20port%20with%20Android%2C%20Liquidware%20Ambrosia%20edition"&gt;serial port&lt;/a&gt;/ use the USB host capabilities with Android.  When I'm done with my project I typically burn my custom image of Android to a microSD card so I can reuse my operating system!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7377057412446264720-405491177881340042?l=antipastohw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antipastohw.blogspot.com/feeds/405491177881340042/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7377057412446264720&amp;postID=405491177881340042' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/405491177881340042'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/405491177881340042'/><link rel='alternate' type='text/html' href='http://antipastohw.blogspot.com/2011/11/android-hardware-development.html' title='Android Hardware Development Environment'/><author><name>Mike Gionfriddo</name><uri>http://www.blogger.com/profile/00088046538094789826</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/-DmtHSZu_JwA/TsW5nloCnDI/AAAAAAAAB_Y/kRAm6_AxG3Y/s72-c/android_hde.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7377057412446264720.post-6384047313172694351</id><published>2011-06-08T09:37:00.001-07:00</published><updated>2011-06-08T09:37:14.990-07:00</updated><title type='text'>Maker Faire 2011– Bay Area Recap</title><content type='html'>&lt;p&gt;Each year, I head out to &lt;a href="http://makerfaire.com/"&gt;Maker Faire&lt;/a&gt;, thinking I’ve seen it all, but I know that can’t be true. And year after year…well, I haven’t been disappointed yet! Besides enjoying some quality time in the gorgeous California sun, we managed to get our project demos up and running for the event.&lt;/p&gt;  &lt;p&gt;Here’s the booth, with Will and Francis doing some final setup work on the projects.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-VoZbDz20x78/Te-kxgBKrmI/AAAAAAAAA3s/Hvk48smaSLE/s1600-h/Testing-the-Projects12.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Testing the Projects" border="0" alt="Testing the Projects" src="http://lh5.ggpht.com/-zH7RpnjG_YY/Te-kx-JaPRI/AAAAAAAAA3w/FGYSoWEuMLs/Testing-the-Projects_thumb9.jpg?imgmax=800" width="450" height="338" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Of course, it wouldn’t be Maker Faire without &lt;a href="http://gerardspaella.com/"&gt;Gerard’s Paella&lt;/a&gt;, which also makes for a great excuse to meet and mingle with some fellow makers:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-zqY7m51CDtY/Te-k7IlG28I/AAAAAAAAA30/zFAu7y2Z6Sc/s1600-h/Paella5.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="Paella" border="0" alt="Paella" src="http://lh5.ggpht.com/-UmvcvxtiTyY/Te-k_0QyHWI/AAAAAAAAA34/bKlIkDM4Qjo/Paella_thumb2.jpg?imgmax=800" width="450" height="338" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;By Saturday, we had a chance to deck out the booth with the RC “street view” car, affectionately named Zippy :)&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Zippy with a Camera" border="0" alt="Zippy with a Camera" src="http://lh6.ggpht.com/-UuCnMnhgAb0/TeV5i4K9ARI/AAAAAAAAAA8/RcxBTASNAbg/Zippy%252520with%252520a%252520Camera_thumb%25255B4%25255D.jpg?imgmax=800" width="450" height="338" /&gt;&lt;/p&gt;  &lt;p&gt;The car had a PS3 Eye camera strapped on to stream video out onto the BeagleBoard and BeagleTouch, which was something I only dreamed of doing as a kid. DIY tech has come a long way since!&lt;/p&gt;  &lt;p&gt;Speaking of DIY (and open source) tech, it’s pretty neat to see that the Arduino hasn’t lost any steam. Google put together an Android &lt;a href="http://developer.android.com/guide/topics/usb/adk.html"&gt;Accessory Development Kit&lt;/a&gt; that they were giving out.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-Biuy9ttV-Qg/Te-lCPNyzXI/AAAAAAAAA38/NVmGrYVpA8Y/s1600-h/Google%252520Android%252520Accessory%252520Development%252520Kit%252520Box%25255B5%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="Google Android Accessory Development Kit Box" border="0" alt="Google Android Accessory Development Kit Box" src="http://lh3.ggpht.com/-jS48WUG7rIc/Te-lCjh9g9I/AAAAAAAAA4A/0UGRt1eZutM/Google%252520Android%252520Accessory%252520Development%252520Kit%252520Box_thumb%25255B2%25255D.jpg?imgmax=800" width="450" height="270" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;It comes with an &lt;a href="http://www.liquidware.com/shop/show/AMEGA2560/Arduino+Mega+2560"&gt;Arduino Mega&lt;/a&gt;-based board with an onboard USB host and USB OTG port, and the Accessory Demo Shield (bottom). The Accessory Demo Shield is especially neat…it’s like the ultimate controller/debugger shield, all in one. Buttons, relays, servo connectors, joystick and even a touch sensor! It puts a whole new spin on the kinds of &lt;a href="http://antipastohw.blogspot.com/2010_06_01_archive.html"&gt;Android/Beagle/Arduino&lt;/a&gt; projects I want to do…&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-PjACxDI7L2g/Te-lDVWtY5I/AAAAAAAAA4E/9I3qwl_IG9I/s1600-h/Google%252520Android%252520Accessory%252520Development%252520Kit%25255B3%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px auto; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top: 0px; border-right: 0px; padding-top: 0px" title="Google Android Accessory Development Kit" border="0" alt="Google Android Accessory Development Kit" src="http://lh3.ggpht.com/-6a366FiG-U0/Te-lDrVlKeI/AAAAAAAAA4I/C_PVqOVuLL4/Google%252520Android%252520Accessory%252520Development%252520Kit_thumb.jpg?imgmax=800" width="450" height="269" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Microchip and Digilent came out with a PIC32 that &lt;a href="http://coewww.rutgers.edu/~msproul/"&gt;Mark&lt;/a&gt; shared with me. Pretty cool, since I can now drive all sorts of &lt;a href="http://www.liquidware.com/category/Modules"&gt;Arduino shields&lt;/a&gt; with a PIC controller…&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-1-Rhx8j9JuY/Te-lEMRmo8I/AAAAAAAAA4M/WKRc1e3gC-U/s1600-h/Pic32%252520Uno%25255B2%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px auto; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top: 0px; border-right: 0px; padding-top: 0px" title="Pic32 Uno" border="0" alt="Pic32 Uno" src="http://lh6.ggpht.com/-2CpifD6Ck8M/Te-lEd650EI/AAAAAAAAA4Q/Ud1G1fUnSDY/Pic32%252520Uno_thumb.jpg?imgmax=800" width="450" height="269" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-6CU4iUQQCfU/Te-lEywP1PI/AAAAAAAAA4U/vxY9kq5BxuQ/s1600-h/Pic32%252520Mega%25255B2%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px auto; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top: 0px; border-right: 0px; padding-top: 0px" title="Pic32 Mega" border="0" alt="Pic32 Mega" src="http://lh6.ggpht.com/-7gH5fk5zknw/Te-lFN1-S5I/AAAAAAAAA4Y/gMrT1NNyh4E/Pic32%252520Mega_thumb.jpg?imgmax=800" width="450" height="269" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Back at the booth, Will, Francis and I met a lot of hackers who stopped by to play around with the projects.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-_rArzUzjzOQ/Te-lFa2rjAI/AAAAAAAAA4c/yqhw-GCHpJQ/s1600-h/Android%252520Demo%25255B4%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px auto; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top: 0px; border-right: 0px; padding-top: 0px" title="Android Demo" border="0" alt="Android Demo" src="http://lh5.ggpht.com/-hVrXCD8NUGs/Te-lFwAqu1I/AAAAAAAAA4g/tCgbfeHOSZ4/Android%252520Demo_thumb%25255B1%25255D.jpg?imgmax=800" width="450" height="338" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-hatfbT8IK20/Te-lGMoivjI/AAAAAAAAA4k/zPCGBrGIKFg/s1600-h/Francis%25255B6%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px auto; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top: 0px; border-right: 0px; padding-top: 0px" title="Francis" border="0" alt="Francis" src="http://lh6.ggpht.com/-BrpzK_WupLM/Te-lGn3Y51I/AAAAAAAAA4o/-4lPeVpH2kY/Francis_thumb%25255B3%25255D.jpg?imgmax=800" width="450" height="338" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Each of us had a few moments to sneak away from the booth (in shifts) to wander through the Faire and check out what everyone else was up to.&lt;/p&gt;  &lt;p&gt;I think this was the best country stage ever…the front porch if an old Western house.&lt;/p&gt;                  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-XvMO1FKln78/Te-lJFT00nI/AAAAAAAAA4s/ZcXPw-v2Qlo/s1600-h/CIMG6630%252520%252528Large%252529%25255B3%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px auto; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top: 0px; border-right: 0px; padding-top: 0px" title="CIMG6630 (Large)" border="0" alt="CIMG6630 (Large)" src="http://lh4.ggpht.com/-6UPqxgSs7RI/Te-lJd2Tj8I/AAAAAAAAA4w/TbcEqxLjKcY/CIMG6630%252520%252528Large%252529_thumb.jpg?imgmax=800" width="450" height="338" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;A little steampunk and futuristic in a video-game kinda way, there’s nothing that stops you in your tracks like a robot sculpture that shoots fire. All I could say was…wow!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-rpMudcsmcsY/Te-lJ_dC6VI/AAAAAAAAA40/WTcTJ0wN320/s1600-h/Robot%252520that%252520Shoots%252520out%252520Fire%25255B3%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px auto; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top: 0px; border-right: 0px; padding-top: 0px" title="Robot that Shoots out Fire" border="0" alt="Robot that Shoots out Fire" src="http://lh6.ggpht.com/-gcqKXZluEwE/Te-lKELy7iI/AAAAAAAAA44/S1jSwU4qYYU/Robot%252520that%252520Shoots%252520out%252520Fire_thumb.jpg?imgmax=800" width="450" height="338" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;And the most efficient four-wheeler ever- a new take on the tandem bike. I would love to have one of these, and maybe even mount an enclosure on this. I wonder what a cross-country road trip on this human powered car would be like. Probably fun and a great exercise :)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-YuTOgMAYhfc/Te-lKi362jI/AAAAAAAAA48/CIo8-oKAZ0U/s1600-h/Most%252520Fuel%252520Efficient%252520Four%252520Wheeler%25255B3%25255D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px auto; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top: 0px; border-right: 0px; padding-top: 0px" title="Most Fuel Efficient Four Wheeler" border="0" alt="Most Fuel Efficient Four Wheeler" src="http://lh5.ggpht.com/-q6MVjbbfUQ0/Te-lOcAsrRI/AAAAAAAAA5A/JiB2TO7sOBo/Most%252520Fuel%252520Efficient%252520Four%252520Wheeler_thumb.jpg?imgmax=800" width="450" height="338" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;That’s all I pulled off the camera for now, and I’ll upload more pictures to Flickr when I get them. Thanks again to all the makers and hackers who stopped by, and I’ll be on the edge of my seat waiting for the next Maker Faire!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7377057412446264720-6384047313172694351?l=antipastohw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antipastohw.blogspot.com/feeds/6384047313172694351/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7377057412446264720&amp;postID=6384047313172694351' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/6384047313172694351'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/6384047313172694351'/><link rel='alternate' type='text/html' href='http://antipastohw.blogspot.com/2011/06/maker-faire-2011-bay-area-recap.html' title='Maker Faire 2011– Bay Area Recap'/><author><name>Matt</name><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://lh5.ggpht.com/-zH7RpnjG_YY/Te-kx-JaPRI/AAAAAAAAA3w/FGYSoWEuMLs/s72-c/Testing-the-Projects_thumb9.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7377057412446264720.post-7985231448769156264</id><published>2011-05-19T17:54:00.001-07:00</published><updated>2011-05-19T17:54:25.685-07:00</updated><title type='text'>I’m off to Maker Faire (2011 Edition)!</title><content type='html'>&lt;p&gt;It’s that time of the year again! Some folks call in summer – I call it &lt;a href="http://www.makerfaire.com/"&gt;Maker Faire&lt;/a&gt;. So next week, I’m packing up a few of my favorite new projects, and hopefully show off something interesting at my table out in San Mateo.&lt;/p&gt;  &lt;p&gt;&lt;img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://cdn.makezine.com/make/makerfaire/bayarea/2011/banners/MF11_BA_Ad_Make_300x250_Green.gif" /&gt;&lt;/p&gt;  &lt;p&gt;One thing I’m really excited about is the stuff I’ve been hacking around with in Android. I always felt like &lt;a href="http://www.liquidware.com/category/Android"&gt;Android&lt;/a&gt; was one of those hardcore engineering things, but I’ve been able to get it to work with the &lt;a href="http://www.liquidware.com/shop/show/BB-C4/BeagleBoard+C4"&gt;BeagleBoard&lt;/a&gt; and &lt;a href="http://www.liquidware.com/shop/show/BB-BT/BeagleTouch"&gt;BeagleTouch&lt;/a&gt; to do some pretty fun stuff.&lt;/p&gt;  &lt;p&gt;Last week, Will, and I were sitting in the lab playing around with the old RC car and some of Playstation cameras we had from a project last year. Will always thought it would be cool if we could control the car without having to follow it around, so we gave it a whirl. Loading up the car with a couple hacked PlayStation 3 cameras, Will was able to drive the car around the house without leaving the room.&lt;/p&gt;  &lt;p&gt;By hooking up the PS3 camera to the car, Will and I were able to bring up the camera to the &lt;a href="http://www.liquidware.com/shop/show/BB-BT/BeagleTouch"&gt;BeagleTouch&lt;/a&gt; and see exactly what the &lt;a href="http://antipastohw.blogspot.com/2010/03/making-of-gravitational-rc-driving-by.html"&gt;RC car&lt;/a&gt; was seeing. I’ve always wondered what it would be like to be driven around on a little RC car (think Honey I Shrunk The Kids :) and this is just about the closest I’ll get.&amp;#160; &lt;img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://moviesiwannasee.files.wordpress.com/2010/10/honey-i-shrunk-the-kids.jpg" width="242" height="339" /&gt;Using the same hack, I hooked up four PS3 cameras to the around my desk to make a “BeagleBoard Security System”, complete with split-screens and everything. It made me feel like a security guard/command-center operator of sorts, and plus, no one could sneak up on me.&lt;/p&gt;  &lt;p&gt;Not to say I’ve forgotten all about the Arduino - I’ve also been playing around with a low power, portable, WiFi/GPS/Arduino rig with the &lt;a href="http://www.liquidware.com/shop/show/SEN-GEO/GeoShield"&gt;GeoShield&lt;/a&gt;, which I’m going to test out at Maker Faire Exhibition Hall when I get there.&lt;/p&gt;  &lt;p&gt;I had some spare time on my hands the past couple weekends, and some cooler gear to play with, so there’s plenty more projects I’ll have to show off. I’ll be there the whole time, and would love to say hi to some fellow West Coast hackers…see you there!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7377057412446264720-7985231448769156264?l=antipastohw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antipastohw.blogspot.com/feeds/7985231448769156264/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7377057412446264720&amp;postID=7985231448769156264' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/7985231448769156264'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/7985231448769156264'/><link rel='alternate' type='text/html' href='http://antipastohw.blogspot.com/2011/05/im-off-to-maker-faire-2011-edition.html' title='I’m off to Maker Faire (2011 Edition)!'/><author><name>Matt</name><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-7377057412446264720.post-7582656693972867611</id><published>2011-02-16T09:09:00.000-08:00</published><updated>2011-02-16T10:46:03.727-08:00</updated><title type='text'>Android Platform Distribution</title><content type='html'>Thanks for all the emails and feedback over the last couple months on the &lt;a href="http://www.liquidware.com/shop/show/BB-AND-DEV1/Android+Hardware+Development+Kit"&gt;Android Hardware Development kit&lt;/a&gt;, we're very excited to be using this advanced hardware platform. In fact, Matt has been busy hacking into nearly all our devices around the office that have exposed serial. Interestingly, &lt;span style="font-style: italic;"&gt;Droid Does&lt;/span&gt; talk to quad CMOS sensor arrays to stream live video, but more on that later.&lt;br /&gt;&lt;br /&gt;One of the common questions asked was: which version of Android does the Android Hardware Development Kit ship with?&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-2spnxSr9WEY/TVwTQP3pXgI/AAAAAAAAAP0/ArO9rk3kjuM/s1600/Liquidware-Android-Hardware-Development-Kit.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 360px;" src="http://4.bp.blogspot.com/-2spnxSr9WEY/TVwTQP3pXgI/AAAAAAAAAP0/ArO9rk3kjuM/s400/Liquidware-Android-Hardware-Development-Kit.jpg" alt="" id="BLOGGER_PHOTO_ID_5574351608636595714" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The answer surprisingly turns out to be the in-line with the second most popular version on the market today, 2.1. This is great news because it shows a nexus of stable devices focused around Android 2.1 and 2.2 versions. This creates a stable base to upgrade from as the bleeding edge releases become more robust through aggressive software patch-work.&lt;br /&gt;&lt;br /&gt;&lt;h3 id="Current"&gt;Current Distribution&lt;/h3&gt;The following pie chart and table is based on the number of Android devices that have accessed Android Market within a 14-day period ending on the data collection date noted below.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;img alt="" src="http://chart.apis.google.com/chart?&amp;amp;cht=p&amp;amp;chs=460x250&amp;amp;chd=t:3.9,6.3,31.4,57.6,0.8&amp;amp;chl=Android%201.5%7CAndroid%201.6%7CAndroid%202.1%7CAndroid%202.2%7CAndroid%202.3&amp;amp;chco=c4df9b,6fad0c" height="250" width="460" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;table style="width: 300px; border: medium none; height: 100px; border-collapse: collapse; text-align: left; margin-left: auto; margin-right: auto;" width="" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center; background-color: rgb(220, 220, 220); color: rgb(0, 0, 0); height: 10px; vertical-align: middle; letter-spacing: 0pt; word-spacing: 0pt; width: 100px; border: medium none;"&gt;Platform&lt;br /&gt;&lt;/td&gt;&lt;td style="text-align: center; background-color: rgb(220, 220, 220); color: rgb(0, 0, 0); height: 10px; vertical-align: middle; letter-spacing: 0pt; word-spacing: 0pt; width: 100px; border: medium none;"&gt;API Level&lt;br /&gt;&lt;/td&gt;&lt;td style="text-align: center; background-color: rgb(220, 220, 220); color: rgb(0, 0, 0); height: 10px; vertical-align: middle; letter-spacing: 0pt; word-spacing: 0pt; width: 100px; border: medium none;"&gt;Distribution&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="text-align: center; background-color: rgb(255, 255, 255); color: rgb(0, 0, 0); height: 10px; vertical-align: middle; letter-spacing: 0pt; word-spacing: 0pt; width: 100px; border: medium none;"&gt;Android 1.5&lt;br /&gt;&lt;/td&gt;&lt;td style="text-align: center; background-color: rgb(255, 255, 255); color: rgb(0, 0, 0); height: 10px; vertical-align: middle; letter-spacing: 0pt; word-spacing: 0pt; width: 100px; border: medium none;"&gt;3&lt;br /&gt;&lt;/td&gt;&lt;td style="text-align: center; background-color: rgb(255, 255, 255); color: rgb(0, 0, 0); height: 10px; vertical-align: middle; letter-spacing: 0pt; word-spacing: 0pt; width: 100px; border: medium none;"&gt;3.9%&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="text-align: center; background-color: rgb(255, 255, 255); color: rgb(0, 0, 0); height: 10px; vertical-align: middle; letter-spacing: 0pt; word-spacing: 0pt; width: 100px; border: medium none;"&gt;Android 1.6&lt;br /&gt;&lt;/td&gt;&lt;td style="text-align: center; background-color: rgb(255, 255, 255); color: rgb(0, 0, 0); height: 10px; vertical-align: middle; letter-spacing: 0pt; word-spacing: 0pt; width: 100px; border: medium none;"&gt;4&lt;br /&gt;&lt;/td&gt;&lt;td style="text-align: center; background-color: rgb(255, 255, 255); color: rgb(0, 0, 0); height: 10px; vertical-align: middle; letter-spacing: 0pt; word-spacing: 0pt; width: 100px; border: medium none;"&gt;6.3%&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="text-align: center; background-color: rgb(255, 255, 255); color: rgb(0, 0, 0); height: 10px; vertical-align: middle; letter-spacing: 0pt; word-spacing: 0pt; width: 100px; border: medium none;"&gt;Android 2.1&lt;br /&gt;&lt;/td&gt;&lt;td style="text-align: center; background-color: rgb(255, 255, 255); color: rgb(0, 0, 0); height: 10px; vertical-align: middle; letter-spacing: 0pt; word-spacing: 0pt; width: 100px; border: medium none;"&gt;7&lt;br /&gt;&lt;/td&gt;&lt;td style="text-align: center; background-color: rgb(255, 255, 255); color: rgb(0, 0, 0); height: 10px; vertical-align: middle; letter-spacing: 0pt; word-spacing: 0pt; width: 100px; border: medium none;"&gt;31.4%&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="text-align: center; background-color: rgb(255, 255, 255); color: rgb(0, 0, 0); height: 10px; vertical-align: middle; letter-spacing: 0pt; word-spacing: 0pt; width: 100px; border: medium none;"&gt;Android 2.2&lt;br /&gt;&lt;/td&gt;&lt;td style="text-align: center; background-color: rgb(255, 255, 255); color: rgb(0, 0, 0); height: 10px; vertical-align: middle; letter-spacing: 0pt; word-spacing: 0pt; width: 100px; border: medium none;"&gt;8&lt;br /&gt;&lt;/td&gt;&lt;td style="text-align: center; background-color: rgb(255, 255, 255); color: rgb(0, 0, 0); height: 10px; vertical-align: middle; letter-spacing: 0pt; word-spacing: 0pt; width: 100px; border: medium none;"&gt;57.6%&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="text-align: center; background-color: rgb(255, 255, 255); color: rgb(0, 0, 0); height: 10px; vertical-align: middle; letter-spacing: 0pt; word-spacing: 0pt; width: 100px; border: medium none;"&gt;Android 2.3&lt;br /&gt;&lt;/td&gt;&lt;td style="text-align: center; background-color: rgb(255, 255, 255); color: rgb(0, 0, 0); height: 10px; vertical-align: middle; letter-spacing: 0pt; word-spacing: 0pt; width: 100px; border: medium none;"&gt;9&lt;br /&gt;&lt;/td&gt;&lt;td style="text-align: center; background-color: rgb(255, 255, 255); color: rgb(0, 0, 0); height: 10px; vertical-align: middle; letter-spacing: 0pt; word-spacing: 0pt; width: 100px; border: medium none;"&gt;0.8%&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;em&gt;Data collected during two weeks ending on February 2, 2011&lt;/em&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-style: italic;"&gt;From &lt;a href="http://developer.android.com/resources/dashboard/platform-versions.html"&gt;developer.android.com&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7377057412446264720-7582656693972867611?l=antipastohw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antipastohw.blogspot.com/feeds/7582656693972867611/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7377057412446264720&amp;postID=7582656693972867611' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/7582656693972867611'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/7582656693972867611'/><link rel='alternate' type='text/html' href='http://antipastohw.blogspot.com/2011/02/android-platform-distribution.html' title='Android Platform Distribution'/><author><name>Chris</name><uri>http://www.blogger.com/profile/12772971512697373580</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/-2spnxSr9WEY/TVwTQP3pXgI/AAAAAAAAAP0/ArO9rk3kjuM/s72-c/Liquidware-Android-Hardware-Development-Kit.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7377057412446264720.post-2403666595628303535</id><published>2010-12-31T23:59:00.000-08:00</published><updated>2010-12-31T23:59:01.237-08:00</updated><title type='text'>Happy Antipasto New Year!</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Happy Open Source Hardware New Year!!!&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Queue Lion King's theme song, &lt;a href="http://www.youtube.com/watch?v=vX07j9SDFcc"&gt;the Circle of Life music&lt;/a&gt;... Elton John begins... rewind 15 years ago, I am a teenage boy living in Connecticut (&lt;a href="http://www.greenwichcountryclub.org/"&gt;not in the ritzy South-eastern part of CT&lt;/a&gt;, the farmlandish central/middle part). My parents both worked very late, so a family friend used to pick me up from school, and on the weekends, and teach and tutor me in mathematics in my spare time. Little did she know, many moons later, I would still find mathematics exciting, and constantly trying to apply it to my hardware hacking endeavors :-)&lt;/div&gt;&lt;br /&gt;I'm home as I type this, and the irony is... my family friend sent a plate of antipasti for the holidays, and New Years. I couldn't help myself, I immediately placed the plate on top of my laptop, popped open the Liquidware website, and voila! Real &lt;a href="http://en.wikipedia.org/wiki/Antipasto"&gt;antipasto&lt;/a&gt; meets &lt;a href="http://antipastohw.blogspot.com/"&gt;Liquidware Antipasto Hardware Blog&lt;/a&gt; - the circle of life completes!&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_pGsJFsc5Buc/TRaYo-2zSBI/AAAAAAAAA3c/-JQVm5EU8EU/s1600/Liquidware+Antipasto+New+Year.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://3.bp.blogspot.com/_pGsJFsc5Buc/TRaYo-2zSBI/AAAAAAAAA3c/-JQVm5EU8EU/s320/Liquidware+Antipasto+New+Year.JPG" width="320" /&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Delizioso!&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_pGsJFsc5Buc/TRaYkNpFGJI/AAAAAAAAA3Y/1O37yTkdKI8/s1600/Happy+Antipasto+New+Year.JPG" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://4.bp.blogspot.com/_pGsJFsc5Buc/TRaYkNpFGJI/AAAAAAAAA3Y/1O37yTkdKI8/s320/Happy+Antipasto+New+Year.JPG" width="320" /&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;The keen observer will notice the Java books on the right, and especially the &lt;a href="http://clojure.org/"&gt;Clojure&lt;/a&gt; &lt;a href="http://www.amazon.com/Programming-Clojure-Pragmatic-Programmers-Halloway/dp/1934356336"&gt;book&lt;/a&gt; :-) I try to learn at least one new programming language during every holiday vacation - this time, it's clojure... &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7377057412446264720-2403666595628303535?l=antipastohw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antipastohw.blogspot.com/feeds/2403666595628303535/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7377057412446264720&amp;postID=2403666595628303535' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/2403666595628303535'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/2403666595628303535'/><link rel='alternate' type='text/html' href='http://antipastohw.blogspot.com/2010/12/happy-antipasto-new-year.html' title='Happy Antipasto New Year!'/><author><name>Matt</name><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://3.bp.blogspot.com/_pGsJFsc5Buc/TRaYo-2zSBI/AAAAAAAAA3c/-JQVm5EU8EU/s72-c/Liquidware+Antipasto+New+Year.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7377057412446264720.post-8570097945005253029</id><published>2010-12-31T16:57:00.000-08:00</published><updated>2010-12-31T16:57:00.851-08:00</updated><title type='text'>Introducing Antipasto Hardware Wiki</title><content type='html'>Over the past two months, Chris, Will, Nick, and I have stealthily upgraded and migrated all of the Liquidware wiki content over to a new wiki... the &lt;a href="http://antipastohw.pbworks.com/w/page/26554120/FrontPage"&gt;Antipasto Hardware Wiki&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I decided it was finally time to upgrade the wiki to a higher end system, and using pbwiki seemed like a pretty decent choice. It'll still take some time to finish the migration, but until then, the benefits are quite nice - the new wiki has a lot more features than the original &lt;a href="http://www.liquidware.com/wikipages/1"&gt;Liquidware Wiki&lt;/a&gt; (which technically was an upgrade from the formerly-original wiki, over at the www.liquidware.org site, which doesn't even exist any more).&lt;br /&gt;&lt;br /&gt;Not a big deal, but thanks for all the help - and hopefully this will help address all those emails about folks wanting more help finding reference specs and documents for &lt;a href="http://www.liquidware.com/"&gt;Liquidware hardware&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_pGsJFsc5Buc/TRaWvJOBHEI/AAAAAAAAA3U/2n1oIlUXw8E/s1600/Front+Page+Antipasto+HW+Wiki.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="232" src="http://1.bp.blogspot.com/_pGsJFsc5Buc/TRaWvJOBHEI/AAAAAAAAA3U/2n1oIlUXw8E/s400/Front+Page+Antipasto+HW+Wiki.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Cheers!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7377057412446264720-8570097945005253029?l=antipastohw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antipastohw.blogspot.com/feeds/8570097945005253029/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7377057412446264720&amp;postID=8570097945005253029' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/8570097945005253029'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/8570097945005253029'/><link rel='alternate' type='text/html' href='http://antipastohw.blogspot.com/2010/12/introducing-antipasto-hardware-wiki.html' title='Introducing Antipasto Hardware Wiki'/><author><name>Matt</name><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://1.bp.blogspot.com/_pGsJFsc5Buc/TRaWvJOBHEI/AAAAAAAAA3U/2n1oIlUXw8E/s72-c/Front+Page+Antipasto+HW+Wiki.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7377057412446264720.post-3903736901883872852</id><published>2010-12-29T14:38:00.000-08:00</published><updated>2010-12-29T14:38:00.151-08:00</updated><title type='text'>Writing Hello World on the Android with Eclipse</title><content type='html'>&lt;i&gt;I've gotten several dozen (!) emails in the past few days from DIY'ers, engineers, hackers, etc. asking for a very simple tutorial - a "hello world android" if you will. It then occurred to me that most of these emails are from people that just got an &lt;a href="http://www.liquidware.com/shop"&gt;Android kit &lt;/a&gt;for Christmas (thanks to all the help from Matt and Will and Mike to get everything out the door in time).&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;So here goes. These instructions are summarized over at &lt;a href="http://antipastohw.pbworks.com/w/page/34044723/Install-Eclipse-with-Android-plugins"&gt;the wiki on this page&lt;/a&gt;.&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_pGsJFsc5Buc/TRaNSGyloKI/AAAAAAAAA3A/iIr5hrjCzII/s1600/Android+Hello+World+Antipasto+Hardware+Wiki.jpg" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="266" src="http://4.bp.blogspot.com/_pGsJFsc5Buc/TRaNSGyloKI/AAAAAAAAA3A/iIr5hrjCzII/s320/Android+Hello+World+Antipasto+Hardware+Wiki.jpg" width="320" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Step 1: Install Eclipse&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;Download Eclipse Galileo-SR2 for&amp;nbsp;&lt;a href="http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/galileo/SR2/eclipse-jee-galileo-SR2-macosx-cocoa.tar.gz"&gt;Mac OS X-32bit&lt;/a&gt;&amp;nbsp;&amp;nbsp;or Windows-32bit&amp;nbsp;or Linux-Ubuntu-32bit, and install it to the desktop or some location inside Documents.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Step 2: Install the Android SDK&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;This is the trickiest step... Download A&lt;span style="font-family: 'Lucida Grande';"&gt;ndroid&amp;nbsp;SDK&amp;nbsp;Tools for&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: 'Lucida Grande';"&gt;&lt;a href="https://github.com/downloads/liquidware/liquidware_beagleboard_android/android-sdk-2.1_r1-macosx.zip"&gt;Mac&amp;nbsp;OS X-32bit&lt;/a&gt;&amp;nbsp;or Windows-32bit or Linux-Ubuntu-32bit, and extract the archive into the &lt;/span&gt;&lt;span style="font-family: 'Lucida Grande';"&gt;&lt;span style="font-family: 'Segoe UI','Lucida Grande',Arial; line-height: 19px;"&gt;&lt;span style="font-family: 'Lucida Grande';"&gt;/eclipse/plugins folder. Open Eclipse, &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;select &lt;strong&gt;Help&lt;/strong&gt; &amp;gt; &lt;strong&gt;Install New Software... &lt;/strong&gt;Click &lt;strong&gt;Add&lt;/strong&gt;, in the top-right corner.When the Add Repository dialog that appears, enter the following:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Name:&lt;/strong&gt; ADT Plugin&lt;em&gt;&amp;nbsp;&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Location:&lt;/strong&gt; &lt;a href="https://dl-ssl.google.com/android/eclipse/"&gt;https://dl-ssl.google.com/android/eclipse/&lt;/a&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;Note: If you have trouble acquiring the plugin, try using "http" in  the Location URL,         instead of "https" (https is preferred for  security reasons).&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Click OK and then in the Available Software dialog, select the checkbox next to Developer Tools. Click Next. Then click through to the end until you're done, and then shut down and restart Eclipse.&lt;br /&gt;&lt;br /&gt;Then, click the Eclipse -&amp;gt; Preferences Menu, click the Android category, and browse for&amp;nbsp;SDK&amp;nbsp;location: /eclipse/plugins/android-sdk-2.1_r1. Click OK to apply, and the Target, Vendor, Platform, and API columns should have values, then click OK again.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Step 3: Configure ADB&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;If you're running on Mac, you're already done. If you 're running on Windows, you have to do a couple extra steps. First, &lt;a href="https://github.com/downloads/liquidware/liquidware_beagleboard_android/android-sdk-2.1_r1-windows.zip"&gt;download the SDK from Liquidware &lt;/a&gt;- this one is specifically designed to work with the &lt;a href="http://www.liquidware.com/shop/show/BB-AND-DIY/Android+DIY+Starter+Kit+"&gt;Android DIY Starter Kit&lt;/a&gt; and the &lt;a href="http://www.liquidware.com/shop/show/BB-AND-DEV/Android+Hardware+Development+Kit"&gt;Android Hardware Development Kit&lt;/a&gt;. To install the USB driver, just plug a mini-USB cable into the BeagleBoards USB OTG port, and manually install the driver from your_sdk_path/google-usb_driver into rowboat gadget.&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_pGsJFsc5Buc/TRaNSwqOKRI/AAAAAAAAA3I/r0lsV-nZOho/s1600/Eclipse+Main+Android+Customization.jpg" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="177" src="http://2.bp.blogspot.com/_pGsJFsc5Buc/TRaNSwqOKRI/AAAAAAAAA3I/r0lsV-nZOho/s320/Eclipse+Main+Android+Customization.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Step 4: Create an Android App&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;Select File-&amp;gt;New Project, and click Android-&amp;gt;Android Project. You have options at this point - you can "Create a new project in workspace" and call it whatever you want. This will make a "hello world" template application. Or! You can select "Create project from existing source", and select SkeletonApp. I recommend you do this, and select SkeletonApp. If that doesn't work, then try to default app.&lt;br /&gt;&lt;div style="text-align: center;"&gt;&amp;nbsp;&lt;a href="http://2.bp.blogspot.com/_pGsJFsc5Buc/TRaNSd7PsXI/AAAAAAAAA3E/59z1J_zQxQ0/s1600/Eclipse+Android+New+Project.jpg" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/_pGsJFsc5Buc/TRaNSd7PsXI/AAAAAAAAA3E/59z1J_zQxQ0/s320/Eclipse+Android+New+Project.jpg" width="253" /&gt;&lt;/a&gt;&lt;/div&gt;Now, plug in Android, select the main source file (in the left panel, under src -&amp;gt; com.example.android.skeletonapp -&amp;gt; SkeletonActivity.java) and press the Go button (the Green arrow on the top line of the menu bar), and you're ready to go.&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_pGsJFsc5Buc/TRaNTTKsqwI/AAAAAAAAA3M/RAnaWQRohYk/s1600/Eclipse+Select+Main+Source+File.jpg" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/_pGsJFsc5Buc/TRaNTTKsqwI/AAAAAAAAA3M/RAnaWQRohYk/s320/Eclipse+Select+Main+Source+File.jpg" width="179" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Step 5: Customize&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;The most obvious thing to do is change the "Hello World" text. That's probably the safest way to go to start, just to make sure things are compiling properly. I've changed it to "Hello, inthebitz!" and voila - here it is, functionally working on the &lt;a href="http://www.liquidware.com/shop/show/BB-AND-DEV/Android+Hardware+Development+Kit"&gt;Android Embedded Hardware Development Kit&lt;/a&gt;:&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_pGsJFsc5Buc/TRaNT1sQjDI/AAAAAAAAA3Q/SJCziSZ298M/s1600/Hello+inthebitz+Android+strings.jpg" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="131" src="http://4.bp.blogspot.com/_pGsJFsc5Buc/TRaNT1sQjDI/AAAAAAAAA3Q/SJCziSZ298M/s320/Hello+inthebitz+Android+strings.jpg" width="320" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;div style="text-align: left;"&gt;Turns into this:&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_pGsJFsc5Buc/TRaNReOOffI/AAAAAAAAA28/MKbuLG78BZ8/s1600/Android+DIY+Starter+Kit+Hello+World+Small.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://1.bp.blogspot.com/_pGsJFsc5Buc/TRaNReOOffI/AAAAAAAAA28/MKbuLG78BZ8/s400/Android+DIY+Starter+Kit+Hello+World+Small.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href="http://tshirtgroove.com/jurassic-park-bingo-dino-dna-t-shirt/"&gt;Bingo! Dino DNA&lt;/a&gt;!&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://tshirtgroove.com/wp-content/uploads/2010/11/bingo-dino-dna-t-shirt.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://tshirtgroove.com/wp-content/uploads/2010/11/bingo-dino-dna-t-shirt.jpg" /&gt;&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/7377057412446264720-3903736901883872852?l=antipastohw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antipastohw.blogspot.com/feeds/3903736901883872852/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7377057412446264720&amp;postID=3903736901883872852' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/3903736901883872852'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/3903736901883872852'/><link rel='alternate' type='text/html' href='http://antipastohw.blogspot.com/2010/12/writing-hello-world-on-android-with.html' title='Writing Hello World on the Android with Eclipse'/><author><name>Matt</name><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/_pGsJFsc5Buc/TRaNSGyloKI/AAAAAAAAA3A/iIr5hrjCzII/s72-c/Android+Hello+World+Antipasto+Hardware+Wiki.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7377057412446264720.post-1574762175204387694</id><published>2010-12-27T09:26:00.000-08:00</published><updated>2010-12-27T09:26:00.350-08:00</updated><title type='text'>Android vs. the Embedded Programmer Mindset</title><content type='html'>&lt;blockquote&gt;&lt;i&gt;Eclipse Apps Roasting on an Open Android&lt;/i&gt;&lt;br /&gt;&lt;i&gt;ADB nipping at your serial bus.&lt;/i&gt;&lt;br /&gt;&lt;i&gt;Yuletide GUIs being compiled through XML,&lt;/i&gt;&lt;br /&gt;&lt;i&gt;And freakin' complicated data reference schemes that make you call even a single string from an outside standalone strings.xml file by @string/hello or R.string.hello.&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;Everybody knows a compiler and some global vars,&lt;/i&gt;&lt;br /&gt;&lt;i&gt;Help to make coding simple and fast.&lt;/i&gt;&lt;br /&gt;&lt;i&gt;Local functions with their scopes all aglo(bal).&lt;/i&gt;&lt;br /&gt;&lt;i&gt;Will find it much easier than dereferencing every gosh-darn string text variable.&lt;/i&gt;&lt;/blockquote&gt;&lt;br /&gt;What the &lt;a href="http://www.youtube.com/watch?v=CBOTrj94wig"&gt;helloworld&lt;/a&gt;, Google! Whatever happened to:&lt;br /&gt;&lt;br /&gt;char gButtonText[] = "Option On";&lt;br /&gt;&lt;br /&gt;function mytoggle( void) {&lt;br /&gt;&amp;nbsp; strcpy(gButtonText,"Option Off")&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Sure, it's ugly code. There's a better way to do it. But it's fast, easy, and simple, and intuitive to the C programmer's mindset. Welcome to the wonderful world of Java-inspired coding on Android. Everything is an object, and needs it's own varspace. Programming Android is like programming in &lt;a href="http://www.tutorialspoint.com/ruby-on-rails/rails-framework.htm"&gt;Ruby on Rails' MVC&lt;/a&gt; stack. You aren't really writing a standalone app, you're just given the honor - and privilege if I say so - to glue on some function code on top of an existing framework. Programming Android is like programming Java - instead of thinking about building the app from the ground up, you're essentially writing a "diff" file on top of a massive mountain of existing code and functionality. The baseline app already does a bunch of stuff perfectly fine, thank you.&lt;br /&gt;&lt;br /&gt;It's as if Android is constantly saying to me, "Oh, what, you want it to do something different? Overload my already perfectly-written function, why don't you. Pffft. I already thought of that. I have a better idea: why don't you *not* write your function, and instead use one of mine, and decrease the surplus population of crappy code!"&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Bah humbugtracking&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;Programming in Android, &lt;a href="http://www.zdnet.com/blog/btl/oracle-vs-google-over-java-android-lawsuits-may-begin-to-pile-up/38019"&gt;like Java&lt;/a&gt;, I am constantly reminding of how little I know, because someone's already thought of that function, and it already exists - I just have to inherit and object and parent a class, @override a base class, and unprotect a final public method.&lt;br /&gt;&lt;br /&gt;Want to make a toggle button change it's text? Duh:&lt;br /&gt;&lt;br /&gt;android:textOff="Option Off"&lt;br /&gt;android:textOn="Option On"&lt;br /&gt;&lt;br /&gt;Herein lie the central difference in mindset between the Embedded Programmer and the Android Programmer:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Embedded (Arduino) Programming Mindset &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;In embedded land, we are trained to start from void main(void) and #include math.h and work upwards. From function control, application execution, to variable space definition, everything trains you to think about in a device-first mentality. You're thinking to yourself, "I have a device with XX megs of RAM, a YY MHz CPU, and a ZZ pixel screen." Optimization is the name of the game, efficiency matters, and resources are at a premium so it's worth taking the time to think them through.&lt;br /&gt;&lt;br /&gt;Stretching the metaphor a bit for a minute, embedded coding is like &lt;a href="http://en.wikipedia.org/wiki/Heliocentrism"&gt;heliocentrism &lt;/a&gt;- with the device at the center of the world:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://upload.wikimedia.org/wikipedia/commons/5/57/Heliocentric.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="269" src="http://upload.wikimedia.org/wikipedia/commons/5/57/Heliocentric.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Android Programming Mindset&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;In Android land, you are trained to start from a base, and extend some Activity class. You're writing diff code, pulling objects and their nested functions only when you need them. You are really writing *code*, you're just pulling and gluing together bits and pieces of functionality that were already written for you. The device doesn't matter, and why should it, because you're writing an app that might run on a tablet or a hand-held or an on-screen emulator. God only knows how many megs of RAM, CPU MHz, and pixels you'll have, so you'd better write your code abstractly and cross your fingers that it runs. Everything trains you to think about a user-first mentality.&lt;br /&gt;&lt;br /&gt;All things considered, this isn't easy for an embedded programmer to embrace. Dare I say embracing and learning Android coding is the equivalent to &lt;a href="http://en.wikipedia.org/wiki/Copernican_Revolution"&gt;the Copernican Revolution&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://upload.wikimedia.org/wikipedia/commons/5/53/Nicolaus_Copernicus_-_Heliocentric_Solar_System.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="259" src="http://upload.wikimedia.org/wikipedia/commons/5/53/Nicolaus_Copernicus_-_Heliocentric_Solar_System.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Device-first vs. User-first &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;Embedded programmers are more likely to build a new hardware device layer to push the performance envelope of a given piece of hardware. Android programmers are more likely to deliver a fantastic user experience that connects &lt;a href="http://androidconvergence.com/"&gt;web-to-handheld-to-sensors&lt;/a&gt; first and foremost, and who cares if it sits and hangs for a few seconds while it calculates? The user will be stunned by the drop-shadowed jelly buttons, he won't even mind :-)&lt;br /&gt;&lt;br /&gt;And the truth is... after several weeks of hacking my &lt;a href="http://www.liquidware.com/shop/show/BB-AND-DIY/Android+DIY+Starter+Kit+"&gt;Android DIY Starter Kit&lt;/a&gt;, I don't mind either. I've found myself converting to a new religion, in the name of developing super-sleek looking GUI's in no time at all, it's really something. Doing the same in Linux would take weeks, maybe months (but that's another discussion for another time). Take my "void main( void)" from me, and give me my "public class extends Activity" any day of the week! But there are some downsides.&lt;br /&gt;&lt;br /&gt;One major downside is the need for massively large reference manuals, or the need to constantly be connected to the web, for documentation, specs, and references. Try coding a rails webapp without access to the internet - impossible. On the other hand, all you need to code &lt;a href="http://blog.makezine.com/archive/2010/04/arduino_cheat_sheet.html"&gt;Arduino is a little cheatsheet&lt;/a&gt; - since you're essentially building everything up from scratch out of C primitive functions, all you need is the list of those functions. So what if you re-invent the wheel a few times? On &lt;a href="http://www.slideshare.net/codeinmotion/mvc-demystified-essence-of-ruby-on-rails"&gt;Android, like Rails&lt;/a&gt;, you constantly need to know the top-down bigger picture. You need to have in your frame of mind the major high-level code objects, which you then reference down with the . dot-operator until you get to the method/function you were looking for. This means needing large amounts of documentation, and examples that are typically on the web.&lt;br /&gt;&lt;br /&gt;Not better, not worse, mostly just different.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7377057412446264720-1574762175204387694?l=antipastohw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antipastohw.blogspot.com/feeds/1574762175204387694/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7377057412446264720&amp;postID=1574762175204387694' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/1574762175204387694'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/1574762175204387694'/><link rel='alternate' type='text/html' href='http://antipastohw.blogspot.com/2010/12/android-vs-embedded-programmer-mindset.html' title='Android vs. the Embedded Programmer Mindset'/><author><name>Matt</name><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-7377057412446264720.post-2193590181600981135</id><published>2010-12-24T21:47:00.000-08:00</published><updated>2010-12-24T21:47:21.264-08:00</updated><title type='text'>Have Yourself a Merry Little Android ADB Rootkit</title><content type='html'>&lt;i&gt;Quite a few people have emailed me about the post "The End of The Open Source Hardware Cambrian Age", and Chris had a few interesting observations and dialog about it on &lt;a href="http://www.theamphour.com/2010/12/21/the-amp-hour-22-the-hard-work-hypothesis/#comment-1114"&gt;the Amp Hour&lt;/a&gt; - thanks (also a great set of casts in general)! Thank you... consider this the first installment of hackery to come :-)&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;It's one thing to have an Android. It's fun to download apps and whatnot, but at some point, you want to actually change the functionality of something, or make your own. That's the situation I found myself in recently, and so I've been hacking quite a bit on the &lt;a href="http://www.liquidware.com/shop/show/BB-AND-DIY/Android+DIY+Starter+Kit+"&gt;Android DIY Starter Kit&lt;/a&gt; that I carry around.&lt;br /&gt;&lt;div style="text-align: center;"&gt;&amp;nbsp;&lt;a href="http://1.bp.blogspot.com/_pGsJFsc5Buc/TRWAKNbQGKI/AAAAAAAAA20/PXlkAEuaFjQ/s1600/Android+on+the+Table.JPG" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://1.bp.blogspot.com/_pGsJFsc5Buc/TRWAKNbQGKI/AAAAAAAAA20/PXlkAEuaFjQ/s320/Android+on+the+Table.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;The first thing anyone does when they get the Starter Kit or the Android Hardware Development Kit (more aimed at embedded programmers and engineers looking to learn Android) is... rootkit it, of course! I can honestly say that every device I have ever owned, I test on the basis of how quickly I can root it.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_pGsJFsc5Buc/TRWAI-LyNlI/AAAAAAAAA2o/KWFRnn4j6UA/s1600/Android+DIY+Starter+Kit+Keyboard.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://1.bp.blogspot.com/_pGsJFsc5Buc/TRWAI-LyNlI/AAAAAAAAA2o/KWFRnn4j6UA/s320/Android+DIY+Starter+Kit+Keyboard.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Now I just plug in the USB B mini cable into the side of the &lt;a href="http://www.liquidware.com/shop/show/BB-C4/BeagleBoard+C4"&gt;BeagleBoard&lt;/a&gt;. There's a USB B mini port on the &lt;a href="http://www.liquidware.com/shop/show/BB-BT/BeagleTouch"&gt;BeagleTouch &lt;/a&gt;too, but don't plug into that one, since that's the serial debug port for the BeagleTouch.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_pGsJFsc5Buc/TRWAJbeNodI/AAAAAAAAA2s/2iMbI-uflHw/s1600/Android+DIY+Starter+Kit+Rootkit+Shell.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://1.bp.blogspot.com/_pGsJFsc5Buc/TRWAJbeNodI/AAAAAAAAA2s/2iMbI-uflHw/s320/Android+DIY+Starter+Kit+Rootkit+Shell.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;Here's proof that it works, and it's powered on:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_pGsJFsc5Buc/TRWAJ4MaLdI/AAAAAAAAA2w/mYQ35ZVdZ3A/s1600/Android+DIY+Starter+Kit+Touchscreen.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://1.bp.blogspot.com/_pGsJFsc5Buc/TRWAJ4MaLdI/AAAAAAAAA2w/mYQ35ZVdZ3A/s320/Android+DIY+Starter+Kit+Touchscreen.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;Now, it's as simple as popping up the "adb" debugger. Although I've mostly been a Windows/Linux guy up until now, I've been convinced recently to try out a lot of my development on Mac. One of the reasons, is illustrated here - all I have to do after I install the "&lt;a href="http://www.talkandroid.com/android-sdk-install-guide/"&gt;adb toolkit&lt;/a&gt;". &lt;a href="http://www.talkandroid.com/android-sdk-install-guide/"&gt;ABD&lt;/a&gt; is the Google set of command line utilities that allow you to communicate with an Android device at the low level - effectively "rooting it". &lt;a href="http://developer.android.com/guide/developing/tools/adb.html"&gt;Here's a link that describes what adb can do&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_pGsJFsc5Buc/TRWAKkwzPpI/AAAAAAAAA24/3C60kfSaXW8/s1600/Android+Rootkit+Command+Line.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://2.bp.blogspot.com/_pGsJFsc5Buc/TRWAKkwzPpI/AAAAAAAAA24/3C60kfSaXW8/s320/Android+Rootkit+Command+Line.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;And that's it. This is a little windows showing the results of running:&lt;br /&gt;&lt;blockquote&gt;./adb shell&lt;br /&gt;ls&lt;/blockquote&gt;You can see the command line interface shows the root set of directories, including my personal favorite, "sdcard" which is a symlink to the sd card storage space on Liquidware Android port. Another fun thing to do is to plug in the &lt;a href="http://www.liquidware.com/shop/show/BB-AND-DIY/Android+DIY+Starter+Kit+"&gt;Android DIY Starter Kit&lt;/a&gt;, plug in the usb cable to the Mac, reboot, and type:&lt;br /&gt;&lt;blockquote&gt;./adb shell&lt;br /&gt;logcat&lt;/blockquote&gt;"Logcat" is the debugging interface, which shows all of the details of the boot-up process, for those that are hacker inclined. It's 100% pure fun - and especially helpful given you can also do things like:&lt;br /&gt;&lt;blockquote&gt;./adb logcat | grep usb&lt;/blockquote&gt;From the Mac command line shell, running this command let's you see any startup debug messages associated with usb. Powerful, if I do say so myself.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;object height="300" width="380"&gt;&lt;param name="movie" value="http://www.youtube.com/v/xT4wQNLklfI?hl=en&amp;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/xT4wQNLklfI?hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="380" height="300"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;Try that on an iPod or iPad :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7377057412446264720-2193590181600981135?l=antipastohw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antipastohw.blogspot.com/feeds/2193590181600981135/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7377057412446264720&amp;postID=2193590181600981135' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/2193590181600981135'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/2193590181600981135'/><link rel='alternate' type='text/html' href='http://antipastohw.blogspot.com/2010/12/have-yourself-merry-little-android-adb.html' title='Have Yourself a Merry Little Android ADB Rootkit'/><author><name>Matt</name><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://1.bp.blogspot.com/_pGsJFsc5Buc/TRWAKNbQGKI/AAAAAAAAA20/PXlkAEuaFjQ/s72-c/Android+on+the+Table.JPG' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7377057412446264720.post-4789669022065267076</id><published>2010-12-21T01:22:00.000-08:00</published><updated>2010-12-21T01:22:28.493-08:00</updated><title type='text'>The End of The Open Source Hardware Cambrian Age</title><content type='html'>&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:WordDocument&gt;   &lt;w:View&gt;Normal&lt;/w:View&gt;   &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:TrackMoves/&gt;   &lt;w:TrackFormatting/&gt;   &lt;w:PunctuationKerning/&gt;   &lt;w:ValidateAgainstSchemas/&gt;   &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:DoNotPromoteQF/&gt;   &lt;w:LidThemeOther&gt;EN-US&lt;/w:LidThemeOther&gt;   &lt;w:LidThemeAsian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:LidThemeComplexScript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;   &lt;w:Compatibility&gt;    &lt;w:BreakWrappedTables/&gt;    &lt;w:SnapToGridInCell/&gt;    &lt;w:WrapTextWithPunct/&gt;    &lt;w:UseAsianBreakRules/&gt;    &lt;w:DontGrowAutofit/&gt;    &lt;w:SplitPgBreakAndParaMark/&gt;    &lt;w:DontVertAlignCellWithSp/&gt;    &lt;w:DontBreakConstrainedForcedTables/&gt;    &lt;w:DontVertAlignInTxbx/&gt;    &lt;w:Word11KerningPairs/&gt;    &lt;w:CachedColBalance/&gt;   &lt;/w:Compatibility&gt;   &lt;m:mathPr&gt;    &lt;m:mathFont m:val="Cambria Math"/&gt;    &lt;m:brkBin m:val="before"/&gt;    &lt;m:brkBinSub m:val="--&gt;    &lt;m:smallfrac m:val="off"&gt;    &lt;m:dispdef&gt;    &lt;m:lmargin m:val="0"&gt;    &lt;m:rmargin m:val="0"&gt;    &lt;m:defjc m:val="centerGroup"&gt;    &lt;m:wrapindent m:val="1440"&gt;    &lt;m:intlim m:val="subSup"&gt;    &lt;m:narylim m:val="undOvr"&gt;   &lt;/m:narylim&gt;&lt;/m:intlim&gt; &lt;/m:wrapindent&gt;&lt;!--[endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"  DefSemiHidden="true" DefQFormat="false" DefPriority="99"  LatentStyleCount="267"&gt;   &lt;w:LsdException Locked="false" Priority="0" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Normal"/&gt;   &lt;w:LsdException Locked="false" Priority="9" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="heading 1"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/&gt;   &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 1"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 2"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 3"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 4"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 5"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 6"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 7"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 8"/&gt;   &lt;w:LsdException Locked="false" Priority="39" Name="toc 9"/&gt;   &lt;w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/&gt;   &lt;w:LsdException Locked="false" Priority="10" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Title"/&gt;   &lt;w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/&gt;   &lt;w:LsdException Locked="false" Priority="11" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/&gt;   &lt;w:LsdException Locked="false" Priority="22" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Strong"/&gt;   &lt;w:LsdException Locked="false" Priority="20" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/&gt;   &lt;w:LsdException Locked="false" Priority="59" SemiHidden="false"   UnhideWhenUsed="false" Name="Table Grid"/&gt;   &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/&gt;   &lt;w:LsdException Locked="false" Priority="1" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/&gt;   &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/&gt;   &lt;w:LsdException Locked="false" Priority="34" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/&gt;   &lt;w:LsdException Locked="false" Priority="29" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Quote"/&gt;   &lt;w:LsdException Locked="false" Priority="30" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/&gt;   &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/&gt;   &lt;w:LsdException Locked="false" Priority="19" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/&gt;   &lt;w:LsdException Locked="false" Priority="21" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/&gt;   &lt;w:LsdException Locked="false" Priority="31" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/&gt;   &lt;w:LsdException Locked="false" Priority="32" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/&gt;   &lt;w:LsdException Locked="false" Priority="33" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Book Title"/&gt;   &lt;w:LsdException Locked="false" Priority="37" Name="Bibliography"/&gt;   &lt;w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt; /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-qformat:yes; mso-style-parent:""; mso-padding-alt:0in 5.4pt 0in 5.4pt; mso-para-margin-top:0in; mso-para-margin-right:0in; mso-para-margin-bottom:10.0pt; mso-para-margin-left:0in; line-height:115%; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:"Times New Roman"; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi;}&lt;/style&gt; &lt;![endif]--&gt;  &lt;/m:defjc&gt;&lt;/m:rmargin&gt;&lt;/m:lmargin&gt;&lt;/m:dispdef&gt;&lt;/m:smallfrac&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: x-small;"&gt;&lt;i&gt;This is the first time in almost 3 weeks I'm evenly lifting my head up to breath, after the massive chaos of Black Friday. Now, on to the fun stuff... my project back log, which I've been dying to blog about :-) But first, I spent some time browsing around the web at some recent OSHW projects, and I had a few thoughts I wanted to share...&lt;/i&gt;&lt;/span&gt; &lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: x-small;"&gt;Two years ago, Justin and I made a prediction… that the recent round of Open Source hardware was a re-invention of the same phenomenon that happened about 15-20 years ago, with the creation of DIY &lt;a href="http://en.wikipedia.org/wiki/Homebrew_Computer_Club"&gt;homebrew electronic computers&lt;/a&gt;. The recent round of open source hardware seemed to have been triggered by the advent of the ever-popular microcontroller, &lt;a href="http://www.liquidware.com/shop/show/ARD-UNO/Arduino+Uno"&gt;the Arduino&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: x-small;"&gt;Along with this trend came the replacement of the old guard, the &lt;a href="http://en.wikipedia.org/wiki/BASIC_Stamp"&gt;Basic STAMP&lt;/a&gt;, with the new guard, the Arduino. For the past two and a half years, it’s been chaotic, emergent, collective, and exciting. The &lt;a href="http://www.liquidware.com/shop/show/DWX/DoubleWide+ExtenderShield"&gt;modularity introduced by the simple decision to fix the headers &lt;/a&gt;on the Arduino led to an explosion in the number of “shields” that fit those pins (including that ridiculous but essential, non-standard “gap” along the digital IO side which prevents someone from accidentally inserting a shield backwards). Arduino drove a reinvention of Open Source Hardware, from an artistic perspective, and allowed projects and hacking to occur faster than ever before...&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Open Source Hardware &amp;gt;= Arduino! &lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: x-small;"&gt;But “open source hardware” is not synonymous with “Arduino” … it stands for much more than a "breakout board" for an Atmel chip. It represents the lowering of transaction costs, cheaper hacking, faster physical computing prototyping. It’s much more. But I've noticed an increasingly disturbing trend: companies are moving in for the kill. Noticing the success of the recent Open Source Hardware movement led by Arduino, the "old guard" is striking back - but they're striking back with the same out-dated tools that made them irrelevant on the web over the past few years... proprietary tool-chains, Windows-only custom IDE's, serial debugging interfaces (not USB), and special ROM flashing hardware.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: x-small;"&gt;Are you kidding me? This is a complete reversion back to the horrible life we all knew hardware to be 5 years ago, before Arduino came along. I will argue a strong point: &lt;a href="http://www.avrfreaks.net/index.php?name=PNphpBB2&amp;amp;file=printview&amp;amp;t=88047&amp;amp;start=0"&gt;Embedded Companies Just Don't Get It(TM)&lt;/a&gt;. ECJDGI(TM)? They don't understand the web, they don't understand what Arduino is, why it succeeded, where it is headed. They just look at Arduino, and say, "I wish that was my silicon chip on there, and not Atmel's" and *POOF* they cram out yet another crappy dev board that no one is ever going to build anything with. &lt;a href="http://www.myamicus.co.uk/"&gt;Shame on them&lt;/a&gt;. The world doesn't need more Arduino clones. I think it needs more kick-ass projects.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: x-small;"&gt;So I would argue that two and half years ago, we saw the Cambrian Explosion of Open Source Hardware. New shields came out regularly, expanding the Arduino platform and the system. They were sloppy, inefficient, unoptimized, and *that was the point*. That inefficiency was good - it promoted hacking, and tinkering. It forced you to NOT follow directions. And yet the entire time, the Arduino remained a bedrock platform, and projects spawned and reproduced, remixed, recombined. All was open, collaborative, and expressive.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://www.palaeos.com/Paleozoic/Cambrian/Images/burgess_community.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="221" src="http://www.palaeos.com/Paleozoic/Cambrian/Images/burgess_community.gif" width="400" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;But to what end?&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: x-small;"&gt;The Cambrian Explosion of biological diversity came to an end (eventually - thank goodness) as the Paleozoic Era marched onward. And when it did, life forms evolved - some of them were smaller, simpler, and potentially (arguably) less diverse and more optimized in their use of energy (metabolic optimization, anyone?). Others, meanwhile, grew larger and more complex, monstrous if you will.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Is the same thing happening to Open Source Hardware?&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: x-small;"&gt;Have we left the era of massive experimentation and entered an era of consolidation? I think so… unfortunately. I say unfortunately, because every growth spurt must steady and end, and with that end comes reduced inventiveness, less innovation, and … optimization and efficiency. Shields continue to be made, and built, and as DIY'ers venture into the world of running businesses (like my friends &lt;a href="http://www.adafruit.com/"&gt;Limor at Adafruit &lt;/a&gt;and &lt;a href="http://www.sparkfun.com/"&gt;Nate at Sparkfun&lt;/a&gt;), they are stumbling into the dreaded theories of economics that have haunted 1000's of hardware companies before them: cost optimization. You can see this right now in the Arduino world ... instead of DIY'ers building crazy new shields that do new things, the "old guard" and "cost cutters" are moving in to &lt;a href="http://shieldlist.org/"&gt;mass produce the shields &lt;/a&gt;they think are the most profitable.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-size: x-small;"&gt;Don't get me wrong, cheaper and cheaper shields available to more people - that's FANTASTIC news! It means that the Open Source Hardware market is maturing - early innovation is being replaced with volume, efficiency, mainstream acceptance. We WON!!!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.anunews.net/blog/wp-content/uploads/2010/11/aa-Bush-Mission-Accomplished.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="218" src="http://www.anunews.net/blog/wp-content/uploads/2010/11/aa-Bush-Mission-Accomplished.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-size: x-small;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;Out with the New, In with the Old &lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: x-small;"&gt;The &lt;a href="http://www.myamicus.co.uk/"&gt;Old Guard of embedded companies is back&lt;/a&gt;, and they're here to stay, displacing the temporary uber-innovative &lt;a href="http://en.wikipedia.org/wiki/Dystopia"&gt;dystopian imbalance &lt;/a&gt;created for a brief period of time by the rowdy bands of individual DIY'ers. Open Source Hardware has reached it's full modern cycle, albeit faster than it did last time. Embedded companies, Chinese board houses, off-shore CAD designers, the industry is now in full bloom. &lt;a href="http://antipastohw.blogspot.com/2007/12/arduino-here-i-come.html"&gt;Three years ago, I posted my first Arduino blog article - "Arduino, here I come!"&lt;/a&gt;. I can barely believe it. The world has changed dramatically since that first article. Once a lonely, rogue band of hackers who once met in art space in the meat-packing district in NYC, the Open Source Hardware community now has a &lt;a href="http://www.openhardwaresummit.org/"&gt;Summit&lt;/a&gt;, a massive &lt;a href="http://makerfaire.com/"&gt;annual Fair&lt;/a&gt;, and hundreds of suppliers and vendors!&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: x-small;"&gt;But not everyone likes the "marketization" and "re-industrialization" of Open Source Hardware. Although costs of shields are plummeting, and a good dev board can be had for $5-10 dollars (!), not everyone is motivated just by low cost boards. Sure, many people are, but that's not the point. Just because you can get a 99 cent whopper doesn't mean you suddenly hate the taste of a char-broiled $10.50 Angus Beef burger.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: x-small;"&gt;Some people are motivated by kick-ass hacks, not mainstream projects.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: x-small;"&gt;Some people are motivated by ridiculousness, not rationality.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: x-small;"&gt;Some people like aesthetic design and balance, not just raw functionality.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: x-small;"&gt;Some people are driven by the thrill of the challenge, not just the systematization of the status quo.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: x-small;"&gt;Some people HATE rules and order.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: x-small;"&gt;&lt;i&gt;Like me.&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Bring on the Char Broiled Angus Beef Burgers!&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.barbecue-party.com/bbq/wp-content/2009/08/bbq-jalapeno-burgers-on-grill.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="212" src="http://www.barbecue-party.com/bbq/wp-content/2009/08/bbq-jalapeno-burgers-on-grill.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: x-small;"&gt;Maybe I'm just hungry, but I’m going down with a fight. I don’t accept&lt;span&gt; &lt;/span&gt;the end of Open Source Hardware innovation as the 99 cent whopper dev board. If the whole vision of OSHW just turns out to have created another excuse for a bunch of lowsy Windows-only dev boards with proprietary toolchains, horrible tech support hotlines, and mysterious libraries that have no documentation, I will be very sad.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: x-small;"&gt;I insist on fighting back, and making something new and different, and weird, strange, and unpredictable. That’s what makes Open Source Hardware fun and challenging to me. In fact, I think the fight itself is what it's about: constant reinvention, and pushing boundaries.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: x-small;"&gt;Now that that's out in the open, it's time to get back to doing what I enjoy most... hacking.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: x-small;"&gt;And that's what I'm all about. &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/7377057412446264720-4789669022065267076?l=antipastohw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antipastohw.blogspot.com/feeds/4789669022065267076/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7377057412446264720&amp;postID=4789669022065267076' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/4789669022065267076'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/4789669022065267076'/><link rel='alternate' type='text/html' href='http://antipastohw.blogspot.com/2010/12/end-of-open-source-hardware-cambrian.html' title='The End of The Open Source Hardware Cambrian Age'/><author><name>Matt</name><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-7377057412446264720.post-1632042012255778881</id><published>2010-11-29T11:01:00.000-08:00</published><updated>2010-11-29T11:23:04.579-08:00</updated><title type='text'>Android^D^D^D^D^D^D^DCyber Monday</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;I've heard a lot about this magical "&lt;/span&gt;&lt;a style="font-style: italic;" href="http://en.wikipedia.org/wiki/Cyber_Monday"&gt;Cyber Monday&lt;/a&gt;&lt;span style="font-style: italic;"&gt;" effect, and never really believed it until today. I've sold almost as much Android hardware in the past 3 days - including today - than I have in the previous MONTH. And the day isn't even over... I can't figure out where all the traffic is coming from...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It's like the &lt;a href="http://en.wikipedia.org/wiki/Slashdot_effect"&gt;Slashdot Effect &lt;/a&gt;met the Digg and Reddit Effect, and got in a three-way love triangle. And then the bastard child grew up and wanted to program Android. I guess on the one hand, I'm happy that a lot of people like the kits I'm building, and on the other hand I'm thinking to myself,... I have a lot of work to do.&lt;br /&gt;&lt;br /&gt;It's only 2 pm, and for the first time in a long time, I'm low on almost all of the inventory and products I stock at &lt;a href="http://www.liquidware.com/"&gt;Liquidware&lt;/a&gt;... but especially on the &lt;a href="http://www.liquidware.com/shop"&gt;Android hardware development kits&lt;/a&gt;. For those that don't know, this is a big deal because all of the kits are hand made, hand soldered, and hand packaged by Will, Chris, Matt and me. I usually like to keep enough kits built up so I can hack on a few of them myself, but today, I'm so low that I've had to cancel most of my plans for the next week so I can catch up (sorry Nick!)...&lt;br /&gt;&lt;br /&gt;The next 10-14 days are going to be ridiculous, but I will do the best I can to ensure that I don't go out of stock on anything for too long. Here's my plan:&lt;br /&gt;&lt;br /&gt;-I'm going to spend all day soldering and building&lt;br /&gt;-I'm going to spend all night programming&lt;br /&gt;-I'm going to spend all "meta-night" packaging&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;"Meta-night" is my name for that time of the night when you really ought to be asleep, but aren't, because the program isn't compiling for some reason, and you really want to get it done before the next day. Also known as 1 am - 5 am.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I guess all I can say is, thanks for supporting Liquidware, and for supporting Open Source, the Open Source Hardware movement, hardware hacking, Arduino, and Android.&lt;br /&gt;&lt;br /&gt;Now it's my turn to work my ass off to make sure everything gets out in time!&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/7377057412446264720-1632042012255778881?l=antipastohw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antipastohw.blogspot.com/feeds/1632042012255778881/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7377057412446264720&amp;postID=1632042012255778881' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/1632042012255778881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/1632042012255778881'/><link rel='alternate' type='text/html' href='http://antipastohw.blogspot.com/2010/11/androiddddddddcyber-monday.html' title='Android^D^D^D^D^D^D^DCyber Monday'/><author><name>Matt</name><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-7377057412446264720.post-2449981695093723289</id><published>2010-11-13T15:22:00.000-08:00</published><updated>2010-11-13T15:22:00.074-08:00</updated><title type='text'>Tron on Android Gadget Pack</title><content type='html'>Reliving my childhood/young adulthood for just one minute, the only movie that even held a candle to &lt;a href="http://en.wikipedia.org/wiki/Sneakers_%28film%29"&gt;Sneakers&lt;/a&gt; and &lt;a href="http://www.imdb.com/title/tt0113243/"&gt;Hackers&lt;/a&gt; was &lt;a href="http://en.wikipedia.org/wiki/Tron_%28film%29"&gt;Tron&lt;/a&gt;. Fantasies of flying through the motherboard in search of missing ROM addresses and hexdumping around with light racing motorcycles is pretty much what gets me by some late nights while hacking. It sure romanticized the reality of actual programming experience, which typically consisted of gcc-make-vi-pico-repeat-success-segfault.&lt;br /&gt;&lt;br /&gt;So when I found out that the &lt;a href="http://www.imdb.com/title/tt1104001/"&gt;new Tron movie was coming out&lt;/a&gt;, and that it had motorcycles, and modern interpretations of the flying-saucers-of-death meets-American-Gladiator game, I got excited. In fact, I think all the guys and I at Liquidware are going to take a full half day off just to see the movie together (ps if you're in the Boston/Cambridge area, and want to come along, just shoot me an email at inthebitz at gmail).&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_pGsJFsc5Buc/TNeYrHjsKnI/AAAAAAAAA2U/Cxwv0RUT8_Q/s1600/Android+on+BeagleBoard+Tron+Game.JPG" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://2.bp.blogspot.com/_pGsJFsc5Buc/TNeYrHjsKnI/AAAAAAAAA2U/Cxwv0RUT8_Q/s400/Android+on+BeagleBoard+Tron+Game.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Anyway, I'm anxious. I think the movie is going to rock. And even if it doesn't, I'm going to see it anyway because of how influential it was to me, and many guys I know.&lt;br /&gt;&lt;br /&gt;And in honor of that great movie, Will and Chris and I found an interpretation of Tron, called "&lt;a href="http://www.droidapps.org/light-racer-3d-tron-death-race-on-the-droid/"&gt;Light Racer 3D&lt;/a&gt;", and got it running on the &lt;a href="http://www.liquidware.com/shop/show/BB-AND-DEV/Android+Hardware+Development+Kit"&gt;Liquidware Android Gadget Pack&lt;/a&gt;, running Android on the &lt;a href="http://www.liquidware.com/shop/show/BB-C4/BeagleBoard+C4"&gt;Beagleboard&lt;/a&gt;... enjoy!&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_pGsJFsc5Buc/TNeYr7XIgBI/AAAAAAAAA2c/5bXr_ysSfeI/s1600/Android+BeagleBoard+meets+Tron.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://4.bp.blogspot.com/_pGsJFsc5Buc/TNeYr7XIgBI/AAAAAAAAA2c/5bXr_ysSfeI/s400/Android+BeagleBoard+meets+Tron.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Here's a video of it running on the &lt;a href="http://www.liquidware.com/shop/show/BB-AND-DEV/Android+Hardware+Development+Kit"&gt;Android-Beagleboard-BeagleTouch&lt;/a&gt; combination. It's surprisingly fast and snappy for a portable device like this - at first, I couldn't really believe that the 3D graphics were so fluid...&lt;br /&gt;&lt;object height="344" width="325"&gt;&lt;param name="movie" value="http://www.youtube.com/v/imooGnX2hCU?hl=en&amp;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/imooGnX2hCU?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;All of the modules and components are available at the &lt;a href="http://www.liquidware.com/shop"&gt;liquidware shop&lt;/a&gt;, and some more pictures are up on the &lt;a href="http://www.flickr.com/photos/22071518@N04/"&gt;Flickr page&lt;/a&gt;. Enjoy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7377057412446264720-2449981695093723289?l=antipastohw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antipastohw.blogspot.com/feeds/2449981695093723289/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7377057412446264720&amp;postID=2449981695093723289' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/2449981695093723289'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/2449981695093723289'/><link rel='alternate' type='text/html' href='http://antipastohw.blogspot.com/2010/11/tron-on-android-gadget-pack.html' title='Tron on Android Gadget Pack'/><author><name>Matt</name><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/_pGsJFsc5Buc/TNeYrHjsKnI/AAAAAAAAA2U/Cxwv0RUT8_Q/s72-c/Android+on+BeagleBoard+Tron+Game.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7377057412446264720.post-4719356736535616431</id><published>2010-11-12T10:11:00.000-08:00</published><updated>2010-11-12T10:11:00.735-08:00</updated><title type='text'>Simultaneous Quad Charging Lithium Batteries</title><content type='html'>In the past week, I've gotten a number of emails from people asking about the &lt;a href="http://www.liquidware.com/shop/show/BB-BJC/BeagleJuice"&gt;BeagleJuice module&lt;/a&gt;, and how you charge it. The BeagleJuice is a lithium ion rechargeable battery that snaps to the back of a Beagleboard, and let's you power it and any circuits or other modules like the &lt;a href="http://www.liquidware.com/shop/show/BB-BT/BeagleTouch"&gt;BeagleTouch&lt;/a&gt; that you might have snapped on top of it for 4-6 hours depending on how much drain. If it's just the &lt;a href="http://www.liquidware.com/shop/show/BB-C4/BeagleBoard+C4"&gt;Beagleboard&lt;/a&gt;, it's about 6.5 hours.&lt;br /&gt;&lt;br /&gt;Well, this is how *I* charge it - I typically charge 3-4 of them at once, running off of a USB "charging station", which is really just a 4-port USB hub that I've gutted, and wired up. The power is enough from this one USB hub to power 4 &lt;a href="http://www.liquidware.com/shop/show/BB-BJC/BeagleJuice"&gt;BeagleJuice&lt;/a&gt;'s at a time.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_pGsJFsc5Buc/TNeVPxb7UaI/AAAAAAAAA2Q/P7U3D9V-Ek4/s1600/Quad+BeagleJuice+Charger.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://4.bp.blogspot.com/_pGsJFsc5Buc/TNeVPxb7UaI/AAAAAAAAA2Q/P7U3D9V-Ek4/s400/Quad+BeagleJuice+Charger.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Here's a video showing off my personal setup:&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;object height="344" width="325"&gt;&lt;param name="movie" value="http://www.youtube.com/v/jiLDYPkw698?hl=en&amp;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/jiLDYPkw698?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;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7377057412446264720-4719356736535616431?l=antipastohw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antipastohw.blogspot.com/feeds/4719356736535616431/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7377057412446264720&amp;postID=4719356736535616431' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/4719356736535616431'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/4719356736535616431'/><link rel='alternate' type='text/html' href='http://antipastohw.blogspot.com/2010/11/simultaneous-quad-charging-lithium.html' title='Simultaneous Quad Charging Lithium Batteries'/><author><name>Matt</name><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/_pGsJFsc5Buc/TNeVPxb7UaI/AAAAAAAAA2Q/P7U3D9V-Ek4/s72-c/Quad+BeagleJuice+Charger.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7377057412446264720.post-5845994385050386929</id><published>2010-11-10T14:16:00.000-08:00</published><updated>2010-11-10T14:16:00.393-08:00</updated><title type='text'>Arduino Uno launched and connected to the TouchShield Slide</title><content type='html'>Hallelujah! Finally, an Arduino edition with a sufficiently Anglicized name that I can actually pronounce!&lt;br /&gt;&lt;br /&gt;Introducing the &lt;a href="http://www.liquidware.com/shop/show/ARD-UNO/Arduino+Uno"&gt;Arduino Uno&lt;/a&gt;. Uno. Pronounced: "ooo-no"&lt;br /&gt;&lt;br /&gt;Not "&lt;a href="http://www.liquidware.com/shop/show/ARD/Arduino+Duemilanove"&gt;doooehmillahnoevuh&lt;/a&gt;" like the previous version of the Arduino. Just Arduino Uno. &lt;a href="http://www.liquidware.com/shop/show/ARD-UNO/Arduino+Uno"&gt;Arduino Uno&lt;/a&gt;. It's as if a million teachers, educators, students, hackers, and DIY'ers &lt;a href="http://www.imdb.com/title/tt0076759/quotes"&gt;cried out out in unison&lt;/a&gt;, and were NOT silenced by the second syllable after tripping over their tongues!&lt;br /&gt;&lt;br /&gt;Here's my first Arduino Uno, still sitting inside its box, with no idea what kind of heinous, mind-stretching, solder-busting torture it's about to go through in the coming months. If it only knew... it might stay inside it's little comfort box:&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_pGsJFsc5Buc/TNePEd_7fII/AAAAAAAAA2E/8vjZL_fCygk/s1600/Arduino+Uno+in+Boxing.JPG" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://3.bp.blogspot.com/_pGsJFsc5Buc/TNePEd_7fII/AAAAAAAAA2E/8vjZL_fCygk/s320/Arduino+Uno+in+Boxing.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;This is my first one, taken out of the box:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_pGsJFsc5Buc/TNePByaIHGI/AAAAAAAAA1w/q2DtWB-DynU/s1600/Arduino+Uno+Unboxing.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://4.bp.blogspot.com/_pGsJFsc5Buc/TNePByaIHGI/AAAAAAAAA1w/q2DtWB-DynU/s320/Arduino+Uno+Unboxing.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;Here it is, sitting next to my trusty sidekick, the Illuminato Genesis. The Illuminato Genesis is still my go-to-board for high numbers of I/O requirements, and for a slightly faster speed:&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_pGsJFsc5Buc/TNePE27ZUhI/AAAAAAAAA2I/zGatyXIYO2Y/s1600/Arduino+Uno+Illuminato+Genesis.JPG" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://2.bp.blogspot.com/_pGsJFsc5Buc/TNePE27ZUhI/AAAAAAAAA2I/zGatyXIYO2Y/s320/Arduino+Uno+Illuminato+Genesis.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Of course my first reaction was,... does it work with the TouchShield Slide? The answer was... yes, it most certainly does:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_pGsJFsc5Buc/TNePCW6nIfI/AAAAAAAAA10/PpsHcDdXjqI/s1600/Arduino+Uno+TouchShield+Slide+Sideline.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://4.bp.blogspot.com/_pGsJFsc5Buc/TNePCW6nIfI/AAAAAAAAA10/PpsHcDdXjqI/s320/Arduino+Uno+TouchShield+Slide+Sideline.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_pGsJFsc5Buc/TNePD6-M8lI/AAAAAAAAA2A/2MGeAmDF3JA/s1600/Arduino+Uno+Meets+TouchShield+Slide.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://2.bp.blogspot.com/_pGsJFsc5Buc/TNePD6-M8lI/AAAAAAAAA2A/2MGeAmDF3JA/s320/Arduino+Uno+Meets+TouchShield+Slide.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Justin just threw the &lt;a href="http://www.liquidware.com/shop/show/ARD-UNO/Arduino+Uno"&gt;Arduino Uno up over on the Liquidware Shop&lt;/a&gt;... and I uploaded some pictures over at the Flickr page. I'll be using the Arduino Uno in my upcoming projects, and will start seeing if there are any particular anomalies with my code samples, although I expect there not to be.&lt;br /&gt;&lt;br /&gt;PS I like the new logo and color art too, nicely done, Team Arduino!&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://arduino.cc/en/pub/skins/arduinoUno/img/logo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://arduino.cc/en/pub/skins/arduinoUno/img/logo.png" /&gt;&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/7377057412446264720-5845994385050386929?l=antipastohw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antipastohw.blogspot.com/feeds/5845994385050386929/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7377057412446264720&amp;postID=5845994385050386929' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/5845994385050386929'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/5845994385050386929'/><link rel='alternate' type='text/html' href='http://antipastohw.blogspot.com/2010/11/arduino-uno-launched-and-connected-to.html' title='Arduino Uno launched and connected to the TouchShield Slide'/><author><name>Matt</name><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://3.bp.blogspot.com/_pGsJFsc5Buc/TNePEd_7fII/AAAAAAAAA2E/8vjZL_fCygk/s72-c/Arduino+Uno+in+Boxing.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7377057412446264720.post-8660924035978530361</id><published>2010-11-09T09:48:00.000-08:00</published><updated>2010-11-09T09:48:00.386-08:00</updated><title type='text'>Skin Skeleton Guts (SSG) turns a TouchShield and Arduino into a Tricorder</title><content type='html'>I met &lt;a href="http://www.humblefacture.com/2010/08/ssg-framework-for-more-sustainable.html"&gt;Dominic Muren&lt;/a&gt; at the &lt;a href="http://www.openhardwaresummit.org/"&gt;OSHW Summit in NYC&lt;/a&gt;. To say he's a pretty smart guy is a dramatic understatement - he's ridiculously creative, plus he has a contagious energy! So I spent some time digging around, and a few emails later, I dug up his &lt;a href="http://www.ted.com/talks"&gt;TED talk&lt;/a&gt; - which to me pretty much hits the nail on the head.&lt;br /&gt;&lt;br /&gt;"Modular, Hackable, and Open components that could be reconfigured into a variety of components."&lt;br /&gt;&lt;br /&gt;YES YES YES!!! (I think I just had a &lt;a href="http://www.youtube.com/watch?v=5nNhOH4Y0bI"&gt;When Harry Met Sally moment for OSHW modularity&lt;/a&gt;...)&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;object height="385" width="440"&gt;&lt;param name="movie" value="http://www.youtube.com/v/DuulqHvj6-M?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/DuulqHvj6-M?fs=1&amp;amp;hl=en_US" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="440" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;Dominic has this idea that skin-skeleton-guts can server as a powerful metaphor for connecting all of the pieces together of modular devices. I've been thinking about this for a while, but Dominic's ideas really push it further than I had thought. The "last mile" of modular gadgets so to speak is the enclosure, the case, and the "wrapping" around modular gadgets.&lt;br /&gt;&lt;br /&gt;The problem is that while modularity is clearly the future of gadgetry, no one up until now has really found a satisfying solution to the problem of high-cost enclosure design. Enclosures are hard to build, and require long iterations of designs. Until &lt;a href="http://www.makerbot.com/"&gt;3D printing&lt;/a&gt; is really on everyone's desktop, the idea of fabricating an enclosure for Open Source Hardware and Electronics is an expensive idea. But moreso than that, even if &lt;a href="http://www.makerbot.com/"&gt;3D printing on the desktop were a reality&lt;/a&gt;, you'd likely want to minimize the amount of material you use in a custom enclosure.&lt;br /&gt;&lt;br /&gt;To the idea of "&lt;a href="http://www.thingiverse.com/thing:4661"&gt;Skin Skeleton Guts&lt;/a&gt;" or SSG by Dominic, is that we should build the skeletal components that hug the sides of modular electronics, and then build wrappers out of flexible fabric, e.g. "skin" to wrap around the skeleton. The modules - for instance, the Arduino modules in this case, serve as the "guts". The fragmented structural hugging pieces serve as the "skeleton", and the flexible, perhaps transparent, fabric material becomes the skin.&lt;br /&gt;&lt;br /&gt;The result is... drum roll...&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://thingiverse-production.s3.amazonaws.com/renders/02/40/7d/ba/a4/5144424232_413d8929a5_b_display_medium.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://thingiverse-production.s3.amazonaws.com/renders/02/40/7d/ba/a4/5144424232_413d8929a5_b_display_medium.jpg" width="269" /&gt;&lt;/a&gt;&lt;/div&gt;Pretty...&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://thingiverse-production.s3.amazonaws.com/renders/4a/08/80/57/94/5144423228_18216c7e8d_b_display_medium.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://thingiverse-production.s3.amazonaws.com/renders/4a/08/80/57/94/5144423228_18216c7e8d_b_display_medium.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;...darn...&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://thingiverse-production.s3.amazonaws.com/renders/65/fb/ae/86/53/5143817819_ff42cc97ae_b_display_medium.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="236" src="http://thingiverse-production.s3.amazonaws.com/renders/65/fb/ae/86/53/5143817819_ff42cc97ae_b_display_medium.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;...cool.&lt;br /&gt;&lt;br /&gt;That's Dominic applying the principles of SSG to the &lt;a href="http://www.liquidware.com/shop/show/PMP/Portable+MegaPalm"&gt;MegaPalm Gadget Kit&lt;/a&gt;... stepwise heading in the direction of making it into a full blown device. That just made my entire week, seeing the concept of modularity and reconfigurable gadget components, getting pushed to the next level. It's one of those concepts that seems so straight-forward and natural, it makes me think, "why didn't I think of that?"&lt;br /&gt;&lt;br /&gt;I'll have &lt;a href="http://www.youtube.com/watch?v=5nNhOH4Y0bI"&gt;what he's having&lt;/a&gt;!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7377057412446264720-8660924035978530361?l=antipastohw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antipastohw.blogspot.com/feeds/8660924035978530361/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7377057412446264720&amp;postID=8660924035978530361' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/8660924035978530361'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/8660924035978530361'/><link rel='alternate' type='text/html' href='http://antipastohw.blogspot.com/2010/11/skin-skeleton-guts-ssg-turns.html' title='Skin Skeleton Guts (SSG) turns a TouchShield and Arduino into a Tricorder'/><author><name>Matt</name><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-7377057412446264720.post-7915920642188025644</id><published>2010-11-07T22:21:00.000-08:00</published><updated>2010-11-07T22:21:34.265-08:00</updated><title type='text'>A Beginner's Tutorial to Programming Android on the Beagleboard</title><content type='html'>&lt;span style="font-size: x-small;"&gt;&lt;i&gt;Android is a fun development system platform - but you have to really enjoy googling around for relatively funky command line arguments if you're planning on making any progress in the course of one night. The google guys knew what they were doing, or at least did a great job building something pretty cool that works. Chris and I have been spending a decent amount of time learning how to program Android, and so I figured I'd write up a brief tutorial for anyone out there that doesn't want to spend nearly as much time as it took us to figure it out.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://code.google.com/android/goodies/wallpaper/android-wallpaper5_1024x768.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://code.google.com/android/goodies/wallpaper/android-wallpaper5_1024x768.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-size: x-small;"&gt;The first step in programming Android is to download the &lt;a href="http://developer.android.com/sdk/index.html"&gt;Android SDK: http://developer.android.com/sdk/index.html&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;On Ubuntu Linux, I downloaded the SDK into the home directory, and unzipped / untarred it. The next step is to get the &lt;a href="http://www.liquidware.com/shop/show/BB-AND-DEV/Android+Hardware+Development+Kit"&gt;Beagle Android Gadget Pack&lt;/a&gt; recognizing on the USB port. The next step involves plugging a USB cable into the side of the gadget. Once it's in, run the command:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;lsusb&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;I get a bunch of Bus 001 through Bus 005, followed by Device blablabla information. Here's the trick. You want to find the ID of the Android device, so run lsusb while the device is unplugged, and then run it again. On my computer, the line that changes when the Android gadget is plugged in is:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Bus 001 Device 004: ID 18d1:9018&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Ok. Now create a file called "51-android.rules". See the part in the line above that says, "18d1"? and "Device 004"? That's idVendor and idProduct respectively. So change those values in the file content below:&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size: x-small;"&gt;&lt;code&gt;&lt;/code&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;SUBSYSTEMS=="usb"&lt;br /&gt;ATTRS{idVendor}=="18d1",&lt;br /&gt;ATTRS{idProduct}=="0004",&lt;br /&gt;MODE="0666"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-size: x-small;"&gt;Then copy the file here:&lt;br /&gt;&lt;br /&gt;/etc/udev/rules.d/51-android.rules&lt;br /&gt;&lt;br /&gt;This is a rather convoluted and manual way to get the Ubuntu Linux OS recognizing the &lt;a href="http://www.liquidware.com/shop/show/BB-AND-DEV/Android+Hardware+Development+Kit"&gt;Android Gadget as a native Android device&lt;/a&gt;. Now, you can cd into the SDK directory, and type:&lt;br /&gt;&lt;br /&gt;./adb devices&lt;br /&gt;&lt;br /&gt;And the device should show up. This is what I get:&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size: x-small;"&gt;List of devices attached:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;20100720 device&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-size: x-small;"&gt;Now I can use this command to get access to the Android Shell:&lt;br /&gt;&lt;br /&gt;./adb shell&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;You'll get kicked out directly to the Android root command line, where you'll notice you can use ls, cd, cp, mv, rm, and cat. And that's about it. No text editor, no vi, no nothing. Pretty limited. Likely, you'll want to copy files on and off of the Android gadget, so you'll typically use these commands that come along with the &lt;a href="http://developer.android.com/sdk/index.html"&gt;Android SDK&lt;/a&gt;:&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size: x-small;"&gt;./adb push your_file to_location_on_android&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;./adb pull path_to_file_on_android&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;./adb --help&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-size: x-small;"&gt;And most importantly... if you have an APK downloaded or compiled for Android, and you want to install it, just use:&lt;br /&gt;&lt;br /&gt;./adb install blabla.apk&lt;br /&gt;&lt;br /&gt;Voila!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&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/7377057412446264720-7915920642188025644?l=antipastohw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antipastohw.blogspot.com/feeds/7915920642188025644/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7377057412446264720&amp;postID=7915920642188025644' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/7915920642188025644'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/7915920642188025644'/><link rel='alternate' type='text/html' href='http://antipastohw.blogspot.com/2010/11/beginners-tutorial-to-programming.html' title='A Beginner&apos;s Tutorial to Programming Android on the Beagleboard'/><author><name>Matt</name><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-7377057412446264720.post-2941094762780179473</id><published>2010-10-26T03:27:00.000-07:00</published><updated>2010-10-26T03:27:32.594-07:00</updated><title type='text'>Using the GeoShield to build an Open Source Hardware GPS</title><content type='html'>&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;I've been trying to get a GPS sensor working with my &lt;a href="http://www.liquidware.com/shop/show/ARD/Arduino+Duemilanove"&gt;Arduino&lt;/a&gt; for a long time. And without fail, they just don't work. Don't get me wrong - the ones that other people have made work, but they're spotty, and you have to be in the right corner, the right place at the right time. And if a leaf flitters off a tree at just the right time, the dew moisture creates enough interference that the signal's lost. And just when the signal comes back, it fails again just as quickly and then I barely get enough data points to recreate anything interesting.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Not any more &amp;gt;:-)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;There may be cheaper GPS shields out there, but that's not the point. The point of the &lt;a href="http://www.liquidware.com/shop/show/SEN-GEO/GeoShield"&gt;GeoShield&lt;/a&gt; is that it works, and it's competitive with commercial off-the-shelf GPS's. Out of the box. No coding, no digging around, it just works. And if you combine it and a TouchShield Slide, you have a completely portable DIY GPS... that is as powerful as most of the mainstream GPS's out there you can buy off the shelf.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;This is the only GPS shield I've been able to test reliably in cities, from cars, and inside cases. So the steps to create an Arduino GPS with the GeoShield are pretty straight forward. You'll need:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: x-small;"&gt;An &lt;a href="http://www.liquidware.com/shop/show/ARD/Arduino+Duemilanove"&gt;Arduino&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: x-small;"&gt;A &lt;a href="http://www.liquidware.com/shop/show/SEN-GEO/GeoShield"&gt;GeoShield&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: x-small;"&gt;Optional &lt;a href="http://www.liquidware.com/shop/show/TSL/TouchShield+Slide"&gt;TouchShield Slide&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.liquidware.com/shop/show/DWX/DoubleWide+ExtenderShield"&gt;&lt;span style="font-size: x-small;"&gt;DoubleWide ExtenderShield&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://www.liquidware.com/shop/show/BP/Lithium+Backpack"&gt;Lithium BackPack&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size: x-small;"&gt;The Lithium BackPack goes in back of the DoubleWide ExtenderShield next to the Arduino, and the TouchShield Slide and the GeoShield go on top. Like this:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://4.bp.blogspot.com/_pGsJFsc5Buc/TManqcsWoxI/AAAAAAAAA1c/TR_LjzKlp7s/s1600/Arduino+GeoShield+GPS+Accelerometer+Compass+Frontside+Twist.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_pGsJFsc5Buc/TManqcsWoxI/AAAAAAAAA1c/TR_LjzKlp7s/s1600/Arduino+GeoShield+GPS+Accelerometer+Compass+Frontside+Twist.jpg" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: x-small;"&gt;Here's a side angle:&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://3.bp.blogspot.com/_pGsJFsc5Buc/TManq-ol--I/AAAAAAAAA1k/wwXwOYzJCdU/s1600/Arduino+GeoShield+GPS+Accelerometer+Compass+Angled+Edge.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_pGsJFsc5Buc/TManq-ol--I/AAAAAAAAA1k/wwXwOYzJCdU/s1600/Arduino+GeoShield+GPS+Accelerometer+Compass+Angled+Edge.jpg" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: x-small;"&gt;And here's a funky perspective shot:&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://2.bp.blogspot.com/_pGsJFsc5Buc/TManqI-l4VI/AAAAAAAAA1Y/o6gQMPcFwso/s1600/Arduino+GeoShield+GPS+Accelerometer+Compass+Perspective.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_pGsJFsc5Buc/TManqI-l4VI/AAAAAAAAA1Y/o6gQMPcFwso/s1600/Arduino+GeoShield+GPS+Accelerometer+Compass+Perspective.jpg" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: x-small;"&gt;As you can see from the pictures, the &lt;a href="http://www.liquidware.com/shop/show/SEN-GEO/GeoShield"&gt;GeoShield&lt;/a&gt; has a GPS sensor smack dab in the middle of the shield, with retro wireless solder pads emanating from it, as if to replicate a 1940's moving picture radio tower. On top of the GeoShield are a line of 4 user-controllable I/O pins (for debugging, of course), and then a GPS Rx and Tx pin, and finally a power white LED that tells you when it's powered up and has a signal. It's specifically designed this way because of all my hours of frustration with other GPS shields, wondering, "Does this thing ever work? Is it even powered on?" So this shield is designed to eliminate variables quickly, and get you up and running as quickly as possible. Oh yeah, and it also has a built in 3-axis accelerometer and compass, so it deserves it's name, "GeoShield".&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_pGsJFsc5Buc/TMasbU_0pUI/AAAAAAAAA1s/sc3oIqorlxY/s1600/GeoShield_Mounted.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://2.bp.blogspot.com/_pGsJFsc5Buc/TMasbU_0pUI/AAAAAAAAA1s/sc3oIqorlxY/s400/GeoShield_Mounted.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Here's &lt;a href="http://www.liquidware.com/apps/show/90"&gt;a link to the Open Source App Store &lt;/a&gt;app code that shows off a simple Night Rider program, plus polling of the GPS, Compass and 3-axis Accelerometer. The heart of the code is built into the Antipasto Arduino IDE function set:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;code&gt;&lt;br /&gt;void loop() {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; gps_msg = geo.readGPS();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; /* Print the GPS data */&lt;br /&gt;&amp;nbsp;&amp;nbsp; Serial.print(gps_msg);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; /* Parse GPS data and send to the PC */&lt;br /&gt;&amp;nbsp;&amp;nbsp; //for (int i=0; i&amp;lt; strlen(gps_msg); i++) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; //&amp;nbsp; handleGPS(gps_msg[i]);&lt;br /&gt;&amp;nbsp;&amp;nbsp; //}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; /* Print the Compass heading, Accel X, Accel Y, Accel Z data */&lt;br /&gt;&amp;nbsp;&amp;nbsp; sprintf(out, "$GEO,H%d,X%d,Y%d,Z%d\n", comp, x, y, z);&amp;nbsp;&amp;nbsp; &lt;br /&gt;comp = geo.readCompass();&lt;br /&gt;x = geo.readAccelX();&lt;br /&gt;y = geo.readAccelY();&lt;br /&gt;z = geo.readAccelZ();&lt;br /&gt;&lt;br /&gt;//&amp;nbsp;&amp;nbsp; delay(100);&lt;br /&gt;&amp;nbsp;&amp;nbsp; Serial.print(out);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; Sensor.print("co", comp);&lt;br /&gt;&amp;nbsp;&amp;nbsp; Sensor.print("xa", x);&lt;br /&gt;&amp;nbsp;&amp;nbsp; Sensor.print("ya", y);&lt;br /&gt;&amp;nbsp;&amp;nbsp; Sensor.print("za", z);&lt;br /&gt;}&lt;/code&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Here's a video showing it off:&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/cfIafjckmTo?hl=en&amp;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/cfIafjckmTo?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;/span&gt;&lt;/div&gt;&lt;span style="font-size: x-small;"&gt;The coolest part is that if you load up the pass-through sketch onto the Arduino, you can uncomment the coupe of lines that say, "print out to the PC", and then you can plug it in, load up a program like GPSFox, and get this:&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/k6LX_E1CnbU?hl=en&amp;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/k6LX_E1CnbU?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;/span&gt;&lt;/div&gt;&lt;span style="font-size: x-small;"&gt;Voila! Proof that it works - even from inside a friend's apartment!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_pGsJFsc5Buc/TManofkuaeI/AAAAAAAAA1I/ZgWSxQeSbVQ/s1600/Arduino+GeoShield+GPS+GPSFox+Handheld.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_pGsJFsc5Buc/TManofkuaeI/AAAAAAAAA1I/ZgWSxQeSbVQ/s1600/Arduino+GeoShield+GPS+GPSFox+Handheld.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Justin just uploaded the &lt;a href="http://www.liquidware.com/shop/show/SEN-GEO/GeoShield"&gt;GeoShield over onto the Liquidware Shop, here&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/7377057412446264720-2941094762780179473?l=antipastohw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antipastohw.blogspot.com/feeds/2941094762780179473/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7377057412446264720&amp;postID=2941094762780179473' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/2941094762780179473'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/2941094762780179473'/><link rel='alternate' type='text/html' href='http://antipastohw.blogspot.com/2010/10/using-geoshield-to-build-open-source.html' title='Using the GeoShield to build an Open Source Hardware GPS'/><author><name>Matt</name><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/_pGsJFsc5Buc/TManqcsWoxI/AAAAAAAAA1c/TR_LjzKlp7s/s72-c/Arduino+GeoShield+GPS+Accelerometer+Compass+Frontside+Twist.jpg' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7377057412446264720.post-7426545401581536139</id><published>2010-10-24T21:50:00.000-07:00</published><updated>2010-10-24T21:50:04.293-07:00</updated><title type='text'>Up and running on the Android DIY Development Kit in 180 seconds</title><content type='html'>&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;i&gt;Android is a high performance open source hardware and software &lt;a href="http://www.liquidware.com/shop/show/BB-AND-DEV/Android+Hardware+Development+Kit"&gt;development system platform&lt;/a&gt; - but you have to really enjoy googling around for relatively funky command line arguments to get a device up and running for the first time. This post is meant to save anyone who's picking up Android for the first time some serious time... I really wanted to name this "in 60 seconds or less" but I timed myself, and I'm being realistic - it takes about 3 minutes.&lt;/i&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_pGsJFsc5Buc/TMUL6xOeM4I/AAAAAAAAA00/d5vOh0XmfRw/s1600/Hacking+Android+on+the+Desk.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="360" src="http://2.bp.blogspot.com/_pGsJFsc5Buc/TMUL6xOeM4I/AAAAAAAAA00/d5vOh0XmfRw/s640/Hacking+Android+on+the+Desk.JPG" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;The &lt;a href="http://android-developers.blogspot.com/"&gt;google guys knew what they were doing&lt;/a&gt;, or at least did a great job building something pretty cool that works. Chris and I have been spending a decent amount of time learning how to program Android, and so I figured I'd write up a brief tutorial for anyone out there that doesn't want to spend nearly as much time as it took us to figure it out.&lt;br /&gt;&lt;br /&gt;The first step in programming &lt;a href="http://developer.android.com/sdk/index.html"&gt;Android is to download the Android SDK&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;On Ubuntu Linux, I downloaded the SDK into the home directory, and unzipped / untarred it. The next step is to get the &lt;a href="http://www.liquidware.com/shop/show/BB-AND-DIY/Android+DIY+Starter+Kit+"&gt;Android DIY Starter Kit&lt;/a&gt; or the &lt;a href="http://www.liquidware.com/shop/show/BB-AND-DEV/Android+Hardware+Development+Kit"&gt;Hardware Development Kit&lt;/a&gt; recognizing on the USB port. The next step involves plugging a USB cable into the side of the gadget. Once it's in, run the command:&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;lsusb&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_pGsJFsc5Buc/TMUL59hL7-I/AAAAAAAAA0w/9_ozVG32Ow0/s1600/Connecting+the+Android+Gadget+to+USB.JPG" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="360" src="http://3.bp.blogspot.com/_pGsJFsc5Buc/TMUL59hL7-I/AAAAAAAAA0w/9_ozVG32Ow0/s640/Connecting+the+Android+Gadget+to+USB.JPG" width="640" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;I get a bunch of Bus 001 through Bus 005, followed by Device blablabla information. Here's the trick: you want to find the ID of the Android device, so run lsusb while the device is unplugged, and then run it again. On my computer, the line that changes when the Android gadget is plugged in is:&lt;br /&gt;&lt;br /&gt;Bus 001 Device 004: ID 18d1:9018&lt;br /&gt;&lt;br /&gt;Ok. Now create a file called "51-android.rules". See the part in the line above that says, "18d1"? and "Device 004"? That's idVendor and idProduct respectively. So change those values in the file content below:&lt;br /&gt;&lt;br /&gt;SUBSYSTEMS=="usb"&lt;br /&gt;ATTRS{idVendor}=="18d1",&lt;br /&gt;ATTRS{idProduct}=="0004",&lt;br /&gt;MODE="0666"&lt;br /&gt;&lt;br /&gt;Then copy the file here:&lt;br /&gt;&lt;br /&gt;/etc/udev/rules.d/51-android.rules&lt;br /&gt;&lt;br /&gt;This is a rather convoluted and manual way to get the Ubuntu Linux OS recognizing the Android Gadget as a native Android device. Now, you can cd into the SDK directory, and type:&lt;br /&gt;&lt;br /&gt;./adb devices&lt;br /&gt;&lt;br /&gt;And the device should show up. This is what I get:&lt;br /&gt;&lt;br /&gt;List of devices attached&lt;br /&gt;20100720 device&lt;br /&gt;&lt;br /&gt;Now I can use this command to get access to the Android Shell:&lt;br /&gt;&lt;br /&gt;./adb shell&lt;br /&gt;&lt;br /&gt;To copy files on and off of the Android gadget, use these commands:&lt;br /&gt;&lt;br /&gt;./adb push&lt;br /&gt;./adb pull&lt;br /&gt;./adb --help&lt;br /&gt;&lt;br /&gt;And most importantly... if you have an APK downloaded or compiled for Android, and you want to install it, just use:&lt;br /&gt;&lt;br /&gt;./adb install blabla.apk&lt;br /&gt;&lt;br /&gt;Voila!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7377057412446264720-7426545401581536139?l=antipastohw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antipastohw.blogspot.com/feeds/7426545401581536139/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7377057412446264720&amp;postID=7426545401581536139' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/7426545401581536139'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/7426545401581536139'/><link rel='alternate' type='text/html' href='http://antipastohw.blogspot.com/2010/10/up-and-running-on-android-diy.html' title='Up and running on the Android DIY Development Kit in 180 seconds'/><author><name>Matt</name><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/_pGsJFsc5Buc/TMUL6xOeM4I/AAAAAAAAA00/d5vOh0XmfRw/s72-c/Hacking+Android+on+the+Desk.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7377057412446264720.post-6284617721961991398</id><published>2010-10-19T09:28:00.000-07:00</published><updated>2010-10-19T09:28:00.381-07:00</updated><title type='text'>Introducing the DIY Android Gadget Starter Kit</title><content type='html'>This past weekend, Chris and I hacked Android onto the Beagleboard Embedded Gadget Pack. It was the culmination of about 3 weeks worth of working straight through, sleeping very little, and consuming many &lt;a href="http://antipastohw.blogspot.com/2010/10/how-to-turn-beagle-gadgetpack-into.html"&gt;ASCII bunsen burner Red Bull's&lt;/a&gt; :-) The result is the &lt;a href="http://www.liquidware.com/shop/show/BB-AND-DIY/Android+DIY+Starter+Kit+"&gt;DIY Android Gadget Starter Kit&lt;/a&gt;, which includes everything anyone would want or need to get started programming Android hardware and software applications, and to make a custom &lt;a href="http://www.android.com/"&gt;Android device&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Here's a picture of the &lt;a href="http://www.liquidware.com/shop/show/BB-AND-DIY/Android+DIY+Starter+Kit+"&gt;Android DIY kit&lt;/a&gt; assembled:&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_pGsJFsc5Buc/TLv_gwQaGTI/AAAAAAAAA0g/QoeDJsYSGDg/s1600/Android+DIY+Starter+Fading.jpg" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://3.bp.blogspot.com/_pGsJFsc5Buc/TLv_gwQaGTI/AAAAAAAAA0g/QoeDJsYSGDg/s400/Android+DIY+Starter+Fading.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;The &lt;a href="http://www.liquidware.com/shop/show/BB-AND-DIY/Android+DIY+Starter+Kit+"&gt;DIY Android Modular Gadget&lt;/a&gt; development kit uses the same base modules as the &lt;a href="http://www.liquidware.com/shop/show/BB-SCICAL/Open+SciCal+X101"&gt;Open SciCal&lt;/a&gt;, which got &lt;a href="http://www.wired.com/gadgetlab/tag/scical/"&gt;written up on Wired&lt;/a&gt; (thanks!), and also as the &lt;a href="http://www.liquidware.com/shop/show/BB-ULT/Ultimate+Beagle+Gadget+Pack"&gt;Embedded Beagleboard Gadget Pack&lt;/a&gt;, which has been really popular with embedded systems engineers:&lt;br /&gt;&lt;div style="text-align: center;"&gt;&amp;nbsp;&lt;a href="http://2.bp.blogspot.com/_pGsJFsc5Buc/TLv_idVw-rI/AAAAAAAAA0s/bXH_BzTAqsM/s1600/Beagle_Embedded_Starter_Kit.jpg" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://2.bp.blogspot.com/_pGsJFsc5Buc/TLv_idVw-rI/AAAAAAAAA0s/bXH_BzTAqsM/s400/Beagle_Embedded_Starter_Kit.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;This is a nice perspective shot of the Android home menu, where the apps are typically stored and can be launched. The settings menu and options are fully functional, and the system comes preloaded with &lt;a href="http://code.google.com/p/android-scripting/"&gt;SL4A, a high performance scripting language that lets programmers write GUI's in Perl or Python&lt;/a&gt; (and a handful of other scripting languages): &lt;br /&gt;&lt;div style="text-align: center;"&gt;&amp;nbsp;&lt;a href="http://2.bp.blogspot.com/_pGsJFsc5Buc/TLv_hxdX5AI/AAAAAAAAA0o/12-47USsOnk/s1600/Android_Menu.jpg" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://2.bp.blogspot.com/_pGsJFsc5Buc/TLv_hxdX5AI/AAAAAAAAA0o/12-47USsOnk/s400/Android_Menu.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Justin uploaded all of the modules, components, and preprogrammed SD cards onto the &lt;a href="http://www.liquidware.com/shop"&gt;Liquidware&lt;/a&gt; shop over &lt;a href="http://www.liquidware.com/shop/show/BB-AND-DIY/Android+DIY+Starter+Kit+"&gt;here&lt;/a&gt;... and &lt;a href="http://www.liquidware.com/shop/show/BB-AND-DEV/Android+Hardware+Development+Kit"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7377057412446264720-6284617721961991398?l=antipastohw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antipastohw.blogspot.com/feeds/6284617721961991398/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7377057412446264720&amp;postID=6284617721961991398' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/6284617721961991398'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/6284617721961991398'/><link rel='alternate' type='text/html' href='http://antipastohw.blogspot.com/2010/10/introducing-diy-android-gadget-starter.html' title='Introducing the DIY Android Gadget Starter Kit'/><author><name>Matt</name><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://3.bp.blogspot.com/_pGsJFsc5Buc/TLv_gwQaGTI/AAAAAAAAA0g/QoeDJsYSGDg/s72-c/Android+DIY+Starter+Fading.jpg' height='72' width='72'/><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7377057412446264720.post-884386109251981162</id><published>2010-10-18T08:38:00.000-07:00</published><updated>2010-10-18T08:38:00.405-07:00</updated><title type='text'>Breaking Hardware Barriers: Linux vs. Android Gadgets</title><content type='html'>Here's a quick video showing off the DIY Android Modular Gadget I made with Chris:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/TLYmSSzWjI0?hl=en&amp;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/TLYmSSzWjI0?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;/div&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Motivation&lt;/span&gt;&lt;br /&gt;As it turns out, getting Android up and running on the Beagleboard is not too hard. Others have done it before. The hard part is doing it on a little modular gadget, that you can touch and type on the screen with natively, like any other Android gadget.&lt;br /&gt;&lt;br /&gt;Ever since Google started controlling how many Android development kits are released, developers have had very few options for programming on Android. My goal was to make an Android Development Kit that significantly reduced the amount of time it normally takes to integrate custom hardware into the Android development.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Breaking barriers&lt;/span&gt;&lt;br /&gt;Rapid prototyping with open source hardware isn't easy. It's certainly easier today than it was 5 or 10 years ago, and I like to think based on the emails and messages and calls I've gotten from friends and fellow developers, that projects like the Open SciCal and the Linux-based Beagleboard Embedded Starter Kit help.&lt;br /&gt;&lt;br /&gt;In the last couple months, I've been hacking away on the Linux modular gadget platform, and for most applications, it's amazingly fast and sharp. The only time it's lacking a bit is when it comes to developing a quick and dirty GUI.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Linux vs. Android&lt;/span&gt;&lt;br /&gt;Embedded systems development can take two very different forms. On the one hand, it can rely heavily on low level programming languages, and a native Linux cross-language, multi-compiler, shell-integrated environment. This is useful for building applications like scientific calculators, data loggers, industrial design and automation controllers. Basically, it's good for devices that don't need glitzy GUI's, but rather, need to do heavy duty analytical work.&lt;br /&gt;&lt;br /&gt;On the other hand, sometimes embedded systems development is lighter on the analysis, and relies more heavily on sensor polling and on presenting real-time data readouts from sensors to a user. It might be a remote control, home automation gadget, LAN network diagnostic utility, etc. That's when Android shines, because it makes developing a clean GUI a piece of cake. I've been quite impressed as I've learned more and more about Android, over the past few weeks. As I've hacked away at the underlying codebase, I've learned quite a bit about how the developers of Android approached things, and I've been impressed.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;The Best Tool for the Job&lt;/span&gt;&lt;br /&gt;But that doesn't mean I'm leaving Linux behind... I now have 2 supertools: Linux for industrial and analytical work, and Android for more user-friendly, sensor-heavy apps.&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/-uv_kIdA1Tw?hl=en&amp;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/-uv_kIdA1Tw?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;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_pGsJFsc5Buc/TLv8RaUrCYI/AAAAAAAAA0c/iAnTlNwoWp0/s1600/Android+BeagleBoard+Gadget+Liquidware+Front+Menu.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://2.bp.blogspot.com/_pGsJFsc5Buc/TLv8RaUrCYI/AAAAAAAAA0c/iAnTlNwoWp0/s400/Android+BeagleBoard+Gadget+Liquidware+Front+Menu.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;I posted some more pictures up on the &lt;a href="http://www.flickr.com/photos/22071518@N04/"&gt;flickr page&lt;/a&gt;...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7377057412446264720-884386109251981162?l=antipastohw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antipastohw.blogspot.com/feeds/884386109251981162/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7377057412446264720&amp;postID=884386109251981162' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/884386109251981162'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/884386109251981162'/><link rel='alternate' type='text/html' href='http://antipastohw.blogspot.com/2010/10/breaking-hardware-barriers-linux-vs.html' title='Breaking Hardware Barriers: Linux vs. Android Gadgets'/><author><name>Matt</name><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/_pGsJFsc5Buc/TLv8RaUrCYI/AAAAAAAAA0c/iAnTlNwoWp0/s72-c/Android+BeagleBoard+Gadget+Liquidware+Front+Menu.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7377057412446264720.post-3830097716048514031</id><published>2010-10-18T00:37:00.000-07:00</published><updated>2010-10-18T00:37:00.154-07:00</updated><title type='text'>Android Hacked onto the BeagleBoard OSHW GadgetPack ... with avengance</title><content type='html'>&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;The time is 3:27 am on the East Coast as I write this. It's Sunday, I have work tomorrow morning.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;I'm happy to say... Android has now officially been cracked onto the &lt;a href="http://www.liquidware.com/shop/show/BB-AND-DIY/Android+DIY+Starter+Kit+"&gt;Beagle GadgetPack&lt;/a&gt;. Chris and I just finished hacking it onto the &lt;a href="http://www.liquidware.com/shop/show/BB-C4/BeagleBoard+C4"&gt;BeagleBoard&lt;/a&gt;, with a fully-integrated &lt;a href="http://www.liquidware.com/shop/show/BB-BT/BeagleTouch"&gt;touchscreen OLED screen&lt;/a&gt;, overlay, and interface at the driver level to the &lt;a href="http://www.liquidware.com/shop/show/BB-BT/BeagleTouch"&gt;BeagleTouch&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_pGsJFsc5Buc/TLv2NdZ3T7I/AAAAAAAAAz4/25A_gFuXLbs/s1600/Android+BeagleBoard+Gadget+Liquidware+In+Hand.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_pGsJFsc5Buc/TLv2NdZ3T7I/AAAAAAAAAz4/25A_gFuXLbs/s1600/Android+BeagleBoard+Gadget+Liquidware+In+Hand.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;It connects &lt;a href="http://www.liquidware.com/shop/show/BA-WIFI/Wireless+G+USB+Adapter"&gt;to the internet&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;It loads webpages, it runs scripts. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;It reads and interfaces to sensors.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;The touchscreen supports drag, drag and &lt;a href="http://www.youtube.com/watch?v=TLYmSSzWjI0"&gt;drop, sliding, scrolling, and gesturing&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;It can download and run native Android APK files off of Open APK app stores.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;It even runs the &lt;a href="http://code.google.com/p/android-scripting/"&gt;SL4A&lt;/a&gt; rapid prototyping environment that is &lt;a href="http://code.google.com/p/android-scripting/"&gt;scriptable in Perl&lt;/a&gt; and Python.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;This was no easy task. Nick, Will, Chris, Mike all helped here and there with driver help and ideas for how to compile around the early driver problems. Thanks to the &lt;a href="http://www.linkedin.com/pub/gerald-coley/5/353/b0b"&gt;TI guys (esp. Gerald!)&lt;/a&gt;, and the &lt;a href="http://groups.google.com/group/beagleboard?pli=1"&gt;Google Groups community&lt;/a&gt; too for their help... and for the guys at embinux.org for a good starting point reference. And of course some special help from &lt;a href="http://developer.android.com/sdk/index.html"&gt;Google themselves (names will remain anonymous because I'd hate to see someone lose their job for supporting a hacker like me)&lt;/a&gt;... who came in at the last minute to help me crack open the driver access level, which allowed me to make a user-space display driver to the BeagleTouch... FROM SCRATCH.&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_pGsJFsc5Buc/TLv2O0wYWDI/AAAAAAAAA0E/1gdCRSsowo0/s1600/Android+BeagleBoard+Gadget+Liquidware+Getting+Served.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_pGsJFsc5Buc/TLv2O0wYWDI/AAAAAAAAA0E/1gdCRSsowo0/s1600/Android+BeagleBoard+Gadget+Liquidware+Getting+Served.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;i&gt;Now the most important part of all of this is the question I got from Jake, when I talked to him 3 weeks ago: why?&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Because I'm sick of the iPad. Every time you go into Starbucks, you see someone &lt;a href="http://kotaku.com/5509117/im-the-asshole-at-starbucks-with-the-ipad"&gt;digitally frolicking around on their apps&lt;/a&gt;, clickety clacking around with glee, pinching and spinning their fingers around a million times just to do what you used to be able to do with CNTRL-+ or CNTRL-- to zoom in and out just as quickly, all the while being wholly restricted and unable to compile any of their own apps natively, and god forbid trying to access the driver level. &lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_pGsJFsc5Buc/TLv4VT06UFI/AAAAAAAAA0Y/kaJ88bnJLNU/s1600/IPad+in+Starbucks.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="192" src="http://4.bp.blogspot.com/_pGsJFsc5Buc/TLv4VT06UFI/AAAAAAAAA0Y/kaJ88bnJLNU/s320/IPad+in+Starbucks.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-size: x-small;"&gt;The problem is simple: I am fundamentally against the entire principle and idea of the phrase, "&lt;a href="http://mashable.com/2010/10/11/apple-trademark/"&gt;there's an app for that(TM)&lt;/a&gt;." (Are you serious?!?! I have to put a "Trademark" on that?!?) I think that little phrase is endemic of everything that's going wrong with the hacker world today. It symbolizes the end of an era. It is the antithesis of open, and the optimum of control and limitation.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;I don't want an app for that. I want a programming language and access to some low level OS function for that. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;I'm fighting back, and this Android hack is the first step in the war. The problem with the philosophy of "there's an app for that" is that it's training the new up and coming programmers and would-be hackers and developers that if you want some hitherto unavailable functionality for your device, you should go onto a tightly controlled ecosystem of apps (iTunes app store), and pay money for a limited, controlled, censored, channel monitored, Apple-sanctioned little app that took WAY too long to write because the darn specs are undocumented.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;No thank you. I want to help teach, train, and motivate a new breed of far more open sourced and efficient hardware hackers...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://www.time.com/time/business/article/0,8599,2023452,00.html"&gt;Apple is going to lose&lt;/a&gt;. Because hackers are going to use the platform that is the most extensible, most hackable, and most fun to use. Programming the iPod and iPad and app store-compatible apps is an exercise in painful, torturous sacrifice. You start out development thinking you want to build a simple little functioning app. Then you find out, function by function, that Apple has restricted that functionality to a mere fragment of it's former self. Useless!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Android is where it's at. You get driver control if you need it, you have a multitude of programming languages, an Open Source app distribution channel, and raw sensor channels for interfacing with all kinds of sensors (stay tuned for some hacks on this to come). Android is literally the perfect rapid prototyping platform. It is just high level enough to be efficient, it's just low level enough to enable embedded applications development. And it's Open Source, so if you need to, you can just recompile the whole darn thing from scratch yourself if you want to.&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_pGsJFsc5Buc/TLv2QMwyLLI/AAAAAAAAA0M/2Ed5g6YGGvU/s1600/Android+BeagleBoard+Gadget+Liquidware+Front+Menu+Zoomed+Out.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_pGsJFsc5Buc/TLv2QMwyLLI/AAAAAAAAA0M/2Ed5g6YGGvU/s1600/Android+BeagleBoard+Gadget+Liquidware+Front+Menu+Zoomed+Out.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-size: x-small;"&gt;And that's powerful. In the coming weeks, I'm going to do  my best to integrate open source hardware and open source software  together, using this newly cracked &lt;a href="http://www.liquidware.com/shop/show/BB-AND-DIY/Android+DIY+Starter+Kit+"&gt;Android Gadget as my platform&lt;/a&gt;...  bring it on!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&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/7377057412446264720-3830097716048514031?l=antipastohw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antipastohw.blogspot.com/feeds/3830097716048514031/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7377057412446264720&amp;postID=3830097716048514031' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/3830097716048514031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/3830097716048514031'/><link rel='alternate' type='text/html' href='http://antipastohw.blogspot.com/2010/10/android-hacked-onto-beagleboard-oshw.html' title='Android Hacked onto the BeagleBoard OSHW GadgetPack ... with avengance'/><author><name>Matt</name><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/_pGsJFsc5Buc/TLv2NdZ3T7I/AAAAAAAAAz4/25A_gFuXLbs/s72-c/Android+BeagleBoard+Gadget+Liquidware+In+Hand.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7377057412446264720.post-8453513717295909608</id><published>2010-10-16T19:21:00.000-07:00</published><updated>2010-10-16T19:21:53.729-07:00</updated><title type='text'>How to turn a Beagle GadgetPack into a digital ASCII bunsen burner</title><content type='html'>&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;i&gt;&lt;span style="font-size: x-small;"&gt;Time for a silly application of modularity... for no intent or purpose, simply demonstrating a Matrix-esque special effect on the front of the &lt;a href="http://www.liquidware.com/shop/show/BB-BT/BeagleTouch"&gt;BeagleTouch module&lt;/a&gt;, running &lt;a href="http://www.linuxfromscratch.org/blfs/view/6.3/general/aalib.html"&gt;aalib&lt;/a&gt;'s ridiculously cool aafire app.&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://2.bp.blogspot.com/_pGsJFsc5Buc/TLpboWnlAKI/AAAAAAAAAzo/ua3r0aUoVZw/s1600/Liquidware+Beagle+Embedded+GadgetPack+Cooler+Digital+RedBull.JPG" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_pGsJFsc5Buc/TLpboWnlAKI/AAAAAAAAAzo/ua3r0aUoVZw/s1600/Liquidware+Beagle+Embedded+GadgetPack+Cooler+Digital+RedBull.JPG" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Will and Chris put together a pretty cool little auto-loading script, and made sure all the &lt;a href="http://www.linuxfromscratch.org/blfs/view/6.3/general/aalib.html"&gt;aalib libraries&lt;/a&gt; were in place (which they were), and it just worked. The cool part is mostly how fast the demo seems to run...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/_3AKnTDH9QU?hl=en&amp;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/_3AKnTDH9QU?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;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Now time for the good part... as every hacker knows, the food pyramid contains 3 essential foods:&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://www.redbull.com/"&gt;Red Bull (drink)&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://en.wikipedia.org/wiki/Pop-Tarts"&gt;Pop Tarts (dessert)&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://www.mattfischer.com/ramen/"&gt;Raman Noodles (entree)&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-size: x-small;"&gt;Yes, they are listed in that order because that is roughly how they stack up in order of mass consumed by me per week. I mean seriously,&amp;nbsp; where would &lt;a href="http://www.linuxplanet.com/linuxplanet/tutorials/6593/1/"&gt;Linux virtual memory&lt;/a&gt;, &lt;a href="http://groups.google.com/group/android-platform/browse_thread/thread/d7813acbb3524bde?pli=1"&gt;Android's driver subsystem&lt;/a&gt;, and &lt;a href="http://rubyonrails.org/"&gt;Ruby on Rails&lt;/a&gt; be, if not for these 3 food groups? I can personally attest to consuming my fair share... not because I particularly like the taste of any of them, but simply because generations of hackers before me have lived on exactly this, and who am I to challenge tradition? (This is getting ridiculous, I know). Many books have been written about programmer and hacker productivity, methods of development, etc. but I might argue that Red Bull, Pop Tarts, and Raman are a radically under-researched productivity tool.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;But suffice to say, a digital ASCII blue fire bunsen burner - although non-functional - sure *looks* cool as heck underneath a can of Red Bull, doesn't it? It must be doing something... I swear it tasted better than my not-so-highly scientifically isolated placebo trial.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;:-)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/BDwHJffU_n4?hl=en&amp;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/BDwHJffU_n4?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;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Ok, here's how to get it up and running on the &lt;a href="http://www.liquidware.com/shop/show/BB-ULT/Ultimate+Beagle+Gadget+Pack"&gt;Beagle Embedded GadgetPack&lt;/a&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Open up a terminal like xterm using the keyboard connected to the USB port on the side of the GadgetPack.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Then, either download this package onto the SD card, or if you have the Wifi Module or Ethernet Module, you can type this directly onto the command to download aalib:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;wget &lt;a href="http://sourceforge.net/projects/aa-project/files/aa-lib/1.2/aalib-1.2.tar.gz"&gt;http://sourceforge.net/projects/aa-project/files/aa-lib/1.2/aalib-1.2.tar.gz&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Untar the archive:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;tar xvf aalib-1.2.tar.gz&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Move to the directory:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;cd aalib-1.2&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Run this command to configure:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;br /&gt;&lt;span style="font-size: x-small;"&gt;./configure --host=localhost&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Then compile the source code:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;make&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;make install&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;And then run, sit back, and enjoy the digital fire that neither keeps you warm, *nor* cools you down, so at least it's not a negative fire, or put in other terms, at least the correlation coefficient between this digital bunsen burner and utility is not negative (R is at worst 0, so ha!):&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;export DISPLAY=:0.0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;xterm -fg red -bg black -e "./aafire"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Voila!&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://3.bp.blogspot.com/_pGsJFsc5Buc/TLpboIqTz4I/AAAAAAAAAzk/7bXwUDpbHBA/s1600/Liquidware+Beagle+Embedded+GadgetPack+Blue+RedBull+Fire.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_pGsJFsc5Buc/TLpboIqTz4I/AAAAAAAAAzk/7bXwUDpbHBA/s1600/Liquidware+Beagle+Embedded+GadgetPack+Blue+RedBull+Fire.JPG" /&gt;&amp;nbsp;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://4.bp.blogspot.com/_pGsJFsc5Buc/TLpbn8-o4qI/AAAAAAAAAzg/JhH0bpgMrew/s1600/Liquidware+Beagle+Embedded+GadgetPack+Blue+ASCII+Fire+AALIB.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_pGsJFsc5Buc/TLpbn8-o4qI/AAAAAAAAAzg/JhH0bpgMrew/s1600/Liquidware+Beagle+Embedded+GadgetPack+Blue+ASCII+Fire+AALIB.JPG" /&gt;&amp;nbsp;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://2.bp.blogspot.com/_pGsJFsc5Buc/TLpboWnlAKI/AAAAAAAAAzo/ua3r0aUoVZw/s1600/Liquidware+Beagle+Embedded+GadgetPack+Cooler+Digital+RedBull.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: x-small;"&gt;For more pictures of the ASCII burner, I've &lt;a href="http://www.flickr.com/photos/22071518@N04/"&gt;uploaded some high res shots at flickr&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/7377057412446264720-8453513717295909608?l=antipastohw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antipastohw.blogspot.com/feeds/8453513717295909608/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7377057412446264720&amp;postID=8453513717295909608' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/8453513717295909608'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/8453513717295909608'/><link rel='alternate' type='text/html' href='http://antipastohw.blogspot.com/2010/10/how-to-turn-beagle-gadgetpack-into.html' title='How to turn a Beagle GadgetPack into a digital ASCII bunsen burner'/><author><name>Matt</name><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/_pGsJFsc5Buc/TLpboWnlAKI/AAAAAAAAAzo/ua3r0aUoVZw/s72-c/Liquidware+Beagle+Embedded+GadgetPack+Cooler+Digital+RedBull.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7377057412446264720.post-1157377092952377391</id><published>2010-10-14T00:33:00.000-07:00</published><updated>2010-10-14T00:33:16.242-07:00</updated><title type='text'>Maker Faire NYC Debrief</title><content type='html'>&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;i&gt;&lt;span style="font-size: x-small;"&gt;I now live in Boston. I used to live in New York. Which made it all the more ironic when it came time to travel down to NYC to attend Maker Faire with Justin, Francis, Will and Mike. As it turns out, the night before we all headed down there, the construction crews decided to tear up a portion of I-95, which naturally meant some lane closures.&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Nothing pumps up the DIY hacker spirit like sitting in traffic for 5 hours staring at this picture from the &lt;a href="http://mainstreetdanbury.blogspot.com/"&gt;Main Street Danbury&lt;/a&gt; blog:&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://4.bp.blogspot.com/_pGsJFsc5Buc/TLatJm46TfI/AAAAAAAAAys/3EA2a1xn6-s/s1600/I95traffic100103.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/_pGsJFsc5Buc/TLatJm46TfI/AAAAAAAAAys/3EA2a1xn6-s/s320/I95traffic100103.jpg" width="252" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="font-size: x-small;"&gt;Hmmm, hmmm... I feel like that red card is a lot like the feeling I get when the bootloader doesn't load on the flash ram chip on the topside of the &lt;a href="http://www.liquidware.com/shop/show/BB-C4/BeagleBoard+C4"&gt;BeagleBoard OMAP&lt;/a&gt;, and I have to solder in my own debug cables to test the signal pins to make sure they work. And that truck is like the weight in my arm after 2 hours of solid soldering... and the right hand lane is the re-routing schematic of envy... yes. &lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;But once we got to &lt;a href="http://makerfaire.com/"&gt;Maker Faire&lt;/a&gt;, the situation changed dramatically (it did take about a 30 minute detoxing whereby we desensitized to the intense traffic around Brooklyn and Manhattan). And here we were, to the right, and next to &lt;a href="http://www.sparkfun.com/commerce/categories.php"&gt;Nate from Sparkfun&lt;/a&gt;... Here's Mike and Will getting swamped with questions :-) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://2.bp.blogspot.com/_pGsJFsc5Buc/TLatNEfattI/AAAAAAAAAy4/PPsKC5w8rLA/s1600/Saturday+Morning.JPG" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_pGsJFsc5Buc/TLatNEfattI/AAAAAAAAAy4/PPsKC5w8rLA/s1600/Saturday+Morning.JPG" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;I like to try to construct a pyramid of &lt;a href="http://www.liquidware.com/shop/show/TSL/TouchShield+Slide"&gt;TouchShield Slide&lt;/a&gt; boxes just for kicks:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://3.bp.blogspot.com/_pGsJFsc5Buc/TLatMib4_qI/AAAAAAAAAy0/xBcbGD6cVEM/s1600/The+Box+Pyramid.JPG" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_pGsJFsc5Buc/TLatMib4_qI/AAAAAAAAAy0/xBcbGD6cVEM/s1600/The+Box+Pyramid.JPG" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;I walked around, and saw a few fun pictures. Like this one, which although looks fun to some, is not really my cup of spinning tea. The whole time I'd be thinking, I really hope those welding points worked on the central axis tower:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://4.bp.blogspot.com/_pGsJFsc5Buc/TLatNikOYDI/AAAAAAAAAzA/QeRtN9YYUm0/s1600/Pulse+Jet+Merry+Go+Round.JPG" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_pGsJFsc5Buc/TLatNikOYDI/AAAAAAAAAzA/QeRtN9YYUm0/s1600/Pulse+Jet+Merry+Go+Round.JPG" /&gt;&lt;/a&gt;&lt;/span&gt; &lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;Here was a view from outside the master tent:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://1.bp.blogspot.com/_pGsJFsc5Buc/TLatOzaVSTI/AAAAAAAAAzM/7L3ixaO9tG0/s1600/Maker+Pavilion+Tent.JPG" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_pGsJFsc5Buc/TLatOzaVSTI/AAAAAAAAAzM/7L3ixaO9tG0/s1600/Maker+Pavilion+Tent.JPG" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://4.bp.blogspot.com/_pGsJFsc5Buc/TLatMXticVI/AAAAAAAAAyw/pQN7vSUrKd0/s1600/Vin+Marshall%27s+Propane+Cannon.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;/a&gt;I try to show up with as many projects as possible, and here are a few using the BeagleBoard and &lt;a href="http://www.liquidware.com/shop/show/BB-BT/BeagleTouch"&gt;BeagleTouch&lt;/a&gt;:&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&lt;a href="http://3.bp.blogspot.com/_pGsJFsc5Buc/TLatP4qVO_I/AAAAAAAAAzY/tbsFGN9Qknk/s1600/Beagle+Gadgets.JPG" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_pGsJFsc5Buc/TLatP4qVO_I/AAAAAAAAAzY/tbsFGN9Qknk/s1600/Beagle+Gadgets.JPG" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://3.bp.blogspot.com/_pGsJFsc5Buc/TLatMib4_qI/AAAAAAAAAy0/xBcbGD6cVEM/s1600/The+Box+Pyramid.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;I want one of these so badly, it's not even funny. I imagine I could do home delivery of DIY kits throughout New England on something like this. Would it be more time intensive and more expensive than UPS or DHL? Yes. Would it be worth it to do spin out donuts in street and driveway on the way to hand delivering a package of &lt;a href="http://www.liquidware.com/shop/show/ARD/Arduino+Duemilanove"&gt;Arduino&lt;/a&gt; and &lt;a href="http://www.liquidware.com/shop/show/BB-C4/BeagleBoard+C4"&gt;BeagleBoard&lt;/a&gt; modules? Absolutely. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://1.bp.blogspot.com/_pGsJFsc5Buc/TLatPcGKPaI/AAAAAAAAAzU/XmfUMPIug6s/s1600/Carnett+PopSci+Jet+Powered+ATV.JPG" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_pGsJFsc5Buc/TLatPcGKPaI/AAAAAAAAAzU/XmfUMPIug6s/s1600/Carnett+PopSci+Jet+Powered+ATV.JPG" /&gt;&lt;/a&gt;&lt;/span&gt; &lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://2.bp.blogspot.com/_pGsJFsc5Buc/TLatNEfattI/AAAAAAAAAy4/PPsKC5w8rLA/s1600/Saturday+Morning.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;/a&gt;It only occurred to me after that this is a picture of everyone systematically walking away from me. The three folks on the left actually turned around right after this and started walking away too. Must have been something I said...&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://4.bp.blogspot.com/_pGsJFsc5Buc/TLatOVP8MwI/AAAAAAAAAzI/G-awrKQXQkM/s1600/NY+Hall+of+Science+2.JPG" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_pGsJFsc5Buc/TLatOVP8MwI/AAAAAAAAAzI/G-awrKQXQkM/s1600/NY+Hall+of+Science+2.JPG" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Here's a picture of Francis showing off a few projects...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://1.bp.blogspot.com/_pGsJFsc5Buc/TLatPDtIVoI/AAAAAAAAAzQ/gR44LFEZ8-k/s1600/Kids+Learning+About+Arduino.JPG" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_pGsJFsc5Buc/TLatPDtIVoI/AAAAAAAAAzQ/gR44LFEZ8-k/s1600/Kids+Learning+About+Arduino.JPG" /&gt;&lt;/a&gt;&lt;/span&gt; &lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;I put a few more pictures up on the &lt;a href="http://www.flickr.com/photos/22071518@N04/?saved=1"&gt;Flickr page&lt;/a&gt; in the original resolution...&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://3.bp.blogspot.com/_pGsJFsc5Buc/TLatP4qVO_I/AAAAAAAAAzY/tbsFGN9Qknk/s1600/Beagle+Gadgets.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: x-small;"&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/7377057412446264720-1157377092952377391?l=antipastohw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antipastohw.blogspot.com/feeds/1157377092952377391/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7377057412446264720&amp;postID=1157377092952377391' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/1157377092952377391'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/1157377092952377391'/><link rel='alternate' type='text/html' href='http://antipastohw.blogspot.com/2010/10/maker-faire-nyc-debrief.html' title='Maker Faire NYC Debrief'/><author><name>Matt</name><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/_pGsJFsc5Buc/TLatJm46TfI/AAAAAAAAAys/3EA2a1xn6-s/s72-c/I95traffic100103.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7377057412446264720.post-7440949383324548681</id><published>2010-10-01T22:08:00.000-07:00</published><updated>2010-10-01T22:36:05.676-07:00</updated><title type='text'>Open Source Hardware Summit Debrief</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;A week ago I went down to NYC and spent a few hours at the &lt;/span&gt;&lt;a style="font-style: italic;" href="http://www.openhardwaresummit.org/"&gt;Open Source Hardware Summit&lt;/a&gt;&lt;span style="font-style: italic;"&gt;. I sat on a panel and discussed with a number of pretty smart individuals, the merits of Open Source legal constructs and what Open Source Hardware is and isn't. A big, heart-felt thank you from me goes out to the organizers, sponsors, and creators of the summit.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Of course, there were so many more thoughts running through my mind than I could possibly share with the group, and I didn't want to monopolize the speaking time, so I took lots of notes. Here are a few of the notes I jotted down:&lt;br /&gt;&lt;br /&gt;-What is the relationship between open source rights and intellectual property protection provided by the government?&lt;br /&gt;&lt;br /&gt;-Is an open source design patentable? Is it copyrightable? Is it trademarkable?&lt;br /&gt;&lt;br /&gt;-Open source hardware designs are getting licensed to hardware builders for rates around 5-10%, yet patented technologies have concepts like compulsory rates of 3%. Does that mean that patented designs might actually be cheaper than open source?&lt;br /&gt;&lt;br /&gt;-Does an open source design have to be recursive and/or fractal? Can you have an open source design that uses proprietary integrated circuit chips? Can you use an open source circuit in a proprietary, closed device?&lt;br /&gt;&lt;br /&gt;-Many of the successful open source hardware projects have in common that they rigorously protect one aspect of their business: &lt;a href="http://www.liquidware.com/shop/show/ARD/Arduino+Duemilanove"&gt;arduino&lt;/a&gt; gives away the board but keeps the brand and trademark, &lt;a href="http://www.liquidware.com/shop/show/BB-C4/BeagleBoard+C4"&gt;beagleboard&lt;/a&gt; gives away the design by keeps the chip gate array design, bug labs gives away the schematics but restricts the inter-module snap-connect interface, &lt;a href="http://www.liquidware.com/shop"&gt;liquidware&lt;/a&gt; gives away the hardware at cost, but keeps the analytical algorithms (e.g. you can buy a "military grade" IXM, but you can't get the code that turns it into a --CLASSIFIED--) Exactly :-)&lt;br /&gt;&lt;br /&gt;-What do you use to base an open source hardware license on? Does it start from a contract that restricts freedom to operate, and use, or does it look more like wills and testament document, where it gives away rights and freedoms?&lt;br /&gt;&lt;br /&gt;-Is the goal of open source to provide freedoms? If so, why does it need a license or contract to restrict rights?&lt;br /&gt;&lt;br /&gt;-What is the relationship between the drivers and motivators of hackers, and the objective of a license? Could you have had open source software without the GNU?&lt;br /&gt;&lt;br /&gt;-What came first: the license, or open source code?&lt;br /&gt;&lt;br /&gt;-What is the "source" part of open source hardware? Does hardware have a standard "source" (no)? How long will it take to get there (a long time)?&lt;br /&gt;&lt;br /&gt;All in all, I think - as always - I'm left with many more questions than answers, but I think that's the point. I don't really know why I do open source hardware, I don't even have to know what it is. But somehow, it feels good to make and produce open electronics, open source code examples that control those electronics, and devices that are in general far more accessible and hackable than previous generations of hardware.&lt;br /&gt;&lt;br /&gt;So I'll keep doing "open source hardware" even though I have no idea what it means, whether the term carries any substance, because... it just feels right!&lt;br /&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/7377057412446264720-7440949383324548681?l=antipastohw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antipastohw.blogspot.com/feeds/7440949383324548681/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7377057412446264720&amp;postID=7440949383324548681' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/7440949383324548681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/7440949383324548681'/><link rel='alternate' type='text/html' href='http://antipastohw.blogspot.com/2010/10/open-source-hardware-summit-debrief.html' title='Open Source Hardware Summit Debrief'/><author><name>Matt</name><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-7377057412446264720.post-1585254556236088972</id><published>2010-09-21T04:54:00.000-07:00</published><updated>2010-09-21T04:54:00.085-07:00</updated><title type='text'>How to build a BeagleBoard-based Open Source Ebook Reader</title><content type='html'>&lt;span style="font-size: x-small;"&gt;&lt;i&gt;Ebook readers were hailed several months ago as the end-all-be-all of digital devices. They were supposed to put books out of business. In effect they have, they've put some book distributors out of business. But somehow, the Ebook itself is somewhat unsatisfying - after all the hoopla, we're left with "just" a screen tablet-like device, with a few buttons and a mini keyboard. It just doesn't feel like there's enough new to it... so I got inspired to build my own as a platform for experimenting with the &lt;a href="http://www.amazon.com/Smart-Things-Ubiquitous-Computing-Experience/dp/0123748992"&gt;"user experience" of Ebooks&lt;/a&gt;.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;I got bored with &lt;a href="http://www.amazon.com/Kindle-Wireless-Reader-3G-Wifi-Graphite/dp/B002FQJT3Q"&gt;my Kindle&lt;/a&gt; after about 20 times using it, and started wanting to hack it. I have a modern form of A.D.D. that makes me want to break open cases and solder memory expansion ports onto any device I touch. There's so much I'd do differently, yet you can't really do any development on it - I don't understand - they should just open it up, and let people like me hack away at it.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;Since Amazon didn't, and doesn't, I decided to turn the &lt;a href="http://www.wired.com/gadgetlab/2010/08/diy-graphing-calculator/"&gt;Open SciCal&lt;/a&gt; into a hackable ebook reader, based on the &lt;a href="http://www.fbreader.org/"&gt;FBReader source code.&lt;/a&gt; This means that it's hackable from the ground up...&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_pGsJFsc5Buc/TJg06qqjG5I/AAAAAAAAAxU/GDUurArcwEw/s1600/Your+Ebook+Reader+Dinner+is+Served.JPG" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://4.bp.blogspot.com/_pGsJFsc5Buc/TJg06qqjG5I/AAAAAAAAAxU/GDUurArcwEw/s400/Your+Ebook+Reader+Dinner+is+Served.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;It's not bad, but there are some things I'd change. Luckily I can, because the source is open and accessible... in fact, it's quite easy to understand - here's the important main function set, from FBReader, which gives a good idea of how approachable the code is (if you know C and C++, that is):&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;void FBReader::openBookInternal(shared_ptr&lt;book&gt; book) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!book.isNull()) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; BookTextView &amp;amp;bookTextView = (BookTextView&amp;amp;)*myBookTextView;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ContentsView &amp;amp;contentsView = (ContentsView&amp;amp;)*myContentsView;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; FootnoteView &amp;amp;footnoteView = (FootnoteView&amp;amp;)*myFootnoteView;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; bookTextView.saveState();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; bookTextView.setModel(0, 0);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; bookTextView.setContentsModel(0);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; contentsView.setModel(0);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; myModel.reset();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; myModel = new BookModel(book);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ZLTextHyphenator::Instance().load(book-&amp;gt;language());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; bookTextView.setModel(myModel-&amp;gt;bookTextModel(), book);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; bookTextView.setCaption(book-&amp;gt;title());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; bookTextView.setContentsModel(myModel-&amp;gt;contentsModel());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; footnoteView.setModel(0);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; footnoteView.setCaption(book-&amp;gt;title());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; contentsView.setModel(myModel-&amp;gt;contentsModel());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; contentsView.setCaption(book-&amp;gt;title());&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Library::Instance().addBook(book);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; Library::Instance().addBookToRecentList(book);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; ((RecentBooksPopupData&amp;amp;)*myRecentBooksPopupData).updateId();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; showBookTextView();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;/book&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/21fqp8p6duE?hl=en&amp;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/21fqp8p6duE?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;/span&gt;&lt;/div&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;The &lt;a href="http://www.liquidware.com/shop/show/BB-ULT/Ultimate+Beagle+Gadget+Pack"&gt;Open Source Ebook reader&lt;/a&gt; is based on a handful of modules:&lt;br /&gt;&lt;br /&gt;-&lt;a href="http://www.liquidware.com/shop/show/BB-C4/BeagleBoard+C4"&gt;BeagleBoard&lt;/a&gt; - the guts of my Ebook uses the TI OMAP&lt;br /&gt;-&lt;a href="http://www.liquidware.com/shop/show/BB-BT/BeagleTouch"&gt;BeagleTouch&lt;/a&gt; - it has a touchscreen OLED screen&lt;br /&gt;-&lt;a href="http://www.liquidware.com/shop/show/BB-BJC/BeagleJuice"&gt;BeagleJuice&lt;/a&gt; - it's powered for 8 hours at a time with lithium ions&lt;br /&gt;-&lt;a href="http://www.fbreader.org/desktop/#source"&gt;FBReader&lt;/a&gt; - open source software, quite nice and hackable&lt;br /&gt;-&lt;a href="http://www.liquidware.com/shop/show/BB-SD4/Liquidware+BeagleBoot+SD+Card"&gt;Liquidware Ebook Boot&lt;/a&gt; - an open source boot SD card with a tweaked version of Angstrom to integrate all the parts&lt;br /&gt;&lt;br /&gt;The base parts are pretty straight-forward, they just snap together and go. If you're a hacker, you could build it all together pretty straightforward-like from source and use Angstrom. But if you're lazy, you can just buy the &lt;a href="http://www.liquidware.com/shop/show/BB-SD/Liquidware+BeagleBoot+SD+Card"&gt;"Ebook Boot" SD card&lt;/a&gt; which took Chris and Will and me about 2 weeks of hacking around to build, from source, from scratch. It includes all of the drivers needed to get the touchscreen working within Linux, and a handful of libraries and scripts to make wifi, power management, screen control, etc. work right out of the box...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;The fully combined stack of modules makes an Ebook: &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_pGsJFsc5Buc/TJg1BiT9g2I/AAAAAAAAAyE/oHVjh9ovF6Y/s1600/Open+Source+Ebook+Reader+Frontside+Twist.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://2.bp.blogspot.com/_pGsJFsc5Buc/TJg1BiT9g2I/AAAAAAAAAyE/oHVjh9ovF6Y/s400/Open+Source+Ebook+Reader+Frontside+Twist.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Here it is from another angle, against a &lt;a href="http://en.wikipedia.org/wiki/Go_%28game%29"&gt;go table&lt;/a&gt; that I built by hand (those lines took forever, and &lt;a href="http://www.acmoore.com/p-28591-hot-cutting-tool-.aspx"&gt;were done with a heat iron,&lt;/a&gt; for wood carving, but it was so worth it):&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_pGsJFsc5Buc/TJg09pyErGI/AAAAAAAAAxs/tSrrqRQggKU/s1600/Open+Source+Ebook+Reader+Side+Shot.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://1.bp.blogspot.com/_pGsJFsc5Buc/TJg09pyErGI/AAAAAAAAAxs/tSrrqRQggKU/s400/Open+Source+Ebook+Reader+Side+Shot.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;This photo is probably the most "ironic" given it's a shot perhaps the most purpose-built hackable Ebook reader on top of the perhaps the most purpose-built non-hackable devices ever: a Mac laptop.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_pGsJFsc5Buc/TJg8jNd2hSI/AAAAAAAAAyk/TCfe4SL7vTA/s1600/Open+Source+Ebook+Reader+On+Top+of+The+Most+Proprietary+Unhackable+Laptop+Ever.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://1.bp.blogspot.com/_pGsJFsc5Buc/TJg8jNd2hSI/AAAAAAAAAyk/TCfe4SL7vTA/s400/Open+Source+Ebook+Reader+On+Top+of+The+Most+Proprietary+Unhackable+Laptop+Ever.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;This is probably my favorite picture: &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_pGsJFsc5Buc/TJg8gW2o2JI/AAAAAAAAAyc/EX9ASe7Jba0/s1600/Open+Source+Ebook+Reader+Picked+Up.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://4.bp.blogspot.com/_pGsJFsc5Buc/TJg8gW2o2JI/AAAAAAAAAyc/EX9ASe7Jba0/s400/Open+Source+Ebook+Reader+Picked+Up.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;I haven't tried it yet, but conceivably, it could be connected to the net using the &lt;a href="http://www.liquidware.com/shop/show/BA-WIFI/Wireless+G+USB+Adapter"&gt;Wifi module&lt;/a&gt;, and then it could download Ebooks and &lt;a href="http://www.gutenberg.org/wiki/Main_Page"&gt;free Ebooks&lt;/a&gt; from the various online stores that FBReader lets you connect to...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;I've uploaded some pictures &lt;a href="http://www.flickr.com/photos/22071518@N04"&gt;over on the flickr page&lt;/a&gt;, and the modules and finished &lt;a href="http://www.liquidware.com/shop/show/BB-SD4/Liquidware+BeagleBoot+SD+Card"&gt;EbookBoot SD Card&lt;/a&gt; are all available over at the &lt;a href="http://www.liquidware.com/shop"&gt;Liquidware shop&lt;/a&gt;... I think I should run a timed contest against myself on how many different types of gadgets I can build within &lt;a href="http://www.youtube.com/watch?v=VslIuK-bAHg&amp;amp;feature=player_embedded"&gt;4 minutes, like these guys&lt;/a&gt; that &lt;a href="http://blog.makezine.com/archive/2010/09/royal_navy_field_gun_competition_19.html"&gt;Make blog featured a little while&lt;/a&gt; ago...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;:-)&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7377057412446264720-1585254556236088972?l=antipastohw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antipastohw.blogspot.com/feeds/1585254556236088972/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7377057412446264720&amp;postID=1585254556236088972' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/1585254556236088972'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/1585254556236088972'/><link rel='alternate' type='text/html' href='http://antipastohw.blogspot.com/2010/09/how-to-build-beagleboard-based-open.html' title='How to build a BeagleBoard-based Open Source Ebook Reader'/><author><name>Matt</name><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/_pGsJFsc5Buc/TJg06qqjG5I/AAAAAAAAAxU/GDUurArcwEw/s72-c/Your+Ebook+Reader+Dinner+is+Served.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7377057412446264720.post-8496518466690100297</id><published>2010-09-20T10:04:00.000-07:00</published><updated>2010-09-20T20:49:10.168-07:00</updated><title type='text'>I'm heading to Maker Faire NY!</title><content type='html'>&lt;span style="font-size: x-small;"&gt;This week is &lt;a href="http://makerfaire.com/newyork/2010/callformakers/"&gt;Maker Faire New York City&lt;/a&gt;, and it holds a special place in my heart, for a number of reasons. A large part is because Maker Faire is where I started out, 3 years ago, with my humble little TouchShield Legacy and Arduino. At the time, I was traveling quite a bit for my day job, and barely had time to sit in one place long enough to do any serious development.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_xcCOmNtmhYE/TJb6WKUSAQI/AAAAAAAAAkk/tS0xdYVEUao/s1600/Snapz+Pro+XScreenSnapz004.jpg"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5518873652022608130" src="http://3.bp.blogspot.com/_xcCOmNtmhYE/TJb6WKUSAQI/AAAAAAAAAkk/tS0xdYVEUao/s400/Snapz+Pro+XScreenSnapz004.jpg" style="cursor: pointer; display: block; height: 91px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: bold;"&gt;Maker Faire&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;New York&lt;br /&gt;September 25, 26 2010&lt;br /&gt;&lt;br /&gt;Fast forward to the present - now I live in Boston, and after three years of driving or flying myself out to San Mateo for Maker Faire's, I'm pretty excited to have one in my own back yard... relatively speaking, that is.&lt;br /&gt;&lt;br /&gt;In the past, I've set up tables with some of my favorite hacks. But this time, I'm going to be joined by Justin, Will, and Francis, fellow &lt;a href="http://www.liquidware.com/"&gt;hackers at Liquidware&lt;/a&gt;. And instead of showing off only just my Open Source Hardware hacks, all 4 of us are going to bring along demos and hacks using the latest gadgets.&lt;br /&gt;&lt;br /&gt;And at least one of the projects hasn't really been blogged about, because it's still in demo form. Dun dun dun :-)&lt;br /&gt;&lt;br /&gt;Ok, back to packing for a busy week ahead...&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7377057412446264720-8496518466690100297?l=antipastohw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antipastohw.blogspot.com/feeds/8496518466690100297/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7377057412446264720&amp;postID=8496518466690100297' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/8496518466690100297'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/8496518466690100297'/><link rel='alternate' type='text/html' href='http://antipastohw.blogspot.com/2010/09/im-heading-to-maker-faire-ny.html' title='I&apos;m heading to Maker Faire NY!'/><author><name>Matt</name><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://3.bp.blogspot.com/_xcCOmNtmhYE/TJb6WKUSAQI/AAAAAAAAAkk/tS0xdYVEUao/s72-c/Snapz+Pro+XScreenSnapz004.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7377057412446264720.post-617349268169032504</id><published>2010-09-19T22:52:00.000-07:00</published><updated>2010-09-19T23:04:11.350-07:00</updated><title type='text'>Book burning post mortem: digital destruction</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;Lately I've been reading &lt;a href="http://en.wikipedia.org/wiki/Creative_destruction"&gt;Joseph Schumpeter&lt;/a&gt;'s writings on &lt;a href="http://www.mckinsey.com/ideas/books/creativedestruction/index.asp"&gt;Creative Destruction&lt;/a&gt;, in preparation for the upcoming &lt;a href="http://www.openhardwaresummit.org/"&gt;Open Hardware Summit&lt;/a&gt; this coming week. I know, some heavy stuff... So my head has been thinking about destruction and acts of purposeful damage.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I've gotten a handful of funny emails and comments in conversations over the past few days in response to &lt;a href="http://antipastohw.blogspot.com/2010/09/book-burning-needs-to-modernize.html"&gt;my article about book burning&lt;/a&gt;, so I thought I'd give it a quick summary of my favorite additional ideas. Far be it from me to beat a dead joke any further than it needs to go (&lt;a href="http://antipastohw.blogspot.com/2010/09/if-old-space-man-were-arduino.html"&gt;not really, I do it all the time&lt;/a&gt;), but I do think there's something worth contemplating here, about the future of book burning.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The essence is: digital desecration is far more nuanced than book burning. You simply have more options to be obnoxious.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In no particular order:&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Burning isn't good enough, you also have to explicitly destroy some of the content&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;There is a close relationship between desecration and information defacing&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Digital desecration opens up a more complex relationship between destruction of the physical object, the file, the creative medium, the idea, and the ideology&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;In the digital desecration world, each of these are explicitly different stages (in that sense, is book burning in the traditional sense more effective? will we one day pine for the good ol' days when book burning was as easy as applying incendiaries to paper?)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;A corollary is that the more creative effort that went into a work of art, the more "satisfying" it is to desecrate (e.g. destroying that which took seconds to build is somewhat lame)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;A further corollary suggests the ratio of time invested in desecration should somehow be far less than the time someone else invested in the act of creating&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;At the ASCII level, digital defacing might include something like taking a concept or idea, and overwriting or padding it with the word "sucks"&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;At the byte level, you could swap the &lt;a href="http://en.wikipedia.org/wiki/Endianness"&gt;Endianness&lt;/a&gt; of the double chars in order to make it unreadable by whatever chip it's on&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;At the binary level, you could AND or XOR the binary with a random binary sequence, in order to truly make it obfuscated and irretrievable (thanks Devlin)&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;At the file level, you could overwrite pieces of text with strategically identified counter-points or antithetical topics&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;At the archive level, you might rename the cover or title of the file to something misleading, in order to deceive the next potential reader&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;At the chip level, you could create a mechanism that actually made the chip on which bytes were stored burst into flames, moving into the real physical world for some tangible destruction (thanks Chris)&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;At the web level, you could Google bomb the concept or title of the Ebook or text, so that when it's Googled, other links come up at the top that are actually propaganda for something else&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;You could try to measure the performance of desecration by converting electron energy into mass using E=mc^2&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Less heat is generated from digital desecrations, implying less "wasted energy", and instead there is a more efficient thermodynamic transformation, directing more energy at desecration than being lost as radiating heat&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:85%;"&gt;In closing, I'll just throw this out there, since it really got me thinking... we look back on the burning of the Library of Alexandria as a horrible thing, because of all the timeless works of literature that were lost. Do you think anyone would notice if Twitter turned off it's saved tweets archive feature? Will uber-nerdy future historians 1,000 years from now lose cryogenic nano-sleep over this, as they zip around on intergalactic &lt;a href="http://en.wikipedia.org/wiki/Hoverboard"&gt;hoverboards&lt;/a&gt;?&lt;br /&gt;&lt;br /&gt;Probably not.&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/7377057412446264720-617349268169032504?l=antipastohw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antipastohw.blogspot.com/feeds/617349268169032504/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7377057412446264720&amp;postID=617349268169032504' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/617349268169032504'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/617349268169032504'/><link rel='alternate' type='text/html' href='http://antipastohw.blogspot.com/2010/09/book-burning-post-mortem-digital.html' title='Book burning post mortem: digital destruction'/><author><name>Matt</name><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-7377057412446264720.post-7214605205361814139</id><published>2010-09-15T21:37:00.000-07:00</published><updated>2010-09-15T21:37:05.086-07:00</updated><title type='text'>Book-burning needs to modernize</title><content type='html'>&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;i&gt;To  make things perfectly clear: I do not recommend emotional book burning. I think it's wrong and inefficient. I'm simply going to say  this: If you're going to do "book burning" I believe you need to find a  more modern way to achieve your goals. Use technology. Better yet, use  Open Source technology to achieve your goals.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Something &lt;a href="http://www.boston.com/bostonglobe/editorial_opinion/oped/articles/2010/09/15/lessons_of_the_korans_non_burning/"&gt;about the press release events of the past week or so has rubbed me the wrong way&lt;/a&gt;.  But not because of the reasons already expressed by the "media". It's  because the guy in Florida is doing it all wrong. We live in a world  with headlines filled with stories about &lt;a href="http://www.guardian.co.uk/books/2010/aug/04/barnes-and-noble-for-sale"&gt;Barnes and Noble and Borders books going bankrupt&lt;/a&gt; or being sold. &lt;a href="http://www.idealog.com/blog/ebook-growth-continues-to-accelerate-how-long-can-this-go-on"&gt;Ebooks are taking over&lt;/a&gt;. Who can afford to think about burning books at a time like this?&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;In order to have a serious book burning,  there's a serious time investment. You'd first have to find the book you  wanted to burn, order copies from 10 different retailers on Amazon,  pick the most worthy copy, and then commence burning. You'd probably use  some social media site to send out Evites or set up a Facebook event  hoping people would pull themselves away from &lt;a href="http://www.farmville.com/"&gt;Farmville&lt;/a&gt;  long enough to sit around watching a book burn. What a pain in the  rear. If I think about some of my friends, I highly doubt that a book  burning event would even hold their attention for more 30 seconds before  they were checking their iPhones and Android phones, or sending email  on their Blackberries.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;When is book burning ok?&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If I were homeless in the winter, in a cold climate, and had no other  source of shelter, but had plenty of books and matches, I would hope  people wouldn't judge me if I were to burn the books I had collected.  Alternatively, if I were filming a movie about World War II, or a  documentary about a time when books were burned, for historical  accuracy, I hope people would appreciate that as art. I suppose if I  were the author of the books, it's ok to burn them.&lt;br /&gt;&lt;br /&gt;This last reason is cause for serious suspicion. It supposes that there  is a relationship between the intellectual property and creative process  of writing, authorship, and acceptability of burning books.&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;What happens when you burn books (or blogs)?&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Books are actually not so easy to find that I would actually be willing  to burn, so I'm burning something closer to my heart. But first, this is  me burning a set of blank pieces of paper:&lt;br /&gt;&lt;br /&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/5b_Z82zUxZw?hl=en&amp;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/5b_Z82zUxZw?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;br /&gt;No emotion. Some heat felt. Fire consumed 3 sheets of paper within 62 seconds, for a rate of 2.90 pages / minute.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;It  wasn't easy finding books I was willing to burn, mostly because I like  to take notes in the margins, which I find useful. So instead, this is  me burning a recent article from the Antipasto Hardware Blog:&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/AtQWnNrA_po?hl=en&amp;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/AtQWnNrA_po?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;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;   &lt;br /&gt;EMOTION!!! Some heat felt. Fire consumed 4 pages within 1:48 at a rate  of 2.22 pages / minute. The pages were printed with 1622 words across  189 lines, or 7750 characters.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Another way to say this is, my book burning experiment consumed 143.5 bytes / second.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;I'm going to  assume that the way I folded the paper to allow oxygen in had more to do  with the rate of burn than factors like wind (there wasn't any),  flammability or not of the ink, or perhaps because my writing is so bad,  it burns faster because thermodynamic principles are trying to undo the  entropy I create.&lt;br /&gt;&lt;br /&gt;What's the difference?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Thought Experiment: Why do people burn books?&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I believe that books are burned for several reasons, not limited to the following list:&lt;br /&gt;&lt;br /&gt;-Heat&lt;br /&gt;-Light&lt;br /&gt;-Waste disposal&lt;br /&gt;-Publicity leading to social unity&lt;br /&gt;-Desecration&lt;br /&gt;&lt;br /&gt;I'll address each one in turn:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;-Heat&lt;/b&gt;. Not great support for burning books. Modern heaters are  known to be more efficient. Plus burning books isn't the quickest,  easiest way to generate heat.&lt;br /&gt;&lt;b&gt;-Light&lt;/b&gt;. Also not great support for burning books. LED lights are a much more efficient way to achieve this.&lt;br /&gt;&lt;b&gt;-Waste&lt;/b&gt;. So so. Just throw it in a landfill, or plant it at the  base of a tree to fertilize it. Burning many books, however, may save  the time and energy to lug them all to a landfill, so it's a toss-up  here for me.&lt;br /&gt;&lt;b&gt;-Publicity leading to social unity&lt;/b&gt;. Probably a toss up. This is  a lot of effort, and you likely have to create significant  consternation before you'll get noticed in the mainstream press.&lt;br /&gt;&lt;b&gt;-Desecration&lt;/b&gt;. Now this, I think, is the important point.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Measuring Book Burning Performance: Desecrations / Second&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Steve Jobs would probably burn the &lt;a href="http://www.liquidware.com/shop/show/OSH1/Open+Source+Hardware%2C+Vol-+1"&gt;second volume of my book&lt;/a&gt;.  Because it's all about Open Source Hardware Strategy and Economics, like what Google uses. Steve hates Open Source, Google, and things that  are Open Source like &lt;a href="http://www.android.com/"&gt;Android&lt;/a&gt;, so it's understandable that he might seek  to desecrate ideas associated with them.&lt;br /&gt;&lt;br /&gt;But here's the problem: if you're going for desecrations, why settle for  mediocrity? Why not go all out and desecrate in a modern, digital way?&lt;br /&gt;&lt;br /&gt;Here's some &lt;a href="http://www.liquidware.com/shop/show/ARD/Arduino+Duemilanove"&gt;Arduino&lt;/a&gt; code I wrote to do desecrations:&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;code&gt;&lt;/code&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;   &lt;span style="font-size: x-small;"&gt;void setup() {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp; pinMode(13, OUTPUT);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp; Serial.begin(9600); &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void loop() {&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp; Serial.println("Start");&lt;br /&gt;&amp;nbsp; Serial.println(millis());&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp; for (int j=0;j&amp;lt;=30000;j++){&lt;br /&gt;&amp;nbsp; char a[] = "Open Source Hardware is the future.";&lt;br /&gt;&amp;nbsp; for(int i=0;i&amp;lt;=strlen(a);i++){&lt;br /&gt;&amp;nbsp; a[i]=0;&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp; Serial.println(millis());&lt;br /&gt;&amp;nbsp; Serial.println("Done desecrating 30,000 times.");&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp; digitalWrite(13, HIGH);&amp;nbsp; delay(1000);&lt;br /&gt;&amp;nbsp; digitalWrite(13, LOW); delay(1000);&lt;br /&gt;&amp;nbsp; &lt;br /&gt;} &lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp; &lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Running this sketch achieves 30,000 digital  desecrations within roughly 800 milliseconds. This is an effective  desecration rate of 1,440,000 desecration-bytes / second!&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;This Arduino should be ashamed of itself:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_xcCOmNtmhYE/TJGWHIRY6wI/AAAAAAAAAj8/5MFh4-VFB0A/s1600/Arduino+Blog+Desecration.JPG" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://4.bp.blogspot.com/_xcCOmNtmhYE/TJGWHIRY6wI/AAAAAAAAAj8/5MFh4-VFB0A/s400/Arduino+Blog+Desecration.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;It instantiates an array with a phrase,  filled with digital bytes of information, and then deletes it from  memory. But it does so in the most desecratory way you could imagine: 1  helpless, bloody char at a time - and not even with civil memory  management!? From a programmer's point of view, this is heresay. This is  like torturing a person by pulling his fingernails out one by one, like every one of  those &lt;a href="http://en.wikipedia.org/wiki/Saw_%28film%29"&gt;Saw movies&lt;/a&gt;. It's like tearing out the pages of a book one by one,  and then burning it. Couldn't you have just dereferenced the array  pointer, and left the char array in memory? Or if you have to move on,  why not just call memory purge?&lt;br /&gt;&lt;br /&gt;Ladder of desecration:&lt;br /&gt;&lt;b&gt;Bad&lt;/b&gt;: Buying book and burning it (plain form desecration 101)&lt;br /&gt;&lt;b&gt;Worse&lt;/b&gt;: Stealing book and burning it (not participating in the economic incentivization system)&lt;br /&gt;&lt;b&gt;Worst&lt;/b&gt;: Stealing book, ripping pages out, then burning (physical acts included)&lt;br /&gt;&lt;br /&gt;Likewise, here's the digital ladder of desecration:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;Bad&lt;/b&gt;: Removing software or deleting an ebook from your device&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;Worse&lt;/b&gt;: Torrenting the software and Ebook, and then deleting it&lt;br /&gt;&lt;b&gt;Worst&lt;/b&gt;: Torrenting the software and Ebook, and then deleting it, one character or word at a time&lt;br /&gt;&lt;br /&gt;Here's some plain R-code to do the same task:&lt;br /&gt;&lt;br /&gt;R&lt;br /&gt;x=readLines("OSHWBook.txt");&lt;br /&gt;x &amp;lt;- NULL;&lt;br /&gt;&lt;br /&gt;Eh, not a huge impact on my emotions. But this is a completely different story:&lt;br /&gt;&lt;br /&gt;R&lt;br /&gt;x=readLines("OSHWBook.txt");&lt;br /&gt;for(j in 1:length(x)) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt; for(i in 1:nchar(x[j])) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;x[j][i]="";&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;}}&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;x &amp;lt;- NULL;&lt;br /&gt;&lt;br /&gt;Seriously?!?!! Is that middle step really necessary? If you're going to  delete something just throw it out. There's no need to iteratively  replace bytes in memory - without even a simple purge. That's  unnecessary and ridiculous.&lt;br /&gt;&lt;br /&gt;To me, book burning just doesn't have the same impact as it did when the scholars looked on as the &lt;a href="http://ehistory.osu.edu/world/articles/ArticleView.cfm?AID=9"&gt;Library of Alexandria was burned to the ground&lt;/a&gt;. But this R code hurts. And it's going above and beyond the call to destroy.&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;&lt;br /&gt;Benchmarking Digital Desecration Performance&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;One could argue that you could measure the strict word count (which is  like page count). You could measure file size in bytes, but that's a  proxy for document length. You could measure unique words. You could  even measure Shannon complexity of the document.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;I think there's an open question, perhaps requiring further research, to examine whether  or not it makes sense to count bytes, characters, words, or perhaps on  synonyms of a specific trigger word or phrase that is considered  "desecratory". Perhaps there is an ontological argument to be made about  the distribution of desecratory-capable phrases in a document (does it follow a long tail?).&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_xcCOmNtmhYE/TJGcU8CaPXI/AAAAAAAAAkc/0rGGPxq2jDo/s1600/Snapz+Pro+XScreenSnapz003.jpg" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-size: x-small;"&gt;I would argue you want to measure the entropy  of the desecrations, which I will define as: number of RAM  instantiations and removals of bytes associated with the topic to be  desecrated.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Generalization&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So I have established a relationship, which I will put in the 2x2 matrix below:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_xcCOmNtmhYE/TJGcU8CaPXI/AAAAAAAAAkc/0rGGPxq2jDo/s1600/Snapz+Pro+XScreenSnapz003.jpg" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="360" src="http://1.bp.blogspot.com/_xcCOmNtmhYE/TJGcU8CaPXI/AAAAAAAAAkc/0rGGPxq2jDo/s400/Snapz+Pro+XScreenSnapz003.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-size: x-small;"&gt;     &lt;span style="font-size: large;"&gt;&lt;b&gt;Implementation&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Here's some Arduino code that runs on the Arduino and blinks a red LED every time a desecration takes place.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;void setup() {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp; pinMode(13, OUTPUT);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp; Serial.begin(9600); &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void loop() {&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp; Serial.println("Start");&lt;br /&gt;&amp;nbsp; Serial.println(millis());&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp; for (int j=0;j&amp;lt;=30000;j++){&lt;br /&gt;&amp;nbsp; char a[] = "Open Source Hardware is the future.";&lt;br /&gt;&amp;nbsp; for(int i=0;i&amp;lt;=strlen(a);i++){&lt;br /&gt;&amp;nbsp; a[i]=0;&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp; Serial.println(millis());&lt;br /&gt;&amp;nbsp; Serial.println("Done desecrating 30,000 times.");&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp; digitalWrite(13, HIGH);&amp;nbsp; delay(1000);&lt;br /&gt;&amp;nbsp; digitalWrite(13, LOW); delay(1000);&lt;br /&gt;&amp;nbsp; &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here's the Open SciCal running desecration.r desecrations script:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;x=readLines("OSHWBook.txt");&lt;br /&gt;for(j in 1:length(x)) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt; for(i in 1:nchar(x[j])) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;x[j][i]="";&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;}}&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;x &amp;lt;- NULL;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Conclusion&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I believe book burning is about the public destruction of intellectual  property. In a world over-run with new forms of media, and open source  software and hardware, however, we need to catch up with the times. I  applaud people for having strong beliefs, but if you're going to  desecrate someone's intellectual property or creative works, then do so  with a modern toolkit!&lt;br /&gt;&lt;br /&gt;And do it with Open Source Hardware, why don't you, so others can share in your destructive acts!&lt;br /&gt;&lt;br /&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/7377057412446264720-7214605205361814139?l=antipastohw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antipastohw.blogspot.com/feeds/7214605205361814139/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7377057412446264720&amp;postID=7214605205361814139' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/7214605205361814139'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/7214605205361814139'/><link rel='alternate' type='text/html' href='http://antipastohw.blogspot.com/2010/09/book-burning-needs-to-modernize.html' title='Book-burning needs to modernize'/><author><name>Matt</name><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/_xcCOmNtmhYE/TJGWHIRY6wI/AAAAAAAAAj8/5MFh4-VFB0A/s72-c/Arduino+Blog+Desecration.JPG' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7377057412446264720.post-4987372642583964689</id><published>2010-09-14T23:56:00.000-07:00</published><updated>2010-09-14T23:56:08.853-07:00</updated><title type='text'>Learning PWM with Illuminato Genesis and TouchShield Slide</title><content type='html'>&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;With the relaunch of the &lt;a href="http://www.liquidware.com/shop/show/ILL/Illuminato%3A%3AGenesis"&gt;Illuminato Genesis&lt;/a&gt; (which was featured on &lt;a href="http://blog.makezine.com/archive/2009/12/arduino_open_source_hardware_2009_-.html"&gt;Make Blog a while back&lt;/a&gt;), I figured I'd whip together an app that showed off the what the Illuminato Genesis can do. I've been spending a lot of time with the &lt;a href="http://www.liquidware.com/category/Embedded"&gt;BeagleBoard&lt;/a&gt; recently, and that's clearly a top end type device, but the Arduino and Illuminato Genesis plus &lt;a href="http://www.liquidware.com/shop/show/TSL/TouchShield+Slide"&gt;TouchShield Slide&lt;/a&gt; make a nice gadget at the lower end of the spectrum, especially for smaller handheld apps.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_pGsJFsc5Buc/TJBtGiLEPzI/AAAAAAAAAws/-hE0EW5_7_k/s1600/Illuminato+Genesis+and+TouchShield+Slide+Frontside.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://1.bp.blogspot.com/_pGsJFsc5Buc/TJBtGiLEPzI/AAAAAAAAAws/-hE0EW5_7_k/s400/Illuminato+Genesis+and+TouchShield+Slide+Frontside.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_pGsJFsc5Buc/TJBs-0deyrI/AAAAAAAAAwU/MmTlkbO8E7k/s1600/Illuminato+Genesis+Backside+Twist+Blurry.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://4.bp.blogspot.com/_pGsJFsc5Buc/TJBs-0deyrI/AAAAAAAAAwU/MmTlkbO8E7k/s400/Illuminato+Genesis+Backside+Twist+Blurry.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;I've wrapped everything up into an app on the &lt;a href="http://www.liquidware.com/apps/show/89"&gt;Open Source App Store over here&lt;/a&gt;. The app includes 3 files:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;SoftwareSerial_NB.zip&lt;/b&gt; - This should be dropped into folder: hardware\arduino\cores\genesis\src\components\library&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;TouchShield_Pulsing_Sleep.pde&lt;/b&gt; - This is a sketch that implements the PWM duty cycle value to the Illuminato Genesis, using the bling() function&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Illuminato_Serial_Bling.pde&lt;/b&gt; - Listens for PWM duty cycle value from the TouchShield and controls the virtual bling LEDs on the front of the TouchShield Slide&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-size: small;"&gt;The Illuminato Genesis has an array of gold-rimmed LEDs on the backside of the board, which can be called using a function in the Antipasto Arduino IDE library called bling(). bling(1) turns the LEDs on, and bling(0) turns them off.&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_pGsJFsc5Buc/TJBtEpgcGnI/AAAAAAAAAwk/k4LnGA9_EjA/s1600/Illuminato+Genesis+Backside+Twist.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="360" src="http://1.bp.blogspot.com/_pGsJFsc5Buc/TJBtEpgcGnI/AAAAAAAAAwk/k4LnGA9_EjA/s640/Illuminato+Genesis+Backside+Twist.JPG" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_pGsJFsc5Buc/TJBtIHkJ2tI/AAAAAAAAAw0/8nUWp_UbTVM/s1600/Illuminato+Genesis+on+Mac.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="360" src="http://4.bp.blogspot.com/_pGsJFsc5Buc/TJBtIHkJ2tI/AAAAAAAAAw0/8nUWp_UbTVM/s640/Illuminato+Genesis+on+Mac.JPG" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;So the first step was to implement PWM light control, which is accomplished with this snippet of code:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;code&gt;&lt;/code&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-size: x-small;"&gt;/* Software PWM modulation routine */&lt;br /&gt;void pwm_bling(char duty) {&lt;br /&gt;&amp;nbsp; int duration;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; duration = (millis() - pTime);&lt;br /&gt;&lt;br /&gt;&amp;nbsp; if (duration &amp;lt;= duty) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; bling(1);&lt;br /&gt;&amp;nbsp; } else {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; bling(0);&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp; if (duration &amp;gt;= period ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pTime = millis();&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Then, using serial communications between the Illuminato Genesis and the &lt;a href="http://www.liquidware.com/shop/show/TSL/TouchShield+Slide"&gt;TouchShield Slide&lt;/a&gt;, the PWM'ing is synchronized so that both boards are pulsing at the same speed. The effect is pretty cool looking, if you ask me. On the one hand, you have real LED's on the back of the Illuminato pulsing, and then you have virtual LED's on the TouchShield Slide's OLED pulsing.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Here's the video:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: small;"&gt;&lt;object height="385" width="400"&gt;&lt;param name="movie" value="http://www.youtube.com/v/2AUN6dus5_g?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/2AUN6dus5_g?fs=1&amp;amp;hl=en_US" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="400" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;And here are &lt;a href="http://www.flickr.com/photos/22071518@N04/?saved=1"&gt;some other pictures&lt;/a&gt;:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_pGsJFsc5Buc/TJBtJcKPN5I/AAAAAAAAAw8/MQHmFZXjta4/s1600/Illuminato+TouchShield+Dual+Blinking.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://3.bp.blogspot.com/_pGsJFsc5Buc/TJBtJcKPN5I/AAAAAAAAAw8/MQHmFZXjta4/s400/Illuminato+TouchShield+Dual+Blinking.JPG" width="400" /&gt;&lt;/a&gt;&lt;a href="http://4.bp.blogspot.com/_pGsJFsc5Buc/TJBtiqPTuPI/AAAAAAAAAxM/lY8o41r59_c/s1600/Illuminato+Genesis+Frontside+Twist+SynchroBlink.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://4.bp.blogspot.com/_pGsJFsc5Buc/TJBtiqPTuPI/AAAAAAAAAxM/lY8o41r59_c/s400/Illuminato+Genesis+Frontside+Twist+SynchroBlink.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&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/7377057412446264720-4987372642583964689?l=antipastohw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antipastohw.blogspot.com/feeds/4987372642583964689/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7377057412446264720&amp;postID=4987372642583964689' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/4987372642583964689'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/4987372642583964689'/><link rel='alternate' type='text/html' href='http://antipastohw.blogspot.com/2010/09/learning-pwm-with-illuminato-genesis.html' title='Learning PWM with Illuminato Genesis and TouchShield Slide'/><author><name>Matt</name><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://1.bp.blogspot.com/_pGsJFsc5Buc/TJBtGiLEPzI/AAAAAAAAAws/-hE0EW5_7_k/s72-c/Illuminato+Genesis+and+TouchShield+Slide+Frontside.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7377057412446264720.post-2836537061573379057</id><published>2010-09-07T08:10:00.000-07:00</published><updated>2010-09-07T09:11:15.844-07:00</updated><title type='text'>How to make a BeagleBoard Elastic R Beowulf Cluster in a Briefcase</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;The &lt;/span&gt;&lt;a style="font-style: italic;" href="http://www.liquidware.com/shop/show/BB-C4/BeagleBoard+C4"&gt;BeagleBoard's OMAP chip&lt;/a&gt;&lt;span style="font-style: italic;"&gt; has some serious computing chops, and this project set out to prove it. Ever since I built the &lt;/span&gt;&lt;a style="font-style: italic;" href="http://antipastohw.blogspot.com/2010/07/introducing-100-open-source-hwsw-r.html"&gt;Open SciCal&lt;/a&gt;&lt;span style="font-style: italic;"&gt;, I've been showing it off to nerd friends of mine (that's another way of saying, if I've showed your the Open SciCal in the past 2 weeks, I think you're a nerd that would appreciate it - ha). Granted, a single &lt;/span&gt;&lt;a style="font-style: italic;" href="http://www.liquidware.com/shop/show/BB-SCICAL/Open+SciCal+X101"&gt;Open SciCal&lt;/a&gt;&lt;span style="font-style: italic;"&gt; is nice. But the real impressive part is the combination of serious floating point horsepower with low power.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm5.static.flickr.com/4148/4967526127_b4a1533b66.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 500px; height: 375px;" src="http://farm5.static.flickr.com/4148/4967526127_b4a1533b66.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;I figured I'd do this project to respond to all those people who were skeptical that the &lt;a href="http://www.liquidware.com/shop/show/BB-SCICAL/Open+SciCal+X101"&gt;Open SciCal&lt;/a&gt; had any utility in the modern world. Well... my answer is yes.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/dTpgcycBsQU?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/dTpgcycBsQU?hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;I took 10 &lt;a href="http://www.liquidware.com/shop/show/BB-C4/BeagleBoard+C4"&gt;BeagleBoards&lt;/a&gt; and turned a suitcase into a wifi-accessible, on-demand, elastic &lt;a href="http://www.r-project.org/"&gt;R computer cluster&lt;/a&gt; that runs at 10 Ghz, 40 Gigs of disk, and 1,000 megabits of networking bandwidth. I did this all for less than $2,000, and spent less than 5 hours building it, and now I have a scalable compute resource that is portable, has performance comparable to mid-range and high end servers that cost $15,000-30,000 from IBM or Sun. And better yet, it all runs at 30 Watts. That's less than most of the incandescent light bulbs in my room right now.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm5.static.flickr.com/4110/4967526107_e5fed927b1.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 500px; height: 375px;" src="http://farm5.static.flickr.com/4110/4967526107_e5fed927b1.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;I've also made the whole project Open Source, for anyone who wants to replicate it on their own. Personally, I'm going to build another one out of 32 of these suckers, and rent it to the trading firm that bought dozens of Open SciCal's from me in the past couple weeks.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Step 1: Get 10 BeagleBoards&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I took 10 &lt;a href="http://www.liquidware.com/shop/show/BB-C4/BeagleBoard+C4"&gt;BeagleBoards&lt;/a&gt;, and used the same standoffs that I use in the Embedded Gadget Pack. I used an offset pattern so they could stack as high as I wanted them to. I built them all the way up to 10, and then decided it wouldn't fit in a suitcase, so I split them up into 2 mini-towers of 5 BeagleBoards each.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm5.static.flickr.com/4089/4967526063_c139537b03.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 500px; height: 375px;" src="http://farm5.static.flickr.com/4089/4967526063_c139537b03.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Step 2: Buy 3 cheap, low power hubs&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I went to Radio Shack (begrudgingly because they sold out to the cell phone man in 2000 and have sucked ever since), since they were the only ones open. I bought 1 wireless router with 5 ethernet ports in the back, and then bought 2 netgear hubs (each had 5 ethernet ports).&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm5.static.flickr.com/4147/4967526073_e45b3a4e62.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 500px; height: 375px;" src="http://farm5.static.flickr.com/4147/4967526073_e45b3a4e62.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Step 3: Wire the "interconnection backplane"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I've been reading old literature about multicore, multi-processor, scalable computer architectures, and they have a funky way of making simple concepts like "network" sound &lt;a href="http://www.sciencedirect.com/science?_ob=ArticleURL&amp;amp;_udi=B6V12-4CYR50V-1&amp;amp;_user=10&amp;amp;_coverDate=07%2F01%2F2004&amp;amp;_rdoc=1&amp;amp;_fmt=high&amp;amp;_orig=search&amp;amp;_origin=search&amp;amp;_sort=d&amp;amp;_docanchor=&amp;amp;view=c&amp;amp;_searchStrId=1453505356&amp;amp;_rerunOrigin=google&amp;amp;_acct=C000050221&amp;amp;_version=1&amp;amp;_urlVersion=0&amp;amp;_userid=10&amp;amp;md5=5134a8c4ff135bc5862a8b5c23779044&amp;amp;searchtype=a"&gt;really complex&lt;/a&gt; like "Fat Tree Fishbone N-Way Scalable Interconnection Backplane".&lt;br /&gt;&lt;br /&gt;Oh so you mean I plugged the two hubs into the wireless router, and then put 4 wires into each of the hubs, and 2 from the router, and connected them to the BeagleBoards with &lt;a href="http://www.liquidware.com/shop/show/BA-ETH/USB+Ethernet+Adapter"&gt;USB-to-Ethernet modules&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Like this:&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm5.static.flickr.com/4087/4967559027_42d3cd895b.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 500px; height: 375px;" src="http://farm5.static.flickr.com/4087/4967559027_42d3cd895b.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm5.static.flickr.com/4091/4967526087_00c6742390.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 500px; height: 375px;" src="http://farm5.static.flickr.com/4091/4967526087_00c6742390.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;I have this new mantra that things I read in hefty academic papers are written in language way too fancy for what they're trying to do. I get the sense that this is intentional, to hide the fact that what they researched could be replicated for $2,000 and 5 hours in modern times. I kid, partially. I'm reading papers written in the 1980's and 1990's, when the idea of doing what I just did would have taken a $10,000,000 &lt;a href="http://www.google.com/images?um=1&amp;amp;hl=en&amp;amp;client=firefox-a&amp;amp;rls=org.mozilla%3Aen-US%3Aofficial&amp;amp;biw=897&amp;amp;bih=571&amp;amp;tbs=isch%3A1&amp;amp;sa=1&amp;amp;q=darpa+quad+chart&amp;amp;aq=f&amp;amp;aqi=&amp;amp;aql=&amp;amp;oq=&amp;amp;gs_rfai="&gt;DARPA grant&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Step 4: Set up the Open SciCal Slave Nodes&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Each of the BeagleBoards is running the &lt;a href="http://www.liquidware.com/shop/show/BB-SD4/Liquidware+BeagleBoot+SD+Card"&gt;Open SciCal SD card from Liquidware&lt;/a&gt;, with a few notable additions:&lt;br /&gt;&lt;br /&gt;-Each card is configured to allow &lt;a href="http://www.cybermilitia.net/2009/02/28/dropbear-on-debian/"&gt;passwordless logins&lt;/a&gt; over &lt;a href="http://matt.ucc.asn.au/dropbear/dropbear.html"&gt;dropbear&lt;/a&gt; SSH&lt;br /&gt;-Each card auto-configures itself to a static IP address&lt;br /&gt;-The cards have a slightly trimmed down set of background apps to make R more responsive&lt;br /&gt;&lt;br /&gt;I then replicated the card 10 times, onto each of my SD cards.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm5.static.flickr.com/4126/4967559065_7073914290.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 500px; height: 375px;" src="http://farm5.static.flickr.com/4126/4967559065_7073914290.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Step 5: Build the Power Backbone&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This was an easy step conceptually, but a pain to do in an organized manner. So I gave up the organization, and just hacked through it. I took 10 BeagleBoard power connectors from the Liquidware shop (specifically those because they're low wattage). And connected them into two small outlet strips.&lt;br /&gt;&lt;br /&gt;I then routed those power cables around and through to each of the 10 Open SciCal BeagleBoard Compute Nodes.&lt;br /&gt;&lt;br /&gt;For kicks, I got one of those "&lt;a href="http://www.radioshack.com/product/index.jsp?productId=3025184"&gt;kill-a-watt&lt;/a&gt;" meters and put it in front of the whole set up, so I could measure how much power the whole thing consumed.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/_5-AK6loJao?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/_5-AK6loJao?hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Step 6: Configure the Master&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Parallel architecture guys are always labeling nodes "master" and "slave". I think it's some hidden repressed anger at the fact that most of us "nerds" never got picked first for kick-ball and 4-square (the game, not the GPS website) when we were kids. Take that, 2nd grade. Now look who's deciding who's "master" and "slave". Me.&lt;br /&gt;&lt;br /&gt;In all seriousness, at this point in the project, I had 10 networked Open SciCal nodes. But no way to issue code to them. So I took out my trusty Ubuntu Linux laptop, and quickly got it to connect to the wireless G router I'd set up to be the master switch for all 10 of the BeagleBoards.&lt;br /&gt;&lt;br /&gt;Since the system is running on R, I naturally tried to get some of their default environments running, like Snow, Snowfall, svSockets, and even MPI. But each of those turned out to be serious overkill. Sure, they're easy to use if someone else is installing them for you and you don't have to think about it, but they didn't really get the job done in the amount of time I was willing to dedicate, so I wrote my own scripts.&lt;br /&gt;&lt;br /&gt;Here are all of the programs I wrote, in one "app" on the "&lt;a href="http://www.liquidware.com/apps"&gt;Open Source App Store&lt;/a&gt;".&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Step 7: Write Elastic R Programs&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I was hired by a company a couple months ago to write data mining algorithms to run on the &lt;a href="http://www.liquidware.com/shop/show/BB-SCICAL/Open+SciCal+X101"&gt;Open SciCal&lt;/a&gt;. Most of them were top secret, but a few were pretty elementary. For instance, one function that is used often in text data mining is a function to extract all capitalized phrases. For instance, Amazon uses this on their website to summarize books with a few phrases.&lt;br /&gt;&lt;br /&gt;Here's the &lt;a href="http://www.r-project.org/"&gt;R code&lt;/a&gt; that extracts the indexed location of any capitalized word in a piece of text:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;x=readLines(file("data.txt"));&lt;br /&gt;y=(unlist(lapply(x,function(x){lapply(x,function(x){strsplit(x," ")})})));&lt;br /&gt;z=y[y!=""];&lt;br /&gt;out=which(lapply(z,function(x){grep("[A-Z]",unlist(strsplit(x[1],""))[1],value=FALSE,invert=FALSE)})==1);&lt;br /&gt;write.csv(out,file="out.txt")&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;This is a piece of code that you'd often want to run against 1,000's of pieces of text at a time, to extract important pieces of information. I wrote this into a program called "upper.r".&lt;br /&gt;&lt;br /&gt;I then wrote some "administrative" functions for my homemade Elastic R Beowulf cluster - &lt;a href="http://www.liquidware.com/apps/88"&gt;you can download them here&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;"esh" - "elastic shell" - this runs a command on all of the slave nodes, and kicks back the output&lt;br /&gt;For instance: esh "uname -a"&lt;br /&gt;&lt;br /&gt;"ecp" - "elastic copy" - this copies a file to the home/root/ directory of each of the slave nodes&lt;br /&gt;&lt;br /&gt;"epush" - "elastic data replicate push" - this takes a set of data files in the data/ folder called "1.txt" "2.txt" "3.txt" etc. all the way up to "10.txt" and copies them over to each node as /home/root/data.txt. This is important if you want to parallelize different data across to each of the nodes.&lt;br /&gt;&lt;br /&gt;"epull" - "elastic data extract pull" - this does the inverse of "epush" in that it pulls a single file called /home/root/out.txt off each of the nodes, and renames them locally into the "out/" folder as "1.txt" "2.txt" "3.txt" etc. according to which node it came off&lt;br /&gt;&lt;br /&gt;A typical session would look something like this:&lt;br /&gt;&lt;br /&gt;esh "uname -a"&lt;br /&gt;ecp upper.r&lt;br /&gt;epush data.txt&lt;br /&gt;esh "R BATCH &lt; href="http://en.wikipedia.org/wiki/MapReduce"&gt;Map/Reduce&lt;/a&gt;". If you wrote about parallel computing in the 1980's, you would call it "Distribute/Evaluate/Collect". If you worked at Wolfram Media, you'd call it "&lt;a href="http://reference.wolfram.com/mathematica/ref/ParallelMap.html"&gt;ParallelDistribute/ParallelMap&lt;/a&gt;". Or if you hacked on the Cray, you'd call it "&lt;a href="http://docs.cray.com/books/S-2314-51/html-S-2314-51/z1051730493oswald.html"&gt;LoadVec/ParVec/PopVec&lt;/a&gt;". At NVIDIA you'd probably call this "&lt;a href="http://forums.nvidia.com/lofiversion/index.php?t62601.html"&gt;CUDALoad/CUDAExecute&lt;/a&gt;". Or if you were the CEO of Amazon, I supposed you'd call it "Elastic Cloud Map Reduce" and then you'd make the programming API really obscure and difficult to develop for, and then charge a god-given arm and a leg to use it.&lt;br /&gt;&lt;br /&gt;They all do the same thing: copy data to nodes, run them, and copy the output back.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Step 8: Benchmark and Go!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I wrote a couple of &lt;a href="http://www.liquidware.com/apps/88"&gt;benchmark programs&lt;/a&gt; that basically run the upper.r code 40 times on a large chunk of text I downloaded from &lt;a href="http://www.gutenberg.org/wiki/Main_Page"&gt;Project &lt;/a&gt;&lt;/span&gt;&lt;a href="http://www.gutenberg.org/wiki/Main_Page"&gt;&lt;span style="font-size:85%;"&gt;Gutenberg&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;. The benchmarklocal.sh script runs the test 40 times serially locally on my laptop.&lt;br /&gt;&lt;br /&gt;The benchmarkparallel.sh script runs the test 10 times in parallel, then repeats 4 times.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#!/bin/bash&lt;br /&gt;./ecp data.txt&lt;br /&gt;./ecp upper.r&lt;br /&gt;./esh "R BATCH --no-save &lt;&gt;&lt;br /&gt;&lt;br /&gt;The results are surprising to me, at least. The punchline is that, on average, the Dual-Core Intel chip takes ~30-35 seconds to complete the tests, while the BeagleBoard Elastic R Beowulf Cluster takes around ~20 seconds.&lt;br /&gt;&lt;br /&gt;benchmarkparallel.sh is faster than my top-of-the-line $4,500 Lenovo work laptop running benchmarklocal.sh. Now there are always going to be skeptics saying, I could have optimized this or that, but that's not the point. I built it much faster than I could have normally...&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm5.static.flickr.com/4128/4967526053_c662595e87.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 500px; height: 375px;" src="http://farm5.static.flickr.com/4128/4967526053_c662595e87.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Step 9: Take lots of photos&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The sky's the limit. Or rather, the practical limit is my ability to appear socially uninhibited as I bring this suitcase into a conference meeting room, pardon myself as I plug it into the outlet (until I get a battery backup unit), and then run the thing at max speed as I calculate floating point math, and extract long capitalized phrases from anything in the room.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm5.static.flickr.com/4108/4967559059_208da1ff83.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 500px; height: 375px;" src="http://farm5.static.flickr.com/4108/4967559059_208da1ff83.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm5.static.flickr.com/4107/4967559021_ecb3ed1a55.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 500px; height: 375px;" src="http://farm5.static.flickr.com/4107/4967559021_ecb3ed1a55.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;I uploaded the rest of the pictures I took in much &lt;a href="http://www.flickr.com/photos/22071518@N04/"&gt;higher resolution over on Flickr&lt;/a&gt;...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;:-)&lt;br /&gt;&lt;br /&gt;Enjoy...&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/7377057412446264720-2836537061573379057?l=antipastohw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antipastohw.blogspot.com/feeds/2836537061573379057/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7377057412446264720&amp;postID=2836537061573379057' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/2836537061573379057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/2836537061573379057'/><link rel='alternate' type='text/html' href='http://antipastohw.blogspot.com/2010/09/how-to-make-beagleboard-elastic-r.html' title='How to make a BeagleBoard Elastic R Beowulf Cluster in a Briefcase'/><author><name>Matt</name><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/4148/4967526127_b4a1533b66_t.jpg' height='72' width='72'/><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7377057412446264720.post-106594890862970273</id><published>2010-09-05T08:17:00.000-07:00</published><updated>2010-09-05T19:10:44.783-07:00</updated><title type='text'>If the Old Spice Man were an Arduino</title><content type='html'>&lt;span style="font-size: x-small;"&gt;&lt;i&gt;I worked fairly late last night on one of my projects, so I'm in a silly mood as I type this. Justin just mentioned to me that he built some more &lt;a href="http://www.liquidware.com/shop/show/ILL/Illuminato%3A%3AGenesis"&gt;Illuminato Genesis&lt;/a&gt; boards, and that I should mention that they're now in stock for the first time in months. But that would be boring, so I figured I'd "spice" up the public service announcement... and Chris and I have had an inside joke with Chris that the Illuminato Genesis is the Old Spice Man of Arduinos :-)&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://www.liquidware.com/shop/show/ILL/Illuminato%3A%3AGenesis"&gt;Illuminato Genesis &lt;/a&gt;has a lot in common with the Old Spice man:&lt;br /&gt;&lt;br /&gt;It's ripped - with 42 I/O pins&lt;br /&gt;It's built - by hand&lt;br /&gt;It's tall - with 64k of memory&lt;br /&gt;And it's suave - with custom LED's&lt;br /&gt;&lt;br /&gt;So naturally... &lt;br /&gt;&lt;br /&gt;Look at your Arduino.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_pGsJFsc5Buc/TIOyqVYi-qI/AAAAAAAAAv0/gV_W2g8u5fM/s1600/DSC00164.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://1.bp.blogspot.com/_pGsJFsc5Buc/TIOyqVYi-qI/AAAAAAAAAv0/gV_W2g8u5fM/s400/DSC00164.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Now back at me.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_pGsJFsc5Buc/TIOwdyn_mgI/AAAAAAAAAu8/qAVwASr2dw8/s1600/Illuminato+Genesis+With+Lithium+Backpack.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_pGsJFsc5Buc/TIOwdyn_mgI/AAAAAAAAAu8/qAVwASr2dw8/s320/Illuminato+Genesis+With+Lithium+Backpack.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Now back at your &lt;a href="http://www.liquidware.com/shop/show/ARD/Arduino+Duemilanove"&gt;Arduino&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_pGsJFsc5Buc/TIOyu0019kI/AAAAAAAAAwE/Y-8KUrOAw0E/s1600/DSC00166.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://2.bp.blogspot.com/_pGsJFsc5Buc/TIOyu0019kI/AAAAAAAAAwE/Y-8KUrOAw0E/s400/DSC00166.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Now back to me.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_pGsJFsc5Buc/TIOwe1u-m_I/AAAAAAAAAvE/UAJoHr6MX8Q/s1600/Frontside.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_pGsJFsc5Buc/TIOwe1u-m_I/AAAAAAAAAvE/UAJoHr6MX8Q/s320/Frontside.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Sadly, he isn't me.&lt;br /&gt;&lt;br /&gt;But if he had 42 I/O pins, and had twice the memory, he could function like he's me.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_pGsJFsc5Buc/TIOysmJYnYI/AAAAAAAAAv8/KGMhsPb0E2o/s1600/DSC00165.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://4.bp.blogspot.com/_pGsJFsc5Buc/TIOysmJYnYI/AAAAAAAAAv8/KGMhsPb0E2o/s400/DSC00165.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Look down.&lt;br /&gt;&lt;br /&gt;Back up.&lt;br /&gt;&lt;br /&gt;Where are you? Your in a lab with wires.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_pGsJFsc5Buc/TIOygoPanxI/AAAAAAAAAvc/kmSDAP4imig/s1600/DSC00167.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://2.bp.blogspot.com/_pGsJFsc5Buc/TIOygoPanxI/AAAAAAAAAvc/kmSDAP4imig/s400/DSC00167.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;With the Arduino your Arduino could look like.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_pGsJFsc5Buc/TIOwc_IMLzI/AAAAAAAAAu0/41tBp_4L8Og/s1600/Illuminato+Genesis+with+Front+Shot.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="258" src="http://1.bp.blogspot.com/_pGsJFsc5Buc/TIOwc_IMLzI/AAAAAAAAAu0/41tBp_4L8Og/s400/Illuminato+Genesis+with+Front+Shot.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;What's in your hand?&lt;br /&gt;&lt;br /&gt;Back at me.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;It's an oyster (or 2 shells) with two USB mini B connector cables to interface that thing you love.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_pGsJFsc5Buc/TIOylapExdI/AAAAAAAAAvs/adr7_KKTHIs/s1600/DSC00170.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://3.bp.blogspot.com/_pGsJFsc5Buc/TIOylapExdI/AAAAAAAAAvs/adr7_KKTHIs/s400/DSC00170.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Look again.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_pGsJFsc5Buc/TIOyjC5rH-I/AAAAAAAAAvk/yd2C63Q_wsk/s1600/DSC00172.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://1.bp.blogspot.com/_pGsJFsc5Buc/TIOyjC5rH-I/AAAAAAAAAvk/yd2C63Q_wsk/s400/DSC00172.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;The cables are now a &lt;a href="http://www.liquidware.com/shop/show/TSL/TouchShield+Slide"&gt;TouchShield Slide&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;Anything is possible when your Arduino is an Illuminato Genesis and not a Duemilanove.&lt;br /&gt;&lt;br /&gt;I'm on a horse.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_pGsJFsc5Buc/TIOyys6OBqI/AAAAAAAAAwM/FWJthDYX5yU/s1600/DSC00150.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://2.bp.blogspot.com/_pGsJFsc5Buc/TIOyys6OBqI/AAAAAAAAAwM/FWJthDYX5yU/s400/DSC00150.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;You have no idea how hard it is to find a horse these days. :-)&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;By now, almost the whole world knows about the "Old Spice Man":&lt;br /&gt;&lt;br /&gt;&lt;object height="385" width="440"&gt;&lt;param name="movie" value="http://www.youtube.com/v/owGykVbfgUE?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/owGykVbfgUE?fs=1&amp;amp;hl=en_US" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="440" 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/7377057412446264720-106594890862970273?l=antipastohw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antipastohw.blogspot.com/feeds/106594890862970273/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7377057412446264720&amp;postID=106594890862970273' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/106594890862970273'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/106594890862970273'/><link rel='alternate' type='text/html' href='http://antipastohw.blogspot.com/2010/09/if-old-space-man-were-arduino.html' title='If the Old Spice Man were an Arduino'/><author><name>Matt</name><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://1.bp.blogspot.com/_pGsJFsc5Buc/TIOyqVYi-qI/AAAAAAAAAv0/gV_W2g8u5fM/s72-c/DSC00164.JPG' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7377057412446264720.post-6402057641648280244</id><published>2010-09-01T16:04:00.000-07:00</published><updated>2010-09-02T02:44:44.648-07:00</updated><title type='text'>The emergence of "instant prototyping" vs. "rapid prototyping"</title><content type='html'>A couple days ago, I talked about why I liked using and programming modular Linux gadgets. Mike wrote me a long email in response to my &lt;a href="http://antipastohw.blogspot.com/2010/08/why-i-like-building-with-modular-linux.html"&gt;comment about "rapid prototyping" vs. "instant prototyping" which I thought I'd share&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;With the growing popularity of MakerBot, the reduced transaction costs of interfacing with sensors and digital circuits that the Arduino allows, and the emergence of modular prototyping platforms like Liquidware's Beagleboard-based gadget packs and Bug Labs, it feels like there's been a fairly dramatic increase in single-programmer productivity.&lt;br /&gt;&lt;br /&gt;I re-read one of my favorite books of all time, "&lt;a href="http://www.amazon.com/Mythical-Man-Month-Software-Engineering-Anniversary/dp/0201835959"&gt;The Mythical Man Month&lt;/a&gt;" by Frederick Brooks. Normally I don't get too excited about dense, heavy, cerebral books that don't have any practical advice unless they teach a new programming language (or algorithm). But in this case, I make an exception, because it's just a decent book that questions the &lt;i&gt;process of engineering&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_pGsJFsc5Buc/THyc_EHiqUI/AAAAAAAAAuc/zGbTkJs6uFk/s1600/Mythical+Man+Month.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://1.bp.blogspot.com/_pGsJFsc5Buc/THyc_EHiqUI/AAAAAAAAAuc/zGbTkJs6uFk/s400/Mythical+Man+Month.jpg" width="280" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Well, lo and behold, I decided to amazon around for comparable books, and I discovered that the author has written a new book, which sounded even more cerebral and pie-in-the-sky, "The Design of Design". As an aside, I wonder how much more "meta" you can possibly go. How about: "The Process of Thinking about Writing about the Design of Design" ? I mean, even the Greek philosophers had a limit. (Actually, then you'd need to write a book about a "Formalized Grammar and Metaphysics to Document the Process of Thinking about Writing about the Design of Design.")&lt;br /&gt;&lt;br /&gt;At some point, for the sake of humanity, I just hope someone remembers how to actually do something tangible! But I digress. Turns out, I enjoyed the book.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_pGsJFsc5Buc/THyc_zf24WI/AAAAAAAAAuk/igrzJiAq_Gc/s1600/The+Design+of+Design.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://4.bp.blogspot.com/_pGsJFsc5Buc/THyc_zf24WI/AAAAAAAAAuk/igrzJiAq_Gc/s400/The+Design+of+Design.jpg" width="270" /&gt;&lt;/a&gt;&lt;/div&gt;It got me thinking. The Matrix movie got me thinking, as did the movie Inception (actually the 13th Floor did too but fewer people saw that one). So the fact that a book held such high company in my mind as the Matrix, Inception, and 13th Floor is high praise coming from me. Much of the book was focused on the process of designing design processes.&lt;br /&gt;&lt;br /&gt;How many designers are too many, how should they work together, how do you organize to solve problems? I had a thought while reading the book: design exists because planning for engineering is an important and valuable step in communication and preparing to optimize problems. This is largely because engineering takes time.&lt;br /&gt;&lt;br /&gt;Engineering, or building, or solving problems takes &lt;i&gt;time&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;But what happens if you break into a new plateau of productivity? What if that time is reduced significantly?&lt;br /&gt;&lt;br /&gt;I've hit a personal plateau and breakthrough in productivity twice. Once in software, once in hardware. The software one happened a few years ago, and the hardware one happened about 2 weeks ago.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Software Productivity&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;My personal software productivity came when I moved from C programming to purely Perl. I realized that I could write an algorithm faster in Perl, and make a functional program faster, than I could in C. Because of that, I could iterate on the program faster, add new features, in less time. The next bump came when I moved from Perl to R. I could do almost everything I could in C in R, except that R also let me access tons of higher level math building blocks. I became really fast at writing code in R... although it took the code longer to execute, I focused on optimizing the algorithm or the way I wrote a function, as opposed to spending lots of time debugging Perl data structures, or C memory leaks.&lt;br /&gt;&lt;br /&gt;The common thread was that R allowed a higher level of functional modularity, but still exposed the lower level functions and data types for me to use when I needed them.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Hardware Productivity&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Recently, I've felt similarly faster at building hardware than I used to be. I used to have to write PIC chips into protoboards manually with wires that I stripped and cut myself. Then I got excited about Basic STAMP boards because they let me focus more on the code, and on a few simple digital IO pins. Then the Arduino completely changed the way I thought about accessing sensors, switches, and digital interfaces in general - it significantly lowered the "hardware access barrier" if such a thing exists. In practical words, it let me sit down, and hack the &lt;a href="http://antipastohw.blogspot.com/2008/10/hacking-esquire-cover-e-ink-screen-with.html"&gt;E-Ink screen on the Esquire magazine cover&lt;/a&gt; in a matter of hours, rather than days. Now, I'm hacking away on &lt;a href="http://www.liquidware.com/shop/show/GP/Gadget+Pack"&gt;Arduino gadget &lt;/a&gt;shields and &lt;a href="http://www.liquidware.com/shop/show/BB-ESK/Beagle+Embedded+Starter+Kit"&gt;BeagleBoard Gadget Packs&lt;/a&gt;... and the time it takes to go from "I have an idea for a gadget hardware that does XYZ" to actually having one in front of me is measured in minutes.&lt;br /&gt;&lt;br /&gt;I think I've found the critical pattern... just like in software, the biggest productivity improvement came as the hardware allows a higher level of functional modularity. I'm interfacing with sensors now, as opposed to I2C buses, so I'm able to build a hardware device even faster using a new sensor, for instance. But the important part is that as the hardware gets higher and higher level, it still gives me access to the basic bit-banging serial and data IO ports and buses, just in case.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Open vs. Closed Design Philosophy&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;That's the biggest difference in my design philosophy and that of Apple. While Apple *hides* digital IO and obscures interfaces, everything I've ever built *opens* the digital raw interface, and keeps that exposed and really easy to access from Perl, R, and C, even as the modules higher level.&lt;br /&gt;&lt;br /&gt;The result is much faster hardware and software development.&lt;br /&gt;&lt;br /&gt;As this continues, the time it takes to prototype decreases.&lt;br /&gt;&lt;br /&gt;At some point, the time it takes me to prototype a device might reach the time it actually takes for me to just build it anyway.&lt;br /&gt;&lt;br /&gt;And maybe that's some new concept or field of "extreme" or "agile" &lt;i&gt;instant hardware prototyping&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;...and naturally, this is accelerated by the existence of Open Source Hardware...&lt;br /&gt;&lt;br /&gt;Why? Because Open Source Hardware is about lowering design barriers, exposing underlying schematics functional blocks, and the result is that prototyping with Open Source Hardware - in my experience - is orders of magnitude faster than traditional dev kits, and proprietary hardware.&lt;br /&gt;&lt;br /&gt;... &lt;br /&gt;&lt;br /&gt;Wow. Where did that come from? I suppose this is an example of the kind of high level, head-in-the-clouds type thoughts you walk away with after reading "&lt;a href="http://www.amazon.com/Design-Essays-Computer-Scientist/dp/0201362988"&gt;The Design of Design&lt;/a&gt;". I feel like the &lt;a href="http://en.wikipedia.org/wiki/Reading_Rainbow"&gt;reading rainbow guy&lt;/a&gt;: I recommend that book for any design engineer. I think the kind of design discipline I learned will make me a better hardware hacker - or at least a more efficient one (I wonder if anyone's ever done a study on hacker efficiency?) And the honest-to-goodness truth is that I'm not paid to endorse it. I'm not getting any kick backs (ha), nothing. I simply enjoyed the book, and it made me realize something about my own design process I hadn't thought about before...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_pGsJFsc5Buc/THylOjSDu9I/AAAAAAAAAus/-MyJf6Xiv5Y/s1600/reading_rainbow.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/_pGsJFsc5Buc/THylOjSDu9I/AAAAAAAAAus/-MyJf6Xiv5Y/s320/reading_rainbow.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Ok, back to hacking hardware, I promise...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7377057412446264720-6402057641648280244?l=antipastohw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antipastohw.blogspot.com/feeds/6402057641648280244/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7377057412446264720&amp;postID=6402057641648280244' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/6402057641648280244'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/6402057641648280244'/><link rel='alternate' type='text/html' href='http://antipastohw.blogspot.com/2010/09/emergence-of-instant-prototyping-vs.html' title='The emergence of &quot;instant prototyping&quot; vs. &quot;rapid prototyping&quot;'/><author><name>Matt</name><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://1.bp.blogspot.com/_pGsJFsc5Buc/THyc_EHiqUI/AAAAAAAAAuc/zGbTkJs6uFk/s72-c/Mythical+Man+Month.jpg' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7377057412446264720.post-7376666569642281125</id><published>2010-08-30T23:04:00.000-07:00</published><updated>2010-08-30T23:04:16.107-07:00</updated><title type='text'>Why I like building with modular Linux Gadgets</title><content type='html'>&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;With all the talk about &lt;a href="http://www.businessinsider.com/iphone-vs-android-war-2010-5"&gt;iPhone vs. Android wars&lt;/a&gt;, it's easy to forget that Linux was once discussed as a popular platform for rapid prototyping gadget development. The more projects I do with the &lt;a href="http://www.liquidware.com/shop/show/BB-ESK/Beagle+Embedded+Starter+Kit"&gt;BeagleBoard&lt;/a&gt;, the more emails I seem to get from fellow engineers and programmers - many who work at embedded systems companies around the Boston, New York, (and California).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Oddly enough, a lot of programmers still favor Linux development over iPhone apps because of how many programming languages you have available, and the fact that you don't have to load up massive amounts of dev API's to start hacking, you can just pick it up with gcc or Perl and run. And &lt;a href="http://www.linuxfordevices.com/c/a/Linux-For-Devices-Articles/The-Linux-Devices-Showcase/"&gt;Linux gadgets &lt;/a&gt;in general are a little different from Android too, because while Android focuses more on the GUI and user interface and experience, Linux is much lower level, and therefore tends to be more useful for industrial design, control, and engineering applications like sensor and motor control and industrial automation.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="font-size: x-small;"&gt;I suppose you could say Android is "consumer" focused, and Linux is "industrial" focused.&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Anyway, I've been programming a number of apps for folks who have asked for help recently, and I've been learning a lot about the design process of building modular gadgets with the &lt;a href="http://www.liquidware.com/shop/show/BB-C4/BeagleBoard+C4"&gt;BeagleBoard &lt;/a&gt;from TI, and the &lt;a href="http://www.liquidware.com/shop/show/BB-BT/BeagleTouch"&gt;BeagleTouch &lt;/a&gt;and &lt;a href="http://www.liquidware.com/shop/show/BB-BJC/BeagleJuice"&gt;BeagleJuice&lt;/a&gt; from Liquidware.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://3.bp.blogspot.com/_pGsJFsc5Buc/THyVbcAfM3I/AAAAAAAAAtM/ca48LH0_1ho/s1600/BeagleBoard+Modular+Gadgets+Backside+Parts.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://3.bp.blogspot.com/_pGsJFsc5Buc/THyVbcAfM3I/AAAAAAAAAtM/ca48LH0_1ho/s400/BeagleBoard+Modular+Gadgets+Backside+Parts.JPG" width="400" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;The first thing I've realized is that having raw exposed digital IO pins is a life-saver. I use these to hack in switches and LED's without having to completely reverse engineer schematics and pin diagrams. Literally I can just solder into the general purpose IO and I'm off and running. Alternatively, I use the Arduino to wire in a sensor like the &lt;a href="http://www.liquidware.com/shop/show/SEN-CMP/Compass+Module"&gt;Compass Sensor &lt;/a&gt;or &lt;a href="http://www.liquidware.com/shop/show/SEN-SHT/Humidity+and+Temperature+Sensor"&gt;Temp Sensor&lt;/a&gt; or Gyroscopic Sensor, and then plug it into the USB port (I'll blog about this soon).&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://3.bp.blogspot.com/_pGsJFsc5Buc/THyWKisCoiI/AAAAAAAAAuM/-BkWZnIW9UI/s1600/BeagleBoard+Modular+Gadgets+BackSide+Twist.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://3.bp.blogspot.com/_pGsJFsc5Buc/THyWKisCoiI/AAAAAAAAAuM/-BkWZnIW9UI/s400/BeagleBoard+Modular+Gadgets+BackSide+Twist.JPG" width="400" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Practically speaking, being able to disassemble the device and reassemble it on the fly in a modular way, is a pretty useful skill in making gadget or hardware demos. This is because I can change the form factor around on the fly. I was in a meeting earlier today (which inspired me to write this article), when the project manager guy asked how hard it would be to turn the &lt;a href="http://www.liquidware.com/shop/show/BB-ULT/Ultimate+Beagle+Gadget+Pack"&gt;Gadget Pack handheld &lt;/a&gt;into a terminal with a keyboard... so I unscrewed the demo and within 60 seconds, had something that looked like this:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://1.bp.blogspot.com/_pGsJFsc5Buc/THyWyyTvIRI/AAAAAAAAAuU/T_e6aFeuYLM/s1600/BeagleBoard+Modular+Gadgets+With+Keyboard.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://1.bp.blogspot.com/_pGsJFsc5Buc/THyWyyTvIRI/AAAAAAAAAuU/T_e6aFeuYLM/s400/BeagleBoard+Modular+Gadgets+With+Keyboard.JPG" width="400" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Then, one of the engineers said, "yeah, that's cool, but we really ought to have an on-screen keyboard." So I clicked around twice, and using the fact that it's a touchscreen, I loaded up the &lt;a href="http://antipastohw.pbworks.com/BeagleTouch+On-Screen+Keyboard"&gt;Linux onscreen keyboard app that Will converted for the Beagle Gadget Pack&lt;/a&gt;, and then turned it into this:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://3.bp.blogspot.com/_pGsJFsc5Buc/THyVi_xl0vI/AAAAAAAAAt0/KAaNmytKGR8/s1600/BeagleBoard+Modular+Gadgets+Onscreen+Keyboard.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://3.bp.blogspot.com/_pGsJFsc5Buc/THyVi_xl0vI/AAAAAAAAAt0/KAaNmytKGR8/s400/BeagleBoard+Modular+Gadgets+Onscreen+Keyboard.JPG" width="400" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;That's pretty powerful, because it's *real time prototyping* not just &lt;i&gt;rapid prototyping&lt;/i&gt;. As in, it happened instantly, almost as fast as it took for someone to finish the sentence, it was done. I've observed that "business guys" and "customers" that embedded design companies build devices for often like to change their mind in the middle of the project as they learn more about what they're trying to build, or the aesthetics, or design or interface needs. It's quite expensive to a project to have to re-engineer the whole thing from scratch every time the form factor needs to be changed. Making something 100% modular makes changes like this really fast. Plus, I've pretty much found a way to cut out the part of the prototyping process that involves making a "non-functional prototype" and just jumped right into making a functional prototype...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://4.bp.blogspot.com/_pGsJFsc5Buc/THyVeIDtFRI/AAAAAAAAAtc/_6_j27-4AtE/s1600/BeagleBoard+Modular+Gadgets+All+Parts.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://4.bp.blogspot.com/_pGsJFsc5Buc/THyVeIDtFRI/AAAAAAAAAtc/_6_j27-4AtE/s400/BeagleBoard+Modular+Gadgets+All+Parts.JPG" width="400" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;So I've been living with the &lt;a href="http://www.liquidware.com/shop/show/BB-SCICAL/Open+SciCal+X101"&gt;Open SciCal &lt;/a&gt;and the &lt;a href="http://www.liquidware.com/shop/show/BB-ULT/Ultimate+Beagle+Gadget+Pack"&gt;Gadget Pack &lt;/a&gt;for 2.5 weeks now, and so far I've showed it to half a dozen folks, and gotten 3 assignments to build custom gadgets using the platform. I'm not going to become a millionaire by any means, but I'm at least getting paid to do what I love doing... which is hacking open source hardware into gadgets, and if you had asked me 3 years ago when I started this blog if that would ever be a possibility, I would have said fat chance...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://3.bp.blogspot.com/_pGsJFsc5Buc/THyVhYePuWI/AAAAAAAAAts/8Xl3zqi7PBg/s1600/BeagleBoard+Modular+Gadget+Angled+Shot.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://3.bp.blogspot.com/_pGsJFsc5Buc/THyVhYePuWI/AAAAAAAAAts/8Xl3zqi7PBg/s400/BeagleBoard+Modular+Gadget+Angled+Shot.JPG" width="400" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;So anyway, thanks to Will and Chris, Mike and Justin, and Matt, John for all the support and help along the way... and here's to some happy hacking over the next few days and very very late nights as I work on my top secret project...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;"Project C".&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Dun dun dun....&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;:-)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&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/7377057412446264720-7376666569642281125?l=antipastohw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antipastohw.blogspot.com/feeds/7376666569642281125/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7377057412446264720&amp;postID=7376666569642281125' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/7376666569642281125'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/7376666569642281125'/><link rel='alternate' type='text/html' href='http://antipastohw.blogspot.com/2010/08/why-i-like-building-with-modular-linux.html' title='Why I like building with modular Linux Gadgets'/><author><name>Matt</name><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://3.bp.blogspot.com/_pGsJFsc5Buc/THyVbcAfM3I/AAAAAAAAAtM/ca48LH0_1ho/s72-c/BeagleBoard+Modular+Gadgets+Backside+Parts.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7377057412446264720.post-4985875334166656400</id><published>2010-08-29T10:16:00.000-07:00</published><updated>2010-08-29T10:16:00.762-07:00</updated><title type='text'>Thanks Hackaday :-)</title><content type='html'>&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;I must have totally missed this, but I looked back at my RSS reader, and noticed that the &lt;a href="http://antipastohw.blogspot.com/2010/07/introducing-100-open-source-hwsw-r.html"&gt;Open SciCal project&lt;/a&gt; got onto &lt;a href="http://hackaday.com/2010/08/06/open-graphing-calculator-beagleboard-r/"&gt;hackaday&lt;/a&gt;. Thanks a lot! It's definitely no secret that I have a nerd crush on hackaday, since I've read that blog since middle school, and aspire to recreate everything they mention and talk about.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://2.bp.blogspot.com/_pGsJFsc5Buc/THnf7yybTcI/AAAAAAAAAtE/iR-rXCbftHs/s1600/sshot-1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://2.bp.blogspot.com/_pGsJFsc5Buc/THnf7yybTcI/AAAAAAAAAtE/iR-rXCbftHs/s400/sshot-1.jpg" width="247" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Here's a &lt;a href="http://hackaday.com/2010/08/06/open-graphing-calculator-beagleboard-r/"&gt;link to the post&lt;/a&gt;, and thanks again, hackaday...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&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/7377057412446264720-4985875334166656400?l=antipastohw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antipastohw.blogspot.com/feeds/4985875334166656400/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7377057412446264720&amp;postID=4985875334166656400' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/4985875334166656400'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/4985875334166656400'/><link rel='alternate' type='text/html' href='http://antipastohw.blogspot.com/2010/08/thanks-hackaday.html' title='Thanks Hackaday :-)'/><author><name>Matt</name><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/_pGsJFsc5Buc/THnf7yybTcI/AAAAAAAAAtE/iR-rXCbftHs/s72-c/sshot-1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7377057412446264720.post-9104759136759744199</id><published>2010-08-28T21:15:00.000-07:00</published><updated>2010-08-28T21:15:17.037-07:00</updated><title type='text'>Top 5 Things Microsoft Should Open Source</title><content type='html'>&lt;span style="font-size: x-small;"&gt;I don't typically go on rants, but when I saw &lt;a href="http://www.telegraph.co.uk/technology/microsoft/7961643/We-love-open-source-says-Microsoft.html"&gt;this article about Microsoft being Open Source&lt;/a&gt;, it got me thinking..&lt;br /&gt;&lt;br /&gt;If we take them at face value and assume this is a serious statement of fact, and not a clever PR campaign for OData by Jean Paoli&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;, then we have to assume that Microsoft is stupid. Microsoft makes money from being proprietary, and capitalizing on two things:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-size: x-small;"&gt;The integral nature with which their products exchange information with each other&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: x-small;"&gt;The firewalled nature with which their products &lt;span style="font-style: italic; font-weight: bold;"&gt;do not &lt;/span&gt;exchange information with other products&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;The most important element of their successful software platform is not so much that it is "Open Source" or not, but rather that it only plays well with themselves, and doesn't play well with others! Microsoft software is like a &lt;a href="http://www.imdb.com/title/tt0475293/"&gt;monstrous horrible clique&lt;/a&gt; of software programs that hangs out in the corner of the playground by itself, gossiping about everyone else, and thinking they're really &lt;a href="http://www.youtube.com/watch?v=mqWq_48LxWQ"&gt;awesome when really they're not&lt;/a&gt;. Microsoft Office is like Zac Efron's character &lt;a href="http://www.imdb.com/character/ch0012448/"&gt;Troy Bolton&lt;/a&gt;: a huge tool.&lt;br /&gt;&lt;br /&gt;In the words of Mike Posner, and the lyrics of "&lt;a href="http://www.youtube.com/watch?v=mqWq_48LxWQ"&gt;Cooler than me&lt;/a&gt;", this is what I think of Microsoft:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-weight: bold;"&gt;you got designer shades,&lt;/span&gt;          (closed ridiculous XML standard files)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt; &lt;span style="font-weight: bold;"&gt;just to hide your face and&lt;/span&gt;        (poorly written code)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt; &lt;span style="font-weight: bold;"&gt;you wear them around like &lt;/span&gt;   (all your apps have the same VB code that isn't open source friendly)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt; &lt;span style="font-weight: bold;"&gt;you're cooler than me.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt; &lt;span style="font-weight: bold;"&gt;and you never say hey,&lt;/span&gt;             (how do I get data into an Excel sheet from a Perl script, eh?)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt; &lt;span style="font-weight: bold;"&gt;or remember my name.&lt;/span&gt;           (when's the last time you updated your MySQL import code? HELLO!)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt; &lt;span style="font-weight: bold;"&gt;its probably cuz,&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt; &lt;span style="font-weight: bold;"&gt;you think you're cooler than me.&lt;/span&gt;      (But you're not.)&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;Don't get me wrong: I've been a user of Microsoft products for some time, not only because I have to, but because a lot of analytical and information based tasks just happen quicker when tools talk to each other, and you can transparently export and import data from one tool to another. This isn't necessarily an argument for Open Source, but it's close.&lt;br /&gt;&lt;br /&gt;I would argue the single most important and "open" commitment Microsoft can make is not about their source code, but about their architecture. "Open architecture" means playing well with others, which Microsoft doesn't do right now.&lt;br /&gt;&lt;br /&gt;So without further ado, this is my list of my top 5 things I think Microsoft should "Open Source":&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: bold;"&gt;1) Excel functions&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;I &lt;a href="http://www.ci.tuwien.ac.at/Conferences/DSC-2003/Drafts/BaierNeuwirth.pdf"&gt;would obviously integrate them into R&lt;/a&gt;, make a much more powerful library, which would add and build up functionality into Excel. This would then make Excel even more useful than it already is, and allow people like me to use it for more than just simple stuff. The visual basic engine is horrible, it was never meant to write algorithms in, and so it shouldn't. Other &lt;a href="http://www.springer.com/statistics/computanional+statistics/book/978-1-4419-0051-7"&gt;languages do that better&lt;/a&gt;.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: bold;"&gt;2) Powerpoint macros&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Slides are quickly becoming a new hieroglyphic / pictorial-based written language to business folks, just as "early" languages mostly started from simple graphics. But Powerpoint should have a way to make these graphics "go meta" so that scripting could be done easily and more natively. I have tried doing this with Visual Basic, and it feels a lot like what happens when you fall off a motorcycle while not wearing protective clothing, going 60 miles an hour. Only more bloody.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: bold;"&gt;3) Charts and graphs&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;If Microsoft doesn't make their engine available to do this, and use and import from other graphing platforms more easily, &lt;a href="http://addictedtor.free.fr/graphiques/"&gt;other people are going to do it for them&lt;/a&gt;. And then they'll be sad. There's so much potential here, and they ought to be web-postable in normal formats, not stupid .NET ridiculousness. Earth to Microsoft. Your dream of owning the enterprise business web never happened, and the world got over how insanely difficult your code was to post on the web, and did something about it. It's called &lt;a href="http://rubyonrails.org/"&gt;Ruby on Rails&lt;/a&gt;. Look at &lt;a href="http://railsontherun.com/2007/10/04/sexy-charts-in-less-than-5-minutes/"&gt;how easy this is&lt;/a&gt; compared to &lt;a href="http://office.microsoft.com/en-gb/powerpoint-help/CH006351758.aspx"&gt;your .NET obfuscation here&lt;/a&gt;. 5 minutes for Rails vs. I don't even know where to begin for .NET.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: bold;"&gt;4) Microsoft Word doc format&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;I use the outline feature all the time, and the truth is, I'd love to be able to use .doc to txt converters for all my own files without having to venture into some insane XML format parser or pay $60 for some shareware app that doesn't even work on Linux. I just want a straight .doc to text converter. C or Perl script. Simple.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: medium;"&gt;&lt;span style="font-weight: bold;"&gt;5) Access data files&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;I'd argue Microsoft already missed the boat on this one. On the one end, you've got FileMaker Pro spinning circles around Access, and on the other database hand you've got MySQL doing a much better job. So what's left? A mediocre combination of the worst of both worlds. If you don't Open a reasonable, Perl-like interface to Access files, you can kiss the entire tool goodbye. I know a lot of coders, and I don't know a single one that uses Access any more. Period.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;br /&gt;I've said my piece. Like I said, I don't make a habit out of ranting, especially not about software, but I couldn't contain myself. Now back to hacking open hardware...&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/7377057412446264720-9104759136759744199?l=antipastohw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antipastohw.blogspot.com/feeds/9104759136759744199/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7377057412446264720&amp;postID=9104759136759744199' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/9104759136759744199'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/9104759136759744199'/><link rel='alternate' type='text/html' href='http://antipastohw.blogspot.com/2010/08/top-5-things-microsoft-should-open.html' title='Top 5 Things Microsoft Should Open Source'/><author><name>Matt</name><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-7377057412446264720.post-5470924972766839059</id><published>2010-08-24T17:11:00.000-07:00</published><updated>2010-08-24T17:11:00.222-07:00</updated><title type='text'>Carbon Fiber meets the LCDash</title><content type='html'>&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;I don't know how many of these I'll be able to do, but every time someone install one of the &lt;a href="http://www.liquidware.com/shop/show/DSH/LCDash+1-7+GT"&gt;LCDash&lt;/a&gt;'s into their cars, I get pretty excited. The &lt;a href="http://www.liquidware.com/shop/show/DSH/LCDash+1-7+GT"&gt;LCDash was a project &lt;/a&gt;a long time ago to control the &lt;a href="http://www.diyautotune.com/"&gt;MegaSquirt&lt;/a&gt;. And here's what it looks like in a real dashboard, surrounded by custom made carbon fiber - you can see it in the middle of the central dashboard, with the blue backlight effect:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://2.bp.blogspot.com/_pGsJFsc5Buc/THG8_MOe8oI/AAAAAAAAAs0/uGYIyfnJEDg/s1600/Carbon+Fiber+LCDash.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://2.bp.blogspot.com/_pGsJFsc5Buc/THG8_MOe8oI/AAAAAAAAAs0/uGYIyfnJEDg/s400/Carbon+Fiber+LCDash.JPG" width="400" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;There's some more discussion about it &lt;a href="http://www.teamsolo.net/forum/showthread.php?t=6824"&gt;over here on the teamsolo.net forum&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;This may get the award for the coolest looking LCDash installation I've seen yet (on the web of course).&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&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/7377057412446264720-5470924972766839059?l=antipastohw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antipastohw.blogspot.com/feeds/5470924972766839059/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7377057412446264720&amp;postID=5470924972766839059' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/5470924972766839059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/5470924972766839059'/><link rel='alternate' type='text/html' href='http://antipastohw.blogspot.com/2010/08/carbon-fiber-meets-lcdash.html' title='Carbon Fiber meets the LCDash'/><author><name>Matt</name><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/_pGsJFsc5Buc/THG8_MOe8oI/AAAAAAAAAs0/uGYIyfnJEDg/s72-c/Carbon+Fiber+LCDash.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7377057412446264720.post-744980767923485970</id><published>2010-08-21T18:21:00.000-07:00</published><updated>2010-08-21T18:56:07.407-07:00</updated><title type='text'>Arduino meets Sniper Training</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;Maybe I've been watching &lt;/span&gt;&lt;a style="font-style: italic;" href="http://www.imdb.com/title/tt1320253/"&gt;too many movies &lt;/a&gt;&lt;span style="font-style: italic;"&gt;featured &lt;/span&gt;&lt;a style="font-style: italic;" href="http://www.imdb.com/name/nm0000230/"&gt;old guys past their prime &lt;/a&gt;&lt;span style="font-style: italic;"&gt;shooting at &lt;/span&gt;&lt;a style="font-style: italic;" href="http://www.imdb.com/title/tt1320253/"&gt;evil faux-communist puppets ruled by evil capitalistic interests&lt;/a&gt;&lt;span style="font-style: italic;"&gt;. Or maybe I haven't been watching them enough :-)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Anyway, Bjorn sent over a few weeks ago some really cool cases that he built for the &lt;a href="http://www.liquidware.com/shop/show/ARD/Arduino+Duemilanove"&gt;Arduino&lt;/a&gt;, and one of them was camouflage. The second I saw the case, I had the same idea that anyone would normally have, when they see a smooth, &lt;a href="http://www.liquidware.com/shop/show/KIT-AFG/Arduino+Field+Gadget"&gt;camo Arduino case&lt;/a&gt;... time to make a sniper training ballistics tracking app for the Arduino.&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_xcCOmNtmhYE/THCChdvalAI/AAAAAAAAAjk/KUsiXdPJAf0/s1600/Camo+Arduino+Case.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 395px;" src="http://2.bp.blogspot.com/_xcCOmNtmhYE/THCChdvalAI/AAAAAAAAAjk/KUsiXdPJAf0/s400/Camo+Arduino+Case.jpg" alt="" id="BLOGGER_PHOTO_ID_5508045855704912898" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_xcCOmNtmhYE/THB_C547jkI/AAAAAAAAAic/zGDXStW19_4/s1600/Milled+Cases+for+Arduino+Gadget+Pack.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 225px;" src="http://1.bp.blogspot.com/_xcCOmNtmhYE/THB_C547jkI/AAAAAAAAAic/zGDXStW19_4/s400/Milled+Cases+for+Arduino+Gadget+Pack.JPG" alt="" id="BLOGGER_PHOTO_ID_5508042032150187586" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_xcCOmNtmhYE/THB_m7gTnAI/AAAAAAAAAjc/31hnfoZ_zok/s1600/Cases+for+Arduino+Gadget+Pack.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 225px;" src="http://1.bp.blogspot.com/_xcCOmNtmhYE/THB_m7gTnAI/AAAAAAAAAjc/31hnfoZ_zok/s400/Cases+for+Arduino+Gadget+Pack.JPG" alt="" id="BLOGGER_PHOTO_ID_5508042651059067906" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;br /&gt;So I did some research, and learned that there are actually a number of different, and sometimes conflicting theories about how &lt;a href="http://www.snipercountry.com/training.html"&gt;sniper's should train&lt;/a&gt;, and how much thought to put into ballistics tracking. As an aside, I really want to go to the &lt;a href="http://www.sniperschool.com/"&gt;GPS Sniper Training School&lt;/a&gt; - I am not in any way endorsed by them, but it looks fun. It didn't take long for me to get in over my head, and then I figured, that probably the most helpful app I could write, would be one that helped me &lt;a href="http://accuracy.martinchick.com/"&gt;calculate spread, grouping density, and cluster metrics &lt;/a&gt;for accuracy training.&lt;br /&gt;&lt;br /&gt;I really liked the look of this target, inspired by the &lt;a href="http://www.sniperflashcards.com/windreading_print.pdf"&gt;Aguilar training system&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_xcCOmNtmhYE/THB_Bo9RlyI/AAAAAAAAAiE/sk5xnrgI0Ts/s1600/Aguilar+Target.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 380px;" src="http://2.bp.blogspot.com/_xcCOmNtmhYE/THB_Bo9RlyI/AAAAAAAAAiE/sk5xnrgI0Ts/s400/Aguilar+Target.jpg" alt="" id="BLOGGER_PHOTO_ID_5508042010425136930" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;So I decided to program it into the &lt;a href="http://www.liquidware.com/shop/show/TSL/TouchShield+Slide"&gt;TouchShield Slide&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_xcCOmNtmhYE/THB_mpgDTqI/AAAAAAAAAjU/f1_Z557KjnA/s1600/Bullet+Tracker.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 225px;" src="http://4.bp.blogspot.com/_xcCOmNtmhYE/THB_mpgDTqI/AAAAAAAAAjU/f1_Z557KjnA/s400/Bullet+Tracker.JPG" alt="" id="BLOGGER_PHOTO_ID_5508042646226161314" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_xcCOmNtmhYE/THB_DNrmxlI/AAAAAAAAAik/2AKCQL0vi9Y/s1600/Metal+Jacket+Arduino.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 225px;" src="http://1.bp.blogspot.com/_xcCOmNtmhYE/THB_DNrmxlI/AAAAAAAAAik/2AKCQL0vi9Y/s400/Metal+Jacket+Arduino.JPG" alt="" id="BLOGGER_PHOTO_ID_5508042037463008850" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_xcCOmNtmhYE/THB_B6BOw-I/AAAAAAAAAiM/e-n7AONP-cQ/s1600/Arduino+Sniper+Training+App.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 225px;" src="http://4.bp.blogspot.com/_xcCOmNtmhYE/THB_B6BOw-I/AAAAAAAAAiM/e-n7AONP-cQ/s400/Arduino+Sniper+Training+App.JPG" alt="" id="BLOGGER_PHOTO_ID_5508042015005131746" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;The app is pretty straightforward, it lets me keep track of the shots I take, and then I can do analytics and measurement stats on the &lt;a href="http://www.liquidware.com/shop/show/BB-ULT/Ultimate+Beagle+Gadget+Pack"&gt;Open SciCal calculator&lt;/a&gt;. This is a pretty sure-fire guaranteed way to look like the biggest nerd at any firing range across America.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_xcCOmNtmhYE/THB_aupEJfI/AAAAAAAAAis/APofwYrZzo4/s1600/Firing+Range+with+Arduino.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 225px;" src="http://1.bp.blogspot.com/_xcCOmNtmhYE/THB_aupEJfI/AAAAAAAAAis/APofwYrZzo4/s400/Firing+Range+with+Arduino.JPG" alt="" id="BLOGGER_PHOTO_ID_5508042441447712242" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;It took me less than 15 minutes to write that code for the Arduino and TouchShield Slide, and I had a lot of help using the function reference over here at the liquidware wiki. The functions are all inspired by the Processing programming language, so it's intuitive to pick up if you've ever written graphics for &lt;a href="http://processing.org/"&gt;Processing&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;And then I went to the shooting range, and set up at the prone position station, with the &lt;a href="http://www.liquidware.com/shop/show/BB-ULT/Ultimate+Beagle+Gadget+Pack"&gt;Open SciCal&lt;/a&gt;, and the Arduino &lt;a href="http://www.liquidware.com/apps/show/87"&gt;Sniper Bullet Tracker gadget&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_xcCOmNtmhYE/THB_dYkurtI/AAAAAAAAAjE/05ucCmoDDcg/s1600/Remington+700+meets+Arduino+and+TouchShield+Slide.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 225px;" src="http://2.bp.blogspot.com/_xcCOmNtmhYE/THB_dYkurtI/AAAAAAAAAjE/05ucCmoDDcg/s400/Remington+700+meets+Arduino+and+TouchShield+Slide.JPG" alt="" id="BLOGGER_PHOTO_ID_5508042487063555794" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_xcCOmNtmhYE/THB_d9OK4zI/AAAAAAAAAjM/MWp-FPk76-U/s1600/Arduino+Firing+Range+Day.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 225px;" src="http://4.bp.blogspot.com/_xcCOmNtmhYE/THB_d9OK4zI/AAAAAAAAAjM/MWp-FPk76-U/s400/Arduino+Firing+Range+Day.JPG" alt="" id="BLOGGER_PHOTO_ID_5508042496901047090" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_xcCOmNtmhYE/THB_chjfXII/AAAAAAAAAi8/8Qj_aDo0VDc/s1600/Sniper+Training+Target+Tracking.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 225px;" src="http://4.bp.blogspot.com/_xcCOmNtmhYE/THB_chjfXII/AAAAAAAAAi8/8Qj_aDo0VDc/s400/Sniper+Training+Target+Tracking.JPG" alt="" id="BLOGGER_PHOTO_ID_5508042472294407298" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_xcCOmNtmhYE/THB_cST-x9I/AAAAAAAAAi0/XPAanUZvmu4/s1600/Shooting+and+Sniper+Training+at+the+Range.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 225px;" src="http://2.bp.blogspot.com/_xcCOmNtmhYE/THB_cST-x9I/AAAAAAAAAi0/XPAanUZvmu4/s400/Shooting+and+Sniper+Training+at+the+Range.JPG" alt="" id="BLOGGER_PHOTO_ID_5508042468202825682" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;Here's the source code for the program (it's available at the &lt;a href="http://www.liquidware.com/apps"&gt;Open Source "App Store" &lt;/a&gt;too):&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;int q;&lt;br /&gt;int bulletx[30];&lt;br /&gt;int bullety[30];&lt;br /&gt;POINT npoint;&lt;br /&gt;int debounce;&lt;br /&gt;&lt;br /&gt;void draw_sight(void){&lt;br /&gt;  background(0,0,0);    stroke(128,128,128);   fill(0,0,0);&lt;br /&gt;&lt;br /&gt;  rect(5,5,40,25);   text("New",7,12);&lt;br /&gt;&lt;br /&gt;  rect(5,210,40,25);   text("Clear",7,217);&lt;br /&gt;&lt;br /&gt;  noFill();   ellipse(199,120,120,119);&lt;br /&gt;  ellipse(199,120,100,100);&lt;br /&gt;  ellipse(199,120,80,80);&lt;br /&gt;  ellipse(199,120,60,60);&lt;br /&gt;  ellipse(199,120,40,40);   fill(0,0,0);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;void setup()&lt;br /&gt;{&lt;br /&gt;  q = 0;   draw_sight();   debounce = 1;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;void loop()&lt;br /&gt;{&lt;br /&gt; if(touch_getCursor(&amp;amp;npoint)) {&lt;br /&gt; &lt;br /&gt; if (npoint.x &gt; 5 &amp;amp;&amp;amp; npoint.x &lt;&gt; 220 &amp;amp;&amp;amp; npoint.y &lt; q="0;"&gt; 5 &amp;amp;&amp;amp; npoint.x &lt;&gt; 5 &amp;amp;&amp;amp; npoint.y &lt; debounce="1;" q ="="" q =" 0;"&gt; 60) {&lt;br /&gt;   draw_sight();    debounce = 0;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; if(npoint.x &gt; 60) {&lt;br /&gt;   bulletx[q] = npoint.x;    bullety[q] = npoint.y;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; fill(200,0,0);&lt;br /&gt; noStroke();&lt;br /&gt; for ( int j = 0; j &lt;= q; j++) {         if (bulletx[j]&gt;40) {&lt;br /&gt;     ellipse(bulletx[j],bullety[j],5,5);&lt;br /&gt;   }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Here are a couple videos:&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/tn2Ry7vxrbQ&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/tn2Ry7vxrbQ&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;/span&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/vztjx0RX620&amp;amp;hl=en&amp;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/vztjx0RX620&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;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/j-QlwevzMRE&amp;amp;hl=en&amp;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/j-QlwevzMRE&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;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-size:85%;"&gt;I uploaded some other pictures onto &lt;a href="http://www.flickr.com/photos/22071518@N04"&gt;my Flickr page&lt;/a&gt;... in case anyone's interested.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;I also put all the parts I used together into a &lt;a href="http://www.liquidware.com/shop/show/KIT-AFG/Arduino+Field+Gadget"&gt;kit&lt;/a&gt;, called the &lt;a href="http://www.liquidware.com/shop/show/KIT-AFG/Arduino+Field+Gadget"&gt;Arduino Field Gadget&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Enjoy!&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/7377057412446264720-744980767923485970?l=antipastohw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antipastohw.blogspot.com/feeds/744980767923485970/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7377057412446264720&amp;postID=744980767923485970' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/744980767923485970'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/744980767923485970'/><link rel='alternate' type='text/html' href='http://antipastohw.blogspot.com/2010/08/arduino-meets-sniper-training.html' title='Arduino meets Sniper Training'/><author><name>Matt</name><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/_xcCOmNtmhYE/THCChdvalAI/AAAAAAAAAjk/KUsiXdPJAf0/s72-c/Camo+Arduino+Case.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7377057412446264720.post-7397263116176689895</id><published>2010-08-20T01:38:00.000-07:00</published><updated>2010-08-20T01:38:25.988-07:00</updated><title type='text'>How to make a BeagleBoard Wardriving Gadget</title><content type='html'>&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_pGsJFsc5Buc/TG472KxVEBI/AAAAAAAAAsc/CC1PU32mAnU/s1600/Liquidware+BeagleBoard+Wardriving+Gadget+In+My+Palm.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://2.bp.blogspot.com/_pGsJFsc5Buc/TG472KxVEBI/AAAAAAAAAsc/CC1PU32mAnU/s400/Liquidware+BeagleBoard+Wardriving+Gadget+In+My+Palm.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;War driving is fun. It is the process of driving around the neighborhood in a car, FBI van, or bicycle, looking for unsecured wifi networks, and then checking out what might be on those networks. There are plenty of legitimate reasons to do this, for instance:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: x-small;"&gt;Checking a company's various office locations to make sure that the wifi networks are secured&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: x-small;"&gt;Making sure that someone hasn't set up a rogue wifi router where don't expect one to be&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: x-small;"&gt;Demonstrating to friends and family why it is important to secure a wifi router with with passwords&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;But more often than not, there are slightly less legitimate reasons, including:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: x-small;"&gt;Finding places to park where you can get free wifi to send emails or visit websites without being tracked&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: x-small;"&gt;Find wifi networks that are fun to hack around, and see what types of services are available&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: x-small;"&gt;Snoop traffic to watch people type in AOL instant messenger conversations to each other when they should definitely be working&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size: x-small;"&gt;Note: On the record, I have nneeeeeever done any of these things. Neeeeeeeever. Not me, nope. Nada.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_pGsJFsc5Buc/TG47xOwS0eI/AAAAAAAAAsE/Rx3TtJnxix8/s1600/Liquidware+BeagleBoard+Wardriving+Gadget+Angled.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://3.bp.blogspot.com/_pGsJFsc5Buc/TG47xOwS0eI/AAAAAAAAAsE/Rx3TtJnxix8/s400/Liquidware+BeagleBoard+Wardriving+Gadget+Angled.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_pGsJFsc5Buc/TG47yBNaKSI/AAAAAAAAAsM/ft8VESnrATA/s1600/Liquidware+BeagleBoard+Wardriving+Gadget+in+my+hand.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://3.bp.blogspot.com/_pGsJFsc5Buc/TG47yBNaKSI/AAAAAAAAAsM/ft8VESnrATA/s400/Liquidware+BeagleBoard+Wardriving+Gadget+in+my+hand.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;So without further ado, here's how to make a BeagleBoard-Based Wardriving Gadget... the parts that I used for mine were:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.liquidware.com/shop/show/BB-C4/BeagleBoard+C4"&gt;&lt;span style="font-size: x-small;"&gt;BeagleBoard&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.liquidware.com/shop/show/BB-BT/BeagleTouch"&gt;&lt;span style="font-size: x-small;"&gt;BeagleTouch&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://www.liquidware.com/shop/show/BB-BJC/BeagleJuice"&gt;BeagleJuice &lt;/a&gt;plus standoffs&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: x-small;"&gt;BeagleJuice Power Splitter (handmade)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: x-small;"&gt;Small 5V USB hub from the &lt;a href="http://www.liquidware.com/shop/show/BA-PACK/Beagle+Accessory+Pack"&gt;Beagle Accessory Pack&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.liquidware.com/shop/show/BA-WIFI/Wireless+G+USB+Adapter"&gt;&lt;span style="font-size: x-small;"&gt;Compatible Wifi Module&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: x-small;"&gt;3 pieces of black electrical tape&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size: x-small;"&gt;Many of these parts are available in &lt;a href="http://www.liquidware.com/shop/show/BB-ESK/Beagle+Embedded+Starter+Kit"&gt;one kit&lt;/a&gt;. The BeagleJuice forked splitter basically just took the power cable from the USB hub, and spliced it nicely into the BeagleJuice power cable. This is what it looks like, compared to the basic BeagleJuice power cable:&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_pGsJFsc5Buc/TG47ubySm4I/AAAAAAAAAr0/o1Dy-PlO6p4/s1600/Forked+BeagleBoard+BeagleJuice+Cable.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="328" src="http://4.bp.blogspot.com/_pGsJFsc5Buc/TG47ubySm4I/AAAAAAAAAr0/o1Dy-PlO6p4/s400/Forked+BeagleBoard+BeagleJuice+Cable.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Beautiful hand writing! Why thank you. No problem! My pleasure! It's way too late... I need sleep...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;There really wasn't much to do, but in case it isn't obvious from the pictures, it was mostly just mechanical snap assembly:&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-size: x-small;"&gt;I put the BeagleTouch onto the BeagleBoard&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: x-small;"&gt;I mounted the BeagleJuice onto the back of the BeagleBoard&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: x-small;"&gt;I wished I had done it in the opposite order, since the standoff screws would have been easier to mount if I had put them on the BeagleBoard-BeagleJuice first&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: x-small;"&gt;I plugged the BeagleJuice Power Splitter into the BeagleBoard&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: x-small;"&gt;I plugged the other end of the BeagleJuice Power Splitter into the USB hub&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: x-small;"&gt;I plugged in the compatible wifi module into the end of the USB hub&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: x-small;"&gt;Then I used electrical tape to connect everything together&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-size: x-small;"&gt;When everything was mechanically connected, and assembled, the software was pretty straightforward... I used Kismet, which need a few extra packages to be installed, but these commands work start to finish:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;$ wget &lt;a href="http://www.kismetwireless.net/code/kismet-2010-07-R1.tar.gz" target="_blank"&gt;http://www.kismetwireless.net/code/kismet-2010-07-R1.tar.gz&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;$ tar -xvf kismet-2010-07-R1.tar.gz&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;$ opkg install ncurses-dev libpcre-dev libpcap-dev libnl-dev&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;$ cd kismet-2010-07-R1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;$ ./configure&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;$ make dep&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;$ make&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;$ make install&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Then to get kismet up and running, I needed to first get wlan0, the wifi module operating and turned on, and then I just ran kismet:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;$ ifup wlan0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;$ kismet -c wlan0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;The instructions are also on the &lt;a href="http://antipastohw.pbworks.com/Linux+Wi-Fi+Snooping"&gt;Antipasto Wiki over here&lt;/a&gt;. Here's a video of me showing it off:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/zvHq9kNZlDY&amp;amp;hl=en&amp;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/zvHq9kNZlDY&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;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;And here's a set of videos I took while walking around outside an abandoned office building very late at night (aka 2 hours ago)... you can see a bunch of wifi networks popped up:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/hyxpm-Isu-g&amp;amp;hl=en&amp;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/hyxpm-Isu-g&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;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/3sIoXUaNAac&amp;amp;hl=en&amp;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/3sIoXUaNAac&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;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_pGsJFsc5Buc/TG47zmCJE-I/AAAAAAAAAsU/E80lNw1VPsM/s1600/Liquidware+BeagleBoard+Wardriving+Gadget+Frontside+Twist.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://4.bp.blogspot.com/_pGsJFsc5Buc/TG47zmCJE-I/AAAAAAAAAsU/E80lNw1VPsM/s400/Liquidware+BeagleBoard+Wardriving+Gadget+Frontside+Twist.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;I uploaded a few other pictures onto the &lt;a href="http://www.flickr.com/photos/22071518@N04"&gt;Flickr page&lt;/a&gt;, and of course all the parts and source code is over at the &lt;a href="http://www.liquidware.com/shop"&gt;Liquidware shop&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/7377057412446264720-7397263116176689895?l=antipastohw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antipastohw.blogspot.com/feeds/7397263116176689895/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7377057412446264720&amp;postID=7397263116176689895' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/7397263116176689895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/7397263116176689895'/><link rel='alternate' type='text/html' href='http://antipastohw.blogspot.com/2010/08/how-to-make-beagleboard-wardriving.html' title='How to make a BeagleBoard Wardriving Gadget'/><author><name>Matt</name><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/_pGsJFsc5Buc/TG472KxVEBI/AAAAAAAAAsc/CC1PU32mAnU/s72-c/Liquidware+BeagleBoard+Wardriving+Gadget+In+My+Palm.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7377057412446264720.post-5743551324718746539</id><published>2010-08-16T17:27:00.001-07:00</published><updated>2010-08-16T18:20:19.396-07:00</updated><title type='text'>How to program the BeagleBoard</title><content type='html'>&lt;span style="font-size:85%;"&gt;I've gotten a lot of questions over the past couple of weeks of people asking me, "how do I program the &lt;a href="http://www.liquidware.com/shop/show/BB-C4/BeagleBoard+C4"&gt;BeagleBoard&lt;/a&gt;?" It's not that silly of a question, actually, and it reminds me that I once asked this question too, only a couple of months ago.&lt;br /&gt;&lt;br /&gt;The answer is: you don't! The BeagleBoard programs you! (just kidding, this isn't Russia)&lt;br /&gt;&lt;br /&gt;In all seriousness, the BeagleBoard isn't like the Arduino, in that it doesn't have an IDE program that sits on the desktop and communicates with the board. Instead, all of its files exist on an SD card.&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://www.liquidware.com/shop/show/BB-SD4/Liquidware+BeagleBoot+SD+Card"&gt;BeagleBoard SD card &lt;/a&gt;is the easiest way to get programs and files on and off of the BeagleBoard. Just popthe SD card out of the BeagleBoard, pop it into a &lt;a href="http://www.liquidware.com/shop/show/BA-MRW/MultiCard+Reader-Writer"&gt;multi-card SD reader&lt;/a&gt;, plug the reader into the desktop USB port, and then copy files onto the SD card that you want to make available to the BeagleBoard.&lt;br /&gt;&lt;br /&gt;Ok, here's a step-by-step guide:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Step 1: Turn BeagleBoard on it's side&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;In my case, I always leave the &lt;a href="http://www.liquidware.com/shop/show/BB-BT/BeagleTouch"&gt;BeagleTouch &lt;/a&gt;on the front side of the BeagleBoard, so it can display graphics and the Linux OS on the screen.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_xcCOmNtmhYE/TGnaVYN2UEI/AAAAAAAAAh0/SdI47VSrVUQ/s1600/BeagleBoard+and+BeagleTouch.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 225px;" src="http://3.bp.blogspot.com/_xcCOmNtmhYE/TGnaVYN2UEI/AAAAAAAAAh0/SdI47VSrVUQ/s400/BeagleBoard+and+BeagleTouch.JPG" alt="" id="BLOGGER_PHOTO_ID_5506172080249786434" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Step 2: Locate the SD Card in the BeagleBoard&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Every BeagleBoard is operated with software that is loaded on an SD card. This is different than the Arduino, because the Arduino stores all of it's data in a small area of Flash memory on the Atmel chip. The Atmel has something like 128-256K of space. The BeagleBoard SD card that I use (and sell pre-programmed) has 4 gigabytes of space. That's a huge difference...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_xcCOmNtmhYE/TGnaWVqJGlI/AAAAAAAAAh8/i_qKtWIRY5I/s1600/BeagleBoard+BeagleTouch+Backside+Twist.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 225px;" src="http://2.bp.blogspot.com/_xcCOmNtmhYE/TGnaWVqJGlI/AAAAAAAAAh8/i_qKtWIRY5I/s400/BeagleBoard+BeagleTouch+Backside+Twist.JPG" alt="" id="BLOGGER_PHOTO_ID_5506172096743021138" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Step 3: Remove SD Card from the BeagleBoard&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;This is not a very hard step:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_xcCOmNtmhYE/TGnaPEgUgPI/AAAAAAAAAhs/z2VYnLLFnZI/s1600/BeagleBoard+SD+Card.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 225px;" src="http://4.bp.blogspot.com/_xcCOmNtmhYE/TGnaPEgUgPI/AAAAAAAAAhs/z2VYnLLFnZI/s400/BeagleBoard+SD+Card.JPG" alt="" id="BLOGGER_PHOTO_ID_5506171971879338226" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Step 4: Plug SD Card into SD Card Reader&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;I use a Sony or &lt;a href="http://www.liquidware.com/shop/show/BA-MRW/MultiCard+Reader-Writer"&gt;Ultra one&lt;/a&gt;, only because I like the &lt;a href="http://www.liquidware.com/shop/show/BA-MRW/MultiCard+Reader-Writer"&gt;brushed silver / aluminum look.&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_xcCOmNtmhYE/TGnaO_WVWuI/AAAAAAAAAhk/WCwT3Pj0XE0/s1600/BeagleBoard+Inserting+into+SD+Card+Reader.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 225px;" src="http://4.bp.blogspot.com/_xcCOmNtmhYE/TGnaO_WVWuI/AAAAAAAAAhk/WCwT3Pj0XE0/s400/BeagleBoard+Inserting+into+SD+Card+Reader.JPG" alt="" id="BLOGGER_PHOTO_ID_5506171970495273698" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Step 5: Plug SD Card Reader into PC&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Using a USB cable that came with the reader:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_xcCOmNtmhYE/TGnaOnEXfqI/AAAAAAAAAhc/lMP6N0vFdiM/s1600/BeagleBoard+SD+Card+reader.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 225px;" src="http://1.bp.blogspot.com/_xcCOmNtmhYE/TGnaOnEXfqI/AAAAAAAAAhc/lMP6N0vFdiM/s400/BeagleBoard+SD+Card+reader.jpg" alt="" id="BLOGGER_PHOTO_ID_5506171963977465506" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Step 6: Copy Files to the SD Card&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;This is the hardest part of the whole thing, which isn't saying much. Basically it's really easy. You copy the files from your computer onto the SD card.&lt;br /&gt;&lt;br /&gt;On Windows, it looks like this:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_xcCOmNtmhYE/TGnaN_PtzTI/AAAAAAAAAhU/uQ9gNcXiYZs/s1600/BeagleBoard+Windows+Programming.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 225px;" src="http://4.bp.blogspot.com/_xcCOmNtmhYE/TGnaN_PtzTI/AAAAAAAAAhU/uQ9gNcXiYZs/s400/BeagleBoard+Windows+Programming.jpg" alt="" id="BLOGGER_PHOTO_ID_5506171953287646514" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;On Linux (and MacOS X), it looks like this:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_xcCOmNtmhYE/TGnaNeLSR7I/AAAAAAAAAhM/d6ufsYG7AnI/s1600/BeagleBoard+Linux+Programming.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 225px;" src="http://3.bp.blogspot.com/_xcCOmNtmhYE/TGnaNeLSR7I/AAAAAAAAAhM/d6ufsYG7AnI/s400/BeagleBoard+Linux+Programming.jpg" alt="" id="BLOGGER_PHOTO_ID_5506171944410695602" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Step 7: Install an Ext2 Partition Reader on Windows&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Windows users have one extra step. The SD Card that runs the BeagleBoard has two partitions on it. One of those partitions is formatted in "vfat" which is the native format that Windows can read. This is the partition that stores the boot-up data.&lt;br /&gt;&lt;br /&gt;The second partition is in a format called "ext2". That partition is where you want to copy the files on to the BeagleBoard. I'm not going to try to recount an explanation of &lt;a href="http://en.wikipedia.org/wiki/Ext2"&gt;ext2 here, but instead, there's a really good, easy read about it on wikipedia here&lt;/a&gt;. Here's the catch: Windows 7 can't read "ext2" out of the box, so you need a program to access the partition.&lt;br /&gt;&lt;br /&gt;So to access ext2 on Windows 7, in theory, you have 3 options: Install &lt;a href="http://www.chrysocome.net/explore2fs"&gt;Explore2fs &lt;/a&gt;(open source, free) from &lt;a href="http://www.chrysocome.net/explore2fs"&gt;here&lt;/a&gt;, Install &lt;a href="http://www.diskinternals.com/linux-reader/"&gt;Diskinternals &lt;/a&gt;(freeware) from &lt;a href="http://www.diskinternals.com/linux-reader/"&gt;here&lt;/a&gt;, Install "&lt;a href="http://www.fs-driver.org/index.html"&gt;Installable Ext2 File System for Windows&lt;/a&gt;" (freeware) from &lt;a href="http://www.fs-driver.org/index.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I've only ever gotten it to work by following these instructions for the "Installable Ext2 File System for Windows". Here's a &lt;a href="http://www.go2linux.org/accessing-linux-drive-ext-with-vista"&gt;tutorial on how to get that working&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;After you've installed one of those programs, you can now access the ext2 partition, and copy data to and from it.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7377057412446264720-5743551324718746539?l=antipastohw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antipastohw.blogspot.com/feeds/5743551324718746539/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7377057412446264720&amp;postID=5743551324718746539' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/5743551324718746539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/5743551324718746539'/><link rel='alternate' type='text/html' href='http://antipastohw.blogspot.com/2010/08/how-to-program-beagleboard.html' title='How to program the BeagleBoard'/><author><name>Matt</name><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://3.bp.blogspot.com/_xcCOmNtmhYE/TGnaVYN2UEI/AAAAAAAAAh0/SdI47VSrVUQ/s72-c/BeagleBoard+and+BeagleTouch.JPG' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7377057412446264720.post-3825378762552673420</id><published>2010-08-09T20:07:00.000-07:00</published><updated>2010-08-14T20:14:03.282-07:00</updated><title type='text'>How to make a BeagleBoard MP3 Player</title><content type='html'>&lt;span style="font-size: x-small;"&gt;&lt;i&gt;I was looking around at some comments and articles about the &lt;a href="http://www.liquidware.com/shop/show/BB-BT/BeagleTouch"&gt;BeagleTouch&lt;/a&gt;-based &lt;a href="http://antipastohw.blogspot.com/2010/06/introducing-beagletouch.html"&gt;Linux Tablet&lt;/a&gt;, and I noticed that there were a few people that mentioned that a Linux-based &lt;a href="http://en.wikipedia.org/wiki/Open-source_hardware"&gt;Open Source hardware&lt;/a&gt; tablet is the antithesis, arch-nemesis, ying vs. Apple's yang. While Apple is super secret, closed source, proprietary, and hidden, a Linux OSHW tablet is transparent, hackable, open source, and visible.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;PS... I don't think this title is long enough, I think it should be, "How to make a DIY Open Source Hardware Beagle Board and Open Source &lt;/span&gt;&lt;span style="font-size: x-small;"&gt;Angstrom Linux &lt;/span&gt;&lt;span style="font-size: x-small;"&gt;Software MP3 Media Player in 10 Minutes Or Less with 5 Easy Steps and 6 Easy Payments of $9.99" Ha.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Sooo....&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;I figured I'd take that metaphor to the extreme, and make a quick tutorial about making a super-overkill, overqualified &lt;a href="http://en.wikipedia.org/wiki/Open-source_hardware"&gt;Open Source Hardware&lt;/a&gt; MP3 player, called the "Anti-iPod". Naturally, the best part about this MP3 player, is that it actually plays MP3's, not weirdly-encoded, proprietarily-coded music format with DRM protection. The second best thing about this MP3 player is that no one will ever try to &lt;a href="http://www.computerworld.com/s/article/9179694/Apple_loses_bid_to_criminalize_iPhone_jailbreaking"&gt;make it a criminal offense to hack into it&lt;/a&gt;...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: x-small;"&gt;Closed:&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_pGsJFsc5Buc/TE5PPWtxVFI/AAAAAAAAAoE/JTz-WNZUJjw/s1600/iPod+picture.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_pGsJFsc5Buc/TE5PPWtxVFI/AAAAAAAAAoE/JTz-WNZUJjw/s320/iPod+picture.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: x-small;"&gt;Open:&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_pGsJFsc5Buc/TE5PO4aqJmI/AAAAAAAAAn8/Xx17yavHbHE/s1600/BeagleTouch+Anti-iPod+Media+Player.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="266" src="http://2.bp.blogspot.com/_pGsJFsc5Buc/TE5PO4aqJmI/AAAAAAAAAn8/Xx17yavHbHE/s400/BeagleTouch+Anti-iPod+Media+Player.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Step 1: Assemble a Beagle-board based Gadget&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Probably using something &lt;a href="http://www.liquidware.com/shop/show/BB-BT/BeagleTouch"&gt;like this&lt;/a&gt; or &lt;a href="http://www.liquidware.com/shop/show/BB-ULT/Ultimate+Beagle+Gadget+Pack"&gt;like this&lt;/a&gt;, I just snapped a BeagleTouch onto the &lt;a href="http://www.liquidware.com/shop/show/BB-C4/BeagleBoard+C4"&gt;Beagleboard&lt;/a&gt;, plugged in power, and connected a USB cable from the BeagleTouch to my computer. This is what I call a Beagle Gadget Sandwich (BGS):&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_pGsJFsc5Buc/TE5QD5tJ3YI/AAAAAAAAAoM/bZ4PxH4vGCU/s1600/Beagle+Gadget+Sandwich.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_pGsJFsc5Buc/TE5QD5tJ3YI/AAAAAAAAAoM/bZ4PxH4vGCU/s320/Beagle+Gadget+Sandwich.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Step 2: Connect it to the Internet&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Either with a &lt;a href="http://www.liquidware.com/shop/show/BA-WIFI/Wireless+G+USB+Adapter"&gt;wifi module &lt;/a&gt;(as I &lt;a href="http://antipastohw.blogspot.com/2010/07/how-to-make-linux-beagleboard-gadget.html"&gt;wrote up in these instructions &lt;/a&gt;or &lt;a href="http://antipastohw.pbworks.com/Wireless-G-USB-Adapter"&gt;over here&lt;/a&gt;), or an ethernet &lt;a href="http://www.liquidware.com/shop/show/BA-ETH/USB+Ethernet+Adapter"&gt;module like this one&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Step 3: Download and run the install script&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;code&gt;&lt;/code&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;$ wget &lt;a href="http://www.liquidware.com/appfiles/83/original/linux-ts-mediaplayer-1.0.sh"&gt;http://www.liquidware.com/appfiles/83/original/linux-ts-mediaplayer-1.0.sh&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;$ chmod 777 ./linux-ts-mediaplayer-1.0.sh&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;$ ./linux-ts-mediaplayer-1.0.sh&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Step 4: Pirate music&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;From &lt;a href="http://www.eff.org/riaa-v-people"&gt;your own collection, OBVIOUSLY&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Then save it to the home directory, in the /home/root/Music folder. You may need to "mkdir Music" from the home directory just to make sure the directory is there.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Step 5: Launch the MP3 Player&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Then, start up the MP3 player application, with skins, and exported to the display, with these commands:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;code&gt;&lt;/code&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;$ export DISPLAY=:0.0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;$ vlc -I skins2 --skins2-last  /home/root/Night.vlt ./Music&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;It should look like this:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_pGsJFsc5Buc/TE5PO4aqJmI/AAAAAAAAAn8/Xx17yavHbHE/s1600/BeagleTouch+Anti-iPod+Media+Player.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="267" src="http://2.bp.blogspot.com/_pGsJFsc5Buc/TE5PO4aqJmI/AAAAAAAAAn8/Xx17yavHbHE/s400/BeagleTouch+Anti-iPod+Media+Player.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Done!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7377057412446264720-3825378762552673420?l=antipastohw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antipastohw.blogspot.com/feeds/3825378762552673420/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7377057412446264720&amp;postID=3825378762552673420' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/3825378762552673420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/3825378762552673420'/><link rel='alternate' type='text/html' href='http://antipastohw.blogspot.com/2010/08/how-to-make-diy-open-source-beagleboard.html' title='How to make a BeagleBoard MP3 Player'/><author><name>Matt</name><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://3.bp.blogspot.com/_pGsJFsc5Buc/TE5PPWtxVFI/AAAAAAAAAoE/JTz-WNZUJjw/s72-c/iPod+picture.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7377057412446264720.post-8742340355287000638</id><published>2010-08-08T23:26:00.000-07:00</published><updated>2010-08-08T23:26:08.132-07:00</updated><title type='text'>Turning the Open SciCal into a handheld hedge fund tool</title><content type='html'>&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;i&gt;&lt;span style="font-size: x-small;"&gt;Shortly after the handheld Open SciCal got picked up, I got an order for a few &lt;a href="http://antipastohw.blogspot.com/2010/07/introducing-100-open-source-hwsw-r.html"&gt;Open SciCal&lt;/a&gt;'s, hand-made, with the wifi-attachment, and to be delivered to an address in downtown Manhattan. I did a little more research, and it turns out that they're going to be used by an actual trading firm on Wallstreet. I don't know how to verify this, but it may be one of the first documented cases of a super-secret Wallstreet firm actually using Open Source Hardware.&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;I also got a handful of emails from people asking what on earth &lt;a href="http://www.investopedia.com/terms/a/autocorrelation.asp"&gt;stock auto-correlation &lt;/a&gt;is, and why it's interesting. Although I'm not a professional trader, I emailed &lt;a href="http://www.deshaw.com/"&gt;a couple of old friends of mine&lt;/a&gt; who are programmers at quantitative finance trading firms, and this is probably the simplest explanation I got back:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size: x-small;"&gt;"Correlation is a popular tool for hedge funds, because it tells you whether the returns from one stock are closely linked to the returns of an industry or another stock. Auto-correlation is when you compare the returns of one stock on a given day, with it's historical returns 1, 2, 3, ... n seconds, minutes, days. weeks into the future. It helps you determine whether the stock's performance at one time can predict it's performance at some time in the future, or vice versa."&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;I asked for an example in source code, and here it is - very simplified, and coded up for &lt;a href="http://finance.yahoo.com/"&gt;Yahoo finance&lt;/a&gt;, and posted on the "&lt;a href="http://www.liquidware.com/apps/show/85"&gt;Open Source App Store&lt;/a&gt;". This is what it does:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: x-small;"&gt;Uses the &lt;a href="http://www.liquidware.com/shop/show/BA-WIFI/Wireless+G+USB+Adapter"&gt;Wifi Module &lt;/a&gt;to connect to the internet&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: x-small;"&gt;Take a stock ticker, send it to Yahoo Finance's CSV downloader&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: x-small;"&gt;Download it &lt;a href="http://www.r-project.org/"&gt;to R&lt;/a&gt;, save it to an array&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: x-small;"&gt;Calculate percent change in price figures (returns) for each pair of consecutive days &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: x-small;"&gt;Run 1-10 day auto-correlations of the stock against itself&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: x-small;"&gt;Kick out a simple little line chart showing the auto-correlation profile&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size: x-small;"&gt;To use it, I just opened R on the Open SciCal, and typed:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;b&gt;&lt;span style="font-size: x-small;"&gt;source("http://www.liquidware.com/appfiles/85/original/handheldhedgefund.txt");&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;stockacf("YHOO");&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Now the obvious disclaimer: if you use this Open Source program, using free data from Yahoo Finance, on the &lt;a href="http://www.liquidware.com/shop/show/BB-ESK/Beagle+Embedded+Starter+Kit"&gt;Open Source Hardware calculator&lt;/a&gt;, and find that you lose a lot of money... you can't complain that anyone hid any part of this, since literally everything was open or free along the way. At least this way, you can see the entire inner workings of how you're gambling, as opposed to what might happen at a casino or in Las Vegas, where they do everything possible to hide the fact.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Here's a picture of Apple's stock price, on the Open SciCal: &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_pGsJFsc5Buc/TF-bhXdCpiI/AAAAAAAAArU/8NMhxTbGdyU/s1600/Apple+Stock+Price+Reversed.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://1.bp.blogspot.com/_pGsJFsc5Buc/TF-bhXdCpiI/AAAAAAAAArU/8NMhxTbGdyU/s400/Apple+Stock+Price+Reversed.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;It looks a lot like the actual Apple stock price from Yahoo, except revered in time series order:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_pGsJFsc5Buc/TF-cBTOidaI/AAAAAAAAArs/KFjV6dLVelA/s1600/Apple+stock+chart.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="312" src="http://1.bp.blogspot.com/_pGsJFsc5Buc/TF-cBTOidaI/AAAAAAAAArs/KFjV6dLVelA/s400/Apple+stock+chart.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;And then here's the result of the auto-correlation algorithm with a couple different stocks (I have it repeating with &lt;a href="http://finance.yahoo.com/q/bc?s=AAPL&amp;amp;t=my&amp;amp;l=off&amp;amp;z=m&amp;amp;q=l&amp;amp;c="&gt;Apple AAPL&lt;/a&gt;, Texas Instruments &lt;a href="http://finance.yahoo.com/q?s=txn"&gt;TXN&lt;/a&gt;, Yahoo &lt;a href="http://finance.yahoo.com/q?s=yhoo"&gt;YHOO&lt;/a&gt;, and Google &lt;a href="http://finance.yahoo.com/q?s=goog"&gt;GOOG&lt;/a&gt;):&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_pGsJFsc5Buc/TF-bjCd4T2I/AAAAAAAAArc/Bs9QXadjpdY/s1600/Autocorrelation+chart.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://2.bp.blogspot.com/_pGsJFsc5Buc/TF-bjCd4T2I/AAAAAAAAArc/Bs9QXadjpdY/s400/Autocorrelation+chart.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_pGsJFsc5Buc/TF-bkVWov5I/AAAAAAAAArk/DDEsYiC-Ijo/s1600/Autocorrelation+charts.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://3.bp.blogspot.com/_pGsJFsc5Buc/TF-bkVWov5I/AAAAAAAAArk/DDEsYiC-Ijo/s400/Autocorrelation+charts.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;And this would technically let someone just walk around a building, running stock return auto-correlations in their hands, presumably downloading data from a more reliable and faster updating source than just Yahoo finance, and actually making big trades as a result.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Here's a full video:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/M9RiIXxLR8c&amp;amp;hl=en&amp;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/M9RiIXxLR8c&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;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;And another, longer one:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/9Fs-uHcWsEw&amp;amp;hl=en&amp;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/9Fs-uHcWsEw&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;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Alright, now that that's out of my system, time to get back to hacking with a few of the &lt;a href="http://www.liquidware.com/category/Sensors"&gt;new sensors Justin and Mike have been working on&lt;/a&gt;...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&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/7377057412446264720-8742340355287000638?l=antipastohw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antipastohw.blogspot.com/feeds/8742340355287000638/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7377057412446264720&amp;postID=8742340355287000638' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/8742340355287000638'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/8742340355287000638'/><link rel='alternate' type='text/html' href='http://antipastohw.blogspot.com/2010/08/turning-open-scical-into-handheld-hedge.html' title='Turning the Open SciCal into a handheld hedge fund tool'/><author><name>Matt</name><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://1.bp.blogspot.com/_pGsJFsc5Buc/TF-bhXdCpiI/AAAAAAAAArU/8NMhxTbGdyU/s72-c/Apple+Stock+Price+Reversed.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7377057412446264720.post-6483683855007947861</id><published>2010-08-06T01:34:00.000-07:00</published><updated>2010-08-06T02:03:19.615-07:00</updated><title type='text'>Thanks!</title><content type='html'>&lt;span style="font-size:85%;"&gt;I just finished writing emails back to everyone who emailed in ideas and suggestions for how I could improve the Open SciCal, and questions about the hardware. Over the next couple days, I have a LOT of projects to work on, and a lot of examples... I don't know how I'm going to sleep, there's so much to do... and it's already 4:40 am as I write this, and I haven't slept a bit.&lt;br /&gt;&lt;br /&gt;But first, before I start those projects, I really wanted to thank the folks at &lt;a href="http://www.wired.com/gadgetlab/2010/08/diy-graphing-calculator/"&gt;Wired&lt;/a&gt;, &lt;a href="http://gizmodo.com/5605279/diy-graphing-calculator-is-touchscreen-nerd-excalibur"&gt;Gizmodo&lt;/a&gt;, and &lt;a href="http://blog.makezine.com/archive/2010/08/diy_graphing_calculator_made_with_b.html"&gt;Make &lt;/a&gt;for giving the &lt;a href="http://antipastohw.blogspot.com/2010/07/introducing-100-open-source-hwsw-r.html"&gt;Open SciCal&lt;/a&gt; so many hits and so much attention... it was so much, in fact, that the poor little server that hosts Liquidware slowed down to a halt with all the pagehits, and had to be rebooted.&lt;br /&gt;&lt;br /&gt;I certainly learned a decent amount about server uptime and cache overflow errors.&lt;br /&gt;&lt;br /&gt;Most importantly, though, I have a notebook now, filled with requests, ideas, programs people would like to see running on it, hacks for the hardware, etc. That's the fun part of Open Source - I probably wouldn't have come up with a fraction of that on my own, and now Will, Chris, Justin, Mike, John, and I are going to have a blast writing all these features into the app software and giving them back as improvements to the &lt;a href="http://antipastohw.blogspot.com/2010/07/introducing-100-open-source-hwsw-r.html"&gt;Open SciCal&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Thanks again...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_xcCOmNtmhYE/TFvK6BtdCqI/AAAAAAAAAgo/OpqA8Wx5z6w/s1600/Make.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 381px; height: 400px;" src="http://3.bp.blogspot.com/_xcCOmNtmhYE/TFvK6BtdCqI/AAAAAAAAAgo/OpqA8Wx5z6w/s400/Make.jpg" alt="" id="BLOGGER_PHOTO_ID_5502214468003498658" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_xcCOmNtmhYE/TFvK6bKx4xI/AAAAAAAAAgw/N8aTK4uN8gY/s1600/Wired.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 311px; height: 400px;" src="http://4.bp.blogspot.com/_xcCOmNtmhYE/TFvK6bKx4xI/AAAAAAAAAgw/N8aTK4uN8gY/s400/Wired.jpg" alt="" id="BLOGGER_PHOTO_ID_5502214474837386002" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_xcCOmNtmhYE/TFvK6oS-2II/AAAAAAAAAg4/UCJLrMYaB0o/s1600/Gizmodo.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 391px;" src="http://2.bp.blogspot.com/_xcCOmNtmhYE/TFvK6oS-2II/AAAAAAAAAg4/UCJLrMYaB0o/s400/Gizmodo.jpg" alt="" id="BLOGGER_PHOTO_ID_5502214478361450626" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;Now I feel I need to comment on that last one... Nerd Excalibur. Ok, that's pretty funny... so I typed &lt;a href="http://www.google.com/images?q=nerd%20excalibur&amp;amp;oe=utf-8&amp;amp;rls=org.mozilla:en-US:official&amp;amp;client=firefox-a&amp;amp;um=1&amp;amp;ie=UTF-8&amp;amp;source=og&amp;amp;sa=N&amp;amp;hl=en&amp;amp;tab=wi&amp;amp;biw=1710&amp;amp;bih=766"&gt;"nerd excalibur" into Google images &lt;/a&gt;to see what I'd find, and this was the first picture:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_xcCOmNtmhYE/TFvL09e0tkI/AAAAAAAAAhA/4iQM1v73nFA/s1600/Nerd+Excalibur.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 397px;" src="http://1.bp.blogspot.com/_xcCOmNtmhYE/TFvL09e0tkI/AAAAAAAAAhA/4iQM1v73nFA/s400/Nerd+Excalibur.jpg" alt="" id="BLOGGER_PHOTO_ID_5502215480480675394" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;"Aye, program in TI-BASIC and you my die before your app finishes. Use R and you'll live... to see another function. And dying in your beds, many years from now, would you be willing to trade ALL the transcendental functions, from Sine to ArcTangent, for one chance, just one chance, to come back here and tell other  calculators that they may take our math functions, but they'll never take... OUR SOURCE CODE!"&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Insert rowdy adrenaline cheers from face painted hardware hackers and electrical engineers...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I could live with that I guess :-)&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7377057412446264720-6483683855007947861?l=antipastohw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antipastohw.blogspot.com/feeds/6483683855007947861/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7377057412446264720&amp;postID=6483683855007947861' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/6483683855007947861'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/6483683855007947861'/><link rel='alternate' type='text/html' href='http://antipastohw.blogspot.com/2010/08/thanks.html' title='Thanks!'/><author><name>Matt</name><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://3.bp.blogspot.com/_xcCOmNtmhYE/TFvK6BtdCqI/AAAAAAAAAgo/OpqA8Wx5z6w/s72-c/Make.jpg' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7377057412446264720.post-2083793740314465188</id><published>2010-08-03T16:59:00.000-07:00</published><updated>2010-08-03T17:27:38.704-07:00</updated><title type='text'>Using the Open Source Graphing Calculator to predict sunspots</title><content type='html'>&lt;span style="font-size:85%;"&gt;With all this talk about solar plasma aurora storms, sunspots, I thought this would be an excellent opportunity to show off the &lt;a href="http://antipastohw.blogspot.com/2010/07/introducing-100-open-source-hwsw-r.html"&gt;Open Source Graphing Calculator&lt;/a&gt;'s capabilities. Believe me, this is just scratching the surface...&lt;br /&gt;&lt;br /&gt;First, I googled around, and &lt;a href="http://www.theregister.co.uk/2010/08/03/solar_aurora_storm/"&gt;read this article at theregister&lt;/a&gt; and this one at &lt;a href="http://www.examiner.com/x-11224-Baltimore-Weather-Examiner%7Ey2010m8d3-NASA-videos-Solar-storm-sends-large-flare-to-Earth--Aurora-Borealis-expected-over-United-States"&gt;the examiner&lt;/a&gt;. Naturally, there was a big, ominous sun picture :-)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_xcCOmNtmhYE/TFiuMAHsGPI/AAAAAAAAAgA/Hdht9-jyD4Q/s1600/Sun.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 375px;" src="http://3.bp.blogspot.com/_xcCOmNtmhYE/TFiuMAHsGPI/AAAAAAAAAgA/Hdht9-jyD4Q/s400/Sun.jpg" alt="" id="BLOGGER_PHOTO_ID_5501338466046974194" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;Scary! Here's a video of the class C3 solar flare happening in real time:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt;&lt;object width="480" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/BevyCKpFqhw&amp;amp;hl=en_US&amp;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/BevyCKpFqhw&amp;amp;hl=en_US&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;Naturally, after reading that article, I thought to myself, "I wonder what the statistical significance of this event is, and what the probability and &lt;a href="http://en.wikipedia.org/wiki/Co-occurrence"&gt;co-occurrence&lt;/a&gt; &lt;a href="http://adsabs.harvard.edu/abs/1963GeCoA..27.1071G"&gt;bi-frequency distribution&lt;/a&gt; and &lt;a href="http://www.sciencedirect.com/science?_ob=ArticleURL&amp;amp;_udi=B757C-48CNH7H-3D&amp;amp;_user=10&amp;amp;_coverDate=12%2F31%2F1981&amp;amp;_rdoc=1&amp;amp;_fmt=high&amp;amp;_orig=search&amp;amp;_sort=d&amp;amp;_docanchor=&amp;amp;view=c&amp;amp;_searchStrId=1420400499&amp;amp;_rerunOrigin=google&amp;amp;_acct=C000050221&amp;amp;_version=1&amp;amp;_urlVersion=0&amp;amp;_userid=10&amp;amp;md5=623fa035c96e9cbee2f5b14a8e7c71de"&gt;temporal periodicity squared coefficient &lt;/a&gt;might be?"&lt;br /&gt;&lt;br /&gt;I opened up my trusty iPhone... and... NO APP FOR THAT!!! What now, Steve Jobs, what now?!?! Oh no...! a mathematical question that deserves an answer, but didn't raise enough VC funding to make a bloated iPhone app that answers a simple question, but with slide-show effects, really pretty jelly buttons, and 3D shadows underneath it!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_xcCOmNtmhYE/TFiuM-2ZcaI/AAAAAAAAAgQ/T5ZyrvO_y4Q/s1600/Open+SciCalc+vs+iPod.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://3.bp.blogspot.com/_xcCOmNtmhYE/TFiuM-2ZcaI/AAAAAAAAAgQ/T5ZyrvO_y4Q/s400/Open+SciCalc+vs+iPod.jpg" alt="" id="BLOGGER_PHOTO_ID_5501338482885882274" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;Luckily, as any good &lt;a href="http://www.gps.caltech.edu/"&gt;astro-physicist or geoscientist&lt;/a&gt; would tell you, one of the most famous data sets in the world is the &lt;a href="http://www.uc.edu/sashtml/ets/chap17/sect20.htm"&gt;Wolfer Sunspot Series&lt;/a&gt;, which is practically a &lt;a href="http://tf.nist.gov/general/pdf/230.pdf"&gt;rite of passage for starving astro-physics &lt;/a&gt;PhD students worldwide, and a great way to &lt;a href="http://www.informaworld.com/smpp/content%7Edb=all%7Econtent=a780070004"&gt;get published&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Thanks to &lt;a href="http://www.uea.ac.uk/%7Egj/"&gt;Gareth Janacek&lt;/a&gt;, and his &lt;a href="http://www.uea.ac.uk/%7Egj/book/data/datalist.html"&gt;collection of data series&lt;/a&gt;, I was able to find the Wolfer data quickly, and used wget to pull it down to my calculator.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;blockquote&gt;wget http://www.uea.ac.uk/~gj/book/data/wolfer.dat&lt;/blockquote&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Quite simple. Then I booted up R using a little script that I have automatically load when my calculator boots It basically runs this command:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-weight: bold;"&gt;export DISPLAY=:0.0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;xterm -bg black -fg green -bw 0 -e 'R'&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;When R was running with the Matrix color theme, I then imported the data into a matrix (which is somehow nicely recursive):&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_xcCOmNtmhYE/TFiuMSmxJKI/AAAAAAAAAgI/IjDNBoLhGPM/s1600/Matrix+Colors+Doing+Matrix+Math.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_xcCOmNtmhYE/TFiuMSmxJKI/AAAAAAAAAgI/IjDNBoLhGPM/s400/Matrix+Colors+Doing+Matrix+Math.JPG" alt="" id="BLOGGER_PHOTO_ID_5501338471009166498" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;Then I ran a command that launched up a little graphic:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-weight: bold;"&gt;dev.new(width=5,height=2.5);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;par(mar=c(0,0,0,0),oma=c(2,2,2,2),bg="black);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;plot(c(1:length(x)),x,type="l",col="white")&lt;/span&gt;;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;box("plot",col="white")&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Literally this can be copied and pasted right into the Open Source Graphing Calculator's R command line:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_xcCOmNtmhYE/TFiuNttElxI/AAAAAAAAAgg/1X4-GfZ1-eM/s1600/SunSpot+Solar+Calendar.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_xcCOmNtmhYE/TFiuNttElxI/AAAAAAAAAgg/1X4-GfZ1-eM/s400/SunSpot+Solar+Calendar.JPG" alt="" id="BLOGGER_PHOTO_ID_5501338495463233298" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;And voila!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_xcCOmNtmhYE/TFiuNdfOvyI/AAAAAAAAAgY/zFaOCiXbq8Y/s1600/Handheld+size.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://2.bp.blogspot.com/_xcCOmNtmhYE/TFiuNdfOvyI/AAAAAAAAAgY/zFaOCiXbq8Y/s400/Handheld+size.JPG" alt="" id="BLOGGER_PHOTO_ID_5501338491110211362" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;My iPhone is speechless. It can only sit there, black screened, wishing there was an app for that. I mean, technically, there is a $36 app call "&lt;a href="http://forums.mactalk.com.au/18/69730-iphone-app-helios-sun-calculator.html"&gt;Helios&lt;/a&gt;" that has funky graphics, but it doesn't answer my question: is this a regular thing, or really statistically random?&lt;br /&gt;&lt;br /&gt;The answer: it happens all the time, and flares tend to be cyclical on a fairly predictable manner.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://antipastohw.blogspot.com/2010/07/introducing-100-open-source-hwsw-r.html"&gt;Open Source Graphing Calculator&lt;/a&gt;: 1&lt;br /&gt;iPhone / Android / Ti-82 / HP-50g: 0&lt;br /&gt;&lt;br /&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/7377057412446264720-2083793740314465188?l=antipastohw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antipastohw.blogspot.com/feeds/2083793740314465188/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7377057412446264720&amp;postID=2083793740314465188' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/2083793740314465188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/2083793740314465188'/><link rel='alternate' type='text/html' href='http://antipastohw.blogspot.com/2010/08/using-open-source-graphing-calculator.html' title='Using the Open Source Graphing Calculator to predict sunspots'/><author><name>Matt</name><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://3.bp.blogspot.com/_xcCOmNtmhYE/TFiuMAHsGPI/AAAAAAAAAgA/Hdht9-jyD4Q/s72-c/Sun.jpg' height='72' width='72'/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7377057412446264720.post-1206977929474833714</id><published>2010-07-31T21:18:00.000-07:00</published><updated>2010-08-02T19:19:27.028-07:00</updated><title type='text'>Introducing the 100% Open Source HW/SW R-Based Graphing Calculator</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;The childhood geek inside me is running, screaming, jumping around with joy, and hacking it's way into servers it shouldn't even know about. I'm definitely totally &lt;a href="http://www.youtube.com/watch?v=hNxhrPaaCA4"&gt;nerding out &lt;/a&gt;over here, I can type this up, my fingers are jittering around so much.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I can die in peace, for the day hath cometh, wherein...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_xcCOmNtmhYE/TEzPz0T6vTI/AAAAAAAAAd4/CUHSrDjroJY/s1600/BeagleTouch+Graphing+Calculator+on+Desk.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 305px;" src="http://4.bp.blogspot.com/_xcCOmNtmhYE/TEzPz0T6vTI/AAAAAAAAAd4/CUHSrDjroJY/s400/BeagleTouch+Graphing+Calculator+on+Desk.jpg" alt="" id="BLOGGER_PHOTO_ID_5497997734234996018" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;With Koen, Thom, Chris, Mark, and Will's help, I built this 100% Open Source Hardware-based, Open Source Software-based KICK ASS REPLACEMENT for my two most trusted allies in life: my &lt;a href="http://www.amazon.com/Texas-Instruments-Advanced-Graphing-Calculator/dp/B00000JF55/ref=sr_1_2?s=electronics&amp;amp;ie=UTF8&amp;amp;qid=1280101316&amp;amp;sr=1-2"&gt;TI-89&lt;/a&gt; and my &lt;a href="http://www.amazon.com/50g-Graphing-Calculator-F2229AA-ABA/dp/B000GTPRPS/ref=sr_1_1?s=electronics&amp;amp;ie=UTF8&amp;amp;qid=1280102628&amp;amp;sr=1-1"&gt;HP-50g&lt;/a&gt; scientific graphing calculators.&lt;br /&gt;&lt;br /&gt;Don't get me wrong, the TI-89 and HP-50g are awesome. Some might argue, they're too awesome, since neither TI nor HP have been able to make a better calculator that I'd buy. And I know my calculators, so if a better one came along, I'd definitely buy it. (Just ask anyone who's ever been to the &lt;a href="http://www.liquidware.com/"&gt;Liquidware Lab &lt;/a&gt;to see my calculator collection). And I'm not talking about the &lt;a href="http://www.amazon.com/Texas-Instruments-Voyage-200-Calculator/dp/B00006D2Q1/ref=sr_1_1?s=electronics&amp;amp;ie=UTF8&amp;amp;qid=1280102645&amp;amp;sr=1-1"&gt;TI-200 "Voyage"&lt;/a&gt; (choke, gag), which came out around the same time the dot-coms were around, and IMHO is everything that was wrong about the dot-com era (plus the keyboard made it illegal on the SAT).&lt;br /&gt;&lt;br /&gt;Also, there's two big problems with the TI-89 and HP-50g in my book:&lt;br /&gt;&lt;br /&gt;1) I didn't make it myself&lt;br /&gt;2) They're not open source and hackable&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_xcCOmNtmhYE/TEzNGBa5Q0I/AAAAAAAAAdI/LayKLFsWkqk/s1600/TI89+Scientific+Calculator.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 275px; height: 344px;" src="http://4.bp.blogspot.com/_xcCOmNtmhYE/TEzNGBa5Q0I/AAAAAAAAAdI/LayKLFsWkqk/s400/TI89+Scientific+Calculator.jpg" alt="" id="BLOGGER_PHOTO_ID_5497994748456682306" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_xcCOmNtmhYE/TEzNF0NXVDI/AAAAAAAAAdA/6Abb_IMD3LY/s1600/HP+50g+Graphing+Calculator.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 303px; height: 314px;" src="http://1.bp.blogspot.com/_xcCOmNtmhYE/TEzNF0NXVDI/AAAAAAAAAdA/6Abb_IMD3LY/s400/HP+50g+Graphing+Calculator.jpg" alt="" id="BLOGGER_PHOTO_ID_5497994744910271538" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;But this... calculator has 1,000,000 times the coolness factor of those two calculators above:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;It runs Linux (HP: no, TI: no)&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;It runs R (HP: no, TI: no)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;You program it in C or Perl (HP: no, TI: no)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;It has a Wifi connection (HP: no, TI: no)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;It runs a web browser (HP: no, TI: no)&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;The only sad part is that my scientific graphing calculator doesn't run HP's cool reverse polish programming stack which is not so much intuitive, but actually quite fun to program... especially with its list manipulations, inspired from the Forth programming language.&lt;br /&gt;&lt;br /&gt;Oh wait. Just kidding, my calculator can run a full Forth stack using &lt;a href="http://www.jwdt.com/%7Epaysan/gforth.html"&gt;gforth&lt;/a&gt;, or a Fortran stack  (using &lt;a href="http://www.gfortran.org/"&gt;gfortran&lt;/a&gt;)!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_xcCOmNtmhYE/TEzOzZLf5AI/AAAAAAAAAdo/bs3Y5-QNbvM/s1600/Really+bright+BeagleTouch+Screen.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 303px;" src="http://3.bp.blogspot.com/_xcCOmNtmhYE/TEzOzZLf5AI/AAAAAAAAAdo/bs3Y5-QNbvM/s400/Really+bright+BeagleTouch+Screen.jpg" alt="" id="BLOGGER_PHOTO_ID_5497996627440296962" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;Here it is with a full keyboard and mouse, just for kicks... although obviously it doesn't need those because I can use the on-screen keypad because it's got a touchscreen OLED using the BeagleTouch module.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_xcCOmNtmhYE/TEzOzg_WzQI/AAAAAAAAAdw/sbXDvLU2Poo/s1600/Beagleboard+BeagleTouch+Wifi+Gadget.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 302px;" src="http://3.bp.blogspot.com/_xcCOmNtmhYE/TEzOzg_WzQI/AAAAAAAAAdw/sbXDvLU2Poo/s400/Beagleboard+BeagleTouch+Wifi+Gadget.jpg" alt="" id="BLOGGER_PHOTO_ID_5497996629536853250" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;The colors got a little white-washed on this one, but it gives you an idea for the size:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_xcCOmNtmhYE/TEzOyuyNtvI/AAAAAAAAAdQ/YM7c6J9vjv0/s1600/Open+Source+Hardware+BeagleTouch+Calculator.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 302px;" src="http://2.bp.blogspot.com/_xcCOmNtmhYE/TEzOyuyNtvI/AAAAAAAAAdQ/YM7c6J9vjv0/s400/Open+Source+Hardware+BeagleTouch+Calculator.jpg" alt="" id="BLOGGER_PHOTO_ID_5497996616059959026" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_xcCOmNtmhYE/TEzOzPLGTyI/AAAAAAAAAdg/o69j_dhB4hk/s1600/Beagleboard+BeagleTouch+and+scientific+statistics+R.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 301px;" src="http://1.bp.blogspot.com/_xcCOmNtmhYE/TEzOzPLGTyI/AAAAAAAAAdg/o69j_dhB4hk/s400/Beagleboard+BeagleTouch+and+scientific+statistics+R.jpg" alt="" id="BLOGGER_PHOTO_ID_5497996624754265890" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;The screen is plenty bright:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_xcCOmNtmhYE/TEzOzHKoPPI/AAAAAAAAAdY/y356AyCcxyI/s1600/Beagle+board+with+BeagleTouch+gadget+running+R.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 303px;" src="http://3.bp.blogspot.com/_xcCOmNtmhYE/TEzOzHKoPPI/AAAAAAAAAdY/y356AyCcxyI/s400/Beagle+board+with+BeagleTouch+gadget+running+R.jpg" alt="" id="BLOGGER_PHOTO_ID_5497996622604811506" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;And here's a video showing my doing &lt;a href="http://www.youtube.com/watch?v=hGBEl7NACg0"&gt;R matrix manipulations&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/hGBEl7NACg0&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/hGBEl7NACg0&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In my opinion, there is nothing nerdier or cooler than a pocket sized graphing and programmable scientific calculator that runs R. Nothing. Hands down. Like this is the kinda stuff that makes &lt;a href="http://www.nsa.gov/"&gt;NSA &lt;/a&gt;&lt;a href="http://en.wikipedia.org/wiki/Trekkie"&gt;Trekkies &lt;/a&gt; jealous... bring it on! :-)&lt;br /&gt;&lt;br /&gt;I've uploaded the Open Source R-Based Calculator it as a kit onto the &lt;a href="http://www.liquidware.com/shop/show/BB-TP/Tablet+Pack"&gt;Liquidware shop, as an option to the Tablet Pack, to make it come with R pre-loaded and pre-installed from Koen&lt;/a&gt; (I'm assuming people have their own keyboards and USB ports, otherwise I'd include those too).&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/7377057412446264720-1206977929474833714?l=antipastohw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antipastohw.blogspot.com/feeds/1206977929474833714/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7377057412446264720&amp;postID=1206977929474833714' title='16 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/1206977929474833714'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/1206977929474833714'/><link rel='alternate' type='text/html' href='http://antipastohw.blogspot.com/2010/07/introducing-100-open-source-hwsw-r.html' title='Introducing the 100% Open Source HW/SW R-Based Graphing Calculator'/><author><name>Matt</name><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/_xcCOmNtmhYE/TEzPz0T6vTI/AAAAAAAAAd4/CUHSrDjroJY/s72-c/BeagleTouch+Graphing+Calculator+on+Desk.jpg' height='72' width='72'/><thr:total>16</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7377057412446264720.post-1143147304010351731</id><published>2010-07-31T20:07:00.000-07:00</published><updated>2010-07-31T20:33:05.996-07:00</updated><title type='text'>Scooterputer, an Open Source Scooter Dashboard</title><content type='html'>&lt;span style="font-size:85%;"&gt;Open Source is awesome. 1 day after the announcement of the &lt;a href="http://www.liquidware.com/shop/show/DSH/LCDash+1-7+GT"&gt;LCDash GT&lt;/a&gt;, and how it &lt;a href="http://antipastohw.blogspot.com/2010/07/introducing-lcdash-gt-hacking-your.html"&gt;helps people hack car engines with MegaSquirt&lt;/a&gt;, comes a project from Kurt about a 100% Open Source Hardware-based computer that lets you see sensor read-outs, and realtime information connected to a scooter, which naturally make someone a better driver!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_xcCOmNtmhYE/TFTnl0mKCdI/AAAAAAAAAfg/DshT5U_AUow/s1600/ScootDisplay-2.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_xcCOmNtmhYE/TFTnl0mKCdI/AAAAAAAAAfg/DshT5U_AUow/s400/ScootDisplay-2.jpg" alt="" id="BLOGGER_PHOTO_ID_5500275681886079442" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;br /&gt;It's called the "&lt;a href="http://www.janspace.com/b2evolution/arduino.php/2010/06/26/scooterputer"&gt;Scooterputer&lt;/a&gt;" ... and it uses parts from &lt;a href="http://adafruit.com/"&gt;Adafruit&lt;/a&gt;, &lt;a href="http://www.liquidware.com/"&gt;Liquidware&lt;/a&gt;, and &lt;a href="http://www.sparkfun.com/commerce/categories.php"&gt;Sparkfun&lt;/a&gt;, and all the &lt;a href="http://www.liquidware.com/apps/show/84"&gt;source code is open source&lt;/a&gt; (I uploaded it to the &lt;a href="http://www.liquidware.com/apps"&gt;Open Source app store site&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_xcCOmNtmhYE/TFTnlkQGfBI/AAAAAAAAAfY/wBc1FW8oFnU/s1600/Display.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 307px;" src="http://3.bp.blogspot.com/_xcCOmNtmhYE/TFTnlkQGfBI/AAAAAAAAAfY/wBc1FW8oFnU/s400/Display.jpg" alt="" id="BLOGGER_PHOTO_ID_5500275677498604562" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object width="480" height="300"&gt;&lt;param name="movie" value="http://www.youtube.com/v/WzzKB-dMWsQ&amp;amp;hl=en_US&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/WzzKB-dMWsQ&amp;amp;hl=en_US&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="300"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Kurt used the &lt;a href="http://www.liquidware.com/antipasto_arduino_ide"&gt;antipasto arduino ide&lt;/a&gt;, which brought a tear to my eye, thinking that all those hours slaving away with Chris getting that to work was time well spent :-)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_xcCOmNtmhYE/TFTnmB_PQYI/AAAAAAAAAfo/3wuVWbUN8-c/s1600/DisplayComputer-2.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://2.bp.blogspot.com/_xcCOmNtmhYE/TFTnmB_PQYI/AAAAAAAAAfo/3wuVWbUN8-c/s400/DisplayComputer-2.jpg" alt="" id="BLOGGER_PHOTO_ID_5500275685480939906" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_xcCOmNtmhYE/TFTnmd0fyrI/AAAAAAAAAfw/XCeRgfi2UtU/s1600/Schematic.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 239px;" src="http://3.bp.blogspot.com/_xcCOmNtmhYE/TFTnmd0fyrI/AAAAAAAAAfw/XCeRgfi2UtU/s400/Schematic.jpg" alt="" id="BLOGGER_PHOTO_ID_5500275692952079026" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;This is a custom, homebrew shield Kurt made to house and connect up all the sensors:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_xcCOmNtmhYE/TFTnmnlmoxI/AAAAAAAAAf4/OtZyzzZFA3k/s1600/SensorShield-Top.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 321px;" src="http://3.bp.blogspot.com/_xcCOmNtmhYE/TFTnmnlmoxI/AAAAAAAAAf4/OtZyzzZFA3k/s400/SensorShield-Top.jpg" alt="" id="BLOGGER_PHOTO_ID_5500275695573967634" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;Kurt has a ridiculously well written tutorial on how he built everything up on &lt;a href="http://www.janspace.com/b2evolution/arduino.php/2010/06/26/scooterputer"&gt;his site over here&lt;/a&gt;...&lt;/span&gt; and &lt;span style="font-size:85%;"&gt;&lt;a href="http://blog.makezine.com/archive/2010/07/arduino-based_scooter_computer.html"&gt;Make blog even picked it up&lt;/a&gt;, and there's a funny conversation about it over at the &lt;a href="http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1277653199/8"&gt;Arduino forums&lt;/a&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/7377057412446264720-1143147304010351731?l=antipastohw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antipastohw.blogspot.com/feeds/1143147304010351731/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7377057412446264720&amp;postID=1143147304010351731' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/1143147304010351731'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/1143147304010351731'/><link rel='alternate' type='text/html' href='http://antipastohw.blogspot.com/2010/07/scooterputer-open-source-scooter.html' title='Scooterputer, an Open Source Scooter Dashboard'/><author><name>Matt</name><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/_xcCOmNtmhYE/TFTnl0mKCdI/AAAAAAAAAfg/DshT5U_AUow/s72-c/ScootDisplay-2.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7377057412446264720.post-3038826049548647077</id><published>2010-07-29T21:10:00.000-07:00</published><updated>2010-07-29T22:15:49.625-07:00</updated><title type='text'>Introducing the LCDash GT: Hacking Your Engine with Open Source Hardware</title><content type='html'>Just in time for the &lt;a href="http://makerfaire.com/detroit/2010/"&gt;Maker Faire Detroit&lt;/a&gt;, Justin, Jake and I have been working on the brand new &lt;a href="http://www.liquidware.com/shop/show/DSH/LCDash+1-7+GT"&gt;LCDash Operating System&lt;/a&gt;, and hardware upgrade. This is the brand new &lt;a href="http://www.liquidware.com/shop/show/DSH/LCDash+1-7+GT"&gt;LCDash GT&lt;/a&gt;. The GT edition has more memory, a faster processor, lighter-weight bootloader, a much more streamlined circuit design than the original LCDash. This means it's much more DIY-friendly, and hackable.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_xcCOmNtmhYE/TFJb7VSEeGI/AAAAAAAAAew/EASKPiZwpzs/s1600/LCDash+back+angle.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 400px;" src="http://2.bp.blogspot.com/_xcCOmNtmhYE/TFJb7VSEeGI/AAAAAAAAAew/EASKPiZwpzs/s400/LCDash+back+angle.jpg" alt="" id="BLOGGER_PHOTO_ID_5499559169856141410" border="0" /&gt;&lt;/a&gt;It's also the first time that a 100% Open Source engine controller and engine readout system has been available for people that are familiar with the &lt;a href="http://www.tactrix.com/"&gt;OpenPort Cable&lt;/a&gt;, &lt;a href="http://www.megamanual.com/forums.htm"&gt;MegaSquirt EFI&lt;/a&gt;, or &lt;a href="http://www.obdtester.com/elm-usb"&gt;OBD2/OBDII Elm Protocol&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_xcCOmNtmhYE/TFJd9ye35wI/AAAAAAAAAfQ/qfZCvj5zfq0/s1600/Openport+cable.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 253px; height: 164px;" src="http://3.bp.blogspot.com/_xcCOmNtmhYE/TFJd9ye35wI/AAAAAAAAAfQ/qfZCvj5zfq0/s400/Openport+cable.jpg" alt="" id="BLOGGER_PHOTO_ID_5499561411077465858" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_xcCOmNtmhYE/TFJd9YONfdI/AAAAAAAAAfA/69PpBvg0vwg/s1600/ElmUSB.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 310px; height: 290px;" src="http://3.bp.blogspot.com/_xcCOmNtmhYE/TFJd9YONfdI/AAAAAAAAAfA/69PpBvg0vwg/s400/ElmUSB.jpg" alt="" id="BLOGGER_PHOTO_ID_5499561404028255698" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Each of those protocols allow you to read the output of the engine parameters, and even set them on the fly if you're using MegaSquirt. This means being able to change the fuel-oxygen-throttle mixture and fuel ratio, for either higher performance (more gas), or better gas mileage (less gas) at a given RPM of the engine.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_xcCOmNtmhYE/TFJb7MB1viI/AAAAAAAAAeo/XovQNQ-hiYQ/s1600/LCDash+on.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 400px;" src="http://2.bp.blogspot.com/_xcCOmNtmhYE/TFJb7MB1viI/AAAAAAAAAeo/XovQNQ-hiYQ/s400/LCDash+on.jpg" alt="" id="BLOGGER_PHOTO_ID_5499559167372148258" border="0" /&gt;&lt;/a&gt;A quick word of warning: &lt;a href="http://www.diyautotune.com/tech_articles/megasquirt_install_writeups.htm"&gt;OBDII hacking and EFI programming &lt;/a&gt;is a jedi art, for black-belt car guys, but there's actually a really lively, active community of hackers who have spent a bunch of time hacking their own engines using the &lt;a href="http://www.megamanual.com/forums.htm"&gt;MegaSquirt&lt;/a&gt;. And Justin and Chris are two such guys :-) It's amazing how much power you can pull off the line in a Mitsubishi that's been rigged up to a &lt;a href="http://www.megamanual.com/forums.htm"&gt;MegaSquirt&lt;/a&gt;...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_xcCOmNtmhYE/TFJb6vNVPpI/AAAAAAAAAeg/57r_IsaY2I8/s1600/LCDash+Dodge+Viper.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_xcCOmNtmhYE/TFJb6vNVPpI/AAAAAAAAAeg/57r_IsaY2I8/s400/LCDash+Dodge+Viper.JPG" alt="" id="BLOGGER_PHOTO_ID_5499559159635721874" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_xcCOmNtmhYE/TFJb6Up6ZQI/AAAAAAAAAeY/RU9u07DOMRg/s1600/LCDash+running.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_xcCOmNtmhYE/TFJb6Up6ZQI/AAAAAAAAAeY/RU9u07DOMRg/s400/LCDash+running.JPG" alt="" id="BLOGGER_PHOTO_ID_5499559152507839746" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Anyway, without further ado, here's an updated video that Justin made:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;object height="385" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Bzui6h90cN0&amp;amp;hl=en_US&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/Bzui6h90cN0&amp;amp;hl=en_US&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" object="" height="385" width="480"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Here are two videos of the base LCDash in action, from timbo and MegaScott:&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;br /&gt;&lt;object height="385" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/C1S-MhQAV7U&amp;amp;hl=en_US&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/C1S-MhQAV7U&amp;amp;hl=en_US&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="385" width="480"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;object height="385" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/vv8ohh3O4b0&amp;amp;hl=en_US&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/vv8ohh3O4b0&amp;amp;hl=en_US&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="385" width="480"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;And here's a video that Mike made of the original (running a slower version of the OS, and green PCB representing the older schematic) connected to the MegaSquirt:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;object height="385" width="480"&gt;&lt;embed src="http://www.youtube.com/v/eAIJpcUOCSs&amp;amp;hl=en_US&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="385" width="480"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;If you haven't heard of the &lt;a href="http://www.bgsoflex.com/megasquirt.html"&gt;MegaSquirt &lt;/a&gt;hardware project yet, it's a pretty popular platform for hacking the OBDII interface to the engine. OBDII is a protocol used by many manufacturers as an interface between the EFI and the main computer which distributes and runs the spark plugs, timing, and engine electronics based on a variety of sensor inputs (like O2, RPM, gas pedal depression, and sometimes even car angle, altitude, knock sensor, crank position, turbo boost, current speed, etc.). It's a pretty ambitious project, and can be a challenge to hack at times, having to constantly go back and forth between a PC, and the MegaSquirt, and reprogramming the Arduino. The &lt;a href="http://www.liquidware.com/shop/show/DSH/LCDash+1-7+GT"&gt;LCDash GT &lt;/a&gt;presents a touch-screen interface that makes it really easy to see what the MegaSquirt is doing, and adjust ratios on the fly (e.g. at an autotuner, or dyno station).&lt;br /&gt;&lt;br /&gt;For instance, here's a video by Danny showing the MegaSquirt hooked up to a laptop, the same way it would be hooked up to the LCDash:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;object height="385" width="480"&gt;&lt;embed src="http://www.youtube.com/v/LLTqAi-DIL4&amp;amp;hl=en_US&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="385" width="480"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;The &lt;a href="http://www.bgsoflex.com/megasquirt.html"&gt;MegaSquirt &lt;/a&gt;basically let's you do &lt;a href="http://www.bgsoflex.com/megasquirt.html"&gt;crazy things &lt;/a&gt;(that are of obvious questionable benefit, but definitely cool) to a car's engine, like make it have sputtering launch control:&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;object height="385" width="480"&gt;&lt;embed src="http://www.youtube.com/v/Syw3pOV68js&amp;amp;hl=en_US&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="385" width="480"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;object height="385" width="480"&gt;&lt;embed src="http://www.youtube.com/v/O3Pnnb64Cro&amp;amp;hl=en_US&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="385" width="480"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Here's a link to the &lt;a href="http://www.msruns.com/index.php"&gt;MSruns forum of people that have hacked their cars&lt;/a&gt; using the MegaSquirt, for instance...&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_xcCOmNtmhYE/TFJb7tFA3tI/AAAAAAAAAe4/Otu2DvygJwY/s1600/LCDash+back+flat.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 400px;" src="http://3.bp.blogspot.com/_xcCOmNtmhYE/TFJb7tFA3tI/AAAAAAAAAe4/Otu2DvygJwY/s400/LCDash+back+flat.jpg" alt="" id="BLOGGER_PHOTO_ID_5499559176243830482" border="0" /&gt;&lt;/a&gt;Justin just loaded the LCDash up on the &lt;a href="http://www.liquidware.com/shop/show/DSH/LCDash+1-7+GT"&gt;shop&lt;/a&gt;, and it's available as a kit, or as a &lt;a href="http://www.liquidware.com/shop/show/DSH/LCDash+1-7+GT"&gt;fully assembled version at the Liquidware Shop&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7377057412446264720-3038826049548647077?l=antipastohw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antipastohw.blogspot.com/feeds/3038826049548647077/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7377057412446264720&amp;postID=3038826049548647077' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/3038826049548647077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/3038826049548647077'/><link rel='alternate' type='text/html' href='http://antipastohw.blogspot.com/2010/07/introducing-lcdash-gt-hacking-your.html' title='Introducing the LCDash GT: Hacking Your Engine with Open Source Hardware'/><author><name>Matt</name><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/_xcCOmNtmhYE/TFJb7VSEeGI/AAAAAAAAAew/EASKPiZwpzs/s72-c/LCDash+back+angle.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7377057412446264720.post-1913390191365673832</id><published>2010-07-28T18:50:00.000-07:00</published><updated>2010-07-28T18:50:47.343-07:00</updated><title type='text'>I'm headed to Maker Faire Detroit!</title><content type='html'>&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;This coming Saturday and Sunday are going to be pretty action packed for me... I'm driving from Boston to Detroit with Mike &lt;a href="http://www.thehenryford.org/events/makerFaire.aspx"&gt;to go to Maker Faire&lt;/a&gt;. Talk about a long drive, but we're going to celebrate in style by listening to the new Eminem CD. Normally I wouldn't listen to his music, but I figured I'd try to get in the mood, so why not?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://www.thehenryford.org/events/makerFaire.aspx"&gt;Maker Faire Detroit 2010 &lt;/a&gt;is taking place this Saturday from 9:30 am to 8:00 pm, and Sunday from 9:30 am to 5:00 pm, at the &lt;a href="http://www.thehenryford.org/"&gt;Henry Ford museum&lt;/a&gt;. This is cool on a number a levels, I think. Firstly, Henry Ford is to the Detroit auto crowd, as Eli Whitney was to the Northeast: an inventor who kick-started an entire industrial revolution.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;That's inspirational to me... and Mike too, he's been talking about how badly he's wanted to go to the Ford museum ever since he was a kid. He and I are both pretty big into cars (if you've ever visited the Liquidware lab, you know that this is true!).&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Anyway, here are some of the promotional pictures... please let me know if you want me to bring any special projects along with me to show you...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://1.bp.blogspot.com/_pGsJFsc5Buc/TFDd99Lbq0I/AAAAAAAAArM/npWwFmUEd_Y/s1600/Maker+Faire+Detroit.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="189" src="http://1.bp.blogspot.com/_pGsJFsc5Buc/TFDd99Lbq0I/AAAAAAAAArM/npWwFmUEd_Y/s200/Maker+Faire+Detroit.jpg" width="200" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_pGsJFsc5Buc/TFDd8zv2J_I/AAAAAAAAArE/YEWnktINO40/s320/Maker+faire+Detroit+2.jpg" /&gt;&lt;span id="goog_1576497173"&gt;&lt;/span&gt;&lt;span id="goog_1576497174"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;If you already emailed me, I'm looking forward to seeing you... and if you want to carpool, just let me know...&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7377057412446264720-1913390191365673832?l=antipastohw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antipastohw.blogspot.com/feeds/1913390191365673832/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7377057412446264720&amp;postID=1913390191365673832' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/1913390191365673832'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/1913390191365673832'/><link rel='alternate' type='text/html' href='http://antipastohw.blogspot.com/2010/07/im-headed-to-maker-faire-detroit.html' title='I&apos;m headed to Maker Faire Detroit!'/><author><name>Matt</name><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://1.bp.blogspot.com/_pGsJFsc5Buc/TFDd99Lbq0I/AAAAAAAAArM/npWwFmUEd_Y/s72-c/Maker+Faire+Detroit.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7377057412446264720.post-272348356017929645</id><published>2010-07-27T14:42:00.000-07:00</published><updated>2010-07-27T14:42:03.126-07:00</updated><title type='text'>The Death &amp; Rebirth of an American Geek Calculator</title><content type='html'>&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;The year: 1995. I’m in middle school. I have two calculators, TI-82’s to be precise. Why 2? Because on math tests and quizzes, I found that using Solve() was so slow that I’d start one on a problem, and then use the other while the first got the answer. Calculator-based multitasking in its truest form. The more calculators you had, the nerdier you were. Alpha-nerd, and nerd-cred if you will. It wasn’t just me, I was passing on a long generation of calculator-based nerd credibility:&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_pGsJFsc5Buc/TE9LCv9RC2I/AAAAAAAAAp8/XkiskU651Ig/s1600/Timeline+of+calculator+geeks.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="97" src="http://1.bp.blogspot.com/_pGsJFsc5Buc/TE9LCv9RC2I/AAAAAAAAAp8/XkiskU651Ig/s400/Timeline+of+calculator+geeks.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;Something has &lt;a href="http://www.iphones.ru/tag/girls"&gt;gone horribly wrong&lt;/a&gt;. Fast-forward to the epilogue future-present. The world according to my middle school dreams was supposed to be filled with calculators, and super-man-geeks and “not-men” (aka !men, or "women") were supposed to be walking around, carrying calculators, &lt;a href="http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&amp;amp;item=160442112906&amp;amp;rvr_id=116426235064&amp;amp;crlp=1_263602_263622&amp;amp;UA=%3F*F%3F&amp;amp;GUID=79c224cc1290a04bd3206fd0fff55848&amp;amp;itemid=160442112906&amp;amp;ff4=263602_263622"&gt;wearing super calculator watches&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_pGsJFsc5Buc/TE9OGnIbO9I/AAAAAAAAAq0/MyeFnoicq64/s1600/Casio+calculator+watch.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://3.bp.blogspot.com/_pGsJFsc5Buc/TE9OGnIbO9I/AAAAAAAAAq0/MyeFnoicq64/s200/Casio+calculator+watch.jpg" width="120" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;Bling. Bling.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;I used to have a tactical vest that I'd wear while programming in high school. Except instead of guns and ammo, my weapons were Sine, Cosine, and Arctangent. Full, semi-automatic &lt;a href="http://en.wikipedia.org/wiki/Colt_Single_Action_Army"&gt;Cot()-.45 degree&lt;/a&gt; Artangent, nevermind you. I used to use the vest to hold my TI and HP calculators. I dreamed of the day when I'd carry around a brushed titanium briefcase filled with top-secret, uber-hacker calculators for &lt;a href="http://www.h-online.com/security/news/item/The-Cryptography-Olympics-the-hash-algorithm-contest-740207.html"&gt;cracking crypto hash algorithms&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;But alas, that future never came to be...&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;In the past few days of revelry while I’ve used my &lt;a href="http://antipastohw.blogspot.com/2010/07/r-runs-on-beagleboad-beagletouch.html"&gt;R-based scientific calculator&lt;/a&gt;, I’ve come to realize something. This is the first time in years that I’ve actually carried around a calculator again. It got me thinking… and I started to look around as I walked through Boston. No one carries calculators any more!&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;The calculator, as it turns out, is a casualty of &lt;a href="http://en.wikipedia.org/wiki/Convergence"&gt;convergence&lt;/a&gt;. In other words, the calculator got “&lt;a href="http://en.wikipedia.org/wiki/O._J._Simpson"&gt;OJ Simpsoned&lt;/a&gt;” … if it doesn’t fit (in your assortment of devices), you must acquit (and stick it in a box of old gadgets).&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_pGsJFsc5Buc/TE9L9quQpDI/AAAAAAAAAqk/PKo5jzUCbMM/s1600/Calculators+are+OJ+Simpson.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="195" src="http://4.bp.blogspot.com/_pGsJFsc5Buc/TE9L9quQpDI/AAAAAAAAAqk/PKo5jzUCbMM/s400/Calculators+are+OJ+Simpson.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;The next generation calculator device, and the calc-based society of the future I always dreamed about, never came about. This is why I think that never happened: at the low end, calculators have been absorbed into handheld phones. Blackberry, iPhone, Android devices &lt;a href="http://www.macworld.com/article/141364/2009/06/hpcalcapps.html"&gt;all have apps &lt;/a&gt;that replicate the features of calculators, so why carry around a calculator anymore? At the high end, calculators &lt;a href="http://www.ticalc.org/pub/text/calcinfo/index.html"&gt;didn’t have enough RAM or dataspace memory&lt;/a&gt; to prove themselves useful or capable as data analysis needs grew. Furthermore calculators were quite a pain to transfer data on and off of, so people just used computers with &lt;a href="http://office.microsoft.com/en-us/excel/"&gt;Excel&lt;/a&gt;, &lt;a href="http://www.mathworks.com/embedded-systems/"&gt;Matlab&lt;/a&gt;, &lt;a href="http://www.wolfram.com/"&gt;Mathematica&lt;/a&gt; and &lt;a href="http://www.r-project.org/"&gt;R&lt;/a&gt;. The calculator just got squeezed out.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_pGsJFsc5Buc/TE9MtrMQN4I/AAAAAAAAAqs/GxnEpm6xZNg/s1600/Calculators+got+cut+out.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="257" src="http://4.bp.blogspot.com/_pGsJFsc5Buc/TE9MtrMQN4I/AAAAAAAAAqs/GxnEpm6xZNg/s400/Calculators+got+cut+out.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;I collect calculators like some guys collect vinyl records and model trains. It’s a hobby, and it used to be an obsession. But ever since I went on my first date, it’s kinda gone away, sadly. &lt;a href="http://bestblackframe.over-blog.com/15-categorie-10895573.html"&gt;Well, the girlfriend part wasn’t sad, but the diminished level of calculator collecting was&lt;/a&gt;.&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_pGsJFsc5Buc/TE9Lyg4rvAI/AAAAAAAAAqc/ZCLv9QxNSZs/s1600/Calculators+vs+girlfriend.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="342" src="http://3.bp.blogspot.com/_pGsJFsc5Buc/TE9Lyg4rvAI/AAAAAAAAAqc/ZCLv9QxNSZs/s400/Calculators+vs+girlfriend.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt; &lt;br /&gt;It is very telling when you find a hobby of yours &lt;a href="http://www.calculators.de/"&gt;starts to&lt;/a&gt; &lt;a href="http://www.oldcalculatormuseum.com/"&gt;pop up&lt;/a&gt; in &lt;a href="http://www.hpmuseum.org/"&gt;museums&lt;/a&gt; and &lt;a href="http://www.jstor.org/pss/2974875?cookieSet=1"&gt;historical archives&lt;/a&gt;. That means &lt;a href="http://en.wikipedia.org/wiki/Steven_Tyler"&gt;you’re old&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_pGsJFsc5Buc/TE9LWDtTSOI/AAAAAAAAAqM/TqgmaomYM0M/s1600/Calculator+museum.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_pGsJFsc5Buc/TE9LWDtTSOI/AAAAAAAAAqM/TqgmaomYM0M/s320/Calculator+museum.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;It's even worse when there's a &lt;a href="http://www.jstor.org/pss/2974875?cookieSet=1"&gt;history paper written &lt;/a&gt;about it:&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_pGsJFsc5Buc/TE9LaJ67PNI/AAAAAAAAAqU/9cWojKkvlk8/s1600/History+paper.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://1.bp.blogspot.com/_pGsJFsc5Buc/TE9LaJ67PNI/AAAAAAAAAqU/9cWojKkvlk8/s400/History+paper.jpg" width="342" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;But something has changed, and I’m determined to figure out what happened. Since Koen helped me get &lt;a href="http://antipastohw.blogspot.com/2010/07/r-runs-on-beagleboad-beagletouch.html"&gt;R running&lt;/a&gt; on the &lt;a href="http://www.liquidware.com/shop/show/BB-C4/BeagleBoard+C4"&gt;BeagleBoard&lt;/a&gt;, I’ve been carrying my newfangled scientific programming open source calculator around with me, proudly, and finding reasons to pull it out and get R running. It’s wonderful, inspiring, and totally contagiously nerding out anyone who asks me about it, sort of like a virus spreading and &lt;a href="http://en.wikipedia.org/wiki/Umbrella_Corporation"&gt;zombifying people in an underground lab&lt;/a&gt; ... like these guys did:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_pGsJFsc5Buc/TE9PkoTQGYI/AAAAAAAAAq8/cH0GTebu8e4/s1600/Umbrella+corp.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_pGsJFsc5Buc/TE9PkoTQGYI/AAAAAAAAAq8/cH0GTebu8e4/s320/Umbrella+corp.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;I think calculators need to be re-invented, and I think I’ve stumbled on at least part of the equation. The &lt;a href="http://www.liquidware.com/shop/show/BB-C4/BeagleBoard+C4"&gt;Beagleboard&lt;/a&gt; / &lt;a href="http://www.liquidware.com/shop/show/BB-BT/BeagleTouch"&gt;BeagleTouch &lt;/a&gt;– based &lt;a href="http://www.r-project.org/"&gt;R calculator&lt;/a&gt; is much more than “just a calculator”. It’s a hacker / calculator nerd’s (me) dream come true. It provides exactly what I need: a way to compute randomly sampled arrays, parallel compute transposed lists on the fly.&lt;br /&gt;Instead of calculating the tip at the end of a meal, I can use this thing to calculate tips for the entire freakin’ restaurant!&lt;br /&gt;&lt;br /&gt;In the words of &lt;a href="http://www.imdb.com/name/nm0000379/"&gt;Kirsten Dunst&lt;/a&gt;: Bring it on.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_pGsJFsc5Buc/TE9LRBqiqXI/AAAAAAAAAqE/mzPVTOGonvw/s1600/Bring+it+on.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="311" src="http://4.bp.blogspot.com/_pGsJFsc5Buc/TE9LRBqiqXI/AAAAAAAAAqE/mzPVTOGonvw/s400/Bring+it+on.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;span style="font-size: x-small;"&gt;Naturally, she was referring to the re-invention and rebirth of the Great American Geek Calculator!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Naturally.&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/7377057412446264720-272348356017929645?l=antipastohw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antipastohw.blogspot.com/feeds/272348356017929645/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7377057412446264720&amp;postID=272348356017929645' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/272348356017929645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/272348356017929645'/><link rel='alternate' type='text/html' href='http://antipastohw.blogspot.com/2010/07/death-rebirth-of-american-geek.html' title='The Death &amp; Rebirth of an American Geek Calculator'/><author><name>Matt</name><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://1.bp.blogspot.com/_pGsJFsc5Buc/TE9LCv9RC2I/AAAAAAAAAp8/XkiskU651Ig/s72-c/Timeline+of+calculator+geeks.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7377057412446264720.post-8629678560796809381</id><published>2010-07-26T16:36:00.000-07:00</published><updated>2010-07-26T16:36:48.914-07:00</updated><title type='text'>BeagleTouch meets Makerbot</title><content type='html'>&lt;span style="font-size: x-small;"&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;By now, almost everyone's heard of the &lt;a href="http://www.makerbot.com/"&gt;Makerbot&lt;/a&gt;, it's a DIY 3D printing system made by the guys down in NYC (mostly notably, &lt;a href="http://antipastohw.blogspot.com/2009/09/ixm-and-self-discovering-topology.html"&gt;Bre Pettis, who Chris, Matt, and I met down in NYC a little while ago&lt;/a&gt; - and who we also met again at the San Mateo Maker Fair):&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="https://as220.org/labs/blog/2009/06/08/makerbot-cupcake-cnc.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" src="https://as220.org/labs/blog/2009/06/08/makerbot-cupcake-cnc.jpg" style="cursor: pointer; display: block; height: 333px; margin: 0px auto 10px; text-align: center; width: 500px;" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Anyway, while &lt;a href="http://antipastohw.blogspot.com/2010/07/r-runs-on-beagleboad-beagletouch.html"&gt;Koen was hacking away on the solution to getting R up and running on the BeagleBoard&lt;/a&gt;, he built a coaster, which happens to hold the &lt;a href="http://www.liquidware.com/shop/show/BB-C4/BeagleBoard+C4"&gt;BeagleBoard &lt;/a&gt;quite nicely, and also &lt;a href="http://www.liquidware.com/shop/show/BB-BT/BeagleTouch"&gt;looks pretty slick with the BeagleTouch&lt;/a&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://www.liquidware.com/system/0000/3205/BeagleTouch_Mounted-2.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" src="http://www.liquidware.com/system/0000/3205/BeagleTouch_Mounted-2.jpg" style="cursor: pointer; display: block; height: 461px; margin: 0px auto 10px; text-align: center; width: 461px;" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;So without further ado, here's Koen's picture:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://3.bp.blogspot.com/_xcCOmNtmhYE/TEybJWgPWtI/AAAAAAAAAc4/QcBXj9uzMsk/s1600/BeagleTouch+meets+Makerbot.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5497939830074464978" src="http://3.bp.blogspot.com/_xcCOmNtmhYE/TEybJWgPWtI/AAAAAAAAAc4/QcBXj9uzMsk/s400/BeagleTouch+meets+Makerbot.jpg" style="cursor: pointer; display: block; height: 300px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Pretty nifty... although I haven't tried my hand at running a Makerbot myself yet, this is definitely some solid inspiration... Justin has one in the back room, and maybe now it's time to play with it? :-)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&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/7377057412446264720-8629678560796809381?l=antipastohw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antipastohw.blogspot.com/feeds/8629678560796809381/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7377057412446264720&amp;postID=8629678560796809381' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/8629678560796809381'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/8629678560796809381'/><link rel='alternate' type='text/html' href='http://antipastohw.blogspot.com/2010/07/beagletouch-meets-makerbot.html' title='BeagleTouch meets Makerbot'/><author><name>Matt</name><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://3.bp.blogspot.com/_xcCOmNtmhYE/TEybJWgPWtI/AAAAAAAAAc4/QcBXj9uzMsk/s72-c/BeagleTouch+meets+Makerbot.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7377057412446264720.post-4847946496868014173</id><published>2010-07-25T20:07:00.000-07:00</published><updated>2010-07-25T20:53:31.914-07:00</updated><title type='text'>R runs on the Beagleboad &amp; BeagleTouch!</title><content type='html'>&lt;span style="font-size:85%;"&gt;On Wednesday, in the library, Chris and I talked about how impossible it would be to port R to the Beagleboard platform, given all the insane dependencies on obscure libraries, some java based, some fortran based, you name it.&lt;br /&gt;&lt;br /&gt;On Thursday, I read &lt;a href="http://drfd.hbs.edu/fit/public/facultyInfo.do?facInfo=bio&amp;amp;facId=240491"&gt;Karim&lt;/a&gt;'s most recent article with&lt;a href="http://twitter.com/gulley"&gt; Ned Gulley&lt;/a&gt; called, "&lt;a href="http://hbswk.hbs.edu/item/6374.html"&gt;The Determinants of Individual Performance and Collective Value in Private-Collective Software Innovation&lt;/a&gt;". Naturally, this wasn't a wiki-like contest, but there sure was plenty of reuse (R is an established platform), code recombination (Chris + Will + Koen + Mine). In this case, however, I suppose you could say the goal was to increase the "free-rider" problem. That, or I just think it's cool to have a portable R-based gadget. :-)&lt;br /&gt;&lt;br /&gt;Ps, totally random aside, this graph is awesome, it proves that multiple people working together for a common good get a lot farther than any one person by themselves (obviously this is true, but this is quantitative, numerical evidence):&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_xcCOmNtmhYE/TEz_67NDh8I/AAAAAAAAAeA/8DILnPSpbr0/s1600/Code+contest+performance.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 245px;" src="http://1.bp.blogspot.com/_xcCOmNtmhYE/TEz_67NDh8I/AAAAAAAAAeA/8DILnPSpbr0/s400/Code+contest+performance.jpg" alt="" id="BLOGGER_PHOTO_ID_5498050632902477762" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;On Friday, I posted a &lt;a href="http://antipastohw.blogspot.com/2010/07/help-port-r-to-beagleboard-angstrom-for.html"&gt;quick blog article &lt;/a&gt;about porting R to the Beagle &amp;amp; Angstrom platform. Chris thought it would be very difficult, I thought it would be impossible, and so I offered $1,000 to anyone that could help.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_xcCOmNtmhYE/TE0AEQfUFmI/AAAAAAAAAeI/g93mZETNLdI/s1600/R+ported+toBeagleBoard.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 228px;" src="http://1.bp.blogspot.com/_xcCOmNtmhYE/TE0AEQfUFmI/AAAAAAAAAeI/g93mZETNLdI/s400/R+ported+toBeagleBoard.jpg" alt="" id="BLOGGER_PHOTO_ID_5498050793235027554" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;On Saturday, I got about a dozen emails, and 3 folks who said they were going to try (4 if you include me, since I figured maybe I could do it after all).&lt;br /&gt;&lt;br /&gt;On Sunday, I got an email from Koen with the following picture, and code screenshot printout:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm5.static.flickr.com/4117/4827023258_ca07c8f9d6_o.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 520px; height: 292px;" src="http://farm5.static.flickr.com/4117/4827023258_ca07c8f9d6_o.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_xcCOmNtmhYE/TE0Airprl0I/AAAAAAAAAeQ/-ikd0oXqYFs/s1600/R+works+on+beagleboard.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 295px;" src="http://1.bp.blogspot.com/_xcCOmNtmhYE/TE0Airprl0I/AAAAAAAAAeQ/-ikd0oXqYFs/s400/R+works+on+beagleboard.jpg" alt="" id="BLOGGER_PHOTO_ID_5498051315922343746" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;Total elapsed time since blog post: less than 36 hours&lt;br /&gt;&lt;br /&gt;Naturally, I wanted to make sure I could replicate it myself, and so I was able to run the following commands on the BeagleBoard (&lt;a href="http://antipastohw.blogspot.com/2010/07/how-to-make-linux-beagleboard-gadget.html"&gt;with a wifi internet connection up and running&lt;/a&gt;):&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;br /&gt;wget http://www.liquidware.org/r_2.11.1-r0.5_armv7a.ipk&lt;br /&gt;&lt;br /&gt;opkg install http://www.angstrom-distribution.org/feeds/2008/ipk/glibc/armv7a/base/tk-dev_8.4.19-r0.1_armv7a.ipk&lt;br /&gt;&lt;br /&gt;opkg install http://www.angstrom-distribution.org/feeds/2008/ipk/glibc/armv7a/base/gfortran_4.3.1-r11.1_armv7a.ipk&lt;br /&gt;&lt;br /&gt;opkg update&lt;br /&gt;&lt;br /&gt;opkg upgrade&lt;br /&gt;&lt;br /&gt;reboot&lt;br /&gt;&lt;br /&gt;opkg install -force-depends ./r_2.11.1-r0.5_armv7a.ipk&lt;br /&gt;&lt;br /&gt;opkg bash&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;And then I popped it up, and got this:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();}  catch(e) {}" href="http://3.bp.blogspot.com/_xcCOmNtmhYE/TEzOzg_WzQI/AAAAAAAAAdw/sbXDvLU2Poo/s1600/Beagleboard+BeagleTouch+Wifi+Gadget.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 302px;" src="http://3.bp.blogspot.com/_xcCOmNtmhYE/TEzOzg_WzQI/AAAAAAAAAdw/sbXDvLU2Poo/s400/Beagleboard+BeagleTouch+Wifi+Gadget.jpg" alt="" id="BLOGGER_PHOTO_ID_5497996629536853250" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;2shay, Koen :-)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;UPDATE: I just Googled around, and there was apparently also another possible solution, cooked up by HNS, although technically not doable with Angstrom (which is critical given some of the drivers and whatnot I've patched into my version of Angstrom), it gets R up and running with Debian:&lt;br /&gt;&lt;br /&gt;---&lt;a href="http://groups.google.com/group/beagleboard/browse_thread/thread/7557999f5f1ff235"&gt;Copied from the mailing list&lt;/a&gt;---&lt;br /&gt;&lt;br /&gt;Does this qualify as well?&lt;br /&gt;&lt;br /&gt;Install Debian Lenny, u-boot and a kernel on a SD card from&lt;br /&gt;&lt;br /&gt;http://download.goldelico.com/ombeagle/20100715-lenny/&lt;br /&gt;&lt;br /&gt;boot and login. Make sure the host works as a internet router.&lt;br /&gt;&lt;br /&gt;Linux bb-debian 2.6.32 #48 PREEMPT Tue Jun 8 14:21:52 CEST 2010 armv7l&lt;br /&gt;&lt;br /&gt;The programs included with the Debian GNU/Linux system are free&lt;br /&gt;software;&lt;br /&gt;the exact distribution terms for each program are described in the&lt;br /&gt;individual files in /usr/share/doc/*/copyright.&lt;br /&gt;&lt;br /&gt;Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent&lt;br /&gt;permitted by applicable law.&lt;br /&gt;Last login: Fri Jul 23 12:48:05 2010 from 192.168.0.200&lt;br /&gt;bb-debian:~# apt-get install r-base&lt;br /&gt;Reading package lists... Done&lt;br /&gt;Building dependency tree&lt;br /&gt;Reading state information... Done&lt;br /&gt;The following extra packages will be installed:&lt;br /&gt;  libgfortran3 libpaper-utils libpaper1 r-base-core r-cran-boot r-cran-&lt;br /&gt;cluster r-cran-codetools r-cran-foreign r-cran-kernsmooth r-cran-&lt;br /&gt;lattice r-cran-mgcv r-cran-nlme r-cran-rpart r-cran-survival r-cran-vr&lt;br /&gt;r-recommended tk8.4&lt;br /&gt;  unzip zip&lt;br /&gt;Suggested packages:&lt;br /&gt;  ess r-doc-info r-doc-pdf r-doc-html r-mathlib&lt;br /&gt;Recommended packages:&lt;br /&gt;  r-base-html r-base-latex r-base-dev&lt;br /&gt;The following NEW packages will be installed:&lt;br /&gt;  libgfortran3 libpaper-utils libpaper1 r-base r-base-core r-cran-boot&lt;br /&gt;r-cran-cluster r-cran-codetools r-cran-foreign r-cran-kernsmooth r-&lt;br /&gt;cran-lattice r-cran-mgcv r-cran-nlme r-cran-rpart r-cran-survival r-&lt;br /&gt;cran-vr r-recommended&lt;br /&gt;  tk8.4 unzip zip&lt;br /&gt;0 upgraded, 20 newly installed, 0 to remove and 1 not upgraded.&lt;br /&gt;Need to get 18.2MB of archives.&lt;br /&gt;After this operation, 64.3MB of additional disk space will be used.&lt;br /&gt;Do you want to continue [Y/n]? y&lt;br /&gt;Get:1 http://ftp.de.debian.org stable/main libgfortran3 4.3.2-1.1 [211kB]&lt;br /&gt;Get:2 http://ftp.de.debian.org stable/main libpaper1 1.1.23+nmu1 [21.9kB]&lt;br /&gt;Get:3 http://ftp.de.debian.org stable/main libpaper-utils 1.1.23+nmu1 [18.3kB]&lt;br /&gt;Get:4 http://ftp.de.debian.org stable/main zip 2.32-1 [110kB]&lt;br /&gt;Get:5 http://ftp.de.debian.org stable/main unzip 5.52-12 [163kB]&lt;br /&gt;Get:6 http://ftp.de.debian.org stable/main tk8.4 8.4.19-2 [1022kB]&lt;br /&gt;Get:7 http://ftp.de.debian.org stable/main r-base-core 2.7.1-1+lenny1 [11.0MB]&lt;br /&gt;Get:8 http://ftp.de.debian.org stable/main r-cran-boot 1.2.33-1 [458kB]&lt;br /&gt;Get:9 http://ftp.de.debian.org stable/main r-cran-cluster 1.11.11-1 [343kB]&lt;br /&gt;Get:10 http://ftp.de.debian.org stable/main r-cran-foreign 0.8.27-1 [154kB]&lt;br /&gt;Get:11 http://ftp.de.debian.org stable/main r-cran-vr 7.2.42-1 [971kB]&lt;br /&gt;Get:12 http://ftp.de.debian.org stable/main r-cran-kernsmooth 2.22.22-1 [51.7kB]&lt;br /&gt;Get:13 http://ftp.de.debian.org stable/main r-cran-lattice 0.17-10-1 [598kB]&lt;br /&gt;Get:14 http://ftp.de.debian.org stable/main r-cran-mgcv 1.4-1-1 [658kB]&lt;br /&gt;Get:15 http://ftp.de.debian.org stable/main r-cran-nlme 3.1.89-1 [1346kB]&lt;br /&gt;Get:16 http://ftp.de.debian.org stable/main r-cran-survival 2.34-1-1 [833kB]&lt;br /&gt;Get:17 http://ftp.de.debian.org stable/main r-cran-rpart 3.1.41-1 [160kB]&lt;br /&gt;Get:18 http://ftp.de.debian.org stable/main r-cran-codetools 0.2-1-1 [39.8kB]&lt;br /&gt;Get:19 http://ftp.de.debian.org stable/main r-recommended 2.7.1-1+lenny1 [2208B]&lt;br /&gt;Get:20 http://ftp.de.debian.org stable/main r-base 2.7.1-1+lenny1[29.7kB]&lt;br /&gt;&lt;br /&gt;Fetched 18.2MB in 21s (842kB/ s)&lt;br /&gt;&lt;br /&gt;debconf: delaying package configuration, since apt-utils is not installed&lt;br /&gt;Selecting previously deselected package libgfortran3.&lt;br /&gt;(Reading database ... 25829 files and directories currently installed.)&lt;br /&gt;Unpacking libgfortran3 (from .../libgfortran3_4.3.2-1.1_armel.deb) ... Selecting previously deselected package libpaper1.&lt;br /&gt;Unpacking libpaper1 (from .../libpaper1_1.1.23+nmu1_armel.deb) ... Selecting previously deselected package libpaper-utils.&lt;br /&gt;Unpacking libpaper-utils (from .../libpaper- utils_1.1.23+nmu1_armel.deb) ...&lt;br /&gt;Selecting previously deselected package zip.&lt;br /&gt;Unpacking zip (from .../archives/zip_2.32-1_armel.deb) ...&lt;br /&gt;Selecting previously deselected package unzip.&lt;br /&gt;Unpacking unzip (from .../unzip_5.52-12_armel.deb) ...&lt;br /&gt;Selecting previously deselected package tk8.4.&lt;br /&gt;Unpacking tk8.4 (from .../tk8.4_8.4.19-2_armel.deb) ...&lt;br /&gt;Selecting previously deselected package r-base-core.&lt;br /&gt;Unpacking r-base-core (from .../r-base-&lt;br /&gt;core_2.7.1-1+lenny1_armel.deb) ...&lt;br /&gt;Selecting previously deselected package r-cran-boot.&lt;br /&gt;Unpacking r-cran-boot (from .../r-cran-boot_1.2.33-1_all.deb) ...&lt;br /&gt;Selecting previously deselected package r-cran-cluster.&lt;br /&gt;Unpacking r-cran-cluster (from .../r-cran-&lt;br /&gt;cluster_1.11.11-1_armel.deb) ...&lt;br /&gt;Selecting previously deselected package r-cran-foreign.&lt;br /&gt;Unpacking r-cran-foreign (from .../r-cran-&lt;br /&gt;foreign_0.8.27-1_armel.deb) ...&lt;br /&gt;Selecting previously deselected package r-cran-vr.&lt;br /&gt;Unpacking r-cran-vr (from .../r-cran-vr_7.2.42-1_armel.deb) ...&lt;br /&gt;Selecting previously deselected package r-cran-kernsmooth.&lt;br /&gt;Unpacking r-cran-kernsmooth (from .../r-cran-&lt;br /&gt;kernsmooth_2.22.22-1_armel.deb) ...&lt;br /&gt;Selecting previously deselected package r-cran-lattice.&lt;br /&gt;Unpacking r-cran-lattice (from .../r-cran-&lt;br /&gt;lattice_0.17-10-1_armel.deb) ...&lt;br /&gt;Selecting previously deselected package r-cran-mgcv.&lt;br /&gt;Unpacking r-cran-mgcv (from .../r-cran-mgcv_1.4-1-1_armel.deb) ...&lt;br /&gt;Selecting previously deselected package r-cran-nlme.&lt;br /&gt;Unpacking r-cran-nlme (from .../r-cran-nlme_3.1.89-1_armel.deb) ...&lt;br /&gt;Selecting previously deselected package r-cran-survival.&lt;br /&gt;Unpacking r-cran-survival (from .../r-cran-&lt;br /&gt;survival_2.34-1-1_armel.deb) ...&lt;br /&gt;Selecting previously deselected package r-cran-rpart.&lt;br /&gt;Unpacking r-cran-rpart (from .../r-cran-rpart_3.1.41-1_armel.deb) ...&lt;br /&gt;Selecting previously deselected package r-cran-codetools.&lt;br /&gt;Unpacking r-cran-codetools (from .../r-cran-&lt;br /&gt;codetools_0.2-1-1_all.deb) ...&lt;br /&gt;Selecting previously deselected package r-recommended.&lt;br /&gt;Unpacking r-recommended (from .../r-&lt;br /&gt;recommended_2.7.1-1+lenny1_all.deb) ...&lt;br /&gt;Selecting previously deselected package r-base.&lt;br /&gt;Unpacking r-base (from .../r-base_2.7.1-1+lenny1_all.deb) ...&lt;br /&gt;Setting up libgfortran3 (4.3.2-1.1) ...&lt;br /&gt;Setting up libpaper1 (1.1.23+nmu1) ...&lt;br /&gt;&lt;br /&gt;Creating config file /etc/papersize with new version&lt;br /&gt;Setting up libpaper-utils (1.1.23+nmu1) ...&lt;br /&gt;Setting up zip (2.32-1) ...&lt;br /&gt;Setting up unzip (5.52-12) ...&lt;br /&gt;Setting up tk8.4 (8.4.19-2) ...&lt;br /&gt;Setting up r-base-core (2.7.1-1+lenny1) ...&lt;br /&gt;Setting R_PAPERSIZE_USER default to 'a4'&lt;br /&gt;&lt;br /&gt;Creating config file /etc/R/Renviron with new version&lt;br /&gt;Setting up r-cran-boot (1.2.33-1) ...&lt;br /&gt;Setting up r-cran-cluster (1.11.11-1) ...&lt;br /&gt;Setting up r-cran-foreign (0.8.27-1) ...&lt;br /&gt;Setting up r-cran-vr (7.2.42-1) ...&lt;br /&gt;Setting up r-cran-kernsmooth (2.22.22-1) ...&lt;br /&gt;Setting up r-cran-lattice (0.17-10-1) ...&lt;br /&gt;Setting up r-cran-mgcv (1.4-1-1) ...&lt;br /&gt;Setting up r-cran-nlme (3.1.89-1) ...&lt;br /&gt;Setting up r-cran-survival (2.34-1-1) ...&lt;br /&gt;Setting up r-cran-rpart (3.1.41-1) ...&lt;br /&gt;Setting up r-cran-codetools (0.2-1-1) ...&lt;br /&gt;Setting up r-recommended (2.7.1-1+lenny1) ...&lt;br /&gt;Setting up r-base (2.7.1-1+lenny1) ...&lt;br /&gt;bb-debian:~# R&lt;br /&gt;&lt;br /&gt;R version 2.7.1 (2008-06-23)&lt;br /&gt;Copyright (C) 2008 The R Foundation for Statistical Computing&lt;br /&gt;ISBN 3-900051-07-0&lt;br /&gt;&lt;br /&gt;R is free software and comes with ABSOLUTELY NO WARRANTY.&lt;br /&gt;You are welcome to redistribute it under certain conditions.&lt;br /&gt;Type 'license()' or 'licence()' for distribution details.&lt;br /&gt;&lt;br /&gt;R is a collaborative project with many contributors.&lt;br /&gt;Type 'contributors()' for more information and&lt;br /&gt;'citation()' on how to cite R or R packages in publications.&lt;br /&gt;&lt;br /&gt;Type 'demo()' for some demos, 'help()' for on-line help, or&lt;br /&gt;'help.start()' for an HTML browser interface to help.&lt;br /&gt;Type 'q()' to quit R.&lt;br /&gt;&lt;br /&gt;&gt; x &lt;- c(10.4, 5.6, 3.1, 6.4, 21.7)&lt;br /&gt;&gt; y &lt;- c(x, 0, x)&lt;br /&gt;&gt; 1/x&lt;br /&gt;&lt;br /&gt;[1] 0.09615385 0.17857143 0.32258065 0.15625000 0.04608295&lt;br /&gt;&gt; q()&lt;br /&gt;&lt;br /&gt;Save workspace image? [y/n/c]: n&lt;br /&gt;bb-debian:~# uname -a&lt;br /&gt;Linux bb-debian 2.6.32 #48 PREEMPT Tue Jun 8 14:21:52 CEST 2010 armv7l&lt;br /&gt;GNU/Linux&lt;br /&gt;bb-debian:~# cat /proc/cpu&lt;br /&gt;cat: /proc/cpu: Is a directory&lt;br /&gt;bb-debian:~# cat /proc/cpuinfo&lt;br /&gt;Processor       : ARMv7 Processor rev 3 (v7l)&lt;br /&gt;BogoMIPS        : 696.20&lt;br /&gt;Features        : swp half thumb fastmult vfp edsp thumbee neon vfpv3&lt;br /&gt;CPU implementer : 0x41&lt;br /&gt;CPU architecture: 7&lt;br /&gt;CPU variant     : 0x1&lt;br /&gt;CPU part        : 0xc08&lt;br /&gt;CPU revision    : 3&lt;br /&gt;&lt;br /&gt;Hardware        : OMAP3 Beagle Board&lt;br /&gt;Revision        : 0020&lt;br /&gt;Serial          : 0000000000000000&lt;br /&gt;bb-debian:~#&lt;br /&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/7377057412446264720-4847946496868014173?l=antipastohw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antipastohw.blogspot.com/feeds/4847946496868014173/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7377057412446264720&amp;postID=4847946496868014173' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/4847946496868014173'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/4847946496868014173'/><link rel='alternate' type='text/html' href='http://antipastohw.blogspot.com/2010/07/r-runs-on-beagleboad-beagletouch.html' title='R runs on the Beagleboad &amp; BeagleTouch!'/><author><name>Matt</name><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://1.bp.blogspot.com/_xcCOmNtmhYE/TEz_67NDh8I/AAAAAAAAAeA/8DILnPSpbr0/s72-c/Code+contest+performance.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7377057412446264720.post-4400514744577553586</id><published>2010-07-25T12:47:00.000-07:00</published><updated>2010-08-04T22:13:13.695-07:00</updated><title type='text'>How to make a Linux Beagleboard Gadget Wifi-enabled</title><content type='html'>&lt;span style="font-family: verdana; font-size: 85%;"&gt;It's been a busy past few weeks, but thanks to Chris and Will, the Beagle Gadget using the &lt;a href="http://www.liquidware.com/shop/show/BB-C4/BeagleBoard+C4"&gt;BeagleBoard &lt;/a&gt;and the &lt;a href="http://www.liquidware.com/shop/show/BB-BT/BeagleTouch"&gt;BeagleTouch&lt;/a&gt;, can now use Wifi - and it's seriously fast! This means that this is the first official Beagleboard-based &lt;a href="http://www.linuxfordevices.com/c/a/Linux-For-Devices-Articles/Linux-PDAs-PMPs-PNDs-and-other-Handhelds/"&gt;wireless handheld Linux device&lt;/a&gt;... that's a lot of buzzy words, ha. &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;    &lt;br /&gt;&lt;div class="MsoNormal" style="font-family: verdana;"&gt;&lt;span style="font-size: 85%;"&gt;Here's a video of the Beagle Gadget communicating over wireless... and... browsing the web using ... drum roll ... Firefox. That's crazy. I remember the days when I was lucky to get a serial communication link going on my PalmOS Treo handheld, let alone wifi. But suffice to say, &lt;a href="http://www.youtube.com/watch?v=XcMSwGYiglA"&gt;here it is, actually working&lt;/a&gt;:&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: center;"&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/XcMSwGYiglA&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/XcMSwGYiglA&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;meta content="text/html; charset=utf-8" equiv="Content-Type"&gt;&lt;/meta&gt;&lt;meta content="Word.Document" name="ProgId"&gt;&lt;/meta&gt;&lt;meta content="Microsoft Word 12" name="Generator"&gt;&lt;/meta&gt;&lt;meta content="Microsoft Word 12" name="Originator"&gt;&lt;/meta&gt;&lt;link href="file:///C:%5CUsers%5Cuser%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml" rel="File-List"&gt;&lt;/link&gt;&lt;link href="file:///C:%5CUsers%5Cuser%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx" rel="themeData"&gt;&lt;/link&gt;&lt;link href="file:///C:%5CUsers%5Cuser%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml" rel="colorSchemeMapping"&gt;&lt;/link&gt;    &lt;m:smallfrac val="off"&gt;    &lt;m:dispdef&gt;    &lt;m:lmargin val="0"&gt;    &lt;m:rmargin val="0"&gt;    &lt;m:defjc val="centerGroup"&gt;    &lt;m:wrapindent val="1440"&gt;    &lt;m:intlim val="subSup"&gt;    &lt;m:narylim val="undOvr"&gt;   &lt;/m:narylim&gt;&lt;/m:intlim&gt; &lt;/m:wrapindent&gt;&lt;style&gt; &lt;!--  /* Font Definitions */  @font-face 	{font-family:"Cambria Math"; 	panose-1:0 0 0 0 0 0 0 0 0 0; 	mso-font-charset:1; 	mso-generic-font-family:roman; 	mso-font-format:other; 	mso-font-pitch:variable; 	mso-font-signature:0 0 0 0 0 0;} @font-face 	{font-family:Calibri; 	panose-1:2 15 5 2 2 2 4 3 2 4; 	mso-font-charset:0; 	mso-generic-font-family:swiss; 	mso-font-pitch:variable; 	mso-font-signature:-520092929 1073786111 9 0 415 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-parent:""; 	margin-top:0in; 	margin-right:0in; 	margin-bottom:10.0pt; 	margin-left:0in; 	line-height:115%; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:"Calibri","sans-serif"; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi;} .MsoChpDefault 	{mso-style-type:export-only; 	mso-default-props:yes; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi;} .MsoPapDefault 	{mso-style-type:export-only; 	margin-bottom:10.0pt; 	line-height:115%;} @page Section1 	{size:8.5in 11.0in; 	margin:1.0in 1.0in 1.0in 1.0in; 	mso-header-margin:.5in; 	mso-footer-margin:.5in; 	mso-paper-source:0;} div.Section1 	{page:Section1;} --&gt; &lt;/style&gt;  &lt;/m:defjc&gt;&lt;/m:rmargin&gt;&lt;/m:lmargin&gt;&lt;/m:dispdef&gt;&lt;/m:smallfrac&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-style: italic;"&gt;Here's how I was able to do it:&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;meta content="text/html; charset=utf-8" equiv="Content-Type"&gt;&lt;/meta&gt;&lt;meta content="Word.Document" name="ProgId"&gt;&lt;/meta&gt;&lt;meta content="Microsoft Word 12" name="Generator"&gt;&lt;/meta&gt;&lt;meta content="Microsoft Word 12" name="Originator"&gt;&lt;/meta&gt;&lt;link href="file:///C:%5CUsers%5Cuser%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml" rel="File-List"&gt;&lt;/link&gt;&lt;link href="file:///C:%5CUsers%5Cuser%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx" rel="themeData"&gt;&lt;/link&gt;&lt;link href="file:///C:%5CUsers%5Cuser%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml" rel="colorSchemeMapping"&gt;&lt;/link&gt;    &lt;m:smallfrac val="off"&gt;    &lt;m:dispdef&gt;    &lt;m:lmargin val="0"&gt;    &lt;m:rmargin val="0"&gt;    &lt;m:defjc val="centerGroup"&gt;    &lt;m:wrapindent val="1440"&gt;    &lt;m:intlim val="subSup"&gt;    &lt;m:narylim val="undOvr"&gt;   &lt;/m:narylim&gt;&lt;/m:intlim&gt; &lt;/m:wrapindent&gt;&lt;style&gt; &lt;!--  /* Font Definitions */  @font-face 	{font-family:"Cambria Math"; 	panose-1:0 0 0 0 0 0 0 0 0 0; 	mso-font-charset:1; 	mso-generic-font-family:roman; 	mso-font-format:other; 	mso-font-pitch:variable; 	mso-font-signature:0 0 0 0 0 0;} @font-face 	{font-family:Calibri; 	panose-1:2 15 5 2 2 2 4 3 2 4; 	mso-font-charset:0; 	mso-generic-font-family:swiss; 	mso-font-pitch:variable; 	mso-font-signature:-520092929 1073786111 9 0 415 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-parent:""; 	margin-top:0in; 	margin-right:0in; 	margin-bottom:10.0pt; 	margin-left:0in; 	line-height:115%; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:"Calibri","sans-serif"; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi;} .MsoChpDefault 	{mso-style-type:export-only; 	mso-default-props:yes; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi;} .MsoPapDefault 	{mso-style-type:export-only; 	margin-bottom:10.0pt; 	line-height:115%;} @page Section1 	{size:8.5in 11.0in; 	margin:1.0in 1.0in 1.0in 1.0in; 	mso-header-margin:.5in; 	mso-footer-margin:.5in; 	mso-paper-source:0;} div.Section1 	{page:Section1;} --&gt; &lt;/style&gt;  &lt;/m:defjc&gt;&lt;/m:rmargin&gt;&lt;/m:lmargin&gt;&lt;/m:dispdef&gt;&lt;/m:smallfrac&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-weight: bold;"&gt;&lt;span style="font-size: 130%;"&gt;Step 1: Format the SD card &lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;I followed the &lt;a href="http://www.liquidware.com/shop/show/BB-SD4/Liquidware+BeagleBoot+SD+Card"&gt;instructions here&lt;/a&gt;, and made a formatted &lt;a href="http://www.liquidware.com/shop/show/BB-SD4/Liquidware+BeagleBoot+SD+Card"&gt;BeagleBoard SD card &lt;/a&gt;with the updated OS that include the kernel module to get WIFI working.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;a href="http://4.bp.blogspot.com/_xcCOmNtmhYE/TEyV3iF3z_I/AAAAAAAAAcY/O3dhv1QeURI/s1600/How+to+format+a+Beagleboard+SD+card+with+linux.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5497934026389311474" src="http://4.bp.blogspot.com/_xcCOmNtmhYE/TEyV3iF3z_I/AAAAAAAAAcY/O3dhv1QeURI/s400/How+to+format+a+Beagleboard+SD+card+with+linux.jpg" style="cursor: pointer; display: block; height: 385px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;meta content="text/html; charset=utf-8" equiv="Content-Type"&gt;&lt;/meta&gt;&lt;meta content="Word.Document" name="ProgId"&gt;&lt;/meta&gt;&lt;meta content="Microsoft Word 12" name="Generator"&gt;&lt;/meta&gt;&lt;meta content="Microsoft Word 12" name="Originator"&gt;&lt;/meta&gt;&lt;link href="file:///C:%5CUsers%5Cuser%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml" rel="File-List"&gt;&lt;/link&gt;&lt;link href="file:///C:%5CUsers%5Cuser%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_editdata.mso" rel="Edit-Time-Data"&gt;&lt;/link&gt;&lt;link href="file:///C:%5CUsers%5Cuser%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx" rel="themeData"&gt;&lt;/link&gt;&lt;link href="file:///C:%5CUsers%5Cuser%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml" rel="colorSchemeMapping"&gt;&lt;/link&gt;    &lt;m:smallfrac val="off"&gt;    &lt;m:dispdef&gt;    &lt;m:lmargin val="0"&gt;    &lt;m:rmargin val="0"&gt;    &lt;m:defjc val="centerGroup"&gt;    &lt;m:wrapindent val="1440"&gt;    &lt;m:intlim val="subSup"&gt;    &lt;m:narylim val="undOvr"&gt;   &lt;/m:narylim&gt;&lt;/m:intlim&gt; &lt;/m:wrapindent&gt;&lt;style&gt; &lt;!--  /* Font Definitions */  @font-face 	{font-family:"Cambria Math"; 	panose-1:0 0 0 0 0 0 0 0 0 0; 	mso-font-charset:1; 	mso-generic-font-family:roman; 	mso-font-format:other; 	mso-font-pitch:variable; 	mso-font-signature:0 0 0 0 0 0;} @font-face 	{font-family:Calibri; 	panose-1:2 15 5 2 2 2 4 3 2 4; 	mso-font-charset:0; 	mso-generic-font-family:swiss; 	mso-font-pitch:variable; 	mso-font-signature:-520092929 1073786111 9 0 415 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-parent:""; 	margin-top:0in; 	margin-right:0in; 	margin-bottom:10.0pt; 	margin-left:0in; 	line-height:115%; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:"Calibri","sans-serif"; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi;} .MsoChpDefault 	{mso-style-type:export-only; 	mso-default-props:yes; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:Calibri; 	mso-fareast-theme-font:minor-latin; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi;} .MsoPapDefault 	{mso-style-type:export-only; 	margin-bottom:10.0pt; 	line-height:115%;} @page Section1 	{size:8.5in 11.0in; 	margin:1.0in 1.0in 1.0in 1.0in; 	mso-header-margin:.5in; 	mso-footer-margin:.5in; 	mso-paper-source:0;} div.Section1 	{page:Section1;} --&gt; &lt;/style&gt;  &lt;/m:defjc&gt;&lt;/m:rmargin&gt;&lt;/m:lmargin&gt;&lt;/m:dispdef&gt;&lt;/m:smallfrac&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;For the more hackerishly inclined, here's a direct link to the &lt;a href="http://www.liquidware.com/code/kernel-vfat.tar.bz2"&gt;kernel image&lt;/a&gt; and to the &lt;a href="http://www.liquidware.com/code/rootfs-ext2.tar.bz2"&gt;rootfs image&lt;/a&gt;. &lt;/div&gt;&lt;div class="MsoNormal"&gt;For reference, these links are also at the &lt;a href="http://www.liquidware.com/shop/show/BB-C4/BeagleBoard+C4"&gt;bottom of the BeagleBoard page&lt;/a&gt; :&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;a href="http://1.bp.blogspot.com/_xcCOmNtmhYE/TEyV33czBbI/AAAAAAAAAcg/qGFNwxVi66s/s1600/BeagleBoard+for+sale.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5497934032122611122" src="http://1.bp.blogspot.com/_xcCOmNtmhYE/TEyV33czBbI/AAAAAAAAAcg/qGFNwxVi66s/s400/BeagleBoard+for+sale.jpg" style="cursor: pointer; display: block; height: 339px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-weight: bold;"&gt;&lt;span style="font-size: 130%;"&gt;Step 2: Attach the USB ethernet module&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;I used this USB Wifi module, so at least if you have &lt;a href="http://www.liquidware.com/shop/show/BA-WIFI/Wireless+G+USB+Adapter"&gt;this one, you're guaranteed to work&lt;/a&gt;... &lt;/div&gt;&lt;div class="MsoNormal"&gt;I took it out of the case by cracking it open with a screw driver - not because it added anything, but just because it looks a lot cooler that way.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;a href="http://4.bp.blogspot.com/_xcCOmNtmhYE/TEyV4F55_SI/AAAAAAAAAco/W0yGSwxBa3k/s1600/Beagleboard+wifi+module.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5497934036002798882" src="http://4.bp.blogspot.com/_xcCOmNtmhYE/TEyV4F55_SI/AAAAAAAAAco/W0yGSwxBa3k/s400/Beagleboard+wifi+module.jpg" style="cursor: pointer; display: block; height: 311px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;I plugged it into the small USB hub, but only because I also wanted to plug in a USB mouse and mini keyboard. Otherwise there wasn't really any particularly good reason to use the USB hub - I could have plugged the &lt;a href="http://www.liquidware.com/shop/show/BA-WIFI/Wireless+G+USB+Adapter"&gt;USB wifi module&lt;/a&gt; directly into the &lt;a href="http://www.liquidware.com/shop/show/BB-C4/BeagleBoard+C4"&gt;Beagle Board&lt;/a&gt;.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;a href="http://antipastohw.pbworks.com/Wi-Fi+Setup+Using+Belkin+F5D7050+USB" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5497934042943040178" src="http://1.bp.blogspot.com/_xcCOmNtmhYE/TEyV4fwlqrI/AAAAAAAAAcw/qe5SvNsuqSI/s400/Beagleboard+module+top+down+picture.jpg" style="cursor: pointer; display: block; height: 293px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;o:p&gt; &lt;br /&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: 130%;"&gt;&lt;span style="font-weight: bold;"&gt;Step 3: Configure the wifi settings&lt;/span&gt; &lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;o:p&gt;&lt;span style="font-style: italic;"&gt;There are also some &lt;/span&gt;&lt;a href="http://antipastohw.pbworks.com/Wi-Fi+Setup+Using+Belkin+F5D7050+USB" style="font-style: italic;"&gt;more detailed instructions on the wiki &lt;/a&gt;&lt;span style="font-style: italic;"&gt;for this next step... &lt;/span&gt; &lt;br /&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Once it was plugged in, and Linux was booted up, I edited the file at /etc/wpa_supplicant/wpa-supplicant.conf. This file contains the parameters for the wifi adapter module, and mine looks something like this:&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;code&gt;&lt;/code&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;ap_scan=1&lt;/div&gt;&lt;div class="MsoNormal"&gt;ctrl_interface=/var/run/wpa_supplicant&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;network={&lt;/div&gt;&lt;div class="MsoNormal"&gt;ssid="&amp;lt;your ssid here&amp;gt;"&lt;/div&gt;&lt;div class="MsoNormal"&gt;scan_ssid=0&lt;/div&gt;&lt;div class="MsoNormal"&gt;proto=WPA&lt;/div&gt;&lt;div class="MsoNormal"&gt;key_mgmt=WPA-PSK&lt;/div&gt;&lt;div class="MsoNormal"&gt;psk="&amp;lt;your password here&amp;gt;"&lt;/div&gt;&lt;div class="MsoNormal"&gt;pairwise=TKIP&lt;/div&gt;&lt;div class="MsoNormal"&gt;group=TKIP&lt;/div&gt;&lt;div class="MsoNormal"&gt;}&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="font-weight: bold;"&gt;&lt;span style="font-size: 130%;"&gt;Step 4: Turn on wifi&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;This is the easiest step of all... simply issue this command:&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;$ ifup wlan0&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;And then issue this command:&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;$ ping www.liquidware.com&lt;/div&gt;&lt;div class="MsoNormal"&gt;or&lt;/div&gt;&lt;div class="MsoNormal"&gt;$ ping www.apple.com&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Viola! &lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;PS. If you're super lazy, I've put all the parts together in a &lt;a href="http://www.liquidware.com/shop/show/BB-ULT/Ultimate+Beagle+Gadget+Pack"&gt;big kit here&lt;/a&gt; and &lt;a href="http://www.liquidware.com/shop/show/BA-WIFI/Wireless+G+USB+Adapter"&gt;here&lt;/a&gt;.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;And here's another video showing off Firefox actually browsing on the Beagleboard Linux Gadget:&lt;/div&gt;&lt;div class="MsoNormal" style="text-align: center;"&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/s68pUfsuCp0&amp;amp;hl=en&amp;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/s68pUfsuCp0&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;/div&gt;&lt;div class="MsoNormal"&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/7377057412446264720-4400514744577553586?l=antipastohw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antipastohw.blogspot.com/feeds/4400514744577553586/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7377057412446264720&amp;postID=4400514744577553586' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/4400514744577553586'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/4400514744577553586'/><link rel='alternate' type='text/html' href='http://antipastohw.blogspot.com/2010/07/how-to-make-linux-beagleboard-gadget.html' title='How to make a Linux Beagleboard Gadget Wifi-enabled'/><author><name>Matt</name><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/_xcCOmNtmhYE/TEyV3iF3z_I/AAAAAAAAAcY/O3dhv1QeURI/s72-c/How+to+format+a+Beagleboard+SD+card+with+linux.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7377057412446264720.post-2164465612737227311</id><published>2010-07-23T22:53:00.000-07:00</published><updated>2010-07-24T19:57:45.860-07:00</updated><title type='text'>Open Source Hardware Summit: OSHW Definition &amp; License</title><content type='html'>&lt;span style="font-size:85%;"&gt;Like so many things in the Open Source World, concepts are defined by the community, the group, and the practitioners of a concept.&lt;br /&gt;&lt;br /&gt;Open Source Hardware is an ideal, that many people have come to shape and grow.&lt;br /&gt;&lt;br /&gt;Just recently, there's been a huge amount of energy put into building a common set of terms about what "Open Source Hardware" is, so that a license can be built. There have been fits and starts over the years, and even a recent attempt to try to find a way for the Free Software Foundation, and the Creative Commons to extend their licenses to include hardware... but they were ultimately unsuccessful.&lt;br /&gt;&lt;br /&gt;Part of the reason they weren't successful, is because there's something kind of ironic with the idea of creating a license, which is usually meant to protect *against* something, for a set of schematic files which you're intentionally *giving away*.&lt;br /&gt;&lt;br /&gt;But!&lt;br /&gt;&lt;br /&gt;The first step, of course, is to at least agree about what Open Source Hardware actually is, because it's not that straight forward. So on September 23rd, later this year, a bunch of guys I know from Boston are going to head down to NYC to attend:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.openhardwaresummit.org/"&gt;The Open Source Hardware Summit&lt;/a&gt;&lt;br /&gt;World Fair Grounds&lt;br /&gt;47-01 111th Street&lt;br /&gt;Queens, NY 11368&lt;br /&gt;&lt;br /&gt;And there, &lt;a href="http://freedomdefined.org/Definition"&gt;we'll beat up the emerging definition, which is listed here at FreedomDefined.org.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_pGsJFsc5Buc/TEpJ0S-f-DI/AAAAAAAAAn0/4GgN_a6v4mU/s1600/Boston+to+New+York.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 284px;" src="http://1.bp.blogspot.com/_pGsJFsc5Buc/TEpJ0S-f-DI/AAAAAAAAAn0/4GgN_a6v4mU/s400/Boston+to+New+York.jpg" alt="" id="BLOGGER_PHOTO_ID_5497287457955117106" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;September 23rd... if you want to car pool with me down to NYC, just let me know, Justin and I will be there...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&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/7377057412446264720-2164465612737227311?l=antipastohw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antipastohw.blogspot.com/feeds/2164465612737227311/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7377057412446264720&amp;postID=2164465612737227311' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/2164465612737227311'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/2164465612737227311'/><link rel='alternate' type='text/html' href='http://antipastohw.blogspot.com/2010/07/open-source-hardware-summit-oshw.html' title='Open Source Hardware Summit: OSHW Definition &amp; License'/><author><name>Matt</name><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://1.bp.blogspot.com/_pGsJFsc5Buc/TEpJ0S-f-DI/AAAAAAAAAn0/4GgN_a6v4mU/s72-c/Boston+to+New+York.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7377057412446264720.post-5221985980887074709</id><published>2010-07-23T15:40:00.001-07:00</published><updated>2010-07-23T16:06:46.135-07:00</updated><title type='text'>Help port R to the BeagleBoard / Angstrom for $1,000</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;Ok... I've been fooling around with the BeagleBoard for some time now, and I have a couple observations to make. First of all, it's crazy powerful. You can do a lot more than you'd expect, since the processor is so fast. I mean, seriously, it's faster than most Android handsets out there. So every app that could run on an Android phone can run on the BeagleBoard (in theory).&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The BeagleBoard has full Linux programming libraries, Makefile, gcc, perl, you name it, built in, and that makes programming a cinch in most cases. However.... some of my favorite applications on Linux are a little harder than others to port to the BeagleBoard. &lt;a href="http://www.r-project.org/"&gt;Including R, for instance&lt;/a&gt;. R is a statistical programming package that a lot of people use in the&lt;a href="http://www.nsa.gov/"&gt; government and military and NSA&lt;/a&gt; to do advanced &lt;a href="http://www.goarmy.com/JobDetail.do?id=174"&gt;signal and data processing&lt;/a&gt;. I've been learning it in my spare time, and I think it would be really cool to have a portable version of it on a handheld.&lt;br /&gt;&lt;br /&gt;I tried to get it running on my BeagleBoard, but alas, I'm not much of a software guy (I'm much more hardware). I failed to get past some of the java lib dependencies, and don't know how to install those on Angstrom without totally recompiling everything. I was over at MIT this past week, just reading in the QA stacks library (I sneak in from time to time and just camp out there for hours with Chris), and we started talking about how whether it was doable. Chris bet me $500 that I could do it. Then I joked, well I'll bet $500 that I can't.&lt;br /&gt;&lt;br /&gt;$500 + $500 = $1,000&lt;br /&gt;&lt;br /&gt;I would pay $1,000 in real dollars (not gift certificates and useless things like that, I mean actual cash) to the first person who can demonstrate it running, and provide links to either a tar, or zip, or image, so I can get it up and running on my own too. The solution has to be open source, and publicly shareable.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_pGsJFsc5Buc/TEoeUfd_KLI/AAAAAAAAAns/hDS21nQ3Gjs/s1600/R+ported+toBeagleBoard.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 228px;" src="http://1.bp.blogspot.com/_pGsJFsc5Buc/TEoeUfd_KLI/AAAAAAAAAns/hDS21nQ3Gjs/s400/R+ported+toBeagleBoard.jpg" alt="" id="BLOGGER_PHOTO_ID_5497239632552601778" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Personally, I think it's impossible. That's why I'm saying $1,000 and not like $200 or something like that.  But even I'm somewhat realistic, so here's a list of "anti-conditions":&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;R has a lot of built in libraries that do graphing, visuals, etc. it doesn't need to do any of that stuff&lt;/li&gt;&lt;li&gt;Command line only is fine, no need for to port the GUI, I don't even know if that's possible&lt;/li&gt;&lt;li&gt;Obviously it should run whatever can be run within the memory limits of the BeagleBoard in RAM, and that will probably mean some of the base packages won't auto-load&lt;/li&gt;&lt;li&gt;It should at least have a basic R command line, and be able to instantiate arrays and user defined functions, etc.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;I don't really want to call this a "contest" because it's not, it's just a $1,000 check that I'll write if someone can help me port R to the BeagleBoard... if it's even possible.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7377057412446264720-5221985980887074709?l=antipastohw.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://antipastohw.blogspot.com/feeds/5221985980887074709/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7377057412446264720&amp;postID=5221985980887074709' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/5221985980887074709'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7377057412446264720/posts/default/5221985980887074709'/><link rel='alternate' type='text/html' href='http://antipastohw.blogspot.com/2010/07/help-port-r-to-beagleboard-angstrom-for.html' title='Help port R to the BeagleBoard / Angstrom for $1,000'/><author><name>Matt</name><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://1.bp.blogspot.com/_pGsJFsc5Buc/TEoeUfd_KLI/AAAAAAAAAns/hDS21nQ3Gjs/s72-c/R+ported+toBeagleBoard.jpg' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7377057412446264720.post-7466599234954356251</id><published>2010-07-22T19:50:00.000-07:00</published><updated>2010-07-22T20:15:00.685-07:00</updated><title type='text'>Why industrial control and machinery needs open source</title><content type='html'>&lt;span style="font-size:85%;"&gt;I was going to write up a blog about how to use the &lt;a href="http://www.liquidware.com/shop/show/BB-C4/BeagleBoard+C4"&gt;Beagle Board &lt;/a&gt;&lt;a href="http://www.liquidware.com/shop/show/BB-ULT/Ultimate+Beagle+Gadget+Pack"&gt;gadget &lt;/a&gt;with the &lt;a href="http://www.liquidware.com/shop/show/BA-WIFI/Wireless+G+USB+Adapter"&gt;new wifi module &lt;/a&gt;that will, chris, and I have gotten up and running. But then I started browsing around the web for &lt;a href="http://osics.sourceforge.net/"&gt;open source industrial design &lt;/a&gt;projects (&lt;a href="http://en.wikipedia.org/wiki/Industrial_control_systems"&gt;aka ISC's&lt;/a&gt;) to demonstrate on it, and ran into something quite interesting...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_xcCOmNtmhYE/TEkDuzYIR5I/AAAAAAAAAbo/o-jIJoDSdeM/s1600/stuxnet.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 272px;" src="http://3.bp.blogspot.com/_xcCOmNtmhYE/TEkDuzYIR5I/AAAAAAAAAbo/o-jIJoDSdeM/s400/stuxnet.jpg" alt="" id="BLOGGER_PHOTO_ID_5496928922782680978" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;Dun dun dun....&lt;br /&gt;&lt;br /&gt;So just to get this straight... I'm looking for open source industrial design control systems, and within minutes, I find an article that is the perfect example of why industrial control systems need more open source? Yup.&lt;br /&gt;&lt;br /&gt;What is Stuxnet?&lt;br /&gt;&lt;br /&gt;It's a &lt;a href="http://blogs.technet.com/b/mmpc/archive/2010/07/16/the-stuxnet-sting.aspx"&gt;pretty ridiculous virus &lt;/a&gt;that someone wrote to infect engineering systems and control systems designed by Siemens. This is no joke, and I'm not trying to be coy, but every once in a while, I can appreciate well written code. stuxnet finds a way to bootstrap into the auto-read-from-USB code of Siemens' engineering terminals, and then spreads. Brilliant!&lt;br /&gt;&lt;br /&gt;Here's a little chart from technet that shows how quickly stuxnet spread:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_xcCOmNtmhYE/TEkF2Kp21kI/AAAAAAAAAbw/s1HlbE6Vidc/s1600/stuxnet+spread.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 232px;" src="http://2.bp.blogspot.com/_xcCOmNtmhYE/TEkF2Kp21kI/AAAAAAAAAbw/s1HlbE6Vidc/s400/stuxnet+spread.jpg" alt="" id="BLOGGER_PHOTO_ID_5496931248313390658" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;There's one problem, though...&lt;br /&gt;&lt;br /&gt;Anyone who ever programmed an open source project would have known that this is a ridiculous thing to do. I mean, you can't seriously expect to just run the contents of an inserted USB drive - you have to at least do some kind of checks on it.&lt;br /&gt;&lt;br /&gt;Alas, Siemens' SCADA, or "supervisory control and data acquisition" is still under threat, and so I figured I'd so some research on what SCADA does.&lt;br /&gt;&lt;br /&gt;Here's my best attempt, &lt;a href="http://www.automation.siemens.com/mcms/human-machine-interface/en/visualizatio
