<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-1087162989855557355</atom:id><lastBuildDate>Sun, 19 May 2013 07:18:37 +0000</lastBuildDate><category>javascript</category><category>purpose</category><category>WPI</category><category>decorator</category><category>robot</category><category>design-patterns</category><category>open source</category><category>pycon</category><category>dvdrip</category><category>prime</category><category>living robot</category><category>otaku-pride</category><category>define</category><category>beginners</category><category>RSS</category><category>badges</category><category>data visualization</category><category>Resources</category><category>python</category><category>sci-fi quotes</category><category>What in a bot</category><category>hexapod</category><category>lilypad. electronic clothes</category><category>batteries</category><category>progress report</category><category>code</category><category>har har</category><category>twendy-one</category><category>blogs</category><category>stack-overflow</category><category>recommendations</category><category>arduino</category><category>linux</category><category>characteristics of life</category><category>generators</category><category>robotics kit</category><category>django-templates</category><category>pinax</category><category>brain waves</category><category>tool</category><category>robot quotes</category><category>robotics</category><category>alkaline</category><category>howto</category><category>sourceforge</category><category>college</category><category>brain</category><category>battery</category><category>Bot Thoughts</category><category>django</category><category>servo</category><category>mixx</category><category>reddit</category><category>Poll</category><category>queue</category><category>What's in a bot</category><category>copyright</category><category>printable robotics</category><category>asimo</category><category>baby</category><category>software</category><category>multiple servos</category><category>digg</category><category>li-ion</category><category>optimization</category><category>sensor</category><category>search</category><category>Pictures</category><category>anime</category><category>Michael Shimniok</category><category>what's in a life</category><category>social media</category><category>fizzbuzz</category><category>numbers</category><category>web-design</category><category>reader</category><category>packmule</category><title>roboRobert</title><description>robot blog by Jim Robert (robo... Robert)</description><link>http://roborobert.com/</link><managingEditor>noreply@blogger.com (Jim Robert)</managingEditor><generator>Blogger</generator><openSearch:totalResults>48</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/Roborobert" /><feedburner:info uri="roborobert" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>Roborobert</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1087162989855557355.post-7317430963958806755</guid><pubDate>Mon, 27 Sep 2010 17:01:00 +0000</pubDate><atom:updated>2012-09-04T07:52:48.484-07:00</atom:updated><title>Jiaaro.com</title><description>All future posts will be on my new posterous blog, &lt;a href="http://jiaaro.com"&gt;jiaaro.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://jiaaro.com"&gt;Read about Music and tech on jiaaro.com $nbsp;&lt;/a&gt;
&lt;br&gt;&lt;br&gt;
Check out my startup!&lt;br&gt;
&lt;a href="https://www.rootbuzz.com"&gt;Rootbuzz: Hosted Q&amp;A for businesses&lt;/a&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Roborobert?a=n2fPMezU0AE:WNKmLUXsKn4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Roborobert?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Roborobert?a=n2fPMezU0AE:WNKmLUXsKn4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Roborobert?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Roborobert?a=n2fPMezU0AE:WNKmLUXsKn4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Roborobert?i=n2fPMezU0AE:WNKmLUXsKn4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Roborobert/~4/n2fPMezU0AE" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/Roborobert/~3/n2fPMezU0AE/jiaarocom.html</link><author>noreply@blogger.com (Jim Robert)</author><thr:total>38</thr:total><feedburner:origLink>http://roborobert.com/2010/09/jiaarocom.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1087162989855557355.post-7682374118592403463</guid><pubDate>Fri, 11 Jun 2010 13:00:00 +0000</pubDate><atom:updated>2010-06-11T06:02:22.589-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">fizzbuzz</category><title>FizzBuzz</title><description>Fizzbuzz seemed like fun... My 5 min attempt in python:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;for i in range(1, 101):&lt;br /&gt;    fizz = "Fizz" if not (i%3) else ""&lt;br /&gt;    buzz = "Buzz" if not (i%5) else ""&lt;br /&gt;&lt;br /&gt;    print (fizz + buzz) or i&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Roborobert?a=LitEq6Ybg8g:e77fWMr1ORY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Roborobert?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Roborobert?a=LitEq6Ybg8g:e77fWMr1ORY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Roborobert?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Roborobert?a=LitEq6Ybg8g:e77fWMr1ORY:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Roborobert?i=LitEq6Ybg8g:e77fWMr1ORY:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Roborobert/~4/LitEq6Ybg8g" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/Roborobert/~3/LitEq6Ybg8g/fizzbuzz.html</link><author>noreply@blogger.com (Jim Robert)</author><thr:total>0</thr:total><feedburner:origLink>http://roborobert.com/2010/06/fizzbuzz.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1087162989855557355.post-8804150364004045564</guid><pubDate>Wed, 19 May 2010 12:57:00 +0000</pubDate><atom:updated>2010-05-24T17:52:26.165-07:00</atom:updated><title>Interesting stuff</title><description>This is just a short list of technologies I'd like to try out, or am trying out now. Basically just some links I want to remember =D&lt;br /&gt;&lt;br /&gt;&lt;div&gt;Serverside Javascript:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://jaxer.org/"&gt;Aptana Jaxer&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://nodejs.org/"&gt;Node.js&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Weird Languages:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://learnyouahaskell.com/"&gt;Haskell&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.mongodb.org/"&gt;MongoDb&lt;/a&gt;:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;for django... &lt;a href="http://github.com/peterbe/django-mongokit"&gt;mongokit&lt;/a&gt; or &lt;a href="http://hmarr.com/mongoengine/django.html"&gt;mongoengine&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.mongodb.org/display/DOCS/Javascript+Language+Center"&gt;for javascript&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Shorthand languages:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://jashkenas.github.com/coffee-script/"&gt;CoffeeScript&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://shpaml.webfactional.com/"&gt;Shpaml&lt;/a&gt; &lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;edit&lt;/b&gt;: I wrote a &lt;a href="http://bitbucket.org/jiaaro/django-shpaml-template-loader/src"&gt;shpaml template loader&lt;/a&gt; for django. hooray!&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://sass-lang.com/"&gt;Sass&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;It'll probably grow over time. I won't delete anything from the list though. I'll strikeout the ones I'm done with instead :)&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Roborobert?a=tby3vArRQlg:XtA9Et9Rh8c:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Roborobert?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Roborobert?a=tby3vArRQlg:XtA9Et9Rh8c:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Roborobert?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Roborobert?a=tby3vArRQlg:XtA9Et9Rh8c:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Roborobert?i=tby3vArRQlg:XtA9Et9Rh8c:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Roborobert/~4/tby3vArRQlg" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/Roborobert/~3/tby3vArRQlg/things-i-want-to-try.html</link><author>noreply@blogger.com (Jim Robert)</author><thr:total>0</thr:total><feedburner:origLink>http://roborobert.com/2010/05/things-i-want-to-try.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1087162989855557355.post-992861508507767449</guid><pubDate>Mon, 03 May 2010 14:18:00 +0000</pubDate><atom:updated>2010-05-03T07:19:35.903-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">har har</category><title>Why Hacker News/Webfaction was down</title><description>&lt;meta equiv="content-type" content="text/html; charset=utf-8"&gt;&lt;span class="Apple-style-span"  style="font-size:85%;"&gt;Jiaaro (&lt;/span&gt;&lt;a href="http://twitter.com/Jiaaro/status/13305978016" id="eyog" title="twitter" style="color: rgb(85, 26, 139); "&gt;&lt;span class="Apple-style-span"  style="font-size:85%;"&gt;twitter&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-size:85%;"&gt;): &lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:georgia;"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-size:85%;"&gt;oh boy... the datacenter where all my websites are hosted is down :(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;span class="Apple-style-span"  style="font-family:georgia;"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-size:85%;"&gt;mikegoldense (&lt;/span&gt;&lt;a href="http://twitter.com/Jiaaro/status/13306294070" id="kc-s" title="twitter" style="color: rgb(85, 26, 139); "&gt;&lt;span class="Apple-style-span"  style="font-size:85%;"&gt;twitter&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-size:85%;"&gt;): &lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:georgia;"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-size:85%;"&gt;@&lt;/span&gt;&lt;a class="tweet-url username" href="http://twitter.com/Jiaaro" rel="nofollow" title="Jiaaro" style="color: rgb(157, 88, 46); margin-left: 0px; margin-right: 0px; "&gt;&lt;u&gt;&lt;span class="Apple-style-span"  style="font-size:85%;"&gt;Jiaaro&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-size:85%;"&gt; Sorry, Jim. I tripped over the extension cord the datacenter was plugged into this morning. &lt;/span&gt;&lt;a class="hashtag tweet-url" href="http://twitter.com/search?q=%23mybad" rel="nofollow" title="#mybad" style="color: rgb(157, 88, 46); margin-left: 0px; margin-right: 0px; text-decoration: none; "&gt;&lt;span class="Apple-style-span"  style="font-size:85%;"&gt;#mybad&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;span class="Apple-style-span"  style="font-family:georgia;"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-size:85%;"&gt;jiaaro (&lt;a href="http://twitter.com/Jiaaro/status/13306294070" id="a-t1" title="twitter" style="color: rgb(85, 26, 139); "&gt;twitter&lt;/a&gt;): @&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:georgia;"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;&lt;a class="tweet-url username" href="http://twitter.com/mikegoldense" rel="nofollow" title="mikegoldense" style="color: rgb(0, 132, 180); margin-left: 0px; margin-right: 0px; text-decoration: none; "&gt;&lt;span class="Apple-style-span"  style="font-size:85%;"&gt;mikegoldense&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-size:85%;"&gt; damn... I knew we should've used more duct tape on that extension cord&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;&lt;div style="margin-top: 0px; margin-bottom: 0px; "&gt;&lt;span class="Apple-style-span"  style="font-family:georgia;"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-size:85%;"&gt;mikegoldense (&lt;a href="http://twitter.com/mikegoldense/status/13306698318" id="eomh" title="twitter" style="color: rgb(85, 26, 139); "&gt;twitter&lt;/a&gt;): &lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:georgia;"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-size:85%;"&gt;@&lt;/span&gt;&lt;a class="tweet-url username" href="http://twitter.com/Jiaaro" rel="nofollow" title="Jiaaro" style="color: rgb(157, 88, 46); margin-left: 0px; margin-right: 0px; text-decoration: none; "&gt;&lt;span class="Apple-style-span"  style="font-size:85%;"&gt;Jiaaro&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-size:85%;"&gt; Next time, PLEASE DO. You know how clumsy I am. And you've got all these dang blasted datacenters just lying around. YOUKIDSTODAY!&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:georgia;"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-family:georgia;"&gt;&lt;span class="Apple-style-span"  style="color:#333333;"&gt;&lt;span class="Apple-style-span"  style="font-size:85%;"&gt;
&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Roborobert?a=N_rF5jAs1mc:2Y4_nz1Vsr4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Roborobert?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Roborobert?a=N_rF5jAs1mc:2Y4_nz1Vsr4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Roborobert?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Roborobert?a=N_rF5jAs1mc:2Y4_nz1Vsr4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Roborobert?i=N_rF5jAs1mc:2Y4_nz1Vsr4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Roborobert/~4/N_rF5jAs1mc" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/Roborobert/~3/N_rF5jAs1mc/why-hacker-newswebfaction-was-down.html</link><author>noreply@blogger.com (Jim Robert)</author><thr:total>17</thr:total><feedburner:origLink>http://roborobert.com/2010/05/why-hacker-newswebfaction-was-down.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1087162989855557355.post-6310338034028681538</guid><pubDate>Wed, 17 Mar 2010 13:04:00 +0000</pubDate><atom:updated>2010-03-25T21:05:57.941-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">javascript</category><category domain="http://www.blogger.com/atom/ns#">design-patterns</category><category domain="http://www.blogger.com/atom/ns#">decorator</category><title>Decorators in Javascript</title><description>I've found plenty of examples of the Class decorator around the internets, but none of the function decorator I've come to know and love in python, so here it is:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;x = function(msg) {&lt;br /&gt; alert(msg);&lt;br /&gt; return msg;&lt;br /&gt;}&lt;br /&gt;my_decorator = function(fn) {&lt;br /&gt; var that = this;&lt;br /&gt; return function() {&lt;br /&gt;   msg = "Message: " + msg;&lt;br /&gt;   return fn.apply(that, arguments);&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;x = my_decorator(x);&lt;br /&gt;x('qwery');&lt;br /&gt;&lt;br /&gt;// result: an alert that says, "Message: querty"&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Roborobert?a=8wYlKdOs7Yk:_KWGSDacga0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Roborobert?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Roborobert?a=8wYlKdOs7Yk:_KWGSDacga0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Roborobert?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Roborobert?a=8wYlKdOs7Yk:_KWGSDacga0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Roborobert?i=8wYlKdOs7Yk:_KWGSDacga0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Roborobert/~4/8wYlKdOs7Yk" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/Roborobert/~3/8wYlKdOs7Yk/decorators-in-javascript.html</link><author>noreply@blogger.com (Jim Robert)</author><thr:total>0</thr:total><feedburner:origLink>http://roborobert.com/2010/03/decorators-in-javascript.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1087162989855557355.post-8160782164887682962</guid><pubDate>Thu, 18 Feb 2010 19:25:00 +0000</pubDate><atom:updated>2010-02-18T11:31:40.566-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">django-templates</category><category domain="http://www.blogger.com/atom/ns#">django</category><category domain="http://www.blogger.com/atom/ns#">copyright</category><category domain="http://www.blogger.com/atom/ns#">code</category><title>Automatically Update the Copyright Year with Django</title><description>Ever get tired of updating the copyright year on your webpage? Why not update it programmatically? Django templates make it incredibly painless:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;pre&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;code&gt;&lt;div&gt;    &amp;amp;copy; {% now "Y" %} YOUR_NAME_HERE&lt;/div&gt;&lt;/code&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Yeah... it's that easy ;)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Roborobert?a=_8ZoGBDWdPQ:Lx8Fzm4cuIU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Roborobert?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Roborobert?a=_8ZoGBDWdPQ:Lx8Fzm4cuIU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Roborobert?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Roborobert?a=_8ZoGBDWdPQ:Lx8Fzm4cuIU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Roborobert?i=_8ZoGBDWdPQ:Lx8Fzm4cuIU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Roborobert/~4/_8ZoGBDWdPQ" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/Roborobert/~3/_8ZoGBDWdPQ/automatically-update-copyright-year.html</link><author>noreply@blogger.com (Jim Robert)</author><thr:total>3</thr:total><feedburner:origLink>http://roborobert.com/2010/02/automatically-update-copyright-year.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1087162989855557355.post-1338832017759627106</guid><pubDate>Fri, 12 Feb 2010 14:35:00 +0000</pubDate><atom:updated>2010-02-12T06:42:20.061-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">python</category><category domain="http://www.blogger.com/atom/ns#">pycon</category><title>Welcoming a DDOS</title><description>David M Beazley, a very talented pythonista is gathering data for his talk at pycon. He's doing a little research on the GIL and has asked the community for some help.&lt;br /&gt;&lt;br /&gt;You can see some interesting initial data &lt;a href="http://ec2-174-129-96-143.compute-1.amazonaws.com/index.html"&gt;on his test web page&lt;/a&gt; (the one whose server he is asking the community to slam).&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you'd like to contribute, just copy/paste this code into a python interpreter :)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;import urllib2&lt;br /&gt;&lt;br /&gt;count = 0&lt;br /&gt;while True:&lt;br /&gt;   try:&lt;br /&gt;       f = urllib2.urlopen('http://ec2-174-129-96-143.compute-1.amazonaws.com/index.html')&lt;br /&gt;       count += 1&lt;br /&gt;       print count&lt;br /&gt;   except:&lt;br /&gt;       pass&lt;br /&gt;      &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Forgive my lazy exception handling. On occasion you'll get various networking errors as a result of the massive load his server is under like timeouts, or reset-by-peer type stuff. This isn't exactly mission critical code :)&lt;br /&gt;&lt;br /&gt;Can't wait to hear his talk (I'm hoping to get it online since I won't be able to make it to pycon)&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Roborobert?a=YQe4WzraLjw:f7bTBwEvjoY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Roborobert?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Roborobert?a=YQe4WzraLjw:f7bTBwEvjoY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Roborobert?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Roborobert?a=YQe4WzraLjw:f7bTBwEvjoY:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Roborobert?i=YQe4WzraLjw:f7bTBwEvjoY:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Roborobert/~4/YQe4WzraLjw" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/Roborobert/~3/YQe4WzraLjw/welcoming-ddos.html</link><author>noreply@blogger.com (Jim Robert)</author><thr:total>0</thr:total><feedburner:origLink>http://roborobert.com/2010/02/welcoming-ddos.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1087162989855557355.post-1857169660895141420</guid><pubDate>Tue, 29 Dec 2009 20:41:00 +0000</pubDate><atom:updated>2009-12-29T12:47:42.892-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">generators</category><category domain="http://www.blogger.com/atom/ns#">prime</category><category domain="http://www.blogger.com/atom/ns#">python</category><category domain="http://www.blogger.com/atom/ns#">numbers</category><title>An Example of Python Generators in Action</title><description>Here is an interesting example of using a python generator to generate prime numbers&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;&gt;&gt;&gt; def is_prime(num, primes):&lt;br /&gt;...    for prime in primes:&lt;br /&gt;...        if num % prime == 0:&lt;br /&gt;...            return False&lt;br /&gt;...    return True&lt;br /&gt;&lt;br /&gt;&gt;&gt;&gt; def make_primes():&lt;br /&gt;...    current_num = 3&lt;br /&gt;...    primes = [2]&lt;br /&gt;...    while True:&lt;br /&gt;...        if is_prime(current_num, primes):&lt;br /&gt;...            primes.append(current_num)&lt;br /&gt;...            yield current_num&lt;br /&gt;...        current_num +=1&lt;br /&gt;&lt;br /&gt;&gt;&gt;&gt; mp = make_primes()&lt;br /&gt;&gt;&gt;&gt; mp.next()&lt;br /&gt;... 3&lt;br /&gt;&gt;&gt;&gt; mp.next()&lt;br /&gt;... 5&lt;br /&gt;&gt;&gt;&gt; mp.next()&lt;br /&gt;... 7&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;There is still some low hanging fruit as far as speed optimization goes, but I'll leave that as an exercise to the reader.&lt;br /&gt;&lt;br /&gt;As for performance as is, I was able to calculate all the prime numbers up to 10,000,000 using ~20MB of RAM.&lt;br /&gt;&lt;br /&gt;Note that for speed reasons, it is still storing the prime numbers so it WILL eat RAM as you go, but it saves many CPU cycles since there is no need to check against non-prime factors&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Roborobert?a=r4kQbWnhPRY:OxvVycaF5UM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Roborobert?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Roborobert?a=r4kQbWnhPRY:OxvVycaF5UM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Roborobert?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Roborobert?a=r4kQbWnhPRY:OxvVycaF5UM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Roborobert?i=r4kQbWnhPRY:OxvVycaF5UM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Roborobert/~4/r4kQbWnhPRY" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/Roborobert/~3/r4kQbWnhPRY/example-of-python-generators-in-action.html</link><author>noreply@blogger.com (Jim Robert)</author><thr:total>1</thr:total><feedburner:origLink>http://roborobert.com/2009/12/example-of-python-generators-in-action.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1087162989855557355.post-6087722671934883748</guid><pubDate>Wed, 23 Dec 2009 14:33:00 +0000</pubDate><atom:updated>2009-12-23T06:49:05.668-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">django</category><category domain="http://www.blogger.com/atom/ns#">python</category><category domain="http://www.blogger.com/atom/ns#">optimization</category><title>Interators vs list comprehensions</title><description>So I made a discovery today... I was profiling iterators against their list comprehension counterparts and discovered that iterators are actually slower.&lt;br /&gt;&lt;br /&gt;Not always slower though. They're slower if you're evaluating every object in the list.&lt;br /&gt;&lt;br /&gt;Here is my test code:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;def iters():&lt;br /&gt;x = (x+1 for x in xrange(1,10000))&lt;br /&gt;y = (y/1.5 for y in x)&lt;br /&gt;z = [z**2 for z in y]&lt;br /&gt;&lt;br /&gt;def listcomps():&lt;br /&gt;x = [x+1 for x in xrange(1,10000)]&lt;br /&gt;y = [y/1.5 for y in x]&lt;br /&gt;z = [z**2 for z in y]&lt;br /&gt;&lt;br /&gt;&gt;&gt;&gt; %timeit iters()&lt;br /&gt;100 loops, best of 3: 5.38 ms per loop&lt;br /&gt;&lt;br /&gt;&gt;&gt;&gt; %timeit listcomps()&lt;br /&gt;100 loops, best of 3: 4.06 ms per loop&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;I guess I shouldn't be surprised. There has to be some overhead to setting up the iterator, and if there were more elements, or if they were bigger (like django ORM objects), it probably wouldn't be as noticable.&lt;br /&gt;&lt;br /&gt;I'd be interested to hear about practical applications though, so leave a comment =D&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Advantages of the Iterator (even though it's slower)&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Uses less memory, since you don't store those lists in RAM&lt;/li&gt;&lt;li&gt;May actually be faster if you don't operate on all it's elements (useful if you don't know how many you'll use)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Another note&lt;/span&gt;: You can't use those iterators again. Once you've cycled through the elements... that's it. You'll need to re-declare it.&lt;br /&gt;&lt;br /&gt;The RAM saving and deferred execution will probably come in handy in my always-RAM-strapped django apps =D&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Roborobert?a=jPzSXYOCjpc:h94UBKX4_M8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Roborobert?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Roborobert?a=jPzSXYOCjpc:h94UBKX4_M8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Roborobert?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Roborobert?a=jPzSXYOCjpc:h94UBKX4_M8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Roborobert?i=jPzSXYOCjpc:h94UBKX4_M8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Roborobert/~4/jPzSXYOCjpc" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/Roborobert/~3/jPzSXYOCjpc/interator-vs-list-comprehensions.html</link><author>noreply@blogger.com (Jim Robert)</author><thr:total>3</thr:total><feedburner:origLink>http://roborobert.com/2009/12/interator-vs-list-comprehensions.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1087162989855557355.post-6973997537833326338</guid><pubDate>Fri, 04 Dec 2009 13:43:00 +0000</pubDate><atom:updated>2009-12-04T05:52:56.757-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">web-design</category><category domain="http://www.blogger.com/atom/ns#">search</category><title>Site Search beyond keywords</title><description>This is going to be a quick one off, because I'm at work. But I'm putting a little time into our site search app (fixing a bug) and a though occurred to me.&lt;br /&gt;&lt;br /&gt;Right now we are breaking the data into keywords, from various fields (title, description, tags, etc) and giving each keyword a weight on a per-object basis.&lt;br /&gt;&lt;br /&gt;I had a new thought today. Why not log all the past search queries and explicitly check for the top 10% or so of them in every object? Then we could assign a keyword weight to the entire query and get a perfect match on those searches (instead of breaking the query into keywords and searching for objects that have all of them)&lt;br /&gt;&lt;br /&gt;This seems like a reasonable way to make smart, phrase based searches rise to the top&lt;br /&gt;&lt;br /&gt;PS - I may be able to get my django-search app into the open source, since I havn't found any really good, simple search apps to date :/&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Roborobert?a=XB7BZ42P7gc:m4Zixtnt6UM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Roborobert?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Roborobert?a=XB7BZ42P7gc:m4Zixtnt6UM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Roborobert?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Roborobert?a=XB7BZ42P7gc:m4Zixtnt6UM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Roborobert?i=XB7BZ42P7gc:m4Zixtnt6UM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Roborobert/~4/XB7BZ42P7gc" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/Roborobert/~3/XB7BZ42P7gc/site-search-beyond-keywords.html</link><author>noreply@blogger.com (Jim Robert)</author><thr:total>1</thr:total><feedburner:origLink>http://roborobert.com/2009/12/site-search-beyond-keywords.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1087162989855557355.post-7759544329385448048</guid><pubDate>Mon, 28 Sep 2009 18:03:00 +0000</pubDate><atom:updated>2009-09-28T11:20:40.142-07:00</atom:updated><title>Social Share urls</title><description>To share a link on twitter just make a link like this (obviously replace &amp;lt;message&amp;gt; with the message you want the person to tweet):&lt;br /&gt;&lt;br /&gt;http://twitter.com/?status=&amp;lt;message&amp;gt;&lt;br /&gt;&lt;br /&gt;To share something on facebook, just make a link like this:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&amp;lt;a href="javascript:var%20d=document,f='http://www.facebook.com/share',l=d.location,e=encodeURIComponent,p='.php?src=bm&amp;amp;v=4&amp;amp;i=1254161036&amp;amp;u='+e(l.href)+'&amp;amp;t='+e(d.title);1;try{if%20(!/^(.*\.)?facebook\.[^.]*$/.test(l.host))throw(0);share_internal_bookmarklet(p)}catch(z)%20{a=function()%20{if%20(!window.open(f+'r'+p,'sharer','toolbar=0,status=0,resizable=1,width=626,height=436'))l.href=f+p};if%20(/Firefox/.test(navigator.userAgent))setTimeout(a,0);else{a()}}void(0)"&amp;gt;Share on Facebook&amp;lt;/a&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;You can copy/paste the facebook link - it uses javascript to detect the url of the page you are on. If you want to replace the url with a different one, just change &lt;code&gt;e(l.href)&lt;/code&gt; to &lt;code&gt;e('your_url_here')&lt;/code&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Roborobert?a=DASRAVA-FpM:n4OyO-2LuYE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Roborobert?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Roborobert?a=DASRAVA-FpM:n4OyO-2LuYE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Roborobert?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Roborobert?a=DASRAVA-FpM:n4OyO-2LuYE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Roborobert?i=DASRAVA-FpM:n4OyO-2LuYE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Roborobert/~4/DASRAVA-FpM" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/Roborobert/~3/DASRAVA-FpM/social-share-urls.html</link><author>noreply@blogger.com (Jim Robert)</author><thr:total>0</thr:total><feedburner:origLink>http://roborobert.com/2009/09/social-share-urls.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1087162989855557355.post-3579778063671863047</guid><pubDate>Wed, 24 Jun 2009 14:03:00 +0000</pubDate><atom:updated>2009-09-10T19:54:40.360-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">web-design</category><category domain="http://www.blogger.com/atom/ns#">otaku-pride</category><category domain="http://www.blogger.com/atom/ns#">badges</category><category domain="http://www.blogger.com/atom/ns#">pinax</category><category domain="http://www.blogger.com/atom/ns#">django</category><category domain="http://www.blogger.com/atom/ns#">stack-overflow</category><category domain="http://www.blogger.com/atom/ns#">python</category><category domain="http://www.blogger.com/atom/ns#">anime</category><title>Otaku Pride</title><description>Hello,&lt;br /&gt;&lt;br /&gt;I recently began building a &lt;a href="http://www.djangoproject.com/"&gt;Django&lt;/a&gt;/&lt;a href="http://pinaxproject.com/"&gt;Pinax&lt;/a&gt; Clone of &lt;a href="http://stackoverflow.com/"&gt;Stack Overflow&lt;/a&gt; called &lt;a href="http://otakupride.com/"&gt;Otaku Pride&lt;/a&gt; - A website for Anime lovers.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.otakupri.de/"&gt;&lt;img style="cursor: pointer; width: 400px; height: 288px;" src="http://3.bp.blogspot.com/_htgzqPcIGBk/SkI0d2D_PLI/AAAAAAAAAh0/OTMywq2k5fs/s400/OP.png" alt="" id="BLOGGER_PHOTO_ID_5350896994602663090" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I open sourced the "Badges" django app as &lt;a href="http://code.google.com/p/django-badges/"&gt;django-badges on google code&lt;/a&gt; in case you're interested.&lt;br /&gt;&lt;br /&gt;Sorry to make this post so short... It's been a while and I wanted to keep you on the up and up :)&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/Roborobert?a=DOtPHmqfCNo:nNdo8v1-m1Y:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Roborobert?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Roborobert?a=DOtPHmqfCNo:nNdo8v1-m1Y:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Roborobert?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/Roborobert?a=DOtPHmqfCNo:nNdo8v1-m1Y:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/Roborobert?i=DOtPHmqfCNo:nNdo8v1-m1Y:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Roborobert/~4/DOtPHmqfCNo" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/Roborobert/~3/DOtPHmqfCNo/otaku-pride.html</link><author>noreply@blogger.com (Jim Robert)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_htgzqPcIGBk/SkI0d2D_PLI/AAAAAAAAAh0/OTMywq2k5fs/s72-c/OP.png" height="72" width="72" /><thr:total>33</thr:total><feedburner:origLink>http://roborobert.com/2009/06/otaku-pride.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1087162989855557355.post-7012412781107254184</guid><pubDate>Thu, 11 Dec 2008 13:56:00 +0000</pubDate><atom:updated>2010-03-30T14:01:34.212-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">arduino</category><category domain="http://www.blogger.com/atom/ns#">hexapod</category><category domain="http://www.blogger.com/atom/ns#">robot</category><category domain="http://www.blogger.com/atom/ns#">code</category><title>Hexapod source code</title><description>As per request, here is the code to my arduino hexapod. Please note that I am using an&lt;a href="http://www.lynxmotion.com/Product.aspx?productID=395&amp;amp;CategoryID=52"&gt; external servo controller&lt;/a&gt;, so this code simply sends the servo positions via a serial connection.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://roborobert.com/2008/04/i-havnt-forgotten-about-you.html"&gt;More Info (+ youtube video)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I'll try to comment it more fully (and refactor) when finals are over.&lt;br /&gt;&lt;br /&gt;PS - it seems blogger is cutting off the right side of the code... :( You should copy/paste into an editor to see the ends of those arrays&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;/* Reference:&lt;br /&gt;&lt;br /&gt;Horizontal movement:&lt;br /&gt;Right side - INCREASING pulse width moves leg toward BACK&lt;br /&gt;Left side  - DECREASING pulse width moves leg toward BACK&lt;br /&gt;&lt;br /&gt;Vertical movement:&lt;br /&gt;Right side - DECREASING pulse moves leg DOWN&lt;br /&gt;Left side  - INCREASING pulse moves leg DOWN&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;// -------------------------------------------&lt;br /&gt;//           Horizontal Max &amp;amp; Min&lt;br /&gt;// -------------------------------------------&lt;br /&gt;&lt;br /&gt;#define HorzMid 1515&lt;br /&gt;&lt;br /&gt;//  Front Right:&lt;br /&gt;#define frHorzMax 1815&lt;br /&gt;#define frHorzMin 1400&lt;br /&gt;&lt;br /&gt;// Middle Right&lt;br /&gt;#define mrHorzMax 1715&lt;br /&gt;#define mrHorzMin 1415&lt;br /&gt;&lt;br /&gt;// Back Right&lt;br /&gt;#define brHorzMax 1835&lt;br /&gt;#define brHorzMin 1300&lt;br /&gt;&lt;br /&gt;// Front Left&lt;br /&gt;#define flHorzMin 1375&lt;br /&gt;#define flHorzMax 1715&lt;br /&gt;&lt;br /&gt;// Middle Left&lt;br /&gt;#define mlHorzMin 1344&lt;br /&gt;#define mlHorzMax 1555&lt;br /&gt;&lt;br /&gt;// Back Left&lt;br /&gt;#define blHorzMin 1135&lt;br /&gt;#define blHorzMax 1675&lt;br /&gt;&lt;br /&gt;// -------------------------------------------&lt;br /&gt;//            Vertical Max &amp;amp; Min&lt;br /&gt;// -------------------------------------------&lt;br /&gt;// Right side&lt;br /&gt;#define rVertMax 2300&lt;br /&gt;#define rVertMid 1776&lt;br /&gt;#define rVertMin 900&lt;br /&gt;&lt;br /&gt;// Left Side&lt;br /&gt;#define lVertMax 2300&lt;br /&gt;#define lVertMid 1494&lt;br /&gt;#define lVertMin 900&lt;br /&gt;&lt;br /&gt;// -------------------------------------------&lt;br /&gt;//       Servo Controller Channels:&lt;br /&gt;// -------------------------------------------&lt;br /&gt;//                Horizontal Movement:&lt;br /&gt;#define frHorz 0  // Front Right&lt;br /&gt;#define flHorz 1  // Front Left&lt;br /&gt;#define mrHorz 2  // Middle Right&lt;br /&gt;#define mlHorz 3  // Middle Left&lt;br /&gt;#define brHorz 4  // Back Right&lt;br /&gt;#define blHorz 5  // Back Left&lt;br /&gt;&lt;br /&gt;//                Vertical Movement:&lt;br /&gt;#define frVert 6  // Front Right&lt;br /&gt;#define flVert 7  // Front Left&lt;br /&gt;#define mrVert 8  // Middle Right&lt;br /&gt;#define mlVert 9  // Middle Left&lt;br /&gt;#define brVert 10 // Back Right&lt;br /&gt;#define blVert 11 // Back Left&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;// Load Servo data into arrays&lt;br /&gt;int servoNumber[12] = {brHorz, flHorz, mrHorz, blHorz, frHorz, mlHorz, brHorz, flHorz, mrHorz, blHorz, frHorz, mlHorz};&lt;br /&gt;int servoHorzDirection[12] = {-1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1};&lt;br /&gt;int servoVertDirection[12] = {-1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1};&lt;br /&gt;int servoVertMid[12] = {rVertMid, lVertMid, rVertMid, lVertMid, rVertMid, lVertMid, rVertMid, lVertMid, rVertMid, lVertMid, rVertMid, lVertMid};&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;// -------------------------------------------&lt;br /&gt;//              Misc Variables&lt;br /&gt;// -------------------------------------------&lt;br /&gt;&lt;br /&gt;int pulse = 0;        // Amount to pulse the servo&lt;br /&gt;int potPos = 0;&lt;br /&gt;&lt;br /&gt;// -------------------------------------------&lt;br /&gt;//         Run-once Setup function&lt;br /&gt;// -------------------------------------------&lt;br /&gt;void setup() {&lt;br /&gt;Serial.begin(115200);&lt;br /&gt;resetAllServos();&lt;br /&gt;delay(5000);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;// -------------------------------------------&lt;br /&gt;//            Loop-forever Function&lt;br /&gt;// -------------------------------------------&lt;br /&gt;void loop() {&lt;br /&gt;&lt;br /&gt;// walk forward faster and faster&lt;br /&gt;walk(100);&lt;br /&gt;walk(200);&lt;br /&gt;walk(300);&lt;br /&gt;walk(400);&lt;br /&gt;&lt;br /&gt;// relax&lt;br /&gt;delay(1000);&lt;br /&gt;&lt;br /&gt;// walk backward faster and faster&lt;br /&gt;walk(-100);&lt;br /&gt;walk(-200);&lt;br /&gt;walk(-300);&lt;br /&gt;&lt;br /&gt;// relax&lt;br /&gt;delay(1000);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// -------------------------------------------&lt;br /&gt;//              Reset All Servos&lt;br /&gt;// -------------------------------------------&lt;br /&gt;void resetAllServos() {&lt;br /&gt;moveServo(frVert, rVertMid);&lt;br /&gt;moveServo(mrVert, rVertMid);&lt;br /&gt;moveServo(brVert, rVertMid);&lt;br /&gt;&lt;br /&gt;moveServo(flVert, lVertMid);&lt;br /&gt;moveServo(mlVert, lVertMid);&lt;br /&gt;moveServo(blVert, lVertMid);&lt;br /&gt;&lt;br /&gt;moveServo(frHorz, HorzMid);&lt;br /&gt;moveServo(mrHorz, HorzMid);&lt;br /&gt;moveServo(brHorz, HorzMid);&lt;br /&gt;&lt;br /&gt;moveServo(flHorz, HorzMid);&lt;br /&gt;moveServo(mlHorz, HorzMid);&lt;br /&gt;moveServo(blHorz, HorzMid);&lt;br /&gt;&lt;br /&gt;Serial.println("");&lt;br /&gt;delay(1000);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;// -------------------------------------------&lt;br /&gt;//               Move a Servo&lt;br /&gt;// -------------------------------------------&lt;br /&gt;void moveServo(int ServoPin, int PulseWidth) {&lt;br /&gt;Serial.print(" #");&lt;br /&gt;Serial.print(ServoPin); //which servo to move&lt;br /&gt;Serial.print(" P ");&lt;br /&gt;Serial.print(PulseWidth); // the pulse width to send&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// -------------------------------------------&lt;br /&gt;//   Set Amount of Time Servos Take to Move&lt;br /&gt;// -------------------------------------------&lt;br /&gt;void setMoveTime(int moveTime) {&lt;br /&gt;Serial.print(" T "); //temp command (time = 1 second)&lt;br /&gt;Serial.print(moveTime);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// -------------------------------------------&lt;br /&gt;//                   Walk&lt;br /&gt;// -------------------------------------------&lt;br /&gt;void walk(int walkSpeedAndDirection) {&lt;br /&gt;int intermission = 150; // delay between each part (in ms)&lt;br /&gt;int horzDistance = walkSpeedAndDirection; // Distance to have each leg forward (actual distance of one&lt;br /&gt;                       // step is 2*horzDistance because the leg moves horzDistance forward and backward)&lt;br /&gt;int vertHeight = 200; // Total height of each step&lt;br /&gt;&lt;br /&gt;int i;&lt;br /&gt;for (i=5; i!=-1;i--) {&lt;br /&gt; //Vertical Servo1 Up:&lt;br /&gt; moveServo((servoNumber[i] + 6), (servoVertMid[i] + (servoVertDirection[i] * vertHeight)));&lt;br /&gt; //Horzizontal Servo1 to 2/4&lt;br /&gt; moveServo(servoNumber[i], HorzMid);&lt;br /&gt;&lt;br /&gt; //Vertical Servo2 Down:&lt;br /&gt; moveServo((servoNumber[i+1] + 6), servoVertMid[i+1]);&lt;br /&gt; //Horizontal Servo2 to 4/4 (front)&lt;br /&gt; moveServo(servoNumber[i+1], HorzMid + (servoHorzDirection[i+1] * horzDistance));&lt;br /&gt;&lt;br /&gt; //Horizontal Servo3 to 3/4&lt;br /&gt; moveServo(servoNumber[i+2], HorzMid + (servoHorzDirection[i+2] * (horzDistance/2)));&lt;br /&gt;&lt;br /&gt; //Horizontal Servo4 to 2/4 (midpoint)&lt;br /&gt; moveServo(servoNumber[i+3], HorzMid);&lt;br /&gt;&lt;br /&gt; //Horizontal Servo5 to 1/4&lt;br /&gt; moveServo(servoNumber[i+4], HorzMid - (servoHorzDirection[i+4] * (horzDistance/2)));&lt;br /&gt;&lt;br /&gt; //Vertical Servo6 Down:&lt;br /&gt; moveServo((servoNumber[i+5] + 6), servoVertMid[i+5]);&lt;br /&gt; //Horizontal Servo6 to 0/4 (back)&lt;br /&gt; moveServo(servoNumber[i+5], HorzMid - (servoHorzDirection[i+5] * horzDistance));&lt;br /&gt;&lt;br /&gt; //tell the servo controller to execute the commands and wait for the servos to finish&lt;br /&gt; Serial.println();&lt;br /&gt; delay(intermission);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/*&lt;br /&gt;Horizontal movement:&lt;br /&gt;Right side - INCREASING pulse width moves leg toward BACK&lt;br /&gt;Left side  - DECREASING pulse width moves leg toward BACK&lt;br /&gt;&lt;br /&gt;Vertical movement:&lt;br /&gt;Right side - DECREASING pulse moves leg DOWN&lt;br /&gt;Left side  - INCREASING pulse moves leg DOWN&lt;br /&gt;*/&lt;br /&gt;&lt;/pre&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Roborobert?a=6zP8Q07A"&gt;&lt;img src="http://feeds.feedburner.com/~f/Roborobert?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Roborobert?a=ARqlPfzR"&gt;&lt;img src="http://feeds.feedburner.com/~f/Roborobert?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Roborobert?a=oJp8GEF9"&gt;&lt;img src="http://feeds.feedburner.com/~f/Roborobert?i=oJp8GEF9" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Roborobert/~4/uyc5PafL9nI" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/Roborobert/~3/uyc5PafL9nI/hexapod-source-code.html</link><author>noreply@blogger.com (Jim Robert)</author><thr:total>93</thr:total><feedburner:origLink>http://roborobert.com/2008/12/hexapod-source-code.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1087162989855557355.post-8951700212574850629</guid><pubDate>Fri, 13 Jun 2008 06:00:00 +0000</pubDate><atom:updated>2008-06-15T12:45:40.637-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">dvdrip</category><category domain="http://www.blogger.com/atom/ns#">queue</category><category domain="http://www.blogger.com/atom/ns#">sourceforge</category><title>Dvd::Rip Queue 0.1 Beta</title><description>hello all,&lt;br /&gt;&lt;br /&gt;I havn't posted in a while but I &lt;span style="font-style: italic;"&gt;have&lt;/span&gt; written a little program to help with ripping DVDs. It's for use with &lt;a href="http://www.exit1.org/dvdrip/"&gt;DVD::Rip by Joern Reder&lt;/a&gt;. And it queues up the projects so you can leave your computer running over night.&lt;br /&gt;&lt;br /&gt;The program is written in python and pretty thoroughly commented (though all in one file). I hope someone finds this useful. Note: I applied for a SourceForge project space, bur for now, here is the code:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://mixtake.com/roborobert/dvdrip-queue/dvdrip-queue-0.1b.tar.gz"&gt;dvdrip-queue-0.1b.tar.gz&lt;/a&gt;&lt;br /&gt;MD5: 0ab561032354c2e2261838524637d65f&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;update&lt;/span&gt;: The project is now on &lt;a href="http://sourceforge.net/projects/dvdrip-queue/"&gt;sourceForge&lt;/a&gt;. Please &lt;a href="http://sourceforge.net/tracker/?func=add&amp;amp;group_id=231138"&gt;submit bugs&lt;/a&gt; as you find them&lt;br /&gt;&lt;br /&gt;The program is licensed under the GPLv3 so I encourage you to do what you like with it. And Please feel free to comment if you have any problems, I'll respond quick, promise :)&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Roborobert?a=7DlocXlt"&gt;&lt;img src="http://feeds.feedburner.com/~f/Roborobert?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Roborobert?a=LB6xxsGJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/Roborobert?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Roborobert?a=SJXfTSve"&gt;&lt;img src="http://feeds.feedburner.com/~f/Roborobert?i=SJXfTSve" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Roborobert/~4/lE0v6orDhPU" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/Roborobert/~3/lE0v6orDhPU/dvdrip-queue-01-beta.html</link><author>noreply@blogger.com (Jim Robert)</author><thr:total>0</thr:total><feedburner:origLink>http://roborobert.com/2008/06/dvdrip-queue-01-beta.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1087162989855557355.post-3840574949665094705</guid><pubDate>Thu, 01 May 2008 02:04:00 +0000</pubDate><atom:updated>2008-04-30T19:22:26.434-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">arduino</category><category domain="http://www.blogger.com/atom/ns#">hexapod</category><category domain="http://www.blogger.com/atom/ns#">baby</category><title>I havn't forgotten about you!</title><description>Hello all,&lt;br /&gt;&lt;br /&gt;I havn't forgotten about this blog, I've just been really busy learning lots of interesting things!&lt;br /&gt;&lt;br /&gt;Also, doing school work, trying to &lt;a href="http://deathbyprotools.com/"&gt;build up&lt;/a&gt; my &lt;a href="http://mixtake.com/"&gt;recording studio&lt;/a&gt; (shameless plug), and workin on that hexapod.&lt;br /&gt;&lt;br /&gt;Speaking of which, here is a short video of it in operation:&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/v/5qOit5BIKH8&amp;amp;hl=en"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;embed src="http://www.youtube.com/v/5qOit5BIKH8&amp;amp;hl=en" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;This bot was built using the following components:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Arduino Decimilia w/protoshield (from adafruit)&lt;/li&gt;&lt;li&gt;Lynxmotion SSC-32 Servo controller&lt;/li&gt;&lt;li&gt;6 - Hitec HS-645MG Servos&lt;/li&gt;&lt;li&gt;6 - Hitec HS-322HD Servos&lt;/li&gt;&lt;li&gt;6 - sets of pan/tilt servo brackets&lt;br /&gt;&lt;/li&gt;&lt;li&gt;~2 feet of 1/2" PVC Tubing&lt;/li&gt;&lt;li&gt;lots of little miscellaneous screws, washers, nuts, and bolts ammounting to around $5 at your local hardware store&lt;/li&gt;&lt;/ul&gt;I'll do a proper writeup and post code when I get some decently complex functionality out of it...&lt;br /&gt;&lt;br /&gt;Right now I'm just writing functions for things like walking that take speed, direction, and turning radius into consideration.&lt;br /&gt;&lt;br /&gt;I'm trying to make it nice and simple to use so I can start writing AI without having to relearn my own code (that means comment galore)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Next up:&lt;/span&gt;&lt;br /&gt;Adding sensors to give the little lady an idea of her surroundings. Did I mention this particular hex is a gentle fun-loving young female who enjoys walks on the beach and &lt;a href="http://bot-thoughts.blogspot.com/"&gt;firefighters&lt;/a&gt;? Her name is baby, and I have to say she's definately entered the awkward teenaged years about now (notice stumbling all over the computer equipment and cables in the video).&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Roborobert?a=8IcXPK3z"&gt;&lt;img src="http://feeds.feedburner.com/~f/Roborobert?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Roborobert?a=XDsRbRhm"&gt;&lt;img src="http://feeds.feedburner.com/~f/Roborobert?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Roborobert?a=JpcT0tGA"&gt;&lt;img src="http://feeds.feedburner.com/~f/Roborobert?i=JpcT0tGA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Roborobert/~4/pTh6TkUdRT8" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/Roborobert/~3/pTh6TkUdRT8/i-havnt-forgotten-about-you.html</link><author>noreply@blogger.com (Jim Robert)</author><thr:total>8</thr:total><feedburner:origLink>http://roborobert.com/2008/04/i-havnt-forgotten-about-you.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1087162989855557355.post-3497173825073832806</guid><pubDate>Wed, 12 Mar 2008 20:24:00 +0000</pubDate><atom:updated>2008-12-09T21:39:01.488-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">arduino</category><category domain="http://www.blogger.com/atom/ns#">battery</category><category domain="http://www.blogger.com/atom/ns#">batteries</category><category domain="http://www.blogger.com/atom/ns#">servo</category><category domain="http://www.blogger.com/atom/ns#">multiple servos</category><title>Arduinos &amp; servos &amp; batteries: oh my!</title><description>So you want to control more than 2 servos with your arduino... you're in luck! I'm about to tell you how to do it!&lt;br /&gt;&lt;br /&gt;A little bit about servos:&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.societyofrobots.com/images/actuators_servohitec.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 147px; height: 127px;" src="http://www.societyofrobots.com/images/actuators_servohitec.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Whether you're using a separate power supply for the servo or not, &lt;span style="font-weight: bold;"&gt;all grounds (black servo wire)&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; must be connected together&lt;/span&gt;. That includes the ground of the arduino, the ground of the servo, and the ground (negative side)  of the battery or power supply.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Using a separate battery to power the servos is usually a good idea if you're using more than 2 servos. Otherwise you risk damaging your arduino.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Most servos expect between 4.5V and 6V on the red lead (center pin), and a signal on the yellow or white lead to indicate position. This signal is called Pulse width modulation (PWM)&lt;/li&gt;&lt;/ol&gt;Pulse width modulation seems more complicated than it is. Here's how it works.&lt;br /&gt;OK, let's say you have:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;6 servos&lt;/li&gt;&lt;li&gt;Arduino with proto-shield&lt;br /&gt;&lt;/li&gt;&lt;li&gt;A battery of ample size to power the servos&lt;/li&gt;&lt;/ul&gt;The PWM signal I mentioned earlier works like so... Every 20 milliseconds (20ms) the signal goes from 0 Volts (Ground) to 5 Volts for a certain length of time, usually 900 - 2400 microseconds. For most servos 1500 us (microseconds) is the middle of the servo's operational range&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_htgzqPcIGBk/R9hUtDtbcBI/AAAAAAAAAP4/1HyGcetBUkQ/s1600-h/PWM+image.jpg"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_htgzqPcIGBk/R9hUtDtbcBI/AAAAAAAAAP4/1HyGcetBUkQ/s400/PWM+image.jpg" alt="" id="BLOGGER_PHOTO_ID_5176980904729079826" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;so here's how you'd hook up the first servo:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_htgzqPcIGBk/R9h3rTtbcCI/AAAAAAAAAQA/sJFdBk2GEOg/s1600-h/Schematic.png"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_htgzqPcIGBk/R9h3rTtbcCI/AAAAAAAAAQA/sJFdBk2GEOg/s400/Schematic.png" alt="" id="BLOGGER_PHOTO_ID_5177019357571280930" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now the servo has power, everything is grounded, and we're all set to start telling the servo what to do... Looks like we need to write some code! If you're not familiar with programming there is a great &lt;a href="http://www.ladyada.net/learn/arduino/lesson0.html"&gt;tutorial from ladyada&lt;/a&gt;. Otherwise... just use the &lt;a href="http://www.arduino.cc/en/Reference/HomePage"&gt;Reference Page&lt;/a&gt; when you're unclear on something.&lt;br /&gt;&lt;br /&gt;First we need to define some constants. This makes it easy to read the code, and also lets you change the value without going through all your code:&lt;br /&gt;&lt;blockquote style="font-family: courier new; color: rgb(0, 102, 0);"&gt;&lt;pre&gt;#define servoPin 1&lt;/pre&gt;&lt;/blockquote&gt;Now whenever a function requires the pin number of the servo, we'll put &lt;span style="color: rgb(0, 102, 0);font-family:courier new;" &gt;servoPin&lt;/span&gt; instead.&lt;br /&gt;&lt;br /&gt;The next thing we need to do is create two functions. They're required and without them nothing will happen. They functions are called &lt;span style="color: rgb(0, 102, 0);font-family:courier new;" &gt;setup&lt;/span&gt; and &lt;span style="color: rgb(0, 102, 0);font-family:courier new;" &gt;loop&lt;/span&gt;:&lt;br /&gt;&lt;blockquote style="color: rgb(0, 102, 0);"&gt;&lt;pre&gt;void setup() {&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void loop() {&lt;br /&gt;&lt;br /&gt;}&lt;/pre&gt;&lt;/blockquote&gt;First the arduino runs the function called setup one time then proceeds to run the funtion loop over and over until the arduino is turned off. We're going to use the setup function to set Digital pin 1 as an output since that only needs to be done once.&lt;br /&gt;&lt;blockquote style="color: rgb(0, 102, 0);"&gt;&lt;pre&gt;void setup() {&lt;br /&gt;  pinMode(servoPin, OUTPUT);&lt;br /&gt;}&lt;/pre&gt;&lt;/blockquote&gt;Now we need to send the servo a pulse every 20ms so here's how to do it: We need a variable to store the time of the last pulse. We'll call it &lt;span style="color: rgb(0, 102, 0);font-family:courier new;" &gt;lastPulse&lt;/span&gt;. We need to declare it outside the functions because if you declare it inside the setup function the loop function won't be able to see it; this is called &lt;a href="http://irc.essex.ac.uk/www.iota-six.co.uk/c/d5_variable_scope.asp"&gt;variable scope&lt;/a&gt;. I'm going to put the variable declaration just above the &lt;span style="color: rgb(0, 102, 0);font-family:courier new;" &gt;setup&lt;/span&gt; function:&lt;br /&gt;&lt;blockquote style="font-family: courier new; color: rgb(0, 102, 0);"&gt;&lt;pre&gt;long lastPulse = 0;&lt;br /&gt;&lt;br /&gt;void setup() {&lt;br /&gt;...&lt;/pre&gt;&lt;/blockquote&gt;Now we just check if 20ms have passed, and if they have, send a pulse to the servo:&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);font-family:courier new;" &gt;&lt;/span&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 102, 0);font-family:courier new;" &gt;void loop() {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);font-family:courier new;" &gt;    if (millis() - lastPulse &gt; 20) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);font-family:courier new;" &gt;        ...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);font-family:courier new;" &gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);font-family:courier new;" &gt;}&lt;/span&gt;&lt;/pre&gt;&lt;/blockquote&gt;The &lt;span style="color: rgb(0, 102, 0);font-family:courier new;" &gt;millis()&lt;/span&gt; function is essentially a timer. It tells you how much time has passed since the arduino was turned on. if the last pulse happened at 20 ms, and it's currently 35 ms... the arduino will skip the loop and try again, whereas if the last pulse was as 20 sec and it's currently 41ms the arduino will run the code inside the brackets.&lt;br /&gt;&lt;br /&gt;Now it's time to  send the pulse!&lt;br /&gt;&lt;blockquote style="font-family: courier new; color: rgb(0, 102, 0);"&gt;&lt;pre&gt;digitalWrite(servoPin, HIGH);&lt;br /&gt;delayMicroseconds(1500);&lt;br /&gt;digitalWrite(servoPin, LOW);&lt;/pre&gt;&lt;/blockquote&gt;The first &lt;span style="color: rgb(0, 102, 0);font-family:courier new;" &gt;digitalWrite() &lt;/span&gt;sets pin 1 to high (5V), which begins the pulse. It then waits the duration of the pulse width, 1500us in this case, and then sets pin 1 back to low (0v/Ground). There's your pulse!&lt;br /&gt;&lt;br /&gt;One more thing: you need to save the time at the time you sent the pulse so we know how long to wait before we send another:&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);font-family:courier new;" &gt;&lt;blockquote&gt;&lt;pre&gt;lastPulse=millis();&lt;/pre&gt;&lt;/blockquote&gt;&lt;/span&gt;Here's the program so far:&lt;br /&gt;&lt;blockquote style="font-family: courier new; color: rgb(0, 102, 0);"&gt;&lt;pre&gt;#define servoPin 1&lt;br /&gt;&lt;br /&gt;long lastPulse = 0;&lt;br /&gt;&lt;br /&gt;void setup() {&lt;br /&gt;   pinMode(servoPin, OUTPUT);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void loop() {&lt;br /&gt;   if(millis() - lastPulse &gt; 20) {&lt;br /&gt;lastPulse=millis();&lt;br /&gt;&lt;br /&gt;digitalWrite(servoPin, HIGH);&lt;br /&gt;delayMicroseconds(1500);&lt;br /&gt;digitalWrite(servoPin, LOW);&lt;br /&gt;   }&lt;br /&gt;}&lt;/pre&gt;&lt;/blockquote&gt;Now we have some solid code to make one servo move to the middle of it's range and stay there.&lt;br /&gt;&lt;br /&gt;To add the other 5 servos you just hook them up to the 6V Battery in parallel, while making sure to keep everything grounded. Then you hook up each servo's PWM lead to it's own digital i/o pin.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_htgzqPcIGBk/R9iJ3ztbcDI/AAAAAAAAAQI/lTK0Q4QN9aY/s1600-h/Schematic2.png"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_htgzqPcIGBk/R9iJ3ztbcDI/AAAAAAAAAQI/lTK0Q4QN9aY/s400/Schematic2.png" alt="" id="BLOGGER_PHOTO_ID_5177039363528945714" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Lets say we want to set each servo to different set values:&lt;br /&gt;Servo 1: 1000us&lt;br /&gt;Servo 2: 1200us&lt;br /&gt;Servo 3: 1400us&lt;br /&gt;Servo 4: 1600us&lt;br /&gt;Servo 5: 1800us&lt;br /&gt;Servo 6: 2000us&lt;br /&gt;&lt;br /&gt;Now the code is:&lt;br /&gt;&lt;blockquote style="font-family: courier new; color: rgb(0, 102, 0);"&gt;&lt;pre&gt;#define servo1Pin 1&lt;br /&gt;#define servo2Pin 2&lt;br /&gt;#define servo3Pin 3&lt;br /&gt;#define servo4Pin 4&lt;br /&gt;#define servo5Pin 5&lt;br /&gt;#define servo6Pin 6&lt;br /&gt;&lt;br /&gt;long lastPulse = 0;&lt;br /&gt;&lt;br /&gt;void setup() {&lt;br /&gt;pinMode(servo1Pin, OUTPUT);&lt;br /&gt;pinMode(servo2Pin, OUTPUT);&lt;br /&gt;pinMode(servo3Pin, OUTPUT);&lt;br /&gt;pinMode(servo4Pin, OUTPUT);&lt;br /&gt;pinMode(servo5Pin, OUTPUT);&lt;br /&gt;pinMode(servo6Pin, OUTPUT);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void loop() {&lt;br /&gt;   if(millis() - lastPulse &gt; 20) {&lt;br /&gt;lastPulse=millis();&lt;br /&gt;&lt;br /&gt;digitalWrite(servo1Pin, HIGH);&lt;br /&gt;delayMicroseconds(1000);&lt;br /&gt;digitalWrite(servo1Pin, LOW);&lt;br /&gt;&lt;br /&gt;digitalWrite(servo2Pin, HIGH);&lt;br /&gt;delayMicroseconds(1200);&lt;br /&gt;digitalWrite(servo2Pin, LOW);&lt;br /&gt;&lt;br /&gt;digitalWrite(servo3Pin, HIGH);&lt;br /&gt;delayMicroseconds(1400);&lt;br /&gt;digitalWrite(servo3Pin, LOW);&lt;br /&gt;&lt;br /&gt;digitalWrite(servo4Pin, HIGH);&lt;br /&gt;delayMicroseconds(1600);&lt;br /&gt;digitalWrite(servo4Pin, LOW);&lt;br /&gt;&lt;br /&gt;digitalWrite(servo5Pin, HIGH);&lt;br /&gt;delayMicroseconds(1800);&lt;br /&gt;digitalWrite(servo5Pin, LOW);&lt;br /&gt;&lt;br /&gt;digitalWrite(servo6Pin, HIGH);&lt;br /&gt;delayMicroseconds(2000);&lt;br /&gt;digitalWrite(servo6Pin, LOW);&lt;br /&gt;   }&lt;br /&gt;}&lt;/pre&gt;&lt;/blockquote&gt;Not very elegant... but it works.&lt;br /&gt;&lt;br /&gt;What we could do is write a function to send the pulse:&lt;br /&gt;&lt;blockquote style="font-family: courier new; color: rgb(0, 102, 0);"&gt;&lt;pre&gt;void sendPulse(int pinNumber, int pulseWidth) {&lt;br /&gt;digitalWrite(pinNumber, HIGH);&lt;br /&gt;delayMicroseconds(pulseWidth);&lt;br /&gt;digitalWrite(pinNumber, LOW);&lt;br /&gt;}&lt;/pre&gt;&lt;/blockquote&gt;Now the loop function looks like this:&lt;br /&gt;&lt;blockquote style="color: rgb(0, 102, 0); font-family: courier new;"&gt;&lt;pre&gt;void loop() {&lt;br /&gt;if(millis() - lastPulse &gt; 20) {&lt;br /&gt; lastPulse=millis();&lt;br /&gt;&lt;br /&gt; sendPulse(servo1Pin, 1000);&lt;br /&gt; sendPulse(servo2Pin, 1200);&lt;br /&gt; sendPulse(servo3Pin, 1400);&lt;br /&gt; sendPulse(servo4Pin, 1600);&lt;br /&gt; sendPulse(servo5Pin, 1800);&lt;br /&gt; sendPulse(servo6Pin, 2000);&lt;br /&gt;}&lt;br /&gt;}&lt;/pre&gt;&lt;/blockquote&gt;That's much better!&lt;br /&gt;&lt;br /&gt;Here's the finished program... happy coding!&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 102, 0);font-family:courier new;" &gt;#define servo1Pin 1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);font-family:courier new;" &gt;#define servo2Pin 2&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);font-family:courier new;" &gt;#define servo3Pin 3&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);font-family:courier new;" &gt;#define servo4Pin 4&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);font-family:courier new;" &gt;#define servo5Pin 5&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);font-family:courier new;" &gt;#define servo6Pin 6&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);font-family:courier new;" &gt;long lastPulse = 0;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);font-family:courier new;" &gt;void setup() {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);font-family:courier new;" &gt; pinMode(servo1Pin, OUTPUT);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);font-family:courier new;" &gt; pinMode(servo2Pin, OUTPUT);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);font-family:courier new;" &gt; pinMode(servo3Pin, OUTPUT);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);font-family:courier new;" &gt; pinMode(servo4Pin, OUTPUT);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);font-family:courier new;" &gt; pinMode(servo5Pin, OUTPUT);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);font-family:courier new;" &gt; pinMode(servo6Pin, OUTPUT);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);font-family:courier new;" &gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);font-family:courier new;" &gt;void loop() {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);font-family:courier new;" &gt; if(millis() - lastPulse &gt; 20) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);font-family:courier new;" &gt;  lastPulse=millis();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);font-family:courier new;" &gt;  sendPulse(servo1Pin, 1000);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);font-family:courier new;" &gt;  sendPulse(servo2Pin, 1200);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);font-family:courier new;" &gt;  sendPulse(servo3Pin, 1400);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);font-family:courier new;" &gt;  sendPulse(servo4Pin, 1600);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);font-family:courier new;" &gt;  sendPulse(servo5Pin, 1800);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);font-family:courier new;" &gt;  sendPulse(servo6Pin, 2000);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);font-family:courier new;" &gt; }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);font-family:courier new;" &gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);font-family:courier new;" &gt;void sendPulse(int pinNumber, int pulseWidth) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);font-family:courier new;" &gt; digitalWrite(pinNumber, HIGH);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);font-family:courier new;" &gt; delayMicroseconds(pulseWidth);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);font-family:courier new;" &gt; digitalWrite(pinNumber, LOW);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);font-family:courier new;" &gt;}&lt;/span&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Next time I'll be posting an example of how to use external input to control the servos!&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Roborobert?a=Zpvl1uNM"&gt;&lt;img src="http://feeds.feedburner.com/~f/Roborobert?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Roborobert?a=W85Rltlq"&gt;&lt;img src="http://feeds.feedburner.com/~f/Roborobert?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Roborobert?a=IErUL7qD"&gt;&lt;img src="http://feeds.feedburner.com/~f/Roborobert?i=IErUL7qD" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Roborobert/~4/XSgx7SksoWg" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/Roborobert/~3/XSgx7SksoWg/arduinos-servos-batteries-oh-my.html</link><author>noreply@blogger.com (Jim Robert)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_htgzqPcIGBk/R9hUtDtbcBI/AAAAAAAAAP4/1HyGcetBUkQ/s72-c/PWM+image.jpg" height="72" width="72" /><thr:total>7</thr:total><feedburner:origLink>http://roborobert.com/2008/03/arduinos-servos-batteries-oh-my.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1087162989855557355.post-8394962320895595298</guid><pubDate>Wed, 05 Mar 2008 02:40:00 +0000</pubDate><atom:updated>2008-03-04T17:55:03.165-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">open source</category><category domain="http://www.blogger.com/atom/ns#">arduino</category><title>Basic Stamp vs Arduino</title><description>Lots of reviews with similar names to this one say, "here's the info... you decide." Well I'm not going to do that... I'm going to name a winner, so don't touch that dial!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://todbot.com/blog/wp-content/uploads/2006/09/arduino_vs_stamp-350.jpg"&gt;&lt;img style="cursor: pointer; width: 400px;" src="http://todbot.com/blog/wp-content/uploads/2006/09/arduino_vs_stamp-350.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Basic Stamp:&lt;br /&gt;Price: $119&lt;br /&gt;Open Source: No&lt;br /&gt;Awesome: eh...&lt;br /&gt;&lt;br /&gt;Arduino:&lt;br /&gt;Price: $32&lt;br /&gt;Open Source: yes&lt;br /&gt;Awesome: yes&lt;br /&gt;&lt;br /&gt;Well I think that about sums it up ;)&lt;br /&gt;&lt;br /&gt;PS - I don't &lt;span style="font-style: italic;"&gt;really&lt;/span&gt; have anything against the Basic stamp... It was my first microcontroller. it's just that, well...&lt;br /&gt;&lt;span style="font-size:78%;"&gt;Go open source!&lt;/span&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Roborobert?a=kPUiHgGT"&gt;&lt;img src="http://feeds.feedburner.com/~f/Roborobert?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Roborobert?a=znhtf84B"&gt;&lt;img src="http://feeds.feedburner.com/~f/Roborobert?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Roborobert?a=c5VPoHuZ"&gt;&lt;img src="http://feeds.feedburner.com/~f/Roborobert?i=c5VPoHuZ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Roborobert/~4/UpokQ21F14I" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/Roborobert/~3/UpokQ21F14I/basic-stamp-vs-arduino.html</link><author>noreply@blogger.com (Jim Robert)</author><thr:total>5</thr:total><feedburner:origLink>http://roborobert.com/2008/03/basic-stamp-vs-arduino.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1087162989855557355.post-1699131564867206194</guid><pubDate>Sun, 02 Mar 2008 03:21:00 +0000</pubDate><atom:updated>2008-03-02T16:28:15.620-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">robotics</category><category domain="http://www.blogger.com/atom/ns#">batteries</category><category domain="http://www.blogger.com/atom/ns#">li-ion</category><category domain="http://www.blogger.com/atom/ns#">alkaline</category><title>All About Batteries...</title><description>I was doing some research and I discovered a few interesting facts about batteries... I thought I'd share the basics:&lt;br /&gt;&lt;br /&gt;The basic unit batteries are composed of is called a cell. Higher voltage batteries, like a standard 9V, are composed of several cells (6 in this case) wired in series to increase the voltage.&lt;br /&gt;&lt;br /&gt;Each type of battery - alkaline, NiCad, LiIon, etc - has a characteristic voltage for each cell.&lt;br /&gt;&lt;br /&gt;For instance an alkaline battery, like a AA, is approx 1.55 volts. The only difference between a AA and a D battery is how long the battery will last at a certain amount of load.&lt;br /&gt;&lt;br /&gt;I did a little test with a bunch of alkaline batteries and found that they pretty much universally put out 5 Amps... regardless of size. If anyone knows... is this an anomaly or is it actually a characteristic of batteries (I couldn't find the info anywhere).&lt;br /&gt;&lt;br /&gt;But wait... there's good news! If you want to use disposable alkaline batteries - maybe because they're cheap - you're not stuck with 1.5V/5A... you can wire them in series (all in a row) and then add the voltages up, or in parallel (side by side) and add all the currents up. This is pretty common knowledge... so lets move on.&lt;br /&gt;&lt;br /&gt;You can get some good info on how long standard alkaline batteries will last at &lt;a href="http://en.wikipedia.org/wiki/Battery_%28electricity%29"&gt;wikipedia&lt;/a&gt;. This is measured in milliAmp Hours (mAh). A 500mAh battery (which is pretty small) can power a load of 100mA for 5 hours. A more in depth explanation can be found at the aforementioned wikipedia page.&lt;br /&gt;&lt;br /&gt;I'll be posting a follow-up to this post in the near future with additional information, as I collect it.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Roborobert?a=n3gn6X0k"&gt;&lt;img src="http://feeds.feedburner.com/~f/Roborobert?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Roborobert?a=g9ePmB2b"&gt;&lt;img src="http://feeds.feedburner.com/~f/Roborobert?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Roborobert?a=cdlXWVAx"&gt;&lt;img src="http://feeds.feedburner.com/~f/Roborobert?i=cdlXWVAx" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Roborobert/~4/GJYf74zGu64" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/Roborobert/~3/GJYf74zGu64/all-about-batteries.html</link><author>noreply@blogger.com (Jim Robert)</author><thr:total>0</thr:total><feedburner:origLink>http://roborobert.com/2008/02/all-about-batteries.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1087162989855557355.post-5819331563394539831</guid><pubDate>Tue, 26 Feb 2008 19:56:00 +0000</pubDate><atom:updated>2008-02-26T12:23:23.026-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">open source</category><category domain="http://www.blogger.com/atom/ns#">linux</category><category domain="http://www.blogger.com/atom/ns#">robotics</category><category domain="http://www.blogger.com/atom/ns#">Resources</category><title>Robotics Info and Resources for all!</title><description>Sorry it's so ugly... I'm just throwing a text file up on the blog to help out a fellow roboticist/blogger (see: &lt;a href="http://keithsprojects.blogspot.com/"&gt;Keith's Projects&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;RT Linux&lt;/span&gt;:&lt;br /&gt;Can be used in conjunction with OROCOS to make a powerful, responsive software stack for a linux based robot.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.faqs.org/docs/Linux-HOWTO/RTLinux-HOWTO.html"&gt;RT Linux Howto (FAQs.org)&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.rtlinux-gpl.org/"&gt;RTLinux gpl FTP repository&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/RTLinux"&gt;RTLinux on Wikipedia&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;OROCOS&lt;/span&gt;&lt;br /&gt;OROCOS (Open RObot COntrol Software): A set of open source C/C++ libraries for programming [linux based] robots... It looks like you can use these for robot vision... and other complex AI.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.orocos.org/"&gt;RORCOS Official Homepage&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;OROCOS mentioned in &lt;a href="http://en.wikipedia.org/wiki/Robot_software"&gt;wikipedia article "Robot software"&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;URBI&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;Wikipedia: URBI is a cross-platform software platform used to develop applications for robotics and artificial intelligence. It is based on the URBI Language which is a parallel and event-driven script language with a C++ like syntax.&lt;/blockquote&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.urbiforge.com/"&gt;URBI official website&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/URBI"&gt;URBI on wikipedia&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Phidgets&lt;/span&gt;&lt;br /&gt;USB I/O board ; Linux Compatible ; programable in java or C/C++)&lt;br /&gt;&lt;a href="http://www.phidgets.com/"&gt;http://www.phidgets.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Projects&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.linuxjournal.com/article/9103"&gt;Linux based k9 (dog) bot and tricicle based bot&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.neonbox.org/linuxbot/linuxbot.html"&gt;Tankbot w/Webcam&lt;/a&gt;:&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Tips&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://blog.makezine.com/archive/2007/12/soldering_setup_tips.html?CMP=OTC-0D6B48984890"&gt;Soldering Set-up Tips&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.robocommunity.com/blog/1164/RoboDuke-s-Java-Lessons/"&gt;Roboduke's Java Lessons (for robotics)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Competitions&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.darpa.mil/grandchallenge/index.asp"&gt;Darpa Urban Challence (Car automation)&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.robofest.net/"&gt;RoboFest: (General)&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.usfirst.org/"&gt;First competition: (High School?)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Groups/Communities&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.robocommunity.com/"&gt;robocommunity.com&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Read these Articles!&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.linuxdevices.com/articles/AT3782871866"&gt;Embedding Linux in a Mobile Robot&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.edn.com/index.asp?layout=article&amp;amp;articleid=CA6505566"&gt;Robotics platforms and Development tools&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Roborobert?a=oKfHdxBn"&gt;&lt;img src="http://feeds.feedburner.com/~f/Roborobert?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Roborobert?a=Z84KgMMt"&gt;&lt;img src="http://feeds.feedburner.com/~f/Roborobert?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Roborobert?a=PoMhhO2Y"&gt;&lt;img src="http://feeds.feedburner.com/~f/Roborobert?i=PoMhhO2Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Roborobert/~4/dR9M3YI4SVU" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/Roborobert/~3/dR9M3YI4SVU/robotics-info-and-resources-for-all.html</link><author>noreply@blogger.com (Jim Robert)</author><thr:total>5</thr:total><feedburner:origLink>http://roborobert.com/2008/02/robotics-info-and-resources-for-all.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1087162989855557355.post-3076918426444411149</guid><pubDate>Sat, 23 Feb 2008 19:20:00 +0000</pubDate><atom:updated>2008-02-23T11:54:07.739-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">blogs</category><category domain="http://www.blogger.com/atom/ns#">robotics</category><title>Bloggers can do the robot!</title><description>With the increasing popularity of linux, robotics, and other awesome stuff... I thought I'd point out a few blogs that can really &lt;a href="http://www.youtube.com/watch?v=HSoVKUVOnfQ"&gt;do the robot&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;Blogs that DO THE ROBOT:&lt;br /&gt;&lt;a href="http://smart-machines.blogspot.com/"&gt;smart-machines.blogspot.com&lt;/a&gt;&lt;br /&gt;&lt;a href="http://bot-thoughts.blogspot.com/"&gt;bot-thoughts.blogspot.com&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.gorobotics.net/"&gt;gorobotics.net&lt;/a&gt;&lt;br /&gt;&lt;a href="http://robots.net/"&gt;robots.net&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.suicidebots.com/"&gt;suicidebots.com&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.uchobby.com/"&gt;uchobby.com&lt;/a&gt;&lt;br /&gt;&lt;a href="http://robotics.penyet.net/"&gt;robotics.penyet.net&lt;/a&gt;&lt;br /&gt;&lt;a href="http://web.harker.org/robotics/"&gt;web.harker.org/robotics&lt;/a&gt;&lt;br /&gt;&lt;a href="http://lis.epfl.ch/resources/podcast/"&gt;lis.epfl.ch/resources/podcast&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Lets get that sense of community rolling!&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Roborobert?a=5zEpXzqH"&gt;&lt;img src="http://feeds.feedburner.com/~f/Roborobert?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Roborobert?a=zKFPGlBQ"&gt;&lt;img src="http://feeds.feedburner.com/~f/Roborobert?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Roborobert?a=XDGgwZiL"&gt;&lt;img src="http://feeds.feedburner.com/~f/Roborobert?i=XDGgwZiL" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Roborobert/~4/Vh5DNDfievw" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/Roborobert/~3/Vh5DNDfievw/bloggers-can-do-robot.html</link><author>noreply@blogger.com (Jim Robert)</author><thr:total>60</thr:total><feedburner:origLink>http://roborobert.com/2008/02/bloggers-can-do-robot.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1087162989855557355.post-2119239554484220320</guid><pubDate>Wed, 20 Feb 2008 17:24:00 +0000</pubDate><atom:updated>2008-02-23T10:59:40.734-08:00</atom:updated><title>So... Robot Arms now?</title><description>Doing it up: &lt;a href="http://spectrum.ieee.org/video?id=221"&gt;Skywalker style&lt;/a&gt;: Dean Kamen (Inventor of the Segway) has made HUGE leaps toward fully operational and very usable prosthetic arms for amputees (see: &lt;a href="http://spectrum.ieee.org/video?id=221"&gt;video&lt;/a&gt;). Dean has been quite popular in tech news lately gracing the main pages of the likes of &lt;a href="http://gizmodo.com/gadgets/robots/dean-kamen-cyborg-arm-243278.php"&gt;Gizmodo&lt;/a&gt;, &lt;a href="http://www.boingboing.net/2007/03/09/ted-dean-kamens-cybo.html"&gt;Boing Boing&lt;/a&gt;, &lt;a href="http://www.engadget.com/2007/05/20/dean-kamens-robotic-prosthetic-arm-gets-detailed-on-video/"&gt;Engadget&lt;/a&gt; (via boing boing), and Making an appearance at &lt;a href="http://www.ted.com/index.php/speakers/view/id/10"&gt;TED&lt;/a&gt; to show off his newest invention.&lt;br /&gt;&lt;br /&gt;Kind of makes me wonder how he has time to actually do anything, eh?&lt;br /&gt;&lt;br /&gt;Anyway, a short trip to &lt;a href="http://en.wikipedia.org/wiki/Dean_Kamen"&gt;wikipedia&lt;/a&gt; reveals this guy has done more than build a cute little scooter, and help the army with it's amputee problems. This guy has done a TON of stuff. The man holds at least &lt;a href="http://www.patentstorm.us/inventors/Dean_L__Kamen-701867.html/"&gt;83 patents&lt;/a&gt; issued between 1996 and present for things ranging from insulin pumps, to little parts/systems he invented for his &lt;a href="http://blogs.business2.com/greenwombat/2007/08/a-visit-to-dean.html"&gt;water purifying engine&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;All in all this guy is pretty amazing... I have to admit. Perhaps a role model? if only he embraced open source...&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Roborobert?a=IVsKkHRq"&gt;&lt;img src="http://feeds.feedburner.com/~f/Roborobert?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Roborobert?a=FJcJNGI6"&gt;&lt;img src="http://feeds.feedburner.com/~f/Roborobert?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Roborobert?a=dzXdM222"&gt;&lt;img src="http://feeds.feedburner.com/~f/Roborobert?i=dzXdM222" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Roborobert/~4/Tqy6kdoiZBw" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/Roborobert/~3/Tqy6kdoiZBw/so-robot-arms-now.html</link><author>noreply@blogger.com (Jim Robert)</author><thr:total>0</thr:total><feedburner:origLink>http://roborobert.com/2008/02/so-robot-arms-now.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1087162989855557355.post-5930756880029242688</guid><pubDate>Wed, 13 Feb 2008 03:48:00 +0000</pubDate><atom:updated>2008-02-12T19:56:49.117-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">recommendations</category><category domain="http://www.blogger.com/atom/ns#">RSS</category><category domain="http://www.blogger.com/atom/ns#">robotics</category><category domain="http://www.blogger.com/atom/ns#">mixx</category><title>Mixx robotics</title><description>I recommend that everyone &lt;a href="http://www.mixx.com/feeds/130030"&gt;subscribe to Mixx robotics&lt;/a&gt; in their RSS reader (you do use an &lt;a href="http://www.google.com/reader"&gt;feed reader&lt;/a&gt; &lt;a href="http://www.sixapart.com/about/feeds"&gt;don't you?&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;Let's get Mixx robotics rollin!&lt;br /&gt;&lt;a href="http://www.mixx.com/feeds/130030"&gt;Subscribe here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;PS - I am not affiliated with Mixx.com nor do I receive payment for recommending them... I just think it's awsome! I will not, however, try to pretend I am not a &lt;a href="http://www.mixx.com/users/justaboutrealjar"&gt;mixx user&lt;/a&gt; - I am, and I love it. I'm really just &lt;a href="http://www.boingboing.net/2007/05/02/digg-users-revolt-ov.html"&gt;sick of digg.&lt;/a&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Roborobert?a=MUEF2wrK"&gt;&lt;img src="http://feeds.feedburner.com/~f/Roborobert?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Roborobert?a=V1FIraae"&gt;&lt;img src="http://feeds.feedburner.com/~f/Roborobert?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Roborobert?a=dC4sgGcj"&gt;&lt;img src="http://feeds.feedburner.com/~f/Roborobert?i=dC4sgGcj" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Roborobert/~4/F4DSpKgJ7_w" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/Roborobert/~3/F4DSpKgJ7_w/mixx-robotics.html</link><author>noreply@blogger.com (Jim Robert)</author><thr:total>0</thr:total><feedburner:origLink>http://roborobert.com/2008/02/mixx-robotics.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1087162989855557355.post-5963693389216978908</guid><pubDate>Sat, 02 Feb 2008 20:08:00 +0000</pubDate><atom:updated>2008-12-09T21:39:01.798-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Michael Shimniok</category><category domain="http://www.blogger.com/atom/ns#">data visualization</category><category domain="http://www.blogger.com/atom/ns#">Bot Thoughts</category><category domain="http://www.blogger.com/atom/ns#">progress report</category><title>How's your progress report coming along?</title><description>So you've begun building a robot... it's even making good progress toward your first... or maybe  even the second main goals for the build and spirits are high. Life is good. Unfortunately these projects always seem to take longer than we think they will... but how do you determine how long a project will take?&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_htgzqPcIGBk/R6TvW9u7g8I/AAAAAAAAAPo/HOwqUNpOREM/s1600-h/ProgressFeb02.gif"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_htgzqPcIGBk/R6TvW9u7g8I/AAAAAAAAAPo/HOwqUNpOREM/s400/ProgressFeb02.gif" alt="" id="BLOGGER_PHOTO_ID_5162514250680992706" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I think Michael Shimniok, of &lt;a href="http://bot-thoughts.blogspot.com/"&gt;Bot Thoughts&lt;/a&gt; has the right idea (see progress report above). A simple list of taks to complete with a rough estimate on the state of their respective completion is definitely a step in the right direction, but with 10 or 15 more minutes of your time, you could put the data in a spread sheet and have it nicely visualized for you.&lt;br /&gt;&lt;br /&gt;If you're wondering if it's really worth it, I'm telling you; the benefits of &lt;a href="http://www.smashingmagazine.com/2007/08/02/data-visualization-modern-approaches/"&gt;data visualization&lt;/a&gt; are &lt;span style="font-weight: bold;"&gt;HUGE. &lt;/span&gt;Take this image from &lt;a href="http://www.time.com/time/covers/20061030/where_we_live/"&gt;time magazine&lt;/a&gt; for example:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.smashingmagazine.com/images/data-visualization/us.jpg"&gt;&lt;img style="cursor: pointer; width: 400px;" src="http://www.smashingmagazine.com/images/data-visualization/us.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The data itself could be interesting to read over, but the way it' s presented in the image, you can understand and take in the data much, much, much, much faster. A chart of population vs region for the entire US would be daunting (see: &lt;a href="http://www.census.gov/population/www/"&gt;US Census Bureau&lt;/a&gt;), but the visualization communicates the information effortlessly in less in 5 seconds. Not to mention, it also makes analyzing the data simply delightful!&lt;br /&gt;&lt;br /&gt;There's also the fun of slowly working accomplishing the goal and watching your progress as you go along. Which is why I think Michael's &lt;a href="http://bot-thoughts.blogspot.com/2008/01/firefighting-competition.html"&gt;Fire Fighting Robot&lt;/a&gt;, has got a fighting chance... even though it &lt;span style="font-style: italic;"&gt;is&lt;/span&gt; his first robot build (The Computer Science background helps too *wink*).&lt;br /&gt;&lt;br /&gt;We all know how I feel about it now... so how do &lt;span style="font-weight: bold;"&gt;you&lt;/span&gt; track your progress?&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Roborobert?a=oqi2nvYe"&gt;&lt;img src="http://feeds.feedburner.com/~f/Roborobert?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Roborobert?a=7DhQj4gk"&gt;&lt;img src="http://feeds.feedburner.com/~f/Roborobert?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Roborobert?a=JQieKiwK"&gt;&lt;img src="http://feeds.feedburner.com/~f/Roborobert?i=JQieKiwK" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Roborobert/~4/-HORzsx2uO4" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/Roborobert/~3/-HORzsx2uO4/hows-your-progress-report-coming-along.html</link><author>noreply@blogger.com (Jim Robert)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_htgzqPcIGBk/R6TvW9u7g8I/AAAAAAAAAPo/HOwqUNpOREM/s72-c/ProgressFeb02.gif" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://roborobert.com/2008/02/hows-your-progress-report-coming-along.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1087162989855557355.post-3361866956185127661</guid><pubDate>Fri, 01 Feb 2008 03:09:00 +0000</pubDate><atom:updated>2008-01-31T19:24:56.831-08:00</atom:updated><title>The Problem with Geeks</title><description>I'd like to start by saying I think the &lt;a href="http://www.ecogeek.org/content/view/1329/"&gt;80% efficiency solar panels&lt;/a&gt; represent great progress... but they also represent a big problem with geeks, nerds, technophiles, and the like. Don't get me wrong... I'm a card carrying member of each and every one of those groups, but something needs to be done.&lt;br /&gt;&lt;br /&gt;Ecogeek begins by talking up the material's characteristics:&lt;br /&gt;&lt;blockquote&gt;The trick is nanotechnology. The surface of the material is printed with miniscule nano-antennae that capture infra-red radiation, the kind that the sun puts out in abundance, and is even available at night. Television antennas absorbe large wavelength energy, so in order to absorb ultra-small wavelength energy (photons) they had to create ultra-small antennas.&lt;/blockquote&gt;Unfortunately we have one little problem:&lt;br /&gt;&lt;blockquote&gt;...there is a bit of a hitch: There's currently no way to capture the energy being created.&lt;/blockquote&gt;&lt;span style="font-weight: bold;"&gt;Note&lt;/span&gt;: A &lt;span style="font-style: italic;"&gt;very&lt;/span&gt; large portion of internet users only read the headline, out of the small portion that read the first paragraph, many of those do not continue either. Hmm... Ecogeek chose to put this trivial tidbit at the end of the 4th paragraph.&lt;br /&gt;&lt;br /&gt;Maybe in the future... the HEADLINE should read: "80% efficient Solar power? Not until you catch it!"&lt;br /&gt;&lt;br /&gt;This, unfortunately, is epidemic in the geeky, social media-y, internet world. Let's keep our claims factual, and non-misleading.&lt;br /&gt;&lt;br /&gt;I promise to work on making up less words.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Roborobert?a=Crf5WkhO"&gt;&lt;img src="http://feeds.feedburner.com/~f/Roborobert?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Roborobert?a=BmHWGcJ9"&gt;&lt;img src="http://feeds.feedburner.com/~f/Roborobert?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Roborobert?a=LTfGsAQO"&gt;&lt;img src="http://feeds.feedburner.com/~f/Roborobert?i=LTfGsAQO" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Roborobert/~4/jSNn6FFWHQI" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/Roborobert/~3/jSNn6FFWHQI/problem-with-geeks.html</link><author>noreply@blogger.com (Jim Robert)</author><thr:total>3</thr:total><feedburner:origLink>http://roborobert.com/2008/01/problem-with-geeks.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-1087162989855557355.post-2203364798784767687</guid><pubDate>Fri, 01 Feb 2008 01:59:00 +0000</pubDate><atom:updated>2008-01-31T18:00:55.938-08:00</atom:updated><title>The Humans are dead...</title><description>BINARY SOLO!!!!&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/v/WGoi1MSGu64&amp;rel=1"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/WGoi1MSGu64&amp;rel=1" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Roborobert?a=aI1JmR6y"&gt;&lt;img src="http://feeds.feedburner.com/~f/Roborobert?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Roborobert?a=A3g642iI"&gt;&lt;img src="http://feeds.feedburner.com/~f/Roborobert?d=52" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Roborobert?a=4qaXhO5k"&gt;&lt;img src="http://feeds.feedburner.com/~f/Roborobert?i=4qaXhO5k" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Roborobert/~4/3Icjb06XZbk" height="1" width="1"/&gt;</description><link>http://feedproxy.google.com/~r/Roborobert/~3/3Icjb06XZbk/humans-are-dead.html</link><author>noreply@blogger.com (Jim Robert)</author><thr:total>0</thr:total><feedburner:origLink>http://roborobert.com/2008/01/humans-are-dead.html</feedburner:origLink></item></channel></rss>
