Congratulations!

[Valid Atom 1.0] This is a valid Atom 1.0 feed.

Recommendations

This feed is valid, but interoperability with the widest range of feed readers could be improved by implementing the following recommendations.

Source: http://gsoc-sugarbot.blogspot.com/feeds/posts/default

  1. <?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:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8699851592369026373</id><updated>2024-03-05T02:05:52.603-06:00</updated><category term="gtk"/><category term="buildbot"/><category term="calculator"/><category term="drive-genius"/><category term="fail"/><category term="finally"/><category term="googlefu"/><category term="leopard"/><category term="xhost"/><title type='text'>sugarbot</title><subtitle type='html'>sugarbot&#39;s aim is to provide testing and automation facilities for the OLPC Project&#39;s Sugar GUI. The project must first identify and evaluate possible implementation options, and then implement the best choice. Although it has a Sugar focus, sugarbot should be easily extensible to other Python-based GUI&#39;s.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://gsoc-sugarbot.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8699851592369026373/posts/default'/><link rel='alternate' type='text/html' href='http://gsoc-sugarbot.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/8699851592369026373/posts/default?start-index=26&amp;max-results=25'/><author><name>Zach</name><uri>http://www.blogger.com/profile/03008329063902532712</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp2.blogger.com/_A95zAiNZLCo/SCfLLmt7EzI/AAAAAAAAAGw/wmGh6aY_T6k/S220/Photo+23.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>91</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8699851592369026373.post-3026854806273478209</id><published>2008-12-16T21:01:00.002-06:00</published><updated>2008-12-16T21:04:15.731-06:00</updated><title type='text'>Un-kludging Code</title><content type='html'>&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt; &lt;/span&gt;With my new-found free time, I&#39;m going to be going back through Sugarbot with some &quot;fresh&quot; eyes, and hopefully un-kludging some of the code.  One top of that, here is the &quot;short list&quot; of To-Dos:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1.) Test execution inside sugar-jhbuild as a stand-alone activity that emulates other activities.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;2.) Enable synchronous execution and GUI updating.  The current model waits for the GUI to initialize and then performs all of the manipulation while the actual drawn GUI is frozen.  All of the behind-the-scenes stuff still works, but you can&#39;t see progress as it&#39;s happening.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;3.) Implement full-auto mode with sugar-jhbuild, so that it can be integrated into the build process.&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gsoc-sugarbot.blogspot.com/feeds/3026854806273478209/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8699851592369026373&amp;postID=3026854806273478209' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8699851592369026373/posts/default/3026854806273478209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8699851592369026373/posts/default/3026854806273478209'/><link rel='alternate' type='text/html' href='http://gsoc-sugarbot.blogspot.com/2008/12/un-kludging-code.html' title='Un-kludging Code'/><author><name>Zach</name><uri>http://www.blogger.com/profile/03008329063902532712</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp2.blogger.com/_A95zAiNZLCo/SCfLLmt7EzI/AAAAAAAAAGw/wmGh6aY_T6k/S220/Photo+23.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8699851592369026373.post-3254771523345655183</id><published>2008-09-01T10:17:00.003-05:00</published><updated>2008-09-01T10:20:11.084-05:00</updated><title type='text'>Screencast, 0.1 Release</title><content type='html'>I&#39;ve managed to finally get the screencast and 0.1 release published.  You can find it in the usual place, on the &lt;a href=&quot;http://code.google.com/p/sugarbot/&quot;&gt;sugarbot Google Code site&lt;/a&gt;.  &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This screencast showcases a lot of the automation of sugar/sugarbot, with a small demonstration of how Python is used inside of sugarbot.  There is also emphasis on catching errors when they occur, and how those errors are reported/displayed.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The example scripts provide a better demonstration of how the scripting works than the video could have, so I left most of the scripting details out (it is just Python anyways, so it&#39;s not very exciting).&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gsoc-sugarbot.blogspot.com/feeds/3254771523345655183/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8699851592369026373&amp;postID=3254771523345655183' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8699851592369026373/posts/default/3254771523345655183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8699851592369026373/posts/default/3254771523345655183'/><link rel='alternate' type='text/html' href='http://gsoc-sugarbot.blogspot.com/2008/09/screencast-01-release.html' title='Screencast, 0.1 Release'/><author><name>Zach</name><uri>http://www.blogger.com/profile/03008329063902532712</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp2.blogger.com/_A95zAiNZLCo/SCfLLmt7EzI/AAAAAAAAAGw/wmGh6aY_T6k/S220/Photo+23.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8699851592369026373.post-2275647777006020763</id><published>2008-08-18T00:11:00.003-05:00</published><updated>2008-08-18T00:12:09.299-05:00</updated><title type='text'>Finalizing...</title><content type='html'>I am trying to get the final screencast properly edited and dubbed, and will be putting the 0.01 package online soon.  It has been quite the day for me, as Murphy&#39;s Law would have it, everything decided to go more then slightly haywire when I decided to record video :-\</content><link rel='replies' type='application/atom+xml' href='http://gsoc-sugarbot.blogspot.com/feeds/2275647777006020763/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8699851592369026373&amp;postID=2275647777006020763' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8699851592369026373/posts/default/2275647777006020763'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8699851592369026373/posts/default/2275647777006020763'/><link rel='alternate' type='text/html' href='http://gsoc-sugarbot.blogspot.com/2008/08/finalizing.html' title='Finalizing...'/><author><name>Zach</name><uri>http://www.blogger.com/profile/03008329063902532712</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp2.blogger.com/_A95zAiNZLCo/SCfLLmt7EzI/AAAAAAAAAGw/wmGh6aY_T6k/S220/Photo+23.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8699851592369026373.post-5973722270447923660</id><published>2008-08-13T11:16:00.003-05:00</published><updated>2008-08-13T11:23:25.686-05:00</updated><title type='text'>Combo boxes working, wrapping up</title><content type='html'>Got the combo-boxes working the way I want them to.  I realized that convenience-handling for each and every Widget type is not something that is [1] perhaps not entirely necessary and [2] certainly not entirely necessary &lt;i&gt;right this instant&lt;/i&gt;.  With that in mind, I&#39;ll be wrapping up/documenting the code for an initial 0.1 release on Friday.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I&#39;ll be working on another screencast that will demonstrate integration with buildbot, automated launching of sugarbot and Sugar, as well as the new Python scripting abilities.  Overall, I&#39;m very pleased with where I am right now.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It&#39;s been a lot of fun developing for GSoC/the Python Org/One Laptop Per Child, and I&#39;m sad to see the summer come to an end (less free time to work on it) in the next few weeks.  Hopefully I&#39;ll be able to keep my motivation up to keep development going.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Once I have the GSoC-final screencast up, I plan on publishing it to all of the mailing lists.  Thanks to Grig and Titus for providing me with guidance and advice throughout the summer, you guys are really great.  Also, thanks to those of you on the mailing lists and IRC channels that also provided tips, insight, and advice that made those obscure API problems so much simpler.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Zach&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gsoc-sugarbot.blogspot.com/feeds/5973722270447923660/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8699851592369026373&amp;postID=5973722270447923660' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8699851592369026373/posts/default/5973722270447923660'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8699851592369026373/posts/default/5973722270447923660'/><link rel='alternate' type='text/html' href='http://gsoc-sugarbot.blogspot.com/2008/08/combo-boxes-working-wrapping-up.html' title='Combo boxes working, wrapping up'/><author><name>Zach</name><uri>http://www.blogger.com/profile/03008329063902532712</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp2.blogger.com/_A95zAiNZLCo/SCfLLmt7EzI/AAAAAAAAAGw/wmGh6aY_T6k/S220/Photo+23.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8699851592369026373.post-7189488546712550178</id><published>2008-08-11T00:52:00.000-05:00</published><updated>2008-08-11T00:53:31.577-05:00</updated><title type='text'>ComboBox&#39;es</title><content type='html'>Working on select capability of ComboBox and similar widgets tonight.  It isn&#39;t a problem in itself, but trying to keep the code as flexible and clean as possible is making it into a problem.</content><link rel='replies' type='application/atom+xml' href='http://gsoc-sugarbot.blogspot.com/feeds/7189488546712550178/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8699851592369026373&amp;postID=7189488546712550178' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8699851592369026373/posts/default/7189488546712550178'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8699851592369026373/posts/default/7189488546712550178'/><link rel='alternate' type='text/html' href='http://gsoc-sugarbot.blogspot.com/2008/08/comboboxes.html' title='ComboBox&#39;es'/><author><name>Zach</name><uri>http://www.blogger.com/profile/03008329063902532712</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp2.blogger.com/_A95zAiNZLCo/SCfLLmt7EzI/AAAAAAAAAGw/wmGh6aY_T6k/S220/Photo+23.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8699851592369026373.post-5032698197920341457</id><published>2008-08-05T17:55:00.007-05:00</published><updated>2008-08-05T18:11:38.526-05:00</updated><title type='text'>Cleaning up logging functionality</title><content type='html'>&lt;p&gt;Cleaning up a bit of the logging functionality on the RPC-server side of stuff.  Most of it has to do with better correlation of individual clients with given status messages.  A small side-effect of this is that pinpointing errors should be easier.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;Old Output:&lt;/b&gt;&lt;/p&gt;&lt;pre&gt;sbRpcServer : INFO     Listening on port 54321&lt;br /&gt;sbRpcServer : INFO     Kill: True Restart: True&lt;br /&gt;sbRpcServer : INFO     Added script sbpython_script.py [Activity Calculate]&lt;br /&gt;sbRpcServer : INFO     Serving script sbpython_script.py to client Zach&lt;br /&gt;sbRpcServer : ERROR    sugarbot client disconnected prematurely.&lt;br /&gt;sbRpcServer : ERROR    Reason: Execution failed: Traceback (most recent call last):&lt;br /&gt;File &quot;/home/zach/Activities/sugarbot.activity/sbexecutionengine.py&quot;, line 92, in executePy&lt;br /&gt; sugarbot_main(self.widgets)&lt;br /&gt;File &quot;[string]&quot;, line 7, in sugarbot_main&lt;br /&gt;AssertionError&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;New Output:&lt;/b&gt;&lt;/p&gt;&lt;pre&gt;sbRpcServer : INFO     Listening on port 54321&lt;br /&gt;sbRpcServer : INFO     Kill: True Restart: True&lt;br /&gt;sbRpcServer : INFO     Added script sbpython_script.py [Activity Calculate]&lt;br /&gt;Zach        : INFO     Starting sbpython_script.py&lt;br /&gt;Zach        : INFO     Success (sbpython_script.py)&lt;br /&gt;Zach        : INFO     Disconnected [1\1\1]&lt;br /&gt;Zach        : INFO     Starting script sbpython_script.py&lt;br /&gt;Zach        : ERROR    Execution failed:&lt;br /&gt;Traceback (most recent call last):&lt;br /&gt;File &quot;/home/zach/Activities/sugarbot.activity/sbexecutionengine.py&quot;, line 92, in executePy&lt;br /&gt; sugarbot_main(self.widgets)&lt;br /&gt;File &quot;Sugarbot Script: &#39;sbpython_script.py&#39;&quot;, line 7, in sugarbot_main&lt;br /&gt;AssertionError&lt;br /&gt;&lt;br /&gt;Zach        : INFO     Disconnected [0\1\1]&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://gsoc-sugarbot.blogspot.com/feeds/5032698197920341457/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8699851592369026373&amp;postID=5032698197920341457' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8699851592369026373/posts/default/5032698197920341457'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8699851592369026373/posts/default/5032698197920341457'/><link rel='alternate' type='text/html' href='http://gsoc-sugarbot.blogspot.com/2008/08/cleaning-up-logging-functionality.html' title='Cleaning up logging functionality'/><author><name>Zach</name><uri>http://www.blogger.com/profile/03008329063902532712</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp2.blogger.com/_A95zAiNZLCo/SCfLLmt7EzI/AAAAAAAAAGw/wmGh6aY_T6k/S220/Photo+23.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8699851592369026373.post-5602201384350424435</id><published>2008-08-05T14:32:00.001-05:00</published><updated>2008-08-05T14:34:10.932-05:00</updated><title type='text'>Hurricane</title><content type='html'>Supposedly there&#39;s a decent-sized tropical storm/hurricane coming through right now, but it just looks like a bunch of regular old rain.  Anyways, campus is shut down today, so I get some time to work on Sugarbot.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Next Tuesday I fly back out to the [Government Agency] to take my polygraph tests again.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gsoc-sugarbot.blogspot.com/feeds/5602201384350424435/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8699851592369026373&amp;postID=5602201384350424435' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8699851592369026373/posts/default/5602201384350424435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8699851592369026373/posts/default/5602201384350424435'/><link rel='alternate' type='text/html' href='http://gsoc-sugarbot.blogspot.com/2008/08/hurricane.html' title='Hurricane'/><author><name>Zach</name><uri>http://www.blogger.com/profile/03008329063902532712</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp2.blogger.com/_A95zAiNZLCo/SCfLLmt7EzI/AAAAAAAAAGw/wmGh6aY_T6k/S220/Photo+23.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8699851592369026373.post-8662333955279182944</id><published>2008-08-04T00:01:00.002-05:00</published><updated>2008-08-04T20:05:36.383-05:00</updated><title type='text'></title><content type='html'>With the half-hour runs, everything is still running fine with Buildbot.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Update&lt;/b&gt;: Looks like there were about 30 half-hour runs of Buildbot that went by just fine.  I don&#39;t know why it was crashing at the 6-hour mark and thereafter.  Must have been something weird.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gsoc-sugarbot.blogspot.com/feeds/8662333955279182944/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8699851592369026373&amp;postID=8662333955279182944' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8699851592369026373/posts/default/8662333955279182944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8699851592369026373/posts/default/8662333955279182944'/><link rel='alternate' type='text/html' href='http://gsoc-sugarbot.blogspot.com/2008/08/with-half-hour-runs-everything-is-still.html' title=''/><author><name>Zach</name><uri>http://www.blogger.com/profile/03008329063902532712</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp2.blogger.com/_A95zAiNZLCo/SCfLLmt7EzI/AAAAAAAAAGw/wmGh6aY_T6k/S220/Photo+23.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8699851592369026373.post-2933756744232678562</id><published>2008-08-03T21:20:00.003-05:00</published><updated>2008-08-03T21:23:28.622-05:00</updated><title type='text'>DBUS problem time-related?</title><content type='html'>I changed the buildbot master.cfg to have the slave run every minute... so far I&#39;ve got 10 runs in a row without issues.  However, the last time buildbot was started (using the same SVN revision) it ran correctly the first time, then DBUS went crazy when it ran again 6 hours later.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I&#39;ll change it to 30 minutes and see how it fares overnight.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Hmm.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gsoc-sugarbot.blogspot.com/feeds/2933756744232678562/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8699851592369026373&amp;postID=2933756744232678562' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8699851592369026373/posts/default/2933756744232678562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8699851592369026373/posts/default/2933756744232678562'/><link rel='alternate' type='text/html' href='http://gsoc-sugarbot.blogspot.com/2008/08/dbus-problem-time-related.html' title='DBUS problem time-related?'/><author><name>Zach</name><uri>http://www.blogger.com/profile/03008329063902532712</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp2.blogger.com/_A95zAiNZLCo/SCfLLmt7EzI/AAAAAAAAAGw/wmGh6aY_T6k/S220/Photo+23.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8699851592369026373.post-9111136341965434857</id><published>2008-08-03T20:53:00.005-05:00</published><updated>2008-08-03T21:13:17.448-05:00</updated><title type='text'>DBUS Flaking Out</title><content type='html'>It looks like DBUS starts flaking out after a few runs inside of buildbot.  No idea what&#39;s causing the issue, as the trace doesn&#39;t involve my code at all.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;ERROR:dbus.proxies:Introspect error on org.laptop.ActivityRegistry:/org/laptop/ActivityRegistry:&lt;br /&gt;dbus.exceptions.DBusException: org.freedesktop.DBus.Error.NoReply: Did not receive a reply. Possible causes include:&lt;br /&gt;the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout&lt;br /&gt;expired, or the network connection was broken.&lt;br /&gt;DEBUG:dbus.proxies:Executing introspect queue due to error&lt;br /&gt;Traceback (most recent call last):&lt;br /&gt; File &quot;/usr/share/sugar/shell/view/Shell.py&quot;, line 98, in _start_journal_idle&lt;br /&gt;   if registry.get_activity(&#39;org.laptop.JournalActivity&#39;):&lt;br /&gt; File &quot;/usr/lib/python2.5/site-packages/sugar/activity/registry.py&quot;, line 114, in get_activity&lt;br /&gt;   info_dict = self._registry.GetActivity(service_name)&lt;br /&gt; File &quot;/var/lib/python-support/python2.5/dbus/proxies.py&quot;, line 68, in __call__&lt;br /&gt;   return self._proxy_method(*args, **keywords)&lt;br /&gt; File &quot;/var/lib/python-support/python2.5/dbus/proxies.py&quot;, line 140, in __call__&lt;br /&gt;   **keywords)&lt;br /&gt; File &quot;/var/lib/python-support/python2.5/dbus/connection.py&quot;, line 607, in call_blocking&lt;br /&gt;   message, timeout)&lt;br /&gt;dbus.exceptions.DBusException: org.freedesktop.DBus.Error.NoReply: Did not receive a reply. Possible causes include:&lt;br /&gt;the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout&lt;br /&gt;expired, or the network connection was broken.&lt;br /&gt;ERROR:dbus.proxies:Introspect error on org.laptop.Clipboard:/org/laptop/Clipboard: dbus.exceptions.DBusException:&lt;br /&gt;org.freedesktop.DBus.Error.NoReply: Did not receive a reply. Possible causes include: the remote application did not&lt;br /&gt;send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network&lt;br /&gt;connection was broken.&lt;br /&gt;DEBUG:dbus.proxies:Executing introspect queue due to error&lt;br /&gt;ERROR:root:Error getting activities async: org.freedesktop.DBus.Error.NoReply: Did not receive a reply. Possible&lt;br /&gt;causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the&lt;br /&gt;reply timeout expired, or the network connection was broken.&lt;br /&gt;&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://gsoc-sugarbot.blogspot.com/feeds/9111136341965434857/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8699851592369026373&amp;postID=9111136341965434857' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8699851592369026373/posts/default/9111136341965434857'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8699851592369026373/posts/default/9111136341965434857'/><link rel='alternate' type='text/html' href='http://gsoc-sugarbot.blogspot.com/2008/08/dbus-flaking-out.html' title='DBUS Flaking Out'/><author><name>Zach</name><uri>http://www.blogger.com/profile/03008329063902532712</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp2.blogger.com/_A95zAiNZLCo/SCfLLmt7EzI/AAAAAAAAAGw/wmGh6aY_T6k/S220/Photo+23.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8699851592369026373.post-7569869190037249006</id><published>2008-08-02T17:25:00.004-05:00</published><updated>2008-08-02T18:08:58.764-05:00</updated><title type='text'>Latest Changes</title><content type='html'>When Buildbot is allowed to run for an extended period of time (read: more than a few runs), I get a pretty cryptic error message (if you have the slightest clue what this means, please do tell):&lt;div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot; ;font-family:Times;&quot;&gt;&lt;pre style=&quot;word-wrap: break-word; white-space: pre-wrap; &quot;&gt;/bin/sh: /usr/share/sugar/shell/sugarbot-launcher.py: Host is down&lt;/pre&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Buildbot is now available here: &lt;a href=&quot;http://zachriggle.is-a-geek.org:8010/&quot; style=&quot;text-decoration: none;&quot;&gt;http://zachriggle.is-a-geek.org:8010/&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gsoc-sugarbot.blogspot.com/feeds/7569869190037249006/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8699851592369026373&amp;postID=7569869190037249006' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8699851592369026373/posts/default/7569869190037249006'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8699851592369026373/posts/default/7569869190037249006'/><link rel='alternate' type='text/html' href='http://gsoc-sugarbot.blogspot.com/2008/08/latest-changes.html' title='Latest Changes'/><author><name>Zach</name><uri>http://www.blogger.com/profile/03008329063902532712</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp2.blogger.com/_A95zAiNZLCo/SCfLLmt7EzI/AAAAAAAAAGw/wmGh6aY_T6k/S220/Photo+23.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8699851592369026373.post-7812733023363892830</id><published>2008-07-31T23:35:00.002-05:00</published><updated>2008-07-31T23:39:36.661-05:00</updated><title type='text'>Crunchtime</title><content type='html'>The profs are really coming down hard on us at UH, as we are soon to enter the last week.  Today I was writing code/debugging for UH for about 14 hours... didn&#39;t have time for Sugarbot.  Yesterday was slightly more productive, but nothing pronounced.  I don&#39;t expect that this weekend/next week will allow me to put in the number of hours I&#39;d like to, but I&#39;ll be able to make up for that in the last week or so (I fly home on the 9th).  &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Even though there is a &quot;pencils down&quot; the week after that, I don&#39;t really intend to stop developing for Sugarbot anytime in the immediate future.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;(Go figure, Google&#39;s whole plan of getting people involved in the FOSS community worked.)&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gsoc-sugarbot.blogspot.com/feeds/7812733023363892830/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8699851592369026373&amp;postID=7812733023363892830' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8699851592369026373/posts/default/7812733023363892830'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8699851592369026373/posts/default/7812733023363892830'/><link rel='alternate' type='text/html' href='http://gsoc-sugarbot.blogspot.com/2008/07/crunchtime.html' title='Crunchtime'/><author><name>Zach</name><uri>http://www.blogger.com/profile/03008329063902532712</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp2.blogger.com/_A95zAiNZLCo/SCfLLmt7EzI/AAAAAAAAAGw/wmGh6aY_T6k/S220/Photo+23.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8699851592369026373.post-3419000417325172125</id><published>2008-07-28T22:44:00.002-05:00</published><updated>2008-07-28T22:46:17.777-05:00</updated><title type='text'>Trying to keep it pretty...</title><content type='html'>I&#39;m working on the sbpython.py code, trying to implement more functionality (manipulating the title explicitly, the selected entries in a ComboBox, focus, delete/backspace).  Keeping the code coherent is kind of a pain, since there isn&#39;t an obvious way to keep some of the code from being duplicated.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Hmm.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gsoc-sugarbot.blogspot.com/feeds/3419000417325172125/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8699851592369026373&amp;postID=3419000417325172125' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8699851592369026373/posts/default/3419000417325172125'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8699851592369026373/posts/default/3419000417325172125'/><link rel='alternate' type='text/html' href='http://gsoc-sugarbot.blogspot.com/2008/07/trying-to-keep-it-pretty.html' title='Trying to keep it pretty...'/><author><name>Zach</name><uri>http://www.blogger.com/profile/03008329063902532712</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp2.blogger.com/_A95zAiNZLCo/SCfLLmt7EzI/AAAAAAAAAGw/wmGh6aY_T6k/S220/Photo+23.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8699851592369026373.post-5838959356574511666</id><published>2008-07-27T20:38:00.004-05:00</published><updated>2008-12-10T14:26:58.156-06:00</updated><title type='text'>It&#39;s Alive!!!</title><content type='html'>&lt;span class=&quot;Apple-style-span&quot;  style=&quot;color:#0000EE;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;text-decoration: underline;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;Sugarbot/buildbot integration is complete.  I only have one port opened on the box that it&#39;s running on, but you can access it here: &lt;a href=&quot;http://129.7.243.13:22&quot;&gt;http://129.7.243.13:22&lt;/a&gt;.  To access that with Firefox, you need to &lt;a href=&quot;http://kb.mozillazine.org/Network.security.ports.banned.override&quot;&gt;change a setting&lt;/a&gt;.  I&#39;m working on getting a different port opened.&lt;div&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh28aRyIqDOWI8vEuLw85httpmlxY3FqDVrekiPElLRmgd_HdUa2Ytd_wbHkV84n2wwqiXuXDRbQk83sU1RpO8fCG7hGPJgQPG6yIpJCgPGhCc1QZCd1X2WPaUGMO6Plg8d3y0OHbA-yi_H/s1600-h/Picture+2.png&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh28aRyIqDOWI8vEuLw85httpmlxY3FqDVrekiPElLRmgd_HdUa2Ytd_wbHkV84n2wwqiXuXDRbQk83sU1RpO8fCG7hGPJgQPG6yIpJCgPGhCc1QZCd1X2WPaUGMO6Plg8d3y0OHbA-yi_H/s200/Picture+2.png&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5227875159682400482&quot; style=&quot;cursor: pointer; &quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gsoc-sugarbot.blogspot.com/feeds/5838959356574511666/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8699851592369026373&amp;postID=5838959356574511666' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8699851592369026373/posts/default/5838959356574511666'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8699851592369026373/posts/default/5838959356574511666'/><link rel='alternate' type='text/html' href='http://gsoc-sugarbot.blogspot.com/2008/07/its-alive.html' title='It&#39;s Alive!!!'/><author><name>Zach</name><uri>http://www.blogger.com/profile/03008329063902532712</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp2.blogger.com/_A95zAiNZLCo/SCfLLmt7EzI/AAAAAAAAAGw/wmGh6aY_T6k/S220/Photo+23.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh28aRyIqDOWI8vEuLw85httpmlxY3FqDVrekiPElLRmgd_HdUa2Ytd_wbHkV84n2wwqiXuXDRbQk83sU1RpO8fCG7hGPJgQPG6yIpJCgPGhCc1QZCd1X2WPaUGMO6Plg8d3y0OHbA-yi_H/s72-c/Picture+2.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8699851592369026373.post-427156345971690672</id><published>2008-07-23T15:37:00.003-05:00</published><updated>2008-07-23T15:41:49.124-05:00</updated><title type='text'>Mutliple Clients, Return Status</title><content type='html'>Sugarbot&#39;s XML-RPC server should now support multiple clients.  Clients are identified by either an integer or string, which is supplied by an environment variable.  This way, failing clients can easily be identified.  Alternatively, they can be assigned a random number for the session ID.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The sugarbot-launcher script also works the part, and grabs the completion status from the XML-RPC server and returns whatever value it should (0 if there were no failures, 1 if there were).  This &lt;i&gt;should&lt;/i&gt; allow sugarbot to be used with buildbot.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Update&lt;/b&gt;: The code will be on SVN shortly.  Looks like Google is doing maintenance.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gsoc-sugarbot.blogspot.com/feeds/427156345971690672/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8699851592369026373&amp;postID=427156345971690672' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8699851592369026373/posts/default/427156345971690672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8699851592369026373/posts/default/427156345971690672'/><link rel='alternate' type='text/html' href='http://gsoc-sugarbot.blogspot.com/2008/07/mutliple-clients-return-status.html' title='Mutliple Clients, Return Status'/><author><name>Zach</name><uri>http://www.blogger.com/profile/03008329063902532712</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp2.blogger.com/_A95zAiNZLCo/SCfLLmt7EzI/AAAAAAAAAGw/wmGh6aY_T6k/S220/Photo+23.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8699851592369026373.post-4551118629025527868</id><published>2008-07-22T23:27:00.003-05:00</published><updated>2008-07-22T23:30:17.668-05:00</updated><title type='text'>Multiple Clients</title><content type='html'>Trying to get the RPC-server set up to handle multiple clients.  This will allow me to request return statuses from the RPC-server to return via the sugarbot-launcher... which in turn allows the whole sugarbot/buildbot thing to work.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Yaaay! &lt;/sarcasm&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gsoc-sugarbot.blogspot.com/feeds/4551118629025527868/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8699851592369026373&amp;postID=4551118629025527868' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8699851592369026373/posts/default/4551118629025527868'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8699851592369026373/posts/default/4551118629025527868'/><link rel='alternate' type='text/html' href='http://gsoc-sugarbot.blogspot.com/2008/07/multiple-clients.html' title='Multiple Clients'/><author><name>Zach</name><uri>http://www.blogger.com/profile/03008329063902532712</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp2.blogger.com/_A95zAiNZLCo/SCfLLmt7EzI/AAAAAAAAAGw/wmGh6aY_T6k/S220/Photo+23.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8699851592369026373.post-6239287788064471777</id><published>2008-07-20T20:16:00.009-05:00</published><updated>2008-07-20T20:26:38.758-05:00</updated><title type='text'>Big Changes</title><content type='html'>Some extremely large changes today.  The old system has been completely removed (all of the manual-parsing stuff) and replaced with the native Python stuff.  I have most of the stuff for buildbot reporting in place, but have not finished it yet.  I need to re-do a bunch of the nose-testing stuff tonight before I get too far along.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For comparison, here is the first demo script.  Much easier to use, less error-prone, and is overall &lt;b&gt;&lt;i&gt;actually useful&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt;.&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: normal;&quot;&gt;sugarActivityName = &#39;Calculate&#39;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: normal;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: normal;&quot;&gt;def sugarbot_main(widgets):&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: normal;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: normal;&quot;&gt;one &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: normal;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: normal;&quot;&gt;= widgets[&#39;1&#39;]&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: normal;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: normal;&quot;&gt;plus &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: normal;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: normal;&quot;&gt;= widgets[&#39;+&#39;]&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: normal;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: normal;&quot;&gt;enter &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: normal;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: normal;&quot;&gt;= widgets[&#39;enter&#39;]&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: normal;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: normal;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: normal;&quot;&gt;one.click()&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: normal;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: normal;&quot;&gt;plus.click()&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: normal;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: normal;&quot;&gt;one.click()&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: normal;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: normal;&quot;&gt;enter.click()&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: normal;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: normal;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: normal;&quot;&gt;widgets[&#39;TextEntry&#39;].text = &quot;1+5&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: normal;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: normal;&quot;&gt;assert widgets[&#39;TextEntry&#39;].text == &#39;1+5&#39;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: normal;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: normal;&quot;&gt;enter.click()&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gsoc-sugarbot.blogspot.com/feeds/6239287788064471777/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8699851592369026373&amp;postID=6239287788064471777' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8699851592369026373/posts/default/6239287788064471777'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8699851592369026373/posts/default/6239287788064471777'/><link rel='alternate' type='text/html' href='http://gsoc-sugarbot.blogspot.com/2008/07/big-changes.html' title='Big Changes'/><author><name>Zach</name><uri>http://www.blogger.com/profile/03008329063902532712</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp2.blogger.com/_A95zAiNZLCo/SCfLLmt7EzI/AAAAAAAAAGw/wmGh6aY_T6k/S220/Photo+23.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8699851592369026373.post-6200506892976657357</id><published>2008-07-20T13:51:00.002-05:00</published><updated>2008-07-20T13:51:54.754-05:00</updated><title type='text'>Inheritance</title><content type='html'>Evidently, for properties to work ... properly ... the class has to inherit from the &lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;object&lt;/span&gt; base class.</content><link rel='replies' type='application/atom+xml' href='http://gsoc-sugarbot.blogspot.com/feeds/6200506892976657357/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8699851592369026373&amp;postID=6200506892976657357' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8699851592369026373/posts/default/6200506892976657357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8699851592369026373/posts/default/6200506892976657357'/><link rel='alternate' type='text/html' href='http://gsoc-sugarbot.blogspot.com/2008/07/inheritance.html' title='Inheritance'/><author><name>Zach</name><uri>http://www.blogger.com/profile/03008329063902532712</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp2.blogger.com/_A95zAiNZLCo/SCfLLmt7EzI/AAAAAAAAAGw/wmGh6aY_T6k/S220/Photo+23.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8699851592369026373.post-5915359316366092808</id><published>2008-07-19T22:18:00.004-05:00</published><updated>2008-07-19T22:20:23.156-05:00</updated><title type='text'></title><content type='html'>Somebody please tell me why the following code does not work as one would expect (that is, printing out text when setting/getting someASDF.text):&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;&lt;div&gt;class asdf:&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt; &lt;/span&gt;def click(self):&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;  &lt;/span&gt;print &quot;click&quot;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt; &lt;/span&gt;def getText(self):&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;  &lt;/span&gt;print &quot;getText&quot;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt; &lt;/span&gt;def setText(self, val):&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;  &lt;/span&gt;print &quot;setText&quot;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt; &lt;/span&gt;text = property(lambda self: self.getText(), lambda self, v: self.setText(v))&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt; &lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gsoc-sugarbot.blogspot.com/feeds/5915359316366092808/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8699851592369026373&amp;postID=5915359316366092808' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8699851592369026373/posts/default/5915359316366092808'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8699851592369026373/posts/default/5915359316366092808'/><link rel='alternate' type='text/html' href='http://gsoc-sugarbot.blogspot.com/2008/07/somebody-please-tell-me-why-following.html' title=''/><author><name>Zach</name><uri>http://www.blogger.com/profile/03008329063902532712</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp2.blogger.com/_A95zAiNZLCo/SCfLLmt7EzI/AAAAAAAAAGw/wmGh6aY_T6k/S220/Photo+23.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8699851592369026373.post-6064060319126590821</id><published>2008-07-18T11:39:00.003-05:00</published><updated>2008-07-18T11:41:18.293-05:00</updated><title type='text'>So Close!</title><content type='html'>So very, very close.  Just trying to get the text-setting/getting properties to work.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For comparison purposes, here is a script that uses native Python:&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;one &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;= widgets[&#39;1&#39;]&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;plus &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;= widgets[&#39;+&#39;]&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;enter &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;= widgets[&#39;enter&#39;]&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;one.click()&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;plus.click()&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;one.click()&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;enter.click()&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;textEntry = widgets[&#39;TextEntry&#39;]&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;textEntry.text = &quot;1+5&quot;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;assert textEntry.text.beginswith(&#39;1&#39;)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;enter.click()&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gsoc-sugarbot.blogspot.com/feeds/6064060319126590821/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8699851592369026373&amp;postID=6064060319126590821' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8699851592369026373/posts/default/6064060319126590821'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8699851592369026373/posts/default/6064060319126590821'/><link rel='alternate' type='text/html' href='http://gsoc-sugarbot.blogspot.com/2008/07/so-close.html' title='So Close!'/><author><name>Zach</name><uri>http://www.blogger.com/profile/03008329063902532712</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp2.blogger.com/_A95zAiNZLCo/SCfLLmt7EzI/AAAAAAAAAGw/wmGh6aY_T6k/S220/Photo+23.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8699851592369026373.post-681876031177399204</id><published>2008-07-18T01:40:00.002-05:00</published><updated>2008-07-18T01:40:59.191-05:00</updated><title type='text'>Missing Something</title><content type='html'>In the process of transitioning from the custom-parsed sugarbot scripts to a &lt;b&gt;much &lt;/b&gt;simpler system using the native Python parser.  A few hiccups, but I should have things sorted out soon.</content><link rel='replies' type='application/atom+xml' href='http://gsoc-sugarbot.blogspot.com/feeds/681876031177399204/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8699851592369026373&amp;postID=681876031177399204' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8699851592369026373/posts/default/681876031177399204'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8699851592369026373/posts/default/681876031177399204'/><link rel='alternate' type='text/html' href='http://gsoc-sugarbot.blogspot.com/2008/07/missing-something.html' title='Missing Something'/><author><name>Zach</name><uri>http://www.blogger.com/profile/03008329063902532712</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp2.blogger.com/_A95zAiNZLCo/SCfLLmt7EzI/AAAAAAAAAGw/wmGh6aY_T6k/S220/Photo+23.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8699851592369026373.post-6263498872519106866</id><published>2008-07-16T16:08:00.003-05:00</published><updated>2008-07-16T16:09:54.106-05:00</updated><title type='text'>Sugarbot Diagram</title><content type='html'>I created a small diagram that shows most of the high-level functionality of Sugarbot today for a friend, and thought it would be beneficial to share it with all interested parties.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://www.flickr.com/photos/zachriggle/2675458896/sizes/o/&quot;&gt;&lt;img src=&quot;http://farm4.static.flickr.com/3259/2675458896_064de9e2da_o_d.png&quot; border=&quot;0&quot; alt=&quot;&quot; style=&quot;cursor: pointer; width: 200px; &quot; /&gt;&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gsoc-sugarbot.blogspot.com/feeds/6263498872519106866/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8699851592369026373&amp;postID=6263498872519106866' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8699851592369026373/posts/default/6263498872519106866'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8699851592369026373/posts/default/6263498872519106866'/><link rel='alternate' type='text/html' href='http://gsoc-sugarbot.blogspot.com/2008/07/sugarbot-diagram.html' title='Sugarbot Diagram'/><author><name>Zach</name><uri>http://www.blogger.com/profile/03008329063902532712</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp2.blogger.com/_A95zAiNZLCo/SCfLLmt7EzI/AAAAAAAAAGw/wmGh6aY_T6k/S220/Photo+23.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8699851592369026373.post-4843220693061822638</id><published>2008-07-15T17:59:00.003-05:00</published><updated>2008-07-15T18:01:57.421-05:00</updated><title type='text'>Stateful XML-RPC Server</title><content type='html'>Ironed out some bugs with the instantiation of the sugarbot activity in some corner cases.  Now I&#39;m working on the XMLRPC server implementation to be able to handle sessions.  Looking for a graceful way to do it so that I can just use a mix-in with the ServerProxy class and not have to do any modification beyond that.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Essentially, I want to be able to automate do the following&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;someObject.setValue(foo)&lt;/div&gt;&lt;div&gt;someObject.someMethod(bar) === someObject.someMethod(foo,bar)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It looks like the __call__ property may be able to help me out with this.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gsoc-sugarbot.blogspot.com/feeds/4843220693061822638/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8699851592369026373&amp;postID=4843220693061822638' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8699851592369026373/posts/default/4843220693061822638'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8699851592369026373/posts/default/4843220693061822638'/><link rel='alternate' type='text/html' href='http://gsoc-sugarbot.blogspot.com/2008/07/stateful-xml-rpc-server.html' title='Stateful XML-RPC Server'/><author><name>Zach</name><uri>http://www.blogger.com/profile/03008329063902532712</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp2.blogger.com/_A95zAiNZLCo/SCfLLmt7EzI/AAAAAAAAAGw/wmGh6aY_T6k/S220/Photo+23.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8699851592369026373.post-8498597815962712654</id><published>2008-07-12T21:37:00.001-05:00</published><updated>2008-07-12T21:38:31.633-05:00</updated><title type='text'>Full automation</title><content type='html'>When launching sugar-emulator with environment variable SUGARBOT_EMULATOR set, automatically launches Sugarbot.  When the Sugarbot activity closes, it is re-launched if there are other scripts that still need to be executed.  Once execution of the scripts are complete, the Sugar shell is killed (SIGTERM).&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;SVN revision 81 has the goods. (modded-main.py is the replacement for shell/main.py)&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gsoc-sugarbot.blogspot.com/feeds/8498597815962712654/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8699851592369026373&amp;postID=8498597815962712654' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8699851592369026373/posts/default/8498597815962712654'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8699851592369026373/posts/default/8498597815962712654'/><link rel='alternate' type='text/html' href='http://gsoc-sugarbot.blogspot.com/2008/07/full-automation.html' title='Full automation'/><author><name>Zach</name><uri>http://www.blogger.com/profile/03008329063902532712</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp2.blogger.com/_A95zAiNZLCo/SCfLLmt7EzI/AAAAAAAAAGw/wmGh6aY_T6k/S220/Photo+23.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8699851592369026373.post-4062963537340291379</id><published>2008-07-12T18:22:00.006-05:00</published><updated>2008-07-12T20:18:29.543-05:00</updated><title type='text'>Automated Launching: Go!</title><content type='html'>Using just about the most obscure Python code I have &lt;b&gt;ever &lt;/b&gt;written, I have just made sugarbot fully automatable.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It requires a small patch to main.py in the main Sugar directory (/usr/share/sugar/shell/main.py), and adding a file to the same directory.  It launches sugarbot by simulating a click on the sugarbot icon in the frame.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Will put the code up on SVN later, it&#39;s Pizza time now!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Important Code:&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;# &lt;hack&gt;=========================================================&lt;/hack&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;# The magnitude of this hack compares favorably with the&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;# current national debt.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;boxChildren = self.shell.get_frame()._bottom_panel._bg.get_children()&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;tray = [k for k in boxChildren if isinstance(k,ActivitiesTray)]&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;if tray:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;children = tray[0]._tray.get_children()&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;else:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;return&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot; ;font-family:&#39;courier new&#39;;&quot;&gt;activities = [k for k in children if isinstance(k, ActivityButton)]&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;sbList = [k for k in activities if k._activity_info.name==&quot;sugarbot&quot;]&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;# ========================================================&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space:pre&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;white-space: pre;&quot;&gt;if len(sbList) &gt; 0:   sbList[0].emit(&#39;clicked&#39;) &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;main.py patch:&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;model = ShellModel()&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;shell = Shell(model)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;service = ShellService(shell)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;&lt;b&gt;if os.environ.has_key(&quot;SUGARBOT_EMULATOR&quot;):&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;&lt;b&gt;  from sugarbotlauncher import SugarbotLauncher&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;&lt;b&gt;  sbLauncher = SugarbotLauncher(model,shell,service)&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;try:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;  gtk.main()&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;except KeyboardInterrupt:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;  style=&quot;font-family:&#39;courier new&#39;;&quot;&gt;  print &#39;Ctrl+C pressed, exiting...&#39;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gsoc-sugarbot.blogspot.com/feeds/4062963537340291379/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8699851592369026373&amp;postID=4062963537340291379' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8699851592369026373/posts/default/4062963537340291379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8699851592369026373/posts/default/4062963537340291379'/><link rel='alternate' type='text/html' href='http://gsoc-sugarbot.blogspot.com/2008/07/automated-launching-go.html' title='Automated Launching: Go!'/><author><name>Zach</name><uri>http://www.blogger.com/profile/03008329063902532712</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp2.blogger.com/_A95zAiNZLCo/SCfLLmt7EzI/AAAAAAAAAGw/wmGh6aY_T6k/S220/Photo+23.jpg'/></author><thr:total>0</thr:total></entry></feed>

If you would like to create a banner that links to this page (i.e. this validation result), do the following:

  1. Download the "valid Atom 1.0" banner.

  2. Upload the image to your own server. (This step is important. Please do not link directly to the image on this server.)

  3. Add this HTML to your page (change the image src attribute if necessary):

If you would like to create a text link instead, here is the URL you can use:

http://www.feedvalidator.org/check.cgi?url=http%3A//gsoc-sugarbot.blogspot.com/feeds/posts/default

Copyright © 2002-9 Sam Ruby, Mark Pilgrim, Joseph Walton, and Phil Ringnalda