<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4877234600441129506</id><updated>2012-02-16T03:17:09.057-07:00</updated><category term='linux'/><category term='arduino'/><category term='sonogram'/><category term='kdbom'/><category term='olpc'/><category term='mysql'/><category term='awesome'/><category term='home theater'/><category term='change'/><category term='subprocess'/><category term='ssh'/><category term='language'/><category term='xo'/><category term='gnu'/><category term='diff'/><category term='firefox3.5'/><category term='peter'/><category term='utils'/><category term='jeenode'/><category term='for lab'/><category term='pickle'/><category term='time'/><category term='code formatting'/><category term='htpc'/><category term='phifer'/><category term='obama'/><category term='gpl'/><category term='Morbo'/><category term='4.N.13'/><category term='dict'/><category term='free as in herpes'/><category term='python'/><category term='tee'/><category term='foia'/><category term='unix'/><category term='man cave'/><category term='PHABRIX'/><category term='Julie the she-dork'/><category term='bird'/><category term='dork haus'/><category term='llvm'/><category term='script'/><category term='windows'/><category term='windows7'/><category term='hawk'/><category term='stupid'/><category term='avr'/><category term='google'/><title type='text'>Kaelbot Central</title><subtitle type='html'>Obey The Otter</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>79</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-3845728994737587903</id><published>2011-07-12T14:04:00.000-06:00</published><updated>2011-07-12T14:04:36.489-06:00</updated><title type='text'>Antisocial Adblock List fixed the interwebs</title><content type='html'>If you hate Facebook as much as I do, or even if you like Facebook, but don't want other websites sites slowed to a crawl by 100's of 'like' and 'share' buttons, subscribe to Hubird's Antisocial AdBlock filter list.  It fixes the interwebs.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://adversity.uk.to/"&gt;Adversity Adblock List&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-3845728994737587903?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://adversity.uk.to/' title='Antisocial Adblock List fixed the interwebs'/><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/3845728994737587903/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2011/07/antisocial-adblock-list-fixed-interwebs.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/3845728994737587903'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/3845728994737587903'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2011/07/antisocial-adblock-list-fixed-interwebs.html' title='Antisocial Adblock List fixed the interwebs'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-2623635640018199759</id><published>2011-02-15T22:32:00.001-07:00</published><updated>2011-02-15T22:33:00.454-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Julie the she-dork'/><category scheme='http://www.blogger.com/atom/ns#' term='Morbo'/><category scheme='http://www.blogger.com/atom/ns#' term='sonogram'/><title type='text'>Julie and Morbo Pictures</title><content type='html'>&lt;embed type="application/x-shockwave-flash" src="https://picasaweb.google.com/s/c/bin/slideshow.swf" width="800" height="533" flashvars="host=picasaweb.google.com&amp;hl=en_US&amp;feat=flashalbum&amp;RGB=0x000000&amp;feed=https%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2Fkael.fischer%2Falbumid%2F5574151834955817969%3Falt%3Drss%26kind%3Dphoto%26hl%3Den_US" pluginspage="http://www.macromedia.com/go/getflashplayer"&gt;&lt;/embed&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-2623635640018199759?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/2623635640018199759/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2011/02/julie-and-morbo-pictures.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/2623635640018199759'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/2623635640018199759'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2011/02/julie-and-morbo-pictures.html' title='Julie and Morbo Pictures'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-420444761631622990</id><published>2010-12-11T08:31:00.011-07:00</published><updated>2010-12-11T19:44:29.582-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arduino'/><category scheme='http://www.blogger.com/atom/ns#' term='avr'/><category scheme='http://www.blogger.com/atom/ns#' term='jeenode'/><title type='text'>atmega*8  Hardware Sleep-Wake Toggle</title><content type='html'>While working on some holiday projects, I needed on off switches for some JeeNode based widgets.  It took me a while to get it working well, and I learned some stuff while doing it.  Here is the software and a explanation of the hardware setup.  Enjoy.&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="brush: c"&gt;&lt;br /&gt;/*&lt;br /&gt; SleepWakeToggle&lt;br /&gt;&lt;br /&gt; SUMMARY&lt;br /&gt; Toggles an atmega*8 state from running to lowest power sleep&lt;br /&gt; mode using a hardware interrupt, e.g.  a switch.  Suitable for&lt;br /&gt; Arduino, JeeNode, etc.&lt;br /&gt;&lt;br /&gt; WHY&lt;br /&gt; Battery powered devices last double-plus-much-longer if you power&lt;br /&gt; the chip down when not in use.&lt;br /&gt;&lt;br /&gt; HOW IT WORKS&lt;br /&gt; Interrupts are a way of having your program flow altered by simple&lt;br /&gt; real world events (e.g. passage of time or activation of switches).&lt;br /&gt;&lt;br /&gt; This program demonstrates using a single switch to accomplish two&lt;br /&gt; things: putting the chip in sleep mode and then waking it up.  When&lt;br /&gt; a switch is activated, an interrupt is triggered and program&lt;br /&gt; control is shifted to a function you specify (a callback).  Two&lt;br /&gt; hardware interrupts are available INT0 and INT1.&lt;br /&gt;&lt;br /&gt; Boldly rebinding INT0/INT1 callbacks to the wake and sleep functions&lt;br /&gt; in the callbacks themselves is bad magic, and doesn't seem to work&lt;br /&gt; :-).  So the sleep function is called from loop() after a callback&lt;br /&gt; sets a flag.  This way the callback which triggers sleep (here:&lt;br /&gt; 'toggle') is done before 'void sleep()' actually runs.  This is good&lt;br /&gt; because, the interrupt has to be rebound to 'wake' just before going&lt;br /&gt; in to sleep_mode.&lt;br /&gt;&lt;br /&gt; HARDWARE SETUP&lt;br /&gt; Lowest power sleep mode, SLEEP_MODE_PWR_DOWN, can only respond to a&lt;br /&gt; pin going from high to low. Hence, tie desired pin (2 or 3) to +&lt;br /&gt; with a resistor (i.e. a "pull-up" resistor), and connect a momentary&lt;br /&gt; switch to ground and the pin.&lt;br /&gt;&lt;br /&gt; SOFTWARE SETUP&lt;br /&gt; You will want to provide functions that do something interesting and&lt;br /&gt; that cause the system to be in your desired state before actually&lt;br /&gt; powering down.  These are: "void importantThing()" and "void&lt;br /&gt; prepareToSleep()" below.  The state that is achieved after power up&lt;br /&gt; or reset is selected by setting the global flag buttonPushed in the&lt;br /&gt; setup function.&lt;br /&gt;&lt;br /&gt; Hereby placed in the public domain, December 2010&lt;br /&gt; by Kael Fischer &amp;lt;kael.fischer@gmail.com&gt;&lt;br /&gt;&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;// hardware interrupt stuff&lt;br /&gt;#include &amp;lt;avr/sleep.h&gt;&lt;br /&gt;#define INT0 0&lt;br /&gt;#define INT0_PIN 2&lt;br /&gt;#define INT1 1&lt;br /&gt;#define INT1_PIN 3&lt;br /&gt;&lt;br /&gt;// application specific stuff&lt;br /&gt;#define BLINK_PIN 13&lt;br /&gt;&lt;br /&gt;// global flags&lt;br /&gt;int buttonPushed;&lt;br /&gt;&lt;br /&gt;void importantThing(){&lt;br /&gt; // the 'work' the program does&lt;br /&gt; digitalWrite(BLINK_PIN, HIGH);&lt;br /&gt; delay(1000);&lt;br /&gt; digitalWrite(BLINK_PIN, LOW);&lt;br /&gt; delay(1000);          &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void prepareToSleep(){&lt;br /&gt; // When a button is pushed&lt;br /&gt; // do some prep before sleeping&lt;br /&gt; // to get in the desired state&lt;br /&gt; digitalWrite(BLINK_PIN, LOW);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void wake(){&lt;br /&gt;&lt;br /&gt; // This is the callback that runs when the&lt;br /&gt; // chip is waking up.&lt;br /&gt; buttonPushed=0;&lt;br /&gt;&lt;br /&gt; // Can set variables and check stuff.  Cannot do fancy stuff.&lt;br /&gt; // Program flow returns to line after 'sleep_mode()' in sleep.&lt;br /&gt;&lt;br /&gt; // No code is required here.&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void toggle(){&lt;br /&gt; // set a flag telling system to sleep on next loop iteration.&lt;br /&gt; // this is the normal running state callback triggered by the&lt;br /&gt; // switch.&lt;br /&gt; detachInterrupt(1);    // this seems to be allowed in callback&lt;br /&gt; if (buttonPushed ==0){ // just in case, ignore switch if already&lt;br /&gt;   buttonPushed=1;      // doing it&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void sleep(){&lt;br /&gt; prepareToSleep();  //application specific&lt;br /&gt;&lt;br /&gt; // YOU ARE GETTING SLEEPY.....&lt;br /&gt; set_sleep_mode(SLEEP_MODE_PWR_DOWN); &lt;br /&gt; attachInterrupt(INT1,wake,LOW); // rebind interrupt&lt;br /&gt; sleep_mode(); // sleeping&lt;br /&gt;&lt;br /&gt; // program returns here, after 'wake' callback&lt;br /&gt;&lt;br /&gt; // now back to loop&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void setup() {               &lt;br /&gt; // On Off Toggle setup&lt;br /&gt; pinMode(INT1_PIN, INPUT);  // set switch pin to input&lt;br /&gt;                            // to limit current&lt;br /&gt; attachInterrupt(INT1,toggle,LOW);&lt;br /&gt; buttonPushed=1; // set to 1 = sleep after reset&lt;br /&gt;                 //        0 = run loop after reset&lt;br /&gt;&lt;br /&gt; // app specific setup here&lt;br /&gt; pinMode(BLINK_PIN, OUTPUT); &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void loop() {&lt;br /&gt; if (buttonPushed == 1) {&lt;br /&gt;   sleep();&lt;br /&gt; } else {&lt;br /&gt;   // reset button events to sleep&lt;br /&gt;   attachInterrupt(INT1,toggle,LOW);&lt;br /&gt; }&lt;br /&gt; // do important things&lt;br /&gt; importantThing();&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-420444761631622990?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/420444761631622990/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2010/12/atmega8-hardware-sleep-wake-toggle.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/420444761631622990'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/420444761631622990'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2010/12/atmega8-hardware-sleep-wake-toggle.html' title='atmega*8  Hardware Sleep-Wake Toggle'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-5945850038697625059</id><published>2010-12-05T21:37:00.004-07:00</published><updated>2010-12-05T21:50:45.457-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='awesome'/><category scheme='http://www.blogger.com/atom/ns#' term='dork haus'/><title type='text'>Recent Icicles</title><content type='html'>&lt;div style="text-align:center;margin:0px auto 10px;"&gt;&lt;br /&gt;&lt;embed type="application/x-shockwave-flash" src="http://picasaweb.google.com/s/c/bin/slideshow.swf" width="400" height="267" flashvars="host=picasaweb.google.com&amp;amp;hl=en_US&amp;amp;feat=flashalbum&amp;amp;RGB=0x000000&amp;amp;feed=http%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2Fkael.fischer%2Falbumid%2F5547424589241850993%3Falt%3Drss%26kind%3Dphoto%26hl%3Den_US" pluginspage="http://www.macromedia.com/go/getflashplayer"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;The Dork Haus had some great icicles over Thanksgiving and a few days after.  It was cold.  Click through and check it out at higher resolution: &lt;a href="http://picasaweb.google.com/kael.fischer/DorkHaus?feat=directlink"&gt;Gallery link&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-5945850038697625059?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/5945850038697625059/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2010/12/recent-icicles.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/5945850038697625059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/5945850038697625059'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2010/12/recent-icicles.html' title='Recent Icicles'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-1667478427802663495</id><published>2010-11-20T12:44:00.000-07:00</published><updated>2010-11-20T12:44:53.972-07:00</updated><title type='text'>How To: Disable instant previews in Google search</title><content type='html'>This works like a charm in Chrome.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://thenextweb.com/lifehacks/2010/11/16/how-to-disable-instant-previews-in-google-search/"&gt;How To: Disable instant previews in Google search&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-1667478427802663495?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://thenextweb.com/lifehacks/2010/11/16/how-to-disable-instant-previews-in-google-search/' title='How To: Disable instant previews in Google search'/><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/1667478427802663495/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2010/11/how-to-disable-instant-previews-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/1667478427802663495'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/1667478427802663495'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2010/11/how-to-disable-instant-previews-in.html' title='How To: Disable instant previews in Google search'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-2023225563622325257</id><published>2010-09-30T16:28:00.006-06:00</published><updated>2010-09-30T16:34:32.531-06:00</updated><title type='text'>Swingin' at Whole Foods?</title><content type='html'>&lt;img src="http://2.bp.blogspot.com/_yplfPuKoyB8/TKUPZV9lEnI/AAAAAAAADys/R0xKnwX6WoY/s320/WholeFoodsAffairs.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5522837446106354290" /&gt;&lt;br /&gt;&lt;br /&gt;Whole Foods (inc.) in California always seemed so uptight.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-2023225563622325257?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/2023225563622325257/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2010/09/swingin-at-whole-foods.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/2023225563622325257'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/2023225563622325257'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2010/09/swingin-at-whole-foods.html' title='Swingin&apos; at Whole Foods?'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_yplfPuKoyB8/TKUPZV9lEnI/AAAAAAAADys/R0xKnwX6WoY/s72-c/WholeFoodsAffairs.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-7383157618643651311</id><published>2010-09-20T09:59:00.002-06:00</published><updated>2010-09-20T10:00:50.431-06:00</updated><title type='text'>The Meat Eaters - NYTimes.com</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://graphics8.nytimes.com/images/2010/09/17/opinion/stone_meat/stone_meat-custom1-v2.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 593px; height: 427px;" src="http://graphics8.nytimes.com/images/2010/09/17/opinion/stone_meat/stone_meat-custom1-v2.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;Jeff McMahan &lt;a href="http://opinionator.blogs.nytimes.com/2010/09/19/the-meat-eaters/?hp"&gt;says: &lt;/a&gt;: it would be instrumentally good if  predatory animal species were to become extinct and be replaced by new herbivorous species.  A very modest proposal, of course.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-7383157618643651311?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/7383157618643651311/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2010/09/meat-eaters-nytimescom.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/7383157618643651311'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/7383157618643651311'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2010/09/meat-eaters-nytimescom.html' title='The Meat Eaters - NYTimes.com'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-4662894652792117479</id><published>2010-07-22T16:23:00.000-06:00</published><updated>2010-07-22T16:23:08.576-06:00</updated><title type='text'>How Different Groups Spend Their Day - Interactive Graphic - NYTimes.com</title><content type='html'>This graph is neat-o&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.nytimes.com/interactive/2009/07/31/business/20080801-metrics-graphic.html"&gt;How Different Groups Spend Their Day - Interactive Graphic - NYTimes.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-4662894652792117479?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.nytimes.com/interactive/2009/07/31/business/20080801-metrics-graphic.html' title='How Different Groups Spend Their Day - Interactive Graphic - NYTimes.com'/><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/4662894652792117479/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2010/07/how-different-groups-spend-their-day.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/4662894652792117479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/4662894652792117479'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2010/07/how-different-groups-spend-their-day.html' title='How Different Groups Spend Their Day - Interactive Graphic - NYTimes.com'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-8255637036431633373</id><published>2010-07-20T15:24:00.001-06:00</published><updated>2010-07-20T15:26:49.667-06:00</updated><title type='text'>JOYBOND | Other "Tama-chan whole."</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://joybond.co.jp/product_img/c00-a-01.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 300px; height: 242px;" src="http://joybond.co.jp/product_img/c00-a-01.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;Be sure and check out the translated version of this page.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://joybond.co.jp/product/00/c00-a-01.php"&gt;JOYBOND | Other &amp;quot;Tama-chan whole.&amp;quot;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-8255637036431633373?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/8255637036431633373/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2010/07/joybond-other-tama-chan-whole.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/8255637036431633373'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/8255637036431633373'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2010/07/joybond-other-tama-chan-whole.html' title='JOYBOND | Other &quot;Tama-chan whole.&quot;'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-1935827275604620537</id><published>2010-07-11T10:47:00.001-06:00</published><updated>2010-07-11T10:47:51.796-06:00</updated><title type='text'>black raspberry bounty</title><content type='html'>&lt;a href='http://lh6.ggpht.com/_yplfPuKoyB8/TDn1tb3n1DI/AAAAAAAADuM/1k4VIWh4A7c/IMAG0016.jpg'&gt;&lt;img src='http://lh6.ggpht.com/_yplfPuKoyB8/TDn1tb3n1DI/AAAAAAAADuM/1k4VIWh4A7c/s400/IMAG0016.jpg' /&gt;&lt;/a&gt;&lt;p&gt;year 2 for the berries, and they are rocking.  this am we got 37 more for a total of 98 so far.&lt;/p&gt;&lt;div style='clear: both; text-align: center; font-size: xx-small;'&gt;Published with Blogger-droid v1.4.5&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-1935827275604620537?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/1935827275604620537/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2010/07/black-raspberry-bounty.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/1935827275604620537'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/1935827275604620537'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2010/07/black-raspberry-bounty.html' title='black raspberry bounty'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_yplfPuKoyB8/TDn1tb3n1DI/AAAAAAAADuM/1k4VIWh4A7c/s72-c/IMAG0016.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-4993219863081392390</id><published>2010-04-30T12:53:00.001-06:00</published><updated>2010-04-30T12:54:48.064-06:00</updated><title type='text'>Visit the scenic Republic of Molossia</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.molossia.org/pictures/customssm2.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 200px; height: 267px;" src="http://www.molossia.org/pictures/customssm2.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.molossia.org/customs.html"&gt;Republic of Molossia - Customs and Citizenship Information&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-4993219863081392390?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/4993219863081392390/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2010/04/visit-scenic-republic-of-molossia.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/4993219863081392390'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/4993219863081392390'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2010/04/visit-scenic-republic-of-molossia.html' title='Visit the scenic Republic of Molossia'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-1191457569686347597</id><published>2010-04-29T13:52:00.000-06:00</published><updated>2010-04-29T13:52:25.839-06:00</updated><title type='text'>Government requests directed to Google and YouTube</title><content type='html'>Thanks Google.  you don't see this kind of disclosure very often.&lt;br /&gt;&lt;a href="http://www.google.com/governmentrequests/"&gt;Government requests directed to Google and YouTube&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-1191457569686347597?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.google.com/governmentrequests/' title='Government requests directed to Google and YouTube'/><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/1191457569686347597/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2010/04/government-requests-directed-to-google.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/1191457569686347597'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/1191457569686347597'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2010/04/government-requests-directed-to-google.html' title='Government requests directed to Google and YouTube'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-5317239788576746102</id><published>2010-04-21T13:25:00.001-06:00</published><updated>2010-04-21T13:25:59.760-06:00</updated><title type='text'>iPad Chain makes Flavor Flav obsolete -- Engadget</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.blogcdn.com/www.engadget.com/media/2010/04/ipad-chain-04-21-2010.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 600px; height: 450px;" src="http://www.blogcdn.com/www.engadget.com/media/2010/04/ipad-chain-04-21-2010.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;Check it!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.engadget.com/2010/04/21/ipad-chain-makes-flavor-flav-obsolete/"&gt;iPad Chain makes Flavor Flav obsolete -- Engadget&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-5317239788576746102?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/5317239788576746102/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2010/04/ipad-chain-makes-flavor-flav-obsolete.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/5317239788576746102'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/5317239788576746102'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2010/04/ipad-chain-makes-flavor-flav-obsolete.html' title='iPad Chain makes Flavor Flav obsolete -- Engadget'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-5344060786501901944</id><published>2010-04-09T14:35:00.004-06:00</published><updated>2010-04-09T14:38:27.988-06:00</updated><title type='text'>Atheist Barbie's going to do science! (stand back)</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_-dxg8gReUqE/S74pWl6bt8I/AAAAAAAAAwI/-Q2E5yOyKO4/s1600/AtheistBarbie.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 448px; height: 500px;" src="http://2.bp.blogspot.com/_-dxg8gReUqE/S74pWl6bt8I/AAAAAAAAAwI/-Q2E5yOyKO4/s1600/AtheistBarbie.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.blaghag.com/2010/04/atheist-barbie.html"&gt;Atheist Barbie&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-5344060786501901944?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/5344060786501901944/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2010/04/atheist-barbies-going-to-do-science.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/5344060786501901944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/5344060786501901944'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2010/04/atheist-barbies-going-to-do-science.html' title='Atheist Barbie&apos;s going to do science! (stand back)'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_-dxg8gReUqE/S74pWl6bt8I/AAAAAAAAAwI/-Q2E5yOyKO4/s72-c/AtheistBarbie.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-767123990387033440</id><published>2010-04-09T14:32:00.000-06:00</published><updated>2010-04-09T14:32:54.378-06:00</updated><title type='text'>BONUS Document Friday: Alexander Haig and the Wiretapping of American Citizens « UNREDACTED</title><content type='html'>&lt;div&gt;Haig totally should have done prison time - for so many things.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;Former Secretary of State &lt;a href="http://www.washingtonpost.com/wp-dyn/content/article/2010/02/20/AR2010022001243.html?nav=hcmodule" target="_blank" style="text-decoration: none; color: rgb(119, 33, 36); font-weight: bold; "&gt;Alexander M. Haig,&lt;/a&gt;who died last week at the age of 85, played a variety of roles in the military and the government, including combat duty in Korea and Vietnam, Army Chief of Staff, White House Chief of Staff, and Supreme Allied Commander Europe.  It is worth remembering, however, that when he was military assistant to national security adviser Henry Kissinger and later his deputy, Haig played a central role in a wiretap scandal which was one of the abuses of power that brought down the presidency of Richard M. Nixon.  Indeed, the wiretaps were an element of Article 2 of the &lt;a href="http://www.landmarkcases.org/nixon/nixon.html" target="_blank" style="text-decoration: none; color: rgb(119, 33, 36); font-weight: bold; "&gt;articles of impeachment&lt;/a&gt;adopted by the House Judiciary Committee on July 27, 1974.&lt;br /&gt;...&lt;br /&gt;When Haig made the formal request for the wiretaps, he told FBI assistant director William Sullivan that the request was “made on the highest authority” and that the matter was “so sensitive it demands handling on a need-to-know basis, with no record maintained.” That was not the way the FBI did business, especially when White House officials were issuing unprecedented requests to wiretap White House aides...&lt;/blockquote&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://nsarchive.wordpress.com/2010/02/26/bonus-document-friday-alexander-haig-and-the-wiretapping-of-american-citizens/"&gt;BONUS Document Friday: Alexander Haig and the Wiretapping of American Citizens « UNREDACTED&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-767123990387033440?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://nsarchive.wordpress.com/2010/02/26/bonus-document-friday-alexander-haig-and-the-wiretapping-of-american-citizens/' title='BONUS Document Friday: Alexander Haig and the Wiretapping of American Citizens « UNREDACTED'/><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/767123990387033440/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2010/04/bonus-document-friday-alexander-haig.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/767123990387033440'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/767123990387033440'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2010/04/bonus-document-friday-alexander-haig.html' title='BONUS Document Friday: Alexander Haig and the Wiretapping of American Citizens « UNREDACTED'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-6325367383294748947</id><published>2010-04-04T17:45:00.000-06:00</published><updated>2010-04-04T17:45:00.920-06:00</updated><title type='text'>How-To: Make Peeps sushi?</title><content type='html'>&lt;div&gt;The latest from the the good people at Make:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://blog.makezine.com/archive/2010/04/how-to_make_peeps_sushi.html"&gt;How-To: Make Peeps sushi?&lt;/a&gt;: &lt;div&gt;&lt;img src="http://blog.makezine.com/upload/2010/04/peeps_sushi/peepshi-1.jpg" width="450" height="338" alt="peepshi-1.jpg" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;img src="http://blog.makezine.com/upload/2010/04/how-to_make_peeps_sushi/peepshi-2.jpg" width="450" height="300" alt="peepshi-2.jpg" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Some Peeps, some Rice Krispies treats, and some fruit roll-ups, and you've got delicious 'Peepshi.' (Okay, I think I'll be sick now...)&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://www.seriouseats.com/recipes/2010/03/peeps-recipes-how-to-make-peepshi-sushi-rice-krispies-treats-easter.html"&gt;How to Make Peepshi = Peeps Sushi&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;More:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blog.makezine.com/archive/2010/04/annual_peeps_round-up.html"&gt;Annual Parade o' Peeps&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;     &lt;br /&gt;       &lt;a href="http://blog.makezine.com/archive/2010/04/how-to_make_peeps_sushi.html"&gt;Read more&lt;/a&gt; | &lt;a href="http://blog.makezine.com/archive/2010/04/how-to_make_peeps_sushi.html"&gt;Permalink&lt;/a&gt; | &lt;a href="http://blog.makezine.com/archive/2010/04/how-to_make_peeps_sushi.html#comments"&gt;Comments&lt;/a&gt; |&lt;br /&gt;      &lt;br /&gt;      &lt;br /&gt;      &lt;br /&gt;       &lt;a href="http://blog.makezine.com/archive/holiday_projects/"&gt;Read more articles in Holiday projects&lt;/a&gt; |&lt;br /&gt;      &lt;br /&gt;      &lt;br /&gt;       &lt;a href="http://digg.com/submit?url=blog.makezine.com%2Farchive%2F2010%2F04%2Fhow-to_make_peeps_sushi.html&amp;amp;title=How-To%3A%20Make%20Peeps%20sushi%3F&amp;amp;bodytext=%20Some%20Peeps%2C%20some%20Rice%20Krispies%20treats%2C%20and%20some%20fruit%20roll-ups%2C%20and%20you%26apos%3Bve%20got%20delicious%20%26quot%3BPeepshi.%26quot%3B%20%28Okay%2C%20I%20think%20I%26apos%3Bll%20be%20sick%20now...%29%20How%20to%20Make%20Peepshi%20%3D%20Peeps%20Sushi%20More%3A%20Annual%20Parade%20o%26apos%3B%20Peeps...&amp;amp;topic=tech_news"&gt;Digg this!&lt;/a&gt;"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-6325367383294748947?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://blog.makezine.com/archive/2010/04/how-to_make_peeps_sushi.html' title='How-To: Make Peeps sushi?'/><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/6325367383294748947/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2010/04/how-to-make-peeps-sushi.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/6325367383294748947'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/6325367383294748947'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2010/04/how-to-make-peeps-sushi.html' title='How-To: Make Peeps sushi?'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-7039454435971945331</id><published>2010-03-31T12:14:00.002-06:00</published><updated>2010-03-31T12:15:50.764-06:00</updated><title type='text'>It's a party on your head</title><content type='html'>&lt;div&gt;IMO - this could use some frickin' laser beams!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;object width="400" height="265"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=10555329&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1"&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=10555329&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="265"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;p&gt;&lt;a href="http://vimeo.com/10555329"&gt;Dudecraft's Disco Bike Helmet&lt;/a&gt; from &lt;a href="http://vimeo.com/user1019871"&gt;Paul Overton&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-7039454435971945331?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/7039454435971945331/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2010/03/its-party-on-your-head.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/7039454435971945331'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/7039454435971945331'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2010/03/its-party-on-your-head.html' title='It&apos;s a party on your head'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-8723178358880343131</id><published>2010-03-11T17:32:00.000-07:00</published><updated>2010-03-11T17:32:43.824-07:00</updated><title type='text'>Google Trends: rafting, snowboarding</title><content type='html'>&lt;a href="http://www.google.com/trends?q=rafting%2C+snowboarding&amp;amp;ctab=0&amp;amp;geo=all&amp;amp;date=all&amp;amp;sort=0"&gt;Google Trends: rafting, snowboarding&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src="http://www.google.com/trends/viz?q=rafting,+snowboarding&amp;amp;date=all&amp;amp;geo=all&amp;amp;graph=weekly_img&amp;amp;sort=0&amp;amp;sa=N" /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-8723178358880343131?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.google.com/trends?q=rafting%2C+snowboarding&amp;ctab=0&amp;geo=all&amp;date=all&amp;sort=0' title='Google Trends: rafting, snowboarding'/><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/8723178358880343131/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2010/03/google-trends-rafting-snowboarding.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/8723178358880343131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/8723178358880343131'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2010/03/google-trends-rafting-snowboarding.html' title='Google Trends: rafting, snowboarding'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-5886802952632787431</id><published>2010-03-09T13:28:00.000-07:00</published><updated>2010-03-09T13:28:17.770-07:00</updated><title type='text'>loua1873-scalogram.jpg (2422×1932)</title><content type='html'>&lt;div&gt;1873 unclustered heat map of demographic characteristics in Paris.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://www.math.yorku.ca/SCS/Gallery/images/loua1873-scalogram.jpg"&gt;loua1873-scalogram.jpg (2422×1932)&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-5886802952632787431?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.math.yorku.ca/SCS/Gallery/images/loua1873-scalogram.jpg' title='loua1873-scalogram.jpg (2422×1932)'/><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/5886802952632787431/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2010/03/loua1873-scalogramjpg-24221932.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/5886802952632787431'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/5886802952632787431'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2010/03/loua1873-scalogramjpg-24221932.html' title='loua1873-scalogram.jpg (2422×1932)'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-3485574171994652124</id><published>2010-03-05T15:02:00.000-07:00</published><updated>2010-03-05T15:02:35.258-07:00</updated><title type='text'>Petabytes on a budget: How to build cheap cloud storage | Backblaze Blog</title><content type='html'>&lt;a href="http://blog.backblaze.com/2009/09/01/petabytes-on-a-budget-how-to-build-cheap-cloud-storage/"&gt;Petabytes on a budget: How to build cheap cloud storage | Backblaze Blog&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There are a lot of cool storage ideas out there.  This is one end of the spectrum.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I like it: 67TB in 4U for under 8K. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-3485574171994652124?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://blog.backblaze.com/2009/09/01/petabytes-on-a-budget-how-to-build-cheap-cloud-storage/' title='Petabytes on a budget: How to build cheap cloud storage | Backblaze Blog'/><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/3485574171994652124/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2010/03/petabytes-on-budget-how-to-build-cheap.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/3485574171994652124'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/3485574171994652124'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2010/03/petabytes-on-budget-how-to-build-cheap.html' title='Petabytes on a budget: How to build cheap cloud storage | Backblaze Blog'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-6426982118748918159</id><published>2010-02-27T15:01:00.000-07:00</published><updated>2010-02-27T15:01:45.149-07:00</updated><title type='text'>Hawaii News Now - LIVE - Hawaii News Now - KGMB and KHNL Home</title><content type='html'>&lt;a href="http://www.hawaiinewsnow.com/Global/category.asp?C=176904&amp;amp;nav=menu55_1_1"&gt;Hawaii News Now - LIVE - Hawaii News Now - KGMB and KHNL Home&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Cool live shot of Hilo Bay - water was just rushing out.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-6426982118748918159?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.hawaiinewsnow.com/Global/category.asp?C=176904&amp;nav=menu55_1_1' title='Hawaii News Now - LIVE - Hawaii News Now - KGMB and KHNL Home'/><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/6426982118748918159/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2010/02/hawaii-news-now-live-hawaii-news-now.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/6426982118748918159'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/6426982118748918159'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2010/02/hawaii-news-now-live-hawaii-news-now.html' title='Hawaii News Now - LIVE - Hawaii News Now - KGMB and KHNL Home'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-405623707496269507</id><published>2010-02-26T15:56:00.000-07:00</published><updated>2010-02-26T15:56:05.182-07:00</updated><title type='text'>PEP 278 -- Universal Newline Support</title><content type='html'>&lt;a href="http://www.python.org/dev/peps/pep-0278/"&gt;PEP 278 -- Universal Newline Support&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Gadzooks! - python file.readline() is broken on Mac newlines - even when running on Macs!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Who knew!  Use file(path,'rU') to open your file with "Universal Newlines"&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-405623707496269507?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.python.org/dev/peps/pep-0278/' title='PEP 278 -- Universal Newline Support'/><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/405623707496269507/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2010/02/pep-278-universal-newline-support.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/405623707496269507'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/405623707496269507'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2010/02/pep-278-universal-newline-support.html' title='PEP 278 -- Universal Newline Support'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-8305250859303424770</id><published>2010-02-24T16:05:00.000-07:00</published><updated>2010-02-24T16:05:23.005-07:00</updated><title type='text'>Stryde Hax: The Spy at Harriton High</title><content type='html'>&lt;a href="http://strydehax.blogspot.com/2010/02/spy-at-harrington-high.html"&gt;Stryde Hax: The Spy at Harriton High&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is the best thing I've seen on the high school Spy Laptop thing.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-8305250859303424770?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://strydehax.blogspot.com/2010/02/spy-at-harrington-high.html' title='Stryde Hax: The Spy at Harriton High'/><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/8305250859303424770/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2010/02/stryde-hax-spy-at-harriton-high.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/8305250859303424770'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/8305250859303424770'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2010/02/stryde-hax-spy-at-harriton-high.html' title='Stryde Hax: The Spy at Harriton High'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-1266202310193570784</id><published>2010-02-17T13:45:00.002-07:00</published><updated>2010-02-17T13:48:05.991-07:00</updated><title type='text'>taliban OR al-Qaeda "second in command" - Google Search</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_yplfPuKoyB8/S3xVnYKGhDI/AAAAAAAADpE/0-Q9IFr9f8g/s1600-h/secondincommand.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 61px;" src="http://2.bp.blogspot.com/_yplfPuKoyB8/S3xVnYKGhDI/AAAAAAAADpE/0-Q9IFr9f8g/s320/secondincommand.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5439316584944796722" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;Ever notice how the US is always catching the "second in command?"  Here is an apropos Google timeline:&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://www.google.com/search?q=taliban+OR+al-Qaeda++%22second+in+command%22&amp;amp;btnG=Search&amp;amp;hl=en&amp;amp;rlz=1C1GGLS_enUS346US365&amp;amp;tbo=1&amp;amp;tbs=tl%3A1&amp;amp;sa=2"&gt;taliban OR al-Qaeda "second in command" - Google Search&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-1266202310193570784?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/1266202310193570784/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2010/02/taliban-or-al-qaeda-second-in-command.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/1266202310193570784'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/1266202310193570784'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2010/02/taliban-or-al-qaeda-second-in-command.html' title='taliban OR al-Qaeda &quot;second in command&quot; - Google Search'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_yplfPuKoyB8/S3xVnYKGhDI/AAAAAAAADpE/0-Q9IFr9f8g/s72-c/secondincommand.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-8161171281973633065</id><published>2010-02-16T17:58:00.000-07:00</published><updated>2010-02-16T17:58:44.064-07:00</updated><title type='text'>Women's 10k pursiut</title><content type='html'>&lt;div&gt;Neuner was my hero as soon as I saw her in the sprint.  You won't see it on NBC but you can watch the whole race.  It's a good one.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; &lt;a href="http://www.nbcolympics.com/video/assetid=0732c74f-1b3d-427d-a737-3738c45f7a5f.html#full+replay+womens+10km+pursuit"&gt;Women's 10k&lt;/a&gt;, you know you want to.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-8161171281973633065?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.nbcolympics.com/video/assetid=0732c74f-1b3d-427d-a737-3738c45f7a5f.html#full+replay+womens+10km+pursuit' title='Women&apos;s 10k pursiut'/><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/8161171281973633065/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2010/02/womens-10k-pursiut.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/8161171281973633065'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/8161171281973633065'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2010/02/womens-10k-pursiut.html' title='Women&apos;s 10k pursiut'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-907352473332550365</id><published>2010-02-13T18:23:00.002-07:00</published><updated>2010-02-13T18:24:34.927-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows7'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>Clean Install Windows 7 With Upgrade Media</title><content type='html'>&lt;div&gt;&lt;span class="Apple-style-span"   style="  ;font-family:'Trebuchet MS', 'Bitstream Vera Sans', Verdana, Arial, 'Lucida Sans', 'Lucida Sans Unicode', Helvetica, sans-serif;font-size:13px;"&gt;&lt;p style="line-height: 1.5em; text-align: justify; "&gt;My XP installation got hosed at home.  It would not boot and it was neither the MBR nor the partition's boot loader, so I was going to have to repair all the drivers. I took the opportunity to install Windows7 on a new RAID1 volume on 2 new 1TB Barracudas.  I got the upgrade retail box which says "All editions of Windows XP and Vista qualify you to upgrade."  It seemed safest to unplug the old drive during the install.  But this let me unable to activate Windows7 even after I plugged in the old drive (to copy over the old files).  It seems that Windows7 wants to see the old installation (not just the old install media, as in the past) while it is installing if you want to use an upgrade product key.&lt;/p&gt;&lt;p style="line-height: 1.5em; text-align: justify; "&gt;Here is the solution I used; very easy:&lt;/p&gt;&lt;p style="line-height: 1.5em; text-align: justify; "&gt;&lt;span class="Apple-style-span"   style=" line-height: normal;  font-family:Georgia, serif;font-size:16px;"&gt;&lt;a href="http://www.mydigitallife.info/2009/10/27/clean-install-windows-7-with-upgrade-media-and-product-key-on-formatted-or-empty-blank-hard-drive/"&gt;Clean Install Windows 7 With Upgrade Media and Product Key on Formatted or Empty Blank Hard Drive » My Digital Life&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="line-height: 1.5em; text-align: justify; "&gt;Workaround 3: &lt;strong&gt;Clean Install and Activate Windows 7 with MediaBootInstall Registry Hack&lt;/strong&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;After booting up, ensure that no Windows Updates pending task which requires a system reboot to finish installing.&lt;p style="line-height: 1.5em; text-align: justify; "&gt;Tip: Normally, an orange-colored shield icon will be displayed next to Shutdown button in the Start Menu Power Button or at notification tray area if a restart is required.&lt;/p&gt;&lt;p style="line-height: 1.5em; text-align: justify; "&gt;If reboot is required, restart the computer to allow any pending updates is installed.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;Run &lt;strong&gt;&lt;a href="http://www.mydigitallife.info/2009/10/27/clean-install-windows-7-with-upgrade-media-and-product-key-on-formatted-or-empty-blank-hard-drive/#" class="kLink" target="undefined" id="KonaLink7" style="color: blue !important; text-decoration: underline !important; border-bottom-style: none !important; cursor: pointer; font-family: verdana; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-top-style: none !important; border-right-style: none !important; border-left-style: none !important; border-top-color: transparent !important; border-right-color: transparent !important; border-bottom-color: transparent !important; border-left-color: transparent !important; background-image: none !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; background-color: transparent !important; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; text-transform: none !important; display: inline !important; font-variant: normal; top: 0px; right: 0px; bottom: 0px; left: 0px; position: static; background-position: initial initial !important; background-repeat: initial initial !important; "&gt;&lt;span style="color: blue !important;  font-weight: bold;  position: static; font-family:'Trebuchet MS', 'Bitstream Vera Sans', Verdana, Arial, 'Lucida Sans', 'Lucida Sans Unicode', Helvetica, sans-serif;font-size:13px;color:blue;"&gt;&lt;span class="kLink"    style="border-top-width: 0px !important; border-top-style: none !important; border-top-color: initial !important; border-left-width: 0px !important; border-left-style: none !important; border-left-color: initial !important; border-right-width: 0px !important; border-right-style: none !important; border-right-color: initial !important; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: blue; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 1px !important; padding-left: 0px !important; color: blue !important; background-image: none; background-attachment: initial; background-origin: initial; background-clip: initial; background- width: auto !important; float: none !important; display: inline !important;  font-weight: bold;  position: static; background-position: initial initial; background-repeat: initial initial; font-family:'Trebuchet MS', 'Bitstream Vera Sans', Verdana, Arial, 'Lucida Sans', 'Lucida Sans Unicode', Helvetica, sans-serif;font-size:13px;color:transparent;"&gt;Registry &lt;/span&gt;&lt;span class="kLink"    style="border-top-width: 0px !important; border-top-style: none !important; border-top-color: initial !important; border-left-width: 0px !important; border-left-style: none !important; border-left-color: initial !important; border-right-width: 0px !important; border-right-style: none !important; border-right-color: initial !important; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: blue; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 1px !important; padding-left: 0px !important; color: blue !important; background-image: none; background-attachment: initial; background-origin: initial; background-clip: initial; background- width: auto !important; float: none !important; display: inline !important;  font-weight: bold;  position: static; background-position: initial initial; background-repeat: initial initial; font-family:'Trebuchet MS', 'Bitstream Vera Sans', Verdana, Arial, 'Lucida Sans', 'Lucida Sans Unicode', Helvetica, sans-serif;font-size:13px;color:transparent;"&gt;Editor&lt;/span&gt;&lt;/span&gt;&lt;span id="preLoadWrap7" class="preLoadWrap" style="position: relative; "&gt;&lt;/span&gt;&lt;/a&gt; (RegEdit)&lt;/strong&gt;.&lt;/li&gt;&lt;li&gt;Navigate to the following registry key:&lt;p style="line-height: 1.5em; text-align: justify; "&gt;HKEY_LOCAL_MACHINE\SOFTWARE\&lt;a href="http://www.mydigitallife.info/2009/10/27/clean-install-windows-7-with-upgrade-media-and-product-key-on-formatted-or-empty-blank-hard-drive/#" class="kLink" target="undefined" id="KonaLink8" style="color: blue !important; text-decoration: underline !important; border-bottom-style: none !important; cursor: pointer; font-family: verdana; border-top-width: 0px !important; border-right-width: 0px !important; border-bottom-width: 0px !important; border-left-width: 0px !important; border-top-style: none !important; border-right-style: none !important; border-left-style: none !important; border-top-color: transparent !important; border-right-color: transparent !important; border-bottom-color: transparent !important; border-left-color: transparent !important; background-image: none !important; background-attachment: initial !important; background-origin: initial !important; background-clip: initial !important; background-color: transparent !important; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 0px !important; padding-left: 0px !important; text-transform: none !important; display: inline !important; font-variant: normal; top: 0px; right: 0px; bottom: 0px; left: 0px; position: static; background-position: initial initial !important; background-repeat: initial initial !important; "&gt;&lt;span style="color: blue !important;  font-weight: normal;  position: static; font-family:'Trebuchet MS', 'Bitstream Vera Sans', Verdana, Arial, 'Lucida Sans', 'Lucida Sans Unicode', Helvetica, sans-serif;font-size:13px;color:blue;"&gt;&lt;span class="kLink"    style="border-top-width: 0px !important; border-top-style: none !important; border-top-color: initial !important; border-left-width: 0px !important; border-left-style: none !important; border-left-color: initial !important; border-right-width: 0px !important; border-right-style: none !important; border-right-color: initial !important; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: initial; padding-top: 0px !important; padding-right: 0px !important; padding-bottom: 1px !important; padding-left: 0px !important; color: blue !important; background-image: none; background-attachment: initial; background-origin: initial; background-clip: initial; background- width: auto !important; float: none !important; display: inline !important;  font-weight: normal;  position: static; background-position: initial initial; background-repeat: initial initial; font-family:'Trebuchet MS', 'Bitstream Vera Sans', Verdana, Arial, 'Lucida Sans', 'Lucida Sans Unicode', Helvetica, sans-serif;font-size:13px;color:transparent;"&gt;Microsoft&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;\Windows\CurrentVersion\Setup\OOBE&lt;/p&gt;&lt;/li&gt;&lt;li&gt;In the right pane, change the value data for &lt;strong&gt;MediaBootInstall&lt;/strong&gt; from 1 to&lt;strong&gt;0&lt;/strong&gt;.&lt;p style="line-height: 1.5em; text-align: justify; "&gt;&lt;img src="http://www.mydigitallife.info/wp-content/uploads/2009/10/mediabootinstall.JPG" alt="MediaBootInstall Registry" title="mediabootinstall" width="402" height="236" class="alignnone size-full wp-image-42033" style="border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; margin-top: 5px; margin-right: 5px; margin-bottom: 5px; margin-left: 5px; " /&gt;&lt;/p&gt;&lt;p style="line-height: 1.5em; text-align: justify; "&gt;Alternatively, just download and execute &lt;a href="http://depositfiles.com/files/kbojz3932" rel="nofollow" style="color: rgb(0, 0, 255); text-decoration: none; "&gt;MediaBootInstall.reg&lt;/a&gt; to merge the value into registry.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.mydigitallife.info/2007/02/17/how-to-open-elevated-command-prompt-with-administrator-privileges-in-windows-vista/" style="color: rgb(0, 0, 255); text-decoration: none; "&gt;Open an elevated command prompt as administrator&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Run the command below to &lt;a href="http://www.mydigitallife.info/2008/11/06/how-to-rearm-and-extend-free-usage-activation-grace-period-of-windows-7-to-120-days/" style="color: rgb(0, 0, 255); text-decoration: none; "&gt;reset Windows 7 activation status&lt;/a&gt;:&lt;p style="line-height: 1.5em; text-align: justify; "&gt;&lt;strong&gt;slmgr -rearm&lt;/strong&gt;&lt;/p&gt;&lt;p style="line-height: 1.5em; text-align: justify; "&gt;&lt;img src="http://www.mydigitallife.info/wp-content/uploads/2009/10/rearm-windows.JPG" alt="Rearm Windows" title="rearm-windows" width="287" height="75" class="alignnone size-full wp-image-42029" style="border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; margin-top: 5px; margin-right: 5px; margin-bottom: 5px; margin-left: 5px; " /&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;Reboot the computer.&lt;/li&gt;&lt;li&gt;Run the &lt;strong&gt;Activate Windows&lt;/strong&gt; utility (accessible from bottom section of&lt;strong&gt;Control Panel&lt;/strong&gt; -&gt; &lt;strong&gt;System and Security&lt;/strong&gt; -&gt; &lt;strong&gt;System&lt;/strong&gt;, or type &lt;strong&gt;Activate Windows&lt;/strong&gt; into Start Search), type in the upgrade product key and activate Windows.&lt;/li&gt;&lt;/ol&gt;&lt;ins style="display: inline-table; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-width: initial; border-color: initial; height: 250px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; position: relative; visibility: visible; width: 300px; "&gt;&lt;/ins&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-907352473332550365?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/907352473332550365/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2010/02/clean-install-windows-7-with-upgrade.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/907352473332550365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/907352473332550365'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2010/02/clean-install-windows-7-with-upgrade.html' title='Clean Install Windows 7 With Upgrade Media'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-2033716705837917551</id><published>2009-12-29T15:27:00.002-07:00</published><updated>2009-12-29T15:35:11.629-07:00</updated><title type='text'>nasty  spaces in paths</title><content type='html'>This works pretty well:&lt;br /&gt;&lt;br /&gt;But I admit I don't get the $1=$1.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;tcsh, etc:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;foreach file (`find , -name "* *"`)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  mv "$file" "`echo $file | awk 'BEGIN {OFS="-"} $1=$1'`"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;bash, etc:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;find . -name "* *"|while read file&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;do&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt; mv "$file" "`echo "$file"| awk 'BEGIN {OFS="-"} $1=$1'`"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;done&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-2033716705837917551?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/2033716705837917551/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2009/12/nasty-spaces-in-paths.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/2033716705837917551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/2033716705837917551'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2009/12/nasty-spaces-in-paths.html' title='nasty  spaces in paths'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-8192592637912451480</id><published>2009-12-23T13:01:00.003-07:00</published><updated>2009-12-29T15:35:44.916-07:00</updated><title type='text'>Eureka!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_yplfPuKoyB8/SzJ3oK_ogwI/AAAAAAAADQg/UJF8HtYQjVM/s1600-h/untitled.bmp"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 320px; height: 233px;" src="http://1.bp.blogspot.com/_yplfPuKoyB8/SzJ3oK_ogwI/AAAAAAAADQg/UJF8HtYQjVM/s320/untitled.bmp" alt="" id="BLOGGER_PHOTO_ID_5418524833709851394" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The Splayd!&lt;br /&gt;&lt;br /&gt;Can the the power structure really withstand the Spife?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-8192592637912451480?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/8192592637912451480/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2009/12/eureka-splayd-can-the-power-structure.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/8192592637912451480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/8192592637912451480'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2009/12/eureka-splayd-can-the-power-structure.html' title='Eureka!'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_yplfPuKoyB8/SzJ3oK_ogwI/AAAAAAAADQg/UJF8HtYQjVM/s72-c/untitled.bmp' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-6319896406277022786</id><published>2009-12-16T10:10:00.002-07:00</published><updated>2009-12-16T10:18:11.280-07:00</updated><title type='text'>My Current Favorite TED Talk</title><content type='html'>Jonathan Haidt on the moral roots of liberals and conservatives.  (or: Why Everyone Wants To Go To Applebee's; Just No One You Know.)&lt;br /&gt;&lt;br /&gt;A very interesting talk.  Significantly outside the box.  Interesting approach to the following:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Evolution of morality.&lt;/li&gt;&lt;li&gt;How can morality be usefully parsed?&lt;/li&gt;&lt;li&gt;What is morality good for?&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;object height="326" width="446"&gt;&lt;param name="movie" value="http://video.ted.com/assets/player/swf/EmbedPlayer.swf"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;param name="bgColor" value="#ffffff"&gt; &lt;param name="flashvars" value="vu=http://video.ted.com/talks/dynamic/JonathanHaidt_2008-medium.flv&amp;amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/JonathanHaidt-2008.embed_thumbnail.jpg&amp;amp;vw=432&amp;amp;vh=240&amp;amp;ap=0&amp;amp;ti=341&amp;amp;introDuration=16500&amp;amp;adDuration=4000&amp;amp;postAdDuration=2000&amp;amp;adKeys=talk=jonathan_haidt_on_the_moral_mind;year=2008;theme=how_we_learn;theme=evolution_s_genius;theme=unconventional_explanations;theme=how_the_mind_works;theme=the_rise_of_collaboration;theme=what_makes_us_happy;event=TED2008;&amp;amp;preAdTag=tconf.ted/embed;tile=1;sz=512x288;"&gt;&lt;embed src="http://video.ted.com/assets/player/swf/EmbedPlayer.swf" pluginspace="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" wmode="transparent" bgcolor="#ffffff" allowfullscreen="true" flashvars="vu=http://video.ted.com/talks/dynamic/JonathanHaidt_2008-medium.flv&amp;amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/JonathanHaidt-2008.embed_thumbnail.jpg&amp;amp;vw=432&amp;amp;vh=240&amp;amp;ap=0&amp;amp;ti=341&amp;amp;introDuration=16500&amp;amp;adDuration=4000&amp;amp;postAdDuration=2000&amp;amp;adKeys=talk=jonathan_haidt_on_the_moral_mind;year=2008;theme=how_we_learn;theme=evolution_s_genius;theme=unconventional_explanations;theme=how_the_mind_works;theme=the_rise_of_collaboration;theme=what_makes_us_happy;event=TED2008;" height="326" width="446"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-6319896406277022786?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/6319896406277022786/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2009/12/my-current-favorite-ted-talk.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/6319896406277022786'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/6319896406277022786'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2009/12/my-current-favorite-ted-talk.html' title='My Current Favorite TED Talk'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-8767470456479326243</id><published>2009-09-14T15:58:00.002-06:00</published><updated>2009-09-14T16:07:30.212-06:00</updated><title type='text'>sed to the rescue (python old-style classes are new again)</title><content type='html'>Python became my language of choice when new-style classes were still really new and not yet supported everywhere.  Python seemed to work just fine and it was many years before I started using new-style classes. &lt;br /&gt;&lt;br /&gt;So a lot of my code has:  &lt;span style="font-family: courier new; font-weight: bold;"&gt;class English1A:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;instead of:  &lt;span style="font-family: courier new; font-weight: bold;"&gt;class English1A (object):&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I finally  got tired of having a mix of old and new classes and used sed to fix it:&lt;br /&gt;&lt;span style="font-family: courier new; font-weight: bold;"&gt;sed -i .bak 's/^\(class .*[^()]\):/\1 (object):/' *py&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-8767470456479326243?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/8767470456479326243/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2009/09/sed-to-rescue-python-old-style-classes.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/8767470456479326243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/8767470456479326243'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2009/09/sed-to-rescue-python-old-style-classes.html' title='sed to the rescue (python old-style classes are new again)'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-9128881644055315439</id><published>2009-08-17T10:59:00.004-06:00</published><updated>2009-09-14T15:58:16.923-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firefox3.5'/><title type='text'>Firefox 3.5 = Blank tooltips everywhere</title><content type='html'>After upgrading to Firefox 3.5 I have empty tooltips for what looks like every DIV.  If you turn off browser.chrome.toolbar_tips in about:config it gets rid of them.  It may get rid of _all_ tooltips, so watch out for that.&lt;br /&gt;&lt;br /&gt;--UPDATE--&lt;br /&gt;To Fix: uninstall GoogleToobar; reinstall new version of GoogleToolbar (For me-5.0.20090813W)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-9128881644055315439?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/9128881644055315439/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2009/08/firefox-35-blank-tooltips-everywhere.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/9128881644055315439'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/9128881644055315439'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2009/08/firefox-35-blank-tooltips-everywhere.html' title='Firefox 3.5 = Blank tooltips everywhere'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-6709521989430048939</id><published>2009-08-11T10:28:00.000-06:00</published><updated>2009-08-11T10:28:44.277-06:00</updated><title type='text'>CATaLOG | An RFID Cat Tracker</title><content type='html'>This is kewl.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.nermal.org/projects/catalog/"&gt;Nermal » CATaLOG | An RFID Cat Tracker&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-6709521989430048939?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.nermal.org/projects/catalog/' title='CATaLOG | An RFID Cat Tracker'/><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/6709521989430048939/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2009/08/catalog-rfid-cat-tracker.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/6709521989430048939'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/6709521989430048939'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2009/08/catalog-rfid-cat-tracker.html' title='CATaLOG | An RFID Cat Tracker'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-1167378508975672305</id><published>2009-07-22T19:11:00.020-06:00</published><updated>2009-07-26T16:26:33.951-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Julie the she-dork'/><category scheme='http://www.blogger.com/atom/ns#' term='htpc'/><category scheme='http://www.blogger.com/atom/ns#' term='dork haus'/><category scheme='http://www.blogger.com/atom/ns#' term='man cave'/><category scheme='http://www.blogger.com/atom/ns#' term='home theater'/><title type='text'>Dork Haus - Case Mods? Furniture Mods?</title><content type='html'>&lt;span style="font-weight: bold;"&gt;When you put a computer inside a piece of furniture, what is that?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Is it a case mod, or are you just making your otherwise useful furniture much more dorky? We have 2 Dork Haus examples.  The motivation is that in the Man Cave there are a lot of tools and servers, and the servers have media files on them that we dorks may want to enjoy.   The Dork Haus Man Cave is &lt;span style="font-weight: bold;"&gt;not &lt;/span&gt;one of these TV &lt;a href="http://www.diynetwork.com/man-caves/show/index.html"&gt;sissy man caves&lt;/a&gt; with comfy chairs, carpet and football paraphernalia.   We put the "cave" back in "man cave" where it belongs (tools and servers, babe).&lt;br /&gt;&lt;br /&gt;Great, but I would rather relax in the den and the bedroom, hence the need for computers in those rooms.  Computers are ugly (yes, even your mac... especially where the finish is worn off from you petting it) or if not ugly at least inappropriately styled for most decor.  I don't want to make the computer more of an issue (e.g. &lt;a href="http://www.techeblog.com/index.php/tech-gadget/top-10-strangest-case-mods"&gt;these case mods&lt;/a&gt;).   I want the computer, the blinking, the noise (Oh God, the noise!) to go away.&lt;br /&gt;&lt;br /&gt;With the release of the new ATOM based motherboards I decided to revisit the idea of making a very small unobtrusive computer.  I had tried earlier with a VIA board that turned out to be too anemic to playback video but still got its case hot, &lt;span style="font-style: italic;"&gt;scary hot&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The Den of Dork:&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_yplfPuKoyB8/Sme8ieGreDI/AAAAAAAAAN0/3mH-t4Ez3c0/s1600-h/IMG_5521.JPG"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_yplfPuKoyB8/Sme8ieGreDI/AAAAAAAAAN0/3mH-t4Ez3c0/s320/IMG_5521.JPG" alt="" id="BLOGGER_PHOTO_ID_5361461181790517298" border="0" /&gt;&lt;/a&gt;  The &lt;span style="font-weight: bold;"&gt;small chest of drawers&lt;/span&gt; the upper left of the tv-holder-thing has a computer in it.  Unfortunately, the TV had no available inputs on the back, so I had to use the s-video input on the side of the TV.  The bottom two drawers have a little INTEL  motherboard and fashioned connections for video, power, audio, USB and RJ45 on the back of the cabinet.  The "remote control" is a small wireless keyboard which is stored in the drawer above the computer and the top drawer has the TV and DVD-player remotes in it.&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_yplfPuKoyB8/Sme-Ro7TfNI/AAAAAAAAAN8/aob-lAwYY2E/s1600-h/IMG_5522.JPG"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_yplfPuKoyB8/Sme-Ro7TfNI/AAAAAAAAAN8/aob-lAwYY2E/s320/IMG_5522.JPG" alt="" id="BLOGGER_PHOTO_ID_5361463091661077714" border="0" /&gt;&lt;/a&gt;She does make a little noise as the motherboard has a fan and the hard drive is a real hard drive (that spins), and so far I haven't made a nice switch, so you have to open the drawer to reach a switch scavenged from an old tower-style PC.  This is probably for the best, as you want to leave the drawer cracked when it's on for ventilation. &lt;a href="http://picasaweb.google.com/kael.fischer/FurnitureComputers?feat=directlink"&gt;Pictures of the back&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_yplfPuKoyB8/Sme-47p-pGI/AAAAAAAAAOE/1OvdNX-oLNM/s1600-h/IMG_5523.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: right; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_yplfPuKoyB8/Sme-47p-pGI/AAAAAAAAAOE/1OvdNX-oLNM/s320/IMG_5523.JPG" alt="" id="BLOGGER_PHOTO_ID_5361463766703580258" border="0" /&gt;&lt;/a&gt;It's running windows XP, which is probably about as much as that processor can handle.  One thing that is nice about running Windows it that it works with Netflix "Watch Instantly."  Also the networking is brain-dead simple with SAMBA running downstairs on FreeBSD 7.2.  I have to say that Rhapsody runs very poorly on this setup; but other players (including WMP) work great and it is more than up to the job of video playback with any codec over the ~800x600 s-video line.  The last picture is Internet Explorer at my Google Reader page.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;The Master Dork Bedroom:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_yplfPuKoyB8/SmfAMJdC4lI/AAAAAAAAAOU/nGs8eHRBmdE/s1600-h/IMG_5509.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: right; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_yplfPuKoyB8/SmfAMJdC4lI/AAAAAAAAAOU/nGs8eHRBmdE/s320/IMG_5509.JPG" alt="" id="BLOGGER_PHOTO_ID_5361465196336570962" border="0" /&gt;&lt;/a&gt;Observe: &lt;span style="font-weight: bold;"&gt;an armoire.&lt;/span&gt;   She is an old and relatively nice armoire, and has been doing a fine job holing up a TV while containing clothes within.  This particular item used to be my brother Neal's, and it ended up moving with us to Salt Lake City at the near insistance of my mom.  It is about 5 feet tall and it is made mostly of thick boards (not plywood).  We like it a lot - thanks mom!&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_yplfPuKoyB8/Sme_9oIlH8I/AAAAAAAAAOM/dKavAKWbldM/s1600-h/IMG_5500.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: right; cursor: pointer; width: 240px; height: 320px;" src="http://1.bp.blogspot.com/_yplfPuKoyB8/Sme_9oIlH8I/AAAAAAAAAOM/dKavAKWbldM/s320/IMG_5500.JPG" alt="" id="BLOGGER_PHOTO_ID_5361464946874195906" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Obviously the computer would need to go in or on the armoire.   There is a hatch on the upper right that opens up to reveal a mirror and a generous area to hold your razor or something.  I bolted a mother board to the back of that space with 1" standoffs.  This board only requires 12VDC for power which simplifies things considerably.  Also this set up has no fan and I'm using a solid state hard drive.   If the speakers are off, it makes no noise that I can hear.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_yplfPuKoyB8/SmfKk032b6I/AAAAAAAAAOs/3fz2HXAO9ng/s1600-h/IMG_5517.JPG"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_yplfPuKoyB8/SmfKk032b6I/AAAAAAAAAOs/3fz2HXAO9ng/s320/IMG_5517.JPG" alt="" id="BLOGGER_PHOTO_ID_5361476615424864162" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Julie, the She-Dork, recommend that rather than make lots of little holes and connections I make a single simple hole and pass the cables right through.  This was much easier and required much less abusing of the furniture.  I made a single rectangular hole about 1"X1.5", and that easily accommodates the 120VAC cord for the power brick, the CAT5e,  HDMI, USB and stereo audio cables.   One more hole allowed a sweet little power switch on the back of the armoire.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_yplfPuKoyB8/SmfKkXDzflI/AAAAAAAAAOk/_qdOp0DN1NQ/s1600-h/IMG_5507.JPG"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_yplfPuKoyB8/SmfKkXDzflI/AAAAAAAAAOk/_qdOp0DN1NQ/s320/IMG_5507.JPG" alt="" id="BLOGGER_PHOTO_ID_5361476607421939282" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-1167378508975672305?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/1167378508975672305/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2009/07/dork-haus-case-mods-furniture-mods.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/1167378508975672305'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/1167378508975672305'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2009/07/dork-haus-case-mods-furniture-mods.html' title='Dork Haus - Case Mods? Furniture Mods?'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_yplfPuKoyB8/Sme8ieGreDI/AAAAAAAAAN0/3mH-t4Ez3c0/s72-c/IMG_5521.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-251247803596776912</id><published>2009-07-16T21:53:00.002-06:00</published><updated>2009-07-22T22:06:39.367-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Julie the she-dork'/><category scheme='http://www.blogger.com/atom/ns#' term='phifer'/><category scheme='http://www.blogger.com/atom/ns#' term='dork haus'/><title type='text'>Phifer the kitten</title><content type='html'>&lt;a href='http://1.bp.blogspot.com/_yplfPuKoyB8/Sl_12seRXVI/AAAAAAAAANs/pWZxBuwQkVQ/s1600-h/IMG_5476.JPG'&gt;&lt;img src='http://1.bp.blogspot.com/_yplfPuKoyB8/Sl_12seRXVI/AAAAAAAAANs/pWZxBuwQkVQ/s320/IMG_5476.JPG' border='0' alt=''style='clear:both;float:left; margin:0px 10px 10px 0;' /&gt;&lt;/a&gt;&amp;nbsp; Here is our new kitty Phifer!  &lt;br&gt;&lt;embed type="application/x-shockwave-flash" src="http://picasaweb.google.com/s/c/bin/slideshow.swf" width="288" height="192" flashvars="host=picasaweb.google.com&amp;hl=en_US&amp;feat=flashalbum&amp;RGB=0x000000&amp;feed=http%3A%2F%2Fpicasaweb.google.com%2Fdata%2Ffeed%2Fapi%2Fuser%2Fkael.fischer%2Falbumid%2F5359266451232109217%3Falt%3Drss%26kind%3Dphoto%26hl%3Den_US" pluginspage="http://www.macromedia.com/go/getflashplayer"&gt;&lt;/embed&gt;&lt;div style='clear:both; text-align:LEFT'&gt;&lt;a href='http://picasa.google.com/blogger/' target='ext'&gt;&lt;img src='http://photos1.blogger.com/pbp.gif' alt='Posted by Picasa' style='border: 0px none ; padding: 0px; background: transparent none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial;' align='middle' border='0' /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-251247803596776912?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/251247803596776912/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2009/07/phifer-kitten.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/251247803596776912'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/251247803596776912'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2009/07/phifer-kitten.html' title='Phifer the kitten'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_yplfPuKoyB8/Sl_12seRXVI/AAAAAAAAANs/pWZxBuwQkVQ/s72-c/IMG_5476.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-8720184436968438921</id><published>2009-06-30T14:47:00.006-06:00</published><updated>2009-07-23T21:49:41.615-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='subprocess'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='tee'/><title type='text'>tee functionality with python subprocess PIPEs</title><content type='html'>Sometimes we may want the output of a process to go to more then one place.  In a shell, we would probably use tee(1).&lt;br /&gt;&lt;br /&gt;One example application is dumping large databases with storage engine that can't give you a time of last modification, e.g. mysql, using innodb.  Then I want the chksum of the dump, and if that is the same as the dump before, I'll unlink the older one and symlink it to the new dump.  I also want to check the dump stream to make sure it has finished properly.  And for good measure lets compress the stream on the fly.  SURE, you could do all this after the dump completes but then you have to wait for a lot of disk I/O that the pipes avoid.&lt;br /&gt;&lt;br /&gt;If you are like me, you'll want to use python.  Note that if you take the stdout from one pipe and read it with more that one (n) other process, each process will only get a fraction of the data, ~1/n.  So use a buffer to store the data and write it to each process that needs it.&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="brush:python"&gt;&lt;br /&gt;__version__ = [int(x) for x in "$Revision: 1.2 $".split()[1].split('.')]&lt;br /&gt;__author__ = "Kael Fischer &amp;lt;kael.fischer@gmail.com&amp;gt;"&lt;br /&gt;&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;syslog.syslog(syslog.LOG_ERR,"INFO: Starting mysqldump of %s on %s" % (db,host))&lt;br /&gt;try:&lt;br /&gt;    # make output files&lt;br /&gt;    outFile = file(outfileName,'w')&lt;br /&gt;    digFile = file(digestName,'w')&lt;br /&gt;&lt;br /&gt;    # make pipes&lt;br /&gt;    dumper= subprocess.Popen(["mysqldump","--opt","--skip-dump-date",&lt;br /&gt;                              "--single-transaction","--quick",db],&lt;br /&gt;                             stdout=subprocess.PIPE)&lt;br /&gt;    grepper = subprocess.Popen(["grep", '-q','^-- Dump completed$'],&lt;br /&gt;                               stdin=subprocess.PIPE,stdout=sys.stdout)&lt;br /&gt;    digester = subprocess.Popen(["md5", "-q"],stdin=subprocess.PIPE,stdout=digFile)&lt;br /&gt;    bziper =  subprocess.Popen(["bzip2"],&lt;br /&gt;                               stdin=subprocess.PIPE,stdout=outFile)&lt;br /&gt;&lt;br /&gt;    while dumper.poll() == None:&lt;br /&gt;        # use os.read NOT file.read&lt;br /&gt;        # file.read blocks.&lt;br /&gt;        # copy output from mysqldump to a buffer&lt;br /&gt;        buf=os.read(dumper.stdout.fileno(),5000)&lt;br /&gt;        # write buffer contents to 3 different processes&lt;br /&gt;        grepper.stdin.write(buf)&lt;br /&gt;        digester.stdin.write(buf)&lt;br /&gt;        bziper.stdin.write(buf)&lt;br /&gt;&lt;br /&gt;    # after dumper finishes,&lt;br /&gt;    # explicitly shut down input streams&lt;br /&gt;    # to other jobs&lt;br /&gt;    grepper.stdin.close()&lt;br /&gt;    digester.stdin.close()&lt;br /&gt;    bziper.stdin.close()&lt;br /&gt;&lt;br /&gt;    while grepper.poll() == None:&lt;br /&gt;        # wait if needed (shouldn't be)&lt;br /&gt;        time.sleep(1)&lt;br /&gt;&lt;br /&gt;    if grepper.returncode != 0:&lt;br /&gt;        raise RuntimeError("End of dump not found: grep returned - %s"%&lt;br /&gt;                           grepper.returncode)&lt;br /&gt;&lt;br /&gt;except BaseException, e:&lt;br /&gt;    # dump's no good, KeyboardInterrupt, whatever&lt;br /&gt;    syslog.syslog(syslog.LOG_ERR,"ERROR: %s : %s" % (type(e),e))&lt;br /&gt;    syslog.syslog(syslog.LOG_ERR,"ERROR: mysqldump of %s on %s failed" % (db,host))&lt;br /&gt;&lt;br /&gt;    # unsuccessful &lt;br /&gt;    # put files back where they were&lt;br /&gt;    # and exit&lt;br /&gt;    &lt;br /&gt;    # exercise for reader&lt;br /&gt;            &lt;br /&gt;&lt;br /&gt;syslog.syslog(syslog.LOG_ERR,"INFO: mysqldump of %s on %s finished" % (db,host))&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-8720184436968438921?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/8720184436968438921/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2009/06/tee-functionality-with-python.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/8720184436968438921'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/8720184436968438921'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2009/06/tee-functionality-with-python.html' title='tee functionality with python subprocess PIPEs'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-8456876980382933634</id><published>2009-06-29T13:39:00.011-06:00</published><updated>2009-07-22T22:17:54.209-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ssh'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='PHABRIX'/><title type='text'>python subprocess based parallel processing</title><content type='html'>The python threading module is cool and when combined with rpyc and the Sun Grid Engine you can get a lot done really fast on a cluster. I will blog that later, but using one of the tricks I use with rpyc with the newish 'subprocess' module in the python standard library, multi-process based parallel processing seems simpler then ever now.&lt;br /&gt;&lt;br /&gt;This is a jiffy to run a shell command on a number of hosts.&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="brush: python"&gt;&lt;br /&gt;&lt;br /&gt;#!/usr/local/bin/python -u&lt;br /&gt;#&lt;br /&gt;# runAllOver.py&lt;br /&gt;# Run a shell command on several machines using ssh&lt;br /&gt;#&lt;br /&gt;__version__ = tuple([int(x) for x in&lt;br /&gt;                   '$Revision: 1.2 $'.split()[1].split('.')])&lt;br /&gt;__author__ = "Kael Fischer"&lt;br /&gt;&lt;br /&gt;import sys&lt;br /&gt;import time&lt;br /&gt;import optparse&lt;br /&gt;from subprocess import Popen, PIPE&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;HOSTS = ["nfs1","nfs2","compute1","compute2","db1" ]&lt;br /&gt;&lt;br /&gt;def main(sysargs):&lt;br /&gt;&lt;br /&gt;  oneLineUsage = "Usage: %prog [options] '&amp;lt;remote command&amp;gt;'"&lt;br /&gt;&lt;br /&gt;  op = optparse.OptionParser(&lt;br /&gt;      oneLineUsage,&lt;br /&gt;      version="%prog " + '.'.join([str(x) for x in __version__]))&lt;br /&gt;&lt;br /&gt;  (opts,args) = op.parse_args(sysargs)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  try:&lt;br /&gt;      if len(args) == 0:&lt;br /&gt;          raise RuntimeError, "No remote command specified."&lt;br /&gt;  except Exception, eData:&lt;br /&gt;      print &gt;&gt; sys.stderr, ("\nUsage Error: %s\n" %eData.message)&lt;br /&gt;      print &gt;&gt; sys.stderr, op.format_help()&lt;br /&gt;      return 1&lt;br /&gt;&lt;br /&gt;  cmd = ' '.join(args)&lt;br /&gt;  print cmd&lt;br /&gt;&lt;br /&gt;  # make one running pipe object per host&lt;br /&gt;  pipes = [remotePipe(h,cmd) for h in HOSTS]&lt;br /&gt;&lt;br /&gt;  # report the results in turn&lt;br /&gt;  for i,p in enumerate(pipes):&lt;br /&gt;      print HOSTS[i] +':'&lt;br /&gt;      while p.poll() == None:&lt;br /&gt;          time.sleep(0.5)&lt;br /&gt;      print p.stdout.read()&lt;br /&gt;&lt;br /&gt;  return(0)  # we did it!&lt;br /&gt;&lt;br /&gt;def remotePipe(host,cmd,block=False):&lt;br /&gt;  p=Popen("ssh %s '%s'" %(host, cmd),shell=True,stdout=PIPE)&lt;br /&gt;  if block:&lt;br /&gt;      while p.poll() == None:&lt;br /&gt;          time.sleep(1)&lt;br /&gt;  return p&lt;br /&gt;&lt;br /&gt;if __name__ == "__main__":&lt;br /&gt;  sys.exit(main(sys.argv[1:]))&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;What's cool about that?  Well all the processes are running on the hosts simultaneously and that makes it go fast.&lt;br /&gt;&lt;br /&gt;Isn't that insecure?  Could be, depending on the context.  For ways to secure that kind of thing more, read this article by Brian Hatch: &lt;a href="http://www.hackinglinuxexposed.com/articles/20021211.html"&gt;http://www.hackinglinuxexposed.com/articles/20021211.html&lt;/a&gt;.  It was the basis for the intermachine communication in the PHABRIX and most especially prun was built using his authprogs as a starting concept (with greater flexibility and extra security layers added).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-8456876980382933634?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/8456876980382933634/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2009/06/python-subprocess-based-parallel.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/8456876980382933634'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/8456876980382933634'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2009/06/python-subprocess-based-parallel.html' title='python subprocess based parallel processing'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-1639977540900963499</id><published>2009-06-24T09:27:00.001-06:00</published><updated>2009-06-30T09:47:46.836-06:00</updated><title type='text'>Can Anyone Explain This Photo?</title><content type='html'>&lt;img src="http://farm4.static.flickr.com/3184/2939520966_5baf2d2551.jpg"&gt;&lt;a href="http://www.synthtopia.com/content/2009/06/22/can-anyone-explain-this-photo/"&gt;&lt;br /&gt;&lt;br&gt;Can Anyone Explain This Photo? » Synthtopia&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-1639977540900963499?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/1639977540900963499/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2009/06/can-anyone-explain-this-photo.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/1639977540900963499'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/1639977540900963499'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2009/06/can-anyone-explain-this-photo.html' title='Can Anyone Explain This Photo?'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3184/2939520966_5baf2d2551_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-2392666579312006577</id><published>2009-06-22T09:33:00.000-06:00</published><updated>2009-06-22T09:33:07.394-06:00</updated><title type='text'>SWIMMING CITIES OF SERENISSIMA</title><content type='html'>Floating Art on the Hudson&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.swimmingcities.org/swim/wp-content/uploads/2009/03/switchback-todseelie-43.jpg"&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.swimmingcities.org/swim/wp-content/uploads/2009/03/switchback-todseelie-1.jpg"&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.swimmingcities.org/photos/"&gt;SWIMMING CITIES OF SERENISSIMA » Photos&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-2392666579312006577?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.swimmingcities.org/photos/' title='SWIMMING CITIES OF SERENISSIMA'/><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/2392666579312006577/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2009/06/swimming-cities-of-serenissima.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/2392666579312006577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/2392666579312006577'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2009/06/swimming-cities-of-serenissima.html' title='SWIMMING CITIES OF SERENISSIMA'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-1249835350377996040</id><published>2009-06-18T17:38:00.000-06:00</published><updated>2009-06-18T17:38:53.210-06:00</updated><title type='text'>Current events Iran BBS</title><content type='html'>&lt;a href="http://iran.whyweprotest.net/"&gt;Why We Protest - IRAN - Powered by vBulletin&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-1249835350377996040?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://iran.whyweprotest.net/' title='Current events Iran BBS'/><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/1249835350377996040/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2009/06/current-events-iran-bbs.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/1249835350377996040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/1249835350377996040'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2009/06/current-events-iran-bbs.html' title='Current events Iran BBS'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-103021266284595803</id><published>2009-06-18T17:37:00.000-06:00</published><updated>2009-06-18T17:37:25.346-06:00</updated><title type='text'>How to setup a proxy for Iran citizens</title><content type='html'>&lt;a href="http://blog.austinheap.com/2009/06/15/how-to-setup-a-proxy-for-iran-citizens/"&gt;Austin Heap » Blog Archive » How to setup a proxy for Iran citizens&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-103021266284595803?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://blog.austinheap.com/2009/06/15/how-to-setup-a-proxy-for-iran-citizens/' title='How to setup a proxy for Iran citizens'/><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/103021266284595803/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2009/06/how-to-setup-proxy-for-iran-citizens.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/103021266284595803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/103021266284595803'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2009/06/how-to-setup-proxy-for-iran-citizens.html' title='How to setup a proxy for Iran citizens'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-6262804599959732750</id><published>2009-06-16T22:18:00.001-06:00</published><updated>2009-06-29T14:19:08.233-06:00</updated><title type='text'>Want Car! </title><content type='html'>&lt;img src="http://11.media.tumblr.com/XwbTyz1Uio8mnjz31ZdoTtcwo1_500.jpg"&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-6262804599959732750?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/6262804599959732750/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2009/06/want-car.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/6262804599959732750'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/6262804599959732750'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2009/06/want-car.html' title='Want Car! &lt;fixed&gt;'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-6694597296778426843</id><published>2009-05-24T15:06:00.000-06:00</published><updated>2009-05-24T15:06:15.576-06:00</updated><title type='text'>Auduino space groove</title><content type='html'>&lt;a href="http://blog.makezine.com/archive/2009/05/auduino_space_groove.html?CMP=OTC-0D6B48984890"&gt;Make: Online : Auduino space groove&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-6694597296778426843?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://blog.makezine.com/archive/2009/05/auduino_space_groove.html?CMP=OTC-0D6B48984890' title='Auduino space groove'/><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/6694597296778426843/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2009/05/auduino-space-groove.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/6694597296778426843'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/6694597296778426843'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2009/05/auduino-space-groove.html' title='Auduino space groove'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-7296325003431838508</id><published>2009-05-24T15:01:00.000-06:00</published><updated>2009-05-24T15:01:49.472-06:00</updated><title type='text'>Make: Online : Force Sensitive Resistor (FSR) tutorial</title><content type='html'>&lt;a href="http://blog.makezine.com/archive/2009/05/force_sensitive_resistor_fsr_tutori.html?CMP=OTC-0D6B48984890"&gt;Make: Online : Force Sensitive Resistor (FSR) tutorial&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-7296325003431838508?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://blog.makezine.com/archive/2009/05/force_sensitive_resistor_fsr_tutori.html?CMP=OTC-0D6B48984890' title='Make: Online : Force Sensitive Resistor (FSR) tutorial'/><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/7296325003431838508/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2009/05/make-online-force-sensitive-resistor.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/7296325003431838508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/7296325003431838508'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2009/05/make-online-force-sensitive-resistor.html' title='Make: Online : Force Sensitive Resistor (FSR) tutorial'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-3892196259187755934</id><published>2009-05-18T12:07:00.001-06:00</published><updated>2009-05-18T12:08:27.558-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hawk'/><category scheme='http://www.blogger.com/atom/ns#' term='dork haus'/><category scheme='http://www.blogger.com/atom/ns#' term='bird'/><title type='text'>Hawk Alert - Dork Haus</title><content type='html'>I think I saw a &lt;a href="http://www.avianweb.com/sharpshinnedhawks.html"&gt;Sharp-shinned Hawk&lt;/a&gt; at Dork Haus Sunday morning, but it might have been a Cooper's Hawk.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-3892196259187755934?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/3892196259187755934/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2009/05/hawk-alert-dork-haus.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/3892196259187755934'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/3892196259187755934'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2009/05/hawk-alert-dork-haus.html' title='Hawk Alert - Dork Haus'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-7196714091492885513</id><published>2009-05-16T17:53:00.002-06:00</published><updated>2009-05-19T10:45:46.153-06:00</updated><title type='text'>Zombies?</title><content type='html'>Ahhhh Zombies.&lt;br /&gt;&lt;br /&gt;This is not a death threat or anything like that.  I just like zombies.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.nerdcore.de/wp/wp-content/uploads/2009/03/zombama.jpg"&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.nerdcore.de/wp/wp-content/uploads/2009/03/zombama.jpg"&gt;zombama.jpg (JPEG Image, 250x389 pixels)&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-7196714091492885513?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/7196714091492885513/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2009/05/zombies.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/7196714091492885513'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/7196714091492885513'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2009/05/zombies.html' title='Zombies?'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-3924071143806257393</id><published>2009-05-16T12:58:00.000-06:00</published><updated>2009-05-16T12:58:37.416-06:00</updated><title type='text'>ESP Experiment</title><content type='html'>Try this spooky experiment! &lt;br /&gt;&lt;br /&gt;&lt;a href="http://sprott.physics.wisc.edu/pickover/esp.html"&gt;ESP Experiment&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-3924071143806257393?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://sprott.physics.wisc.edu/pickover/esp.html' title='ESP Experiment'/><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/3924071143806257393/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2009/05/esp-experiment.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/3924071143806257393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/3924071143806257393'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2009/05/esp-experiment.html' title='ESP Experiment'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-5448769347644659869</id><published>2009-05-11T12:54:00.000-06:00</published><updated>2009-05-11T12:54:50.583-06:00</updated><title type='text'>Get patients and tools</title><content type='html'>Yummy surgery - mmmmm!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.instructables.com/id/SGH2ZP7FU5527IN/"&gt;Get patients and tools&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-5448769347644659869?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.instructables.com/id/SGH2ZP7FU5527IN/' title='Get patients and tools'/><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/5448769347644659869/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2009/05/get-patients-and-tools.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/5448769347644659869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/5448769347644659869'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2009/05/get-patients-and-tools.html' title='Get patients and tools'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-8558228994729007999</id><published>2009-05-08T13:40:00.001-06:00</published><updated>2009-05-08T13:41:10.897-06:00</updated><title type='text'>Nate you are a major geek!</title><content type='html'>Me too I guess.  You know you are a geek when this shows up in your reader:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.fivethirtyeight.com/2009/05/horray-second-derivative-of.html"&gt;Horray! The Second Derivative of the Unemployment Rate Improved!&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-8558228994729007999?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/8558228994729007999/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2009/05/nate-you-are-major-geek.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/8558228994729007999'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/8558228994729007999'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2009/05/nate-you-are-major-geek.html' title='Nate you are a major geek!'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-4956316290200132748</id><published>2009-05-01T13:16:00.004-06:00</published><updated>2009-05-01T13:35:06.129-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='olpc'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='xo'/><category scheme='http://www.blogger.com/atom/ns#' term='4.N.13'/><title type='text'>4.N.13</title><content type='html'>Apropos of the Sugar &lt;a href="http://wiki.sugarlabs.org/go/User:Gdk/4th_Grade_Maths"&gt;4th grade math&lt;/a&gt; activity that David and I are working on, I wrote an integer like class that prints nicely and that allow each digit to be addressed as if it were a list.  &lt;br /&gt;&lt;br /&gt;__iter__ goes through the digits - allowing gui code to build digit boxes easily. &lt;br /&gt;&lt;br /&gt;e.g.:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&gt;&gt;&gt; print maths_4_N_13.LongDivFormatted(15670,3)&lt;br /&gt;      5,223&lt;br /&gt;   --------  R=1&lt;br /&gt; 3 | 15,670&lt;br /&gt;&gt;&gt;&gt; &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="brush: python"&gt;&lt;br /&gt;&lt;br /&gt;from types import  IntType, LongType&lt;br /&gt;&lt;br /&gt;THOUSANDS_SEP = ','&lt;br /&gt;DECIMAL_SEP = ''&lt;br /&gt;&lt;br /&gt;class TeachingWholeNumber(object):&lt;br /&gt;    """An integer whole number (&gt;= 0) where each digit is addressable&lt;br /&gt;    list style.  the 0th element of the 'digits' attribute&lt;br /&gt;    is the ones place, the 1st element is the&lt;br /&gt;    tens place and so on.&lt;br /&gt;    """&lt;br /&gt;&lt;br /&gt;    def __init__(self,n=0):&lt;br /&gt;        """New object with default value of 0&lt;br /&gt;        """&lt;br /&gt;        if n == 0:&lt;br /&gt;            self.digits=[0]&lt;br /&gt;        else:&lt;br /&gt;            n=int(n)&lt;br /&gt;            self.digits=[]&lt;br /&gt;            while n &gt; 0:&lt;br /&gt;                self.digits.append(n%10)&lt;br /&gt;                n=n/10&lt;br /&gt;&lt;br /&gt;    def __int__(self):&lt;br /&gt;        """Returns the corresponding integer value&lt;br /&gt;        """&lt;br /&gt;        retValue = 0&lt;br /&gt;        for i,v in enumerate(self.digits):&lt;br /&gt;            retValue += (10**i)*v&lt;br /&gt;        return retValue&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    #&lt;br /&gt;    # listy methods&lt;br /&gt;    #&lt;br /&gt;    def __len__(self):&lt;br /&gt;        """Returns the length of the digits list&lt;br /&gt;        """&lt;br /&gt;        return len(self.digits)&lt;br /&gt;&lt;br /&gt;    def __getitem__(self,i):&lt;br /&gt;        if type(i) not in (IntType,LongType):&lt;br /&gt;            return TypeError, "Index must be an integer type"&lt;br /&gt;        else:&lt;br /&gt;            return self.digits[i]&lt;br /&gt;&lt;br /&gt;    def __setitem__(self,i,v):&lt;br /&gt;        if type(i) not in (IntType,LongType):&lt;br /&gt;            return TypeError, "Index must be an integer type"&lt;br /&gt;        if type(v) != IntType or v &gt; 9 or v &lt; 0:&lt;br /&gt;            return ValueError, "value, v, must be an integer between 0 and 9"&lt;br /&gt;        if i &lt; len(self):&lt;br /&gt;            self.digits[i]=v&lt;br /&gt;        elif v &gt; 0:&lt;br /&gt;            # appending 0 past the last non-zero is a null op&lt;br /&gt;            while i&gt; len(self):&lt;br /&gt;                self.digits.append(0)&lt;br /&gt;            self.digits.append(v)&lt;br /&gt;&lt;br /&gt;    #&lt;br /&gt;    # Expected methods for number-like type&lt;br /&gt;    #&lt;br /&gt;    def __lt__(self, other):&lt;br /&gt;        return int(self) &lt; int(other)&lt;br /&gt;    &lt;br /&gt;    def __le__(self, other):&lt;br /&gt;        return int(self) &lt;= int(other)&lt;br /&gt;    &lt;br /&gt;    def __eq__(self, other):&lt;br /&gt;        return int(self) == int(other)&lt;br /&gt;&lt;br /&gt;    def __ne__(self, other):&lt;br /&gt;        return int(self) != int(other)&lt;br /&gt;&lt;br /&gt;    def __gt__(self, other):&lt;br /&gt;        return int(self) &gt; int(other)&lt;br /&gt;&lt;br /&gt;    def __ge__(self, other):&lt;br /&gt;        return int(self) &gt;= int(other)&lt;br /&gt;&lt;br /&gt;    def __add__(self, other):&lt;br /&gt;        return self.__class__(int(self)+int(other))&lt;br /&gt;    &lt;br /&gt;    def __sub__(self, other):&lt;br /&gt;        return self.__class__(int(self)-int(other))&lt;br /&gt;    &lt;br /&gt;    def __mul__(self, other):&lt;br /&gt;        return self.__class__(int(self)*int(other))&lt;br /&gt;    &lt;br /&gt;    def __floordiv__(self, other):&lt;br /&gt;        return self.__class__(int(self)/int(other))&lt;br /&gt;    &lt;br /&gt;    def __mod__(self, other):&lt;br /&gt;        return self.__class__(int(self)%int(other))&lt;br /&gt;    &lt;br /&gt;    def __divmod__(self, other):&lt;br /&gt;        return tuple([self.__class__(x)&lt;br /&gt;                      for x in divmod(int(self),int(other))])&lt;br /&gt;    &lt;br /&gt;    def __pow__(self, other):&lt;br /&gt;        return &lt;br /&gt;    &lt;br /&gt;    def __lshift__(self, other):&lt;br /&gt;        return NotImplemented&lt;br /&gt;    &lt;br /&gt;    def __rshift__(self, other):&lt;br /&gt;        return NotImplemented&lt;br /&gt;    &lt;br /&gt;    def __and__(self, other):&lt;br /&gt;        return NotImplemented&lt;br /&gt;    &lt;br /&gt;    def __xor__(self, other):&lt;br /&gt;        return NotImplemented&lt;br /&gt;    &lt;br /&gt;    def __or__(self, other):&lt;br /&gt;        return NotImplemented&lt;br /&gt;    &lt;br /&gt;    def __div__(self, other):&lt;br /&gt;        return self.__class__(int(self)/int(other))&lt;br /&gt;    &lt;br /&gt;    def __truediv__(self, other):&lt;br /&gt;        return NotImplemented&lt;br /&gt;    &lt;br /&gt;    def __neg__(self):&lt;br /&gt;        return NotImplemented&lt;br /&gt;    &lt;br /&gt;    def __pos__(self):&lt;br /&gt;        return NotImplemented&lt;br /&gt;&lt;br /&gt;    def __abs__(self):&lt;br /&gt;        return abs(int(self))&lt;br /&gt;&lt;br /&gt;    def __invert__(self):&lt;br /&gt;        return NotImplemented&lt;br /&gt;    &lt;br /&gt;    def __complex__(self):&lt;br /&gt;        return NotImplemented&lt;br /&gt;&lt;br /&gt;    def __long__(self):&lt;br /&gt;        return long(int(self))&lt;br /&gt;&lt;br /&gt;    def __float__(self):&lt;br /&gt;        return float(int(self))&lt;br /&gt;&lt;br /&gt;    def __repr__(self):&lt;br /&gt;        return str(int(self))&lt;br /&gt;&lt;br /&gt;    def __str__(self):&lt;br /&gt;        """pretty string&lt;br /&gt;        """&lt;br /&gt;&lt;br /&gt;        dgtList=[]&lt;br /&gt;        for i,v in enumerate(self):&lt;br /&gt;            if i&gt;0 and (i-1)%3 == 2:&lt;br /&gt;                dgtList.append(THOUSANDS_SEP)&lt;br /&gt;            dgtList.append(str(v))&lt;br /&gt;        dgtList.reverse()&lt;br /&gt;        return ''.join(dgtList)&lt;br /&gt;&lt;br /&gt;    def rshift(self,places=1):&lt;br /&gt;        """right shift (in base 10) disgarding 'places' least significant digits&lt;br /&gt;        &lt;br /&gt;        Arguments:&lt;br /&gt;        - `self`:&lt;br /&gt;        - `places`:&lt;br /&gt;        """&lt;br /&gt;        # is this better implememted by overriding &gt;&gt; ?&lt;br /&gt;        &lt;br /&gt;        while places &gt; 0:&lt;br /&gt;            self.digits.pop(0)&lt;br /&gt;            places -= 1&lt;br /&gt;&lt;br /&gt;    def lshift(self,places=1):&lt;br /&gt;        """left shift (in base 10) disgarding 'places' least significant digits.&lt;br /&gt;        Arguments:&lt;br /&gt;        - `self`:&lt;br /&gt;        - `places`:&lt;br /&gt;        """&lt;br /&gt;        # is this better implememted by overriding &lt;&lt; ?&lt;br /&gt;        while places &gt; 0:&lt;br /&gt;            self.digits.insert(0,0)&lt;br /&gt;            places -= 1&lt;br /&gt;&lt;br /&gt;def randomTWN(low,high):&lt;br /&gt;    """factory fcn to return a random TeachingWholeNumber,&lt;br /&gt;    between low and high inclusive.&lt;br /&gt;    """&lt;br /&gt;&lt;br /&gt;    if high &lt; 0 or low &lt; 0:&lt;br /&gt;        raise ValueError, "high and low must be &gt; 0"&lt;br /&gt;    &lt;br /&gt;    i = random.randint(low,high)&lt;br /&gt;    return TeachingWholeNumber(i)&lt;br /&gt;    &lt;br /&gt;&lt;br /&gt;class Division (object):&lt;br /&gt;    """Division Container&lt;br /&gt;    """&lt;br /&gt;&lt;br /&gt;    def __init__ (self,dividend,divisor):&lt;br /&gt;        """New one!&lt;br /&gt;        """&lt;br /&gt;        self.dividend = dividend&lt;br /&gt;        self.divisor = divisor&lt;br /&gt;        self.quotent, self.remainder = divmod(dividend,divisor)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;class LongDivFormatted(Division):&lt;br /&gt;    """Knows how to print itself&lt;br /&gt;    """&lt;br /&gt;    leftMargin = 1&lt;br /&gt;    rightMargin = 2&lt;br /&gt;    midMargin = 1&lt;br /&gt;    vertbar='|'&lt;br /&gt;    horizbar='-'&lt;br /&gt;&lt;br /&gt;    def __init__ (self,dividend,divisor,useTWN=True):&lt;br /&gt;        """New one!&lt;br /&gt;        """&lt;br /&gt;        if useTWN:&lt;br /&gt;            dividend=TeachingWholeNumber(dividend)&lt;br /&gt;            divisor=TeachingWholeNumber(divisor)&lt;br /&gt;        Division.__init__(self,dividend,divisor)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    def __str__ (self):&lt;br /&gt;        """ASCII representation.&lt;br /&gt;        """&lt;br /&gt;        mainWidth = (self.leftMargin+&lt;br /&gt;                     len(str(self.divisor))+&lt;br /&gt;                     (self.midMargin *2)+&lt;br /&gt;                     len(self.vertbar)+&lt;br /&gt;                     len(str(self.dividend)))&lt;br /&gt;        &lt;br /&gt;        remainderWidth = ((self.rightMargin) +&lt;br /&gt;                          len(str(self.remainder))+&lt;br /&gt;                          len('R='))&lt;br /&gt;&lt;br /&gt;        totalWidth = mainWidth+remainderWidth&lt;br /&gt;&lt;br /&gt;        retLines=[]&lt;br /&gt;        retLines.append(('%'+str(mainWidth)+'s')%(self.quotent))&lt;br /&gt;        retLines.append((' '*(self.leftMargin +&lt;br /&gt;                              len(str(self.divisor))+&lt;br /&gt;                              self.midMargin)) +&lt;br /&gt;                        (self.horizbar*(len(self.vertbar)+&lt;br /&gt;                                        self.midMargin+&lt;br /&gt;                                        len(str(self.dividend)))) +&lt;br /&gt;                        ('%'+str(remainderWidth)+'s')%('R='+str(self.remainder)))&lt;br /&gt;        retLines.append((' ' * self.leftMargin) +&lt;br /&gt;                        str(self.divisor) +&lt;br /&gt;                        (' ' * self.midMargin) +&lt;br /&gt;                        self.vertbar +&lt;br /&gt;                        (' ' * self.midMargin) +&lt;br /&gt;                        str(self.dividend))&lt;br /&gt;        &lt;br /&gt;        return '\n'.join(retLines)&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-4956316290200132748?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/4956316290200132748/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2009/05/4n13.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/4956316290200132748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/4956316290200132748'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2009/05/4n13.html' title='4.N.13'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-4162102647905196825</id><published>2009-04-29T17:45:00.000-06:00</published><updated>2009-04-29T17:45:15.177-06:00</updated><title type='text'>Make: Online : Using temperature sensors with Arduino</title><content type='html'>&lt;a href="http://blog.makezine.com/archive/2009/04/using_temperature_sensors_with_ardu.html"&gt;Make: Online : Using temperature sensors with Arduino&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-4162102647905196825?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://blog.makezine.com/archive/2009/04/using_temperature_sensors_with_ardu.html' title='Make: Online : Using temperature sensors with Arduino'/><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/4162102647905196825/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2009/04/make-online-using-temperature-sensors.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/4162102647905196825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/4162102647905196825'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2009/04/make-online-using-temperature-sensors.html' title='Make: Online : Using temperature sensors with Arduino'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-7639293940343389208</id><published>2009-04-28T11:52:00.000-06:00</published><updated>2009-04-28T11:52:20.316-06:00</updated><title type='text'>Humongous Python | O'Reilly Media</title><content type='html'>We recently had a pygame presentation at the Utah-PUG and it got me thinking about these Putt-Putt games my daughter was playing about the time I was first learning python.  The company that made putt-putt used python for those games.  They made and distributed a GPL'ed debugger to help with their C++/python projects. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.oreillynet.com/pub/a/python/2002/07/11/pythonnews.html"&gt;Humongous Python | O&amp;#39;Reilly Media&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-7639293940343389208?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.oreillynet.com/pub/a/python/2002/07/11/pythonnews.html' title='Humongous Python | O&apos;Reilly Media'/><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/7639293940343389208/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2009/04/humongous-python-oreilly-media.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/7639293940343389208'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/7639293940343389208'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2009/04/humongous-python-oreilly-media.html' title='Humongous Python | O&apos;Reilly Media'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-1726572153322270192</id><published>2009-04-28T10:06:00.000-06:00</published><updated>2009-04-28T10:06:38.687-06:00</updated><title type='text'>coin slot detector</title><content type='html'>The essential &lt;a href="http://www.instructables.com/id/coin_slot_detector/"&gt;coin slot detector&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-1726572153322270192?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.instructables.com/id/coin_slot_detector/' title='coin slot detector'/><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/1726572153322270192/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2009/04/coin-slot-detector.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/1726572153322270192'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/1726572153322270192'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2009/04/coin-slot-detector.html' title='coin slot detector'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-6359320218616411603</id><published>2009-04-27T14:33:00.002-06:00</published><updated>2009-04-27T14:34:38.675-06:00</updated><title type='text'>H1N1 Map</title><content type='html'>&lt;iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.com/maps/ms?hl=en&amp;amp;ie=UTF8&amp;amp;msa=0&amp;amp;msid=106484775090296685271.0004681a37b713f6b5950&amp;amp;ll=5.550607,-89.756927&amp;amp;spn=153.235694,298.828125&amp;amp;z=1&amp;amp;output=embed"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;small&gt;View &lt;a href="http://maps.google.com/maps/ms?hl=en&amp;amp;ie=UTF8&amp;amp;msa=0&amp;amp;msid=106484775090296685271.0004681a37b713f6b5950&amp;amp;ll=5.550607,-89.756927&amp;amp;spn=153.235694,298.828125&amp;amp;z=1&amp;amp;source=embed" style="color:#0000FF;text-align:left"&gt;H1N1 Swine Flu&lt;/a&gt; in a larger map&lt;/small&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-6359320218616411603?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/6359320218616411603/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2009/04/h1n1-map.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/6359320218616411603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/6359320218616411603'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2009/04/h1n1-map.html' title='H1N1 Map'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-4947544107454911956</id><published>2009-04-27T13:04:00.000-06:00</published><updated>2009-04-27T13:04:06.217-06:00</updated><title type='text'>Capacitor performs at CAS NightLife Event!</title><content type='html'>Capacitor is awesome.  I recommend you go to this show!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://hosted.verticalresponse.com/425841/ff31fc80a5/1680500821/c4ccbd8975/"&gt;Capacitor performs at CAS NightLife Event!&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-4947544107454911956?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://hosted.verticalresponse.com/425841/ff31fc80a5/1680500821/c4ccbd8975/' title='Capacitor performs at CAS NightLife Event!'/><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/4947544107454911956/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2009/04/capacitor-performs-at-cas-nightlife.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/4947544107454911956'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/4947544107454911956'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2009/04/capacitor-performs-at-cas-nightlife.html' title='Capacitor performs at CAS NightLife Event!'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-7946257437278787055</id><published>2009-04-27T09:29:00.001-06:00</published><updated>2009-04-27T09:35:32.214-06:00</updated><title type='text'>School of Medicine Seminars &amp; Events - via biochemistry department</title><content type='html'>&lt;a href="http://medicine.utah.edu/biochemistry/Seminars/index.htm"&gt;University of Utah Seminars &amp;amp; Events&lt;/a&gt;  oops sent this to the wrong blog&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-7946257437278787055?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/7946257437278787055/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2009/04/school-of-medicine-seminars-events-via.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/7946257437278787055'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/7946257437278787055'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2009/04/school-of-medicine-seminars-events-via.html' title='School of Medicine Seminars &amp; Events - via biochemistry department'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-1847270589803134012</id><published>2009-04-15T14:32:00.001-06:00</published><updated>2009-04-15T14:33:40.607-06:00</updated><title type='text'>dude - watch out - croc!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_yplfPuKoyB8/SeZEnajkDsI/AAAAAAAAAKs/b0jLBqHZLsw/s1600-h/pdaP31D1cly5aj0ybFi0nk9Bo1_400%5B1%5D.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 213px;" src="http://2.bp.blogspot.com/_yplfPuKoyB8/SeZEnajkDsI/AAAAAAAAAKs/b0jLBqHZLsw/s320/pdaP31D1cly5aj0ybFi0nk9Bo1_400%5B1%5D.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5325019053346262722" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-1847270589803134012?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/1847270589803134012/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2009/04/dude-watch-out-croc.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/1847270589803134012'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/1847270589803134012'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2009/04/dude-watch-out-croc.html' title='dude - watch out - croc!'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_yplfPuKoyB8/SeZEnajkDsI/AAAAAAAAAKs/b0jLBqHZLsw/s72-c/pdaP31D1cly5aj0ybFi0nk9Bo1_400%5B1%5D.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-5104972682660277741</id><published>2009-04-06T12:25:00.000-06:00</published><updated>2009-04-06T12:25:12.518-06:00</updated><title type='text'>The Guantánamo Testimonials Project — The Center for the Study of Human Rights in the Americas (CSHRA)</title><content type='html'>Tired of listening to blowhards (pundits, presidents, etc.) who talk about whether or not the American Government tortures people?  If so, you may be interested in the actual testimonies of people who were there: &lt;a href="http://humanrights.ucdavis.edu/projects/the-guantanamo-testimonials-project/index"&gt;The Guantánamo Testimonials Project — The Center for the Study of Human Rights in the Americas (CSHRA)&lt;/a&gt;  Click through for actual knowledge.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-5104972682660277741?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://humanrights.ucdavis.edu/projects/the-guantanamo-testimonials-project/index' title='The Guantánamo Testimonials Project — The Center for the Study of Human Rights in the Americas (CSHRA)'/><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/5104972682660277741/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2009/04/guantanamo-testimonials-project-center.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/5104972682660277741'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/5104972682660277741'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2009/04/guantanamo-testimonials-project-center.html' title='The Guantánamo Testimonials Project — The Center for the Study of Human Rights in the Americas (CSHRA)'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-5114160179378178842</id><published>2009-03-28T18:44:00.003-06:00</published><updated>2009-03-28T19:44:54.617-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='code formatting'/><title type='text'>Syntax Highlighting Code in Webpages</title><content type='html'>There is a nice bit of Javascript code here: &lt;a href="http://alexgorbatchev.com/wiki/SyntaxHighlighter"&gt;http://alexgorbatchev.com/wiki/SyntaxHighlighter&lt;/a&gt;  This package allows uses css to display pretty source code on a webpage.  It supports a lot of languages, but is missing a lot of common ones too.&lt;br /&gt;&lt;br /&gt;If you are using Blogger (or somewhere else where you can't upload files).  You can hot link the the scripts and css at &lt;a href="http://alexgorbatchev.com/pub/sh/"&gt;http://alexgorbatchev.com/pub/sh/&lt;/a&gt; which is up 99% of the time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-5114160179378178842?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/5114160179378178842/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2009/03/syntax-highlighting-code-in-webpages.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/5114160179378178842'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/5114160179378178842'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2009/03/syntax-highlighting-code-in-webpages.html' title='Syntax Highlighting Code in Webpages'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-4575638313276430791</id><published>2009-03-28T14:20:00.008-06:00</published><updated>2009-03-28T19:26:23.224-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kdbom'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>kdbom.tryDBconnect</title><content type='html'>I put a factory function for kdbom.db instances in kdbom.kdbom (previously I had it in viroinfo).&lt;br /&gt;&lt;br /&gt;It automatically checks localhost,3306 for the database after checking at the specified sites.... good if clients are not on the same private subnet the the server is on.&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="brush: python"&gt;&lt;br /&gt;&lt;br /&gt;def tryDBconnect(db=None,serversPorts=None,user=None,&lt;br /&gt;                 reuseDB=None,getTables=True,tryLocalPort=3306,&lt;br /&gt;                 fatal=False,verboseFailure=False):&lt;br /&gt;    """Try to connect to a database and return the db instance.  One or more server/port&lt;br /&gt;    combinations can be tried.  If no connection is successful a Warning is issued,&lt;br /&gt;    unless fatal is true in which case KdbomDatabaseError is raised.&lt;br /&gt;&lt;br /&gt;    db = databse name (string)&lt;br /&gt;    server = servers hostname (string)&lt;br /&gt;    port = server's listening port (int)&lt;br /&gt;          &lt;br /&gt;    After all given (server,port) combinations are tried one or more localhost&lt;br /&gt;    connections over port tryLocalPort will be attempted unless that is set&lt;br /&gt;    to None. tryLocalPort can be an integre type or a sequence of integers.&lt;br /&gt;&lt;br /&gt;    serversPorts should be a list of (server,port) tuples, or a single 2-tuple.&lt;br /&gt;    serversPorts can also be a single string to make replacement of db()&lt;br /&gt;    calls more straight forward (defaultPort is then used for the port).&lt;br /&gt;&lt;br /&gt;    Ir reuseDB is specified, this is just a call to the db class constructor.&lt;br /&gt;    """&lt;br /&gt;&lt;br /&gt;    connected = False&lt;br /&gt;    database = None&lt;br /&gt;&lt;br /&gt;    if reuseDB != None:&lt;br /&gt;        database = kdbom.db(db=db,reuseDBconnection=reuseDB,getTables=getTables)&lt;br /&gt;        connected = True&lt;br /&gt;    else:&lt;br /&gt;        if type (serversPorts) in StringTypes:&lt;br /&gt;            serversPorts = [(serversPorts,defaultPort)]&lt;br /&gt;        if type(serversPorts) != ListType:&lt;br /&gt;            if type(serversPorts) == NoneType:&lt;br /&gt;                serversPorts = []&lt;br /&gt;            elif (len(serversPorts) == 2&lt;br /&gt;                and type(serversPorts[0]) in StringTypes&lt;br /&gt;                and type(serversPorts[1]) in (IntType,LongType)):&lt;br /&gt;                serversPorts = [serversPorts]&lt;br /&gt;            elif type(serversPorts) == TupleType:&lt;br /&gt;                serversPorts = [serversPorts]&lt;br /&gt;            else:&lt;br /&gt;                raise ArgumentError, "serversPorts should be a list of tuples not: %s" % serversPorts&lt;br /&gt;        try:&lt;br /&gt;            for p in tryLocalPort:&lt;br /&gt;                serversPorts.append(('localhost',p))&lt;br /&gt;        except TypeError:&lt;br /&gt;            serversPorts.append(('localhost',tryLocalPort))&lt;br /&gt;&lt;br /&gt;        for host,port in serversPorts:&lt;br /&gt;            try:&lt;br /&gt;                print host,port&lt;br /&gt;                database = kdbom.db(db=db,host=host,port=port,user=user,getTables=getTables)&lt;br /&gt;                connected = True&lt;br /&gt;            except:&lt;br /&gt;                pass&lt;br /&gt;&lt;br /&gt;    if not connected:&lt;br /&gt;        if fatal:&lt;br /&gt;            if not verboseFailure:&lt;br /&gt;                raise KdbomDatabaseError, "%s DB not loaded" % db&lt;br /&gt;            &lt;br /&gt;        else:&lt;br /&gt;            warnings.warn("%s DB not loaded" % db)&lt;br /&gt;    return database&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-4575638313276430791?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/4575638313276430791/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2009/03/kdbomtrydbconnect.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/4575638313276430791'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/4575638313276430791'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2009/03/kdbomtrydbconnect.html' title='kdbom.tryDBconnect'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-5325039517429833186</id><published>2009-03-26T17:44:00.003-06:00</published><updated>2009-03-28T18:08:14.229-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='llvm'/><title type='text'>Google + Python + LLVM</title><content type='html'>There has been talk of targeting python to LLVM before (&lt;a href="http://codespeak.net/pypy/dist/pypy/doc/home.html"&gt;PyPy&lt;/a&gt;).  Google is jumping in with the &lt;a href="http://arstechnica.com/open-source/news/2009/03/google-launches-project-to-boost-python-performance-by-5x.ars"&gt;Unladen Swallow Project&lt;/a&gt;, hoping for performance multiples in the 3-5x range.&lt;br /&gt;&lt;br /&gt;Update:&lt;br /&gt;&lt;a href="http://morepypy.blogspot.com/2009/03/vm-summit-nice-to-see-friendly.html"&gt;More&lt;/a&gt; from PyPy's author.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-5325039517429833186?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/5325039517429833186/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2009/03/google-python-llvm.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/5325039517429833186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/5325039517429833186'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2009/03/google-python-llvm.html' title='Google + Python + LLVM'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-7945410932385734374</id><published>2009-03-26T17:40:00.001-06:00</published><updated>2009-03-26T17:54:28.272-06:00</updated><title type='text'>Weather Station Near Dork Haus</title><content type='html'>I wonder what the weather at my house is like right now?&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.wunderground.com/weatherstation/WXDailyHistory.asp?ID=KUTSALTL17"&gt;Weather Station History : KUTSALTL17&lt;/a&gt;&lt;br /&gt;&lt;object width="290" height="130"&gt;&lt;param name="movie" value="http://www.wunderground.com/swf/pws_mini_rf_nc.swf?station=KUTSALTL17&amp;freq=2.5&amp;units=metric&amp;lang=EN" /&gt;&lt;embed src="http://www.wunderground.com/swf/pws_mini_rf_nc.swf?station=KUTSALTL17&amp;freq=2.5&amp;units=metric&amp;lang=EN" type="application/x-shockwave-flash" width="290" height="130" /&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Or at work it's like this -&lt;br /&gt;&lt;object width="290" height="130"&gt;&lt;param name="movie" value="http://www.wunderground.com/swf/pws_mini_rf_nc.swf?station=MWBB&amp;freq=&amp;units=metric&amp;lang=EN" /&gt;&lt;embed src="http://www.wunderground.com/swf/pws_mini_rf_nc.swf?station=MWBB&amp;freq=&amp;units=metric&amp;lang=EN" type="application/x-shockwave-flash" width="290" height="130" /&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-7945410932385734374?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/7945410932385734374/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2009/03/weather-station-near-dork-haus.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/7945410932385734374'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/7945410932385734374'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2009/03/weather-station-near-dork-haus.html' title='Weather Station Near Dork Haus'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-6850473419913663911</id><published>2009-03-24T18:27:00.002-06:00</published><updated>2009-03-28T19:00:45.705-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='free as in herpes'/><category scheme='http://www.blogger.com/atom/ns#' term='gnu'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='gpl'/><title type='text'>GPL Harmful (the heresy of ESR)</title><content type='html'>Open source software and hacker God  &lt;a href="http://www.catb.org/%7Eesr/"&gt;Eric S. Raymond&lt;/a&gt; (ESR) told the Long Island Linux Club (&lt;a href="http://lilug.org/"&gt;LILUG&lt;/a&gt;) that the GPL does more harm than good.  Needless to say the GNU herd didn't want to hear it.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://dotcommie.net/feed/index.php?id=160"&gt;dotCOMmie's Blog&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-6850473419913663911?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/6850473419913663911/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2009/03/gpl-harmful-heresy-of-esr.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/6850473419913663911'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/6850473419913663911'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2009/03/gpl-harmful-heresy-of-esr.html' title='GPL Harmful (the heresy of ESR)'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-1935038163753954192</id><published>2009-03-24T17:18:00.000-06:00</published><updated>2009-03-24T17:18:19.206-06:00</updated><title type='text'>Go Utes!</title><content type='html'>Those Utes can shoot!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.unews.utah.edu/p/?r=032309-3"&gt;Utes Win Big at National Pistol Championships : University of Utah News Release : March 23rd, 2009&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-1935038163753954192?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.unews.utah.edu/p/?r=032309-3' title='Go Utes!'/><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/1935038163753954192/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2009/03/go-utes.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/1935038163753954192'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/1935038163753954192'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2009/03/go-utes.html' title='Go Utes!'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-8036735594282249558</id><published>2009-03-23T17:35:00.000-06:00</published><updated>2009-03-23T17:35:55.915-06:00</updated><title type='text'>Old Snooping Methods are New Again</title><content type='html'>I guess this has been in the works for a while, but now it's out in the open.  Remember: just because you are paranoid, that doesn't mean they aren't after you. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.itworld.com/security/64193/researchers-find-ways-sniff-keystrokes-thin-air"&gt;Researchers find ways to sniff keystrokes from thin air | ITworld&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-8036735594282249558?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.itworld.com/security/64193/researchers-find-ways-sniff-keystrokes-thin-air' title='Old Snooping Methods are New Again'/><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/8036735594282249558/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2009/03/old-snooping-methods-are-new-again.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/8036735594282249558'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/8036735594282249558'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2009/03/old-snooping-methods-are-new-again.html' title='Old Snooping Methods are New Again'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-3394394946660256862</id><published>2009-03-23T17:23:00.000-06:00</published><updated>2009-03-23T17:23:08.855-06:00</updated><title type='text'>Google HaX0r</title><content type='html'>l33t hax0r google&lt;br /&gt;&lt;br /&gt;&lt;a href="http://600673.com/"&gt;600673.COM&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-3394394946660256862?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://600673.com/' title='Google HaX0r'/><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/3394394946660256862/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2009/03/google-hax0r.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/3394394946660256862'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/3394394946660256862'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2009/03/google-hax0r.html' title='Google HaX0r'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-3683622419097081146</id><published>2009-03-22T09:42:00.002-06:00</published><updated>2009-03-22T09:45:17.172-06:00</updated><title type='text'>Checkout this very kewl cake</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img16.imageshack.us/img16/5532/cakee.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 387px; height: 350px;" src="http://img16.imageshack.us/img16/5532/cakee.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://img16.imageshack.us/img16/5532/cakee.png"&gt;Peter likes this cake&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-3683622419097081146?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/3683622419097081146/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2009/03/chechout-this-very-kewl-cake.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/3683622419097081146'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/3683622419097081146'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2009/03/chechout-this-very-kewl-cake.html' title='Checkout this very kewl cake'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-3704681906092594601</id><published>2009-03-19T21:00:00.000-06:00</published><updated>2009-03-19T21:00:57.932-06:00</updated><title type='text'>What people really think about God</title><content type='html'>It is interesting to see the hate people have for people who have the audacity to believe something they do not.  Sunnite &lt;=&gt; Shi'ite; Christian &lt;=&gt; Pastafarian.&lt;br /&gt;&lt;br /&gt;Here is a record of how people feel about Pastafarians: &lt;a href="http://www.venganza.org/category/hate-mail/"&gt;Hate Mail (and concerned criticism) archive - Church of the Flying Spaghetti Monster&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-3704681906092594601?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.venganza.org/category/hate-mail/' title='What people really think about God'/><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/3704681906092594601/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2009/03/what-people-really-think-about-god.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/3704681906092594601'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/3704681906092594601'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2009/03/what-people-really-think-about-god.html' title='What people really think about God'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-2143578344429420292</id><published>2009-03-19T20:34:00.000-06:00</published><updated>2009-03-19T20:34:13.200-06:00</updated><title type='text'>FSM Bank Card - Church of the Flying Spaghetti Monster</title><content type='html'>What I want for my birthday!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.venganza.org/2009/03/12/fsm-bank-card/"&gt;FSM Bank Card - Church of the Flying Spaghetti Monster&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-2143578344429420292?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.venganza.org/2009/03/12/fsm-bank-card/' title='FSM Bank Card - Church of the Flying Spaghetti Monster'/><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/2143578344429420292/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2009/03/fsm-bank-card-church-of-flying.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/2143578344429420292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/2143578344429420292'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2009/03/fsm-bank-card-church-of-flying.html' title='FSM Bank Card - Church of the Flying Spaghetti Monster'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-3752165497812313757</id><published>2009-03-19T20:30:00.000-06:00</published><updated>2009-03-19T20:30:14.083-06:00</updated><title type='text'>Ample evidence shows Flying Spaghetti Monster is creator | News-Leader.com | Springfield News-Leader</title><content type='html'>&lt;span style="font-weight:bold;"&gt;REPENT!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.news-leader.com/article/20090316/OPINIONS/903160321"&gt;Ample evidence shows Flying Spaghetti Monster is creator | News-Leader.com | Springfield News-Leader&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-3752165497812313757?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.news-leader.com/article/20090316/OPINIONS/903160321' title='Ample evidence shows Flying Spaghetti Monster is creator | News-Leader.com | Springfield News-Leader'/><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/3752165497812313757/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2009/03/ample-evidence-shows-flying-spaghetti.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/3752165497812313757'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/3752165497812313757'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2009/03/ample-evidence-shows-flying-spaghetti.html' title='Ample evidence shows Flying Spaghetti Monster is creator | News-Leader.com | Springfield News-Leader'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-4744072795005582041</id><published>2009-03-19T20:25:00.000-06:00</published><updated>2009-03-19T20:25:55.654-06:00</updated><title type='text'>Censorwatch: $11,000-A-Day Fine For Linking To A Blacklisted Site, Wikileaks Blacklisted - Gizmodo Australia</title><content type='html'>&lt;a href="http://www.gizmodo.com.au/2009/03/censorwatch_11000-a-day_fine_for_linking_to_a_blacklisted_site_wikileaks_blacklisted.html"&gt;Censorwatch: $11,000-A-Day Fine For Linking To A Blacklisted Site, Wikileaks Blacklisted - Gizmodo Australia&lt;/a&gt;: "Censorwatch: $11,000-A-Day Fine For Linking To A Blacklisted Site, Wikileaks Blacklisted"&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.wikileaks.org"&gt;wikileaks&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-4744072795005582041?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.gizmodo.com.au/2009/03/censorwatch_11000-a-day_fine_for_linking_to_a_blacklisted_site_wikileaks_blacklisted.html' title='Censorwatch: $11,000-A-Day Fine For Linking To A Blacklisted Site, Wikileaks Blacklisted - Gizmodo Australia'/><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/4744072795005582041/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2009/03/censorwatch-11000-day-fine-for-linking.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/4744072795005582041'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/4744072795005582041'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2009/03/censorwatch-11000-day-fine-for-linking.html' title='Censorwatch: $11,000-A-Day Fine For Linking To A Blacklisted Site, Wikileaks Blacklisted - Gizmodo Australia'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-4159854228231861794</id><published>2009-03-19T20:21:00.001-06:00</published><updated>2009-03-19T20:21:31.100-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='obama'/><category scheme='http://www.blogger.com/atom/ns#' term='foia'/><category scheme='http://www.blogger.com/atom/ns#' term='change'/><title type='text'>White House Declares Copyright Treaty State Secret | WebProNews</title><content type='html'>Obama not changing things.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.webpronews.com/topnews/2009/03/16/white-house-declares-copyright-treaty-state-secret"&gt;White House Declares Copyright Treaty State Secret | WebProNews&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-4159854228231861794?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/4159854228231861794/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2009/03/white-house-declares-copyright-treaty.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/4159854228231861794'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/4159854228231861794'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2009/03/white-house-declares-copyright-treaty.html' title='White House Declares Copyright Treaty State Secret | WebProNews'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-6086077771948742479</id><published>2009-03-17T15:07:00.000-06:00</published><updated>2009-03-17T15:07:51.197-06:00</updated><title type='text'>PEP 289 -- Generator Expressions</title><content type='html'>Everyone that learned python from me, probably doesn't know these exist.  So take note:&lt;br /&gt;&lt;br /&gt;kewler than list comprehension: generator expressions (!)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.python.org/dev/peps/pep-0289/"&gt;PEP 289 -- Generator Expressions&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-6086077771948742479?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.python.org/dev/peps/pep-0289/' title='PEP 289 -- Generator Expressions'/><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/6086077771948742479/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2009/03/pep-289-generator-expressions.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/6086077771948742479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/6086077771948742479'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2009/03/pep-289-generator-expressions.html' title='PEP 289 -- Generator Expressions'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-7143859867869971889</id><published>2009-03-17T14:34:00.004-06:00</published><updated>2009-03-17T14:41:59.157-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><category scheme='http://www.blogger.com/atom/ns#' term='diff'/><category scheme='http://www.blogger.com/atom/ns#' term='script'/><title type='text'>Compare command output on 2 hosts</title><content type='html'>This works nicely on my 2 compute nodes.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#!/bin/tcsh&lt;br /&gt;set tmp1 = `mktemp -t computeDiff.csh.c1.XXXXXX`&lt;br /&gt;set tmp2 = `mktemp -t computeDiff.csh.c2.XXXXXX`&lt;br /&gt;onintr exit&lt;br /&gt;foreach cmd ( $argv )&lt;br /&gt;   ssh kf-compute1 "$cmd" &gt;! $tmp1&lt;br /&gt;   ssh kf-compute2 "$cmd" &gt;! $tmp2&lt;br /&gt;   echo "########### $cmd ################"&lt;br /&gt;   echo "### diff compute1 compute2"&lt;br /&gt;   diff $tmp1 $tmp2&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;exit:&lt;br /&gt;   rm $tmp1* &gt;&amp;amp;/dev/null&lt;br /&gt;   rm $tmp2* &gt;&amp;amp;/dev/null&lt;br /&gt;# end script&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Q: What Software Is Installed On Only One Node?&lt;br /&gt;A:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;unix-prompt&gt; % computeDiff.csh pkg_info&lt;br /&gt;########### pkg_info ################&lt;br /&gt;### diff compute1 compute2&lt;br /&gt;22a23&lt;br /&gt;&gt; compat6x-amd64-6.4.604000.200810 A convenience package to install the compat6x libraries&lt;br /&gt;24d24&lt;br /&gt;&lt; cvsup-without-gui-16.1h_4 File distribution system optimized for CVS (non-GUI version&lt;br /&gt;34d33&lt;br /&gt;&lt; fastest_cvsup-0.2.9_5 Finds fastest CVSup server&lt;br /&gt;62a62&lt;br /&gt;&gt; iperf-2.0.4         A tool to measure maximum TCP and UDP bandwidth&lt;br /&gt;150d149&lt;br /&gt;&lt; sge-6.2.b           Sun Grid Engine, a batch queueing system&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-7143859867869971889?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/7143859867869971889/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2009/03/compare-command-output-on-2-hosts.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/7143859867869971889'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/7143859867869971889'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2009/03/compare-command-output-on-2-hosts.html' title='Compare command output on 2 hosts'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-1858316771340888886</id><published>2009-03-12T21:37:00.000-06:00</published><updated>2009-03-12T21:38:04.717-06:00</updated><title type='text'>Kaelbot Central Moving Up In Rankings</title><content type='html'>I have my first follower!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-1858316771340888886?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/1858316771340888886/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2009/03/kaelbot-central-moving-up-in-rankings.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/1858316771340888886'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/1858316771340888886'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2009/03/kaelbot-central-moving-up-in-rankings.html' title='Kaelbot Central Moving Up In Rankings'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-5518777980896837996</id><published>2009-03-12T18:10:00.004-06:00</published><updated>2009-03-12T18:45:09.861-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='peter'/><category scheme='http://www.blogger.com/atom/ns#' term='pickle'/><title type='text'>finaly factored out PickleableObject</title><content type='html'>uses my nonclobbering file opener: safeOFW&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;class PickleableObject(object):&lt;br /&gt;   """Generic pickleable class&lt;br /&gt;   """&lt;br /&gt;   def save(self,filename,clobber=False):&lt;br /&gt;       """given an object, e.g. a taxon dictionary,&lt;br /&gt;       pickle it into the specified filename&lt;br /&gt;&lt;br /&gt;       Set clobber = True to allow overwriting of the&lt;br /&gt;       output file"""&lt;br /&gt;       import cPickle&lt;br /&gt;       f = safeOFW(filename,clobber=clobber,append=False)&lt;br /&gt;       cPickle.dump(self,f)&lt;br /&gt;       f.close()&lt;br /&gt;&lt;br /&gt;   @classmethod&lt;br /&gt;   def restore(cls,filename):&lt;br /&gt;       """given a filename, return an object containing the&lt;br /&gt;       pickled data in that file"""&lt;br /&gt;       import cPickle&lt;br /&gt;       f = open(filename,'rb')&lt;br /&gt;       obj = cPickle.load(f)&lt;br /&gt;       return obj&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I've been meaning to move this from a class that Peter wrote it in to originally at my request.  It's quite nice to have it globally available.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-5518777980896837996?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/5518777980896837996/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2009/03/finaly-factored-out-pickleableobject.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/5518777980896837996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/5518777980896837996'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2009/03/finaly-factored-out-pickleableobject.html' title='finaly factored out PickleableObject'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-5883826293200854294</id><published>2009-03-11T16:06:00.002-06:00</published><updated>2009-03-12T18:38:15.241-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='stupid'/><category scheme='http://www.blogger.com/atom/ns#' term='language'/><title type='text'>Words that nerds use that I hate</title><content type='html'>&lt;span style="font-weight: bold;font-family:courier new;" &gt;distro&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;      - &lt;/span&gt;"distribution" please&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;tarball     &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;- &lt;/span&gt;"tar file" (the fact that it is gzipped, will be obvious to any that care)&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;architected &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;- &lt;/span&gt;the word you are looking for is "designed"  &lt;span style="font-style: italic;"&gt;n.b. actual architects do not use this word to describe their activities&lt;/span&gt;.&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-weight: bold;"&gt;sequel      -&lt;/span&gt; &lt;/span&gt;Do you mean "S"-"Q"-"L"?  (./ers you know the 'sequel' form is M$ spawn, right?)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-5883826293200854294?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/5883826293200854294/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2009/03/words-that-nerds-use-that-i-hate.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/5883826293200854294'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/5883826293200854294'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2009/03/words-that-nerds-use-that-i-hate.html' title='Words that nerds use that I hate'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-6855136792707725661</id><published>2009-03-11T16:05:00.001-06:00</published><updated>2009-03-12T18:38:48.817-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='for lab'/><category scheme='http://www.blogger.com/atom/ns#' term='awesome'/><title type='text'>HealthMap | Global disease alert map</title><content type='html'>This should go on the lab web page &lt;a href="http://www.healthmap.org/promed/en"&gt;HealthMap | Global disease alert map&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-6855136792707725661?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/6855136792707725661/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2009/03/healthmap-global-disease-alert-map.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/6855136792707725661'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/6855136792707725661'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2009/03/healthmap-global-disease-alert-map.html' title='HealthMap | Global disease alert map'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-1688203125132552803</id><published>2009-02-24T22:11:00.000-07:00</published><updated>2009-02-24T22:12:49.499-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>[How-To] Add or Remove New Send-To Locations in Windows Without any Software | Technofriends</title><content type='html'>I always wondered...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://technofriends.in/2009/02/21/how-to-add-or-remove-new-send-to-locations-in-windows-without-any-software/"&gt;[How-To] Add or Remove New Send-To Locations in Windows Without any Software | Technofriends&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-1688203125132552803?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/1688203125132552803/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2009/02/how-to-add-or-remove-new-send-to.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/1688203125132552803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/1688203125132552803'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2009/02/how-to-add-or-remove-new-send-to.html' title='[How-To] Add or Remove New Send-To Locations in Windows Without any Software | Technofriends'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4877234600441129506.post-8334829106383349193</id><published>2008-09-08T16:35:00.000-06:00</published><updated>2009-03-12T21:36:40.148-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='time'/><category scheme='http://www.blogger.com/atom/ns#' term='dict'/><category scheme='http://www.blogger.com/atom/ns#' term='utils'/><title type='text'>new utils functions</title><content type='html'>A lot had been added to the utils package of late.&lt;br /&gt;&lt;br /&gt;-nullDict:  make a dictionary with all the values of None and the keys from a given iterable.&lt;br /&gt;Note this is the essential work in making a unique list.&lt;br /&gt;&lt;br /&gt;-time2datetime: make a datetime instance from a time instance&lt;br /&gt;    """convert time (from time module)&lt;br /&gt;    to datetime from datetime module&lt;br /&gt;    """&lt;br /&gt;&lt;br /&gt;-dict2optStr: makes handy option string for use when calling external programs&lt;br /&gt;    """transform a dictionary to a command line options string.&lt;br /&gt;    e.g. {'-o': 'short', '-x': None} =&gt; "-o short -x"&lt;br /&gt;    """&lt;br /&gt;&lt;br /&gt;-iterCount&lt;br /&gt;    """count number of times each value is seen in iterable.&lt;br /&gt;    return dict((value,count),...)&lt;br /&gt;    """&lt;br /&gt;&lt;br /&gt;-addDict&lt;br /&gt;    """Given 2 dictionaries with values that support addition&lt;br /&gt;    numbers, strings, lists, tuples returns a dictionary&lt;br /&gt;    with shared keys' vaules which are the sum of the like-keyed values.&lt;br /&gt;    Unique keys in d1, d2 are also in the result.&lt;br /&gt;    """&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4877234600441129506-8334829106383349193?l=kaelbot.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaelbot.blogspot.com/feeds/8334829106383349193/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://kaelbot.blogspot.com/2008/09/new-utils-functions.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/8334829106383349193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4877234600441129506/posts/default/8334829106383349193'/><link rel='alternate' type='text/html' href='http://kaelbot.blogspot.com/2008/09/new-utils-functions.html' title='new utils functions'/><author><name>Kael</name><uri>http://www.blogger.com/profile/04741143264870141867</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
