<?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-19037533</id><updated>2012-01-30T21:30:08.277-08:00</updated><category term='Captain Klaa'/><category term='Rock Star Programmer'/><category term='dodgeball kickball ultimate frisbee silicon valley obscure sports bruce lee chuck norris ouch'/><category term='share singularity ape crack algorithms today'/><category term='script screen typescript and homer simpson'/><category term='economies of scope concentrated solar big thing sticking down into head'/><title type='text'>icltlfatppl</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://rbodo.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19037533/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://rbodo.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>rsb</name><uri>http://www.blogger.com/profile/00269513857111909714</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='17' src='http://static.flickr.com/12/68816100_e6fcd5c9d2_m.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>30</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-19037533.post-4885338829174965097</id><published>2012-01-25T00:22:00.000-08:00</published><updated>2012-01-29T13:18:56.569-08:00</updated><title type='text'>Auto-autos - a little less biology in the loop</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/-TP1tKZtMau0/TyUa1gi_4BI/AAAAAAAABko/2r0aZS6FF-s/s1600/robotcar1.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 200px; height: 144px;" src="http://1.bp.blogspot.com/-TP1tKZtMau0/TyUa1gi_4BI/AAAAAAAABko/2r0aZS6FF-s/s200/robotcar1.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5702994009706717202" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;What I hear at the water cooler&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I recently visited the &lt;a href="http://www.meetup.com/Silicon-Valley-Automotive-Open-Source/"&gt;Silicon Valley Open Source Automotive meetup&lt;/a&gt; at &lt;a href="http://wiki.hackerdojo.com/w/page/25437/FrontPage"&gt;HackerDojo&lt;/a&gt;.  Ostensibly required reading ahead of the meeting was the &lt;a href="http://www.wired.com/magazine/2012/01/ff_autonomouscars/all/1"&gt;wired article&lt;/a&gt; on auto-autos.  You kind of have to read that one as a backgrounder, but the summary: google already has dozens of robotic cars on the road driving around with you, and they are better drivers than humans.  Been that way for a while.  Yeah.  Wake up and smell the robotic equivalent of coffee, whatever that is.  Buster.&lt;br /&gt;&lt;br /&gt;Anyway, had a nice chat with some knowledgeable people.  Some similar opinions to what I heard from electric car junkies at CES.  Consensus at the meeting was in line with the wired article concerning the timeframe for commercial availability of auto-autos - 10 years or so.&lt;br /&gt;&lt;br /&gt;What seemed to be totally unknown was the business model.  Even the little baby steps of car automation, auto-parking, nicer computing systems with heads up displays, etc. are out of reach of the average consumer due to price concerns.  Actually, I can't immediately think of any &lt;a href="http://en.wikipedia.org/wiki/Future_car_technologies"&gt;future car technologies&lt;/a&gt; that would save money on the initial purchase price of an automobile.  So although everyone seems to accept that self-driving electric-hybrid robotic cars are the future, no one has a clear grasp on the business model that will enable that future.  FWIW, from what I hear, that is the consensus at all the clued in major auto makers.&lt;br /&gt;&lt;br /&gt;What we are on the cusp of is a form of transportation with a 10X advantage over what exists (at a higher initial price).  You park it anywhere, and you can let it automatically drive you.  It's safer, cheaper on energy, and frees up your time.  It's like having a driver pull up when you want him, and chauffer you around.  With luck, it can drop you and park itself somewhere convenient - you don't even have a garage or pay a salary.  So rich people will just buy these things outright, but the rest of us need another model.&lt;br /&gt;&lt;br /&gt;A cursory amount of research reveals that &lt;a href="http://www.cleantechblog.com/2011/08/hertz-expands-electric-car-rental-in-united-states-and-china.html"&gt;big&lt;/a&gt; &lt;a href="http://www.enterprise.com/car_rental/hybridOfferedCities.do"&gt;rental&lt;/a&gt; &lt;a href="http://www.erdf-masters-kart.com/UK/?page_id=254"&gt;car companies&lt;/a&gt; are already renting electric cars. &lt;a href="http://www.hawaiicleanenergyinitiative.org/imported-20101004182628/2012/1/23/clean-energy-goals-are-a-steep-uphill-climb.html"&gt;Local government intervention &lt;/a&gt; and &lt;a href="http://www.afdc.energy.gov/afdc/data/fleets.html"&gt;purchase&lt;/a&gt; &lt;a href="http://www.afdc.energy.gov/afdc/data/providers.html"&gt;of advanced vehicle fleets&lt;/a&gt; &lt;a href="http://www.cargroup.org/pdfs/deployment.pdf"&gt;occasionally&lt;/a&gt; pushes clean car tech as well.  Without conflating electric cars with auto-autos too much, I believe that the markets and challenges are similar for both technologies.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-Qc7iOCmPccI/TyUa-FvQTzI/AAAAAAAABk0/XYc8G4y4qiI/s1600/robotcar2.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 170px;" src="http://4.bp.blogspot.com/-Qc7iOCmPccI/TyUa-FvQTzI/AAAAAAAABk0/XYc8G4y4qiI/s200/robotcar2.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5702994157129191218" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Spin we're likely to hear&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Briefly I'll mention psychology.  There is, of course, fear - range anxiety, and any other anxiety that you can whip up in people about new car technology - this will definitely kill individual purchases.  Certain segments of the American market which are primarily driven by fear are ... unretrievable.  Those people will buy only what they are told to.  But with a 10X value advantage the rest of us will get over that fear.  Interesting thought - corporations are motivated to uncover the facts behind the &lt;a href="http://en.wikipedia.org/wiki/Fear,_uncertainty_and_doubt"&gt;FUD&lt;/a&gt; to improve the bottom line - corporations are FUD creators, not FUD consumers!&lt;br /&gt;&lt;br /&gt;The energy industry has to be considering which side to weigh in on.  Oil demand destruction is not in line with oil company interests.  Interests that can afford the best congresspeople money can buy.  &lt;a href="http://www.exxonmobil.com/Corporate/energy_outlook.aspx"&gt;Exxon predicts&lt;/a&gt; 60% of cars will be gas-only, 40% hybrid, by 2040, with a negligible sprinking of fully electric vehicles.  Not in line with what I've been hearing elsewhere.   Interestingly, though, they expect all oil demand increases to come from the &lt;a href="http://www.exxonmobil.com/corporate/energy_outlook_eotransportationdemand.aspx"&gt;commercial sector&lt;/a&gt;. On the other hand, it seems at least some public utilities might &lt;a href="http://evworld.com/news.cfm?newsid=26314"&gt;stand &lt;/a&gt;to gain power through charging and other infrastructure.  They are also &lt;a href="http://www.pge.com/about/environment/pge/fleets/"&gt;fleet customers&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Finally, there is no legal framework for robots driving cars, particularly without a human in the loop.  However, everyone seems to be looking the other way right now.  This is where the opponents will hit hard and fast, buying congressmen like it's black friday.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Smarmy smarty-pants ill-informed theory&lt;/span&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-6wvAzUevZ6Q/TyUbJ_XETlI/AAAAAAAABlA/h2iluUhiN40/s1600/robotcar3.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 161px;" src="http://3.bp.blogspot.com/-6wvAzUevZ6Q/TyUbJ_XETlI/AAAAAAAABlA/h2iluUhiN40/s200/robotcar3.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5702994361575558738" /&gt;&lt;/a&gt;&lt;br /&gt;It seems that fleets are the current wedge by which electric vehicles and auto-autos are entering the market.  And since even electric car nuts won't pop for the first auto-autos, renting from fleets makes sense, ala the &lt;a href="http://en.wikipedia.org/wiki/Carsharing"&gt;carsharing&lt;/a&gt; models of zipcar, u-car-share, philly-car-share, hertz on-demand, etc. etc.  Auto-autos actually make perfect sense for these fleets from an insurance perspective as well as an efficiency perspective, especially if the law will look the other way to driverless auto-autos.  &lt;br /&gt;&lt;br /&gt;Cab companies will love them as well.  Cabbies will not.  If there is any middle class left in the US in 10 or 20 years, they will probably be more likely to call an auto-auto to get to work than a cabbie.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-dqog10FH_Ag/TyUbfyPGvCI/AAAAAAAABlM/5X9GcIIAu10/s1600/robotcar4.jpeg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 200px; height: 176px;" src="http://1.bp.blogspot.com/-dqog10FH_Ag/TyUbfyPGvCI/AAAAAAAABlM/5X9GcIIAu10/s200/robotcar4.jpeg" border="0" alt=""id="BLOGGER_PHOTO_ID_5702994736009624610" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;First we replace the horse, then the rider.  &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;We used to ride horses around.  That lasted for what, 1000 years?  It's still cool to own a horse and ride it around, for fun, I mean, but it's getting rare.  Farming is done by robots, self-flying planes are almost there.  Automatic cars are so close we can taste it. Tastes like robot.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2821658279248314";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19037533-4885338829174965097?l=rbodo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rbodo.blogspot.com/feeds/4885338829174965097/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19037533&amp;postID=4885338829174965097' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19037533/posts/default/4885338829174965097'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19037533/posts/default/4885338829174965097'/><link rel='alternate' type='text/html' href='http://rbodo.blogspot.com/2012/01/auto-autos-little-less-biology-in-loop.html' title='Auto-autos - a little less biology in the loop'/><author><name>rsb</name><uri>http://www.blogger.com/profile/00269513857111909714</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='17' src='http://static.flickr.com/12/68816100_e6fcd5c9d2_m.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-TP1tKZtMau0/TyUa1gi_4BI/AAAAAAAABko/2r0aZS6FF-s/s72-c/robotcar1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19037533.post-2481651677684868566</id><published>2012-01-23T01:30:00.000-08:00</published><updated>2012-01-23T09:59:48.668-08:00</updated><title type='text'>We are all Agnostics now.</title><content type='html'>&lt;a href="http://4.bp.blogspot.com/-M1GRZ_kuv2M/Tx1MM3yhiJI/AAAAAAAABg4/9xO-I3BlDmY/s1600/montypythongod.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 150px;" src="http://4.bp.blogspot.com/-M1GRZ_kuv2M/Tx1MM3yhiJI/AAAAAAAABg4/9xO-I3BlDmY/s200/montypythongod.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5700796487338920082" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/David_Brin"&gt;David Brin&lt;/a&gt; &lt;a href="http://ieet.org/index.php/IEET/more/5163"&gt;recently spoke&lt;/a&gt; at the &lt;a href="http://www.singularitysummit.com/"&gt;Singularity Summit&lt;/a&gt;, a place where the attendees are, for the most part, transhumanists.  They are there to discuss the creation of "small" gods - things just a little better than humans in some way, that will improve themselves.  &lt;br /&gt;&lt;br /&gt;I know that Mr. Brin recognizes that even these small gods, once self-improving, will be beyond detailed human understanding.  He counsels the would-be creators of small gods that they should learn to better understand those who worship "large" gods - gods that create universes like ours, such as mentioned in the bible.  To that end, his primary weapon is interpretation of the bible.&lt;br /&gt;&lt;br /&gt;This creates a room full of &lt;a href="http://en.wikipedia.org/wiki/Agnostic"&gt;agnostics&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;No one who believes we can make a small god should believe we can understand a large god.  As long as these people interpret the bible, they represent a belief in their interpretation, and therefore create a &lt;a href="http://en.wikipedia.org/wiki/Non-overlapping_magisteria"&gt;non-overlapping-magisteria&lt;/a&gt;.   Basically, Brin removed the conflict between science and religion for those who will take his advice.&lt;br /&gt;&lt;br /&gt;Brin is saying we need to rationalize in order to associate in order to survive.  As it turns out, any suitable rationalization makes us nicer, more accepting people.  I am proud that David Brin is one of us.&lt;br /&gt;&lt;br /&gt;His final point discusses science as appreciation of God.  He proposes that when children perform scientific experiments, their wonderment is a finer, more true appreciation of Gods creation than a wrote prayer or words extolling his greatness without really &lt;span style="font-style:italic;"&gt;*appreciating*&lt;/span&gt; his great works.  Scientific revelation is like someone saying to God, "I truly understand you, and I am truly impressed." and then proving it.  &lt;br /&gt;&lt;br /&gt;On the topic of appreciation, I have often thought that the universe is a self-organizing system that learns to appreciate itself.&lt;br /&gt;But only for a moment.  We are that spark of insane emotion burning brightly.&lt;br /&gt;Humans are the love and the insanity in the universe, quickly extinguished.&lt;br /&gt;Love oneself, respect others, a natural state of affairs, the best that can be hoped for, independent of scale, among parts of a whole.&lt;br /&gt;The dream of a cohesive, thinking universe isn't a bad one.  Better to be a cooperating part of any vastly superior force. No?  Why not think of ourselves as the love in the universe?&lt;br /&gt;&lt;br /&gt;What can I say?  Humans rationalize compulsively.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-U7dyk1-U0ok/Tx1MSa0Y8qI/AAAAAAAABhE/t3M2cPklOVQ/s1600/montypythonfoot.jpeg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 148px;" src="http://1.bp.blogspot.com/-U7dyk1-U0ok/Tx1MSa0Y8qI/AAAAAAAABhE/t3M2cPklOVQ/s200/montypythonfoot.jpeg" border="0" alt=""id="BLOGGER_PHOTO_ID_5700796582641332898" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2821658279248314";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19037533-2481651677684868566?l=rbodo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rbodo.blogspot.com/feeds/2481651677684868566/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19037533&amp;postID=2481651677684868566' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19037533/posts/default/2481651677684868566'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19037533/posts/default/2481651677684868566'/><link rel='alternate' type='text/html' href='http://rbodo.blogspot.com/2012/01/we-are-all-agnostics-now.html' title='We are all Agnostics now.'/><author><name>rsb</name><uri>http://www.blogger.com/profile/00269513857111909714</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='17' src='http://static.flickr.com/12/68816100_e6fcd5c9d2_m.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-M1GRZ_kuv2M/Tx1MM3yhiJI/AAAAAAAABg4/9xO-I3BlDmY/s72-c/montypythongod.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19037533.post-4254036392434403787</id><published>2012-01-19T02:07:00.000-08:00</published><updated>2012-01-23T01:30:25.847-08:00</updated><title type='text'>Robot Arms Race</title><content type='html'>&lt;a href="http://4.bp.blogspot.com/-alWnGVI9BBs/TxiQYfCUv2I/AAAAAAAABes/vnzJycZCBYU/s1600/lego_space_dude.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 150px; height: 200px;" src="http://4.bp.blogspot.com/-alWnGVI9BBs/TxiQYfCUv2I/AAAAAAAABes/vnzJycZCBYU/s200/lego_space_dude.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5699464078759870306" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Continuing to catch up on Robot Futurism - I re-read Bill Joys article in Wired of over 10 years ago, &lt;a href="http://www.wired.com/wired/archive/8.04/joy.html"&gt;Why the Future Doesn't Need Us&lt;/a&gt; - along &lt;a href="http://www.kurzweilai.net/in-response-to"&gt;with&lt;/a&gt; &lt;a href="http://www.islandone.org/MMSG/BillJoyWhyCrit.htm"&gt;numerous&lt;/a&gt; &lt;a href="http://www.nytimes.com/2004/06/20/magazine/l-the-money-issue-976857.html?src=pm"&gt;rebuttals&lt;/a&gt;, &lt;a href="http://www.nanowerk.com/spotlight/spotid=14778.php"&gt;references&lt;/a&gt;, &lt;a href="http://www.kurzweilai.net/stop-everythingit-s-techno-horror"&gt;and&lt;/a&gt; &lt;a href="http://www.kurzweilai.net/nanotechnology-dangers-and-defenses"&gt;relevant&lt;/a&gt; &lt;a href="http://www.kurzweilai.net/are-we-becoming-an-endangered-species-technology-and-ethics-in-the-twenty-first-century"&gt;discussions&lt;/a&gt;.  &lt;br /&gt;&lt;br /&gt;The central premise of Joys article is that we are creating dangerous stuff, and maybe we want to think about regulating ourselves.  As GNR (Genetics, Nanotechnology, Robotics) tech advances, it gets easier and easier to destroy all human life.  We need to considering slowing development of GNR tech, until we can properly defend against it's destructive potential.&lt;br /&gt;&lt;br /&gt;Most of the rebuttals to his paper suggest that:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;A)&lt;/span&gt; It's not that easy to create world-destroying stuff with GNR.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;B)&lt;/span&gt; If the good guys don't figure out GNR tech, the bad guys will, so we need to go full steam ahead with fundamental research.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;C)&lt;/span&gt; GNR applications are a moral imperative for quality of life reasons and the advantages outweigh the risks.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;D)&lt;/span&gt; I don't like Bill Joy because he quoted the unabomber.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;E)&lt;/span&gt; Anyway, you're right, we need to figure out how to regulate ourselves.&lt;br /&gt;&lt;br /&gt;Most GNR sits precisely in the camp of biotech as a threat.  Development cost will continue to shrink for weapons that could kill humans and spread quickly with total disrespect for borders. &lt;br /&gt;&lt;br /&gt;My conclusion is that labs that study these technologies need to be reasonably careful.   The threat isn't huge now, but it will be someday.   As with Brains article on Robot Economics (see my last post) the threat is vastly more serious if we are looking a dislocation in the face, rather than a very gradual ramping up of world-changing technologies.  No one seems to know which we are looking at.  A "Center for Nanotech Control" should probably be funded at a level commensurate with the threat.    &lt;a href="http://en.wikipedia.org/wiki/Regulation_of_nanotechnology#Response_from_governments"&gt;Depressingly&lt;/a&gt;, that's not happening (I hope I'm wrong, I hate being depressed, so please feel free to correct me).  &lt;br /&gt;&lt;br /&gt;In fact, relatively little has been written on the topic of nanotech defense in the last 5 years.  There was a flurry of activity around Joys article, and that was that.  It may not have been helpful that most of the predictions that were made publicly by prominent futurists around that time were significantly off.  People just seem to have gotten disinterested.&lt;br /&gt;&lt;br /&gt;I guess we're just going to have to be happy with the amazing benefits of GNR and not think too hard about the dangers for a while.  We'll live forever until we're dead.  Wait...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-vJOL80CitlM/TxiOUSxuZjI/AAAAAAAABeg/GfvR3-h6VBo/s1600/space_dude_on_arm.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 200px; height: 144px;" src="http://2.bp.blogspot.com/-vJOL80CitlM/TxiOUSxuZjI/AAAAAAAABeg/GfvR3-h6VBo/s200/space_dude_on_arm.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5699461807726290482" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2821658279248314";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19037533-4254036392434403787?l=rbodo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rbodo.blogspot.com/feeds/4254036392434403787/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19037533&amp;postID=4254036392434403787' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19037533/posts/default/4254036392434403787'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19037533/posts/default/4254036392434403787'/><link rel='alternate' type='text/html' href='http://rbodo.blogspot.com/2012/01/robot-arms-race.html' title='Robot Arms Race'/><author><name>rsb</name><uri>http://www.blogger.com/profile/00269513857111909714</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='17' src='http://static.flickr.com/12/68816100_e6fcd5c9d2_m.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-alWnGVI9BBs/TxiQYfCUv2I/AAAAAAAABes/vnzJycZCBYU/s72-c/lego_space_dude.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19037533.post-6469625901576122357</id><published>2012-01-17T14:44:00.000-08:00</published><updated>2012-01-17T19:48:55.221-08:00</updated><title type='text'>Robot Economics</title><content type='html'>For my one reader, a quick summary of &lt;a href="http://marshallbrain.com/robotic-freedom.htm"&gt;the last of Marshall Brain's articles in his robot series&lt;/a&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-7FR_3tPd9Uc/TxYMYOzwByI/AAAAAAAABd4/FQQdqMbnsNE/s1600/robot_exoskeleton.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 179px; height: 200px;" src="http://1.bp.blogspot.com/-7FR_3tPd9Uc/TxYMYOzwByI/AAAAAAAABd4/FQQdqMbnsNE/s200/robot_exoskeleton.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5698755988915488546" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Marshall is speculating 30 years out from trends present today.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Robots = Greedy Bastards&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;He concludes that the centralization of wealth will become extreme as automation (which he calls robots) puts people out of work.  So he comes up with a number of taxation schemes to generate a welfare state when this happens, without wanting to call it a welfare state.  Well enough.  He doesn't take it further than that.  &lt;br /&gt;&lt;br /&gt;He is probably right about the unemployment issue, because unlike other technologies, robots will create robots.  We are making things that are as good or better than we are at most things.  We are not making tools anymore that require lots of humans to operate.  That's really the fundamental point, most of us will not be needed in this industrial revolution, and why this is worth reading and thinking about.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Orwell is looking smart right about now&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It is an interesting read, because it puts you in the mindset of considering 50+ percent unemployment.  It is very hard to imagine a way to transition to that level of unemployment from 10 percent unemployment, without generating much more tax revenue.  Any other state is a war zone.  A fiscally conservative state with few social services would be immediately crushed by internal forces.  We do have to consider a very high level of taxation ( aka collective control aka socialism ) in a future that rapidly adopts a high level of automation ( aka robotic workforce), or we have to move to an Orwellian model to repress our citizenry (which is where we are going).&lt;br /&gt;&lt;br /&gt;It is, of course, implied that the same or higher level of productivity will be obtained with only half the human workforce, and that our governments are not configured to act in advance of rapidly decreasing employment.  We will be in a real pickle.  It sounds reasonable as you read it.  Over fifty percent unemployment never ends well.&lt;br /&gt;&lt;br /&gt;So Brain throws out some plans for socialism (although he picks a narrow definition of socialism to escape this much maligned word).  He doesn't take it too far, just covers some possible methods for collecting taxes.&lt;br /&gt;&lt;br /&gt;There may also be principles involved when constructing a capitalist-socialist-robot utopia.  &lt;br /&gt;&lt;br /&gt;For one thing, you want to keep incentives aligned toward innovation.  Take only the amount required from the captains of industry to provide a reasonable quality of life for the unemployed.  Arguably, you want the unemployed to be innovators, and to be free to innovate and create jobs for themselves and others, but you also want them to be somewhat hungry - their lives not full of stress, but lacking highly desirable comforts.  So you would start with the need, and work backwards - the captains of industry need to raise enough money to support the unemployed at a reasonable quality of life, after that point, they can make their lives as ridiculously good as they like with any extra earnings.  Taxation methods can then be derived from this principle.&lt;br /&gt;&lt;br /&gt;Taking that to the extreme, you have to consider what happens when this morphs into a society in which all work required to maintain the basic necessities human life is done by robots, including maintenance of the robots, generation of energy required, etc.  This will raise the bar of social welfare to a fairly high level.  It's a long way out, and quite a speculative story, but possible at some point.  A lot of fundamental industries will run themselves, and the captains of industry themselves will be outmoded.  Every human will be focused on innovation and new industries, as the old ones become, basically, part of nature.  O.k. well, maybe I'm an optimist.  &lt;br /&gt;&lt;br /&gt;Overall, I found Brains robot articles a good way to encourage a geek like myself to think about the future of economics.  What would you do for a living if you had your basic needs met for life, but still had the opportunity to make anything of yourself if you worked hard at it?  The answer is, ultimately, you would seek your potential (metamotivation as per Maslow).  I know I am metamotivated and I find others in the same state to be more fun to hang out with than those who are not.  What model makes that world possible?  Not the one we have when unemployment hits 50 percent.&lt;br /&gt;&lt;br /&gt;And what about those whose metamotivation tends toward evil?  The more things change, the more they stay the same.  Hopefully our robot overlords won't have time for that shit, and I'm definitely not risking my exoskeleton for their greedy asses.&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-wFvqLFHzenA/TxYMKq7ZEXI/AAAAAAAABds/jDxVzG-2aos/s1600/robotmaars2.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 173px; height: 200px;" src="http://4.bp.blogspot.com/-wFvqLFHzenA/TxYMKq7ZEXI/AAAAAAAABds/jDxVzG-2aos/s200/robotmaars2.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5698755755945562482" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Marshall also wrote the following two articles on the same topic:&lt;br /&gt;&lt;br /&gt;http://marshallbrain.com/robotic-faq.htm&lt;br /&gt;http://roboticnation.blogspot.com/&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2821658279248314";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19037533-6469625901576122357?l=rbodo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rbodo.blogspot.com/feeds/6469625901576122357/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19037533&amp;postID=6469625901576122357' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19037533/posts/default/6469625901576122357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19037533/posts/default/6469625901576122357'/><link rel='alternate' type='text/html' href='http://rbodo.blogspot.com/2012/01/robot-economics.html' title='Robot Economics'/><author><name>rsb</name><uri>http://www.blogger.com/profile/00269513857111909714</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='17' src='http://static.flickr.com/12/68816100_e6fcd5c9d2_m.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-7FR_3tPd9Uc/TxYMYOzwByI/AAAAAAAABd4/FQQdqMbnsNE/s72-c/robot_exoskeleton.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19037533.post-1578751266555033065</id><published>2011-03-15T16:48:00.001-07:00</published><updated>2011-03-15T18:28:58.005-07:00</updated><title type='text'>Putting most things in my wiki -  richbodo.pbworks.com</title><content type='html'>I have a &lt;a href="http://richbodo.pbworks.com/w/page/12916769/FrontPage"&gt;wiki&lt;/a&gt; now.&lt;br /&gt;&lt;br /&gt;I added notes on my trip to sierra leone there, which was interesting.  I'll be adding to it, but the story is all there, including pictures, like these:&lt;br /&gt;&lt;a href="http://richbodo.smugmug.com/Other/sierra-leone-2011/16125702_ugeuB#1210841283_rns8x-A-LB" title="Photo &amp; Video Sharing by SmugMug"&gt;&lt;img src="http://richbodo.smugmug.com/Other/sierra-leone-2011/P1000877/1210841283_rns8x-L-1.jpg" title="Photo &amp; Video Sharing by SmugMug" alt="Photo &amp; Video Sharing by SmugMug"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://richbodo.smugmug.com/Other/sierra-leone-2011/16125702_ugeuB#1210841264_u3PuM-A-LB" title="Photo &amp; Video Sharing by SmugMug"&gt;&lt;img src="http://richbodo.smugmug.com/Other/sierra-leone-2011/P1000878/1210841264_u3PuM-L.jpg" title="Photo &amp; Video Sharing by SmugMug" alt="Photo &amp; Video Sharing by SmugMug"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://richbodo.smugmug.com/Other/sierra-leone-2011/16125702_ugeuB#1212599962_XJS8x-A-LB" title="Photo &amp; Video Sharing by SmugMug"&gt;&lt;img src="http://richbodo.smugmug.com/Other/sierra-leone-2011/P1000525/1212599962_XJS8x-L.jpg" title="Photo &amp; Video Sharing by SmugMug" alt="Photo &amp; Video Sharing by SmugMug"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://richbodo.smugmug.com/Other/sierra-leone-2011/16125702_ugeuB#1212599991_Y3n69-A-LB" title="Photo &amp; Video Sharing by SmugMug"&gt;&lt;img src="http://richbodo.smugmug.com/Other/sierra-leone-2011/P1000559/1212599991_Y3n69-L.jpg" title="Photo &amp; Video Sharing by SmugMug" alt="Photo &amp; Video Sharing by SmugMug"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2821658279248314";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19037533-1578751266555033065?l=rbodo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rbodo.blogspot.com/feeds/1578751266555033065/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19037533&amp;postID=1578751266555033065' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19037533/posts/default/1578751266555033065'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19037533/posts/default/1578751266555033065'/><link rel='alternate' type='text/html' href='http://rbodo.blogspot.com/2011/03/adding-bigger-articles-to-my-wiki.html' title='Putting most things in my wiki -  richbodo.pbworks.com'/><author><name>rsb</name><uri>http://www.blogger.com/profile/00269513857111909714</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='17' src='http://static.flickr.com/12/68816100_e6fcd5c9d2_m.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19037533.post-5191077378821762107</id><published>2009-09-04T23:18:00.001-07:00</published><updated>2009-09-05T00:14:29.062-07:00</updated><title type='text'></title><content type='html'>A few weeks back a lady from the BBC was interviewing us at Dana Street.  &lt;br /&gt;&lt;br /&gt;Well, I finally got a chance to listen to the blog post she made.  I learned a little about the area myself so thought I would share it.  In particular, there is a wonderful interview with some of the Olsons.  &lt;a href="http://www.bbc.co.uk/blogs/podsandblogs/2009/08/post_card_from_silicon_valley_1.shtml"&gt;Here it is. Have a listen.&lt;/a&gt; (Update: looks like the podcast download is broken. Reported it.  I'll update this if I can find a fixed link.)&lt;br /&gt;&lt;br /&gt;It reminded me how lucky I am to have been brought up here.  &lt;br /&gt;&lt;br /&gt;I may complain that it is impossible to find enough Obscure Sports in Silicon Valley to fill a quarterly blog post, but no one will stop me from making my own.  Incidentally, after doing a little research, I have to say that San Francisco's little pinky toe forgets more about obscure sports every day than Silicon Valley ever knew. &lt;br /&gt;&lt;br /&gt;Listening to that interview might also make people who grew up here a little sad considering what has been lost in the area.&lt;br /&gt;&lt;br /&gt;I'm still finding cool things here, and I took some pictures of one of them.  The &lt;a href="http://eaasv.org/rally.html"&gt;Palo Alto Electric Car Show&lt;/a&gt; is held at Palo Alto High School every year, and for the last three or four years I have remembered to go.  It's about 75% homemade vehicles and 25% commercial stuff, and there is always a test track where you can play with the smaller/slower things, like scooters, or...homemade joystick-controlled automagically balancing lawn chairs...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_2mj7KHXFRBg/SqHvJ3t_AtI/AAAAAAAAAGU/fTIfHiY_z8s/s1600-h/chair_car.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 150px; height: 200px;" src="http://2.bp.blogspot.com/_2mj7KHXFRBg/SqHvJ3t_AtI/AAAAAAAAAGU/fTIfHiY_z8s/s200/chair_car.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5377842382911767250" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Daily Commuter Solar Trikes:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_2mj7KHXFRBg/SqHxFuuqRNI/AAAAAAAAAGc/DeWiPnyKnHA/s1600-h/homemade_solar_car.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 150px;" src="http://4.bp.blogspot.com/_2mj7KHXFRBg/SqHxFuuqRNI/AAAAAAAAAGc/DeWiPnyKnHA/s200/homemade_solar_car.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5377844510802461906" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Model (T?) Conversions:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_2mj7KHXFRBg/SqH9N_5-7VI/AAAAAAAAAGs/_TPZOlAbu5U/s1600-h/modelt.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 150px; height: 200px;" src="http://1.bp.blogspot.com/_2mj7KHXFRBg/SqH9N_5-7VI/AAAAAAAAAGs/_TPZOlAbu5U/s200/modelt.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5377857846991842642" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And a wildly fun electric bike-board product that rides like a combination of motorcycle, skateboard, and surfboard:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_2mj7KHXFRBg/SqHx5iEUERI/AAAAAAAAAGk/aYho9ylHP2s/s1600-h/zummer.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 150px;" src="http://2.bp.blogspot.com/_2mj7KHXFRBg/SqHx5iEUERI/AAAAAAAAAGk/aYho9ylHP2s/s200/zummer.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5377845400756818194" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Tom has a great opportunity if he can market that thing.  It's called the Zummer.  I got to ride it and it's a blast and a half.  I was grinning like an idiot the entire time.  I could potentially even commute with it on the train.  I hope all his business needs is some marketing money and a little economy of scale.&lt;br /&gt;&lt;br /&gt;That's really the meat of it.  Just incredibly neat stuff.  Terrific fun.  Even practical in some cases.  Most of it built by entrepreneurs and enthusiasts on a shoestring.  I didn't meet anyone who wasn't discussing their designs, or open to it.&lt;br /&gt;&lt;br /&gt;I hope I'm not being too dramatic here.  I really felt like I started to understand what Charlie Olson said.  We don't have a lot of farms or orchards anymore.  We have smog.  And we have this.&lt;br /&gt;&lt;br /&gt;Other stuff:&lt;br /&gt;&lt;br /&gt;The guy who sells the conversion kits for my model of miata was there, too, but the price is still a bit steep (read: I'm still not wealthy).  Still, I can dream.  I took a few snaps of the commercial products as well...&lt;br /&gt;&lt;br /&gt;Tango:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_2mj7KHXFRBg/SqH_qKyd_jI/AAAAAAAAAG0/v5DPXERZNlM/s1600-h/tango.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 150px; height: 200px;" src="http://1.bp.blogspot.com/_2mj7KHXFRBg/SqH_qKyd_jI/AAAAAAAAAG0/v5DPXERZNlM/s200/tango.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5377860529972706866" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Mini:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_2mj7KHXFRBg/SqH_6-OIU6I/AAAAAAAAAG8/h4g3qAYj8Ag/s1600-h/mini.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 150px; height: 200px;" src="http://3.bp.blogspot.com/_2mj7KHXFRBg/SqH_6-OIU6I/AAAAAAAAAG8/h4g3qAYj8Ag/s200/mini.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5377860818656842658" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Tesla:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_2mj7KHXFRBg/SqIAWkq1q1I/AAAAAAAAAHE/m5HZ7BIEZgs/s1600-h/tesla.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 150px;" src="http://4.bp.blogspot.com/_2mj7KHXFRBg/SqIAWkq1q1I/AAAAAAAAAHE/m5HZ7BIEZgs/s200/tesla.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5377861292834270034" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I forgot to take a pictures of the Smart.  It may not have been one of the factory conversions anyway.  However, I did see a Cheap Copy of a Smart From China that the owner had to rebuild for safety reasons that would be embarassing to the guy in the electric lawn chair:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_2mj7KHXFRBg/SqIAs4zTGjI/AAAAAAAAAHM/_q7YrOWO8gI/s1600-h/copy_of_smart.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 150px;" src="http://3.bp.blogspot.com/_2mj7KHXFRBg/SqIAs4zTGjI/AAAAAAAAAHM/_q7YrOWO8gI/s200/copy_of_smart.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5377861676195584562" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If making stuff was a sport, I could blog the Silicon Valley Making Stuff Sports Daily and I would have to become a cutthroat editor just to shrink it down.  I used to go to more than one geeky "meetup" per day when I was in between jobs in the 90s, and we've come a long way from those days.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2821658279248314";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19037533-5191077378821762107?l=rbodo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rbodo.blogspot.com/feeds/5191077378821762107/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19037533&amp;postID=5191077378821762107' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19037533/posts/default/5191077378821762107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19037533/posts/default/5191077378821762107'/><link rel='alternate' type='text/html' href='http://rbodo.blogspot.com/2009/09/few-weeks-back-lady-from-bbc-was.html' title=''/><author><name>rsb</name><uri>http://www.blogger.com/profile/00269513857111909714</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='17' src='http://static.flickr.com/12/68816100_e6fcd5c9d2_m.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_2mj7KHXFRBg/SqHvJ3t_AtI/AAAAAAAAAGU/fTIfHiY_z8s/s72-c/chair_car.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19037533.post-113866321779155599</id><published>2008-08-20T09:00:00.000-07:00</published><updated>2009-06-17T07:42:54.383-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='script screen typescript and homer simpson'/><title type='text'>Script and Screen</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_2mj7KHXFRBg/SKxSVLvdRmI/AAAAAAAAADM/PhK7FTYfX1Q/s1600-h/homerascii.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_2mj7KHXFRBg/SKxSVLvdRmI/AAAAAAAAADM/PhK7FTYfX1Q/s200/homerascii.jpg" alt="" id="BLOGGER_PHOTO_ID_5236650990607615586" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;At work we use script and screen for co-development and training.&lt;br /&gt;&lt;br /&gt;If you want to work with others in a command line environment and don't use these yet, then you should definitely read this post.&lt;br /&gt;&lt;br /&gt;Here's how we use it:&lt;br /&gt;&lt;br /&gt;The first thing we do when we work together is we all ssh into the box we will work on.&lt;br /&gt;&lt;br /&gt;Then we have the person driving start screen, a terminal multiplexor, and then script, a command logging tool.&lt;br /&gt;&lt;br /&gt;Then everyone else logs into the drivers multiuser terminal session run by screen by typing screen -x, and can take over driving when needed.  We all can read and write to the same set of terminals, and detach or reattach to the session as we come and go.&lt;br /&gt;&lt;br /&gt;When we're done, we copy the drivers /home/driver/typescript file to someplace where we keep old training files like /backup/it/training/how_to_debug_that_thing.txt.&lt;br /&gt;&lt;br /&gt;NOTE: screen can be used without script to do a similar job, and script can be used without screen to do a similar job.  We just happen to use both.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Script:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Just type script to start it.  It will start logging to your home directory in a file called typescript.&lt;br /&gt;&lt;br /&gt;If you don't want to use screen, and just want to watch what someone else is doing, you can also try the -f      option to flush output after each write. This is nice for telecooperation: One person does ‘mkfifo foo; script -f foo’ and another can supervise real-time&lt;br /&gt;         what is being done using ‘cat foo’.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Screen:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Setting up and using GNU screen as a collaborative development environment.&lt;br /&gt;&lt;br /&gt;Your user is peter, and you want to pair program with user mike.&lt;br /&gt;1) Install GNU screen on the server and learn the ScreenBasics.&lt;br /&gt;2) Drop the following two lines into /home/peter/.screenrc:&lt;br /&gt;multiuser on&lt;br /&gt;addacl mike&lt;br /&gt;3) Execute the following two commands to allow mike to use your screen sessions:&lt;br /&gt;chmod +s /usr/bin/screen&lt;br /&gt;chmod 755 /var/run/screen&lt;br /&gt;4) Peter is already logged into a screen session&lt;br /&gt;5) Mike can type:&lt;br /&gt;screen -x peter/&lt;br /&gt;6) Peter and mike can now look a the same screen windows/terminals and share the same i/o&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ScreenBasics&lt;/span&gt; - commands you will actually use, in the order you will probably use them&lt;br /&gt;&lt;br /&gt;&lt;table&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;'screen'&lt;/b&gt;&lt;/td&gt;&lt;td&gt; start screen session&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;'Ctrl-a c'&lt;/b&gt;&lt;/td&gt;&lt;td&gt; create a new terminal&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;'Ctrl-a "'&lt;/b&gt;&lt;/td&gt;&lt;td&gt; list the terminals in this session&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;(then hit the number of the terminal you want to switch to and hit enter)&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;'Ctrl-a Shift-a'&lt;/b&gt;&lt;/td&gt;&lt;td&gt; rename a terminal&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;'Ctrl-a F'&lt;/b&gt;&lt;/td&gt;&lt;td&gt; flush the screen when it gets screwed up&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;'Ctrl-a k'&lt;/b&gt;&lt;/td&gt;&lt;td&gt; kill a terminal&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;'Ctrl-a d'&lt;/b&gt;&lt;/td&gt;&lt;td&gt; detach from session&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;'screen -r'&lt;/b&gt;&lt;/td&gt;&lt;td&gt; re-attach to a screen session&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;'Ctrl-a S'&lt;/b&gt;&lt;/td&gt;&lt;td&gt; make two terminal panes in the window&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;'Ctrl-a Tab'&lt;/b&gt;&lt;/td&gt;&lt;td&gt; next pane in this window&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;'Ctrl-a Q'&lt;/b&gt;&lt;/td&gt;&lt;td&gt; go back to one pane, current window&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Other Screen Notes:&lt;br /&gt;&lt;br /&gt;1) If you don't want to use script, you can get screen to record sessions as well.  I think it's 'Ctrl-a H'.&lt;br /&gt;&lt;br /&gt;2) The default screen key bindings collide with readline and emacs commands.  I should look into remapping them someday.&lt;br /&gt;&lt;br /&gt;3) Record and play back real-time textcasts with scriptreplay as follows:&lt;br /&gt;&lt;br /&gt;script -t 2&gt;timingfile testscriptfile&lt;br /&gt;scriptreplay timingfile testscriptfile&lt;br /&gt;&lt;br /&gt;Note: scriptreplay is a tiny perl script that was left out of most red-hat derived linux-util packages to date.  You can get it from a debian derived distro or find it &lt;a href="http://www.koders.com/perl/fidABF0B418C7D5C0DE115305818FE5A6AB2C6AA73F.aspx"&gt;here&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Links:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;** The homepages for script and screen (for GNU/Linux users):&lt;br /&gt;&lt;br /&gt;Script is in util-linux: ftp://ftp.kernel.org/pub/linux/utils/util-linux/&lt;br /&gt;&lt;br /&gt;Screen: http://www.gnu.org/software/screen/&lt;br /&gt;&lt;br /&gt;** Some of the better articles on screen:&lt;br /&gt;&lt;br /&gt;http://www.sun.com/bigadmin/features/articles/gnu_screen.html&lt;br /&gt;&lt;br /&gt;http://www.kuro5hin.org/story/2004/3/9/16838/14935&lt;br /&gt;&lt;br /&gt;http://aperiodic.net/screen/terminal&lt;br /&gt;&lt;br /&gt;http://aperiodic.net/screen/multiuser&lt;br /&gt;&lt;br /&gt;http://www.linuxjournal.com/article/6340&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2821658279248314";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19037533-113866321779155599?l=rbodo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rbodo.blogspot.com/feeds/113866321779155599/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19037533&amp;postID=113866321779155599' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19037533/posts/default/113866321779155599'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19037533/posts/default/113866321779155599'/><link rel='alternate' type='text/html' href='http://rbodo.blogspot.com/2006/01/text-based-collaborative-tool-setups.html' title='Script and Screen'/><author><name>rsb</name><uri>http://www.blogger.com/profile/00269513857111909714</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='17' src='http://static.flickr.com/12/68816100_e6fcd5c9d2_m.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_2mj7KHXFRBg/SKxSVLvdRmI/AAAAAAAAADM/PhK7FTYfX1Q/s72-c/homerascii.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19037533.post-8431959868651481342</id><published>2008-07-15T12:19:00.000-07:00</published><updated>2008-07-18T01:43:01.117-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dodgeball kickball ultimate frisbee silicon valley obscure sports bruce lee chuck norris ouch'/><title type='text'>Silicon Valley Obscure Sports Quarterly Review - Q208</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_2mj7KHXFRBg/SH70en9ZsDI/AAAAAAAAADE/6aHfo3aT0Hk/s1600-h/mv_ultimate.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp3.blogger.com/_2mj7KHXFRBg/SH70en9ZsDI/AAAAAAAAADE/6aHfo3aT0Hk/s200/mv_ultimate.jpg" alt="" id="BLOGGER_PHOTO_ID_5223881424756125746" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_2mj7KHXFRBg/SH7n_9Ru1dI/AAAAAAAAACc/WkihgiUf5PQ/s1600-h/most_awesome_kickballer.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp1.blogger.com/_2mj7KHXFRBg/SH7n_9Ru1dI/AAAAAAAAACc/WkihgiUf5PQ/s200/most_awesome_kickballer.jpg" alt="" id="BLOGGER_PHOTO_ID_5223867703763064274" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Welcome to the first issue of SVOSQR.  In Q2 I thought I would report on "up-and-coming" obscure sports (read: I'm lazy and the sports on meetup.com are not currently at the bleeding-edge of obscurity).  Meetup.com links, pics and summaries follow.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://kickball.meetup.com/55/"&gt;Kickball&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Friggin R&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_2mj7KHXFRBg/SH7uKJDBinI/AAAAAAAAACk/DwPDMcDV5dY/s1600-h/rich_kickball_1.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp1.blogger.com/_2mj7KHXFRBg/SH7uKJDBinI/AAAAAAAAACk/DwPDMcDV5dY/s200/rich_kickball_1.jpg" alt="" id="BLOGGER_PHOTO_ID_5223874475791059570" border="0" /&gt;&lt;/a&gt;ocktackulous.  About 20 people show up.  Pleased to find that although I am now older, heavier, and weaker, I can still get that satisfying PWING! sound out of kicking the ball and deforming it into a lively ovoid before the other team catches it.  Margaritas afterward in Willow Glen.  Surprising amount of blood involved.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://ultimatefrisbee.meetup.com/175/"&gt;Ultimate Frisbee&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Super friendly pickup game at Eagle Park in MV.  Show up to learn ahead of time.  Usually works best if you pick someone approximately your own body shape to cover.  Couldn't tell if we were keeping score - could be that I was unaware of the scoring mechanism, but I prefer to think that it's really that casual of a game.  They meet in Sunnyvale, too.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://dodgeball.meetup.com/cities/us/ca/mountain_view/"&gt;Dodgeball&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Silicon Valley is in desperate need of Dodge&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_2mj7KHXFRBg/SH7zrypBT7I/AAAAAAAAAC8/PR0aKoM19lw/s1600-h/you_should_dodge"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp0.blogger.com/_2mj7KHXFRBg/SH7zrypBT7I/AAAAAAAAAC8/PR0aKoM19lw/s200/you_should_dodge" alt="" id="BLOGGER_PHOTO_ID_5223880551450103730" border="0" /&gt;&lt;/a&gt;ball leadership!! Things are getting so bad that I have had to find pictures from other sports.  The one silicon valley dodgeball meetup was held at Sky High, where they have a dodgeball room made out of trampolines (walls, ceilings, etc).  Mixed group with lots of li&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_2mj7KHXFRBg/SH7wzUHNFmI/AAAAAAAAACs/HlAotge3kC8/s1600-h/chuck_norris_09.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp2.blogger.com/_2mj7KHXFRBg/SH7wzUHNFmI/AAAAAAAAACs/HlAotge3kC8/s200/chuck_norris_09.jpg" alt="" id="BLOGGER_PHOTO_ID_5223877382159275618" border="0" /&gt;&lt;/a&gt;ttle kids and a few adults.  It felt a little unfair to whale on the kids with a red rubber ball, but the realization that I could actually make them rotate on any one axis with a dodgeball strike kept my interest.  Apparently, it's next to impossible to get old people to show up to a Dodgeball game.  I tried to help and bring in a few folk, but could only drag one brave soul in with me.  We were about half the group.  Of course, now that the meetup group has gone inactive, there are dozens of interested people pledging to help.  Will you be our Dodgeball leader (left picture - the guy who's winning), or will you be woefully unprepared for the next random strike (right picture - that is you).&lt;br /&gt;&lt;br /&gt;A warning:  There is not enough research to determine what obscure sports do to our bodies, exactly, but we do know that they fully condone the Bush adminstrations definition of torture.  Any single obscure sport, picked up for the first time in maybe-ever, will find and cruelly torture muscles that you didn't know you had for weeks.  Middle-aged humans are supposed to be dead, and therefore have not evolved to handle more than one attempt at obscure sports per month.  Don't do it!  But do let me know if you find an obscure sport in silicon valley that you would like me to try.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2821658279248314";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19037533-8431959868651481342?l=rbodo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rbodo.blogspot.com/feeds/8431959868651481342/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19037533&amp;postID=8431959868651481342' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19037533/posts/default/8431959868651481342'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19037533/posts/default/8431959868651481342'/><link rel='alternate' type='text/html' href='http://rbodo.blogspot.com/2008/07/silicon-valley-obscure-sports-quarterly.html' title='Silicon Valley Obscure Sports Quarterly Review - Q208'/><author><name>rsb</name><uri>http://www.blogger.com/profile/00269513857111909714</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='17' src='http://static.flickr.com/12/68816100_e6fcd5c9d2_m.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_2mj7KHXFRBg/SH70en9ZsDI/AAAAAAAAADE/6aHfo3aT0Hk/s72-c/mv_ultimate.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19037533.post-1140072718769783117</id><published>2008-04-26T10:35:00.000-07:00</published><updated>2008-05-21T09:16:34.360-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='economies of scope concentrated solar big thing sticking down into head'/><title type='text'>Thinking Deeply about Concentrated Solar</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_2mj7KHXFRBg/SBN6RrX2BWI/AAAAAAAAABs/Ap_NIYMKrHE/s1600-h/FF_156_brain4_f.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_2mj7KHXFRBg/SBN6RrX2BWI/AAAAAAAAABs/Ap_NIYMKrHE/s200/FF_156_brain4_f.jpg" alt="" id="BLOGGER_PHOTO_ID_5193629239407412578" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I always have Polya's &lt;a href="http://www.math.utah.edu/%7Epa/math/polya.html"&gt;How to Solve It &lt;/a&gt; on my desk.&lt;br /&gt;&lt;br /&gt;There is this one little part of it that I think everyone ignores, at first, in the "Devise a Plan" section:&lt;br /&gt;&lt;br /&gt;"&lt;span style="font-weight: bold;"&gt;If you cannot solve the proposed problem&lt;/span&gt; ...  &lt;span style="font-weight: bold;"&gt;Could you                         imagine&lt;/span&gt; ...  &lt;span style="font-weight: bold;"&gt;A                         more general problem&lt;/span&gt;?"&lt;br /&gt;&lt;br /&gt;Inside, when we read that, we think, "Are you &lt;span style="font-weight: bold;"&gt;friggin' kidding&lt;/span&gt; me?  A bigger, more &lt;span style="font-weight: bold;"&gt;general problem?&lt;/span&gt;   &lt;span style="font-weight: bold;"&gt;HaHa!  &lt;/span&gt;Ged ouuuda here!  I'm a-simplifyn'!" and quickly skip ahead.&lt;br /&gt;&lt;br /&gt;I think Divide and Conquer is the first algorithm that comes to our minds.  But it makes us think small - we miss data and cannot apply &lt;a href="http://en.wikipedia.org/wiki/Economies_of_scope"&gt;economies of scope&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;It's not like we planned to do that.&lt;br /&gt;&lt;br /&gt;I think many people initially plan to look at problems through the end of the process, trying to consider all players, evaluating their historical behaviour and setting up a migration path for them, coming to some solution that takes into account as much data as is useful. (Some people might call this "systemic thinking")&lt;br /&gt;&lt;br /&gt;But we get myopic too quickly.  We get tired.  We find an interesting bit and get focused on the minutia, or start arguing whether a given solution to one part of  the problem is feasible or not, and we can't give it up.&lt;br /&gt;&lt;br /&gt;I was feeling this way about Global Warming.  I got bogged down in studying how amazingly unsuccessful activists are at manipulating governments.  Turns out, that wasn't one of the more interesting bits.&lt;br /&gt;&lt;br /&gt;And now we return you to our previously scheduled feature on Concentrated Solar:&lt;br /&gt;&lt;br /&gt;As Jamais Cascio puts it, &lt;a href="http://ieet.org/index.php/IEET/more/cascio20080423/"&gt;the Earth will be just fine, it's humanity that is screwed.&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;Humanity won't make it without quickly shifting to new forms of power.  However, I think we now have at least one &lt;a href="http://www.energynews.co.za/web_main/article.php?story=20080417173403669"&gt;reasonable&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_2mj7KHXFRBg/SBN6l7X2BXI/AAAAAAAAAB0/HNo7Yb5sLRQ/s1600-h/solar_tower.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://3.bp.blogspot.com/_2mj7KHXFRBg/SBN6l7X2BXI/AAAAAAAAAB0/HNo7Yb5sLRQ/s200/solar_tower.jpg" alt="" id="BLOGGER_PHOTO_ID_5193629587299763570" border="0" /&gt;&lt;/a&gt; &lt;a href="http://www.trec-eumena.org/concept.html"&gt;&lt;whew!,&gt;&lt;/whew!,&gt;&lt;/a&gt;&lt;a href="http://www.trec-eumena.org/index.html"&gt;roadmap&lt;/a&gt;.  You can read all about how this technology is can solve our energy problem &lt;a href="http://news.google.com/news?hl=en&amp;amp;client=firefox-a&amp;amp;rls=org.mozilla%3Aen-US%3Aunofficial&amp;amp;hs=haU&amp;amp;um=1&amp;amp;tab=wn&amp;amp;q=concentrated+solar+plant&amp;amp;btnG=Search+News"&gt;lots of places.&lt;/a&gt;&lt;span style="display: block;" id="formatbar_Buttons"&gt;&lt;span class="" style="display: block;" id="formatbar_CreateLink" title="Link" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Who could implement this the most quickly?&lt;br /&gt;&lt;br /&gt;Oil companies and our current power monopolies don't want to be replaced.  Want to avoid a fight with them? Give them an advantage in concentrated solar.  Just get them the hell out of the way and start them working on this problem.  No time for a fight, here.&lt;br /&gt;&lt;br /&gt;More specifically, the world has enough sunlit land and money to solve this problem 100 times over.  The first set of goodies (We include one 100-year land lease and one suitable tech grant per set (but no batteries)) goes to our current oil and power conglomerats.  That should be enough to please any stock holder, line any pocket, and guarantee implementation.&lt;br /&gt;&lt;br /&gt;The next 99 sets go to entrepreneurs, which should also help.&lt;br /&gt;&lt;br /&gt;You win, oil companies.  No one has to die over this.  Nice big carrot for you.  Just get it done.&lt;br /&gt;&lt;br /&gt;Of course, if they can't do it, well, first your land lease will get pulled if you can't get a few PetaWatts to market inside 10 years, but more importantly...if you thought all humanities carrot was big...even weilded in our death throes, that stick has got to be devastating.  &lt;ouch!&gt;  And, frankly, &lt;span style="text-decoration: underline;"&gt;&lt;a href="http://digital50.com/news/items/BW/2001/07/14/20070808005058/some-substantial-changes-in-how-americans-view-different-industries.html"&gt;we never liked you anyway&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I'll write my congressman for you!  Good luck!&lt;/ouch!&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2821658279248314";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19037533-1140072718769783117?l=rbodo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rbodo.blogspot.com/feeds/1140072718769783117/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19037533&amp;postID=1140072718769783117' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19037533/posts/default/1140072718769783117'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19037533/posts/default/1140072718769783117'/><link rel='alternate' type='text/html' href='http://rbodo.blogspot.com/2008/04/thinking-deeply-and-concentrated-solar.html' title='Thinking Deeply about Concentrated Solar'/><author><name>rsb</name><uri>http://www.blogger.com/profile/00269513857111909714</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='17' src='http://static.flickr.com/12/68816100_e6fcd5c9d2_m.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_2mj7KHXFRBg/SBN6RrX2BWI/AAAAAAAAABs/Ap_NIYMKrHE/s72-c/FF_156_brain4_f.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19037533.post-1262600138484832182</id><published>2008-01-07T12:58:00.000-08:00</published><updated>2008-01-09T18:26:26.190-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='share singularity ape crack algorithms today'/><title type='text'>Debunking the Technological Singularity</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_2mj7KHXFRBg/R4Ku1LSsiRI/AAAAAAAAABk/HjG4xcfGqpA/s1600-h/ape_poster.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_2mj7KHXFRBg/R4Ku1LSsiRI/AAAAAAAAABk/HjG4xcfGqpA/s200/ape_poster.jpg" alt="" id="BLOGGER_PHOTO_ID_5152873152252774674" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I have been arguing, at my local coffee shop, that &lt;a com="" img="" gifhref="http://www.singinst.org/summit2007/overview/abstracts/#hughes"&gt;&lt;br /&gt;an empathy test needs to be developed for computer software&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The Empathy Test would be unlike a Turing Test or a &lt;a href="http://en.wikipedia.org/wiki/Voight-Kampff_machine"&gt;Voight-Kampf&lt;/a&gt; machine in that the purpose is not to determine whether a thinking machine is human.  The purpose is to determine whether a thinking machine is a good match for human society.&lt;br /&gt;&lt;br /&gt;Simply fooling a human into thinking that you feel his pain does not make you empathetic.  I argue for testing a broad definition of empathy that is more useful to intelligent beings interacting in a civilized society.  The pain of others need not be recognized by the subject.  The pain must be felt as psychic stress in the subject.  The program/subject, therefore, must be cognizant of it's own mortality, and pain must be a real threat to it's well being, as it is to us.  Those guys in the asylum aren't exactly in endless loops, but they certainly have a few rogue processes.  So the Empathy Test would be, in a sense, a destructive one that arguably mimics it's function in humans.&lt;br /&gt;&lt;br /&gt;With luck, these empathy-equipped AIs will confirm the game-theoretic benefits of this feature and propogate it up to their designs.  They will understand that this feature is for the preservation of lower races - an endangered species act, if you will.  Alternately, it might just piss them off and subject us to summary disintegration.  After all, how many programs have you killed today?  How many lower species?  On a macro scale, are we failing the empathy test?&lt;br /&gt;&lt;br /&gt;In any case, I have found today that the point is moot!  Recent historical research uncovers striking similarities between our &lt;a href="http://ieet.org/index.php/IEET/more/diaz20071216/"&gt;past intellectual follies&lt;/a&gt; (SINGULARITARIANS MUST CLICK ON &lt;-THAT LINK) and our &lt;a href="http://en.wikipedia.org/wiki/Technological_singularity"&gt;current failed delusions of technological grandeur&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Clearly, I was entranced by the mental crack that is the singularity novel.  For those of you with the same addiction, you can shoot up with &lt;a href="http://vrinimi.org/rainbowsend.html"&gt;this&lt;/a&gt; open content novel.  Confirmed grade A stuff.  But please, don't share dirty algorithms.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2821658279248314";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19037533-1262600138484832182?l=rbodo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rbodo.blogspot.com/feeds/1262600138484832182/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19037533&amp;postID=1262600138484832182' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19037533/posts/default/1262600138484832182'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19037533/posts/default/1262600138484832182'/><link rel='alternate' type='text/html' href='http://rbodo.blogspot.com/2008/01/debunking-technological-singularity.html' title='Debunking the Technological Singularity'/><author><name>rsb</name><uri>http://www.blogger.com/profile/00269513857111909714</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='17' src='http://static.flickr.com/12/68816100_e6fcd5c9d2_m.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_2mj7KHXFRBg/R4Ku1LSsiRI/AAAAAAAAABk/HjG4xcfGqpA/s72-c/ape_poster.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19037533.post-230360456364729382</id><published>2007-11-19T11:44:00.000-08:00</published><updated>2007-11-20T16:35:00.205-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Captain Klaa'/><category scheme='http://www.blogger.com/atom/ns#' term='Rock Star Programmer'/><title type='text'>Rock genre terminology considered asinine</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_2mj7KHXFRBg/R0JhcDNkOSI/AAAAAAAAABc/bqgYwgsn0Os/s1600-h/klaa.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_2mj7KHXFRBg/R0JhcDNkOSI/AAAAAAAAABc/bqgYwgsn0Os/s200/klaa.jpg" alt="" id="BLOGGER_PHOTO_ID_5134773659682224418" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:100%;"&gt;Recent craigslist internet engineering jobs, exclamation point:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;** &lt;span style="font-weight: bold;"&gt;Rock Star (Affordable) Flash Developer&lt;/span&gt; Needed ASAP!&lt;br /&gt;&lt;br /&gt;** Seeking a &lt;span style="font-weight: bold;"&gt;rock star DBA&lt;/span&gt; for our production environment!&lt;br /&gt;&lt;br /&gt;** Great Opportunity for a &lt;span style="font-weight: bold;"&gt;Rock Star Intern&lt;/span&gt;!&lt;br /&gt;&lt;br /&gt;Before interviewing for these positions, be sure to comb your mullet and put a cucumber down the front of your spandex pantsuit.&lt;br /&gt;&lt;br /&gt;On any given day, about 30 craigslist job postings in my area are looking for "Rock Stars". They are all really looking for "programmers", so, as I am about to enter the job market, I happen across them with increasing frequency.&lt;br /&gt;&lt;br /&gt;I have to ask myself: How the heck did "Rock Star" eclipse "productive"?...and why haven't other industries caught on?  Where did this trend come from?&lt;br /&gt;&lt;br /&gt;No,  &lt;a href="http://www.ex-astris-scientia.org/gallery/artoftrek/klaa-st5.jpg"&gt;Captain Klaa&lt;/a&gt;(pictured) has not been going around writing corporate dress codes, and  yes, perhaps these HR departments are a bit too &lt;a href="http://purplestar.typepad.com/.shared/image.html?/photos/uncategorized/2007/09/25/motivator417799_2.jpg"&gt;exuberant&lt;/a&gt;(see below). But that's not why I'm looking into this.&lt;br /&gt;&lt;br /&gt;I don't have a problem with the use of the term "Rock Star" per se.  I don't want to make fun of anyone.  I enjoyed &lt;a href="http://www.imdb.com/title/tt0088258/"&gt;Spinal Tap&lt;/a&gt; as much as the next guy.&lt;br /&gt;&lt;br /&gt;No, I'm looking into this because the trend really got on my nerves.  I couldn't put my finger on why that was; so I explored it, and learned something.&lt;br /&gt;&lt;br /&gt;I think these employers are trying to do two things:&lt;br /&gt;&lt;br /&gt;1) Find programmers that are very productive (top 1% preferrably).&lt;br /&gt;2) Imply that they will treat them well.&lt;br /&gt;&lt;br /&gt;What I think they really want is to:&lt;br /&gt;&lt;br /&gt;1) Attract programmers who know they are very productive and easy to work with.&lt;br /&gt;2) Imply that they their team is productive and easy to work with.&lt;br /&gt;&lt;br /&gt;If you have recently read &lt;a href="http://www.joelonsoftware.com/items/2007/06/05.html"&gt;Joel Spolsky&lt;/a&gt;, you may feel the need to replace "productive" with "gets things done" - I won't feel bad.&lt;br /&gt;&lt;br /&gt;Thinking about how these employers can get what they want, I found what I really want: a productive, easy-going team.  The heart of my problem with a team of Rock Star's is that it's so far from that ideal.&lt;br /&gt;&lt;br /&gt;I asked roughly the same questions that employers ask.  It was so informative to me that I would recommend it to anyone looking for a job.  Here's what I came up with:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1) How do I know I am productive?&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;Well, I can measure it.&lt;br /&gt;&lt;br /&gt;The employers who are looking for rock stars have probably read that timely tome - &lt;a href="http://en.wikipedia.org/wiki/The_Mythical_Man-Month"&gt;The Mythical Man Month&lt;/a&gt;, in which the productivity of programmers is said to vary by an order of magnitude by skill alone.  Well, this is one of the things that is still true in that book, but not in the way most people probably think.&lt;br /&gt;&lt;br /&gt;Most people know how to measure their own productivity.  They can describe what they have produced, and discuss it at length.   "I developed X in Y weeks and I here it is", etc.&lt;br /&gt;&lt;br /&gt;To most employers, your past productivity in the domain of the job in question is the primary measure of your likely future productivity.&lt;br /&gt;&lt;br /&gt;Most people are o.k. with that.  It's just common sense that you improve at a task with experience.  This is hard to measure, but anyone who plays chess might assume that from competent to expert there may be 100 or 1000X improvement in most fields to be gained by experience.  As it turns out, this is a &lt;a href="http://c2.com/cgi/wiki?GrandMasterProgrammer"&gt;highly&lt;/a&gt; &lt;a href="http://c2.com/cgi/wiki?CommodityProgrammers"&gt;contentious&lt;/a&gt; assertion.  No one knows how much experience really has to do with it.&lt;br /&gt;&lt;br /&gt;In absence of a candidate that is productive in the required domain and easy to work with, an argument can be made that a candidate that is trainable and easy to work with will do.&lt;br /&gt;&lt;br /&gt;Trainable is usually a secondary requirement, and you can measure it the same way you measure productivity, based on past performance.  In the case of a programmer out of school, trainable may be the only applicable requirement.&lt;br /&gt;&lt;br /&gt;The more experience and intelligence the better.  That's nice, but...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2) How do I become more productive?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Most people have a decent understanding of the factors upon which their productivity depends.  It may vary from person to person and purpose to purpose.  For me, right now, it consists of four things that I seek to improve upon daily.&lt;br /&gt;&lt;br /&gt;Domain experience:&lt;br /&gt;&lt;br /&gt;Produce more.  Focus on one job for a while, and you will become an expert.  I may be an order of magnitude more productive at writing support scripts or IVR applications than I am at writing web applications.  At some point in the near future, however, I expect this situation to reverse.  This just makes sense.  I am working on web apps every day.  If I want to get good understanding the core concepts of a framework and writing large programs in that framework, then there is no substitute for doing that.&lt;br /&gt;&lt;br /&gt;Tool expertise:&lt;br /&gt;&lt;br /&gt;Programming tools are made from software and improve productivity.  New and better tools come out every day.  If I spend time every day learning tools, I will improve my productivity. Commit to this, and you will improve.&lt;br /&gt;&lt;br /&gt;Mental and physical health:&lt;br /&gt;&lt;br /&gt;Stay healthy.  My levels of pain, discipline, and energy vary based on my lifestyle.  I get up every morning and excercise, clean up, hug my wife, drink coffee, and solve a puzzle.  If I don't get a healthy start to the day, or if I don't take care of myself in other ways, I am sure my productivity will suffer.&lt;br /&gt;&lt;br /&gt;Environment:&lt;br /&gt;&lt;br /&gt;As a programmer, I work best either in a quiet office or pairing with one or more team members at about the same skill level.  I can rank environments for productivity as well.  The library is fine, a coffee shop is not so good, and home is right out - too many non-work distractions. Nothing compares to a serious, conflict-free, office work environment.&lt;br /&gt;&lt;br /&gt;All I can do here is be aware of the quality of my  environment, which varies from job to job. Experimenting with environmental improvements can help, as do  &lt;a href="http://www.askergoworks.com/about_erg_stretch_breaks.aspx"&gt;these&lt;/a&gt; &lt;a href="http://www.stanford.edu/dept/EHS/prod/general/ergo/microbreaks.html"&gt;helpful&lt;/a&gt; &lt;a href="http://raibledesigns.com/rd/entry/tips_for_productivity_and_happiness"&gt;techniques &lt;/a&gt; for tough environmental situations.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Kaizen"&gt;Kaizen.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3) How do we know when someone is easy to work with?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Probably the most important and tricky part of the hiring process, for both the employer and the candidate, is measuring soft skills.&lt;br /&gt;&lt;br /&gt;If a candidates tech skills are not up to par, you have to train them.  Fine.&lt;br /&gt;&lt;br /&gt;Employees with very poor soft skills can destroy an entire company.  Experienced employers and employees know this.  So what we are looking out for here, are the bottom few percent of the employee pool in soft skills.  No one wants a report or a manager like that.&lt;br /&gt;&lt;br /&gt;My soft skills can be measured, and so can those of any company.  We just ask each other how we handle situations that matter, and check references.&lt;br /&gt;&lt;br /&gt;For my part, I have to ask myself tough questions: How many co-workers have I helped, how many have I hindered, what tough problems have I solved with them, what have I learned, and how can I improve?&lt;br /&gt;&lt;br /&gt;So how can I improve?  Aside from discussing this with past co-workers, knowledge will help: &lt;a href="http://www.amazon.com/gp/product/1887542280/ref=pd_cp_b_0?pf_rd_p=317711001&amp;amp;pf_rd_s=center-41&amp;amp;pf_rd_t=201&amp;amp;pf_rd_i=0061284149&amp;amp;pf_rd_m=ATVPDKIKX0DER&amp;amp;pf_rd_r=0GFWYGZ1MVTSQKH3EMGB"&gt;PeopleWare.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It can't hurt to improve, but I think most people are probably o.k. on soft skills.  Still, the better adjusted the team, the better for everyone.  &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;And now, a word to folks advertising for Rock Stars:&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://purplestar.typepad.com/photos/uncategorized/2007/09/25/motivator417799_2.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 320px;" src="http://purplestar.typepad.com/photos/uncategorized/2007/09/25/motivator417799_2.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I don't expect hiring managers to read this, but...&lt;br /&gt;&lt;br /&gt;If you would like to project an image of your programming team, a gathering of Rock Stars is probably not what you want.  Rock Stars are people who produce hit songs and are worshipped only as long as they keep pumping them out.  A collection of rock stars are not likely to work together long.&lt;br /&gt;&lt;br /&gt;Sounds like solo-superman programming while surrounded by dysfunctional sycophants and confrontational peers.  Probably not what you meant.  If that is really what you meant, then I suggest a &lt;a href="http://www.amazon.com/Extreme-Programming-Explained-Embrace-Change/dp/0201616416"&gt;different perspective&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I could suggest a different analogy...A construction crew is a closer match than a Rock band.  It could be that your construction crew wants to design and build the next Guggenheim and drink beers after work, but it's a construction crew all the same.&lt;br /&gt;&lt;br /&gt;Better yet, drop the analogies.  Mention your team, your management style, your process and your product.  Mention that you would like applicants to discuss what they have actually produced, providing examples where possible.  Maybe lead with something like: "Highly productive team seeks C programmer" - or whatever actually describes your team and what you are looking for.&lt;br /&gt;&lt;br /&gt;Mention that soft skills are important up front.   This is a very good sign.&lt;br /&gt;&lt;br /&gt;And...Rock on.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2821658279248314";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19037533-230360456364729382?l=rbodo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rbodo.blogspot.com/feeds/230360456364729382/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19037533&amp;postID=230360456364729382' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19037533/posts/default/230360456364729382'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19037533/posts/default/230360456364729382'/><link rel='alternate' type='text/html' href='http://rbodo.blogspot.com/2007/11/rock-genre-terminology-considered.html' title='Rock genre terminology considered asinine'/><author><name>rsb</name><uri>http://www.blogger.com/profile/00269513857111909714</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='17' src='http://static.flickr.com/12/68816100_e6fcd5c9d2_m.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_2mj7KHXFRBg/R0JhcDNkOSI/AAAAAAAAABc/bqgYwgsn0Os/s72-c/klaa.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19037533.post-3569757071946075051</id><published>2007-10-12T16:43:00.000-07:00</published><updated>2007-10-13T01:12:39.450-07:00</updated><title type='text'>Swig-C-Ruby-Pointers Hello World</title><content type='html'>I'm trying to write C libraries to do some things on the Mac that are not easy to do with Ruby.  I found that I had to read several documents and experiment around a bit with &lt;a href="http://www.swig.org/"&gt;SWIG&lt;/a&gt; to call a C library function that took a pointer as an argument.  This is just one of those things that should not take that much time to figure out.&lt;br /&gt;&lt;br /&gt;C library functions that take pointers as arguments and return ints (that covers most of the c library functions I have written) ultimately return an array to Ruby.  Uncovering that little factoid, and the swig interface format required to make that process work, was the tough bit.&lt;br /&gt;&lt;br /&gt;So, I'm taking a few more minutes to make sure you don't have to do that (and to make sure I don't have to do that long after I forget about this exercise).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step Zero&lt;/span&gt;: get swig.&lt;br /&gt;&lt;br /&gt;I install all open source software on the mac with fink.  &lt;a href="http://finkproject.org/"&gt;Fink&lt;/a&gt; &lt;a href="http://swig.org/"&gt;Swig&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step One&lt;/span&gt;: Copy my example code - inline below.&lt;br /&gt;&lt;br /&gt;I provide what you need to make a ruby callable module called Example that contains the C function SimpleFunc() that you will call with a little ruby test program called testsum.rb.&lt;br /&gt;&lt;blockquote&gt;user-64-9-234-209:~/src/c/simplelib richbodo$ ls -l&lt;br /&gt;total 48&lt;br /&gt;-rw-r--r--   1 richbodo  richbodo  61 Oct 12 16:24 example.i&lt;br /&gt;-rw-r--r--   1 richbodo  richbodo  42 Oct 12 15:52 extconf.rb&lt;br /&gt;-rwxr-xr-x   1 richbodo  richbodo  90 Oct 12 16:41 get_it_done.sh&lt;br /&gt;-rw-r--r--   1 richbodo  richbodo  46 Oct 12 16:36 sum.c&lt;br /&gt;-rw-r--r--   1 richbodo  richbodo  24 Oct 12 15:46 sum.h&lt;br /&gt;-rw-r--r--   1 richbodo  richbodo  67 Oct 12 15:57 testsum.rb&lt;/blockquote&gt;Three of these files you already understand:&lt;br /&gt;&lt;br /&gt;sum.c - your library&lt;br /&gt;&lt;blockquote&gt;int SimpleFunc(float *modify_me)&lt;br /&gt;{&lt;br /&gt;*modify_me = 5;&lt;br /&gt;return 1;&lt;br /&gt;} &lt;/blockquote&gt;sum.h - your library header - not used by swig unless you tell it to - don't need it here.&lt;br /&gt;&lt;br /&gt;testsum.rb - ruby program that calls your library&lt;br /&gt;&lt;blockquote&gt;require 'example'&lt;br /&gt;afloat = 2&lt;br /&gt;# The first return value gets set as expected in first_returnval.&lt;br /&gt;# However, SWIG puts the float in a second return value.&lt;br /&gt;first_returnval,second_returnval = Example.SimpleFunc(afloat)&lt;br /&gt;puts "Your float is #{first_returnval}, and the return value is: #{second_returnval}"&lt;br /&gt;&lt;/blockquote&gt;The other three files are specific to getting your swig library going:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;example.i - a definition of your library for swig in swigs definition language.  INOUT is a SWIG typemap, so typemaps.i is required.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;%module example&lt;br /&gt;%include "typemaps.i"&lt;br /&gt;%apply float *INOUT { float *modify_me };&lt;br /&gt;int SimpleFunc(float *modify_me);&lt;/blockquote&gt;&lt;ul&gt;&lt;li&gt;extconf.rb - a ruby program that creates a makefile for your library&lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;require 'mkmf'&lt;br /&gt;create_makefile('example')&lt;/blockquote&gt;&lt;ul&gt;&lt;li&gt;get_it_done.sh - the commands that you run to generate a ruby module from your c library using swig&lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;#!/bin/bash&lt;br /&gt;rm *.o&lt;br /&gt;rm *.bundle&lt;br /&gt;rm wrap_example.c&lt;br /&gt;rm Makefile&lt;br /&gt;swig -ruby example.i&lt;br /&gt;ruby extconf.rb&lt;br /&gt;make&lt;br /&gt;sudo make install&lt;br /&gt;ruby testsum.rb&lt;/blockquote&gt;&lt;span style="font-weight: bold;"&gt;Step 2&lt;/span&gt;: Run the get_it_done.sh script to build and test your module. (it will ask for your password to install the library)&lt;br /&gt;&lt;blockquote&gt;user-64-9-234-209:~/src/c/idlerlib richbodo$ ./get_it_done.sh&lt;br /&gt;rm: wrap_example.c: No such file or directory&lt;br /&gt;creating Makefile&lt;br /&gt;gcc -fno-common -g -O2  -fno-common -pipe -fno-common  -I. -I/sw/lib/ruby/1.8/i686-darwin -I/sw/lib/ruby/1.8/i686-darwin -I.  -I/sw/include -c example_wrap.c&lt;br /&gt;gcc -fno-common -g -O2  -fno-common -pipe -fno-common  -I. -I/sw/lib/ruby/1.8/i686-darwin -I/sw/lib/ruby/1.8/i686-darwin -I.  -I/sw/include -c sum.c&lt;br /&gt;cc -dynamic -bundle -L"/sw/lib"  -o example.bundle example_wrap.o sum.o  -lruby  -ldl -lobjc&lt;br /&gt;install -c -p -m 0755 example.bundle /sw/lib/ruby/site_ruby/1.8/i686-darwin&lt;br /&gt;Your float is 5.0, and the return value is: 1&lt;br /&gt;&lt;/blockquote&gt;&lt;span style="font-weight: bold;"&gt;Step 3&lt;/span&gt;: Look at the five new files you just created, and understand what they do:&lt;br /&gt;&lt;blockquote&gt;user-64-9-234-209:~/src/c/simplelib richbodo$ ls -l&lt;br /&gt;total 152&lt;br /&gt;-rw-r--r--   1 richbodo  richbodo   3009 Oct 12 16:42 Makefile&lt;br /&gt;-rwxr-xr-x   1 richbodo  richbodo  16316 Oct 12 16:42 example.bundle&lt;br /&gt;-rw-r--r--   1 richbodo  richbodo     61 Oct 12 16:24 example.i&lt;br /&gt;-rw-r--r--   1 richbodo  richbodo  17695 Oct 12 16:42 example_wrap.c&lt;br /&gt;-rw-r--r--   1 richbodo  richbodo   5744 Oct 12 16:42 example_wrap.o&lt;br /&gt;-rw-r--r--   1 richbodo  richbodo     42 Oct 12 15:52 extconf.rb&lt;br /&gt;-rwxr-xr-x   1 richbodo  richbodo     90 Oct 12 16:41 get_it_done.sh&lt;br /&gt;-rw-r--r--   1 richbodo  richbodo     46 Oct 12 16:36 sum.c&lt;br /&gt;-rw-r--r--   1 richbodo  richbodo     24 Oct 12 15:46 sum.h&lt;br /&gt;-rw-r--r--   1 richbodo  richbodo    644 Oct 12 16:42 sum.o&lt;br /&gt;-rw-r--r--   1 richbodo  richbodo     67 Oct 12 15:57 testsum.rb&lt;br /&gt;&lt;/blockquote&gt;&lt;ul&gt;&lt;li&gt;example_wrap.c - created by the swig command, this a c wrapper for your library with a bunch of additional wrapper functions that translate your functions and data into ruby callable functions and data.  see chap 21 in the pickaxe.&lt;/li&gt;&lt;li&gt;Makefile - this is the makefile that was generated by extconf.rb.  It will compile your library and that wrapper and make the mac bundle for you.&lt;/li&gt;&lt;li&gt;sum.o - the object file generated from sum.c&lt;/li&gt;&lt;li&gt;example_wrap.o - the compiled version of example_wrap.c&lt;/li&gt;&lt;li&gt;example.bundle - mac osx stores code in bundles, so make makes one and puts it in your site-ruby directory when you type "make install"&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;So that' it.  You make that swig interface file, you call swig.  Example_wrap.c gets created.  You make the extconf.rb file and run it.  A makefile gets created for you.  You make your project by calling make and you are done.&lt;br /&gt;&lt;br /&gt;References:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Chapter 21 in the &lt;a href="http://www.pragprog.com/titles/ruby/index.html"&gt;pickaxe&lt;/a&gt; book.&lt;/li&gt;&lt;li&gt;The ruby swig page: http://www.swig.org/Doc1.3/Ruby.html#Ruby_nn5&lt;/li&gt;&lt;li&gt;The swig basics page: http://www.swig.org/Doc1.3/SWIG.html#SWIG_nn3&lt;/li&gt;&lt;li&gt;Apple Developer Docs: http://developer.apple.com/documentation/&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2821658279248314";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19037533-3569757071946075051?l=rbodo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rbodo.blogspot.com/feeds/3569757071946075051/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19037533&amp;postID=3569757071946075051' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19037533/posts/default/3569757071946075051'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19037533/posts/default/3569757071946075051'/><link rel='alternate' type='text/html' href='http://rbodo.blogspot.com/2007/10/swig-ruby-c-macosx-hello-world.html' title='Swig-C-Ruby-Pointers Hello World'/><author><name>rsb</name><uri>http://www.blogger.com/profile/00269513857111909714</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='17' src='http://static.flickr.com/12/68816100_e6fcd5c9d2_m.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19037533.post-6460099439035753470</id><published>2007-10-09T22:38:00.000-07:00</published><updated>2007-10-13T01:13:39.624-07:00</updated><title type='text'>Method for organizing volunteer efforts</title><content type='html'>&lt;b&gt;The Cancer Beatdown&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;At it's simplest, it's just a task manager for researchers who would like to utilize volunteers in the search for a cure.  For volunteers, it's a way to get their hands bloody at cancers expense.  "No, you won't cure cancer, but maybe once in a while, you can come on over here and get a few good licks in".  And, yes, I'm going to continue to refer to fighting cancer in more colorful ways than just "fighting cancer".  It's quite satisfying.&lt;br /&gt;&lt;br /&gt;No money, no donations of protons or neutrons.  Just electrons, photons, and elbow grease.  This isn't a site for beggin; it's just a site that invites others to get in on the beatdown while the beatin' is good.&lt;br /&gt;&lt;br /&gt;The idea is based on the premise that the pool of smart, motivated volunteers is underused and underorganized by the cancer research community.  In other words:&lt;br /&gt;&lt;br /&gt;1) there are a lot of very smart people who would get a profound satisfaction from knowing that they contributed in some small way to developing a cure for cancer.&lt;br /&gt;&lt;br /&gt;2) there are a lot of researchers who will buy that exposing some of their tasks in a sensical way to an army of smart people who want to work on them could speed their work.&lt;br /&gt;&lt;br /&gt;One case in which this might work is:&lt;br /&gt;&lt;br /&gt;A researcher needed to develop a significant new body of software, and was looking to task some portions of that development out to volunteers in a test-driven manner - "I write the tests, you guys make as many as you can pass before I do".&lt;br /&gt;&lt;br /&gt;I recently &lt;a href="http://pivotallabs.com/"&gt;participated&lt;/a&gt; in agile development of this sort, using &lt;a href="http://pivotaltracker.com/"&gt;pivotals excellent agile project manager&lt;/a&gt;, which is influencing my thinking on this type of application.&lt;br /&gt;&lt;br /&gt;The basic site workflow for Cancer Beatdown is as expected:&lt;br /&gt;&lt;br /&gt;1) Site manager invites a few researchers who are doing promising work.&lt;br /&gt;&lt;br /&gt;2) Researchers post the task, whether it's stuffing envelopes on-site or coming up with a new way to search a massive database for correlations.  The required form of the solution is also specified.&lt;br /&gt;&lt;br /&gt;3) Volunteers propose solutions.&lt;br /&gt;&lt;br /&gt;Some &lt;a href="http://www.shirky.com/writings/group_enemy.html"&gt;sensical&lt;/a&gt; reputation/core user policies would be adopted - i.e. Researchers or the site manager can invite more researchers, after vouching for them.  Volunteers are invested in performance.&lt;br /&gt;&lt;br /&gt;Personally, I would love to volunteer for some well-defined and promising projects in which I could invest one day per month.  I know some people who would never consider such a thing, and some that would invest considerably more time.  What do you think?&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2821658279248314";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19037533-6460099439035753470?l=rbodo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rbodo.blogspot.com/feeds/6460099439035753470/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19037533&amp;postID=6460099439035753470' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19037533/posts/default/6460099439035753470'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19037533/posts/default/6460099439035753470'/><link rel='alternate' type='text/html' href='http://rbodo.blogspot.com/2007/10/hurting-cancer.html' title='Method for organizing volunteer efforts'/><author><name>rsb</name><uri>http://www.blogger.com/profile/00269513857111909714</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='17' src='http://static.flickr.com/12/68816100_e6fcd5c9d2_m.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19037533.post-6631614301582116158</id><published>2007-07-09T09:50:00.000-07:00</published><updated>2011-05-01T22:50:25.455-07:00</updated><title type='text'>Selling on Ebay</title><content type='html'>Just found this old draft of ebay instructions.  If you are going to start selling stuff on ebay, copy these conditions of auction and live by them, it will save you a lot of time and money.  The one adjustment you will have to make regards buyer feedback.  I stopped selling on ebay when they stopped allowing negative buyer feedback.  You can just pull or rewrite those three lines:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Conditions of Auction:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You must agree with our Conditions of Auction prior to bidding.  Please do not bid if you do not agree to these conditions. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Shipping Policy:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You will pay shipping as described in the auction. &lt;br /&gt;&lt;br /&gt;To avoid damaged goods and provide timely shipment, we will ship as follows:&lt;br /&gt;&lt;br /&gt;We only ship air, on-line trackable, on-line signature-required, and fully insured.  Internationally, we only ship USPS Express Mail Service.&lt;br /&gt;&lt;br /&gt;We do not ship ground by any carrier.&lt;br /&gt;&lt;br /&gt;To ship, we require your name, confirmed address, and valid phone number.&lt;br /&gt;&lt;br /&gt;We reserve the right to cancel the transaction if we cannot reach you by phone.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Payment Policy&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;To avoid fraud, we will ship as follows:&lt;br /&gt;&lt;br /&gt;We require payment prior to shipping.  We ship within seven days of receipt of payment, usually much faster.&lt;br /&gt;&lt;br /&gt;We do not accept payments by check, moneygram, western union, or partial payments of any kind.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Return Policy:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You can return the product within 30 days of receipt if not satisfied for any reason subject to the terms and conditions below.&lt;br /&gt;&lt;br /&gt;*** You agree to:&lt;br /&gt;&lt;br /&gt;Fully insure any returned item, to the full value of the auction, and to ship via an on-line, trackable, air service.&lt;br /&gt;&lt;br /&gt;Provide on-line tracking information on date of shipment.&lt;br /&gt;&lt;br /&gt;You will be fully refunded within two days of receipt of goods that are in the same condition they were in when shipped to you. &lt;br /&gt;&lt;br /&gt;You agree that we may deduct any costs associated with damaged or missing goods returned from your refund.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Right to refuse sale:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To avoid scams, we reserve the right to refuse sale to buyers with:&lt;br /&gt;&lt;br /&gt;* No Feedback&lt;br /&gt;* Poor Feedback&lt;br /&gt;* Private Feedback&lt;br /&gt;* Unconfirmed Shipping Addresses or incomplete contact details.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Service Policy:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;No service is provided.  No service guarantees are provided.&lt;br /&gt;&lt;br /&gt;We will, on a best-effort basis, answer questions via email anytime, or via phone by appointment. &lt;br /&gt;&lt;br /&gt;We don't mind answering any questions at all, and we typically get back to you same-day.&lt;br /&gt;&lt;br /&gt;Again, those are the conditions of sale.  You must agree with those conditions prior to bidding.  If you take exception with any of those, please do not bid, or contact us before you bid so that we can work it out.  Thank you!&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2821658279248314";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19037533-6631614301582116158?l=rbodo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rbodo.blogspot.com/feeds/6631614301582116158/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19037533&amp;postID=6631614301582116158' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19037533/posts/default/6631614301582116158'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19037533/posts/default/6631614301582116158'/><link rel='alternate' type='text/html' href='http://rbodo.blogspot.com/2007/07/selling-on-ebay.html' title='Selling on Ebay'/><author><name>rsb</name><uri>http://www.blogger.com/profile/00269513857111909714</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='17' src='http://static.flickr.com/12/68816100_e6fcd5c9d2_m.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19037533.post-8936067924746510489</id><published>2007-04-23T07:58:00.000-07:00</published><updated>2007-05-06T16:17:08.477-07:00</updated><title type='text'>Telepathy UIs</title><content type='html'>Here is a rundown of "brainwave" game controllers.  (bonus idea included)&lt;br /&gt;&lt;br /&gt;I first heard about an implementation of one of these in the early 90s by a company called "the other 90%" run by former Atari founder Ron Gordon.  AFAICT, very few were sold.  Anyway, I still believe it worked.  So I had a discussion with someone about this last night.  He didn't believe it.  Here is some history on the topic:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;1974&lt;/span&gt; - &lt;a href="http://www.cat.nyu.edu/parkbench/brainwaveDrawing.html"&gt;EEG control (Sobell - VA Neuropsychology Lab)&lt;/a&gt; - Still looking for the actual research study.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;1996&lt;/span&gt; - &lt;a href="http://www.cnn.com/TECH/9609/18/mind.drive/index.html"&gt;CNN reporting on The other 90% (Atari's Ron Gordon) MindDrive application&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;2004&lt;/span&gt; - &lt;a href="http://news.bbc.co.uk/2/hi/technology/3485918.stm"&gt;BBC reporting on MIT implementation&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;2006&lt;/span&gt; - &lt;a href="http://video.msn.com/v/us/fv/msnbc/fv.htm??f=00&amp;g=09e9f856-63f3-40cd-83e6-eb6f2910a31c&amp;p=&amp;t=m5&amp;rf=http://www.msnbc.msn.com/id/17740749/&amp;fg="&gt;MSNBC interviews Don Clark of Wall Street Journal reporting on Emotiv game controller&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The reason this works is twofold.  First, the composite electrical activity of your brain can be measured and decomposed by frequency and a half dozen clean signals can be discerned.  I would call these &lt;a href="http://en.wikipedia.org/wiki/Brain_waves"&gt;brainwaves&lt;/a&gt; but, according to wikipedia, that is frowned upon for some reason.  Second, these patterns change according to thought activity, which is under our control.&lt;br /&gt;&lt;br /&gt;Anyway, if one &lt;a href="http://en.wikipedia.org/wiki/Brain-computer_interface#Non-invasive_BCIs"&gt;reads&lt;/a&gt; about non-invasive brain computer interfaces, it becomes apparent that there is plenty of research in the area.  There are also several successful and useful implementations.  Not all of them EEG based.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Bonus Idea&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;Wouldn't it be cool if: &lt;br /&gt;&lt;br /&gt;My jabra bluetooth headset could also send composite brainwave activity to my wildly powerful cell phone, or maybe even my uber-powerful computing cluster at Name_Your_Favorite_Company?  In that case, I could generate messages by thinking, while the headset reported the current character.&lt;br /&gt;&lt;br /&gt;I have heard somewhere that these game controllers allow you to manipulate 6 tokens based on training them to understand when you think in certain ways.  &lt;br /&gt;&lt;br /&gt;The first idea that comes to mind is the concept of scrolling through groups of tokens.  Lets try sending telepathic messages to each other with just the thoughts Up/Down.  (After taking a look at some EEG decompositions, two tokens is, for some reason, quite believable to me.)&lt;br /&gt;&lt;br /&gt;Me: Think Up&lt;br /&gt;Headset Audio: "A through E"&lt;br /&gt;Me: Think Up&lt;br /&gt;Headset Audio: "F through L"&lt;br /&gt;Me: Think Down&lt;br /&gt;Headset Audio: "F through L it is - F"&lt;br /&gt;Me: Think Up&lt;br /&gt;Headset Audio: "G"&lt;br /&gt;Me: Think Up&lt;br /&gt;Headset Audio: "H"&lt;br /&gt;Me: Think Down&lt;br /&gt;Headset Audio: "H is the first letter."&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;You get the idea.  So you form some text, which gets sent to whoever you are configured to send this stuff to.  This gets converted to speech and played back in their headset.  They, in turn, send you text with their bluetooth audio/telepathy headset.  &lt;br /&gt;&lt;br /&gt;Not at all the best UI, but if you can really train yourself to manipulate six binary tokens, the sky is the limit.  Can't you just see schoolteachers spectrum-jamming bluetooth signals?&lt;br /&gt;&lt;br /&gt;I would appreciate a study that shows a Non-Invasive BCI that was reliably trained to a larger number of tokens.  Until then I'll limit my imaginings to two.&lt;br /&gt;&lt;br /&gt;Even with two, it is easy to see that the combination of mic/earpiece/brainwaves is powerful.  Imagine setting the context with voice: i.e. saying "computer doors" or "computer radio volume", then just thinking up or down to lock or unlock the doors, or control radio volume.&lt;br /&gt;&lt;br /&gt;I hope that no one patents this crap and charges exhorbitant amounts of money for this type of tech.&lt;br /&gt;&lt;br /&gt;Update: I have to add this link to a cool open-source EEG hardware project: http://pceeg.wikia.com/wiki/Main_Page&lt;br /&gt;&lt;br /&gt;You would be surprised what you can find in Open Hardware these days.  I will post specs of all the components of the device I describe if I have time.  There should be prior are for every component.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2821658279248314";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19037533-8936067924746510489?l=rbodo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rbodo.blogspot.com/feeds/8936067924746510489/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19037533&amp;postID=8936067924746510489' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19037533/posts/default/8936067924746510489'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19037533/posts/default/8936067924746510489'/><link rel='alternate' type='text/html' href='http://rbodo.blogspot.com/2007/04/telepathy-uis.html' title='Telepathy UIs'/><author><name>rsb</name><uri>http://www.blogger.com/profile/00269513857111909714</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='17' src='http://static.flickr.com/12/68816100_e6fcd5c9d2_m.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19037533.post-219915173763089726</id><published>2007-02-25T16:55:00.000-08:00</published><updated>2007-04-20T12:47:39.828-07:00</updated><title type='text'>Getting Things Done - David Allen - Reviewed by a busy person</title><content type='html'>I have recently been reading a number of personal productivity and project management books (in typical ADD parallel fashion).   If you are a very busy person, you might scroll to the commentary at the bottom of this article, as I am a busy person as well, and I have a few points to make to you. &lt;span style="font-weight: bold; font-style: italic;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Summary&lt;/span&gt;&lt;span style="font-style: italic;"&gt;:&lt;/span&gt; Getting Things Done.  David Allen.  Good productivity tricks.  Buy it.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Definitions&lt;/span&gt;&lt;span style="font-style: italic;"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;GTD&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; - Getting Things Done - Method for identifying and managing actionable stuff.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Stuff&lt;/span&gt; - anything you have allowed into your psychological or physical world that doesn't belong where it is, but for which you haven't &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;determined&lt;/span&gt; the desired outcome and the next action step. Stuff clouds your mind until you identify and track it.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Workflow &lt;/span&gt;- everything in the book revolves around this list.&lt;br /&gt;&lt;br /&gt;1) &lt;span style="font-weight: bold;"&gt;collect&lt;/span&gt; things that command our attention&lt;br /&gt;2) &lt;span style="font-weight: bold;"&gt;process&lt;/span&gt; what they mean and what to do about them&lt;br /&gt;3) &lt;span style="font-weight: bold;"&gt;organize&lt;/span&gt; the results, which we&lt;br /&gt;4) &lt;span style="font-weight: bold;"&gt;review&lt;/span&gt; as options for what we choose to&lt;br /&gt;5) &lt;span style="font-weight: bold;"&gt;do&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;" class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Incompletes&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; - categorized stuff not done&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Collecting&lt;/span&gt; - You are always collecting (&lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_5"&gt;work flow&lt;/span&gt; 1) stuff by identifying and tracking it.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Collection devices&lt;/span&gt; - capture stuff - notepad, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;pda&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;, email inbox, physical inbox., etc.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Processing triage&lt;/span&gt; (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;workflow&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; 2, 3, and 4) -&lt;br /&gt;&lt;br /&gt;1) If it's not actionable, trash it.&lt;br /&gt;2) If it's actionable and will take less than two minutes, do it.&lt;br /&gt;3) If it's actionable and will take more than two minutes, delegate or defer to calendar or "next actions"&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Projects&lt;/span&gt; - special case &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;incompletes&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; - they are a list of actions that needs to be made and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;triaged&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_10"&gt;separately&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Next Actions / Next Action&lt;/span&gt; - prioritized list of things that need to be done and cannot be put on the calendar because they don't have an associated time that is not "ASAP", next action is at the top.  You MAY divide your Next Actions list by category - phone calls, support requests, etc.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Waiting Actions&lt;/span&gt; - actions that are blocked on other people.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Lists required for David Allens Method &lt;/span&gt;-&lt;br /&gt;&lt;br /&gt;* Projects&lt;br /&gt;* Next Actions&lt;br /&gt;* Calendar&lt;br /&gt;* Waiting For&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Daily Review&lt;/span&gt; - Calendar and Processing Triage&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Weekly Review&lt;/span&gt; - Everything : gather, process, update all lists.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Decision making criteria:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1) context - where, how can this be done&lt;br /&gt;2) time available - when is there time for this&lt;br /&gt;3) energy available - how much of your available energy would this take&lt;br /&gt;4) priority - which action that can be done has the highest payoff&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Purging and getting started&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;1) Block out a day or two&lt;br /&gt;2) Buy the office gear he recommends&lt;br /&gt;3) Collect every piece of stuff of every kind and put it in a single inbox&lt;br /&gt;4) Process stuff as usual&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Also in this book&lt;/span&gt;&lt;span style="font-style: italic;"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Project planning - not particularly interesting if you are comfortable with your project management skills.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Decision making&lt;/span&gt; - very reasonable but not inspiring or particularly specialized section.&lt;br /&gt;&lt;br /&gt;Part 2 is implementation ideas for this system - probably a must-read if you decide  you want to integrate part of this system into yours - these are all productivity "tricks", similar to those you would find in any personal productivity book, although there are a few unique ones.  I will definitely come back to this section in my "organization time".&lt;br /&gt;&lt;br /&gt;Part 3 is an analysis of the value of the system.  I skipped it at first, but came back to it this morning, and he's got some good points.  Worth reading.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Links:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This book is a huge geek-cult hit, so google might be your best bet, but here is what I found useful:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Gtd"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;Wikipedia&lt;/span&gt;&lt;/span&gt; summary of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;GTD&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://shared.snapgrid.com/index.html"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;GTD&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; Tiddly Wiki  &lt;/a&gt;-  a very cool javascript-only wiki that supposedly lends itself to these lists. - in any case, any wiki will do as a list manager, but &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;TiddlyWiki&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; is a single javascript / html file with everything in it, so it's great for offline use.  Sync is always a problem, even with this method.  You won't always use the same PC.  Once solution is to put your tiddly wiki on a thumb drive, in the hopes that you will always be able to plug it in.  I tried it and liked it, but will abandon it due to sync/speed concerns and merge back into an &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;svn&lt;/span&gt;&lt;/span&gt; managed wiki.&lt;br /&gt;&lt;a href="http://shared.snapgrid.com/empty.html"&gt;&lt;br /&gt;Location of a blank &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;GTD&lt;/span&gt;&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;TiddlyWiki&lt;/span&gt;&lt;/span&gt; &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Implementation Details:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I did make several purchases based on David Allens advice.  I also got buy-in to spend a couple days doing a purge from a few other folk before starting - an excellent recommendation as it turns out.&lt;br /&gt;&lt;br /&gt;During my purge I found that the layout of my desk and filing system needed to be optimized right up front for this activity specifically.  One thing that doesn't get emphasised in the book is setting up your filing system completely before starting your purge.  It's important.  You should do that, and set your inbox and trash can right next to the filing system, then begin by bringing your paperwork in.  You will need a lot of space.  You will probably have to purge your entire filing system if you are really following the book closely.&lt;br /&gt;&lt;br /&gt;Oh, and if you are a normal person, you will have to do your purge over the course of many days.  The better part of two days got me most of the way there, but I had a lot of work to do over the next couple weeks.  Expect 10-20 hours work at least, not including purchasing gear he suggests, if you choose to do that.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-style: italic;"&gt;Commentary&lt;/span&gt;:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Continuous &lt;/span&gt;&lt;span style="font-style: italic;" class="blsp-spelling-corrected" id="SPELLING_ERROR_17"&gt;Work Flow&lt;/span&gt;&lt;span style="font-style: italic;"&gt; Management&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;There are some adjustments that I would make to his program for very busy people.  Weekly or daily triage is not an option for busy people.  For busy people, it is constant, just like the collecting phase, and it has to be treated as a constant if you want to stay on top of it.&lt;br /&gt;&lt;br /&gt;As a support manager, when I get in in the morning I might have dozens of new tickets (hundreds already &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;triaged&lt;/span&gt;), plus ringing phones, a full calendar, and it just keeps coming.  It's like managing a busy restaurant kitchen.  I only have the luxuries assumed in this book late at night, on weekends and holidays. &lt;br /&gt;&lt;br /&gt;After 12 busy hours at work, the last thing you want are huge lists to triage.  So you have to work it constantly - collecting, consolidating and triaging.  Yes, you still have to make concerted efforts to triage as completely as possible during the slow times, but infrequent triage won't keep you sane.  The drive to organize is more powerful and more urgent for busy people.&lt;br /&gt;&lt;br /&gt;There are limits to continuous &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_19"&gt;work flow&lt;/span&gt; management.  It is easier to rework constantly if you have a reasonable percentage of simple tasks, because you can multitask simple jobs.  (i.e. phone call plus monitor a few things plus w&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;ork&lt;/span&gt;&lt;/span&gt; down a list of support tickets is do-able, while coding plus work down a list of tickets is nigh impossible).  Continuous management is sub-optimal in terms of peace of mind. At some point you have to accept that you are resource starved, and can't fix the problem by shoving management into the gaps.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;The Drive to Organize&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;There is one profound insight here.  The drive to obtain the peace of mind that only a complete and properly prioritized task list can provide is &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_14"&gt;irresistible&lt;/span&gt;.     He covers this right up front and it's so damn true.  Without this peace of mind, life sucks and productivity suffers.&lt;br /&gt;&lt;br /&gt;I would add that denial of responsibility is an insidious temptation.&lt;br /&gt;&lt;br /&gt;There is a &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_14"&gt;relationship&lt;/span&gt; between The Drive To Organize and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;Neuroticism&lt;/span&gt;.  I could write an entire paper on Neurotic Time Management.  Man, I have been there.  If you can do something, it's a good thing to do, and you know you are competent and maybe even the best person to do it...AND you are Neurotic, then you will accept responsibility for it.  If you are Neurotic enough, your task list is effectively infinite.&lt;br /&gt;&lt;br /&gt;The discipline to "just say no" is covered in a section called "How do you prevent broken agreements with yourself", which for my money is the best section in the book. There is probably nothing there you don't intuitively know, but surely &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;some&lt;/span&gt; things you need reminders of: Either don't accept the task, renegotiate the agreement to do it, or do it.  Not rocket science, but words to live by.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;The Problem with Meetings&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;"I envision a world in which no meeting or discussion will end, and no interaction cease, without a clear determination of whether or not some action is needed- and if it is, what it will be, or at least who has responsibility for it." - David Allen (Part 3 of Getting Things Done)&lt;br /&gt;&lt;br /&gt;How many business meetings end without the coordinator requesting: "List your action items."  I hope that I never run another meeting without making that statement, and never leave a meeting where that request is not made without asking why.&lt;br /&gt;&lt;br /&gt;Glad I came back to section 3.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;What other busy people think:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I bought two copies of this book which I have loaned to two other busy, organized people.  They both said the same thing - yeah, he's got some good tricks.  Neither could adopt his system to do their day to day work any more than a kitchen manager at a busy restaurant could, but they both got a  good trick or two out of it.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2821658279248314";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19037533-219915173763089726?l=rbodo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rbodo.blogspot.com/feeds/219915173763089726/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19037533&amp;postID=219915173763089726' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19037533/posts/default/219915173763089726'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19037533/posts/default/219915173763089726'/><link rel='alternate' type='text/html' href='http://rbodo.blogspot.com/2007/02/book-review-by-definition-getting.html' title='Getting Things Done - David Allen - Reviewed by a busy person'/><author><name>rsb</name><uri>http://www.blogger.com/profile/00269513857111909714</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='17' src='http://static.flickr.com/12/68816100_e6fcd5c9d2_m.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19037533.post-115709751200247995</id><published>2006-09-01T00:26:00.000-07:00</published><updated>2006-09-09T16:16:29.570-07:00</updated><title type='text'>Alternatives to Antiproperty Incubation</title><content type='html'>Really common question: &lt;br /&gt;&lt;br /&gt;"Does the patent system do more harm than good?"  &lt;br /&gt;&lt;br /&gt;Just about everything I read assumes that the answer is: "No - most patent systems are a net good for societies, but we can do better."  &lt;br /&gt;&lt;br /&gt;After all, patents are just antiproperty with a 20 year incubation period as a government-granted intellectual property franchise.  In other words, patent systems carry &lt;span style="font-style:italic;"&gt;a lot&lt;/span&gt; of baggage.&lt;br /&gt;&lt;br /&gt;Assuming that the common wisdom is true - the next question is:&lt;br /&gt;&lt;br /&gt;"What's better?"  Or more specifically: "Are there systems that can be developed alongside the patent system that can provide us with additional IF?"&lt;br /&gt;&lt;br /&gt;I was recently alerted to a paper by Tom Bell discussing one such potential parallel system - &lt;a href="http://agoraphilia.blogspot.com/2006/08/prediction-markets-whup-on-copyrights.html"&gt;scientific predictive exchanges. (spex)&lt;/a&gt;  I like the idea, and I can see how predictive markets could not only encourage research, but, were the claims to be "bet" upon collaboratively developed, they would potentially expand IF.  &lt;br /&gt;&lt;br /&gt;SPEX aren't all that different from your company's internal office pool on "what product Google will announce next?" or "when will the release date of your own next product will finally arrive?".  These predictive games may not change the world, but good ideas and &lt;a href="http://en.wikipedia.org/wiki/The_Wisdom_of_Crowds"&gt;good data&lt;/a&gt; can come out of them (and you might make a few bucks, too!).&lt;br /&gt;&lt;br /&gt;A little extra investment in the implementation of a SPEX, however, might make all the difference in its utility.  As I alluded to previously, if someone can come up with a good predictive scientific exchange that encouraged collaborative development of scientific claims, then well defined, high-quality ideas might develop that did not previously exist.  Exactly what the patent system is supposed to do, without the abuses and high transaction costs.&lt;br /&gt;&lt;br /&gt;To restate the last question in light of this new system, assuming SPEX ideas are cheaper to society than patented ideas (and we have no reason to believe otherwise): &lt;br /&gt;&lt;br /&gt;"Can a SPEX be designed to encourage the generation of useful ideas, especially those that would qualify as &lt;a href="http://www.iusmentis.com/patents/priorart/"&gt;prior art&lt;/a&gt;?"&lt;br /&gt;&lt;br /&gt;A SPEX that answers that question in the affirmative might not be designed so much as a "market" as a collaborative tool.  This train of thought brings me a conclusion I come to often: Keep working on on-line collaborative tools.  They hold rare potential as technological solutions to social-political problems.&lt;br /&gt;&lt;br /&gt;Anyone up for a predictive market plug-in to &lt;a href="http://www.mediawiki.org/wiki/MediaWiki"&gt;MeidaWiki&lt;/a&gt;?&lt;br /&gt;&lt;br /&gt;UPDATE: HFS, Batman! &lt;a href="http://www.cambrianhouse.com/"&gt;An idea incubator website thingy!&lt;/a&gt;  This is almost totally unrelated to anything else I've discussed here, but so cool that I can't help myself from linking to it.  &lt;br /&gt;&lt;br /&gt;Actually, Cambrian house is just a web apps company that encourages anyone to post ideas for them to develop, and anyone to help develop them.  If they are successful, well...I would like to say that they will encourage the documentation of a lot of useful, high quality antiproperty.  The initial stage ideas are very thinly described, however, and Cambrian house is not capable of implementing more than a few of them.  The thing is, given two generally useful ideas, the very well documented idea will be very useful.  Most patent systems do a reasonable job of encouraging good documentation.&lt;br /&gt;&lt;br /&gt;On the other hand, Cambrian house does publish specs as they work, so that others can contribute labor for royalty points.  Cambrian house is just starting out, and they are highly involved in the voting process, so maybe they can encourage something closer to patent quality work.&lt;br /&gt;&lt;br /&gt;I love this idea.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2821658279248314";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19037533-115709751200247995?l=rbodo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rbodo.blogspot.com/feeds/115709751200247995/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19037533&amp;postID=115709751200247995' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19037533/posts/default/115709751200247995'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19037533/posts/default/115709751200247995'/><link rel='alternate' type='text/html' href='http://rbodo.blogspot.com/2006/09/alternatives-to-antiproperty.html' title='Alternatives to Antiproperty Incubation'/><author><name>rsb</name><uri>http://www.blogger.com/profile/00269513857111909714</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='17' src='http://static.flickr.com/12/68816100_e6fcd5c9d2_m.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19037533.post-115626847463829469</id><published>2006-08-22T09:57:00.000-07:00</published><updated>2006-08-22T23:02:42.546-07:00</updated><title type='text'>Intellectual Antiproperty</title><content type='html'>I submit to the court as interesting a recent discussion with my friend &lt;a href="http://rowetel.com/blog/index.php"&gt;David Rowe&lt;/a&gt;.  He asserts that the creation of an intellectual work, protected from monopolization by design, will more evenly distribute wealth-creation that would otherwise be centralized, were that same intellectual work held as property.  That's a mouthful.&lt;br /&gt;&lt;br /&gt;If you can put up with my naiveté, you may find my response intriguing:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;tt&gt;&lt;br /&gt;&gt; &gt; I also have an economic theory I am working on " if closed IP makes a&lt;br /&gt;&gt; &gt; small amount of people a lot of money - does opening the IP make a&lt;br /&gt;&gt; &gt; moderate amount of money for a large amount of people".  The latter&lt;br /&gt;&gt; &gt; seems better to me.  I would be interested in your thoughts on this.&lt;br /&gt;&gt;&lt;br /&gt;&gt; Maybe Intellectual Property (IP) is not the right term.  I say you are&lt;br /&gt;&gt; creating Intellectual Antiproperty, or expanding Intellectual Freedom.&lt;br /&gt;&gt;  IA sounds kind of like a pinko communist plot, so lets use that. ;-)&lt;br /&gt;&gt;&lt;br /&gt;&gt; IMHO, the idea of IP is borderline unethical.   IP is a promise from&lt;br /&gt;&gt; the government to punish people for using ideas.  Freeing IP - putting&lt;br /&gt;&gt; it in the public domain (expanding IF or creating IA), makes it more&lt;br /&gt;&gt; difficult for governments to punish people, and allows people to have&lt;br /&gt;&gt; better lives by making peaceful use of information they posess.&lt;br /&gt;&gt;&lt;br /&gt;&gt; IA and IF as ideas, are arguably beyond moral reproach.&lt;br /&gt;&gt;&lt;br /&gt;&gt; This IP stuff is all tied up in government corruption.  You hear this&lt;br /&gt;&gt; one a lot: Would we not have great drugs without a patent system?&lt;br /&gt;&gt; Huge amounts of money have to be spent to create great drugs, and we&lt;br /&gt;&gt; know that governments, given any amount of money, can only bumble.  So&lt;br /&gt;&gt; it is said that pharmaceutical companies must be compensated with IP,&lt;br /&gt;&gt; and those who cannot afford drugs must not be allowed to make them.&lt;br /&gt;&gt; This leads to vast profits for pharmaceutical companies, who only&lt;br /&gt;&gt; spend a tiny portion (10-20 percent) of their revenues on reearch.&lt;br /&gt;&gt; I'm not railing against capitalism - it's great motivation.  But&lt;br /&gt;&gt; patents suck.  Not only do people get hurt by patents, but whole&lt;br /&gt;&gt; industries are very inefficient.&lt;br /&gt;&gt;&lt;br /&gt;&gt; The solution to that one, unfortunately, involves big bucks and&lt;br /&gt;&gt; stamping out corruption, a difficult pairing.  Big governments, or&lt;br /&gt;&gt; lots of little ones, have to reward companies for actually solving&lt;br /&gt;&gt; problems of their citizens by finding new drugs, and collect taxes to&lt;br /&gt;&gt; pay the rewards.  The rewards have to be greater than the cost of the&lt;br /&gt;&gt; research.  Then anyone can build and sell the drugs.  It's a radical&lt;br /&gt;&gt; change.  And governments these days are difficult to change.&lt;br /&gt;&gt;&lt;br /&gt;&gt; There is some happy medium in which some IP can exist, and some IA can&lt;br /&gt;&gt; exist.  I don't have much beef with 20 year copyright grants, and&lt;br /&gt;&gt; copyright is a cornerstone of viral IA licensing, like the GPL.&lt;br /&gt;&gt; However, I am totally unconvinced that patents are beneficial to&lt;br /&gt;&gt; society.&lt;br /&gt;&gt;&lt;br /&gt;&gt; So I think you are dead on ethically, and I think you are expanding&lt;br /&gt;&gt; the IA domain, which encroaches on the IP domain.  Under most patent&lt;br /&gt;&gt; law, all that is necessary is that prior art exist to free ideas.&lt;br /&gt;&gt;&lt;br /&gt;&gt; So you know what I think about what you are doing, but the root&lt;br /&gt;&gt; question is: how is financial benefit from IA distributed?  We have&lt;br /&gt;&gt; experience with this situation, and there is a good bit of data out&lt;br /&gt;&gt; there.  We know what has happened already in similar cases - lots of&lt;br /&gt;&gt; people will use your free software and free hardware, and get great&lt;br /&gt;&gt; benefit from it.  This will improve their lives, and allow them to&lt;br /&gt;&gt; spend money on other things.  Lots of service industries spring up&lt;br /&gt;&gt; around IA, and small businesses combining IA and IP.  I like small&lt;br /&gt;&gt; businesses.  So I think this is an excellent outcome.  Well, back to&lt;br /&gt;&gt; work on our patented software!&lt;br /&gt;&lt;/pre&gt;&lt;/tt&gt;&lt;br /&gt;&lt;br /&gt;One of my goals was to introduce suitable terminology to allow us to accurately discuss David's theory.&lt;br /&gt;&lt;br /&gt;Introducing suitable terminology to solve problems is enjoyable and useful.  It's almost a habit for myself and many of my friends, and it has got me interested in morphology in general; I can't help but analyze this.  So we're looking for something that solves our problem in such a way as to be unique, useful, easy to use, and clear.&lt;br /&gt;&lt;br /&gt;Intellectual anti-property is actually a more useful term for broad consumption than anti-property because it is a compound noun.  When the average person looks at the term anti-property, they probably see a compound preposition and interpret it as meaning "against property".  However, if you use the term Intellectual Anti-Property, or IA, no such misinterpretation can be made.  Either term holds up on the usefulness test for our purposes, the acronyms being particularly easy to use.&lt;br /&gt;&lt;br /&gt;I have since done a little research and have found little coverage of the concept of IA, so I would like to discuss this further with anyone who is interested.  There are lots of related concepts, like copyleft, Open Content, among others, but none that plainly and simply refer to &lt;b&gt;intellectual works protected from becoming intellectual property by design&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Intellectual freedom is used commonly in a similar context.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2821658279248314";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19037533-115626847463829469?l=rbodo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rbodo.blogspot.com/feeds/115626847463829469/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19037533&amp;postID=115626847463829469' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19037533/posts/default/115626847463829469'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19037533/posts/default/115626847463829469'/><link rel='alternate' type='text/html' href='http://rbodo.blogspot.com/2006/08/intellectual-antiproperty.html' title='Intellectual Antiproperty'/><author><name>rsb</name><uri>http://www.blogger.com/profile/00269513857111909714</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='17' src='http://static.flickr.com/12/68816100_e6fcd5c9d2_m.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19037533.post-114964303773029831</id><published>2006-06-06T18:02:00.000-07:00</published><updated>2006-06-11T17:10:53.856-07:00</updated><title type='text'>Testing Apple Upgrades</title><content type='html'>When I left the Apple store with my MacBook, I was carrying a 13 inch MacBook and an AppleCare warranty.  I'm happy with my MacBook, and happy to pay 250USD for a 3-year comprehensive AppleCare warranty.  &lt;br /&gt;&lt;br /&gt;Apple upgrades are overpriced.  As a rule of thumb, you can get a better accessory with a better warranty at half the price anywhere else.  Let's test that.  &lt;br /&gt;&lt;br /&gt;&lt;B&gt;The Test&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;To complete my home setup, I needed an external monitor and a couple gigs of RAM for the MacBook.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Memory&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Eric recommended &lt;a href="http://eshop.macsales.com/item/Other%20World%20Computing/53DR2SPAIR2G/"&gt;OWC&lt;/a&gt; for the memory.  I checked it out.&lt;br /&gt;&lt;br /&gt;Total price charged my card with FedEx 2-day shipping:  $236.64&lt;br /&gt;The order went through at about 6PM on a Tuesday.&lt;br /&gt;&lt;br /&gt;Response to warranty question:&lt;br /&gt;&lt;br /&gt;Duane Crago: Good evening. All memory has a lifetime replacement warranty.&lt;br /&gt;&lt;br /&gt;Rich Bodo: Cool. thanks. is there a web page that states that?&lt;br /&gt;&lt;br /&gt;Duane Crago: http://eshop.macsales.com/Customized_Pages/Framework.cfm?page=PowerBook_Memory/memhead/warranty.html&lt;br /&gt;&lt;br /&gt;Rich Bodo: thanks. I'll blog you guys if this works out!&lt;br /&gt;&lt;br /&gt;Well, I didn't get the best deal out there.  There are better deals coming up every day.  But here's a &lt;a href="http://www.wiredbynature.org/comp/mac/macbook/mods.php"&gt;page that lists some better ones&lt;/a&gt;.  Still, I did meet my goals, and it looks like princeton chips with good manufacturing quality on the board.&lt;br /&gt;&lt;br /&gt;The memory arrived on Friday.&lt;br /&gt;&lt;br /&gt;I simply followed the instructions in the supplied macbook manual to get it installed.  Read and follow along with that manual, but bear in mind these notes:  NOTE 1: The manual asks you to listen for a "click" when inserting the memory.  You *might* feel a click, but you won't hear anything. Just make sure it's in as far as the old memory was, taking into account it's dimensions.  NOTE 2:  the levers don't retract into the memory compartment, the cover pushes them back in place.  NOTE 3: If you can't find your set of jewlers screwdrivers, frys has a &lt;a href="http://shop1.outpost.com/product/3311432?site=sr:SEARCH:MAIN_RSLT_PG"&gt;great little pocket screwdriver&lt;/a&gt; for two bucks with everything you need to work on your mac.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;External Display&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Apple wants 799USD for a 20-inch external monitor.  Their monitors are nice, so this may not be easy to beat in quality.  It took me a while to find a monitor that looked better to me than the 20-inch, but I found one.  The one I bought was a &lt;b&gt;ViewSonic &lt;a href="http://www.viewsonic.com/products/desktopdisplays/lcddisplays/xseries/vx924/"&gt;OptiSync VX924&lt;/a&gt; Xtreme Gaming 19" LCD Monitor (Black/Silver)&lt;/b&gt;  Although it's slightly smaller, it looks a lot better to me personally, and it's got a better included warranty (3 year) at less than one third the price of the Apple monitor.  I would much rather look at the VX924 all day, so this is an acceptable deal.  Right now it's selling at Amazon for 259.99USD after rebate.  I am waiting for it to arrive.  To be fair, I don't think there are any monitors out there that are exactly comparable to the Apple monitors feature-wise.  They are in a class by themselves.  But since this is a subjective thing, the ViewSonic passes my test.  If you are looking for a monitor that is half the price of the Apple, and very, very similar, there is a &lt;a href="http://accessories.us.dell.com/sna/productdetail.aspx?c=us&amp;l=en&amp;s=dhs&amp;cs=19&amp;sku=320-4688"&gt;monitor from Dell, the UltraSharp 2007WFP 20.1-inch Widescreen Flat Panel LCD Monitor with Height Adjustable Stand&lt;/a&gt;, for 390USD that might fit the bill.&lt;br /&gt;&lt;br /&gt;Approximate total for my home setup:&lt;br /&gt;&lt;br /&gt;&lt;BR&gt;MacBook: 1100.00&lt;br /&gt;&lt;BR&gt;AppleCare: 250.00&lt;br /&gt;&lt;BR&gt;2 G RAM: 225.00&lt;br /&gt;&lt;BR&gt;19" External LCD Mon.: 260.00&lt;br /&gt;&lt;BR&gt;Screwdriver: 2.00&lt;br /&gt;&lt;BR&gt;miniDVI to DVI cable: 20.00&lt;br /&gt;&lt;br /&gt;Or, about 2000 bucks after tax and shipping, plus a little bit of my time.  You won't have to put up with another blog post from me on laptops for the next 3 years.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2821658279248314";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19037533-114964303773029831?l=rbodo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rbodo.blogspot.com/feeds/114964303773029831/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19037533&amp;postID=114964303773029831' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19037533/posts/default/114964303773029831'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19037533/posts/default/114964303773029831'/><link rel='alternate' type='text/html' href='http://rbodo.blogspot.com/2006/06/testing-apple-upgrades.html' title='Testing Apple Upgrades'/><author><name>rsb</name><uri>http://www.blogger.com/profile/00269513857111909714</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='17' src='http://static.flickr.com/12/68816100_e6fcd5c9d2_m.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19037533.post-114952675949234948</id><published>2006-06-05T09:32:00.000-07:00</published><updated>2006-06-05T09:59:19.573-07:00</updated><title type='text'>SHDH Day 2 - lessons</title><content type='html'>I really didn't get the chance to have a Day 2, having to fulfill responsibilities for my friends and family.  All unexpected stuff.&lt;br /&gt;&lt;br /&gt;I arrived at France Telecom at 8PM, and found that most of the teams didn't get much of a chance to spend a second day on the job, either.&lt;br /&gt;&lt;br /&gt;Unexpectedly, I think the contest was actually too long.  Everyone thought they could get something done in two days, but didn't factor in that they would not be able to actually spend two days on the project.  My project was a two-day project, maybe a three or four day.  What I really needed was a one-day or even a half-day project idea.&lt;br /&gt;&lt;br /&gt;I was able to help some other projects with tiny scripts, and I still plan to finish up a couple scripts for yet others. &lt;br /&gt;&lt;br /&gt;The teams that placed were teams that just did the best project/time management.&lt;br /&gt;&lt;br /&gt;Everyone I spoke with had a blast.  Personally,  I learned enough about Mac OS X Tiger and the new MacBook that I went out an bought one.  I'm typing on it now.&lt;br /&gt;&lt;br /&gt;My next post will detail where to get a good deal on a memory upgrade for this thing (Definitely NOT from Apple).  After that, I'll post my &lt;a href="http://www.parallels.com/en/products/desktop/"&gt;parallels&lt;/a&gt; config for Mac OS X, Ubuntu, and Win2K.&lt;br /&gt;&lt;br /&gt;If you haven't seen Parallels, you should check out any of the myriad of &lt;a href="http://www.youtube.com/watch?v=Dbt9upE6hpM"&gt;fast os switching&lt;/a&gt; videos on-line.  That and a tour of a MacBook from someone who has one should convince you that an extra 1000 bucks for a MacBook is no big deal.  Not to mention that, with the demise of thinkpad service, the AppleCare protection plan is the last decent insurance policy for a laptop.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2821658279248314";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19037533-114952675949234948?l=rbodo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rbodo.blogspot.com/feeds/114952675949234948/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19037533&amp;postID=114952675949234948' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19037533/posts/default/114952675949234948'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19037533/posts/default/114952675949234948'/><link rel='alternate' type='text/html' href='http://rbodo.blogspot.com/2006/06/shdh-day-2-lessons.html' title='SHDH Day 2 - lessons'/><author><name>rsb</name><uri>http://www.blogger.com/profile/00269513857111909714</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='17' src='http://static.flickr.com/12/68816100_e6fcd5c9d2_m.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19037533.post-114936503204093526</id><published>2006-06-03T12:46:00.000-07:00</published><updated>2006-06-06T03:07:40.293-07:00</updated><title type='text'>SHDH X Day 1 - Like work, only better</title><content type='html'>So I had a revelation this morning.  After spending four work hours on TurboGears filing bugs on SqlObject, working around poor documentation, and chatting with the only other responsive person in the chatroom, I have thrown in the TurboGears towel.  I had a sort-of working todolist example, plus bugs.  If I'm going to get anywhere with the 16 work hours or so I have left, I'm going to need a more "rapid" development environment, like CGI, maybe.  I'll revisit TurboGears when they are a bit further along.&lt;br /&gt;&lt;P&gt;&lt;br /&gt;This morning I woke up wondering how I was going to get things done.  Not that there is any real pressure to do so.  The whole thing has a sense of humor about it, and no one has anything invested, so if anything does get done, bonus.  &lt;br /&gt;&lt;P&gt;&lt;br /&gt;Anyway, I picked up the mail this morning and David Heinemeier Hansson was looking back at me from my Linux Journal magazine, as if to say..."Give in yet?".  Yeah.  I give.  I'm installing rails on my laptop as we speak.  It's about 1PM, and having already gone through a rails tutorial, I know this is going to get me there. &lt;br /&gt;&lt;br /&gt;&lt;P&gt;&lt;br /&gt;So SHDH X is being held at France Telecom in S.San Francisco.  I'm in a beautiful corner office with a developer from another team.  Everyone is running Ubuntu.  Anyway, a bit of a late start but better late than never.  I have the simple goals today of:&lt;br /&gt;&lt;P&gt;&lt;br /&gt; * finishing the design of the basic app&lt;br /&gt; * fixing my eterm colors and learning a few more screen commands&lt;br /&gt; * getting a rails app with the correct data model installed on my laptop.&lt;br /&gt; * getting a basic rails app installed on the competition server.&lt;br /&gt; * go to a barbecue for dinner.&lt;br /&gt; * meet a few more people.&lt;br /&gt;&lt;P&gt;&lt;br /&gt;...&lt;br /&gt;&lt;P&gt;&lt;br /&gt;So far, so good.  Notes:&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;b&gt;Eterm&lt;/b&gt;&lt;br /&gt;&lt;P&gt;&lt;br /&gt;Eterm is very old.  The last checkin was years ago.  There is probably something better.  If you install Ubuntu eterm, the config file you want to modify is in: &lt;br /&gt;&lt;br /&gt;~/.Eterm/themes/Eterm/user.cfg&lt;br /&gt;&lt;br /&gt;To figure it out, you will need to open the man page for eterm, www.eterm.org, and an advanced search page on the sourceforge "enlightenment" project mailing lists.  Anyway, I've successfully changed a few minor things like foreground and background color, and consider myself lucky.  Anyone who has a good Eterm user.cfg with a lot of font configs let me know.&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;b&gt;Screen&lt;/b&gt;&lt;br /&gt;&lt;P&gt;&lt;br /&gt;Someday soon I'm going to write the best damn article on screen, ever.  But for now, I have picked up a couple new screen commands.  "Control key [" puts you in copy mode, which gives you access to the scrollback buffer.  This is important.  In my .screenrc, I have added these emacs key bindings:&lt;br /&gt;&lt;br /&gt;# ------------------------------------------------------------&lt;br /&gt;# EMACS KEY BINDINGS&lt;br /&gt;# ------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;# emacs keybindings for navigation in copy mode&lt;br /&gt;markkeys h=^B:l=^F:0=^A:$=^E&lt;br /&gt;markkeys " =^ "&lt;br /&gt;&lt;br /&gt;# special hack for C-e, since it should go *past* # the last char. -m means this is for copy mode only. bindkey&lt;br /&gt; -m ^e stuff "$^f"&lt;br /&gt;&lt;br /&gt;# C-g and other keys just quit copy mode. Esc does nothing. markkeys 033=015=^G=^D=h=j=k=l=H=M=L=G=g=y=c=v=a=x=&lt;br /&gt;b=e=B=E=w markkeys @=033&lt;br /&gt;&lt;br /&gt;# control arrows move by words. (set B, e, and w to F keys so that i can use # them to move by words, but they &lt;br /&gt;themselves still quit copy mode.) markkeys B=[:E=]:b={:e=}:w=&gt; bindkey -m ^[Od stuff { #"[[}" bindkey -m ^[Oc s&lt;br /&gt;tuff ] #"}]^f"&lt;br /&gt;&lt;br /&gt;So it's only 3:34PM and I have met a few new people, and made screen and eterm more tolerable.  That's a little under an hour each for those enjoyable tasks.  Oh, one more thing about screen, remapping the crontrol key is a must - the default is Ctrl-A, which of course interferes with readline bindings.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2821658279248314";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19037533-114936503204093526?l=rbodo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rbodo.blogspot.com/feeds/114936503204093526/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19037533&amp;postID=114936503204093526' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19037533/posts/default/114936503204093526'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19037533/posts/default/114936503204093526'/><link rel='alternate' type='text/html' href='http://rbodo.blogspot.com/2006/06/shdh-x-day-1-like-work-only-better.html' title='SHDH X Day 1 - Like work, only better'/><author><name>rsb</name><uri>http://www.blogger.com/profile/00269513857111909714</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='17' src='http://static.flickr.com/12/68816100_e6fcd5c9d2_m.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19037533.post-114930443079612412</id><published>2006-06-02T20:06:00.000-07:00</published><updated>2006-06-03T12:46:47.676-07:00</updated><title type='text'>SHDH Day 0</title><content type='html'>At SHDH day 0, which is a four hour get together.  My goals for the weekend:&lt;br /&gt;&lt;br /&gt;1) Learn some Python&lt;br /&gt;2) Learn some TurboGears&lt;br /&gt;3) Write a useful web application&lt;br /&gt;&lt;br /&gt;That's right, I'm probably the least skilled programmer here, and I've decided to give TurboGears a try instead of rails as everyone else seems to be using.  Hopefully I'll get it installed on the competition server. I just got it installed on my laptop last night, which was a small victory.&lt;br /&gt;&lt;br /&gt;I'm starting with the &lt;a href="http://www.turbogears.org/preview/docs/tutorials/todolist/"&gt;todo-list application from Brian Beck.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;First thing I noticed is that there are several gotchas in the wiki that will prevent the app from running on an up-to-date version of TurboGears.  All the tutorials look broken this way.  That is, bugs in the latest version prevent the tutorial instructions from being valid.  I'll file documentation bugs for the tutorials.&lt;br /&gt;&lt;br /&gt;O.K. I made the mistake of having a beer and it's looking like I'll get the todolist app up tonight, at best.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2821658279248314";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19037533-114930443079612412?l=rbodo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rbodo.blogspot.com/feeds/114930443079612412/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19037533&amp;postID=114930443079612412' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19037533/posts/default/114930443079612412'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19037533/posts/default/114930443079612412'/><link rel='alternate' type='text/html' href='http://rbodo.blogspot.com/2006/06/shdh-day-0.html' title='SHDH Day 0'/><author><name>rsb</name><uri>http://www.blogger.com/profile/00269513857111909714</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='17' src='http://static.flickr.com/12/68816100_e6fcd5c9d2_m.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19037533.post-114844147341109603</id><published>2006-05-23T20:17:00.000-07:00</published><updated>2006-06-02T20:06:40.846-07:00</updated><title type='text'>The Incredible Secret Money Machines</title><content type='html'>The Incredible Secret Money Machine is a book by Don Lancaster.  It was the first business book I was ever exposed to and it probably gave me the business bug.  My older brother was in high school, and probably on his third or fourth business at the time.  I was a skinny kid into Dungeons and Dragons who dreamed of writing video games for a living.  I came across a dog-eared copy of TISMM underneath my brothers home-made workbench in a pile of sawdust and solder drippings.  I immediately started thinking "scungy" (a sniglet coined by Don Lancaster that means, roughly "inventive and frugal").  Somewhere along the way, we lose sight of the fact that we like to sit under homemade desks in piles of sawdust and lab scrapings reading unusual books, and start thinking that what we really want is a pile of money.&lt;br /&gt;&lt;br /&gt;This is why I must go to &lt;a href=http://superhappydevhouse.org/&gt;superhappydevhouse X&lt;/a&gt; on Jun 2-4.  I'll be there most of the weekend.  I have been there before and it's a lot of fun.  This time, the contest is irresistable.  You have to build a money-machine.  That is, a website that is fully automated and accepts paypal.  Once you have that in place, you have to not touch it for a month.  No email, no nuthin'.  If your site is crap, it's crap.  If it goes down, it goes down.  At the end of a month, all the money goes into a pot and most of it gets donated to charity, or something like that.  If you win, you get to be a winner for a day.  Then everyone goes their seperate ways with their incredible not-so-secret money machines.  Pretty neat, huh?  I can't wait.&lt;br /&gt;&lt;br /&gt;I also started a team.  We've got a few people in it.  We're going to try to find a lab bench to park our asses under and write a really unusual website.  At least that's the plan.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2821658279248314";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19037533-114844147341109603?l=rbodo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rbodo.blogspot.com/feeds/114844147341109603/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19037533&amp;postID=114844147341109603' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19037533/posts/default/114844147341109603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19037533/posts/default/114844147341109603'/><link rel='alternate' type='text/html' href='http://rbodo.blogspot.com/2006/05/incredible-secret-money-machines.html' title='The Incredible Secret Money Machines'/><author><name>rsb</name><uri>http://www.blogger.com/profile/00269513857111909714</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='17' src='http://static.flickr.com/12/68816100_e6fcd5c9d2_m.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19037533.post-114806104663909952</id><published>2006-05-19T10:41:00.000-07:00</published><updated>2006-11-23T13:39:50.860-08:00</updated><title type='text'>How I  Sold My Car in One Hour on Craigslist</title><content type='html'>My car was overheating so I took it to a shop.  By way of background, my car was a beloved Camry wagon worth no more than 2000USD.  My guess at the problem was that it's 10 dollar thermostat was sticking.  So when my mechanic estimated 750 bucks to do some repair work, I moaned before approving the work.  &lt;br /&gt;&lt;br /&gt;Later in the day, my mechanic called me and told me he needed to do another 900 bucks worth of work to get the car running.&lt;br /&gt;&lt;br /&gt;Needless to say, I wrote my draft demand letter, grabbed my shop manual, and the pink for the car, and prepared to kick ass.  When I arrived at the shop, however, I found that the guy was honest and dead on.  It had overheated for too long.  The car was toast.  It needed a complete rebuild.  He had done everything right.  Crap.  I offered to sell the car to him for 1KUSD instead of completing the repairs.  No sale.&lt;br /&gt;&lt;br /&gt;A little down, I thanked my mechanic and walked across the street to the nearest web browser, put my car on craigslist for 1KUSD with absolutely full disclosure of its condition and no pictures.  &lt;br /&gt;&lt;br /&gt;Two minutes later, my cell phone is ringing off the hook.  One hour later, I have 1KUSD cash in my pocket and my car and pink slip are gone.  It sold that fast.&lt;br /&gt;&lt;br /&gt;Taxi?  Take me to the nearest web developer.  I've got 1000USD in my pocket.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2821658279248314";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19037533-114806104663909952?l=rbodo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rbodo.blogspot.com/feeds/114806104663909952/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19037533&amp;postID=114806104663909952' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19037533/posts/default/114806104663909952'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19037533/posts/default/114806104663909952'/><link rel='alternate' type='text/html' href='http://rbodo.blogspot.com/2006/05/how-i-sold-my-car-in-one-hour-on.html' title='How I  Sold My Car in One Hour on Craigslist'/><author><name>rsb</name><uri>http://www.blogger.com/profile/00269513857111909714</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='17' src='http://static.flickr.com/12/68816100_e6fcd5c9d2_m.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19037533.post-113677435159478951</id><published>2006-01-08T18:28:00.000-08:00</published><updated>2006-01-16T09:34:22.953-08:00</updated><title type='text'>&lt;announcement&gt;Open Telephony Hardware</title><content type='html'>The first GPL &lt;a href="http://www.rowetel.com/ucasterisk/hardware#4fxo"&gt;design&lt;/a&gt; for an &lt;a href="http://www.asterisk.org"&gt;&lt;/a&gt;asterisk-compatible analog card was published a week or two back by the ucAsterisk project.  It's a four-port FXO design.  I haven't been blogging so I missed reporting this.  It's still in a design review stage, so it hasn't been tested yet.  If you are so inclined, check it out and provide some &lt;a href="http://blackfin.uclinux.org/forum/forum.php?thread_id=1283&amp;forum_id=122"&gt;input!&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This is a good stage at which to get involved with a good project.  The design link above actually includes a design review checklist and helpful links for reviewing the design with open source EDA tools.&lt;br /&gt;&lt;br /&gt;Update: In the time it took me to post this, the ucAsterisk project had put out GPL designs for primary rate hardware as well.  Looks like the CTI hardware front is pretty well GPL'd.  &amp;lt;/announcement&amp;gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2821658279248314";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19037533-113677435159478951?l=rbodo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rbodo.blogspot.com/feeds/113677435159478951/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19037533&amp;postID=113677435159478951' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19037533/posts/default/113677435159478951'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19037533/posts/default/113677435159478951'/><link rel='alternate' type='text/html' href='http://rbodo.blogspot.com/2006/01/open-telephony-hardware.html' title='&amp;lt;announcement&amp;gt;Open Telephony Hardware'/><author><name>rsb</name><uri>http://www.blogger.com/profile/00269513857111909714</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='17' src='http://static.flickr.com/12/68816100_e6fcd5c9d2_m.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19037533.post-113450235094208073</id><published>2005-12-13T11:31:00.000-08:00</published><updated>2006-05-11T09:42:41.266-07:00</updated><title type='text'>&lt;announcement&gt;Star trek badges are almost here...</title><content type='html'>&lt;b&gt;&lt;a href="http://www.rowetel.com/ucasterisk"&gt;ucAsterisk&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;ucAsterisk is a project to breach the last barriers that stand before transparent telephony designs.  It will combine Asterisk, ucLinux, and Open Hardware.&lt;br /&gt;&lt;br /&gt;Once ucAsterisks milestones have been met, it will effectively complete a transparent embedded telephony design, from the hardware designs through firmware, DSP code and applications - all freely available under the GPL.  &lt;br /&gt;&lt;br /&gt;David Rowe has made the port of &lt;a href="http://www.asterisk.org"&gt;Asterisk&lt;/a&gt; to &lt;a href="http:/www.uclinux.org"&gt;ucLinux&lt;/a&gt; and is now working on the open telephony hardware.  This shouldn't be surprising as David started the first company to build multi-port voice telephony cards with open source Linux drivers and he's contributed heavily to projects like &lt;a href="http://www.gnu.org/software/bayonne/bayonne.html"&gt;Bayonne,&lt;/a&gt; &lt;a href="http://www.speex.org/"&gt;Speex,&lt;/a&gt; Asterisk, and Ctserver.&lt;br /&gt;&lt;br /&gt;One of the goals of the ucAsterisk project is to build a PBX running on the BlackFin 533 target platform.  This is a small, inexpensive (5USD in quantity), low-power (sub-watt), 500MHz CPU with some DSP functionality.  To buy a development board and tools for a few hundred bucks &lt;a href="http://docs.blackfin.uclinux.org/doku.php?id=buy_stuff"&gt;look here&lt;/a&gt;.  The BlackFin PBX will be an important milestone.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&amp;lt;opinion&amp;gt;Transparency&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;ucAsterisk is a proof of principle and an omen.  Telephony design is now open end-to-end.  &lt;br /&gt;&lt;br /&gt;ucLinux/&lt;a href="http://www.opencores.org"&gt;OpenCores&lt;/a&gt; have finally brought together open hardware design and the dominant platform for open-source software design.  For the next couple of years, this will be the most transparent platform for end-to-end open designs.  Porting important applications to this platform is the best way to plant the seeds of completely open end-to-end computing systems (hardware and software) with practical, commercial applications.  &lt;br /&gt;&lt;br /&gt;Since Asterisk is the dominant Open-Source telephony application, it is now possible to build a dominant platform that is completely transparent, end-to-end.  &lt;i&gt;This is as near a foolproof recipie for creating an industry standard reference design as can be imagined.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;This is another data point suggesting that there is nothing left to hide in this field, and no beneficial reason to do so (beneficial to consumers, that is).  Another data point showing that the free exchange of ideas trumps any system of patents.  Designs will move more quickly, they will be more secure and more innovative.  &lt;br /&gt;&lt;br /&gt;To me, it is just as important that this project &lt;i&gt;feels&lt;/i&gt; right.  It's a huge relief after being in this industry as long as I have to see proper reference designs developed in an open manner.&lt;br /&gt;&lt;br /&gt;NOTE: If you haven't seen the OpenCores project you probably don't follow me.  You should check it out.&lt;b&gt;&amp;lt;/opinion&amp;gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Sub 100USD Linux Boxen&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;This new tiny platform for Asterisk has me excited about toying with tiny platforms for Linux.  So I'm taking another look at small, Linux-compatible boxen.  Asterisk runs on all of the following, as they all run standard Linux.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.gumstix.com"&gt;Gumstix&lt;/a&gt; still looks like the most bang for the buck, although a little underpowered.  99 bucks gets you a very small, relatively slow little linux board with some super-cool features like bluetooth modules.  Good deal.&lt;br /&gt;&lt;br /&gt;If you want something turnkey and don't need lots of mips or a tiny package, get yourself a Linksys WRT54G series wireless router.  &lt;a href="http://www.openwrt.org"&gt;OpenWRT&lt;/a&gt; has a lot of ported applications.  At 80 bucks retail, including the wireless router, this little item is the low cost leader.&lt;br /&gt;&lt;br /&gt;If you want something powerful and don't need it too small, used 500MHz laptops (or even 1GHz laptops with a broken screen) can be found on ebay for around 100USD.&lt;br /&gt;&lt;br /&gt;Linux Devices has a small &lt;a href="http://www.linuxdevices.com/articles/AT2016997232.html"&gt;list of fairly turnkey stuff&lt;/a&gt;.  &lt;a href="http://www.compulab.co.il/all-products/html/prices.htm"&gt;Compulab&lt;/a&gt; has some sub-100USD boards that look good as well.&lt;br /&gt;&lt;br /&gt;&lt;B&gt;OpenCores.org&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Let's face it though, the most attractive thing to you, geek, is the most Open system - the system you can actually engineer.  To get there you need to geek out a little more, and, unfortunately, spend more money.  The single most interesting hardware project out there today is probably OpenCores.org.&lt;br /&gt;&lt;br /&gt;My goal is to find out how cheaply I can get FPGAs and the hardware to program FPGAs that will run ucLinux/Asterisk/Ethernet.  There are  OpenCores platforms that will run ucLinux and emulate risc, motorola, sparc, arm, etc.  &lt;br /&gt;&lt;br /&gt;I really haven't got a solid understanding as to which OpenCores modules will fit on which FPGAs. You have to really dig to get this kind of information from the opencores site (the forums are the most useful repository).  A matrix of this type will have to wait for another article.&lt;br /&gt;&lt;br /&gt;One problem that is recognized but unsolved by the OpenCores community is that the tools and components required to build an embedded system are not cheap.  It looks like most people prove they have a design and then &lt;a href="http://www.opencores.com/projects.cgi/web/opencores/tools"&gt;humbly request for help&lt;/a&gt; from commercial vendors.&lt;br /&gt;&lt;br /&gt;AFAICT, the cheapest FPGA development kit that will definitely run ucLinux on opencores is the Cyclone II from Altera, which supposedly will be available for 270USD (according to the Altera website).  I don't know enough yet to evaluate that, but &lt;a href="http://www.fpgajournal.com/whitepapers_2005/altera_20050915.htm"&gt;here is one evaluation&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The best way to get started might be to order a &lt;a href="http://www.opencores.org/browse.cgi/filter/category_board"&gt;prototype board kit&lt;/a&gt; from a designer.  &lt;br /&gt;&lt;br /&gt;Ah, well, that was fun.  Back to work on Rails.&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2821658279248314";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19037533-113450235094208073?l=rbodo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rbodo.blogspot.com/feeds/113450235094208073/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19037533&amp;postID=113450235094208073' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19037533/posts/default/113450235094208073'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19037533/posts/default/113450235094208073'/><link rel='alternate' type='text/html' href='http://rbodo.blogspot.com/2005/12/star-trek-badges-are-almost-here.html' title='&amp;lt;announcement&amp;gt;Star trek badges are almost here...'/><author><name>rsb</name><uri>http://www.blogger.com/profile/00269513857111909714</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='17' src='http://static.flickr.com/12/68816100_e6fcd5c9d2_m.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19037533.post-113443242787317069</id><published>2005-12-12T11:03:00.000-08:00</published><updated>2005-12-29T13:24:01.946-08:00</updated><title type='text'>Saving the Remote Environment</title><content type='html'>&lt;b&gt;Kaboom!&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;So I was at &lt;a href="http://superhappydevhouse.org"&gt;Superhappydevhouse&lt;/a&gt; when my thinkpad unexpectedly went into hibernation.  It took me a little while to figure out that someone across the room inadvertantly flipped the switch that controlled the outlet I was plugged into, and my battery had died.  The din in the room was loud enough that I could not hear it's last, plaintive beeps.&lt;br /&gt;&lt;br /&gt;My battery was resurrected at the flip of a switch, but I lost some time setting up application sessions, so I asked around as to how people save session data in their application of choice.  &lt;br /&gt;&lt;br /&gt;While there is no way to restore the complete state of my Linux system upon a crash (a car battery to thinkpad power adapter is on my list of things to do), there are quite a few things I can do to make things less painful.  Here are the best of state-saving helpers I looked at:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;emacs&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;First, Emacs has the commands &lt;a href="http://www.gnu.org/software/emacs/manual/html_node/Saving-Emacs-Sessions.html"&gt;desktop-save and desktop-read&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This feature is directory dependent, that is, emacs will ask you what directory your desktop config file is in.&lt;br /&gt;&lt;br /&gt;I have one emacs desktop file in each of my project directories now.  The desktop feature doesn't re-tile your windows, but it at least brings up all the files you had open and, of course, emacs tells you which ones have auto-save data.&lt;br /&gt;&lt;br /&gt;The single-desktop-per-directory limitation encourages subdirectories for different work modes.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;screen&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;I don't run most programs in crappy emacs shells, I use real terminals.  I need something to save the state of all my terminals.  I have finally been getting to know GNU screen.  &lt;a href="http://www.debian-administration.org/articles/34"&gt;Good tutorial here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Using screens keybindings is painful.  However, unlike gnome terminals bindings, they don't collide with the readline namespace.  Alt-B really takes me back a word, instead of popping up some useless menu. (Update: I have since been enlightened by &lt;a href="http://www.eterm.org/"&gt;Eterm&lt;/a&gt;, and now run screen in an eterm window.)&lt;br /&gt;&lt;br /&gt;Screen runs as a daemon and manages consoles - sort of like a text-only window manager.  Obviously, it can't restore running applications after a crash.  However, run over an ssh session, it will happily run whether you are attached or not, so it's a nice way to work remotely.    Evidently, it can also be configured to tee I/O for multiple clients, aiding in collaborative development. &lt;br /&gt;&lt;br /&gt;Screen encourages one to work remotely on a more reliable system; which effectively means it encourages one to have a non-production machine that is internet accessible. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;firefox&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Third, Firefox has SessionSaver.&lt;br /&gt;&lt;br /&gt;http://kb.mozillazine.org/SessionSaver&lt;br /&gt;&lt;br /&gt;Session saver is useful, but not exactly feature complete.  A few things I noticed:&lt;br /&gt;&lt;br /&gt;One, to overwrite a saved session, you have to open the session, configure as desired, right click on the saved session to delete it, and re-save the current browser state with the same name.  &lt;br /&gt;&lt;br /&gt;Two, SessionSaver actually uses a good bit of CPU.  &lt;br /&gt;&lt;br /&gt;Three, SessionSaver explicitly suggests that you save your data via WebDAV and has some utilities to make it easier to do.  &lt;br /&gt;&lt;br /&gt;More encouragement for remote work.  I'm starting to get the message...&lt;br /&gt;&lt;br /&gt;The overall hint is that I should give in and store everything on a remote server.  I could use screen, emacs, and webdav/sessionsaver to store everything there.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;WebDAV&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;I had been experimenting with &lt;a href="http://www.webdav.org/mod_dav/"&gt;WebDAV&lt;/a&gt; long ago, so I re-installed it on a server I have access to.  My primary goal is to get this going with firefox sessionsaver.  However, my secondary, more exciting goal is to get this working with the actively developed and nearly useable &lt;a href="http://dav.sourceforge.net/"&gt;DavFS2 for the linux kernel.&lt;/a&gt;  WebDav installation and usage is tangent to the omnibus remote-coding review of this article, but I *will* handle this in a subsequent article.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;ssh-agent&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;As long as we're on a roll, lets slap on another convenience utility for setting up our sessions that I have ignored for a long time: ssh-agent.  Ssh-agent helps you manage passwordless ssh logins - &lt;a href="http://mah.everybody.org/docs/ssh"&gt;here is a good explanation&lt;/a&gt;.  If you run linux, you should already have this tool, and every other tool I'm covering (with the exception of a quick SessionSaver download for firefox).  This particular tool is something that is a better friend to system administrators than developers, but it *might* save me time in the long run.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;am I really better off?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;So now I can quickly login with ssh-agent, reconnect to my screen session, fire up desktops with emacs and sessions with firefox.  If my laptop dies, very little time lost.  (and thinkpads are cheap so I always have two of them running - very, very little time lost.)  I figure in a week or so I'll actually be used to using them.&lt;br /&gt;&lt;br /&gt;The answer is yes; I am better off.  Philosophically, I have come to the same place I came to years ago when starting my last business.  I recognized that I wanted every business application I touched on a daily basis to be a web-application.  Personal mobility and data integrity are worth spending time and money on.&lt;br /&gt;&lt;br /&gt;So what happens when my server dies?&lt;br /&gt;&lt;br /&gt;Well, my server has RAID 1 and is probably in the most reliable colo my friends can afford.  Unless it gets maliciously cracked, I think it's going to stay up and hold on to my data.&lt;br /&gt;&lt;br /&gt;However, these tools have made me a little more dependent on one particular server and an internet connection. They have also made me a little more security conscious.  &lt;br /&gt;&lt;br /&gt;Hmmm...I guess I don't know if I'm better off after all.  This clearly and definitively proves that you need to read &lt;b&gt;very bad haiku&lt;/b&gt; to put your pain in perspective:&lt;br /&gt;&lt;br /&gt;Switch to remote work&lt;br /&gt;Trading worries for worries&lt;br /&gt;Emotional wash&lt;br /&gt;&lt;br /&gt;Deposit days now?&lt;br /&gt;Why tilt at crazy windmills?&lt;br /&gt;silent dividends... &lt;br /&gt;&lt;br /&gt;Synchronize, Backup&lt;br /&gt;Endless server maintenance&lt;br /&gt;Gag me with - - - a spoon.&lt;br /&gt;&lt;br /&gt;No! not the next blog!&lt;br /&gt;I have a better idea?!?!?.;&lt;br /&gt;&lt;a href="http://www.badhaiku.com"&gt;It hurts, I know-Yiiiiiii!&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;(Update: I should mention Elinks somewhere, which is my ideal reader for primarily text-based web sites.  You'll want to read it's &lt;a href="http://elinks.or.cz/faq.html"&gt;FAQ&lt;/a&gt;. Try it with &lt;a href="http://www.gmail.com"&gt;gmail&lt;/a&gt; vs. any other browser and I think you will agree.  Blazing fast, and no advertisements. It supports JavaScript as well.  Just the ticket for a text-based environment.)&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2821658279248314";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19037533-113443242787317069?l=rbodo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rbodo.blogspot.com/feeds/113443242787317069/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19037533&amp;postID=113443242787317069' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19037533/posts/default/113443242787317069'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19037533/posts/default/113443242787317069'/><link rel='alternate' type='text/html' href='http://rbodo.blogspot.com/2005/12/saving-remote-environment.html' title='Saving the Remote Environment'/><author><name>rsb</name><uri>http://www.blogger.com/profile/00269513857111909714</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='17' src='http://static.flickr.com/12/68816100_e6fcd5c9d2_m.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19037533.post-113323464976566695</id><published>2005-11-28T19:18:00.000-08:00</published><updated>2006-05-10T03:45:32.566-07:00</updated><title type='text'>&lt;rambling&amp;gt Web Ontology and the man.</title><content type='html'>&lt;span style="font-weight:bold;"&gt;RPM idea&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Resale Price Maintenance (RPM) commonly refers to the action of forcing resellers to keep their prices above a certain level.  It's sometimes called Retail Price Maintenance and it's illegal in most places.  It's also so easy to do that only a vegetable could get caught (that's an actual quote from an experienced law enforcement official).  &lt;br /&gt;&lt;br /&gt;Don't be a vegetable.  Stay in the governments "Meat" group by only Suggesting MSRP in writing.&lt;br /&gt;&lt;br /&gt;The easiest way to fix prices among resellers is to tell all your vendors that you really like it when prices for your product are maintained at a certain level, and, nod-nod wink-wink, you are thinking of dropping some vendors that you do not like.  &lt;br /&gt;&lt;br /&gt;Nod and wink too much and someone *might* catch you doing it on tape.  Not to worry, we'll discuss the alternatives.  But first, why would a manufacturer want to do this dastardly deed?&lt;br /&gt;&lt;br /&gt;RPM is a very handy tool for manufacturers.  RPM means consistent profits for vendors.  RPM maintains profits for small vendors and vendors who offer excellent service.  RPM maintains the percieved value of the product, increases the likelihood that vendors will spend time marketing your high-profit products, and generally contributes to a quality reseller network and quality end-user experience.  &lt;br /&gt;&lt;br /&gt;RPM is illegal because it definitely doesn't contribute to the consumer's pocket-book(directly).  Controlling RPM is of questionable value if competition exists at the manufacturer level.  It gets more complicated to evaluate that when you consider intellectual property law and other factors affecting competition.  Anyway, it's an interesting problem to think about, so here we go.&lt;br /&gt;&lt;br /&gt;Let's play the "bad guy".  Here's a way I came up with to maintain prices among your resellers without nod-nod wink-wink agreements.  After going cross-eyed reading research papers I haven't been able to figure out what this method is called, so for now we'll call it the bodo method.  &lt;br /&gt;&lt;br /&gt;Here's the situation: You have a long-distance telephone service network. You want all your resellers to buy at 50 bucks a minute and sell at 100 bucks a minute.  &lt;br /&gt;&lt;br /&gt;Fix your sell prices to everyone, no matter who they are.  In your reseller contract, tell your resellers that you will sell to certified resellers in all cases but one: you reserve the right to sell direct to customers that present a reciept or quote below MSRP. Obviously resellers can't match your 50 dollar price.  RPM is not prosecutable if you are offering the customer a *lower* price than someone else.  You gave absolutely no instructions to anyone to sell at a specific price, or to keep prices high.  Your resellers do not have to be students of game theory to figure this out and everyone will sell at "suggested" MSRP.  &lt;br /&gt;&lt;br /&gt;All RPM schemes work better if you have some power in directing customers.  For instance, let's say you have a website that refers customers to vendors.  Someone is at the top of that list, someone is at the bottom, and some vendors don't make the list.  How do you know who to put at the top?...say no more.  &lt;br /&gt;&lt;br /&gt;Of course, you need to keep track of what your vendors are doing.  It's just good business to give customers a perk if they register a product with you, and to have them show their reciept to do so.  This way you don't *have* to demand reports from your vendors.  Anything to keep em' happy ;)&lt;br /&gt;&lt;br /&gt;Not knowing much about RPM investigations, I can still hazard a guess as to why most economic safeguards are ineffective.  First, if even I, a lowly hu-man on caffine, can think of unmeasurable ways to bypass economic safeguards, then anyone can.  Second, the govt. can't effectively police something like nod and wink RPM, there are just not enough investigators.  The only way to find this stuff and put countermeasures in place is by doing some statistical analysis and investigating the right people.  However, the government doesn't have the data.&lt;br /&gt;&lt;br /&gt;But what if they did?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Web Services Nirvana for you, me, and Uncle VAX&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;What if you purchased your long distance services as web services?  Today, web services are things that are currently trolled for by humans and compared to one another in spreadsheets and code.  However, in science-fiction land, you just tell a bot to do all that stuff - cruise the markets, discover services and run the standardized tests on standardized APIs.  There is no human intervention.  Heck, there are no humans!  We turned most of them into green pellets and made the rest into slaves!  No, today is another bright, beautiful day in the land of robots.  So the end user gets phone service that has audio quality tested between the endpoints we care about, and great prices.  The vendors change all the time, subject to the bot's search results.  Kind of like a super-duper Least Cost Routing with web services.  Same goes for every service the end user ever buys.  Nice.&lt;br /&gt;&lt;br /&gt;But wait, the manufacturer robot can't cheat anymore!  RPM is impossible; not because we are probably cutting out any possible reason for a reseller network (a good point but it has some holes), but because we have standardized!  Web Ontology has made the transactions easy to measure.  &lt;a href-"http://www.eetimes.com/story/OEG20011219S0016"&gt;RFID's are going into cash&lt;/a&gt;, and you have to assume that this is going to put lightbulbs over a few heads.&lt;br /&gt;&lt;br /&gt;The web, after all, is where almost all our commerce is going to occur, so Uncle VAXs nefarious surveillance tactics will be web-based.  &lt;br /&gt;&lt;br /&gt;Cash is officially deprecated.  Who cares about cash?  Privacy advocates care, for one.  Those who accept cash have RFIDs to bridge the gap to the web, and Uncle VAX will soon require that they report such transactions elecrtronically.&lt;br /&gt;&lt;br /&gt;As soon as we step into that brave new world of web services, Uncle VAX is going to recognize the opportunity.  A standard!  He will demand electronic reporting and create some bloated XML specs for it.  (Just when we were crawling out of XML soup, they drag us back in!)  And Uncle VAX will not only be able to track every sale of every service ever made, but he will know exactly how to compare each one to the other, and he will recognize every trend.  The data will not only show up RPM, but most tax evasion and other things he cares about.&lt;br /&gt;&lt;br /&gt;When he's got regulation of services in place, he will regulate products the same way.  Cash is dead.  Transactions will report themselves ontologically via the wireless web server in your implant to...THE MAN.  Yes, THE MAN likes WebOnt.&lt;br /&gt;&lt;br /&gt;I don't see any immediate danger.  The US government does have XML reporting initiatives, but in their current state they are for volountary filing, not real time reporting.  Real-time ontological reporting will require oversight.  What happens when a government no longer asks for information of any kind, but requires access to it at will?  Well, clearly, any competent government with that much power will never be peacefully replaced. &amp;lt;/rambling&amp;gt&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2821658279248314";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19037533-113323464976566695?l=rbodo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rbodo.blogspot.com/feeds/113323464976566695/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19037533&amp;postID=113323464976566695' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19037533/posts/default/113323464976566695'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19037533/posts/default/113323464976566695'/><link rel='alternate' type='text/html' href='http://rbodo.blogspot.com/2005/11/ramblinggt-web-ontology-and-man.html' title='&amp;lt;rambling&amp;gt Web Ontology and the man.'/><author><name>rsb</name><uri>http://www.blogger.com/profile/00269513857111909714</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='17' src='http://static.flickr.com/12/68816100_e6fcd5c9d2_m.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19037533.post-113228712770204155</id><published>2005-11-17T20:05:00.000-08:00</published><updated>2005-12-17T18:01:24.663-08:00</updated><title type='text'>XSLT development with ruby - picking text nodes</title><content type='html'>&lt;span style="font-weight:bold;"&gt;Setting up for XSLT development&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If you plan to use XSLT in your ruby program, read on: &lt;br /&gt;&lt;br /&gt;Let's assume the command line is a more agreeable code viewer than your graphical web browser and write a minimal XLST processor.  Make sure you have an up to date libxml2, libxslt, and ruby-xslt, then write the following into min.rb:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#!/usr/bin/ruby&lt;br /&gt;require 'xml/xslt'&lt;br /&gt;xslt = XML::XSLT.new()&lt;br /&gt;xslt.xsl = IO.read("test.xsl")&lt;br /&gt;xslt.xml = IO.read("test.xml")&lt;br /&gt;out = xslt.serve()&lt;br /&gt;print out&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Setting Emacs up for three windows (one for test.xsl, one for test.xml, and one for output) and typing M-! min.rb (or C-x-ESC-ESC) made for a fine xslt development environment for me.  Emacs has a nice xsl mode, too.  If you look around you'll see that this program is equally trivial in any language.&lt;br /&gt;&lt;br /&gt;The best introductory article I've found on ruby-xslt is &lt;a href="http://www.rubygarden.org/ruby?AlexNetkachev"&gt;Alex Netkachev's&lt;/a&gt;, and the best mailing list I have found for XLST help is xsl-list@lists.mulberrytech.com&lt;br /&gt;&lt;br /&gt;I'm currently reading Inside XSLT by Steven Holzner, and I'm glad I found it.  XSLT is one of those markup languages that takes some real time to master (it's turing complete!).  A major goal of the W3 working group is to make XSLT2 easier to learn and use.  Ah well,  a bit late for me. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Why XSLT?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In most cases I can think of, writing an XSLT transform (stylesheet) is probably easier on the programmer than interfacing to a tree-parser, reading, transforming manually, and writing out the result.  However, you have to weigh that against the fact that it takes a couple days to learn XSLT and implement your first practical, non-trivial transforms.&lt;br /&gt;&lt;br /&gt;Learning XSLT does expose you to lots of XML standards (namespaces XPath XBase, etc.), so if you are behind on learning them, you might just consider an XSLT project a practical means to learning XML standards.  I'm glad I did.&lt;br /&gt;&lt;br /&gt;And the number one reason to learn XSLT is that I now know a good bit of it ;).  For the usual multitude of reasons, the more people who know a language, the more useful code written in it can be for all of us.&lt;br /&gt;&lt;br /&gt;While studying I wrote a well-documented example of using XSLT to pick text out of XML, including some of the tricky parts of the easy parts.  In particular, this little example explores how to deal with text in nested tags. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;The XML file:&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt?xml version="1.0" encoding="ISO-8859-1"?&gt;&lt;br /&gt;&amp;lt!-- test.xml - Source XML for self-explanatory XSLT exercise --&gt;&lt;br /&gt;&amp;lt;TestRoot&gt;&lt;br /&gt;This output is a result of applying the transformation test.xsl to&lt;br /&gt;test.xml.  Default XSLT processing rules will handle anything we don't&lt;br /&gt;specifically handle ourselves in test.xsl (i.e. this paragraph).&lt;br /&gt;&lt;br /&gt;  &amp;lt;SomeGroup&gt;&lt;br /&gt;    &amp;lt;Radio crud="blah"&gt;First, we would like all &amp;lt;foo&gt;"Radio" tags&lt;br /&gt;    contained within tag set "SomeGroup"&amp;lt/foo&gt; to be processed&lt;br /&gt;    identically, copying the text within the tags to the output.&lt;br /&gt;    &amp;lt/Radio&gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;Radio crud="hooha"&gt;The text of any inner &amp;lt;foo&gt;tags will be&lt;br /&gt;    copied as well. As you might expect, text in the .XML file&lt;br /&gt;    that is not specifically handled is&amp;lt/foo&gt; copied to the output by&lt;br /&gt;    default.&amp;lt/Radio&gt; However, "SomeGroup" *is* specifically handled.&lt;br /&gt;&lt;br /&gt;  &amp;lt/SomeGroup&gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;Radio crud="watoozie"&gt;&amp;lt;foo&gt;Second, when we encounter any "Radio"&lt;br /&gt;  tags outside of "SomeGroup" tags - we will print only the content of&lt;br /&gt;  the "foo" tags within those "Radio" tags .&amp;lt/foo&gt;So don't print&lt;br /&gt;  this.&amp;lt/Radio&gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;YetAnotherTag blah="and don't print this," yadayada="Third, we will&lt;br /&gt;  print this attribute. "&gt;...but not this text.&amp;lt/YetAnotherTag&gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;YetAnotherTag who="no printola."&gt;Fourth, &amp;lt;foo&gt;don't print this&lt;br /&gt;  inner foo tag,&amp;lt/foo&gt; print this text followed by the tag&lt;br /&gt;  name:&amp;lt/YetAnotherTag&gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;YetAnotherTag&gt;Auugg! &amp;lt;foo&gt;And fifth, print only this foo tag&lt;br /&gt;  text.&amp;lt/foo&gt; Muhuhuhahaha!&amp;lt/YetAnotherTag&gt;&lt;br /&gt;  &amp;lt;ForgottenTag&gt;Unfortunately, we will forget to handle&lt;br /&gt;  this...&amp;lt;YetAnotherTag&gt; But fortunately there is a catchall handler&lt;br /&gt;  for YetAnotherTags in our xsl file, so the inside bit won't print.&lt;br /&gt;  &amp;lt/YetAnotherTag&gt;.&amp;lt/ForgottenTag&gt;&lt;br /&gt;&lt;br /&gt;  Bye! &amp;lt!-- Some literal text to test --&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt/TestRoot&amp;gt&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;The XSL file:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt?xml version="1.0" encoding="utf-8"?&amp;gt&lt;br /&gt;&amp;lt!-- test.xsl - Transform for self-explanatory XSLT exercise --&amp;gt&lt;br /&gt;&amp;lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&lt;br /&gt;                version="1.0"&amp;gt&lt;br /&gt;&lt;br /&gt;  &amp;lt!-- Handle the root tag --&amp;gt&lt;br /&gt;  &amp;lt;xsl:template match="/"&amp;gt     &amp;lt!-- Plain text in an XSLT sheet gets sent to the output --&amp;gt&lt;br /&gt;    Hello!  I'm covering all the basic XSLT I needed to get most&lt;br /&gt;    simple things done.  Note that newlines after tags in the .xsl&lt;br /&gt;    file count. Whitespace processing is left for another&lt;br /&gt;    exercise.&lt;br /&gt;    &amp;lt;xsl:apply-templates/&amp;gt &amp;lt!-- Apply all of the templates below to continue processing this section --&amp;gt&lt;br /&gt;  &amp;lt/xsl:template&amp;gt&lt;br /&gt;&lt;br /&gt;  &amp;lt!-- Handle "SomeGroup" tags --&amp;gt&lt;br /&gt;  &amp;lt;xsl:template match="SomeGroup"&amp;gt&lt;br /&gt;    &amp;lt!-- Handle Radio tags that lie within SomeGroup tags --&amp;gt&lt;br /&gt;    &amp;lt;xsl:for-each select="Radio"&amp;gt&lt;br /&gt;      &amp;lt;xsl:value-of select="."&amp;gt&amp;lt/xsl:value-of&amp;gt  &amp;lt!-- loop through the Radio tags and print everything they contain\ --&amp;gt&lt;br /&gt;    &amp;lt/xsl:for-each&amp;gt&lt;br /&gt;  &amp;lt/xsl:template&amp;gt&lt;br /&gt;&lt;br /&gt;  &amp;lt;!-- Handle the YetAnotherTags --&amp;gt&lt;br /&gt;  &amp;lt;xsl:template match="YetAnotherTag[1]"&amp;gt  &amp;lt!--match only the first YetAnotherTag occurence --&amp;gt&lt;br /&gt;    &amp;lt!-- print the yadayada attribute --&amp;gt&lt;br /&gt;    &amp;lt;xsl:value-of select="@yadayada"/&amp;gt&lt;br /&gt;  &amp;lt/xsl:template&amp;gt&lt;br /&gt;  &amp;lt;xsl:template match="YetAnotherTag[2]"&amp;gt  &amp;lt!-- print only the text elements in the parent --&amp;gt&lt;br /&gt;    &amp;lt!-- value-of only gets the first match, and we want them all --&amp;gt&lt;br /&gt;    &amp;lt;xsl:for-each select="text()"&amp;gt&lt;br /&gt;      &amp;lt;xsl:value-of select="."/&amp;gt&lt;br /&gt;    &amp;lt/xsl:for-each&amp;gt&lt;br /&gt;    &amp;lt;xsl:value-of select="name()"/&amp;gt&lt;br /&gt;  &amp;lt/xsl:template&amp;gt&lt;br /&gt;  &amp;lt;xsl:template match="YetAnotherTag"&amp;gt  &amp;lt!-- print only the text elements in the child --&amp;gt&lt;br /&gt;    &amp;lt;xsl:value-of select="*"&amp;gt&amp;lt/xsl:value-of&amp;gt&lt;br /&gt;  &amp;lt/xsl:template&amp;gt&lt;br /&gt;&lt;br /&gt;  &amp;lt!-- Handle any "Radio" tags that are unhadled thus far --&amp;gt&lt;br /&gt;  &amp;lt;xsl:template match="Radio"&amp;gt&lt;br /&gt;    &amp;lt;xsl:value-of select="foo"&amp;gt&amp;lt/xsl:value-of&amp;gt&lt;br /&gt;  &amp;lt/xsl:template&amp;gt&lt;br /&gt;&lt;br /&gt;You can also pick text nodes that start with specific tex with the "starts-with" parameter to the text() function.&lt;br /&gt;&lt;br /&gt;  &amp;lt!-- That's it.  If there is anything I didn't handle, I might not like the results --&amp;gt &lt;br /&gt;&amp;lt/xsl:stylesheet&amp;gt&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;The Output:&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;?xml version="1.0"?&gt;&lt;br /&gt;&lt;br /&gt;    Hello!  I'm covering all the basic XSLT I needed to get most&lt;br /&gt;    simple things done.  Note that newlines after tags in the .xsl&lt;br /&gt;    file count. Whitespace processing is left for another&lt;br /&gt;    exercise.&lt;br /&gt;&lt;br /&gt;This output is a result of applying the transformation test.xsl to&lt;br /&gt;test.xml.  Default XSLT processing rules will handle anything we don't&lt;br /&gt;specifically handle ourselves in test.xsl (i.e. this paragraph).&lt;br /&gt;&lt;br /&gt;  First, we would like all "Radio" tags&lt;br /&gt;    contained within tag set "SomeGroup" to be processed&lt;br /&gt;    identically, copying the text within the tags to the output.&lt;br /&gt;    The text of any inner tags will be&lt;br /&gt;    copied as well. As you might expect, text in the .XML file&lt;br /&gt;    that is not specifically handled is copied to the output by&lt;br /&gt;    default.&lt;br /&gt;&lt;br /&gt;  Second, when we encounter any "Radio"&lt;br /&gt;  tags outside of "SomeGroup" tags - we will print only the content of&lt;br /&gt;  the "foo" tags within those "Radio" tags .&lt;br /&gt;&lt;br /&gt;  Third, we will   print this attribute.&lt;br /&gt;&lt;br /&gt;  Fourth,  print this text followed by the tag&lt;br /&gt;  name:YetAnotherTag&lt;br /&gt;&lt;br /&gt;  And fifth, print only this foo tag&lt;br /&gt;  text.&lt;br /&gt;&lt;br /&gt;  Unfortunately, we forgot to handle&lt;br /&gt;  this....&lt;br /&gt;&lt;br /&gt;  Bye!&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2821658279248314";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19037533-113228712770204155?l=rbodo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://rbodo.blogspot.com/feeds/113228712770204155/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19037533&amp;postID=113228712770204155' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19037533/posts/default/113228712770204155'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19037533/posts/default/113228712770204155'/><link rel='alternate' type='text/html' href='http://rbodo.blogspot.com/2005/11/xslt-development-with-ruby-picking.html' title='XSLT development with ruby - picking text nodes'/><author><name>rsb</name><uri>http://www.blogger.com/profile/00269513857111909714</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='17' src='http://static.flickr.com/12/68816100_e6fcd5c9d2_m.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19037533.post-113217344401294925</id><published>2005-11-16T11:49:00.000-08:00</published><updated>2005-11-18T17:03:31.186-08:00</updated><title type='text'>A humble personal blog</title><content type='html'>Friends, here I'll log all the techie commentary/ideas that have no righful place anywhere else.    This blog should keep a lot of that crap out of your chat windows, mailing lists, and newsgroups.&lt;br /&gt;&lt;br /&gt;WARNING - The average visitor will find this blog about as interesting as a Klingon would find proof-reading the Geneva convention. (As an occasional Klingon diplomat at sci-fi conventions, I can attest that that's &lt;b&gt;ghay'cha' &lt;/b&gt;&lt;b&gt; petaQ&lt;/b&gt;&lt;b&gt; &lt;/b&gt;.)  Seriously, for anyone who has been misdirected here by chance, you are welcome, but I won't be posting anything significant.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;MVC Frameworks&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I intend to write a web app some day soon. I'm continuing my retraining for that purpose, and I'm beginning to discover exactly how much of a newbie I really am at the coding game.&lt;br /&gt;&lt;br /&gt;Unfortunately one can build just about any telephony server with minimal scripting (only partly my fault). Years of minimal scripting, it turns out, is devastating to real coding proficiency. Still, things are familiar enough that I need only survive the usual newbie ridicule on mailing lists/irc for a month or two at most.&lt;br /&gt;&lt;br /&gt;I've begun evaluating three MVC frameworks: &lt;a href="http://maypole.perl.org"&gt;Maypole&lt;/a&gt;, &lt;a href="http://www.rubyonrails.com"&gt;Rails&lt;/a&gt;, and &lt;a href="http://www.turbogears.org"&gt;TurboGears&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Maypole is super-basic, and would work for me if I had not rediscovered my dislike for Perl. So, I gave it up shortly after getting it running and documenting it a bit. If you like PERL and want a simple MVC framework, Maypole is a good bet.&lt;br /&gt;&lt;br /&gt;Rails required a LOT of ramping up because Ruby is not quite like PERL or any other language that I am very familiar with. So I've got both the Programming Ruby and the Dev with Rails books and I'm chugging through them. The pragmatic books are well written.  After learning more about XSLT, I'm a little suprised that this and other frameworks would rather employ templates that are half code(or a non-standard transformation language) and half HTML rather than seperating out code and XSLT.&lt;br /&gt;&lt;br /&gt;I'm also experimenting with TurboGears on the side, but I can't take on both of these at the same time. So far it looks great. The turbogears.org site is an example of the awesome web presentation that even the youngest Open Source projects have these days. Commercial competitors would be jealous.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;XSLT&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I've just discovered libxslt and started writing some transformation scripts. If anyone has done a lot with &lt;a href="http://www.w3.org/TR/xslt"&gt;XSL transformations&lt;/a&gt; I would love to get a pointer or two.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;BAVoIP.org&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I'm also starting a VoIP Technical Interest group in the bay area with a couple other people - &lt;a href="http://www.bavoip.org"&gt;BAVoIP.org&lt;/a&gt;. We will probably finish that website up and have our first meeting before the end of the month.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Frittering&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I'm still super interested in the same types of analysis I have always been interested in, so I'll gladly fritter time away with you discussing any of it.&lt;br /&gt;&lt;br /&gt;And no, my human side does not consider the Geneva Convention to be weak and worthless. In fact, it's one of the few glimmers of hope the hu-mans have shown us - qapla!&lt;div class="blogger-post-footer"&gt;&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-2821658279248314";
google_ad_width = 728;
google_ad_height = 90;
google_ad_format = "728x90_as";
google_ad_type = "text_image";
google_ad_channel ="";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19037533-113217344401294925?l=rbodo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19037533/posts/default/113217344401294925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19037533/posts/default/113217344401294925'/><link rel='alternate' type='text/html' href='http://rbodo.blogspot.com/2005/11/humble-personal-blog.html' title='A humble personal blog'/><author><name>rsb</name><uri>http://www.blogger.com/profile/00269513857111909714</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='17' src='http://static.flickr.com/12/68816100_e6fcd5c9d2_m.jpg'/></author></entry></feed>
