<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>adafruit industries blog &#187; code</title>
	<atom:link href="http://www.adafruit.com/blog/category/code/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.adafruit.com/blog</link>
	<description>electronics, open source hardware, hacking and more...</description>
	<lastBuildDate>Wed, 19 Jun 2013 20:12:39 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Save Your Skin by Gazira Babeli</title>
		<link>http://www.adafruit.com/blog/2013/06/10/save-your-skin-by-gazira-babeli/</link>
		<comments>http://www.adafruit.com/blog/2013/06/10/save-your-skin-by-gazira-babeli/#comments</comments>
		<pubDate>Mon, 10 Jun 2013 06:00:53 +0000</pubDate>
		<dc:creator>jeff</dc:creator>
				<category><![CDATA[art]]></category>
		<category><![CDATA[code]]></category>

		<guid isPermaLink="false">http://www.adafruit.com/blog/?p=66099</guid>
		<description><![CDATA[&#8220;Stolen skins, scripted environment, November 2007&#8243;: &#8220;&#8230; In Save Your Skin Gaz has created a space where the skins of avatars are being put on display. Unlike objects like a chair, within Second Life an avatars skin &#8211; which in a very profound way designates ones identity &#8211; cannot be modified, copied or sold. Users [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://gazirababeli.com/saveyourskin.php"><img src="http://www.adafruit.com/adablog/wp-content/uploads/2013/05/Save_Your_Skin-600x410.jpg" alt="Save_Your_Skin" width="600" height="410" class="alignright size-large wp-image-66100" /></a></p>
<p>&#8220;Stolen skins, scripted environment, November 2007&#8243;:</p>
<blockquote><p>
&#8220;&#8230; In Save Your Skin Gaz has created a space where the skins of avatars are being put on display. Unlike objects like a chair, within Second Life an avatars skin &#8211; which in a very profound way designates ones identity &#8211; cannot be modified, copied or sold. Users have to buy a new skin every time they want to change it. In this work Gaz not only critiques this simulation of the open market ideology operating worldwide. But, at the same time, provides more freedom to the identities.&#8221;</p></blockquote>
<p>Check out the <a href="http://gazirababeli.com/saveyourskin.php">website for a video preview</a>.</p>
<div id='linker_widget' class='contextly-widget'></div>]]></content:encoded>
			<wfw:commentRss>http://www.adafruit.com/adablog/?feed=rss2&#038;p=66099</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The SKOR Codex: Preserving Digital Media in Ink on Paper</title>
		<link>http://www.adafruit.com/blog/2013/06/10/the-skor-codex/</link>
		<comments>http://www.adafruit.com/blog/2013/06/10/the-skor-codex/#comments</comments>
		<pubDate>Mon, 10 Jun 2013 04:01:20 +0000</pubDate>
		<dc:creator>jeff</dc:creator>
				<category><![CDATA[art]]></category>
		<category><![CDATA[code]]></category>

		<guid isPermaLink="false">http://www.adafruit.com/blog/?p=66064</guid>
		<description><![CDATA[From the press release: On the chance that someone will be out there, La Société Anonyme has approved the placement of 8 books on 8 locations on Earth. The book, called The SKOR Codex was placed on Thursday (July 12, 2012) aboard the first of eight locations to host the portrait of the diversity of [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://societeanonyme.la/"><img src="http://www.adafruit.com/adablog/wp-content/uploads/2013/06/codex-books_opened-600x337.jpg" alt="codex-books_opened" width="600" height="337" class="alignright size-large wp-image-66076" /></a></p>
<p>From the press release:</p>
<blockquote><p>On the chance that someone will be out there, La Société Anonyme has approved the placement of 8 books on 8 locations on Earth. The book, called The SKOR Codex was placed on Thursday (July 12, 2012) aboard the first of eight locations to host the portrait of the diversity of life and culture at the Foundation for Art and Public Domain (SKOR). The 1156 gram book contains greetings from the SKOR staff in 4 languages, samples of artworks from different artists and eras, and field recordings of the SKOR premises. The Codex contains binary information that an advanced technological civilization could convert into diagrams, pictures and sounds, including a message from SKOR managing director Tati Freeke-Suwarganda.</p></blockquote>
<p><a href="http://societeanonyme.la/"><img src="http://www.adafruit.com/adablog/wp-content/uploads/2013/05/codex-open-4-600x400.jpg" alt="codex-open-4" width="600" height="400" class="alignright size-large wp-image-66065" /></a></p>
<blockquote><p>Messages in the record were designed to enable possible decoding by future civilizations who might encounter the book in hundreds of years, hence the integration of some pictures of 21st century SKOR. &#8220;The book will be encountered and decoded only if there are advanced civilizations on earth,&#8221; said La Société Anonyme. &#8220;But, as the beautiful message from managing director Tati Freeke-Suwarganda and web curator Annet Dekker indicate,&#8221; Société Anonyme added, &#8220;the launching of this &#8216;bottle&#8217; into the cosmic &#8216;ocean&#8217; says something very hopeful about art.&#8221;</p></blockquote>
<p>The book is available in <a href="http://societeanonyme.la/">PDF form along with more information at the official site of La Société Anonyme</a>.</p>
<div id='linker_widget' class='contextly-widget'></div>]]></content:encoded>
			<wfw:commentRss>http://www.adafruit.com/adablog/?feed=rss2&#038;p=66064</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tetris Printer Algorithm by Michael Birken</title>
		<link>http://www.adafruit.com/blog/2013/06/04/tetris-printer-algorithm-by-michael-birken/</link>
		<comments>http://www.adafruit.com/blog/2013/06/04/tetris-printer-algorithm-by-michael-birken/#comments</comments>
		<pubDate>Tue, 04 Jun 2013 14:54:12 +0000</pubDate>
		<dc:creator>jeff</dc:creator>
				<category><![CDATA[code]]></category>

		<guid isPermaLink="false">http://www.adafruit.com/blog/?p=66327</guid>
		<description><![CDATA[Very nice repurposing of classic 8-bit Tetris by Michael Birken: By rotating, positioning and dropping a predetermined sequence of pieces, the Tetris Printer Algorithm exploits the mechanics of Tetris to generate arbitrary bitmap images. Check out the full post here including source code!]]></description>
				<content:encoded><![CDATA[<p><iframe width="600" height="450" src="http://www.youtube.com/embed/PJkHwulsac4" frameborder="0" allowfullscreen></iframe></p>
<p>Very nice repurposing of classic 8-bit Tetris by <a href="http://meatfighter.com/tetrisprinteralgorithm/">Michael Birken</a>:</p>
<blockquote><p>By rotating, positioning and dropping a predetermined sequence of pieces, the Tetris<br />
Printer Algorithm exploits the mechanics of Tetris to generate arbitrary bitmap<br />
images.</p></blockquote>
<p>Check out the <a href="http://meatfighter.com/tetrisprinteralgorithm/">full post here</a> including source code!</p>
<div id='linker_widget' class='contextly-widget'></div>]]></content:encoded>
			<wfw:commentRss>http://www.adafruit.com/adablog/?feed=rss2&#038;p=66327</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Realtime Data Plotting in Python</title>
		<link>http://www.adafruit.com/blog/2013/05/17/realtime-data-plotting-in-python/</link>
		<comments>http://www.adafruit.com/blog/2013/05/17/realtime-data-plotting-in-python/#comments</comments>
		<pubDate>Fri, 17 May 2013 14:13:32 +0000</pubDate>
		<dc:creator>adafruit</dc:creator>
				<category><![CDATA[code]]></category>

		<guid isPermaLink="false">http://www.adafruit.com/blog/?p=64299</guid>
		<description><![CDATA[Realtime Data Plotting in Python. Scott writes - I love using python for handing data. Displaying it isn&#8217;t always as easy. Python fast to write, and numpy, scipy, and matplotlib are an incredible combination. I love matplotlib for displaying data and use it all the time, but when it comes to realtime data visualization, matplotlib [...]]]></description>
				<content:encoded><![CDATA[<p><img src="http://www.adafruit.com/adablog/wp-content/uploads/2013/05/f.jpg" height="202" width="600" border="0" hspace="4" vspace="4" alt="F" /></p>
<p><a href="http://www.swharden.com/blog/2013-05-08-realtime-data-plotting-in-python/">Realtime Data Plotting in Python</a>. Scott writes -</p>
<blockquote><p>
I love using python for handing data. Displaying it isn&rsquo;t always as easy. Python fast to write, and numpy, scipy, and matplotlib are an incredible combination. I love matplotlib for displaying data and use it all the time, but when it comes to realtime data visualization, matplotlib (admittedly) falls behind. Imagine trying to plot sound waves in real time. Matplotlib simply can&rsquo;t handle it. I&rsquo;ve recently been making progress toward this end with PyQwt with the Python X,Y distribution. It is a cross-platform solution which should perform identically on Windows, Linux, and MacOS. Here&rsquo;s an example of what it looks like plotting some dummy data (a sine wave) being transformed with numpy.roll().
</p></blockquote>
<div id='linker_widget' class='contextly-widget'></div>]]></content:encoded>
			<wfw:commentRss>http://www.adafruit.com/adablog/?feed=rss2&#038;p=64299</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Interfacing an I2C GPIO expander (MCP23017) to the Raspberry Pi using C++ (SYSFS)</title>
		<link>http://www.adafruit.com/blog/2013/04/05/interfacing-an-i2c-gpio-expander-mcp23017-to-the-raspberry-pi-using-c-sysfs/</link>
		<comments>http://www.adafruit.com/blog/2013/04/05/interfacing-an-i2c-gpio-expander-mcp23017-to-the-raspberry-pi-using-c-sysfs/#comments</comments>
		<pubDate>Fri, 05 Apr 2013 15:00:33 +0000</pubDate>
		<dc:creator>jeff</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[Raspberry Pi]]></category>

		<guid isPermaLink="false">http://www.adafruit.com/blog/?p=59139</guid>
		<description><![CDATA[We like Python but here are some examples for an I2C port expander in C++: The I2C bus is a two wire bus developed by Phillips/NXP (4-wire if you want to include power and ground), that is used to connect a single master device to up to 120+ slave peripheral devices. The master device is [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://hertaville.com/2013/04/01/interfacing-an-i2c-gpio-expander-mcp23017-to-the-raspberry-pi-using-c/"><img src="http://www.adafruit.com/adablog/wp-content/uploads/2013/04/mcp23017test_bb-600x458.png" alt="" title="mcp23017test_bb" width="600" height="458" class="alignright size-large wp-image-59140" /></a></p>
<p><a href="http://hertaville.com/2013/04/01/interfacing-an-i2c-gpio-expander-mcp23017-to-the-raspberry-pi-using-c/">We like Python but here are some examples for an I2C port expander in C++</a>:</p>
<blockquote><p>The I2C bus is a two wire bus developed by Phillips/NXP (4-wire if you want to include power and ground), that is used to connect a single master device to up to 120+ slave peripheral devices. The master device is typically a microcontroller, and the slave device(s) is/are typically peripheral chips that perform special functions such as GPIO expanders, analog to digital converters, digital to analog converters, real-time clocks, eeproms and many more.</p>
<hr />
<p>Because one could have multiple slave devices on the I2C bus, each slave must have a distinct device address. So for example to write a byte ‘a&rsquo; to a register ‘b&rsquo; located in  a slave device with a device address ‘c&rsquo;, you would have to send three bytes ‘c&rsquo;, ‘b&rsquo; and ‘a&rsquo; in that order. You also have to make sure that  you assert the Read/Write bit found in the same byte as the device address ( byte ‘c&rsquo;) for either read or write operation.
</p></blockquote>
<p><a href="http://hertaville.com/2013/04/01/interfacing-an-i2c-gpio-expander-mcp23017-to-the-raspberry-pi-using-c/">Read more</a></p>
<hr />
<p><a href="http://learn.adafruit.com/mcp230xx-gpio-expander-on-the-raspberry-pi">Over at the adafruit learning system, we have our own MCP230xx GPIO Expander on the Raspberry Pi tutorial</a>:</p>
<p><a href="http://learn.adafruit.com/mcp230xx-gpio-expander-on-the-raspberry-pi"><img src="http://www.adafruit.com/adablog/wp-content/uploads/2013/04/MG_0481-600x399.jpg" alt="" title="_MG_0481" width="600" height="399" class="alignright size-large wp-image-59254" /></a></p>
<blockquote><p>While the Raspberry Pi packs and awful lot of punch for the price, and it&#8217;s fairly flexible where HW expandability is concerned, there are situations where you might want a bit more basic digital IO.  Thankfully, it&#8217;s an easy problem to solve with an I2C-enabled device like the MCP23008 (for an extra 8 GPIO pins) or the MCP23017 (for an extra 16 GPIO pins).  This tutorial will show you how you can get up and running quickly with either of these chips.</p></blockquote>
<p><a href="http://learn.adafruit.com/mcp230xx-gpio-expander-on-the-raspberry-pi">Check it out here!</a> </p>
<hr />
<a href="https://www.adafruit.com/products/998"><img src="http://www.adafruit.com/ThingsThatChange/freepi.jpeg" height="57" width="97" border="0" align="left" hspace="4" vspace="4" alt="998" /></a>Each Friday is PiDay here at Adafruit, be sure to check out our <a href="http://www.adafruit.com/blog/category/raspberry-pi/">posts,</a> <a href="http://learn.adafruit.com/category/raspberry-pi">tutorials</a> and new <a href="https://www.adafruit.com/raspberrypi">Raspberry Pi related products.</a> Have you tried the new <a href="http://learn.adafruit.com/adafruit-raspberry-pi-educational-linux-distro">&#8220;Adafruit Raspberry Pi Educational Linux Distro&#8221;</a>? It&#8217;s our tweaked distribution for teaching electronics using the Raspberry Pi. But wait, there&#8217;s more! <a href="http://learn.adafruit.com/webide/">Try our new Raspberry Pi WebIDE!</a> The easiest way to learn programming on a Raspberry Pi.</p>
<p>We now have <a href="https://www.adafruit.com/products/998">Raspberry Pi Model B with 512MB RAM</a> in stock and shipping now!</p>
<div id='linker_widget' class='contextly-widget'></div>]]></content:encoded>
			<wfw:commentRss>http://www.adafruit.com/adablog/?feed=rss2&#038;p=59139</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Codebending: Super Mario Spacetime Organ</title>
		<link>http://www.adafruit.com/blog/2013/03/25/codebending-super-mario-spacetime-organ/</link>
		<comments>http://www.adafruit.com/blog/2013/03/25/codebending-super-mario-spacetime-organ/#comments</comments>
		<pubDate>Mon, 25 Mar 2013 08:01:00 +0000</pubDate>
		<dc:creator>johngineer</dc:creator>
				<category><![CDATA[art]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[EE]]></category>

		<guid isPermaLink="false">http://www.adafruit.com/blog/?p=58022</guid>
		<description><![CDATA[Last year, my friend Chris Novello closed the 2012 Open Hardware Summit with a demo similar to this performance &#8212; remixing SMB in ways nobody had ever thought of before &#8212; to wild and well-deserved applause, I might add. Here he is doing it again! He writes: In this video, I directly manipulate the RAM [...]]]></description>
				<content:encoded><![CDATA[<p><iframe src="http://player.vimeo.com/video/49142543?color=6bc456" width="600" height="338" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe></p>
<p>Last year, my friend <a href="http://www.paperkettle.com/home/">Chris Novello</a> closed the 2012 Open Hardware Summit with a demo similar to this performance &#8212; remixing SMB in ways nobody had ever thought of before &#8212; to wild and well-deserved applause, I might add. Here he is doing it again! <a href="http://vimeo.com/49142543">He writes</a>:</p>
<blockquote><p>
In this video, I directly manipulate the RAM state of Nintendo&#8217;s Super Mario Brothers to transform it from a game into a strange instrument.</p>
<p>First, I play the game as it is traditionally played.. but I have access to the game&#8217;s memory, so I change Mario&#8217;s Y position using the Madrona Labs Soundplane (a surface that sends data to the computer about where it is being touched). This is how I hover Mario during the playthrough.</p>
<p>Also, before I start playing, I flip a switch on illucia that I assigned to trigger recording — not video, but actually recording the entire memory state of the NES for each game frame.</p>
<p>Think about it &#8211; Mario&#8217;s universe is held in RAM, which the NES uses to draw his world for each frame of the game. By recording the entire state of the NES memory for every frame, I&#8217;m able to go back to any moment in Mario&#8217;s life.</p>
<p>So then I use the X-axis of the Soundplane to sweep through the timeline of Mario&#8217;s universe.</p>
<p>Not only that, but the Soundplane is multitouch, so I use a second finger to specify start and endpoints in a playback loop. Technically, this is similar to the way samplers and granular synths work in audio.. but with the entire memory state of the NES. Conceptually, it is like Super Mario meets Groundhog Day. Mario&#8217;s universe computer/time machine gets caught in hellish loops.</p>
<p>Then I start using illucia to send alien data into various other places in Mario&#8217;s universe, which makes for all sorts of audiovisual insanity amidst the spacetime loops. This is sort of like circuit bending, but in a protected sandbox &#8211; at any point I can revert back to the clean recording of RAM states (aka moments in Mario&#8217;s universe).</p>
<p>I then try to go back to &#8220;playing&#8221; the game, watching Mario navigate a melting world of glitched-out ephemera. I then push things into full on glitch insanity. I use a pair of rubberband mallets on the Soundplane to jump around in Mario&#8217;s universe while leaving illucia to send a heavy stream of alien data into Mario&#8217;s RAM state. I eventually (accidentally/luckily) land at a place that triggers the game over music, and end the take.</p></blockquote>
<div id='linker_widget' class='contextly-widget'></div>]]></content:encoded>
			<wfw:commentRss>http://www.adafruit.com/adablog/?feed=rss2&#038;p=58022</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Game for the Adafruit TIMESQUARE Watch Kit!</title>
		<link>http://www.adafruit.com/blog/2013/03/19/a-game-for-the-adafruit-timesquare-watch-kit/</link>
		<comments>http://www.adafruit.com/blog/2013/03/19/a-game-for-the-adafruit-timesquare-watch-kit/#comments</comments>
		<pubDate>Tue, 19 Mar 2013 04:00:00 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[clocks & watches]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[community]]></category>

		<guid isPermaLink="false">http://www.adafruit.com/blog/?p=57282</guid>
		<description><![CDATA[Check out this cool game project created using the Adafruit TIMESQUARE watch kit and shared on the Adafruit Support Forums: The Timesquare watch is a great little project. Just to experiment with it, I made a simple bat and ball game that runs on the watch. Here&#8217;s the code, forked from the Adafruit Timesquare repo. [...]]]></description>
				<content:encoded><![CDATA[<p><iframe width="600" height="450" src="http://www.youtube.com/embed/Aqt-_hibRpY?rel=0" frameborder="0" allowfullscreen></iframe></p>
<p>Check out this cool game project created using the Adafruit TIMESQUARE watch kit and shared on the <a href="http://forums.adafruit.com/viewtopic.php?f=41&#038;t=38095#p187993">Adafruit Support Forums</a>:
</p>
<blockquote><p>The Timesquare watch is a great little project. Just to experiment with it, I made a simple bat and ball game that runs on the watch.</p>
<p>Here&#8217;s the code, forked from the <a href="https://github.com/ruscoe/TIMESQUARE-Watch/">Adafruit Timesquare repo</a>.</p>
<p>The specific file for the game screen can be found <a href="https://github.com/ruscoe/TIMESQUARE-Watch/blob/master/examples/Watch/BatBall.ino">here</a>.</p>
<p>And here&#8217;s a YouTube <a href="http://www.youtube.com/watch?v=Aqt-_hibRpY">video of the game</a>.</p>
<p>This was mostly just to see what I could do, but hopefully somebody finds it useful/fun.</p></blockquote>
<p><a href="http://forums.adafruit.com/viewtopic.php?f=41&#038;t=38095#p187993">Read more.</a></p>
<hr />
<p><h2>Featured Adafruit Product!</h2>
<p>
<img src="http://www.adafruit.com/adablog/wp-content/uploads/2013/03/1223.png" alt="1223" title="1223.png" border="0" width="400" height="308" /></p>
<p><a href="https://www.adafruit.com/products/1223">TIMESQUARE DIY Watch Kit &#8211; Tangerine Display Matrix</a>: Show up stylish AND on time to any event with this awesome looking DIY watch. We have a few watch kits here at Adafruit but we finally have one that looks good and fits well, even for ladies and kids and others with smaller wrists and hands. Its got a 8&#215;8 bit matrix display and a repurposed silicone watch band for a professional look. (<a href="https://www.adafruit.com/products/1223">read more</a>)</p>
<div id='linker_widget' class='contextly-widget'></div>]]></content:encoded>
			<wfw:commentRss>http://www.adafruit.com/adablog/?feed=rss2&#038;p=57282</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>G-Code and M-Code Grand Master List #3dthursday</title>
		<link>http://www.adafruit.com/blog/2013/03/14/g-code-and-m-code-grand-master-list-3dthursday/</link>
		<comments>http://www.adafruit.com/blog/2013/03/14/g-code-and-m-code-grand-master-list-3dthursday/#comments</comments>
		<pubDate>Thu, 14 Mar 2013 17:00:06 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[3D printing]]></category>
		<category><![CDATA[cnc]]></category>
		<category><![CDATA[code]]></category>

		<guid isPermaLink="false">http://www.adafruit.com/blog/?p=57038</guid>
		<description><![CDATA[Here&#8217;s a great resource for those messing with DIY 3D printers relying on M-Codes and G-Codes from Ed Nisley. Here&#8217;s a combined and sorted list of all the G-Code and M-Code commands for (as many of) the Free Software G-Code interpreters (that I could find) relevant to DIY 3D printing. With any luck, I now [...]]]></description>
				<content:encoded><![CDATA[<p>Here&#8217;s a great resource for those messing with DIY 3D printers relying on M-Codes and G-Codes from <a href="http://softsolder.com/2013/03/14/g-code-and-m-code-grand-master-list/">Ed Nisley</a>.
</p>
<blockquote><p>Here&rsquo;s a combined and sorted list of all the G-Code and M-Code commands for (as many of) the Free Software G-Code interpreters (that I could find) relevant to DIY 3D printing. With any luck, I now know:</p>
<p>What a given command does<br />
What other interpreters do with that command<br />
The short descriptions come from tables on the original source pages, perhaps with a bit of massaging to make things more uniform; I did as little rearranging and editing as possible.</p>
<p>If you see anything wrong or have another G-Code interpreter I should include, let me know…</p></blockquote>
<p><a href="http://softsolder.com/2013/03/14/g-code-and-m-code-grand-master-list/">Click here to read the entire (massive) list!</a></p>
<hr />
<p><a href="http://www.adafruit.com/blog/category/3d-printing/"><img src="http://www.adafruit.com/adablog/wp-content/uploads/2012/10/649-1.jpg" height="102" width="133" border="0" align="left" hspace="4" vspace="4" alt="649-1" /></a><br />
Every Thursday is <a href="http://www.adafruit.com/blog/category/3d-printing/">#3dthursday</a> here at Adafruit! The DIY 3D printing community has passion and dedication for making solid objects from digital models. Recently, we have noticed electronics projects integrated with 3D printed enclosures, brackets, and sculptures, so each Thursday we celebrate and highlight these bold pioneers!</p>
<p>Have you considered building a 3D project around an <a href="http://www.adafruit.com/category/17">Arduino</a> or other microcontroller? How about printing a bracket to mount your <a href="http://www.adafruit.com/category/105">Raspberry Pi</a> to the back of your HD monitor? And don&#8217;t forget the countless <a href="http://www.adafruit.com/category/37">LED projects</a> that are possible when you are modeling your projects in 3D!</p>
<p>The <a href="http://learn.adafruit.com">Adafruit Learning System</a> has dozens of great tools to get you well on your way to creating incredible works of engineering, interactive art, and design with your 3D printer! If you&#8217;ve made a cool project that combines 3D printing and electronics, be sure to let us know, and we&#8217;ll <a href="http://www.adafruit.com/blog/category/3d-printing/">feature</a> it here!</p>
<div id='linker_widget' class='contextly-widget'></div>]]></content:encoded>
			<wfw:commentRss>http://www.adafruit.com/adablog/?feed=rss2&#038;p=57038</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tony Sherwood joins Adafruit &#8211; Senior Web Developer</title>
		<link>http://www.adafruit.com/blog/2013/03/14/tony-sherwood-joins-adafruit-senior-web-developer/</link>
		<comments>http://www.adafruit.com/blog/2013/03/14/tony-sherwood-joins-adafruit-senior-web-developer/#comments</comments>
		<pubDate>Thu, 14 Mar 2013 14:45:23 +0000</pubDate>
		<dc:creator>adafruit</dc:creator>
				<category><![CDATA[code]]></category>

		<guid isPermaLink="false">http://www.adafruit.com/blog/?p=56978</guid>
		<description><![CDATA[Hi everyone, my name is Tony Sherwood, and I love that I&#8217;m now joining Adafruit as the Senior Web Developer! This place is pretty rad. Three years ago, I was living in Springfield, MO, where I started an art gallery slash hackerspace (http://www.squidfoo.com). I met some folks there, including Caleb Kraft, editor of HackADay, which [...]]]></description>
				<content:encoded><![CDATA[<p><img src="http://www.adafruit.com/adablog/wp-content/uploads/2013/03/461000_10151039238226555_1198622239_o.jpg" height="450" width="600" border="0" hspace="4" vspace="4" alt="461000 10151039238226555 1198622239 O" /></p>
<blockquote><p>
Hi everyone, my name is Tony Sherwood, and I love that I&#8217;m now joining Adafruit as the Senior Web Developer!  This place is pretty rad.</p>
<p>Three years ago, I was living in Springfield, MO, where I started an art gallery slash hackerspace (<a href="http://www.squidfoo.com">http://www.squidfoo.com</a>).  I met some folks there, including Caleb Kraft, editor of HackADay, which led to me moving out to Brooklyn to work for MakerBot.  I worked there for a little over a year, helped Team HackADay win the Red Bull Creation Challenge 2012, spent a brief time encouraging urban food production with WindowFarms, and now I&#8217;m here, where I can help democratize electrical engineering!</p>
<p>Whenever I&#8217;m not here, I&#8217;m usually at home with my girlfriend (Leia) and 5 year-old son (Alex) either drawing or building things with Legos.  Our next project will be a fully functional half-scale arcade cabinet, which will also serve as a piggy bank for Alex to feed his college fund with.
</p></blockquote>
<p>Welcome aboard Tony!</p>
<div id='linker_widget' class='contextly-widget'></div>]]></content:encoded>
			<wfw:commentRss>http://www.adafruit.com/adablog/?feed=rss2&#038;p=56978</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Uzebox Coding Callenge 2013</title>
		<link>http://www.adafruit.com/blog/2013/03/11/uzebox-coding-callenge-2013/</link>
		<comments>http://www.adafruit.com/blog/2013/03/11/uzebox-coding-callenge-2013/#comments</comments>
		<pubDate>Mon, 11 Mar 2013 14:51:04 +0000</pubDate>
		<dc:creator>jeff</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[uzebox]]></category>

		<guid isPermaLink="false">http://www.adafruit.com/blog/?p=56757</guid>
		<description><![CDATA[For those of you who picked up the new Uzebox Starter Kit this is a great challenge for you! Uzebox Coding Challenge 2013 UPDATE: 13 registered participants so far and still plenty of time to register! (see the list at the end of this post) The Uzebox community is officially launching its first game coding [...]]]></description>
				<content:encoded><![CDATA[<p><img src="http://www.adafruit.com/adablog/wp-content/uploads/2013/03/uzeboxCodingChallenge.png" alt="uzeboxCodingChallenge" border="0" width="600" height="450" /></p>
<p>
For those of you who picked up the new <a href="https://www.adafruit.com/products/1291">Uzebox Starter Kit</a> this is a great challenge for you!</p>
<p>
<a href="http://uzebox.org/forums/viewtopic.php?f=1&amp;t=1837">Uzebox Coding Challenge 2013</a></p>
<blockquote><p>UPDATE: 13 registered participants so far and still plenty of time to register!   (see the list at the end of this post) </p>
<p>The Uzebox community is officially launching its first game coding contest! We aim to stir interest in peoples to realize games and ideas sleeping idle in a corner of their brain! The contest will offer prizes and eternal gratification by having their names all over the place on the Uzebox site. Here&#8217;s the details:</p>
<p>RULES</p>
<ul>
<li>The contest will launch February 1st 2013 and close June 1st 2013 at midnight GMT-5.</li>
<li>Participant *must* register to participate.</li>
<li>The registration date limit is April 1st. To register, send the administrator a personal message on the forums with a rough idea of the game you are planning to present (if possible). It will remain secret but if someone had registered the same idea before you will be advised.</li>
<li>Participants will be listed at the end of this post</li>
<li>More than 1 entry can be submitted per participant but only one can win a prize</li>
<li>You can share the progress of your game at any time during the compo as long as you registered it</li>
<li>Existing WIP games never completed can enter the contest&#8230;perfect occasion to finish em up</li>
<li>More than one person can work on an entry but only one prize will be attributed to the entry</li>
<li>Source code will need to be submitted along the binary and we must be able to compile it</li>
<li>Projects must be made to run at least on the uzem emulator. If you tweak the kernel files, it must run on the real hardware (Uze6666 will help validate this).</li>
<li>Projects must be games or other useful and interactive programs (like Uzeamp). No demos will be accepted (demos in the traditional sense, i.e: Second Reality by Future Crew).</li>
<li>Projects must not be a simple update of an existing Uzebox game.</li>
<li>Projects must be at most 61440 bytes long to be compatible with the Gameloader.</li>
<li>Any video mode can be used</li>
<li>Any kernel version can be used</li>
<li>Custom kernels and video mode can be developed and used as long as it runs correctly on the real hardware and the emulator.</li>
<li>Jury will be made of a panel select by Uze</li>
<li>Rules may be subject to change</li>
<li>If money prizes are given, they will be payed out exclusively via Paypal.</li>
<li>Judging will be made by summing the rating from 1(lowest) to 10(highest) several criterions:</li>
<ul>
<li>Game Play: How the game plays and reacts, AI level, game dynamics, etc</li>
<li>Originality: Bonus point for an original game concept (i.e. not a port of an existing game)</li>
<li>Graphics: Quality and richness of the in game graphics</li>
<li>Sound &amp; music: Quality and quantity of sound effects and in-game music. Bonus points for original effects and music.</li>
<li>Completeness: Bonus point for things like many game levels, main menu, high score panel, attract mode, etc.</li>
<li>Technical prowess: custom video modes, complex effects, etc will be awarded bonus points</ul>
<li>Prizes will be allocated as following (first proposal, to discuss). Note that the prizes may be subject to change for the better if we find sponsors.</li>
<ul>
<li>1st: A E/Uzebox ultra deluxe kit: Kit(PCB+all parts)+2 controllers+AVRISP MKII programmer+SD CARD preloaded+power supply+all cables + 200$ + a 7&#8243; TV monitor sponsored by Adafruit.com.</li>
<li>2nd: A E/Uzebox standard kit + 100$</li>
<li>3rd: A E/Uzebox base kit + 50$</li>
<li>4,5,6th places: 1 Uzebox t-shirt</li>
</ul>
</blockquote>
<p><a href="http://uzebox.org/forums/viewtopic.php?f=1&amp;t=1837">Read more.</a></p>
<hr />
<p>
<a href="https://www.adafruit.com/products/1291"><img src="http://www.adafruit.com/adablog/wp-content/uploads/2013/03/1291.png" alt="1291" border="0" width="400" height="308" /></a></p>
<p><a href="https://www.adafruit.com/products/1291">Uzebox Starter Kit &#8211; v1.0</a>: The Uzebox is a fully open-source, DIY 8-bit game console. It is designed specifically for people who know a little bit of programming to expand into designing and creating their own video games and demos. A full-featured core runs in the background and does all the video and audio processing so that your code stays clean and easy to understand. (<a href="https://www.adafruit.com/products/1291">read more</a>)</p>
<div id='linker_widget' class='contextly-widget'></div>]]></content:encoded>
			<wfw:commentRss>http://www.adafruit.com/adablog/?feed=rss2&#038;p=56757</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Help EFF Fight Patent Trolls, Support the SHIELD Act #makerbusinessmonday #makerbusiness</title>
		<link>http://www.adafruit.com/blog/2013/03/04/help-eff-fight-patent-trolls-support-the-shield-act-makerbusinessmonday-makerbusiness/</link>
		<comments>http://www.adafruit.com/blog/2013/03/04/help-eff-fight-patent-trolls-support-the-shield-act-makerbusinessmonday-makerbusiness/#comments</comments>
		<pubDate>Mon, 04 Mar 2013 06:00:00 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[maker business]]></category>
		<category><![CDATA[open source hardware]]></category>

		<guid isPermaLink="false">http://www.adafruit.com/blog/?p=55999</guid>
		<description><![CDATA[Help EFF Fight Patent Trolls, Support the SHIELD Act: A call to action from the Electronic Frontier Foundation: This week brings promising news in the fight against patent trolls. We have written before about how a broken patent system has led to an explosion of lawsuits by patent trolls (companies that assert patents as a [...]]]></description>
				<content:encoded><![CDATA[<p><img src="http://www.adafruit.com/adablog/wp-content/uploads/2013/02/EFF.png" alt="EFF" title="EFF.png" border="0" width="568" height="63" /></p>
<p><a href="https://www.eff.org/deeplinks/2013/02/help-eff-fight-patent-trolls-and-support-shield-act">Help EFF Fight Patent Trolls, Support the SHIELD Act: A call to action from the Electronic Frontier Foundation</a>:
</p>
<blockquote><p>This week brings promising news in the fight against patent trolls. We have <a href="https://www.eff.org/deeplinks/2013/02/trolls-and-tribulations">written before</a> about how a broken patent system has led to an <a href="http://www.reuters.com/article/2012/12/10/patents-usa-lawsuits-idUSL1E8NA55M20121210">explosion of lawsuits</a> by patent trolls (companies that assert patents as a business model instead of creating products). In the hands of trolls, patents become a <a href="http://reason.com/reasontv/2013/02/20/too-many-patents-how-patent-trolls-kill">tax on innovation</a>.</p>
<p class="MsoNormal">Rep. Peter DeFazio, along with Rep. Jason Chaffetz, has re-introduced the SHIELD Act (the <a href="https://en.wikipedia.org/wiki/Backronym">backronym</a> stands for Saving High-Tech Innovators from Egregious Legal Disputes) in the House of Representatives. The SHIELD Act (<a href="https://www.eff.org/sites/default/files/shield_act_113th_final.pdf">H.R. 845, pdf</a>) is designed to help the innocent victims of patent trolls.</p>
<p class="MsoNormal">Patent trolls use the sky-high cost of litigation as a weapon. It costs millions to defend a patent lawsuit. So while a few targets—<a href="https://www.eff.org/deeplinks/2013/02/trolls-and-tribulations">including Newegg and Twitter</a>—have fought back and won, even large companies are understandably reluctant to spend a fortune and waste employee time fighting a lawsuit. And smaller companies, <a href="http://www.forbes.com/sites/ciocentral/2013/01/17/are-patent-trolls-now-zeroed-in-on-start-ups/">like start-ups</a>, might not have the resources to defend a patent suit at all. So even if the troll&rsquo;s claims are weak, it can pressure its victims into settlement.</p>
<p class="MsoNormal">The SHIELD Act will help fix this problem. Under the Act, if the patent troll loses in court (because the patent is found to be invalid or there is no infringement), then it pays the other side&rsquo;s costs and legal fees. We think this proposal—which is also <a href="https://defendinnovation.org/proposal/shift-court-fees-away-innocent-parties">one of the reforms</a> proposed at our <a href="https://defendinnovation.org/">Defend Innovation</a> project—is a great first step.</p>
<p class="MsoNormal">Momentum is building for patent reform. President Obama recently <a href="https://www.eff.org/deeplinks/2013/02/obama-calls-patent-reform-topple-trolls">acknowledged</a> that we need new laws to deal with patent trolls. This is the perfect time to tell Congress that it needs to act.</p>
<p class="MsoNormal">Please join EFF in supporting the SHIELD Act by <a href="https://www.eff.org/shield">contacting Congress today</a>.</p></blockquote>
<p><a href="https://www.eff.org/deeplinks/2013/02/help-eff-fight-patent-trolls-and-support-shield-act">Read more.</a></p>
<hr />
<p>Each week on the Adafruit blog we post up about amazing companies, people and articles about being a MAKER <b>and</b> a business. Over the years we&#8217;ve shared how we run Adafruit, published code from our shopping cart system and given presentations on running an open-source hardware company. Every Monday we&#8217;re going to try to collect some of these resources and tag them <a href="http://www.adafruit.com/blog/?main_page=blog&amp;s=%23makerbusinessmonday">#makerbusinessmonday</a> &#038; <a href="http://www.adafruit.com/blog/?main_page=blog&amp;s=%23makerbusiness">#makerbusiness</a>. They&#8217;re in our popular <a href="http://www.adafruit.com/blog/category/maker-business/">Maker Business</a> category as well, enjoy!</p>
<div id='linker_widget' class='contextly-widget'></div>]]></content:encoded>
			<wfw:commentRss>http://www.adafruit.com/adablog/?feed=rss2&#038;p=55999</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Adafruit&#8217;s New &#8216;Unified Sensor Driver&#8217;!</title>
		<link>http://www.adafruit.com/blog/2013/02/28/adafruits-new-unified-sensor-driver/</link>
		<comments>http://www.adafruit.com/blog/2013/02/28/adafruits-new-unified-sensor-driver/#comments</comments>
		<pubDate>Thu, 28 Feb 2013 17:55:55 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[tutorials]]></category>

		<guid isPermaLink="false">http://www.adafruit.com/blog/?p=55931</guid>
		<description><![CDATA[Adafruit has always prided itself on going the extra mile.  We always try to provide the the best breakouts possible, but we also put that extra bit of effort into making sure we have a driver for each of those products as well.  You want to get started with your new HW as soon as [...]]]></description>
				<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-55932" src="http://www.adafruit.com/adablog/wp-content/uploads/2013/02/sensorapi.jpg" alt="" width="500" height="317" /></p>
<p>Adafruit has always prided itself on going the extra mile.  We always try to provide the the best breakouts possible, but we also put that extra bit of effort into making sure we have a driver for each of those products as well.  You want to get started with your new HW as soon as you pull it out of that box &#8230; we&#8217;re happy to try to make that possible to the best extent that we can!  Call it the Adafruit Difference. <img src='http://www.adafruit.com/adablog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>That said &#8230; writing all those drivers can be pretty time consuming, and then you need to add some example code on top of them to show how the driver works.  While I was digging around inside the <a href="https://github.com/android">Android source code</a> for something different, I noticed the intelligent way they abstract away all sensor data down to a single C typedef.  The dial went straight to 11 in my head, and the first thing I thought was: &#8216;why am I not doing this?!?&#8217;.  I pulled out an MCU and tried to adapt the Android code (conveniently written in C), slimming the typedefs down a bit, adding a couple sensor types, &#8230; but keeping the same general structure.  After a bit of trial and error, the Adafruit Unified Sensor Driver was born.  Driver use and development will never be the same (at least for me)!</p>
<p>We have a reasonably complete tutorial on <a href="http://learn.adafruit.com/using-the-adafruit-unified-sensor-driver">how the Unified Sensor Driver System works</a> &#8230; but you can also have a look at the source code for <a href="https://github.com/adafruit/Adafruit_Sensor">Adafruit_Sensor</a> on github.  In a nutshell what does this do, though?  Essentially, it takes any supported sensor type (accelerometers, gyroscopes, pressure sensors, light sensors, etc.) and converts the raw units used by the system (0..1023) into standard SI units on a specific scale.  Every accelerometer using the system will report acceleration in m/s^2, pressure sensors will all use hectoPascal (hPa), light sensors use SI lux units, etc.!  No more 0..1023 &#8230; you get units you understand out of the box and every time!</p>
<p>Don&#8217;t know which accelerometer to use, or what speed or resolution you need?  No problem &#8230; start with whatever you&#8217;ve got, and you can just drop in any other &#8216;Unified&#8217; sensor later.  You&#8217;ll get exactly the same SI unit types and scales, call the same two functions, and all you need to change in the single line constructor!  No more out of stock headaches &#8230; just take any other similar sensor and use that as a stand-in, and you don&#8217;t have to relearn a whole new driver and set of functions.</p>
<p>But have a look at the learning guide, the source code, and try it out if you have a product that currently has a &#8216;Unified&#8217; drivers (there&#8217;s a list <a href="http://learn.adafruit.com/using-the-adafruit-unified-sensor-driver/where-to-from-here">here</a>). And above all, let us know what you think and what can be improved.  This is still a bit of an experiment for us, but it definitely feels like the right direction to move things!</p>
<div id='linker_widget' class='contextly-widget'></div>]]></content:encoded>
			<wfw:commentRss>http://www.adafruit.com/adablog/?feed=rss2&#038;p=55931</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Mayor Bloomberg Announces Pilot Software Engineering Program for NYC Schools #nycmfg</title>
		<link>http://www.adafruit.com/blog/2013/02/25/mayor-bloomberg-announces-pilot-software-engineering-program-for-nyc-schools-nycmfg/</link>
		<comments>http://www.adafruit.com/blog/2013/02/25/mayor-bloomberg-announces-pilot-software-engineering-program-for-nyc-schools-nycmfg/#comments</comments>
		<pubDate>Tue, 26 Feb 2013 03:08:11 +0000</pubDate>
		<dc:creator>johngineer</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[NYC]]></category>

		<guid isPermaLink="false">http://www.adafruit.com/blog/?p=55639</guid>
		<description><![CDATA[Mayor Bloomberg announced a pilot program for software engineering in 20 NYC public schools. More from VentureBeat: In his ongoing effort to make New York City a technological powerhouse, Mayor Michael Bloomberg today revealed the 20 middle schools and high schools picked for the city&#8217;s new Software Engineering Pilot (SEP) program. As part of the [...]]]></description>
				<content:encoded><![CDATA[<p><iframe width="600" height="450" src="http://www.youtube.com/embed/Mrg_w3DCmCk" frameborder="0" allowfullscreen></iframe></p>
<p>Mayor Bloomberg announced a pilot program for software engineering in 20 NYC public schools. More from <a href="http://venturebeat.com/2013/02/25/bloomberg-announces-20-nyc-schools-for-software-engineering-pilot-program/">VentureBeat</a>:</p>
<blockquote><p>
 In his ongoing effort to make New York City a technological powerhouse, Mayor Michael Bloomberg today revealed the 20 middle schools and high schools picked for the city&rsquo;s new Software Engineering Pilot (SEP) program.</p>
<p>As part of the program, the schools will get “comprehensive computer science and software engineering curriculum” for around 1,000 students. The program will launch this September and is expected to grow to 3,5000 students by 2016.</p>
<p>For its first year, the SEP&rsquo;s core topics include computer programming, embedded electronics, web design and programming, e-textiles, robotics, and mobile computing. Elective classes include 3D printing, digital fabrication, and animation. The program also includes training for teachers.</p>
<p>“We know it&rsquo;s vital to prepare our children to succeed in an increasingly technology-centered economy, and the Software Engineering Pilot will help us do just that,” Bloomberg said in a statement today. “This groundbreaking program will ensure that more students receive computer science and software engineering instruction so that they can compete for the tech jobs that are increasingly becoming a part of our city&rsquo;s economy. We&rsquo;re creating the home-grown workforce our city needs and teaching our students skills that will open up new doors for them and their future.”</p>
<p>The announcement follows the “Made in NYC” campaign that Bloomberg announced last week, which supports the city&rsquo;s startup community. Students participating in the SEP program will likely be strong applicants for Cornell NYC Tech&rsquo;s campus, which is scheduled to open in 2017 (classes have already begun in temporary Manhattan locations). If all goes according to plan, NYC&rsquo;s engineer shortage will be less of a problem in several years.</p></blockquote>
<hr />
<p><img src="http://www.adafruit.com/adablog/wp-content/uploads/2013/02/hellobadge_600.jpg" alt="" title="hellobadge_600" width="600" height="200" class="aligncenter size-full wp-image-55656" /></p>
<p>This is a great idea! Naturally, we&#8217;d like to invite all the young participants in this program to pick up one of our <a href="http://adafruit.com/products/478">&#8216;learn to program&#8217; badges</a> to show their accomplishment off to the world!</p>
<div id='linker_widget' class='contextly-widget'></div>]]></content:encoded>
			<wfw:commentRss>http://www.adafruit.com/adablog/?feed=rss2&#038;p=55639</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Students playing #scratch Operation with a #makeymakey #makeymakeymonday</title>
		<link>http://www.adafruit.com/blog/2012/12/24/students-playing-scratch-operation-with-a-makeymakey-makeymakeymonday/</link>
		<comments>http://www.adafruit.com/blog/2012/12/24/students-playing-scratch-operation-with-a-makeymakey-makeymakeymonday/#comments</comments>
		<pubDate>Mon, 24 Dec 2012 07:00:00 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[makeymakey]]></category>

		<guid isPermaLink="false">http://www.adafruit.com/blog/?p=50270</guid>
		<description><![CDATA[Last week I shared a few photos I found on Twitter from Josh Burker (@joshburker) featuring a variant on the game of Operation he and students were creating in #scratch with the help of a #makeymakey &#8212; here are kids playing the final game! Students testing their skills on the #MaKeyMaKey #Scratch Operation game. Read [...]]]></description>
				<content:encoded><![CDATA[<p><img src="http://www.adafruit.com/adablog/wp-content/uploads/2012/12/ScratchOperationComplete.png" alt="ScratchOperationComplete" title="ScratchOperationComplete.png" border="0" width="600" height="448" /></p>
<p><a href="http://www.adafruit.com/blog/2012/12/17/a-custom-scratch-built-game-of-operation-makeymakey-makeymakeymonday/">Last week I shared a few photos I found on Twitter</a> from <a href="https://twitter.com/joshburker">Josh Burker (@joshburker)</a> featuring a variant on the game of Operation he and students were creating in #scratch with the help of a #makeymakey &#8212;<br />
<a href="https://twitter.com/joshburker/status/281824696549396480">here are kids playing the final game</a>!
</p>
<blockquote><p>Students testing their skills on the #MaKeyMaKey #Scratch Operation game.</p></blockquote>
<p><a href="https://twitter.com/joshburker/status/281824696549396480">Read more.</a></p>
<p><img src="http://www.adafruit.com/adablog/wp-content/uploads/2012/12/ScratchOperation01.png" alt="ScratchOperation01" title="ScratchOperation01.png" border="0" width="448" height="600" /></p>
<p>
<img src="http://www.adafruit.com/adablog/wp-content/uploads/2012/12/ScratchOperation02.png" alt="ScratchOperation02" title="ScratchOperation02.png" border="0" width="600" height="448" /></p>
<p>
<img src="http://www.adafruit.com/adablog/wp-content/uploads/2012/12/ScratchOperation03.png" alt="ScratchOperation03" title="ScratchOperation03.png" border="0" width="600" height="448" /></p>
<hr />
<p><a href="https://www.adafruit.com/products/1068"><img src="http://www.adafruit.com/adablog/wp-content/uploads/2012/10/makeysm.jpg" height="75" width="124" border="0" align="left" hspace="4" vspace="4" alt="Makeysm" /></a><br />
Every Monday is <a href="http://www.adafruit.com/blog/category/makeymakey/">Makey Makey™ Monday</a> here at Adafruit! The <a href="https://www.adafruit.com/products/1068">MaKey MaKey</a> &#8211; by Jay Silver and Eric Rosenbaum, made by <a href="http://joylabz.com/">JoyLabz!</a> Ever played Mario on Play-Doh or Piano on Bananas? Alligator clip the Internet to Your World. MaKey MaKey is an invention kit for the 21st century. Find out more details at <a href="http://makeymakey.com">makeymakey.com</a> or watch the video at <a href="http://makeymakey.com">makeymakey.com</a>. Turn everyday objects into touchpads and combine them with the internet. It&#8217;s a simple Invention Kit for Beginners and Experts doing art, engineering, and everything in between! If you have a cool project you&#8217;ve made with your Makey Makey be sure to send it in to be <a href="http://www.adafruit.com/blog/category/makeymakey/">featured</a> here!</p>
<div id='linker_widget' class='contextly-widget'></div>]]></content:encoded>
			<wfw:commentRss>http://www.adafruit.com/adablog/?feed=rss2&#038;p=50270</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Dithering Technique Options for ST7565 LCDs</title>
		<link>http://www.adafruit.com/blog/2012/12/19/new-dithering-technique-options-for-st7565-lcds/</link>
		<comments>http://www.adafruit.com/blog/2012/12/19/new-dithering-technique-options-for-st7565-lcds/#comments</comments>
		<pubDate>Wed, 19 Dec 2012 12:30:37 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[leds-lcds]]></category>

		<guid isPermaLink="false">http://www.adafruit.com/blog/?p=49726</guid>
		<description><![CDATA[Nick Pinson who we covered here for his bitmap/font designer for the ST7565 LCDs back in July has added support for a range of cool dithering techniques. &#8220;Floyd-Steinberg, Atkinson, Sierra-2-4A, and Threshold. Just drag an image onto the display, cut and paste the encoding, and you&#8217;re off and running.&#8221; Here are details from his updated [...]]]></description>
				<content:encoded><![CDATA[<p><img src="http://www.adafruit.com/adablog/wp-content/uploads/2012/12/ST7565_GraphicalLCD_Example.png" alt="ST7565_GraphicalLCD_Example" title="ST7565_GraphicalLCD_Example.png" border="0" width="600" height="461" />
<p>Nick Pinson who we covered here <a href="http://www.adafruit.com/blog/2012/07/10/st7565-designer-a-bitmapfont-designer-for-the-st7565-graphical-lcds/">for his bitmap/font designer for the ST7565 LCDs</a> back in July has added support for a range of cool dithering techniques. &#8220;Floyd-Steinberg, Atkinson, Sierra-2-4A, and Threshold. Just drag an image onto the display, cut and paste the encoding, and you&#8217;re off and running.&#8221; Here are details from his <a href="https://github.com/pinsonn/st7565-designer">updated code posting at Github</a>:
</p>
<blockquote><p>st7565-designer is a HTML5 web application for designing bitmaps and fonts for the st7565 graphical lcd. Encoded bitmaps and fonts work well with Adafruit&#8217;s ST7565 arduino library. This web application was written for my own use and was designed to run locally on my own computer. I tested it with recent releases of Firefox, Safari, and Chrome. I did not test it in IE, nor do I intend to do so.</p>
<p><strong>Usage</strong>:</p>
<ul>
<li>Draw a line between the last pixel and the current pixel by holding down the shift key.</li>
<li>Undo with ctrl-z or command-z. No redo yet.</li>
<li>Save and restore bitmaps/fonts from local storage</li>
<li>Export/Import all items to/from a JSON file</li>
<li>Drag and drop an image on the canvas (with canvas dimensions set to 128&#215;64) to write a dithered approximation of the image to the display</li>
<li>Current quantization/dithering techniques available: Floyd-Steinberg, Atkinson, and Sierra Lite (Sierra-2-4A), and Threshold</li>
</ul>
</blockquote>
<p><a href="https://github.com/pinsonn/st7565-designer">Read more.</a></p>
<div id='linker_widget' class='contextly-widget'></div>]]></content:encoded>
			<wfw:commentRss>http://www.adafruit.com/adablog/?feed=rss2&#038;p=49726</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rocket Launcher Unit Test Penalty #piday #raspberrypi @Raspberry_Pi</title>
		<link>http://www.adafruit.com/blog/2012/12/14/rocket-launcher-unit-test-penalty-piday-raspberrypi-raspberry_pi/</link>
		<comments>http://www.adafruit.com/blog/2012/12/14/rocket-launcher-unit-test-penalty-piday-raspberrypi-raspberry_pi/#comments</comments>
		<pubDate>Fri, 14 Dec 2012 07:00:00 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[Raspberry Pi]]></category>

		<guid isPermaLink="false">http://www.adafruit.com/blog/?p=48585</guid>
		<description><![CDATA[Well, here is one way to raise the stakes at your next unit test. Josh Lewin: One guy in R&#038;D in our office programmed the launcher (in Python) with the directions to team members. If a build of our application fails, a rocket is fired at the guilty programmer!! (True&#8230;)﻿ Sy Bernot: Every build environment [...]]]></description>
				<content:encoded><![CDATA[<p><img src="http://www.adafruit.com/adablog/wp-content/uploads/2012/12/RickWagnerCoderRocket.png" alt="RickWagnerCoderRocket" title="RickWagnerCoderRocket.png" border="0" width="600" height="450" /></p>
<p>Well, here is one way to raise the stakes at <a href="https://plus.google.com/u/0/102720917233462206601/posts/GcWGQxXXEQs">your next unit test</a>.</p>
<blockquote><p>
<strong>Josh Lewin</strong>: One guy in R&#038;D in our office programmed the launcher (in Python) with the directions to team members. If a build of our application fails, a rocket is fired at the guilty programmer!! (True&#8230;)﻿</p>
<p><strong>Sy Bernot</strong>: Every build environment should be equipped in this manner. ﻿</p>
<p><strong>Josh Lewin</strong>: Change to live rounds close to Production date?﻿</p></blockquote>
<p><a href="https://plus.google.com/u/0/102720917233462206601/posts/GcWGQxXXEQs">Read more.</a></p>
<hr />
<p><a href="https://www.adafruit.com/products/998"><img src="http://www.adafruit.com/ThingsThatChange/freepi.jpeg" height="57" width="97" border="0" align="left" hspace="4" vspace="4" alt="998" /></a>Each Friday is PiDay here at Adafruit, be sure to check out our <a href="http://www.adafruit.com/blog/category/raspberry-pi/">posts,</a> <a href="http://learn.adafruit.com/category/raspberry-pi">tutorials</a> and new <a href="https://www.adafruit.com/raspberrypi">Raspberry Pi related products.</a> Have you tried the new <a href="http://learn.adafruit.com/adafruit-raspberry-pi-educational-linux-distro">&#8220;Adafruit Raspberry Pi Educational Linux Distro&#8221;</a> ? It&#8217;s our tweaked distribution for teaching electronics using the Raspberry Pi. But wait, there&#8217;s more! <a href="http://learn.adafruit.com/webide/">Try our new Raspberry Pi WebIDE!</a> The easiest way to learn programming on a Raspberry Pi.</p>
<p>Want a FREE RASPBERRY PI? <a href="http://www.adafruit.com/products/998">All orders over $350 get a FREE Raspberry Pi Model B with 512MB RAM!</a></p>
<div id='linker_widget' class='contextly-widget'></div>]]></content:encoded>
			<wfw:commentRss>http://www.adafruit.com/adablog/?feed=rss2&#038;p=48585</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Plan 9 On the Raspberry Pi #piday #raspberrypi @Raspberry_Pi</title>
		<link>http://www.adafruit.com/blog/2012/12/07/plan-9-on-the-raspberry-pi-piday-raspberrypi-raspberry_pi/</link>
		<comments>http://www.adafruit.com/blog/2012/12/07/plan-9-on-the-raspberry-pi-piday-raspberrypi-raspberry_pi/#comments</comments>
		<pubDate>Fri, 07 Dec 2012 13:30:51 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[Raspberry Pi]]></category>

		<guid isPermaLink="false">http://www.adafruit.com/blog/?p=48487</guid>
		<description><![CDATA[Here&#8217;s a great post to help you get Plan 9 running on your Pi, from The Bendyworks Blog: Do you like Unix? Do you really like Unix? Well, what if I told you there&#8217;s a little-known operating system out there that&#8217;s more Unix than even Unix is. Cool, right? Well it is true! Plan 9 [...]]]></description>
				<content:encoded><![CDATA[<p><img src="http://www.adafruit.com/adablog/wp-content/uploads/2012/12/Plan9FromOuterPi.png" alt="Plan9FromOuterPi" title="Plan9FromOuterPi.png" border="0" width="536" height="388" /></p>
<p>Here&#8217;s a great post to help you get <a href="http://en.wikipedia.org/wiki/Plan_9_from_Bell_Labs">Plan 9</a> running on your Pi, from <a href="http://bendyworks.com/geekville/lab_projects/2012/11/getting-plan-9-running-on-the-raspberry-pi">The Bendyworks Blog</a>:
</p>
<blockquote><p>Do you like Unix? Do you really like Unix? Well, what if I told you there&#8217;s a little-known operating system out there that&#8217;s more Unix than even Unix is. Cool, right?</p>
<p>Well it is true! <a href="http://en.wikipedia.org/wiki/Plan_9_from_Bell_Labs">Plan 9</a> occupies an interesting niche in the open source operating system world. It is a full-fledged descendant of Unix, but not in the way that most systems out there are. It took the bones and beating heart of Unix and then built a brand-new cybernetic exoskeleton around it, with lasers, and heat vision&#8230; oh wait. You want to boot this bad-boy up, right? Well, okay, we&#8217;ll do that. But what hardware shall we run it on? Hey, you got a <a href="http://www.raspberrypi.org/">Raspberry Pi</a>? </p>
<p>…Plan 9 is, I think, a really interesting take on networked computing. It uses a really novel approach of filesystems to do, well basically everything. It has seamless networking and what we may call &#8220;remote desktop&#8221;, but in a really different and efficient way. It has a text editor, <a href="http://research.swtch.com/acme">Acme</a> that is somewhere between both Vi and Emacs, while managing again, to not really be much like either of them, a theme of Plan 9.</p>
</blockquote>
<p><a href="http://bendyworks.com/geekville/lab_projects/2012/11/getting-plan-9-running-on-the-raspberry-pi">Read more.</a></p>
<hr />
<p><a href="https://www.adafruit.com/products/998"><img src="http://www.adafruit.com/ThingsThatChange/freepi.jpeg" height="57" width="97" border="0" align="left" hspace="4" vspace="4" alt="998" /></a>Each Friday is PiDay here at Adafruit, be sure to check out our <a href="http://www.adafruit.com/blog/category/raspberry-pi/">posts,</a> <a href="http://learn.adafruit.com/category/raspberry-pi">tutorials</a> and new <a href="https://www.adafruit.com/raspberrypi">Raspberry Pi related products.</a> Have you tried the new <a href="http://learn.adafruit.com/adafruit-raspberry-pi-educational-linux-distro">&#8220;Adafruit Raspberry Pi Educational Linux Distro&#8221;</a> ? It&#8217;s our tweaked distribution for teaching electronics using the Raspberry Pi. But wait, there&#8217;s more! <a href="http://learn.adafruit.com/webide/">Try our new Raspberry Pi WebIDE!</a> The easiest way to learn programming on a Raspberry Pi.</p>
<p>Want a FREE RASPBERRY PI? <a href="http://www.adafruit.com/products/998">All orders over $350 get a FREE Raspberry Pi Model B with 512MB RAM!</a></p>
<div id='linker_widget' class='contextly-widget'></div>]]></content:encoded>
			<wfw:commentRss>http://www.adafruit.com/adablog/?feed=rss2&#038;p=48487</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Ethiopian Kids Hack Their OLPC Tablets in 5 Months, With No Help</title>
		<link>http://www.adafruit.com/blog/2012/11/13/ethiopian-kids-hack-their-olpc-tablets-in-5-months-with-no-help/</link>
		<comments>http://www.adafruit.com/blog/2012/11/13/ethiopian-kids-hack-their-olpc-tablets-in-5-months-with-no-help/#comments</comments>
		<pubDate>Tue, 13 Nov 2012 08:00:00 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[educators]]></category>

		<guid isPermaLink="false">http://www.adafruit.com/blog/?p=45516</guid>
		<description><![CDATA[It appears that one of the deep dreams for the OLPC movement is bearing fruit &#8212; children hacking on their own! Now the OLPC team can point to real world models evoking such things as Stephenson&#8217;s Diamond Age &#8220;electronic primers.&#8221; Via Gizmodo: The amazing One Laptop Per Child scheme has been offering up Motorola Xoom [...]]]></description>
				<content:encoded><![CDATA[<p><img src="http://www.adafruit.com/adablog/wp-content/uploads/2012/11/EthiopianKidHackers.png" alt="EthiopianKidHackers" title="EthiopianKidHackers.png" border="0" width="600" height="337" /></p>
<p>It appears that one of the deep dreams for the OLPC movement is bearing fruit &#8212; children hacking on their own! Now the OLPC team can point to real world models evoking such things as Stephenson&#8217;s <a href="http://en.wikipedia.org/wiki/The_Diamond_Age">Diamond Age</a> &#8220;electronic primers.&#8221; Via <a href="http://gizmodo.com/5956417/ethiopian-kids-hack-their-olpc-tablets-in-5-months-with-no-help">Gizmodo</a>:</p>
<blockquote><p>The amazing <a href="http://one.laptop.org/">One Laptop Per Child scheme</a> has been offering up Motorola Xoom tablets to kids in developing countries for a while. OLPC founder Nicholas Negroponte <a href="http://www.technologyreview.com/news/506466/given-tablets-but-no-teachers-ethiopian-children-teach-themselves/">explained</a> how they&#8217;re rolled out, and the impact they have, while he was at MIT Technology Review&#8217;s EmTech conference last week:</p>
<p>&#8220;We left the boxes in the village. Closed. Taped shut. No instruction, no human being. I thought, the kids will play with the boxes! Within four minutes, one kid not only opened the box, but found the on/off switch. He&#8217;d never seen an on/off switch. He powered it up. Within five days, they were using 47 apps per child per day. Within two weeks, they were singing ABC songs [in English] in the village. And within five months, they had hacked Android. Some idiot in our organization or in the Media Lab had disabled the camera! And they figured out it had a camera, and they hacked Android.&#8221;</p></blockquote>
<p><a href="http://gizmodo.com/5956417/ethiopian-kids-hack-their-olpc-tablets-in-5-months-with-no-help">Read more.</a></p>
<div id='linker_widget' class='contextly-widget'></div>]]></content:encoded>
			<wfw:commentRss>http://www.adafruit.com/adablog/?feed=rss2&#038;p=45516</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MCP230xx GPIO Expander on the Raspberry Pi #piday #raspberrypi @Raspberry_Pi</title>
		<link>http://www.adafruit.com/blog/2012/11/09/mcp230xx-gpio-expander-on-the-raspberry-pi-piday-raspberrypi-raspberry_pi-2/</link>
		<comments>http://www.adafruit.com/blog/2012/11/09/mcp230xx-gpio-expander-on-the-raspberry-pi-piday-raspberrypi-raspberry_pi-2/#comments</comments>
		<pubDate>Fri, 09 Nov 2012 10:00:00 +0000</pubDate>
		<dc:creator>Matt</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[Raspberry Pi]]></category>

		<guid isPermaLink="false">http://www.adafruit.com/blog/?p=44901</guid>
		<description><![CDATA[Here&#8217;s a great project Gilberto wrote in to share with us, based on our Learning System tutorial: Thanks to your excellent tutorial I was able to migrate your Python implementation to C#. I am running mono on the Raspberry Pi and using RaspberryPi.Net library. You can find his code here. From the software documentation: The [...]]]></description>
				<content:encoded><![CDATA[<p>Here&#8217;s a great project Gilberto wrote in to share with us, based on our <a href="http://learn.adafruit.com/mcp230xx-gpio-expander-on-the-raspberry-pi">Learning System tutorial</a>:</p>
<blockquote><p>Thanks to <a href="http://learn.adafruit.com/mcp230xx-gpio-expander-on-the-raspberry-pi">your excellent tutorial</a> I was able to migrate your Python implementation to C#.  I am running mono on the Raspberry Pi and using RaspberryPi.Net library.</p></blockquote>
<p>You can find his code <a href="https://github.com/ferraripr/RaspberryPi.Net/blob/master/RaspberryPiDotNet/MCP3008.cs">here</a>. From the software documentation:</p>
<blockquote><p>The purpose of this library is to provide a Mono.NET interface to the GPIO pins on the Raspberry Pi. All of this code was written using Visual Studio 2010 Express but the goal is to be fully compatible with Mono. This library is written using .NET 4.0 therefore the latest version of Mono (2.10) is recommended. At the time of this update, the Raspbian wheezy 2012-07-15 image installs Mono 2.10.8.1.</p>
<p>The GPIO pins are best described <a href="http://elinux.org/Rpi_Low-level_peripherals#General_Purpose_Input.2FOutput_.28GPIO.29">here</a>. They can be accessed in 2 ways, either using the file-based I/O (GPIOFile.cs) or direct memory (GPIOMem.cs) using Mike McCauley&#8217;s BCM2835 library which is available <a href="http://www.open.com.au/mikem/bcm2835/index.html">here</a>. There is also a GPIODebug.cs class that can be used to test your application without a Raspberry Pi.</p>
<p>Here is a sample bit of code to blink an LED attached to pin 12 </p></blockquote>
<p><a href="https://github.com/ferraripr/RaspberryPi.Net">Read more</a>.</p>
<p>Check out our <a href="http://learn.adafruit.com/mcp230xx-gpio-expander-on-the-raspberry-pi">original tutorial here</a>!</p>
<p><a href="http://learn.adafruit.com/mcp230xx-gpio-expander-on-the-raspberry-pi"><img src="http://www.adafruit.com/adablog/wp-content/uploads/2012/11/MCP230xxGPIOExpander.png" alt="MCP230xxGPIOExpander" title="MCP230xxGPIOExpander.png" border="0" width="600" height="399" /></a></p>
<hr />
<p><a href="https://www.adafruit.com/products/998"><img src="http://www.adafruit.com/ThingsThatChange/freepi.jpeg" height="57" width="97" border="0" align="left" hspace="4" vspace="4" alt="998" /></a>Each Friday is PiDay here at Adafruit, be sure to check out our <a href="http://www.adafruit.com/blog/category/raspberry-pi/">posts,</a> <a href="http://learn.adafruit.com/category/raspberry-pi">tutorials</a> and new <a href="https://www.adafruit.com/raspberrypi">Raspberry Pi related products.</a> Have you tried the new <a href="http://learn.adafruit.com/adafruit-raspberry-pi-educational-linux-distro">&#8220;Adafruit Raspberry Pi Educational Linux Distro&#8221;</a> ? It&#8217;s our tweaked distribution for teaching electronics using the Raspberry Pi. But wait, there&#8217;s more! <a href="http://learn.adafruit.com/webide/">Try our new Raspberry Pi WebIDE!</a> The easiest way to learn programming on a Raspberry Pi.</p>
<p>Want a FREE RASPBERRY PI? <a href="http://www.adafruit.com/products/998">All orders over $350 get a FREE Raspberry Pi Model B with 512MB RAM!</a></p>
<div id='linker_widget' class='contextly-widget'></div>]]></content:encoded>
			<wfw:commentRss>http://www.adafruit.com/adablog/?feed=rss2&#038;p=44901</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Codebender &#8211; A web platform for hackers, makers and artists</title>
		<link>http://www.adafruit.com/blog/2012/07/04/codebender-a-web-platform-for-hackers-makers-and-artists/</link>
		<comments>http://www.adafruit.com/blog/2012/07/04/codebender-a-web-platform-for-hackers-makers-and-artists/#comments</comments>
		<pubDate>Wed, 04 Jul 2012 05:00:00 +0000</pubDate>
		<dc:creator>Becky Stern</dc:creator>
				<category><![CDATA[code]]></category>

		<guid isPermaLink="false">http://www.adafruit.com/blog/?p=35502</guid>
		<description><![CDATA[Codebender &#8211; A web platform for hackers, makers and artists: Hi! We are Vasilis Georgitzikis, Maria Kousta, Markellos Orfanos, Stelios Tsampas and Dimitris Amaxilatis, and we are the team behind codebender. In the past, each of us has worked on quite a few projects you might know, like MacPorts, Growl, the Arduino TFTP bootloader and [...]]]></description>
				<content:encoded><![CDATA[<p><iframe src="http://www.youtube.com/embed/klcE7birBbg?rel=0" width="601" height="338" frameborder="0"></iframe></p>
<p><a href="http://www.indiegogo.com/codebender">Codebender &#8211; A web platform for hackers, makers and artists:</a></p>
<blockquote>
<p>Hi! We are Vasilis Georgitzikis, Maria Kousta, Markellos Orfanos, Stelios Tsampas and Dimitris Amaxilatis, and we are the team behind codebender. In the past, each of us has worked on quite a few projects you might know, like MacPorts, Growl, the Arduino TFTP bootloader and we even had a project featured on hackaday. None of it comes close to our work on codebender though.</p>
<p>codebender comes to fill the need for reliable and easy to use tools for makers. A need that from our own experience could not be totally fulfilled by any of the existing solutions. Things like installing libraries, updating the software or installing the IDE can be quite a painful process.</p>
<p>In addition to the above, the limited features provided (e.g. insufficient highlighting, indentation and autocompletion) got us starting building codebender, a completely web-based IDE, that requires no installation and offers a great code editor. It also stores your sketches on the cloud.</p>
<p>That way, you can still access your sketches safely even if your laptop is stolen or your hard drive fails! codebender also takes care of compilation, giving you extremely descriptive warnings on terrible code. On top of that, when you are done, you can upload your code to your Arduino straight from the browser without installing anything.</p>
</blockquote>
<div id='linker_widget' class='contextly-widget'></div>]]></content:encoded>
			<wfw:commentRss>http://www.adafruit.com/adablog/?feed=rss2&#038;p=35502</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Processing Interview with Casey Reas</title>
		<link>http://www.adafruit.com/blog/2012/06/20/processing-interview-with-casey-reas/</link>
		<comments>http://www.adafruit.com/blog/2012/06/20/processing-interview-with-casey-reas/#comments</comments>
		<pubDate>Wed, 20 Jun 2012 06:00:00 +0000</pubDate>
		<dc:creator>Becky Stern</dc:creator>
				<category><![CDATA[art]]></category>
		<category><![CDATA[code]]></category>

		<guid isPermaLink="false">http://www.adafruit.com/blog/?p=34422</guid>
		<description><![CDATA[&#8220;Beautiful Art, Created with Code&#8221; on BuzzFeed: Over the past 10 years, Processing has become the programming language of choice for anyone making technology art, whether it&#8217;s at NYU&#8217;s ITP program or the more adventurous corners of the New York Times. We talked with Casey Reas — half of the Processing team and a reknowned [...]]]></description>
				<content:encoded><![CDATA[<p><iframe src="http://player.vimeo.com/video/21932876?title=0&amp;byline=0&amp;portrait=0" width="600" height="338" frameborder="0"></iframe></p>
<p><a href="http://www.buzzfeed.com/tommywilhelm/beautiful-art-created-with-code">&#8220;</a><a href="http://www.buzzfeed.com/tommywilhelm/beautiful-art-created-with-code">Beautiful Art, Created with Code&#8221; on BuzzFeed:</a></p>
<blockquote>
<p>Over the past 10 years, Processing has become the programming language of choice for anyone making technology art, whether it&#8217;s at NYU&#8217;s ITP program or the more adventurous corners of the New York Times. We talked with Casey Reas — half of the Processing team and a reknowned computer artist in his own right — about his favorite UI tricks and the upcoming release of Processing 2.0.</p>
</blockquote>
<p><img src="http://www.adafruit.com/images/medium/processingbadge_MED.jpg" alt="" /></p>
<p><a href="http://www.adafruit.com/products/552">Processing skill badge</a></p>
<div id='linker_widget' class='contextly-widget'></div>]]></content:encoded>
			<wfw:commentRss>http://www.adafruit.com/adablog/?feed=rss2&#038;p=34422</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>&#8216;Constant Brightness&#8217; HSB to RGB Algorithm</title>
		<link>http://www.adafruit.com/blog/2012/03/14/constant-brightness-hsb-to-rgb-algorithm/</link>
		<comments>http://www.adafruit.com/blog/2012/03/14/constant-brightness-hsb-to-rgb-algorithm/#comments</comments>
		<pubDate>Wed, 14 Mar 2012 16:47:12 +0000</pubDate>
		<dc:creator>johngineer</dc:creator>
				<category><![CDATA[avr development]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[EE]]></category>
		<category><![CDATA[leds-lcds]]></category>

		<guid isPermaLink="false">http://www.adafruit.com/blog/?p=27342</guid>
		<description><![CDATA[cross posted from my blog. For an embedded project I&#8217;m working on, I had to implement an algorithm to convert from HSB (hue/saturation/brightness) to 8-bit RGB color values for PWM&#8217;ing LEDs. This is what I came up with. It creates a &#8216;constant brightness&#8217; RGB value: at full saturation (no &#8216;whitewash&#8217;), only two of the 3 [...]]]></description>
				<content:encoded><![CDATA[<p style="text-align: left;"><a href="http://www.johngineer.com/blog/?p=1022"><img class="size-full wp-image-27343" src="http://www.adafruit.com/adablog/wp-content/uploads/2012/03/hsb2rgb_600.png" alt="" width="600" height="289" /></a></p>
<p><em>cross posted from <a href="http://www.johngineer.com/blog/?p=1022">my blog</a>.</em></p>
<p>For an embedded project I&#8217;m working on, I had to implement an algorithm to convert from HSB (hue/saturation/brightness) to 8-bit RGB color values for PWM&#8217;ing LEDs. This is what I came up with. It creates a &#8216;constant brightness&#8217; RGB value: at full saturation (no &#8216;whitewash&#8217;), only two of the 3 RGB colors are on at a time, and their &#8216;on&#8217; times are mathematically complimentary (though not phase-complimentary) with respect to the max 255 value.</p>
<p>Increasing saturation will increase the overall brightness of the LEDs, but that is to be expected &#8212; for a given maximum magnitude, there is more overall energy in white light than there is in light of a particular color. The saturation calculation works by adding a constant &#8216;floor&#8217; value to all channels. Individual color values are then placed between this floor and the 255 maximum. A saturation value of 0 results in all channels at 100% duty cycle.</p>
<p>The &#8216;brightness&#8217; is the last calculation performed. It takes a saturation modified hue value, and simply proportions it to the maximum value. So, a brightness of 197 will output light which is ~197/255 of the maximum output value. Naturally, there are losses inherent to integer arithmetic, but it&#8217;s close enough for most uses. Further, the linear nature of the brightness control means it is not &#8216;gamma corrected&#8217; &#8212; that would require logarithmic brightness control which, for what I&#8217;m doing, is completely unnecessary.</p>
<p>This algorithm uses no sine tables or floating point math, so it&#8217;s pretty fast, though it could probably be optimized to use shifts and adds instead of mults and divides. It&#8217;s also relatively small. The code itself is in C, so it can be used on most platforms.</p>
<p>Click &#8216;more&#8217; for the code snippet and just copy/paste into a text editor &#8211;</p>
<p><span id="more-27342"></span></p>
<pre><span style="color: #7e7e7e;">/******************************************************************************</span>
<span style="color: #7e7e7e;"> * accepts hue, saturation and brightness values and outputs three 8-bit color</span>
<span style="color: #7e7e7e;"> * values in an array (color[])</span>
<span style="color: #7e7e7e;"> *</span>
<span style="color: #7e7e7e;"> * saturation (sat) and brightness (bright) are 8-bit values.</span>
<span style="color: #7e7e7e;"> *</span>
<span style="color: #7e7e7e;"> * hue (index) is a value between 0 and 767. hue values out of range are</span>
<span style="color: #7e7e7e;"> * rendered as 0.</span>
<span style="color: #7e7e7e;"> *</span>
<span style="color: #7e7e7e;"> *****************************************************************************/</span>
<span style="color: #cc6600;">void</span> hsb2rgb(uint16_t index, uint8_t sat, uint8_t bright, uint8_t color[3])
{
	uint16_t r_temp, g_temp, b_temp;
	uint8_t index_mod;
	uint8_t inverse_sat = (sat ^ 255);

	index = index % 768;
	index_mod = index % 256;

	<span style="color: #cc6600;">if</span> (index &lt; 256)
	{
		r_temp = index_mod ^ 255;
		g_temp = index_mod;
		b_temp = 0;
	}

	<span style="color: #cc6600;">else</span> <span style="color: #cc6600;">if</span> (index &lt; 512)
	{
		r_temp = 0;
		g_temp = index_mod ^ 255;
		b_temp = index_mod;
	}

	<span style="color: #cc6600;">else</span> <span style="color: #cc6600;">if</span> ( index &lt; 768)
	{
		r_temp = index_mod;
		g_temp = 0;
		b_temp = index_mod ^ 255;
	}

	<span style="color: #cc6600;">else</span>
	{
		r_temp = 0;
		g_temp = 0;
		b_temp = 0;
	}

	r_temp = ((r_temp * sat) / 255) + inverse_sat;
	g_temp = ((g_temp * sat) / 255) + inverse_sat;
	b_temp = ((b_temp * sat) / 255) + inverse_sat;

	r_temp = (r_temp * bright) / 255;
	g_temp = (g_temp * bright) / 255;
	b_temp = (b_temp * bright) / 255;

	color[RED] 	= (uint8_t)r_temp;
	color[GREEN]	= (uint8_t)g_temp;
	color[BLUE]	= (uint8_t)b_temp;
}


</pre>
<p>Lianna has optimized the code (below, in the comments), but some of her parentheses are showing up as smilies. I don&#8217;t know how to fix that so I&#8217;ll just add it to the post as preformatted text. Thanks Lianna! Great work!</p>
<p>Lianna&#8217;s version 1:</p>
<pre>
<span style="color: #CC6600;">void</span> hsb2rgbAN1(uint16_t index, uint8_t sat, uint8_t bright, uint8_t color[3]) {
&nbsp;&nbsp;&nbsp;&nbsp;uint8_t&nbsp;temp[5],&nbsp;n&nbsp;=&nbsp;(index&nbsp;&amp;gt;&amp;gt;&nbsp;8)&nbsp;%&nbsp;3;
&nbsp;&nbsp;&nbsp;&nbsp;temp[0]&nbsp;=&nbsp;temp[3]&nbsp;=&nbsp;(uint8_t)((&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(sat&nbsp;^&nbsp;255)&nbsp;&nbsp;*&nbsp;bright)&nbsp;/&nbsp;255);
&nbsp;&nbsp;&nbsp;&nbsp;temp[1]&nbsp;=&nbsp;temp[4]&nbsp;=&nbsp;(uint8_t)(((((&nbsp;(index&nbsp;&amp;amp;&nbsp;255)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;sat)&nbsp;/&nbsp;255)&nbsp;+&nbsp;(sat&nbsp;^&nbsp;255))&nbsp;*&nbsp;bright)&nbsp;/&nbsp;255);
&nbsp;&nbsp;&nbsp;&nbsp;temp[2]&nbsp;=&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(uint8_t)(((((((index&nbsp;&amp;amp;&nbsp;255)&nbsp;^&nbsp;255)&nbsp;*&nbsp;sat)&nbsp;/&nbsp;255)&nbsp;+&nbsp;(sat&nbsp;^&nbsp;255))&nbsp;*&nbsp;bright)&nbsp;/&nbsp;255);
&nbsp;&nbsp;&nbsp;&nbsp;color[RED]&nbsp;&nbsp;=&nbsp;temp[n&nbsp;+&nbsp;2];
&nbsp;&nbsp;&nbsp;&nbsp;color[GREEN]&nbsp;=&nbsp;temp[n&nbsp;+&nbsp;1];
&nbsp;&nbsp;&nbsp;&nbsp;color[BLUE]&nbsp;&nbsp;=&nbsp;temp[n&nbsp;&nbsp;&nbsp;&nbsp;];
}

</pre>
<p>version 2:</p>
<pre>
<span style="color: #CC6600;">void</span> hsb2rgbAN2(uint16_t index, uint8_t sat, uint8_t bright, uint8_t color[3]) {
&nbsp;&nbsp;&nbsp;&nbsp;uint8_t&nbsp;temp[5],&nbsp;n&nbsp;=&nbsp;(index&nbsp;&amp;gt;&amp;gt;&nbsp;8)&nbsp;%&nbsp;3;
<span style="color: #7E7E7E;">//&nbsp;%3&nbsp;not&nbsp;needed&nbsp;if&nbsp;input&nbsp;is&nbsp;constrained,&nbsp;but&nbsp;may&nbsp;be&nbsp;useful&nbsp;for&nbsp;color&nbsp;cycling&nbsp;and/or&nbsp;if&nbsp;modulo&nbsp;constant&nbsp;is&nbsp;fast</span>
&nbsp;&nbsp;&nbsp;&nbsp;uint8_t&nbsp;x&nbsp;=&nbsp;((((index&nbsp;&amp;amp;&nbsp;255)&nbsp;*&nbsp;sat)&nbsp;&amp;gt;&amp;gt;&nbsp;8)&nbsp;*&nbsp;bright)&nbsp;&amp;gt;&amp;gt;&nbsp;8;
<span style="color: #7E7E7E;">//&nbsp;shifts&nbsp;may&nbsp;be&nbsp;added&nbsp;for&nbsp;added&nbsp;speed&nbsp;and&nbsp;precision&nbsp;at&nbsp;the&nbsp;end&nbsp;if&nbsp;fast&nbsp;32&nbsp;bit&nbsp;calculation&nbsp;is&nbsp;available</span>
&nbsp;&nbsp;&nbsp;&nbsp;uint8_t&nbsp;s&nbsp;=&nbsp;((256&nbsp;-&nbsp;sat)&nbsp;*&nbsp;bright)&nbsp;&amp;gt;&amp;gt;&nbsp;8;
&nbsp;&nbsp;&nbsp;&nbsp;temp[0]&nbsp;=&nbsp;temp[3]&nbsp;=&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s;
&nbsp;&nbsp;&nbsp;&nbsp;temp[1]&nbsp;=&nbsp;temp[4]&nbsp;=&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x&nbsp;+&nbsp;s;
&nbsp;&nbsp;&nbsp;&nbsp;temp[2]&nbsp;=&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bright&nbsp;-&nbsp;x&nbsp;&nbsp;&nbsp;&nbsp;;
&nbsp;&nbsp;&nbsp;&nbsp;color[RED]&nbsp;&nbsp;=&nbsp;temp[n&nbsp;+&nbsp;2];
&nbsp;&nbsp;&nbsp;&nbsp;color[GREEN]&nbsp;=&nbsp;temp[n&nbsp;+&nbsp;1];
&nbsp;&nbsp;&nbsp;&nbsp;color[BLUE]&nbsp;&nbsp;=&nbsp;temp[n&nbsp;&nbsp;&nbsp;&nbsp;];
}

</pre>
<div id='linker_widget' class='contextly-widget'></div>]]></content:encoded>
			<wfw:commentRss>http://www.adafruit.com/adablog/?feed=rss2&#038;p=27342</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>New year’s disco ball: first signs of software</title>
		<link>http://www.adafruit.com/blog/2011/12/22/new-year%e2%80%99s-disco-ball-first-signs-of-software/</link>
		<comments>http://www.adafruit.com/blog/2011/12/22/new-year%e2%80%99s-disco-ball-first-signs-of-software/#comments</comments>
		<pubDate>Thu, 22 Dec 2011 19:56:40 +0000</pubDate>
		<dc:creator>PhilB</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[leds-lcds]]></category>
		<category><![CDATA[projects]]></category>
		<category><![CDATA[3D]]></category>
		<category><![CDATA[geometry]]></category>
		<category><![CDATA[led]]></category>
		<category><![CDATA[math]]></category>
		<category><![CDATA[new year]]></category>
		<category><![CDATA[pixels]]></category>
		<category><![CDATA[polyhedra]]></category>
		<category><![CDATA[processing]]></category>

		<guid isPermaLink="false">http://www.adafruit.com/blog/?p=22953</guid>
		<description><![CDATA[Set your calculator to “maths”… Yesterday two basic criteria for our New Year&#8217;s LED project were established: Our “ball” will actually be an icosahedron — a 20-sided shape — for ease of assembly. Each face will have six LEDs, for 120 LEDs total. To create meaningful patterns on the ball, rather than just random blinking, [...]]]></description>
				<content:encoded><![CDATA[<p style="text-align: center"><img class="size-full wp-image-22954 aligncenter" src="http://www.adafruit.com/adablog/wp-content/uploads/2011/12/ico-screen.jpg" alt="" width="600" height="300" /></p>
<p>Set your calculator to “maths”…</p>
<p><span id="more-22953"></span></p>
<p>Yesterday two basic criteria for our <a href="http://www.adafruit.com/blog/2011/12/16/a-little-bit-of-times-square-on-your-desk/">New Year&rsquo;s LED project</a> were established:</p>
<ol>
<li>Our “ball” will actually be an icosahedron — a 20-sided shape — for ease of assembly. Each face will have six LEDs, for 120 LEDs total.</li>
<li>To create meaningful patterns on the ball, rather than just random blinking, it&rsquo;s necessary to know the coordinates of every LED. Therefore, a software model will need to approximate the physical thing.</li>
</ol>
<p>The first step to finding the LED coordinates is to establish the positions of each of the 12 vertices of the icosahedron, even though there are no LEDs there. Once those points are known, all the LEDs can be located through interpolation.</p>
<p>There are a number of ways of constructing an icosahedron…the Greeks were working up the math in 400 B.C., the Scots <em>might</em> have hammered it out in the late Neolithic Age…though some protozoa and viruses had us all beat by half a billion years or so.</p>
<p style="text-align: center"><img class="size-full wp-image-22955 aligncenter" src="http://www.adafruit.com/adablog/wp-content/uploads/2011/12/history.jpg" alt="" width="330" height="110" /></p>
<p>Our “ball” will hang from one vertex at the top, so we&rsquo;ll follow a construction method to suit. When viewed down the vertical axis, there&rsquo;s a clear 5-fold symmetry:</p>
<p style="text-align: center"><img class="size-full wp-image-22956 aligncenter" src="http://www.adafruit.com/adablog/wp-content/uploads/2011/12/symmetry.png" alt="" width="400" height="200" /></p>
<p>Starting with just the radius of those “spokes” from the center (we&rsquo;ll use a value of 1.0 — the units are arbitrary), a couple formulas are all that&rsquo;s needed to find the 3D position of one vertex, and from that to replicate all the remaining vertices by revolving around the center axis. <a href="http://en.wikipedia.org/wiki/Icosahedron#Dimensions">Wikipedia can help with the maths</a>!</p>
<p>From those vertices we can then identify edges and faces. Using two edge vectors from each face, the triangular 1-2-3 layout of the LEDs can be interpolated across this. Wrapped up in just a short Processing sketch, we now have a tumbling 3D icosahedron with LED dots in the desired places! Later, we&rsquo;ll issue colors based on each LED&rsquo;s location.</p>
<p><a href="https://github.com/adafruit/Adafruit-X2-Time-Ball/tree/master/Processing/Ico">A test sketch for Processing is available from the project&rsquo;s Github repository</a>. This does not yet communicate with an Arduino or the LEDs; it is strictly for validating the geometry. It&rsquo;s a good visual match for the model on the table!</p>
<div id='linker_widget' class='contextly-widget'></div>]]></content:encoded>
			<wfw:commentRss>http://www.adafruit.com/adablog/?feed=rss2&#038;p=22953</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lauren Ipsum: Computer Science for Kids</title>
		<link>http://www.adafruit.com/blog/2011/10/10/lauren-ipsum-computer-science-for-kids/</link>
		<comments>http://www.adafruit.com/blog/2011/10/10/lauren-ipsum-computer-science-for-kids/#comments</comments>
		<pubDate>Mon, 10 Oct 2011 19:20:45 +0000</pubDate>
		<dc:creator>adafruit</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[educators]]></category>

		<guid isPermaLink="false">http://www.adafruit.com/blog/2011/10/10/lauren-ipsum-computer-science-for-kids/</guid>
		<description><![CDATA[Lauren Ipsum: Computer Science for Kids. Lauren Ipsum is a children&#8217;s story about computer science. In 20 chapters and ~35K words, she encounters dozens of ideas from timing attacks to algorithm design, the subtle power of names, and how to get a fair flip out of even the most unfair coin. The book is mostly [...]]]></description>
				<content:encoded><![CDATA[<p><img src="http://www.adafruit.com/adablog/wp-content/uploads/2011/10/photo-full.jpg" height="420" width="560" border="0" hspace="2" vspace="2" alt="Photo-Full" /></p>
<p><a href="http://www.laurenipsum.org/mostly-lost">Lauren Ipsum: Computer Science for Kids</a>.</p>
<blockquote><p>
Lauren Ipsum is a children&#8217;s story about computer science. In 20 chapters and ~35K words, she encounters dozens of ideas from timing attacks to algorithm design, the subtle power of names, and how to get a fair flip out of even the most unfair coin.</p>
<p>The book is mostly written, and Ytaelena is working on the illustrations and layout. We&#8217;ve been working on this project over nights &#038; weekends for about a year and a half. In return for a signed pre-sale copy of the book, your pledges will go towards translating the book into Spanish, Portuguese, and other languages.
</p></blockquote>
<p><a href="http://www.kickstarter.com/projects/512752850/lauren-ipsum-computer-science-for-kids">Read more</a>&#8230;</p>
<p>160 pages, dozens of illustrations. Perfect for kids. Available in paperback, Kindle and iPad in December 2011.</p>
<div id='linker_widget' class='contextly-widget'></div>]]></content:encoded>
			<wfw:commentRss>http://www.adafruit.com/adablog/?feed=rss2&#038;p=19997</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Javascript PC Emulator &#8211; Linux in a browser</title>
		<link>http://www.adafruit.com/blog/2011/05/18/javascript-pc-emulator-linux-in-a-browser/</link>
		<comments>http://www.adafruit.com/blog/2011/05/18/javascript-pc-emulator-linux-in-a-browser/#comments</comments>
		<pubDate>Wed, 18 May 2011 17:38:18 +0000</pubDate>
		<dc:creator>adafruit</dc:creator>
				<category><![CDATA[code]]></category>

		<guid isPermaLink="false">http://www.adafruit.com/blog/2011/05/18/javascript-pc-emulator-linux-in-a-browser/</guid>
		<description><![CDATA[Javascript PC Emulator &#8211; Linux in a browser&#8230; This PC emulator is written in Javascript. The emulated hardware consists in: • a 32 bit x86 compatible CPU • a 8259 Programmble Interrupt Controller • a 8254 Programmble Interrupt Timer • a 16450 UART. The code is written in pure Javascript using Typed Arrays which are [...]]]></description>
				<content:encoded><![CDATA[<p><img src="http://www.adafruit.com/adablog/wp-content/uploads/2011/05/PT_101041.jpg" height="399" width="600" border="0" hspace="2" vspace="2" alt="Pt 101041" /></p>
<p><a href="http://bellard.org/jslinux/">Javascript PC Emulator &#8211; Linux in a browser</a>&#8230;</p>
<blockquote><p>This PC emulator is written in Javascript. The emulated hardware consists in:<br />
	•	a 32 bit x86 compatible CPU<br />
	•	a 8259 Programmble Interrupt Controller<br />
	•	a 8254 Programmble Interrupt Timer<br />
	•	a 16450 UART.</p>
<p>The code is written in pure Javascript using Typed Arrays which are available in recent browsers. It was tested with Firefox 4 and Google Chrome 11 on Linux, Window and Mac (it does not work with Chrome 12 beta. As far as I know, it is a bug in the browser). In any case, a fast Javascript engine is needed to have good performance.</p></blockquote>
<p><a href="http://bellard.org/jslinux/tech.html">Tech notes here</a>.</p>
<div id='linker_widget' class='contextly-widget'></div>]]></content:encoded>
			<wfw:commentRss>http://www.adafruit.com/adablog/?feed=rss2&#038;p=14854</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>&#8220;Invent Your Own Computer Games with Python&#8221; &#8211; programming book for kids</title>
		<link>http://www.adafruit.com/blog/2010/06/11/invent-your-own-computer-games-with-python-programming-book-for-kids/</link>
		<comments>http://www.adafruit.com/blog/2010/06/11/invent-your-own-computer-games-with-python-programming-book-for-kids/#comments</comments>
		<pubDate>Fri, 11 Jun 2010 12:26:55 +0000</pubDate>
		<dc:creator>adafruit</dc:creator>
				<category><![CDATA[code]]></category>

		<guid isPermaLink="false">http://www.adafruit.com/blog/2010/06/11/invent-your-own-computer-games-with-python-programming-book-for-kids/</guid>
		<description><![CDATA[&#8220;Invent Your Own Computer Games with Python&#8221; &#8211; programming book for kids via BB. &#8220;Invent Your Own Computer Games with Python&#8221; is a free book that teaches you how to program in the Python programming language. Each chapter gives you the complete source code for a new game, and then teaches the programming concepts from [...]]]></description>
				<content:encoded><![CDATA[<p><img src="http://www.adafruit.com/adablog/wp-content/uploads/2010/06/517FAE-uPHL._SS500_.jpg" height="500" width="500" border="0" hspace="4" vspace="4" alt="517Fae-Uphl. Ss500 " /><br />
<a href="http://inventwithpython.com/">&#8220;Invent Your Own Computer Games with Python&#8221;</a> &#8211; programming book for kids via <a href="http://www.boingboing.net/2010/06/10/cc-licensed-book-on.html?utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed%3A+boingboing%2FiBag+%28Boing+Boing%29">BB</a>.</p>
<blockquote><p>
&#8220;Invent Your Own Computer Games with Python&#8221; is a free book that teaches you how to program in the Python programming language. Each chapter gives you the complete source code for a new game, and then teaches the programming concepts from the example.</p>
<p>&#8220;Invent with Python&#8221; was written to be understandable by kids as young as 10 to 12 years old, although it is great for anyone of any age who has never programmed before.</p>
<p>This second edition has revised and expanded content, including using the Pygame library to make games with graphics, animation, and sound.
</p></blockquote>
<p>You can buy it or read/download it online CC version.</p>
<div id='linker_widget' class='contextly-widget'></div>]]></content:encoded>
			<wfw:commentRss>http://www.adafruit.com/adablog/?feed=rss2&#038;p=4944</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Example code for multi-button checker with debouncing</title>
		<link>http://www.adafruit.com/blog/2009/10/20/example-code-for-multi-button-checker-with-debouncing/</link>
		<comments>http://www.adafruit.com/blog/2009/10/20/example-code-for-multi-button-checker-with-debouncing/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 18:21:38 +0000</pubDate>
		<dc:creator>ladyada</dc:creator>
				<category><![CDATA[arduino]]></category>
		<category><![CDATA[code]]></category>

		<guid isPermaLink="false">http://www.adafruit.com/blog/?p=1868</guid>
		<description><![CDATA[If you have a lot of button inputs for a project, keeping track of them (whether they&#8217;re pressed, just pressed or just released) and debouncing can get a bit hairy. here is some sample code that will keep track of as many buttons as you&#8217;d like. The example shows 6. To change the pins or [...]]]></description>
				<content:encoded><![CDATA[<p><img src="http://www.adafruit.com/adablog/wp-content/uploads/2009/10/6button.jpg" alt="6button" title="6button" width="550" height="458" class="alignnone size-full wp-image-1873" /></p>
<p>If you have a lot of button inputs for a project, keeping track of them (whether they&#8217;re pressed, just pressed or just released) and debouncing can get a bit hairy. here is some sample code that will keep track of as many buttons as you&#8217;d like. The example shows 6. To change the pins or number of buttons, just put them in the array called &#8220;buttons&#8221; and the rest of the code will automatically adjust. (The code is in Arduino-ese but its pretty much just straight up C)<br />
Enjoy!</p>
<pre style="border: 1px solid #CCCCCC; background-color: #f5f5f5; font-family: Fixed, monospace; font-size: 95%;"> 
#define DEBOUNCE 10  <font color = "#777755">// button debouncer, how many ms to debounce, 5+ ms is usually plenty</font>

<font color = "#777755">// here is where we define the buttons that we'll use. button "1" is the first, button "6" is the 6th, etc</font>
<font color = "#996600">byte</font> buttons[] = {14, 15, 16, 17, 18, 19}; <font color = "#777755">// the analog 0-5 pins are also known as 14-19</font>
<font color = "#777755">// This handy macro lets us determine how big the array up above is, by checking the size</font>
#define NUMBUTTONS sizeof(buttons)
<font color = "#777755">// we will track if a button is just pressed, just released, or 'currently pressed' </font>
<font color = "#996600">byte</font> pressed[NUMBUTTONS], justpressed[NUMBUTTONS], justreleased[NUMBUTTONS];

<font color = "#CC6600">void</font> <font color = "#993300"><b>setup</b></font>() {
  <font color = "#996600">byte</font> i;
  
  <font color = "#777755">// set up serial port</font>
  <font color = "#996600">Serial</font>.<font color = "#996600">begin</font>(9600);
  <font color = "#996600">Serial</font>.<font color = "#996600">print</font>(<font color = "#CC0000">"Button checker with "</font>);
  <font color = "#996600">Serial</font>.<font color = "#996600">print</font>(NUMBUTTONS, <font color = "#CC0000">DEC</font>);
  <font color = "#996600">Serial</font>.<font color = "#996600">println</font>(<font color = "#CC0000">" buttons"</font>);

  <font color = "#777755">// pin13 LED</font>
  <font color = "#996600">pinMode</font>(13, <font color = "#CC0000">OUTPUT</font>);
 
  <font color = "#777755">// Make input &#038; enable pull-up resistors on switch pins</font>
  <font color = "#CC6600">for</font> (i=0; i< NUMBUTTONS; i++) {
    <font color = "#996600">pinMode</font>(buttons[i], <font color = "#CC0000">INPUT</font>);
    <font color = "#996600">digitalWrite</font>(buttons[i], <font color = "#CC0000">HIGH</font>);
  }
}

<font color = "#CC6600">void</font> check_switches()
{
  <font color = "#CC6600">static</font> <font color = "#996600">byte</font> previousstate[NUMBUTTONS];
  <font color = "#CC6600">static</font> <font color = "#996600">byte</font> currentstate[NUMBUTTONS];
  <font color = "#CC6600">static</font> <font color = "#996600">long</font> lasttime;
  <font color = "#996600">byte</font> index;

  <font color = "#CC6600">if</font> (<font color = "#996600">millis</font>() < lasttime) {
     <font color = "#777755">// we wrapped around, lets just try again</font>
     lasttime = <font color = "#996600">millis</font>();
  }
  
  <font color = "#CC6600">if</font> ((lasttime + DEBOUNCE) > <font color = "#996600">millis</font>()) {
    <font color = "#777755">// not enough time has passed to debounce</font>
    <font color = "#CC6600">return</font>; 
  }
  <font color = "#777755">// ok we have waited DEBOUNCE milliseconds, lets reset the timer</font>
  lasttime = <font color = "#996600">millis</font>();
  
  <font color = "#CC6600">for</font> (index = 0; index < NUMBUTTONS; index++) {
    justpressed[index] = 0;       <font color = "#777755">// when we start, we clear out the "just" indicators</font>
    justreleased[index] = 0;
     
    currentstate[index] = <font color = "#996600">digitalRead</font>(buttons[index]);   <font color = "#777755">// read the button</font>
    
    <font color = "#777755">/*     </font>
<font color = "#777755">    Serial.print(index, DEC);</font>
<font color = "#777755">    Serial.print(": cstate=");</font>
<font color = "#777755">    Serial.print(currentstate[index], DEC);</font>
<font color = "#777755">    Serial.print(", pstate=");</font>
<font color = "#777755">    Serial.print(previousstate[index], DEC);</font>
<font color = "#777755">    Serial.print(", press=");</font>
<font color = "#777755">    */</font>
    
    <font color = "#CC6600">if</font> (currentstate[index] == previousstate[index]) {
      <font color = "#CC6600">if</font> ((pressed[index] == <font color = "#CC0000">LOW</font>) &#038;&#038; (currentstate[index] == <font color = "#CC0000">LOW</font>)) {
          <font color = "#777755">// just pressed</font>
          justpressed[index] = 1;
      }
      <font color = "#CC6600">else</font> <font color = "#CC6600">if</font> ((pressed[index] == <font color = "#CC0000">HIGH</font>) &#038;&#038; (currentstate[index] == <font color = "#CC0000">HIGH</font>)) {
          <font color = "#777755">// just released</font>
          justreleased[index] = 1;
      }
      pressed[index] = !currentstate[index];  <font color = "#777755">// remember, digital HIGH means NOT pressed</font>
    }
    <font color = "#777755">//Serial.println(pressed[index], DEC);</font>
    previousstate[index] = currentstate[index];   <font color = "#777755">// keep a running tally of the buttons</font>
  }
}


<font color = "#CC6600">void</font> <font color = "#993300"><b>loop</b></font>() {
  check_switches();      <font color = "#777755">// when we check the switches we'll get the current state</font>
  
  <font color = "#CC6600">for</font> (<font color = "#996600">byte</font> i = 0; i < NUMBUTTONS; i++) {
    <font color = "#CC6600">if</font> (justpressed[i]) {
      <font color = "#996600">Serial</font>.<font color = "#996600">print</font>(i, <font color = "#CC0000">DEC</font>);
      <font color = "#996600">Serial</font>.<font color = "#996600">println</font>(<font color = "#CC0000">" Just pressed"</font>); 
      <font color = "#777755">// remember, check_switches() will CLEAR the 'just pressed' flag</font>
    }
    <font color = "#CC6600">if</font> (justreleased[i]) {
      <font color = "#996600">Serial</font>.<font color = "#996600">print</font>(i, <font color = "#CC0000">DEC</font>);
      <font color = "#996600">Serial</font>.<font color = "#996600">println</font>(<font color = "#CC0000">" Just released"</font>);
      <font color = "#777755">// remember, check_switches() will CLEAR the 'just pressed' flag</font>
    }
    <font color = "#CC6600">if</font> (pressed[i]) {
      <font color = "#996600">Serial</font>.<font color = "#996600">print</font>(i, <font color = "#CC0000">DEC</font>);
      <font color = "#996600">Serial</font>.<font color = "#996600">println</font>(<font color = "#CC0000">" pressed"</font>);
      <font color = "#777755">// is the button pressed down at this moment</font>
    }
  }
}
</pre>
<p>if you want, you can even run the button checker in the background, which can make for a very easy interface. Remember that you&#8217;ll need to clear &#8220;just pressed&#8221;, etc. after checking or it will be &#8220;stuck&#8221; on</p>
<pre style="border: 1px solid #CCCCCC; background-color: #f5f5f5; font-family: Fixed, monospace; font-size: 95%;"> 
#define DEBOUNCE 10  <font color = "#777755">// button debouncer, how many ms to debounce, 5+ ms is usually plenty</font>

<font color = "#777755">// here is where we define the buttons that we'll use. button "1" is the first, button "6" is the 6th, etc</font>
<font color = "#996600">byte</font> buttons[] = {14, 15, 16, 17, 18, 19}; <font color = "#777755">// the analog 0-5 pins are also known as 14-19</font>
<font color = "#777755">// This handy macro lets us determine how big the array up above is, by checking the size</font>
#define NUMBUTTONS sizeof(buttons)
<font color = "#777755">// we will track if a button is just pressed, just released, or 'currently pressed' </font>
<font color = "#996600">volatile byte</font> pressed[NUMBUTTONS], justpressed[NUMBUTTONS], justreleased[NUMBUTTONS];

<font color = "#CC6600">void</font> <font color = "#993300"><b>setup</b></font>() {
  <font color = "#996600">byte</font> i;
  
  <font color = "#777755">// set up serial port</font>
  <font color = "#996600">Serial</font>.<font color = "#996600">begin</font>(9600);
  <font color = "#996600">Serial</font>.<font color = "#996600">print</font>(<font color = "#CC0000">"Button checker with "</font>);
  <font color = "#996600">Serial</font>.<font color = "#996600">print</font>(NUMBUTTONS, <font color = "#CC0000">DEC</font>);
  <font color = "#996600">Serial</font>.<font color = "#996600">println</font>(<font color = "#CC0000">" buttons"</font>);

  <font color = "#777755">// pin13 LED</font>
  <font color = "#996600">pinMode</font>(13, <font color = "#CC0000">OUTPUT</font>);
 
  <font color = "#777755">// Make input &#038; enable pull-up resistors on switch pins</font>
  <font color = "#CC6600">for</font> (i=0; i< NUMBUTTONS; i++) {
    <font color = "#996600">pinMode</font>(buttons[i], <font color = "#CC0000">INPUT</font>);
    <font color = "#996600">digitalWrite</font>(buttons[i], <font color = "#CC0000">HIGH</font>);
  }

  <font color = "#777755">// Run timer2 interrupt every 15 ms </font>
  TCCR2A = 0;
  TCCR2B = 1&lt;&lt;CS22 | 1&lt;&lt;CS21 | 1&lt;&lt;CS20;

  <font color = "#777755">//Timer2 Overflow Interrupt Enable</font>
  TIMSK2 |= 1&lt;&lt;TOIE2;

}

SIGNAL(TIMER2_OVF_vect) {
  check_switches();
}

<font color = "#CC6600">void</font> check_switches()
{
  <font color = "#CC6600">static</font> <font color = "#996600">byte</font> previousstate[NUMBUTTONS];
  <font color = "#CC6600">static</font> <font color = "#996600">byte</font> currentstate[NUMBUTTONS];
  <font color = "#CC6600">static</font> <font color = "#996600">long</font> lasttime;
  <font color = "#996600">byte</font> index;

  <font color = "#CC6600">if</font> (<font color = "#996600">millis</font>() < lasttime) {
     <font color = "#777755">// we wrapped around, lets just try again</font>
     lasttime = <font color = "#996600">millis</font>();
  }
  
  <font color = "#CC6600">if</font> ((lasttime + DEBOUNCE) > <font color = "#996600">millis</font>()) {
    <font color = "#777755">// not enough time has passed to debounce</font>
    <font color = "#CC6600">return</font>; 
  }
  <font color = "#777755">// ok we have waited DEBOUNCE milliseconds, lets reset the timer</font>
  lasttime = <font color = "#996600">millis</font>();
  
  <font color = "#CC6600">for</font> (index = 0; index < NUMBUTTONS; index++) {
     
    currentstate[index] = <font color = "#996600">digitalRead</font>(buttons[index]);   <font color = "#777755">// read the button</font>
    
    <font color = "#777755">/*     </font>
<font color = "#777755">    Serial.print(index, DEC);</font>
<font color = "#777755">    Serial.print(": cstate=");</font>
<font color = "#777755">    Serial.print(currentstate[index], DEC);</font>
<font color = "#777755">    Serial.print(", pstate=");</font>
<font color = "#777755">    Serial.print(previousstate[index], DEC);</font>
<font color = "#777755">    Serial.print(", press=");</font>
<font color = "#777755">    */</font>
    
    <font color = "#CC6600">if</font> (currentstate[index] == previousstate[index]) {
      <font color = "#CC6600">if</font> ((pressed[index] == <font color = "#CC0000">LOW</font>) &#038;&#038; (currentstate[index] == <font color = "#CC0000">LOW</font>)) {
          <font color = "#777755">// just pressed</font>
          justpressed[index] = 1;
      }
      <font color = "#CC6600">else</font> <font color = "#CC6600">if</font> ((pressed[index] == <font color = "#CC0000">HIGH</font>) &#038;&#038; (currentstate[index] == <font color = "#CC0000">HIGH</font>)) {
          <font color = "#777755">// just released</font>
          justreleased[index] = 1;
      }
      pressed[index] = !currentstate[index];  <font color = "#777755">// remember, digital HIGH means NOT pressed</font>
    }
    <font color = "#777755">//Serial.println(pressed[index], DEC);</font>
    previousstate[index] = currentstate[index];   <font color = "#777755">// keep a running tally of the buttons</font>
  }
}


<font color = "#CC6600">void</font> <font color = "#993300"><b>loop</b></font>() {
  <font color = "#CC6600">for</font> (<font color = "#996600">byte</font> i = 0; i < NUMBUTTONS; i++) {
    <font color = "#CC6600">if</font> (justpressed[i]) {
      justpressed[i] = 0;
      <font color = "#996600">Serial</font>.<font color = "#996600">print</font>(i, <font color = "#CC0000">DEC</font>);
      <font color = "#996600">Serial</font>.<font color = "#996600">println</font>(<font color = "#CC0000">" Just pressed"</font>); 
      <font color = "#777755">// remember, check_switches() will CLEAR the 'just pressed' flag</font>
    }
    <font color = "#CC6600">if</font> (justreleased[i]) {
      justreleased[i] = 0;
      <font color = "#996600">Serial</font>.<font color = "#996600">print</font>(i, <font color = "#CC0000">DEC</font>);
      <font color = "#996600">Serial</font>.<font color = "#996600">println</font>(<font color = "#CC0000">" Just released"</font>);
      <font color = "#777755">// remember, check_switches() will CLEAR the 'just pressed' flag</font>
    }
    <font color = "#CC6600">if</font> (pressed[i]) {
      <font color = "#996600">Serial</font>.<font color = "#996600">print</font>(i, <font color = "#CC0000">DEC</font>);
      <font color = "#996600">Serial</font>.<font color = "#996600">println</font>(<font color = "#CC0000">" pressed"</font>);
      <font color = "#777755">// is the button pressed down at this moment</font>
    }
  }
}

</pre>
<div id='linker_widget' class='contextly-widget'></div>]]></content:encoded>
			<wfw:commentRss>http://www.adafruit.com/adablog/?feed=rss2&#038;p=1868</wfw:commentRss>
		<slash:comments>26</slash:comments>
		</item>
		<item>
		<title>Add a watch crystal to a Boarduino</title>
		<link>http://www.adafruit.com/blog/2008/04/12/add-a-watch-crystal-to-a-boarduino/</link>
		<comments>http://www.adafruit.com/blog/2008/04/12/add-a-watch-crystal-to-a-boarduino/#comments</comments>
		<pubDate>Sat, 12 Apr 2008 17:48:28 +0000</pubDate>
		<dc:creator>ladyada</dc:creator>
				<category><![CDATA[arduino]]></category>
		<category><![CDATA[code]]></category>

		<guid isPermaLink="false">http://www.ladyada.net/rant/2008/04/add-a-watch-crystal-to-a-boarduino/</guid>
		<description><![CDATA[If you want to make a clock with an Arduino/Boarduino/AVR, there is a way to hook up a precision 32khz watch crystal mtbf0 shows you how! pictured above is his LCD clockduino! Trialex followed up with a really-big-7-segment clock (in the same thread)]]></description>
				<content:encoded><![CDATA[<p><img src="http://farm3.static.flickr.com/2208/2207635811_a084c2d8e9.jpg" alt="" /><br />
If you want to make a clock with an Arduino/Boarduino/AVR, there is a way to hook up a precision 32khz watch crystal<br />
<a href="http://www.ladyada.net/forums/viewtopic.php?t=4418"><br />
mtbf0 shows you how!</a> pictured above is his LCD clockduino!</p>
<p>Trialex followed up with a really-big-7-segment clock (in the same thread)<br />
<a href='http://www.adafruit.com/adablog/wp-content/uploads/2008/04/dsc01341smallmu7.jpg' title='dsc01341smallmu7.jpg'><img src='http://www.adafruit.com/adablog/wp-content/uploads/2008/04/dsc01341smallmu7-150x112.jpg' alt='dsc01341smallmu7.jpg' /></a></p>
<div id='linker_widget' class='contextly-widget'></div>]]></content:encoded>
			<wfw:commentRss>http://www.adafruit.com/adablog/?feed=rss2&#038;p=144</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>SpokePOVsoft update</title>
		<link>http://www.adafruit.com/blog/2007/07/17/spokepovsoft-update/</link>
		<comments>http://www.adafruit.com/blog/2007/07/17/spokepovsoft-update/#comments</comments>
		<pubDate>Tue, 17 Jul 2007 22:42:54 +0000</pubDate>
		<dc:creator>ladyada</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[spokepov]]></category>

		<guid isPermaLink="false">http://www.ladyada.net/rant/2007/07/spokepovsoft-update/</guid>
		<description><![CDATA[I had a bug that caused serial port support to suddenly stop working and there was a corrupt .dmg file so here is a new set of packages with some updates! Port delay is definable. SpokePOV used to &#8216;guess&#8217; what the correct delay is but I think it might be wiser to have the user [...]]]></description>
				<content:encoded><![CDATA[<p><a href='http://www.ladyada.net/make/spokepov/' title='multibank.gif'><img src='http://www.adafruit.com/adablog/wp-content/uploads/2007/07/multibank.gif' alt='multibank.gif' /></a><br />
I had a bug that caused serial port support to suddenly stop working and there was a corrupt .dmg file so here is a new set of packages with some updates!</p>
<ul>
<li>Port delay is definable. SpokePOV used to &#8216;guess&#8217; what the correct delay is but I think it might be wiser to have the user tweak it as necessary</li>
<li>Support for up to 32 banks of memory. What you need so much for I have no idea but hey, its there now!</li>
<li>Windows version now comes with a spiffy installer. Just like Real Software!</li>
</ul>
<div id='linker_widget' class='contextly-widget'></div>]]></content:encoded>
			<wfw:commentRss>http://www.adafruit.com/adablog/?feed=rss2&#038;p=85</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>S3 makes website hosting reasonable again</title>
		<link>http://www.adafruit.com/blog/2007/04/02/s3-makes-website-hosting-reasonable-again/</link>
		<comments>http://www.adafruit.com/blog/2007/04/02/s3-makes-website-hosting-reasonable-again/#comments</comments>
		<pubDate>Tue, 03 Apr 2007 03:09:33 +0000</pubDate>
		<dc:creator>ladyada</dc:creator>
				<category><![CDATA[code]]></category>
		<category><![CDATA[kits]]></category>
		<category><![CDATA[projects]]></category>
		<category><![CDATA[site updates]]></category>

		<guid isPermaLink="false">http://www.ladyada.net/rant/2007/04/s3-makes-website-hosting-reasonable-again/</guid>
		<description><![CDATA[Amazon&#8217;s S3 (Simple Storage Service) isn&#8217;t new, but its certainly gaining traction. Its a wonderful product for people who have a lot of content on their site (images, video, downloads, pdfs) but not a lot of money. Data storage costs $0.15 per GB-Month (prorated), and $0.20 per GB. No minimums, rounded up to the nearest [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.amazon.com/gp/browse.html?node=16427261">Amazon&rsquo;s S3 (Simple Storage Service)</a> isn&rsquo;t new, but its certainly gaining traction. Its a wonderful product for people who have a lot of content on their site (images, video, downloads, pdfs) but not a lot of money. Data storage costs $0.15 per GB-Month (prorated), and $0.20 per GB. No minimums, rounded up to the nearest cent.</p>
<p>There are a lot of great providers out there (I use <a href="http://www.laughingsquid.net">Laughing Squid</a> and highly recommend it) but even LS&rsquo;s ‘largest&rsquo; package is too small for <a href="http://www.ladyada.net">ladyada.net</a>… What to do? Easy: Host all that bulky content at S3, then use <a href="http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html">mod_rewrite</a> to reroute it over to S3. (You could also do it with php, asp or similar for higher &rsquo;security&rsquo; but mod_rewrite is lighter and good enough for me)</p>
<p><img src="http://www.ladyada.net/images/mintyboost/assemblyv12/inductorusbplace_t.jpg" alt="" width=200 /><br />
For example, this image has the url reference “http://www.ladyada.net/images/mintyboost/assemblyv12/inductorusbplace_t.jpg” but if you access that url in your browser, it is automatically rewritten by apache to http://s3.amazonaws.com/ladyadanet_mintyboost/assemblyv12/inductorusbplace_t.jpg</p>
<p>(same with my research pdf, a big pdf that easily accounted for 500M a day of traffic at its peak! http://www.ladyada.net/media/common/thesis.pdf -> http://s3.amazonaws.com/ladyadanet_common/thesis.pdf , S3 doesn&rsquo;t care what the data is or how its encoded)</p>
<p>Of course mod_rewrite is not necessary, you can always just directly reference s3.amazonaws.com but that makes it harder to move the content around if you decide to eventually go with another service (or if s3 goes away one day!)</p>
<p>OK so, what&rsquo;s the point and what does this have to do with electronics, eh? Well one of the killer apps of open source and public domain electronics is documentation. That means media. And media storage, backup and transfer is extremely expensive for the everyday person. It becomes increasingly difficult to host a project when one digg-storm or slashdotting makes that ‘free&rsquo; webpage account go down.</p>
<p>Edit: I use the <a href="http://www.rjonna.com/ext/s3fox.php">Firefox S3 plugin</a> to upload and set the access control on my files.</p>
<p>Are you using S3 or something similar for your projects, kits or documentation? Leave a comment or email! Its always interesting to see what other people are doing in this space.</p>
<div id='linker_widget' class='contextly-widget'></div>]]></content:encoded>
			<wfw:commentRss>http://www.adafruit.com/adablog/?feed=rss2&#038;p=72</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>You have defeated IE6! You gain 12 EXP and 4 GOLD!</title>
		<link>http://www.adafruit.com/blog/2007/02/16/you-have-defeated-ie6-you-gain-12-exp-and-4-gold/</link>
		<comments>http://www.adafruit.com/blog/2007/02/16/you-have-defeated-ie6-you-gain-12-exp-and-4-gold/#comments</comments>
		<pubDate>Fri, 16 Feb 2007 10:02:09 +0000</pubDate>
		<dc:creator>ladyada</dc:creator>
				<category><![CDATA[code]]></category>

		<guid isPermaLink="false">http://www.ladyada.net/rant/?p=49</guid>
		<description><![CDATA[I finally got around to rewriting the flickrnotes code i wrote to support IE6/7 as well as overlib. Ironically, as a side effect, I had to do this funky opacity thing because in IE you cant have onMouseOver() on an &#8216;empty&#8217; DIV or SPAN tag unless it has a background color. However, background colors with [...]]]></description>
				<content:encoded><![CDATA[<p>I finally got around to rewriting the flickrnotes code i wrote to support IE6/7 as well as overlib. Ironically, as a side effect, I had to do this funky opacity thing because in IE you cant have onMouseOver() on an &#8216;empty&#8217; DIV or SPAN tag unless it has a background color. However, background colors with opacity work just fine.<br />
Hence:<br />
<script language="Javascript" src="http://www.ladyada.net/flickrnotes.php?156025389"></script><noscript><a href="http://www.flickr.com/photos/ladyada/156025389/"> <img src="http://static.flickr.com/61/156025389_9c75f4fa5c.jpg" /> </a> </noscript><br />
One could always just keep the Opacity 0% and mess with outlines but i kinda got to liking this look.</p>
<p><a href="http://www.ladyada.net/flickrnotes.txt">Download it here</a>  (and rename it to a .php) you will need <a href="http://www.bosrup.com/web/overlib/">overlib.js</a> (4.21 is what i use) installed too. <a href="http://www.ladyada.net/flickrtest.html">An example page is here, read the source for an example.</a></p>
<div id='linker_widget' class='contextly-widget'></div>]]></content:encoded>
			<wfw:commentRss>http://www.adafruit.com/adablog/?feed=rss2&#038;p=49</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Updated MIDIsense software, now for Mac too!</title>
		<link>http://www.adafruit.com/blog/2007/01/11/updated-midisense-software-now-for-mac-too/</link>
		<comments>http://www.adafruit.com/blog/2007/01/11/updated-midisense-software-now-for-mac-too/#comments</comments>
		<pubDate>Fri, 12 Jan 2007 04:53:42 +0000</pubDate>
		<dc:creator>ladyada</dc:creator>
				<category><![CDATA[announce]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[kits]]></category>
		<category><![CDATA[midisense]]></category>

		<guid isPermaLink="false">http://www.ladyada.net/rant/?p=45</guid>
		<description><![CDATA[I fixed some icky problems (in wxMIDI!) and now the MIDIsense software is crosscompiling nicely between Mac and Windows, therefore there is now fast and updated software for both platforms. Rad! Download it now!]]></description>
				<content:encoded><![CDATA[<p><img src="http://ladyada.net/images/midisense/soft/mainscreen.gif" /></p>
<p>I fixed some icky problems (in wxMIDI!) and now the MIDIsense software is crosscompiling nicely between Mac and Windows, therefore there is now fast and updated software for both platforms. Rad! <a href="http://www.ladyada.net/make/midisense/download.html">Download it now!</a></p>
<div id='linker_widget' class='contextly-widget'></div>]]></content:encoded>
			<wfw:commentRss>http://www.adafruit.com/adablog/?feed=rss2&#038;p=606</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Windows MIDIsense software</title>
		<link>http://www.adafruit.com/blog/2006/10/21/windows-midisense-software/</link>
		<comments>http://www.adafruit.com/blog/2006/10/21/windows-midisense-software/#comments</comments>
		<pubDate>Sat, 21 Oct 2006 23:27:16 +0000</pubDate>
		<dc:creator>ladyada</dc:creator>
				<category><![CDATA[announce]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[kits]]></category>
		<category><![CDATA[midisense]]></category>

		<guid isPermaLink="false">http://www.ladyada.net/rant/?p=36</guid>
		<description><![CDATA[If you wanted to try out the MIDIsense hardware but didn&#8217;t have a Mac, well I finally finished porting the wxpython code to C++ and its all much faster and more reliable. I also improved the interface and robustness. Try it out and let me know how it goes, available for download from sourceforge]]></description>
				<content:encoded><![CDATA[<p><script language="Javascript" src="http://www.ladyada.net/flickrnotes.php?275674969"></script><noscript><a href="http://www.flickr.com/photos/ladyada/275674969/"> <img xsrc="http://static.flickr.com/82/275674969_3f9a5f23a6.jpg" /> </a> </noscript></p>
<p>If you wanted to try out the MIDIsense hardware but didn&#8217;t have a Mac, well I finally finished porting the wxpython code to C++ and its all much faster and more reliable. I also improved the interface and robustness. Try it out and let me know how it goes, <a href="http://sourceforge.net/project/showfiles.php?group_id=159370 ">available for download from sourceforge</a></p>
<div id='linker_widget' class='contextly-widget'></div>]]></content:encoded>
			<wfw:commentRss>http://www.adafruit.com/adablog/?feed=rss2&#038;p=597</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>embed flickr photos!</title>
		<link>http://www.adafruit.com/blog/2006/02/20/embed-flickr-photos/</link>
		<comments>http://www.adafruit.com/blog/2006/02/20/embed-flickr-photos/#comments</comments>
		<pubDate>Mon, 20 Feb 2006 05:58:02 +0000</pubDate>
		<dc:creator>ladyada</dc:creator>
				<category><![CDATA[code]]></category>

		<guid isPermaLink="false">http://www.ladyada.net/rant/?p=4</guid>
		<description><![CDATA[This weekend I stayed indoors because it was insanely cold, and hacked javascript/php to create a php script that allows one to embed flickr photos into webpages and have the notes show up. Like in midisense sensor soldering instructions (mouseover in the assembly pictures). If you want to grab it, its available for download: flickrnotes.txt [...]]]></description>
				<content:encoded><![CDATA[<p>This weekend I stayed indoors because it was insanely cold, and hacked javascript/php to create a php script that allows one to embed flickr photos into webpages and have the notes show up. Like in <a href="http://www.ladyada.net/make/midisense/makesensor.html">midisense sensor soldering instructions</a> (mouseover in the assembly pictures). If you want to grab it, its available for download: <a href="http://www.ladyada.net/library/flickrnotes.txt">flickrnotes.txt</a> (rename it php of course) you&#8217;ll need php installed, as well as commandline curl (usually /usr/bin/curl) although im sure it could be modifed to use something else. some work has to be done, i intend to one day integrate it with overLIB which makes nice popups. regardless, hooray for notes!</p>
<div id='linker_widget' class='contextly-widget'></div>]]></content:encoded>
			<wfw:commentRss>http://www.adafruit.com/adablog/?feed=rss2&#038;p=4</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using disk

 Served from: www.adafruit.com @ 2013-06-19 16:41:08 by W3 Total Cache -->