<?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-6314215202859927549</id><updated>2011-11-27T16:06:00.379-08:00</updated><category term='launchpad ppa'/><category term='network'/><category term='foss'/><category term='ppa'/><category term='launchpad'/><category term='ubuntu'/><category term='wireless embedded'/><title type='text'>Celso Providelo (cprov)</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://cprov.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314215202859927549/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://cprov.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Celso Providelo</name><uri>http://www.blogger.com/profile/06859558841565963420</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_se-tvwy2aUs/SKCl0GFOolI/AAAAAAAAAV0/j93Jdn-Ex4c/s1600-R/cprov_mugshot.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>20</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6314215202859927549.post-312822772390371869</id><published>2009-07-20T05:16:00.000-07:00</published><updated>2009-07-20T06:11:34.432-07:00</updated><title type='text'>Launchpad API for PPAs - part 3</title><content type='html'>Continuing with &lt;a href="https://help.launchpad.net/API"&gt;Launchpad API&lt;/a&gt; for PPA, let's illustrate how to copy specific sources from one archive to another.&lt;br /&gt;&lt;br /&gt;An  authenticated user may copy sources (including their binaries or not) &lt;span style="font-weight: bold;"&gt;from&lt;/span&gt; any public archive &lt;span style="font-weight: bold;"&gt;to&lt;/span&gt; any PPA he has permission to upload using &lt;a href="https://edge.launchpad.net/+apidoc/#archive-syncSource"&gt;syncSource&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;One practical example is backporting recent SRUs to LTS series using your PPAs. Let say, we want the &lt;a href="https://edge.launchpad.net/ubuntu/+source/libvirt/0.6.1-0ubuntu5.1"&gt;latest libvirt version&lt;/a&gt; available for testing in your Hardy instance.&lt;br /&gt;&lt;br /&gt;{{{&lt;br /&gt;    ubuntu = lp.distributions['ubuntu']&lt;br /&gt;    primary, partner = ubuntu.archives&lt;br /&gt;    ppa = lp.me.getPPAByName(name='ppa')&lt;br /&gt;    ppa.syncSource(&lt;br /&gt;        source_name='libvirt', version='0.6.1-0ubuntu5.1',&lt;br /&gt;        from_archive=primary, include_binaries=False,&lt;br /&gt;        to_series='hardy', to_pocket='Release')&lt;br /&gt;}}}&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;libvirt - 0.6.1-0ubuntu5.1&lt;/span&gt; will be rebuilt in your PPA for hardy and if everything is compatible in few minutes you will be able to use and share it with other users.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314215202859927549-312822772390371869?l=cprov.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cprov.blogspot.com/feeds/312822772390371869/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314215202859927549&amp;postID=312822772390371869' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314215202859927549/posts/default/312822772390371869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314215202859927549/posts/default/312822772390371869'/><link rel='alternate' type='text/html' href='http://cprov.blogspot.com/2009/07/launchpad-api-for-ppas-part-3.html' title='Launchpad API for PPAs - part 3'/><author><name>Celso Providelo</name><uri>http://www.blogger.com/profile/06859558841565963420</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_se-tvwy2aUs/SKCl0GFOolI/AAAAAAAAAV0/j93Jdn-Ex4c/s1600-R/cprov_mugshot.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314215202859927549.post-962947705697815154</id><published>2009-06-30T19:05:00.000-07:00</published><updated>2009-06-30T19:18:28.694-07:00</updated><title type='text'>Behavior-driven testing (BDT) support in python</title><content type='html'>Today &lt;a href="https://edge.launchpad.net/%7Esidnei"&gt;Sidnei&lt;/a&gt;  called my attention to &lt;a href="http://www.pyccuracy.org/overview.html"&gt;Pyccuracy&lt;/a&gt; and &lt;a href="http://behaviour-driven.org/"&gt;&lt;span style="font-style: italic;"&gt;Behavior-driven Testing&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I decided to give it a try.&lt;br /&gt;&lt;br /&gt;Started by repackaging the unofficial ubuntu packages I found in  &lt;a href="http://deb.gabrielfalcao.com/unstable/"&gt;http://deb.gabrielfalcao.com/unstable/&lt;/a&gt; in my PPA (basically, for fun).&lt;br /&gt;&lt;br /&gt;&lt;a href="https://edge.launchpad.net/%7Ecprov/+archive/sandbox"&gt;https://edge.launchpad.net/~cprov/+archive/sandbox&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;There you can find &lt;span style="font-weight: bold;"&gt;python-pyccuracy&lt;/span&gt; and its dependencies (&lt;span style="font-weight: bold;"&gt;python-pyoc&lt;/span&gt; and &lt;span style="font-weight: bold;"&gt;python-selenium&lt;/span&gt;).&lt;br /&gt;&lt;br /&gt;Install &lt;span style="font-weight: bold;"&gt;python-pyccurancy&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;{{{&lt;br /&gt;$ sudo apt-get install python-pyccuracy&lt;br /&gt;}}}&lt;br /&gt;&lt;br /&gt;Install the &lt;a href="http://seleniumhq.org/projects/remote-control/"&gt;Selenium RC&lt;/a&gt;, if you don't have it yet, and run the server.&lt;br /&gt;&lt;br /&gt;{{{&lt;br /&gt;$ wget http://release.seleniumhq.org/selenium-remote-control/1.0.1/selenium-remote-control-1.0.1-dist.zip&lt;br /&gt;$ unzip selenium-remote-control-1.0.1-dist.zip&lt;br /&gt;$ java -jar selenium-remote-control-1.0.1/selenium-server-1.0.1/selenium-server.jar&lt;br /&gt;}}}&lt;br /&gt;&lt;br /&gt;Then you can use &lt;span style="font-style: italic;"&gt;pyccuracy_console&lt;/span&gt; to run its own test suite which uses BDT.&lt;br /&gt;&lt;br /&gt;{{{&lt;br /&gt;$ pyccuracy_console -d /usr/share/pyccuracy/tests/acceptance/action_tests/ -p "*en-us.acc"&lt;br /&gt;}}}&lt;br /&gt;&lt;br /&gt;To be continued ...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314215202859927549-962947705697815154?l=cprov.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cprov.blogspot.com/feeds/962947705697815154/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314215202859927549&amp;postID=962947705697815154' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314215202859927549/posts/default/962947705697815154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314215202859927549/posts/default/962947705697815154'/><link rel='alternate' type='text/html' href='http://cprov.blogspot.com/2009/06/behavior-driven-testing-bdt-support-in.html' title='Behavior-driven testing (BDT) support in python'/><author><name>Celso Providelo</name><uri>http://www.blogger.com/profile/06859558841565963420</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_se-tvwy2aUs/SKCl0GFOolI/AAAAAAAAAV0/j93Jdn-Ex4c/s1600-R/cprov_mugshot.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314215202859927549.post-3945160413596949615</id><published>2009-06-14T07:27:00.000-07:00</published><updated>2009-06-14T08:03:52.002-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='launchpad ppa'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>PPA support on `software-properties`</title><content type='html'>Based on the discussion we had at UDS, &lt;a href="https://edge.launchpad.net/%7Emvo"&gt;Michael Vogt&lt;/a&gt;, &lt;a href="https://edge.launchpad.net/%7Elifeless"&gt;Robert Collins&lt;/a&gt; and &lt;a href="https://edge.launchpad.net/%7Ecprov"&gt;I&lt;/a&gt; came up with a easier and non-evil way of installing &lt;a href="https://edge.launchpad.net/ubuntu/+ppas"&gt;Launchpad PPA&lt;/a&gt; in &lt;a href="http://www.ubuntu.com/"&gt;Ubuntu&lt;/a&gt; systems.&lt;p&gt;The approach is very simple:&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;detect&lt;/span&gt; PPA installation and &lt;span style="font-weight: bold;"&gt;automatically&lt;/span&gt; fetch the corresponding &lt;span style="font-style: italic;"&gt;signing key&lt;/span&gt;, so the package inventory can be reloaded successfully at the end of the process.&lt;/p&gt;&lt;p&gt;No magic, the same look and feel ubuntu users are used to, and at the end, the job is done with no risks.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_se-tvwy2aUs/SjULfHNasdI/AAAAAAAABV0/5JeyHMaySxg/s1600-h/Menu.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 301px;" src="http://2.bp.blogspot.com/_se-tvwy2aUs/SjULfHNasdI/AAAAAAAABV0/5JeyHMaySxg/s320/Menu.png" alt="" id="BLOGGER_PHOTO_ID_5347192761711505874" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;PPAs &lt;span style="font-weight: bold;"&gt;are&lt;/span&gt; &lt;span style="font-style: italic;"&gt;Third-party Softwares&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_se-tvwy2aUs/SjUL4DeuNxI/AAAAAAAABV8/q0LWSAzLpkU/s1600-h/Third-Party-Sotware.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 314px; height: 320px;" src="http://2.bp.blogspot.com/_se-tvwy2aUs/SjUL4DeuNxI/AAAAAAAABV8/q0LWSAzLpkU/s320/Third-Party-Sotware.png" alt="" id="BLOGGER_PHOTO_ID_5347193190207076114" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;In this example, we will use &lt;a href="https://edge.launchpad.net/%7Eubuntu-mozilla-daily/+archive/ppa"&gt;Ubuntu Mozilla Daily PPA&lt;/a&gt;, so you can add:&lt;/p&gt;The repository deb line listed on the PPA page:&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-style: italic;"&gt;deb &lt;/span&gt;&lt;a style="font-style: italic;" href="http://ppa.launchpad.net/ubuntu-mozilla-daily/ppa/ubuntu"&gt;http://ppa.launchpad.net/ubuntu-mozilla-daily/ppa/ubuntu&lt;/a&gt;&lt;span style="font-style: italic;"&gt; &lt;/span&gt;&lt;span style="font-style: italic;" id="series-deb"&gt;jaunty&lt;/span&gt;&lt;span style="font-style: italic;"&gt; main&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Or simply use the supported shortcut for PPAs:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-style: italic;"&gt;ppa:ubuntu-mozilla-daily/ppa&lt;/span&gt;&lt;br /&gt;&lt;/div&gt; &lt;br /&gt;&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_se-tvwy2aUs/SjUMFZRF_lI/AAAAAAAABWE/mHpa5dq5Pc0/s1600-h/SP-PPA.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 182px;" src="http://2.bp.blogspot.com/_se-tvwy2aUs/SjUMFZRF_lI/AAAAAAAABWE/mHpa5dq5Pc0/s320/SP-PPA.png" alt="" id="BLOGGER_PHOTO_ID_5347193419393793618" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Click on &lt;span style="font-style: italic;"&gt;Add Source&lt;/span&gt; and that's it, PPA and signing key enabled.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_se-tvwy2aUs/SjUMJjhp0xI/AAAAAAAABWM/Ilb2gUQYQuo/s1600-h/SP-new-PPA.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 314px; height: 320px;" src="http://3.bp.blogspot.com/_se-tvwy2aUs/SjUMJjhp0xI/AAAAAAAABWM/Ilb2gUQYQuo/s320/SP-new-PPA.png" alt="" id="BLOGGER_PHOTO_ID_5347193490867082002" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_se-tvwy2aUs/SjUMOJZv6II/AAAAAAAABWU/6fBGGSCUkIE/s1600-h/SP-new-key.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 314px; height: 320px;" src="http://3.bp.blogspot.com/_se-tvwy2aUs/SjUMOJZv6II/AAAAAAAABWU/6fBGGSCUkIE/s320/SP-new-key.png" alt="" id="BLOGGER_PHOTO_ID_5347193569753950338" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;(right now the &lt;span style="font-style: italic;"&gt;Authentication&lt;/span&gt; tab does not reload automatically, you have to click &lt;span style="font-style: italic;"&gt;Restore Defaults&lt;/span&gt; to see the new key. I'm working on a fix).&lt;/p&gt;&lt;p&gt;A testing version of the package is available in my &lt;a href="https://edge.launchpad.net/%7Ecprov/+archive/experimental"&gt;Experimental PPA&lt;/a&gt; (expand the source package row and install the deb file directly with gdebi, then you are safe to test the application on the same PPA)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314215202859927549-3945160413596949615?l=cprov.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cprov.blogspot.com/feeds/3945160413596949615/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314215202859927549&amp;postID=3945160413596949615' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314215202859927549/posts/default/3945160413596949615'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314215202859927549/posts/default/3945160413596949615'/><link rel='alternate' type='text/html' href='http://cprov.blogspot.com/2009/06/ppa-support-on-software-properties.html' title='PPA support on `software-properties`'/><author><name>Celso Providelo</name><uri>http://www.blogger.com/profile/06859558841565963420</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_se-tvwy2aUs/SKCl0GFOolI/AAAAAAAAAV0/j93Jdn-Ex4c/s1600-R/cprov_mugshot.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_se-tvwy2aUs/SjULfHNasdI/AAAAAAAABV0/5JeyHMaySxg/s72-c/Menu.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314215202859927549.post-1058892988016176576</id><published>2009-06-08T07:10:00.001-07:00</published><updated>2009-06-08T07:10:16.907-07:00</updated><title type='text'>Your firewall does not like keyserver.ubuntu.com ...</title><content type='html'>&lt;p&gt;&lt;em&gt;... or any other non-80 service on the web&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;No problem, if you can access a server which is not submitted to the same access restrictions here is one solution.&lt;/p&gt;  &lt;p&gt;First make the service hostname to resolve as &lt;strong&gt;&lt;em&gt;localhost&lt;/em&gt;&lt;/strong&gt; in your system editing &lt;em&gt;/etc/hosts &lt;/em&gt;so its first line looks like:&lt;/p&gt;  &lt;p&gt;{{{&lt;/p&gt;  &lt;p&gt;127.0.0.1&amp;nbsp;&amp;nbsp;&amp;nbsp; localhost keyserver.ubuntu.com&lt;/p&gt;  &lt;p&gt;}}}&lt;/p&gt;  &lt;p&gt;That done, you can setup an secure ad-hoc tunnel with &lt;strong&gt;SSH&lt;/strong&gt; in a terminal.&lt;/p&gt;  &lt;p&gt;{{{&lt;/p&gt;  &lt;p&gt;ssh &amp;lt;username&amp;gt;@&amp;lt;server&amp;gt; -L 11371:keyserver.ubuntu.com:11371 -N&lt;/p&gt;  &lt;p&gt;}}}&lt;/p&gt;  &lt;p&gt;You can put that in a script and run it for you session &lt;strong&gt;OR&lt;/strong&gt; if you like GUI apps, try installing &lt;a href="apt://gstm" title="Install GSTM"&gt;gstm&lt;/a&gt; (&lt;a href="http://www.ubuntugeek.com/manage-ssh-tunnels-with-gnome-ssh-tunnel-manager.html" title="GSTM article" target="_blank"&gt;read more&lt;/a&gt;).&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="font-size: 10px;"&gt;  &lt;a href="http://posterous.com"&gt;Posted via web&lt;/a&gt;   from &lt;a href="http://cprov.posterous.com/your-firewall-does-not-like-keyserverubuntuco"&gt;cprov's posterous&lt;/a&gt;  &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314215202859927549-1058892988016176576?l=cprov.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cprov.blogspot.com/feeds/1058892988016176576/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314215202859927549&amp;postID=1058892988016176576' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314215202859927549/posts/default/1058892988016176576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314215202859927549/posts/default/1058892988016176576'/><link rel='alternate' type='text/html' href='http://cprov.blogspot.com/2009/06/your-firewall-does-not-like.html' title='Your firewall does not like keyserver.ubuntu.com ...'/><author><name>Celso Providelo</name><uri>http://www.blogger.com/profile/06859558841565963420</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_se-tvwy2aUs/SKCl0GFOolI/AAAAAAAAAV0/j93Jdn-Ex4c/s1600-R/cprov_mugshot.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314215202859927549.post-3100414049148069613</id><published>2009-04-15T21:03:00.001-07:00</published><updated>2009-04-15T21:03:00.841-07:00</updated><title type='text'>Launchpad API for PPAs - part 2</title><content type='html'>&lt;br /&gt;&lt;p&gt;Continuing with &lt;a href="https://help.launchpad.net/API" mce_href="https://help.launchpad.net/API"&gt;Launchpad APIs&lt;/a&gt;  for PPAs, let's illustrate how to find sources within a PPA.  &lt;/p&gt;      &lt;p&gt;Sources can be found, basically, by name, version, distroseries and status  by calling &lt;a href="https://edge.launchpad.net/+apidoc/#archive-getPublishedSources" mce_href="https://edge.launchpad.net/+apidoc/#archive-getPublishedSources"&gt;getPublishedSources&lt;/a&gt;  on a target archive.&lt;/p&gt;  &lt;blockquote&gt;  &lt;pre&gt; &amp;gt;&amp;gt;&amp;gt; def test_source_lookup(lp):&lt;br /&gt; ...&amp;nbsp; &amp;nbsp;&amp;nbsp; ppa = lp.people['ubuntu-mozilla-daily'].archive&lt;br /&gt; ...&amp;nbsp;&amp;nbsp;&amp;nbsp; ubuntu = lp.distributions['ubuntu']&lt;br /&gt; ...&amp;nbsp;&amp;nbsp;&amp;nbsp; jaunty = ubuntu.getSeries(name_or_version='jaunty')&lt;br /&gt; ...&amp;nbsp;&amp;nbsp;&amp;nbsp; last_firefox = ppa.getPublishedSources(&lt;br /&gt; ...&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; source_name='firefox-3.5', status='Published', distro_series=jaunty,&lt;br /&gt; ...&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exact_match=True)[0]&lt;br /&gt; ...&amp;nbsp;&amp;nbsp;&amp;nbsp; print last_firefox.displayname&lt;br /&gt;  &lt;/pre&gt;  &lt;/blockquote&gt;    &lt;p&gt;When it run, the output is:&lt;/p&gt;    &lt;blockquote&gt;  &lt;p&gt;firefox-3.5 3.5~b4~hg20090415r24712+nobinonly-0ubuntu1~umd1 in jaunty&lt;/p&gt;  &lt;/blockquote&gt;    &lt;p&gt;Play with the arguments, also instead of fetching the first item (most recent one) from the collection you may iterate over it.&lt;/p&gt;&lt;p style="font-size: 10px;"&gt;  &lt;a href="http://posterous.com"&gt;Posted via web&lt;/a&gt;   from &lt;a href="http://cprov.posterous.com/launchpad-api-for-ppas-part-2"&gt;cprov's posterous&lt;/a&gt;  &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314215202859927549-3100414049148069613?l=cprov.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cprov.blogspot.com/feeds/3100414049148069613/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314215202859927549&amp;postID=3100414049148069613' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314215202859927549/posts/default/3100414049148069613'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314215202859927549/posts/default/3100414049148069613'/><link rel='alternate' type='text/html' href='http://cprov.blogspot.com/2009/04/launchpad-api-for-ppas-part-2.html' title='Launchpad API for PPAs - part 2'/><author><name>Celso Providelo</name><uri>http://www.blogger.com/profile/06859558841565963420</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_se-tvwy2aUs/SKCl0GFOolI/AAAAAAAAAV0/j93Jdn-Ex4c/s1600-R/cprov_mugshot.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314215202859927549.post-8345376397415879168</id><published>2009-03-25T19:26:00.001-07:00</published><updated>2009-03-25T19:26:42.175-07:00</updated><title type='text'>
Launchpad API for PPAs  </title><content type='html'>&lt;br /&gt;&lt;p&gt;I've received few complains about how hard it is to extract information from the &lt;a href="https://edge.launchpad.net/+apidoc/"&gt;Launchpad API documentation&lt;/a&gt; for managing &lt;a href="https://edge.launchpad.net/ubuntu/+ppas"&gt;PPAs&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;I will start a series of post with useful actions for PPA users and owner.&lt;/p&gt;  &lt;p&gt;Start by reading the &lt;a href="https://help.launchpad.net/API"&gt;Launchpad API help page&lt;/a&gt; and familirize yourself with it. For experiments, I usually use a &lt;em&gt;setup&lt;/em&gt; script and jump into a interactive python section.&lt;/p&gt;  &lt;pre&gt;$ python -i lpapi_setup.py&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; launchpad&lt;br /&gt;&amp;lt;launchpadlib.launchpad.Launchpad object at 0x13eb0d0&amp;gt;&lt;br /&gt;&lt;br /&gt;Now, we can find out what's my &lt;strong&gt;PPA signing-key fingerprint&lt;/strong&gt;:&lt;br /&gt;&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; ppa = launchpad.people['cprov'].archive&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; print ppa.displayname&lt;br /&gt;PPA for Celso Providelo&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; print ppa.signing_key_fingerprint&lt;br /&gt;DCAC43EE807ADF67495AD95809C5BECB0DC0F66C&lt;br /&gt;&lt;br /&gt;to be continued ...&lt;br /&gt;&lt;/pre&gt;&lt;p style="font-size: 10px;"&gt;  &lt;a href="http://posterous.com"&gt;Posted via web&lt;/a&gt;   from &lt;a href="http://cprov.posterous.com/launchpad-api-for-ppas"&gt;cprov's posterous&lt;/a&gt;  &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314215202859927549-8345376397415879168?l=cprov.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cprov.blogspot.com/feeds/8345376397415879168/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314215202859927549&amp;postID=8345376397415879168' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314215202859927549/posts/default/8345376397415879168'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314215202859927549/posts/default/8345376397415879168'/><link rel='alternate' type='text/html' href='http://cprov.blogspot.com/2009/03/launchpad-api-for-ppas.html' title='&#xA;Launchpad API for PPAs  '/><author><name>Celso Providelo</name><uri>http://www.blogger.com/profile/06859558841565963420</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_se-tvwy2aUs/SKCl0GFOolI/AAAAAAAAAV0/j93Jdn-Ex4c/s1600-R/cprov_mugshot.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314215202859927549.post-1869219000020755634</id><published>2009-03-25T17:55:00.001-07:00</published><updated>2009-03-25T17:55:36.321-07:00</updated><title type='text'>
How cool is that ?  </title><content type='html'>&lt;br /&gt;&lt;p&gt;I guess I will have to use it a little bit more before saying ...&lt;/p&gt;&lt;p style="font-size: 10px;"&gt;  &lt;a href="http://posterous.com"&gt;Posted via web&lt;/a&gt;   from &lt;a href="http://cprov.posterous.com/how-cool-is-that"&gt;cprov's posterous&lt;/a&gt;  &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314215202859927549-1869219000020755634?l=cprov.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cprov.blogspot.com/feeds/1869219000020755634/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314215202859927549&amp;postID=1869219000020755634' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314215202859927549/posts/default/1869219000020755634'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314215202859927549/posts/default/1869219000020755634'/><link rel='alternate' type='text/html' href='http://cprov.blogspot.com/2009/03/how-cool-is-that.html' title='&#xA;How cool is that ?  '/><author><name>Celso Providelo</name><uri>http://www.blogger.com/profile/06859558841565963420</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_se-tvwy2aUs/SKCl0GFOolI/AAAAAAAAAV0/j93Jdn-Ex4c/s1600-R/cprov_mugshot.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314215202859927549.post-4458852286639646404</id><published>2008-09-04T21:15:00.000-07:00</published><updated>2008-09-04T21:43:14.517-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='launchpad ppa'/><title type='text'>Ubuntu Developer Week</title><content type='html'>&lt;span style="font-style: italic;"&gt;(Yes, I know the event is almost gone ... what can I do ? I'm always late)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;During this &lt;a href="https://wiki.ubuntu.com/UbuntuDeveloperWeek"&gt;Ubuntu Developer Week&lt;/a&gt; I had other two  opportunities to talk more about&lt;a href="https://launchpad.net/soyuz"&gt; Soyuz&lt;/a&gt; and the beloved&lt;a href="https://launchpad.net/ubuntu/+ppas"&gt; PPAs&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;a href="https://wiki.ubuntu.com/MeetingLogs/devweek0809/Soyuz"&gt;"Soyuz and all that Jazz&lt;/a&gt;" &lt;/strong&gt;and "&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;strong&gt;&lt;/strong&gt;&lt;strong&gt;&lt;a href="https://wiki.ubuntu.com/MeetingLogs/devweek0809/PPAIntro"&gt;Introduction to PPAs&lt;/a&gt;&lt;/strong&gt;" sessions were very exciting, a lot of interest was manifested by the audience.&lt;br /&gt;&lt;br /&gt;I could clearly notice that they were avidly looking for ways to be more productive by making collaboration an intrinsic characteristic of their workflows.&lt;br /&gt;&lt;br /&gt;IMO, that's exactly where &lt;a href="https://launchpad.net"&gt;Launchpad&lt;/a&gt; stands up compared with other systems, allowing an almost &lt;span style="font-style: italic;"&gt;flat learning-curve&lt;/span&gt; for users with any level of expertise&lt;span style="font-weight: bold;"&gt;. &lt;/span&gt;A really smooth and intuitive path&lt;span style="font-weight: bold;"&gt; from the fix to the anyone&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;in need of it&lt;/span&gt;, and also the other way around, &lt;span style="font-weight: bold;"&gt;from the issue to anyone who can fix it.&lt;br /&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: normal;"&gt;I have to say that, as a launchpad developer,  I'm really &lt;span style="font-weight: bold;"&gt;proud&lt;/span&gt; to be part of all this!&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314215202859927549-4458852286639646404?l=cprov.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cprov.blogspot.com/feeds/4458852286639646404/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314215202859927549&amp;postID=4458852286639646404' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314215202859927549/posts/default/4458852286639646404'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314215202859927549/posts/default/4458852286639646404'/><link rel='alternate' type='text/html' href='http://cprov.blogspot.com/2008/09/ubuntu-developer-week.html' title='Ubuntu Developer Week'/><author><name>Celso Providelo</name><uri>http://www.blogger.com/profile/06859558841565963420</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_se-tvwy2aUs/SKCl0GFOolI/AAAAAAAAAV0/j93Jdn-Ex4c/s1600-R/cprov_mugshot.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314215202859927549.post-338572024265645104</id><published>2008-09-02T18:13:00.000-07:00</published><updated>2008-09-02T18:17:15.626-07:00</updated><title type='text'>PyconBrasil 2008 - see you there!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://pyconbrasil.com.br/"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_se-tvwy2aUs/SL3lItSiAFI/AAAAAAAAAWA/kmJMd8LQyHo/s320/pycon_banner.gif" alt="" id="BLOGGER_PHOTO_ID_5241597479088160850" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314215202859927549-338572024265645104?l=cprov.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cprov.blogspot.com/feeds/338572024265645104/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314215202859927549&amp;postID=338572024265645104' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314215202859927549/posts/default/338572024265645104'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314215202859927549/posts/default/338572024265645104'/><link rel='alternate' type='text/html' href='http://cprov.blogspot.com/2008/09/pyconbrasil-2008-see-you-there.html' title='PyconBrasil 2008 - see you there!'/><author><name>Celso Providelo</name><uri>http://www.blogger.com/profile/06859558841565963420</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_se-tvwy2aUs/SKCl0GFOolI/AAAAAAAAAV0/j93Jdn-Ex4c/s1600-R/cprov_mugshot.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_se-tvwy2aUs/SL3lItSiAFI/AAAAAAAAAWA/kmJMd8LQyHo/s72-c/pycon_banner.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314215202859927549.post-2097158494466892091</id><published>2008-08-21T00:10:00.000-07:00</published><updated>2008-08-21T20:18:20.939-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wireless embedded'/><title type='text'>Sun SPOT</title><content type='html'>Another very interesting product/idea coming from &lt;a href="http://www.sun.com/"&gt;Sun&lt;/a&gt; in direction to the 'Internet of things' (wireless sensor networks), the &lt;a href="http://www.sunspotworld.com/"&gt;SunSPOTs&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;However, IMHO, it can't go any further than &lt;span style="font-style: italic;"&gt;'another shiny geek gadget' &lt;/span&gt;costing more than US$ 900 (it's curious how people don't get  surprised by this price when they realize it's a Sun product)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314215202859927549-2097158494466892091?l=cprov.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cprov.blogspot.com/feeds/2097158494466892091/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314215202859927549&amp;postID=2097158494466892091' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314215202859927549/posts/default/2097158494466892091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314215202859927549/posts/default/2097158494466892091'/><link rel='alternate' type='text/html' href='http://cprov.blogspot.com/2008/08/sun-spot.html' title='Sun SPOT'/><author><name>Celso Providelo</name><uri>http://www.blogger.com/profile/06859558841565963420</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_se-tvwy2aUs/SKCl0GFOolI/AAAAAAAAAV0/j93Jdn-Ex4c/s1600-R/cprov_mugshot.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314215202859927549.post-8596797021058090104</id><published>2008-08-11T13:49:00.000-07:00</published><updated>2008-08-11T13:58:56.582-07:00</updated><title type='text'>DebConf8</title><content type='html'>Before start posting  my notes about &lt;a href="http://debconf8.debconf.org/"&gt;DebConf8&lt;/a&gt; I would like to say that it has been a great time.&lt;br /&gt;&lt;br /&gt;The conference was amazingly well organized, kudos to the debian-ar team.&lt;br /&gt;&lt;br /&gt; &lt;a href="http://en.wikipedia.org/wiki/Mar_del_Plata"&gt;Mar del Plata&lt;/a&gt; is a very pleasant city which leads to a very good impression of  Argentine (my first time here).&lt;br /&gt;&lt;br /&gt;I've attended very interesting presentations already, stay tunned ...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314215202859927549-8596797021058090104?l=cprov.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cprov.blogspot.com/feeds/8596797021058090104/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314215202859927549&amp;postID=8596797021058090104' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314215202859927549/posts/default/8596797021058090104'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314215202859927549/posts/default/8596797021058090104'/><link rel='alternate' type='text/html' href='http://cprov.blogspot.com/2008/08/debconf8.html' title='DebConf8'/><author><name>Celso Providelo</name><uri>http://www.blogger.com/profile/06859558841565963420</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_se-tvwy2aUs/SKCl0GFOolI/AAAAAAAAAV0/j93Jdn-Ex4c/s1600-R/cprov_mugshot.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314215202859927549.post-2888753758958908384</id><published>2008-05-31T09:15:00.000-07:00</published><updated>2008-05-31T16:04:55.614-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='foss'/><title type='text'>Yet another FOSS model</title><content type='html'>It's been a long time since my last post, that's why I've chosen such a interesting  (and controversial) theme.&lt;br /&gt;&lt;br /&gt;I've been using and contributing to  (not expressively, though) &lt;a href="http://en.wikipedia.org/wiki/FOSS"&gt;FOSS&lt;/a&gt; for a relatively long time, about 6 years. During this time the most intriguing and hard-to-answer question about it was:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;   Does it really work ? if so, how  ?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Many of you, who already know the benefits of FOSS and read other passionate blog posts about it, might quickly say:&lt;br /&gt;&lt;br /&gt; &lt;span style="font-style: italic;"&gt;Duh, yes, look around&lt;/span&gt; !&lt;br /&gt;&lt;br /&gt;Amongst with other thousand of passionate images about freedom  &lt;span style="color: rgb(102, 204, 204);"&gt;[typical &lt;/span&gt;&lt;span style="font-style: italic; color: rgb(102, 204, 204);"&gt;needs citation&lt;/span&gt;&lt;span style="color: rgb(102, 204, 204);"&gt; point, I apologize in advance] &lt;/span&gt;contrasting with evil and illegal practices played by the  current proprietary software vendors.&lt;br /&gt;&lt;br /&gt;However,  I'm afraid this approach is not compatible with the need the FOSS idea has to establish itself simply as:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;A more appropriate way of producing and maintaining software&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;First things first ! That's all it has to be.&lt;br /&gt;&lt;br /&gt;Solving world poverty and reducing pathological economic differences might be kept in the agenda of any sane person living in this planet, not only software developers, but affirming that &lt;span style="font-weight: bold;"&gt;free-software&lt;/span&gt; by itself will fix those problems is very naive, to not say irresponsible.&lt;br /&gt;&lt;br /&gt;Enough philosophy for a admittedly 'narrow-mind' guy. Let's move on.&lt;br /&gt;&lt;br /&gt;My attempt to answer such question, replacing all passionate arguments with pragmatic ideas, goes through a rough and simple logic model:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 204, 204);"&gt;[Be aware that I could not find any explicitly compatible references, please feel free to disagree with my points]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;FOSS benefits users because they have the opportunity to use and improve the collective code  to serve their own purposes;&lt;br /&gt;&lt;br /&gt;FOSS benefits are even more visible in the upstream project where all individual contributions (&lt;span style="font-weight: bold;"&gt;IC&lt;/span&gt;) are consolidated as the &lt;span style="font-style: italic;"&gt;upstream momentum&lt;/span&gt; (UM):&lt;br /&gt;&lt;br /&gt;Equation1: &lt;span style="font-weight: bold;"&gt;UM = Sum(IC)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Upstreams communities are clearly the most benefited entities in the FOSS scenario, and thus the most interested in keeping it running well. The more people gets involved and contributing the higher will be &lt;span style="font-weight: bold;"&gt;UM&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;Within a FOSS upstream community, the individual benefits (&lt;span style="font-weight: bold;"&gt;IB&lt;/span&gt;) is equals to the &lt;span style="font-style: italic;"&gt;upstream momentum&lt;/span&gt; (&lt;span style="font-weight: bold;"&gt;UM&lt;/span&gt;) times the level of &lt;span style="font-style: italic;"&gt;shared interest&lt;/span&gt; (&lt;span style="font-weight: bold;"&gt;SI&lt;/span&gt;) established with the upstream community.&lt;br /&gt;&lt;br /&gt;Equation2:  &lt;span style="font-weight: bold;"&gt;IB = UM * SI&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The equation above describes the magic of FOSS, given a higher level of &lt;span style="font-style: italic;"&gt;shared interested&lt;/span&gt; each &lt;span style="font-weight: bold;"&gt;coin&lt;/span&gt; you put in the system will return an extra parcel of all the other &lt;span style="font-weight: bold;"&gt;coins&lt;/span&gt; already running in the system.&lt;br /&gt;&lt;br /&gt;So, FOSS works (duh!), it's just a matter of selecting the highest &lt;span style="font-style: italic;"&gt;upstream momentum&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;&lt;/span&gt;and &lt;span style="font-style: italic;"&gt;shared-interest&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;&lt;/span&gt;to get the best individual benefit (&lt;span style="font-weight: bold;"&gt;IB&lt;/span&gt;).&lt;br /&gt;&lt;br /&gt;Regarding the fact that your contribution by itself might increase the &lt;span style="font-style: italic;"&gt;upstream momentum&lt;/span&gt; of a given project, for most of the cases,  it can be ignored because the difference will be insignificant and thus the &lt;span style="font-style: italic;"&gt;upstream momentum&lt;/span&gt; becomes a constant when classifying FOSS projects. It is an instantaneous metric. It is, by itself, already  an answer for those people looking for a project to get involved with.&lt;br /&gt;&lt;br /&gt;In the FOSS eco-system it's very common to find more than one upstream community aiming to solve a specific problem (programming languages, graphical libraries, window managers, etc). When all candidates offer a similar level of &lt;span style="font-style: italic;"&gt;shared interest&lt;/span&gt; you should choose the one with higher &lt;span style="font-style: italic;"&gt;momentum&lt;/span&gt;&lt;span&gt;, it will produce the best benefit&lt;/span&gt;&lt;span style="font-style: italic;"&gt; ...&lt;/span&gt; That's what could be called the FOSS &lt;span style="font-style: italic;"&gt;natural selection&lt;/span&gt; rule.&lt;br /&gt;&lt;br /&gt;You might have noticed that I haven't mentioned yet the &lt;span style="font-style: italic;"&gt;contribution cost&lt;/span&gt; (&lt;span style="font-weight: bold;"&gt;CC&lt;/span&gt;) and how it should be considered when in the FOSS scenario.&lt;br /&gt;&lt;br /&gt;The &lt;span style="font-style: italic;"&gt;contribution cost&lt;/span&gt; affects how &lt;span style="font-style: italic;"&gt;profitable&lt;/span&gt; (&lt;span style="font-weight: bold;"&gt;P&lt;/span&gt;) the relationship between the individual and the upstream community is, as in:&lt;br /&gt;&lt;br /&gt;Equation 3:   &lt;span style="font-weight: bold;"&gt;P = IB / CC&lt;/span&gt;  or expanding &lt;span style="font-weight: bold;"&gt;P = UM *  SI / CC&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Obviously we know that a &lt;span style="font-weight: bold;"&gt;contribution cost&lt;/span&gt; always exists, each minute you use to contribute to a FOSS project certainly has a cost, it varies according subjective and personal standards, but certainly it's not &lt;span style="font-weight: bold;"&gt;zero&lt;/span&gt;. However the same standards apply to the &lt;span style="font-weight: bold;"&gt;profitable&lt;/span&gt; perception, i.e, for personal relationships FOSS is always a matter of choosing the project with the most momentum and which you share the most interest with and it can be very subjective, no doubt.&lt;br /&gt;&lt;br /&gt;It is very important to note that the vast majority of FOSS project is sustained by &lt;span style="font-weight: bold;"&gt;unprofitable&lt;/span&gt;  individual relationships by strictly following the equation above. Those relationships are driven by valuable personal believes that can't be measured or estimated in equations, but certainly result in a major benefit in each contributor knowledge and experience otherwise they would not happen   (I said it would not be a passionate arguments, so better stop).&lt;br /&gt;&lt;br /&gt;Back to the original pragmatic line, as it was supposed to be, with those three concepts in mind is much easier to understand the dynamic of FOSS.&lt;br /&gt;&lt;br /&gt;Users, contributors, companies, they all (can) represent the same role in a FOSS community, should look for profitable projects. The ones :&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Having highest &lt;span style="font-style: italic;"&gt;upstream momentum&lt;/span&gt;; &lt;/li&gt;&lt;li&gt;Having the minimum &lt;span style="font-style: italic;"&gt;contribution cost&lt;/span&gt;;&lt;/li&gt;&lt;li&gt;They can establish the maximum &lt;span style="font-style: italic;"&gt;shared interested&lt;/span&gt;;&lt;/li&gt;&lt;/ol&gt;On the other hand, FOSS upstream communities should work make their project more profitable, maximiz&lt;span style="font-style: italic;"&gt;ing shared interest&lt;/span&gt; and &lt;span style="font-style: italic;"&gt;contribution cost&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;I will be discussing alternatives for reaching good levels on those field later, but to not let a bad taste in the readers mouth lets pinch some ideas for the next post:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;Shared interest&lt;/span&gt; is always higher in small and encapsulated FOSS projects. Shared libraries, pluggable components, external APIs are the way to go.&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;Contribution cost&lt;/span&gt; is smaller when the project well documented, code is accessible &amp;amp; readable and workflows are simple, clear and honest.&lt;/li&gt;&lt;/ul&gt;That's enough for today. Thanks for reading my notes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314215202859927549-2888753758958908384?l=cprov.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cprov.blogspot.com/feeds/2888753758958908384/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314215202859927549&amp;postID=2888753758958908384' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314215202859927549/posts/default/2888753758958908384'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314215202859927549/posts/default/2888753758958908384'/><link rel='alternate' type='text/html' href='http://cprov.blogspot.com/2008/05/yet-another-foss-model.html' title='Yet another FOSS model'/><author><name>Celso Providelo</name><uri>http://www.blogger.com/profile/06859558841565963420</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_se-tvwy2aUs/SKCl0GFOolI/AAAAAAAAAV0/j93Jdn-Ex4c/s1600-R/cprov_mugshot.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314215202859927549.post-5846189919710489951</id><published>2008-02-15T13:24:00.000-08:00</published><updated>2008-02-16T05:32:24.118-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='launchpad'/><category scheme='http://www.blogger.com/atom/ns#' term='ppa'/><title type='text'>About Branches and PPAs</title><content type='html'>I've recently experienced a very successfully story regarding the benefits of using &lt;a href="https://help.launchpad.net/PPAQuickStart/"&gt;PPA&lt;/a&gt; in &lt;a href="https://launchpad.net/"&gt;Launchpad&lt;/a&gt;, that I'd like to share with you.&lt;br /&gt;&lt;br /&gt;As you know I'm not an official Ubuntu developer, I wish I could have the knowledge and time required to be part of such bright group of people, but it's &lt;span style="font-weight: bold;"&gt;not&lt;/span&gt; the case. So, I'm writing this as a mere &lt;span style="font-weight: bold;"&gt;enthusiast.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Going straight to the point, some days ago, I've got curious about &lt;a href="http://twitter.com/home"&gt;Twitter&lt;/a&gt; (again time only allow me to see 'old' stuff in the net). I've signed up, typed some texts, followed some friends and it became very &lt;span style="font-weight: bold;"&gt;boring&lt;/span&gt; ...&lt;br /&gt;&lt;br /&gt;I thought it could be better if they provide a standalone client and voilà, I found the &lt;a href="http://code.google.com/p/gtwitter/"&gt;upstream project&lt;/a&gt; and the &lt;a href="https://edge.launchpad.net/ubuntu/gutsy/+source/gtwitter"&gt;ubuntu gutsy package&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Internet is really fast above the equator.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I've installed '1.0~beta-5', but my dark theme didn't fit the darkblue text very well :(&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_se-tvwy2aUs/R7YLh3aKc7I/AAAAAAAAAAY/jf6BP7g3cSA/s1600-h/Screenshot-gTwitter+1.0beta.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_se-tvwy2aUs/R7YLh3aKc7I/AAAAAAAAAAY/jf6BP7g3cSA/s320/Screenshot-gTwitter+1.0beta.png" alt="" id="BLOGGER_PHOTO_ID_5167330298891498418" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Checked &lt;a href="https://edge.launchpad.net/ubuntu/hardy/+source/gtwitter"&gt;hardy&lt;/a&gt; version to see it got better support for GTK themes and it didn't.&lt;br /&gt;&lt;br /&gt;I didn't think twice and took the liberty for quickly registering &lt;a href="https://edge.launchpad.net/gtwitter"&gt;a product in Launchpad&lt;/a&gt; and imported the upstream SVN branch.&lt;br /&gt;&lt;br /&gt;Then, expecting to get &lt;span style="font-weight: bold;"&gt;very lucky&lt;/span&gt;, after checking that the build dependencies where constant, I realized it could build on gutsy.&lt;br /&gt;&lt;br /&gt;I've downloaded  the hardy sourcepackage:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;$ dget https://edge.launchpad.net/ubuntu/hardy/+source/gtwitter/1.0~beta-6ubuntu1/+files/gtwitter_1.0~beta-6ubuntu1.dsc&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;After unpacking and applied the diff, I've created registered and pushed a branch for the &lt;a href="https://code.edge.launchpad.net/%7Ecprov/gtwitter/1.0-beta6"&gt;1.0beta6&lt;/a&gt; package series so I could keep track of my changes.&lt;br /&gt;&lt;br /&gt;I already have a activated PPA, but following &lt;a href="https://help.launchpad.net/PPAQuickStart/"&gt;PPAQuickStart&lt;/a&gt; describes it in a very detailed way.&lt;br /&gt;&lt;br /&gt;Felling  brave, again, I've simply mocked a smaller version and uploaded a backported version to &lt;a href="https://edge.launchpad.net/%7Ecprov/+archive/"&gt;my PPA&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;$ cd gtwitter-1.0beta&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;$ dch -D gutsy -b -v 1.0~beta-6ubuntu1~gutsy1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   [type a changelog]&lt;br /&gt;$ debuild -S -sa&lt;br /&gt;[type your gpg passprase twice]&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;$ cd ..&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;$ dput my_ppa-production gtwitter_1.0~beta-6ubuntu1~gutsy1_source.changes&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;After 5 minutes I got an email from Launchpad informing that the source was accepted.&lt;br /&gt;&lt;br /&gt;Got extremely surprised when, 40 minutes later, it was already successfully built (it is getting faster...)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; [enabled my PPA in /etc/apt/sources.list]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;$ sudo apt-get update&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;$ sudo apt-get install gtwitter&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;...&lt;br /&gt;Setting up gtwitter (1.0~beta-6ubuntu1~gutsy1) ...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It is still dark and unreadable, true, but works very well in gutsy.&lt;br /&gt;&lt;br /&gt;What's the problem ?!  I do have the code :)&lt;br /&gt;&lt;br /&gt;Using my &lt;span style="font-weight: bold;"&gt;non-existent&lt;/span&gt; &lt;span style="font-style: italic;"&gt;c#-fu&lt;/span&gt;, I've managed to change the code the way I wanted , to use gray fonts.&lt;br /&gt;&lt;br /&gt;My change will probably be considered &lt;span style="font-weight: bold;"&gt;offending&lt;/span&gt; by the upstream maintainers, but shhh, they don't need to know right now.&lt;br /&gt;&lt;br /&gt;(you've gotta love the indentation pattern used by them)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;$bzr ci -m "trying a new version, using 'gray' fonts to match my dark theme."&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;$bzr push&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Code changes are &lt;a href="https://code.edge.launchpad.net/%7Ecprov/gtwitter/1.0-beta6"&gt;there&lt;/a&gt;, publicly available to embarrass me for the rest of my life:&lt;br /&gt;&lt;br /&gt;Well, let's upload the new version, I have a lot of friends using dark themes (it's the future !), they will send me cookies :)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;$ dch -D gutsy -b -v 1.0~beta-6ubuntu1~gutsy2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   [another creative changelog message]&lt;br /&gt;$ debuild -S&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  [note that I've omitted the '-sa' option, the orig.tar.gz doesn't need to be sent again, it's already published]&lt;br /&gt;$ cd ..&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;$ dput my_ppa-production gtwitter_1.0~beta-6ubuntu1~gutsy2_source.changes&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;5 minutes, I had the notification in my mail box, another successfully upload :)&lt;br /&gt;&lt;br /&gt;Other 40 minutes and I got the binary I wanted.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_se-tvwy2aUs/R7YJuHaKc6I/AAAAAAAAAAQ/pazxL0wfM6Q/s1600-h/Screenshot.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_se-tvwy2aUs/R7YJuHaKc6I/AAAAAAAAAAQ/pazxL0wfM6Q/s400/Screenshot.png" alt="" id="BLOGGER_PHOTO_ID_5167328310321640354" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;"&gt;$ sudo apt-get update&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;$ sudo apt-get install gtwitter&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;...&lt;br /&gt;Setting up gtwitter (1.0~beta-6ubuntu1~gutsy2) ...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_se-tvwy2aUs/R7YLiHaKc8I/AAAAAAAAAAg/6ZcGnOBx5nY/s1600-h/Screenshot-MygTwitter+1.0beta.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_se-tvwy2aUs/R7YLiHaKc8I/AAAAAAAAAAg/6ZcGnOBx5nY/s320/Screenshot-MygTwitter+1.0beta.png" alt="" id="BLOGGER_PHOTO_ID_5167330303186465730" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;That's all, folks.&lt;br /&gt;&lt;br /&gt;It's quite possible that you hated it ... No problem, all you need is:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;bzr branch lp:gtwitter/1.0-beta6&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;to easily make it the way you &lt;span style="font-weight: bold;"&gt;want&lt;/span&gt; and then wait 45 minutes to spread the &lt;span style="font-weight: bold;"&gt;free-software&lt;/span&gt; joy amongst your friends.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314215202859927549-5846189919710489951?l=cprov.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cprov.blogspot.com/feeds/5846189919710489951/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314215202859927549&amp;postID=5846189919710489951' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314215202859927549/posts/default/5846189919710489951'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314215202859927549/posts/default/5846189919710489951'/><link rel='alternate' type='text/html' href='http://cprov.blogspot.com/2008/02/about-branches-and-ppas.html' title='About Branches and PPAs'/><author><name>Celso Providelo</name><uri>http://www.blogger.com/profile/06859558841565963420</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_se-tvwy2aUs/SKCl0GFOolI/AAAAAAAAAV0/j93Jdn-Ex4c/s1600-R/cprov_mugshot.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_se-tvwy2aUs/R7YLh3aKc7I/AAAAAAAAAAY/jf6BP7g3cSA/s72-c/Screenshot-gTwitter+1.0beta.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314215202859927549.post-5781042615169065882</id><published>2007-08-19T21:41:00.000-07:00</published><updated>2007-08-19T22:40:48.110-07:00</updated><title type='text'>"Inbox Zero" in action</title><content type='html'>Recently, I was suggested to take a look at &lt;a href="http://www.43folders.com/izero/"&gt;Inbox Zero - action-based email"&lt;/a&gt; article by Merlin Mann (of http://www.43folders.com).&lt;br /&gt;&lt;br /&gt;In few words, it basically introduces a programmatic way to &lt;b&gt;process&lt;/b&gt; your incoming messages in order to maximize the actual task demanded by them.&lt;br /&gt;&lt;br /&gt;I found the approach &lt;b&gt;very&lt;/b&gt; useful, specially in a environment like we have in Canonical, with a high flux of daily messages (around 1k  including Launchpad, Ubuntu and internal communication) of which, at least, 20 % would, theoretically, require some action from me.&lt;br /&gt;&lt;br /&gt;The fact is, I must recognize, that only a small part of the demanded actions are taken at a reasonable time, most of them are delayed by a explicit inefficiency when dealing with email. &lt;br /&gt;&lt;br /&gt;Part of the admitted inefficiency is &lt;i&gt;acceptable&lt;/i&gt; since, as a programmer, I still have to deliver some work and it does have higher priority (!). However it is clear that I could continue to do my work (maybe more) and become more responsive if I adopt a better way to deal with emails.&lt;br /&gt;&lt;br /&gt;Well, the title of the post says "in action", so let's go for it:&lt;br /&gt;&lt;br /&gt;First, I've switched to Gmail sometime ago and the byzantine "enormous number of folders &amp; filter" were inherited from a long time using IMAP/POP based emails accounts.&lt;br /&gt;&lt;br /&gt;That's gone ! I've only preserved company/wide-topic tags (that's what gmail calls it, actually) and they are:&lt;br /&gt;&lt;br /&gt; * Gwyddion: all messages related to the &lt;a href="http://www.gwyddion.com"&gt;Gwyddion&lt;/a&gt; scope. it includes system/server messages, development &amp; bugs mailistings;&lt;br /&gt; * Async: all messages related to &lt;a href="http://www.async.com.br"&gt;Async&lt;/a&gt;, including kiwi-dev and internal communication; &lt;br /&gt; * Canonical: Canonical communications and Launchpad development messages;&lt;br /&gt; * Ubuntu: Ubuntu development messages;&lt;br /&gt; * Personal: everything else that do not fit in the categories above, including several developments maillists like Trac, Twisted and MSPGCC.&lt;br /&gt;&lt;br /&gt;What is the aim of this severe change ? &lt;br /&gt;&lt;br /&gt;I expect to give more attention to the messages that really deserve it, for instance, all Canonical messages will be processed in 30 minutes batches, i.e, I expect to spend 2 or 3 minutes one each core-hours processing them.&lt;br /&gt;&lt;br /&gt;Gwyddion &amp; Async related messages can be processed in a less frequent manner, let's say once every 2 or 3 hours. That's actually the usual ETA for actions in that area anyway.&lt;br /&gt;&lt;br /&gt;Finally, 'Personal' messages will be processed maximum twice or three times a day, normally before start, after lunch and after finished my core-hours, times when I will need something to 'warm up'. Honestly, nobody will die if I do that.&lt;br /&gt;&lt;br /&gt;Summing up, considering that my core-hous varies between 8 and 9 hours a day, I expect to spend:&lt;br /&gt;&lt;br /&gt; * 8 x 3 minutes = 24 minutes processing Canonical messages;&lt;br /&gt; * 4 x 3 minutes = 12 minutes processing Gwyddion &amp; Async messages;&lt;br /&gt; * 0 minutes dealing with Personal messages during core-hours;&lt;br /&gt;&lt;br /&gt;Right, it is still 36 minutes, about 5 % of my day, 'dealing' with a pile of messages.&lt;br /&gt;&lt;br /&gt;One could say it is still too much, however, I expect to be a lot more responsive for messages that requires me to only *nod* or say "Yes, sir. We can do that. What else ?" ... And, as far as I can tell, a considerable amount of my incoming messages are like that.&lt;br /&gt;&lt;br /&gt;Quick and precise answers will increase the my "information throughput level" and benefit the entire community that I take part (or, at least, those persons that depend on me on a certain moment). Also having a constant amount of time applied/spent in a given task will help me to optimize it if necessary (doesn't it really look like programming ?).&lt;br /&gt;&lt;br /&gt;That's it ... check new messages in the respective folders at the established frequency, answer those that you can with a Yes/No (obviously, two paragraphs answers are included in this category) and defer (in gmail it would be &lt;b&gt;star it&lt;/b&gt;) those that you will have to think about. The deferred messages will have to be dealt as Tasks during your day, scheduled according their priorities (decided during the processing time).&lt;br /&gt;&lt;br /&gt;The game is all about keeping your Inbox (specific folders) empty at the end of their 'processing period' and big *bonus* for ending the day also with "Zero Starred" messages.&lt;br /&gt;&lt;br /&gt;(Your friends will understand if your Personal messages take a little longer to be answered, thing that won't happen to your bosses/clients ...)&lt;br /&gt;&lt;br /&gt;I will come later with more accurate statistics about this &lt;i&gt;experiment&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;The video of the presentation at Google is available in http://www.merlinmann.com/2007/07/26/google-inbox-zero/.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314215202859927549-5781042615169065882?l=cprov.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cprov.blogspot.com/feeds/5781042615169065882/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314215202859927549&amp;postID=5781042615169065882' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314215202859927549/posts/default/5781042615169065882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314215202859927549/posts/default/5781042615169065882'/><link rel='alternate' type='text/html' href='http://cprov.blogspot.com/2007/08/inbox-zero-in-action.html' title='&quot;Inbox Zero&quot; in action'/><author><name>Celso Providelo</name><uri>http://www.blogger.com/profile/06859558841565963420</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_se-tvwy2aUs/SKCl0GFOolI/AAAAAAAAAV0/j93Jdn-Ex4c/s1600-R/cprov_mugshot.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314215202859927549.post-3802678892846139237</id><published>2007-07-25T19:18:00.000-07:00</published><updated>2007-07-25T19:24:46.150-07:00</updated><title type='text'>Python for Embedded Systems (reposting from old blog)</title><content type='html'>I hope the &lt;a href="http://www.telit.co.it/product.asp?productId=90"&gt;GM862-QUAD&lt;/a&gt; was just the begin of the Python-enable devices age in embedded systems.&lt;br /&gt;&lt;br /&gt;It's a GSM/GPRS QuadriBand module with complete TCP/IP stack and embedded CMOS camera support, which also allows users to run a python application.&lt;br /&gt;&lt;br /&gt;The embedded python interpreter is a simplified port of the ancient version 1.5.2, and counts with the usual default types:&lt;br /&gt;&lt;br /&gt;* long&lt;br /&gt;* float&lt;br /&gt;* complex&lt;br /&gt;&lt;br /&gt;and modules:&lt;br /&gt;&lt;br /&gt;* marshal&lt;br /&gt;* imp&lt;br /&gt;* sys&lt;br /&gt;&lt;br /&gt;Additionally it also provide some core-specific modules:&lt;br /&gt;&lt;br /&gt;* MDM: interface between Python and mobile internal AT command handling;&lt;br /&gt;* SER: interface between Python and mobile internal serial port ASC0 direct handling;&lt;br /&gt;* GPIO: interface between Python and mobile internal general purpose input output direct handling;&lt;br /&gt;* MOD: interface between Python and mobile miscellaneous functions.&lt;br /&gt;&lt;br /&gt;as specified in the manual, but the code, unfortunately isn't free, yet.&lt;br /&gt;&lt;br /&gt;Hardware platform is not divulged, but it's certainly ARM-based and probably can incorporate a lot of recent free-software development in this area, like, for instance, the maemo for Texas &lt;a href="http://focus.ti.com/general/docs/wtbu/wtbusplashcontent.tsp?templateId=6123&amp;contentId=4758"&gt;OMAP&lt;/a&gt; platform used in &lt;a href="http://europe.nokia.com/770"&gt;Nokia 770/800&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314215202859927549-3802678892846139237?l=cprov.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cprov.blogspot.com/feeds/3802678892846139237/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314215202859927549&amp;postID=3802678892846139237' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314215202859927549/posts/default/3802678892846139237'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314215202859927549/posts/default/3802678892846139237'/><link rel='alternate' type='text/html' href='http://cprov.blogspot.com/2007/07/python-for-embedded-systems-reposting.html' title='Python for Embedded Systems (reposting from old blog)'/><author><name>Celso Providelo</name><uri>http://www.blogger.com/profile/06859558841565963420</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_se-tvwy2aUs/SKCl0GFOolI/AAAAAAAAAV0/j93Jdn-Ex4c/s1600-R/cprov_mugshot.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314215202859927549.post-1059517409947898962</id><published>2007-07-25T19:02:00.001-07:00</published><updated>2007-07-25T19:14:45.869-07:00</updated><title type='text'>(Late) birthday pictures</title><content type='html'>Check the pictures organized by &lt;a href="http://www.gwyddion.com/~cprov/jkirner.html"&gt;Janice&lt;/a&gt; and performed by &lt;span style="font-style:italic;"&gt;Amelie&lt;/span&gt; (our beautiful female boxer):&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.gwyddion.com/~cprov/files/cadeobolo.jpg"&gt;Where is the cake ?&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.gwyddion.com/~cprov/files/cantando.jpg"&gt;Singing ... happy birthday to you ...&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.gwyddion.com/~cprov/files/comendo.jpg"&gt;Eating the only snack available&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314215202859927549-1059517409947898962?l=cprov.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cprov.blogspot.com/feeds/1059517409947898962/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314215202859927549&amp;postID=1059517409947898962' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314215202859927549/posts/default/1059517409947898962'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314215202859927549/posts/default/1059517409947898962'/><link rel='alternate' type='text/html' href='http://cprov.blogspot.com/2007/07/late-birthday-pictures.html' title='(Late) birthday pictures'/><author><name>Celso Providelo</name><uri>http://www.blogger.com/profile/06859558841565963420</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_se-tvwy2aUs/SKCl0GFOolI/AAAAAAAAAV0/j93Jdn-Ex4c/s1600-R/cprov_mugshot.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314215202859927549.post-8776965813246025134</id><published>2007-07-23T17:41:00.000-07:00</published><updated>2007-07-25T06:10:25.635-07:00</updated><title type='text'>VIVOZAP working on Ubuntu (dapper or feisty)</title><content type='html'>Being as lazy as possible, I've just followed &lt;a href="http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=5698"&gt;this article&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The &lt;span style="font-weight:bold;"&gt;key-thing&lt;/span&gt; is:&lt;br /&gt;&lt;br /&gt;{{{&lt;br /&gt;$ sudo rmmod usbserial &amp;&amp; sudo modprobe usbserial vendor=0xc88 product=0x17da&lt;br /&gt;}}}&lt;br /&gt;&lt;br /&gt;(apart from the authentication "&lt;phone-number&gt;@vivozap.com.br/vivo" and the dial number "#777")&lt;br /&gt;&lt;br /&gt;The modem configuration is trivial, and can be done either by editing ppp scripts or using the desktop GUI, doesn't matter.&lt;br /&gt;&lt;br /&gt;Frankly, I couldn't see any benefit or &lt;span style="font-weight:bold;"&gt;hacker&lt;/span&gt; options in ppp config.&lt;br /&gt;&lt;br /&gt;What keeps bothering me is the fact that I have to eject the card, reload the module and insert the card again each time the connection falls or the machine reboots.&lt;br /&gt;&lt;br /&gt;(obviously I have modified my &lt;span style="font-weight:bold;"&gt;/etc/modules&lt;/span&gt;  with the proper vendor/product, but it doesn't seem to work as expected)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314215202859927549-8776965813246025134?l=cprov.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cprov.blogspot.com/feeds/8776965813246025134/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314215202859927549&amp;postID=8776965813246025134' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314215202859927549/posts/default/8776965813246025134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314215202859927549/posts/default/8776965813246025134'/><link rel='alternate' type='text/html' href='http://cprov.blogspot.com/2007/07/vivozap-working-on-ubuntu-dapper-or.html' title='VIVOZAP working on Ubuntu (dapper or feisty)'/><author><name>Celso Providelo</name><uri>http://www.blogger.com/profile/06859558841565963420</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_se-tvwy2aUs/SKCl0GFOolI/AAAAAAAAAV0/j93Jdn-Ex4c/s1600-R/cprov_mugshot.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314215202859927549.post-8551311482861332260</id><published>2007-05-06T01:17:00.000-07:00</published><updated>2007-05-07T06:39:26.949-07:00</updated><title type='text'></title><content type='html'>UDS Sevilla&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="https://wiki.ubuntu.com/UDS-Sevilla"&gt;Ubuntu Developer Summit&lt;/a&gt; has just started in a &lt;a href="http://www.hoteles-silken.com/hoteles/presentation.php?idmenuleft=0&amp;deploy=true&amp;amp;idhotel=5"&gt;gorgeous venue in Sevilla&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The meeting atmosphere is great !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314215202859927549-8551311482861332260?l=cprov.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cprov.blogspot.com/feeds/8551311482861332260/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314215202859927549&amp;postID=8551311482861332260' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314215202859927549/posts/default/8551311482861332260'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314215202859927549/posts/default/8551311482861332260'/><link rel='alternate' type='text/html' href='http://cprov.blogspot.com/2007/05/uds-sevilla-ubuntu-developer-summit-has.html' title=''/><author><name>Celso Providelo</name><uri>http://www.blogger.com/profile/06859558841565963420</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_se-tvwy2aUs/SKCl0GFOolI/AAAAAAAAAV0/j93Jdn-Ex4c/s1600-R/cprov_mugshot.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314215202859927549.post-894526909585646950</id><published>2007-04-17T20:09:00.001-07:00</published><updated>2007-04-17T20:09:53.601-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='network'/><title type='text'>IPROUTE2 is your friend</title><content type='html'>I've lost several hours on the multiple uplink in a single machine problem, tried several tutorials &amp;amp; How-To (most of them including iptables mangle marks crap), but discovered this simple and objective document about IPROUTE which sorted it in few simple lines:&lt;br /&gt;&lt;br /&gt;http://lartc.org/howto/lartc.rpdb.multiple-links.html&lt;br /&gt;&lt;br /&gt;Thank you, LARTC guys.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314215202859927549-894526909585646950?l=cprov.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cprov.blogspot.com/feeds/894526909585646950/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314215202859927549&amp;postID=894526909585646950' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314215202859927549/posts/default/894526909585646950'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314215202859927549/posts/default/894526909585646950'/><link rel='alternate' type='text/html' href='http://cprov.blogspot.com/2007/04/iproute2-is-your-friend.html' title='IPROUTE2 is your friend'/><author><name>Celso Providelo</name><uri>http://www.blogger.com/profile/06859558841565963420</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_se-tvwy2aUs/SKCl0GFOolI/AAAAAAAAAV0/j93Jdn-Ex4c/s1600-R/cprov_mugshot.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6314215202859927549.post-8676398428588498311</id><published>2007-04-17T08:03:00.000-07:00</published><updated>2007-04-17T10:23:06.638-07:00</updated><title type='text'>New blog</title><content type='html'>Hello World !&lt;br /&gt;&lt;br /&gt;BTW,  Google Accounts migration sucks !!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6314215202859927549-8676398428588498311?l=cprov.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cprov.blogspot.com/feeds/8676398428588498311/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6314215202859927549&amp;postID=8676398428588498311' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6314215202859927549/posts/default/8676398428588498311'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6314215202859927549/posts/default/8676398428588498311'/><link rel='alternate' type='text/html' href='http://cprov.blogspot.com/2007/04/new-blog.html' title='New blog'/><author><name>Celso Providelo</name><uri>http://www.blogger.com/profile/06859558841565963420</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_se-tvwy2aUs/SKCl0GFOolI/AAAAAAAAAV0/j93Jdn-Ex4c/s1600-R/cprov_mugshot.png'/></author><thr:total>0</thr:total></entry></feed>
