<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Inspirated &#187; Debian</title>
	<atom:link href="http://inspirated.com/tag/debian/feed" rel="self" type="application/rss+xml" />
	<link>http://inspirated.com</link>
	<description>krkhan&#039;s blog</description>
	<lastBuildDate>Mon, 02 Jan 2012 20:58:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Summing up Google Summer of Code 2010</title>
		<link>http://inspirated.com/2010/09/05/summing-up-gsoc-2010</link>
		<comments>http://inspirated.com/2010/09/05/summing-up-gsoc-2010#comments</comments>
		<pubDate>Sun, 05 Sep 2010 01:10:45 +0000</pubDate>
		<dc:creator>krkhan</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Arsenal]]></category>
		<category><![CDATA[Bugzilla]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Curl]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[GSoC]]></category>
		<category><![CDATA[Launchpad]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[XML-RPC]]></category>

		<guid isPermaLink="false">http://inspirated.com/?p=315</guid>
		<description><![CDATA[The Program And with the final code submission uploaded at Google Code, Summer of Code 2010 officially draws to a close. What a ride it has been! My first post on Inspirated regarding Summer of Code took place all the way back in March 07 when I submitted a proposal for Fedora. Three and a [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><h3>The Program</h3>
<p>And with the final code submission <a href="http://code.google.com/p/google-summer-of-code-2010-ubuntu/">uploaded</a> at Google Code, Summer of Code 2010 officially draws to a close. What a ride it has been!</p>
<p>My <a href="http://inspirated.com/2007/03/16/summer-of-code-accepting-student-applications">first post</a> on Inspirated regarding Summer of Code took place all the way back in March 07 when I submitted a proposal for Fedora. Three and a half years later, I finally appreciate the fact that GSoC is about <em>much</em> more than just the <em>code</em>. In fact, &#8220;Summer of Open-Source&#8221; would probably be a more suitable title for the program despite sounding half as sexy. When my proposals got rejected I had to learn, contribute and integrate more with the open-source crowd. When one of the applications finally made it beyond the selection process, I had to &#8220;bond&#8221; with the organization I was going to be working with. During the coding weeks, I had to communicate regularly with my mentor and Ubuntu community in order to ensure that I was progressing in the right direction. To summarize, becoming a part of the open-source universe is as important an aspect of GSoC as producing open-source code.</p>
<h3>The Code</h3>
<p>Here&#8217;s a quick rundown of the code produced for the program (without including the intermediate branches and patches):</p>
<h4>Attachment Search</h4>
<ul>
<li><a href="http://bazaar.launchpad.net/~launchpad-pqm/launchpad/devel/revision/11121">Merge Revision</a>: Expot API call for listing the source packages a team has subscribed to.</li>
<li><a href="https://code.launchpad.net/~inspirated/launchpad/implement-Bug-findAttachments">Branch</a>: Search attachment files using Horspool&#8217;s algorithm. The branch eventually didn&#8217;t make it upstream as it was decided that with the existing implementation the searches would be too expensive for Launchpad, essentially requiring a solution with a different design approach.</li>
</ul>
<h4>Arsenal and python-launchpadlib-toolkit Modifications</h4>
<ul>
<li><a href="http://bazaar.launchpad.net/~arsenal-devel/arsenal/master/annotate/689/arsenal/application.py">Package</a>, <a href="http://bazaar.launchpad.net/~arsenal-devel/arsenal/master/annotate/689/arsenal/bugzilla_adapter.py">Package</a>, <a href="http://bazaar.launchpad.net/~arsenal-devel/arsenal/python-launchpadlib-toolkit/annotate/head%3A/lpltk/attachments.py">Package</a>: These libraries had to be modified extensively in order to provide support for the Arsenal scripts developed during GSoC. Classes like <code>LaunchpadApplication</code>, <code>LaunchpadBugzillaApplication</code> and <code>BugzillaAdapter</code> perform regular chores for these applications e.g., authentication, web-scraping and keyring manipulation.</li>
</ul>
<h4>Attachment Upstreamer</h4>
<ul>
<li><a href="http://bazaar.launchpad.net/~arsenal-devel/arsenal/master/annotate/689/scripts/send-attachments-upstream.py">Script</a>: Command-line script for upstreaming attachments from a Launchpad bug to a remote Bugzilla.</li>
<li><a href="http://bazaar.launchpad.net/~arsenal-devel/arsenal/master/annotate/689/scripts/send-attachments-upstream.cgi">Script</a>, <a href="http://bazaar.launchpad.net/~arsenal-devel/arsenal/master/annotate/689/web/templates/send-attachments-upstream.html">Template</a>: CGI script for demonstrating the capabilities of Arsenal library and python-launchpadlib-toolkit.</li>
</ul>
<h4>Bug Matchmaker</h4>
<blockquote><p>&#8220;Incompatibility: In matrimony, a similarity of tastes, particularly the taste for domination.&#8221; &#8212; <em>Ambrose Bierce</em></p></blockquote>
<p>Fortunately, matchmaking across different bug trackers was easier.</p>
<ul>
<li><a href="http://bazaar.launchpad.net/%7Earsenal-devel/arsenal/master/annotate/689/scripts/match-upstream.py">Script</a>: Command-line script for searching a remote Bugzilla for similar entries to a given Launchpad bug.</li>
</ul>
<h4>Automatic Patcher</h4>
<ul>
<li><a href="http://bazaar.launchpad.net/~arsenal-devel/arsenal/master/annotate/689/scripts/bug-patcher.py">Script</a>: Command-line script for automatically generating patched Debian packages for a given Launchpad bug using diff files found in its attachments.</li>
</ul>
<h3>The Nutshell</h3>
<p>The processes of collaborating, getting code reviewed and improving accordingly has gone a long way in instilling more confidence in me as a FLOSS developer. On the technological side of things I&#8217;ve had to deal with REST APIs, Zope Interfaces, OAuth procedures, web-scrapers based on Curl, Debian patch systems, a plethora of Python and a good-bit doze of different development paradigms.</p>
<p>It has been awesome working with the Ubuntu community and Bryce&#8217;s guidance has been absolutely crucial for ensuring that something useful was produced by my project. I&#8217;d like to thank everyone involved in the program for making it so much <em>fun</em>. I Know What I Did This Summer.</p>
<div class="shr-publisher-315"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic --><hr />
<p><small><a href="http://inspirated.com/2010/09/05/summing-up-gsoc-2010">Permalink</a> |
<a href="http://inspirated.com/2010/09/05/summing-up-gsoc-2010#comments">2 comments</a>
<br/>
Post tags: <a href="http://inspirated.com/tag/ajax" rel="tag">AJAX</a>, <a href="http://inspirated.com/tag/api" rel="tag">API</a>, <a href="http://inspirated.com/tag/arsenal" rel="tag">Arsenal</a>, <a href="http://inspirated.com/tag/bugzilla" rel="tag">Bugzilla</a>, <a href="http://inspirated.com/tag/code" rel="tag">Code</a>, <a href="http://inspirated.com/tag/curl" rel="tag">Curl</a>, <a href="http://inspirated.com/tag/debian" rel="tag">Debian</a>, <a href="http://inspirated.com/tag/gsoc" rel="tag">GSoC</a>, <a href="http://inspirated.com/tag/launchpad" rel="tag">Launchpad</a>, <a href="http://inspirated.com/tag/open-source" rel="tag">Open Source</a>, <a href="http://inspirated.com/tag/python" rel="tag">Python</a>, <a href="http://inspirated.com/tag/rest" rel="tag">REST</a>, <a href="http://inspirated.com/tag/ubuntu" rel="tag">Ubuntu</a>, <a href="http://inspirated.com/tag/xml-rpc" rel="tag">XML-RPC</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://inspirated.com/2010/09/05/summing-up-gsoc-2010/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Summer of Code Progress: Wrapping up</title>
		<link>http://inspirated.com/2010/08/17/summer-of-code-progress-wrapping-up</link>
		<comments>http://inspirated.com/2010/08/17/summer-of-code-progress-wrapping-up#comments</comments>
		<pubDate>Tue, 17 Aug 2010 00:44:40 +0000</pubDate>
		<dc:creator>krkhan</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Arsenal]]></category>
		<category><![CDATA[Bugzilla]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Curl]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[GSoC]]></category>
		<category><![CDATA[Launchpad]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[XML-RPC]]></category>

		<guid isPermaLink="false">http://inspirated.com/?p=313</guid>
		<description><![CDATA[As eleven weeks of the-best-summer-ever draw to an end, here&#8217;s the final coding report for GSoC 2010. Related Links Summer of Code Archive Inspirated Code Report Guidelines Ubuntu Wiki Original Proposal Ubuntu Wiki Time Spent 60 hours. Highlights The week was spent mostly cleaning and packaging the code accumulated over the summer. To demonstrate some [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>As eleven weeks of the-best-summer-ever draw to an end, here&#8217;s the final coding report for GSoC 2010.</p>
<h3>Related Links</h3>
<table align="center" summary="Intro" width="75%">
<tr>
<td align="right" class="cell">
Summer of Code Archive
</td>
<td align="left" class="cell">
<a href="http://code.inspirated.com/misc/google-summer-of-code/">Inspirated Code</a>
</td>
</tr>
<tr>
<td align="right" class="cell">
Report Guidelines
</td>
<td align="left" class="cell">
<a href="https://wiki.ubuntu.com/GoogleSoC2010/Students#Reports">Ubuntu Wiki</a>
</td>
</tr>
<tr>
<td align="right" class="cell">
Original Proposal
</td>
<td align="left" class="cell">
<a href="https://wiki.ubuntu.com/GSoC/2010/KamranKhan">Ubuntu Wiki</a>
</td>
</tr>
</table>
<h3>Time Spent</h3>
<p>60 hours.</p>
<h3>Highlights</h3>
<p>The week was spent mostly cleaning and packaging the code accumulated over the summer. To demonstrate some of the aspects of the Arsenal library, I also created a proof-of-concept CGI script which upstreams Launchpad attachments for a bug to a remote Bugzilla. The task was fun, as the efforts put into refactoring things into <code>launchpadlib-toolkit</code> and <code>BugzillaAdapter</code> finally paid off and it took only a few hours to get the script working (that too with most of the time spent learning AJAX).</p>
<h3>Concerns</h3>
<p>None.</p>
<h3>Waiting Items</h3>
<p>None.</p>
<h3>Stalled Items</h3>
<p>None.</p>
<h3>Accomplishments</h3>
<ul>
<li><a href="https://code.launchpad.net/~inspirated/arsenal/bug-patcher">Branch</a>, <a href="http://bazaar.launchpad.net/~arsenal-devel/arsenal/master/revision/685">Merge Revision</a>:
<ul>
<li><a href="http://bazaar.launchpad.net/~inspirated/arsenal/bug-patcher/revision/688">Revision</a>: Added support for quilt.</li>
<li><a href="http://bazaar.launchpad.net/~inspirated/arsenal/bug-patcher/revision/689">Revision</a>: Added support for using patch utility for quilt packages where the diff files update debian/* stuff themselves.</li>
<li><a href="http://bazaar.launchpad.net/~inspirated/arsenal/bug-patcher/revision/690">Revision</a>: Cleaned up the library to provide <code>LaunchpadApplication</code> and <code>LaunchpadBugzillaApplication</code>.</li>
<li><a href="http://bazaar.launchpad.net/~inspirated/arsenal/bug-patcher/revision/691">Revision</a>: Fixed <code>BugPatcher</code> to use <code>LaunchpadApplication</code> as base class.</li>
<li><a href="http://bazaar.launchpad.net/~inspirated/arsenal/bug-patcher/revision/692">Revision</a>: Cleaned up <code>LaunchpadBugzillaApplication</code> to take username password as arguments instead of modifiers.</li>
</ul>
</li>
<li><a href="https://code.launchpad.net/+branch/~inspirated/arsenal/fix-debian">Branch</a>, <a href="http://bazaar.launchpad.net/~arsenal-devel/arsenal/master/revision/687">Merge Revision</a>: Fixed packaging issues to release <code>deb</code>s for <a href="https://bugs.launchpad.net/arsenal/+bug/617980/+attachment/1490544/+files/karmic-log.tar.gz">Karmic</a> and <a href="https://bugs.launchpad.net/arsenal/+bug/617980/+attachment/1491856/+files/lucid-log.tar.gz">Lucid</a>.</li>
<li><a href="https://code.launchpad.net/~inspirated/arsenal/send-attachments-upstream-ajax">Branch</a>: Implemented a CGI script demonstrating the upstreaming capabilities of Arsenal library. An example run can be seen in <a href="http://inspirated.com/uploads/send-attachments-upstream-ajax.ogv">this</a> screencast.</li>
</ul>
<h3>Minor Tasks</h3>
<ul>
<li><a href="http://bazaar.launchpad.net/~arsenal-devel/arsenal/master/revision/686">Revision</a>: Some more code cleanup.</li>
<li><a href="http://bazaar.launchpad.net/~inspirated/arsenal/fix-debian/revision/690">Revision</a>: Check <code>launchpadlib</code> version before appending &#8216;<code>/beta</code>&#8216; during API URL detection.</li>
</ul>
<h3>Actions for the Following Report</h3>
<ul>
<li>Fill the final evaluation.</li>
<li>Write a summary of the overall GSoC experience.</li>
<li>Start waiting for the t-shirt.</li>
</ul>
<div class="shr-publisher-313"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic --><hr />
<p><small><a href="http://inspirated.com/2010/08/17/summer-of-code-progress-wrapping-up">Permalink</a> |
<a href="http://inspirated.com/2010/08/17/summer-of-code-progress-wrapping-up#comments">One comment</a>
<br/>
Post tags: <a href="http://inspirated.com/tag/ajax" rel="tag">AJAX</a>, <a href="http://inspirated.com/tag/api" rel="tag">API</a>, <a href="http://inspirated.com/tag/arsenal" rel="tag">Arsenal</a>, <a href="http://inspirated.com/tag/bugzilla" rel="tag">Bugzilla</a>, <a href="http://inspirated.com/tag/code" rel="tag">Code</a>, <a href="http://inspirated.com/tag/curl" rel="tag">Curl</a>, <a href="http://inspirated.com/tag/debian" rel="tag">Debian</a>, <a href="http://inspirated.com/tag/gsoc" rel="tag">GSoC</a>, <a href="http://inspirated.com/tag/launchpad" rel="tag">Launchpad</a>, <a href="http://inspirated.com/tag/open-source" rel="tag">Open Source</a>, <a href="http://inspirated.com/tag/python" rel="tag">Python</a>, <a href="http://inspirated.com/tag/rest" rel="tag">REST</a>, <a href="http://inspirated.com/tag/ubuntu" rel="tag">Ubuntu</a>, <a href="http://inspirated.com/tag/xml-rpc" rel="tag">XML-RPC</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://inspirated.com/2010/08/17/summer-of-code-progress-wrapping-up/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
<enclosure url="http://inspirated.com/uploads/send-attachments-upstream-ajax.ogv" length="2610762" type="video/ogg" />
		</item>
		<item>
		<title>Summer of Code Progress: Refactoring, Matching and Patching</title>
		<link>http://inspirated.com/2010/08/10/summer-of-code-progress-refactoring-matching-and-patching</link>
		<comments>http://inspirated.com/2010/08/10/summer-of-code-progress-refactoring-matching-and-patching#comments</comments>
		<pubDate>Mon, 09 Aug 2010 22:53:24 +0000</pubDate>
		<dc:creator>krkhan</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Arsenal]]></category>
		<category><![CDATA[Bugzilla]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Curl]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[GSoC]]></category>
		<category><![CDATA[Launchpad]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[XML-RPC]]></category>

		<guid isPermaLink="false">http://inspirated.com/?p=310</guid>
		<description><![CDATA[Related Links Summer of Code Archive Inspirated Code Report Guidelines Ubuntu Wiki Original Proposal Ubuntu Wiki Time Spent 90 hours. Highlights Refactored Attachment Upstreamer in order to migrate Launchpad and Bugzilla chores to launchpadlib-toolkit and BugzillaAdapter. Implemented match-upstream.py for matchmaking Launchpad bugs in remote trackers. Implemented bug-patcher.py for generating patched Debian packages for Launchpad bugs. [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><h3>Related Links</h3>
<table align="center" summary="Intro" width="75%">
<tr>
<td align="right" class="cell">
Summer of Code Archive
</td>
<td align="left" class="cell">
<a href="http://code.inspirated.com/misc/google-summer-of-code/">Inspirated Code</a>
</td>
</tr>
<tr>
<td align="right" class="cell">
Report Guidelines
</td>
<td align="left" class="cell">
<a href="https://wiki.ubuntu.com/GoogleSoC2010/Students#Reports">Ubuntu Wiki</a>
</td>
</tr>
<tr>
<td align="right" class="cell">
Original Proposal
</td>
<td align="left" class="cell">
<a href="https://wiki.ubuntu.com/GSoC/2010/KamranKhan">Ubuntu Wiki</a>
</td>
</tr>
</table>
<h3>Time Spent</h3>
<p>90 hours.</p>
<h3>Highlights</h3>
<ul>
<li>Refactored Attachment Upstreamer in order to migrate Launchpad and Bugzilla chores to <code>launchpadlib-toolkit</code> and <code>BugzillaAdapter</code>.</li>
<li>Implemented <code>match-upstream.py</code> for matchmaking Launchpad bugs in remote trackers.</li>
<li>Implemented <code>bug-patcher.py</code> for generating patched Debian packages for Launchpad bugs.</li>
</ul>
<h3>Concerns</h3>
<p>None.</p>
<h3>Waiting Items</h3>
<p>None.</p>
<h3>Stalled Items</h3>
<p>None.</p>
<h3>Accomplishments</h3>
<ul>
<li><a href="https://code.launchpad.net/+branch/~inspirated/arsenal/send-attachments-lpltk">Branch</a>, <a href="http://bazaar.launchpad.net/~arsenal-devel/arsenal/master/revision/682">Merge Revision</a>: Migrated Attachment Upstreamer to use <code>launchpadlib-toolkit</code>.</li>
<li><a href="https://code.launchpad.net/+branch/~inspirated/arsenal/send-attachments-bzadapter">Branch</a>, <a href="https://code.launchpad.net/+branch/~inspirated/arsenal/send-attachments-bzadapter">Merge Revision</a>: Migrated Attachment Upstreamer to use <code>BugzillaAdapter</code>.</li>
<li><a href="http://bazaar.launchpad.net/~arsenal-devel/arsenal/python-launchpadlib-toolkit/revision/44">Revision</a>: Updated <code>launchpadlib-toolkit</code> to serve scripts such as Attachment Upstreamer through attachment filters and wrappers.</li>
<li><a href="https://code.launchpad.net/+branch/~inspirated/arsenal/match-upstream">Branch</a>, <a href="http://bazaar.launchpad.net/~arsenal-devel/arsenal/master/revision/684">Merge Revision</a>: Implemented <code>match-upstream.py</code> with support for multiple level searches for finding a bug&#8217;s attributes in a remote tracker. Supports searching titles, git commit ids and attachment filenames.</li>
<li><a href="https://code.launchpad.net/~inspirated/arsenal/bug-patcher">Branch</a>: Implemented <code>bug-patcher.py</code> with support for modifying Debian packages which use <code>cdbs</code> patch system to generate a patched version using a bug&#8217;s attachments.</li>
</ul>
<h3>Minor Tasks</h3>
<ul>
<li>Created a <code>LaunchpadBugzillaApp</code> class which shares majority of the initialization code for <code>send-attachments-upstream.py</code>, <code>match-upstream.py</code> and <code>bug-patcher.py</code>.</li>
<li>Fixed various bugs in <code>LaunchpadBugzillaApp</code> for dealing with Gnome Keyring and Launchpad authentication.</li>
<li>Added various filters to <code>launchpadlib-toolkit</code>.</li>
</ul>
<h3>Actions for the Following Report</h3>
<ul>
<li><code>LaunchpadBugzillaApp</code> should be derived from <code>LaunchpadApp</code> which would allow using the latter for scripts such as <code>bug-patcher.py</code> where Bugzilla portions aren&#8217;t required.</li>
<li>Update Bug Patcher to include support for remaining <a href="http://wiki.debian.org/debian/patches">Debian patch systems</a>.</li>
<li>Clean up the code accumulated over GSoC development and write tests.</li>
</ul>
<div class="shr-publisher-310"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic --><hr />
<p><small><a href="http://inspirated.com/2010/08/10/summer-of-code-progress-refactoring-matching-and-patching">Permalink</a> |
<a href="http://inspirated.com/2010/08/10/summer-of-code-progress-refactoring-matching-and-patching#comments">No comment</a>
<br/>
Post tags: <a href="http://inspirated.com/tag/api" rel="tag">API</a>, <a href="http://inspirated.com/tag/arsenal" rel="tag">Arsenal</a>, <a href="http://inspirated.com/tag/bugzilla" rel="tag">Bugzilla</a>, <a href="http://inspirated.com/tag/code" rel="tag">Code</a>, <a href="http://inspirated.com/tag/curl" rel="tag">Curl</a>, <a href="http://inspirated.com/tag/debian" rel="tag">Debian</a>, <a href="http://inspirated.com/tag/gsoc" rel="tag">GSoC</a>, <a href="http://inspirated.com/tag/launchpad" rel="tag">Launchpad</a>, <a href="http://inspirated.com/tag/open-source" rel="tag">Open Source</a>, <a href="http://inspirated.com/tag/python" rel="tag">Python</a>, <a href="http://inspirated.com/tag/rest" rel="tag">REST</a>, <a href="http://inspirated.com/tag/ubuntu" rel="tag">Ubuntu</a>, <a href="http://inspirated.com/tag/xml-rpc" rel="tag">XML-RPC</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://inspirated.com/2010/08/10/summer-of-code-progress-refactoring-matching-and-patching/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bookmark Undertaker v0.3 &#8212; Picking up the threads</title>
		<link>http://inspirated.com/2010/02/21/bookmark-undertaker-v0-3-picking-up-the-threads</link>
		<comments>http://inspirated.com/2010/02/21/bookmark-undertaker-v0-3-picking-up-the-threads#comments</comments>
		<pubDate>Sun, 21 Feb 2010 15:09:55 +0000</pubDate>
		<dc:creator>krkhan</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Beautiful Soup]]></category>
		<category><![CDATA[Bookmark Undertaker]]></category>
		<category><![CDATA[Bookmarks]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Deb]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Fedora]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[PyGTK]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Red Hat]]></category>
		<category><![CDATA[RPM]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Threading]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://inspirated.com/?p=265</guid>
		<description><![CDATA[Threads are love. Threads are speed. And more often than not, threads are a consistent PITA. However, I&#8217;ve had an accidental epiphany just a few hours ago: &#8220;When in doubt When you need to communicate among threads, use synchronized Queues.&#8221; There. This magic mantra will solve more issues in your life than you can ever [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Threads are love. Threads are speed. And more often than not, threads are a consistent <abbr title="Pain in the Ass">PITA</abbr>. However, I&#8217;ve had an accidental epiphany just a few hours ago:</p>
<blockquote><p>&#8220;<del datetime="2010-02-21T14:27:15+00:00">When in doubt</del> When you need to communicate among threads, use synchronized <a href="http://docs.python.org/library/queue.html">Queue</a>s.&#8221;</p></blockquote>
<p>There. This magic mantra will solve more issues in your life than you can ever imagine, and certainly more than I expected.</p>
<p>Getting back to the topic at hand, adding threading support to the program has sped up the bookmark checking process by a factor of about 435895234. Coupled with fixing of some parsing bugs, <a href="https://launchpad.net/bmundertaker/trunk/0.3">Bookmark Undertaker v0.3</a> is finally capable of providing a quick, stable and consistent way of sanitizing your Firefox favorites:</p>
<p style="text-align: center"><img src="http://inspirated.com/uploads/bmundertaker-0.3.jpg" alt="Boomark Undertaker v0.3 Screenshot" /></p>
<p>This time, I&#8217;ve also tried to provide <a href="http://launchpad.net/bmundertaker/trunk/0.3/+download/bmundertaker_0.3-1_all.deb">Deb</a> and <a href="http://launchpad.net/bmundertaker/trunk/0.3/+download/bmundertaker-0.3-1.noarch.rpm">RPM</a> packages on the release page for easy installation by the Debian/Ubuntu/Fedora populace.</p>
<p>Ushering in the era of communist applications:</p>
<blockquote><p>&#8220;If everyone gives one thread, the poor person will have a shirt.&#8221; &#8212; <em>Russian Proverb</em></p></blockquote>
<div class="shr-publisher-265"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic --><hr />
<p><small><a href="http://inspirated.com/2010/02/21/bookmark-undertaker-v0-3-picking-up-the-threads">Permalink</a> |
<a href="http://inspirated.com/2010/02/21/bookmark-undertaker-v0-3-picking-up-the-threads#comments">No comment</a>
<br/>
Post tags: <a href="http://inspirated.com/tag/beautiful-soup" rel="tag">Beautiful Soup</a>, <a href="http://inspirated.com/tag/bookmark-undertaker" rel="tag">Bookmark Undertaker</a>, <a href="http://inspirated.com/tag/bookmarks" rel="tag">Bookmarks</a>, <a href="http://inspirated.com/tag/code" rel="tag">Code</a>, <a href="http://inspirated.com/tag/deb" rel="tag">Deb</a>, <a href="http://inspirated.com/tag/debian" rel="tag">Debian</a>, <a href="http://inspirated.com/tag/fedora" rel="tag">Fedora</a>, <a href="http://inspirated.com/tag/firefox" rel="tag">Firefox</a>, <a href="http://inspirated.com/tag/mozilla" rel="tag">Mozilla</a>, <a href="http://inspirated.com/tag/open-source" rel="tag">Open Source</a>, <a href="http://inspirated.com/tag/pygtk" rel="tag">PyGTK</a>, <a href="http://inspirated.com/tag/python" rel="tag">Python</a>, <a href="http://inspirated.com/tag/red-hat" rel="tag">Red Hat</a>, <a href="http://inspirated.com/tag/rpm" rel="tag">RPM</a>, <a href="http://inspirated.com/tag/technology" rel="tag">Technology</a>, <a href="http://inspirated.com/tag/threading" rel="tag">Threading</a>, <a href="http://inspirated.com/tag/ubuntu" rel="tag">Ubuntu</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://inspirated.com/2010/02/21/bookmark-undertaker-v0-3-picking-up-the-threads/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HOWTO: Use PyS60&#8242;s Bluetooth Console on Fedora/Ubuntu/Debian Linux</title>
		<link>http://inspirated.com/2009/10/31/howto-use-pys60s-bluetooth-console-on-fedoraubuntudebian-linux</link>
		<comments>http://inspirated.com/2009/10/31/howto-use-pys60s-bluetooth-console-on-fedoraubuntudebian-linux#comments</comments>
		<pubDate>Sat, 31 Oct 2009 18:03:50 +0000</pubDate>
		<dc:creator>krkhan</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Bluetooth]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Debugging]]></category>
		<category><![CDATA[Fedora]]></category>
		<category><![CDATA[Flag 42]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Nokia]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[PyS60]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Series 60]]></category>
		<category><![CDATA[Symbian]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://inspirated.com/?p=250</guid>
		<description><![CDATA[While developing PyS60 apps is one of the most fun things you could do with your Nokia phone, debugging them isn&#8217;t as zippy as one would hope for in a Py development environment. To make up for that, PyS60 gives the developers an option for directly connecting to the interpreter through Bluetooth. Doesn&#8217;t sound very [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>While developing PyS60 apps is one of the most fun things you could do with your Nokia phone, debugging them isn&#8217;t as zippy as one would hope for in a Py development environment. To make up for that, PyS60 gives the developers an option for directly connecting to the interpreter through Bluetooth. Doesn&#8217;t sound very appealing? How about this: You connect your laptop with the cellphone, jump in at some place in the code while your app is executing and then use lappy&#8217;s big keyboard for exploiting different code and values in the interpreter. Sounds better?</p>
<p>To accomplish this on a Linux distro, you will need the following packages installed on your system:</p>
<table align="center" summary="Required packages" cellspacing="3" cellpadding="3">
<tr>
<th align="center" style="font-size: small; border: 1px dotted">Name</th>
<th align="center" style="font-size: small; border: 1px dotted">Links</th>
</tr>
<tr>
<td align="center" style="font-size: small; border: 1px dotted"><code>gnome-bluetooth</code></td>
<td align="center" style="font-size: small; border: 1px dotted">
<ul>
<li><a href="https://admin.fedoraproject.org/pkgdb/packages/name/gnome-bluetooth">Fedora</a></li>
<li><a href="http://packages.ubuntu.com/karmic/gnome-bluetooth">Ubuntu</a></li>
<li><a href="http://packages.debian.org/lenny/gnome-bluetooth">Debian</a></li>
</ul>
</td>
</tr>
<tr>
<td align="center" style="font-size: small; border: 1px dotted"><code>uucp</code>/<code>cu</code></td>
<td align="center" style="font-size: small; border: 1px dotted">
<ul>
<li><a href="https://admin.fedoraproject.org/pkgdb/packages/name/uucp">Fedora</a></li>
<li><a href="http://packages.ubuntu.com/karmic/cu">Ubuntu</a></li>
<li><a href="http://packages.debian.org/lenny/cu">Debian</a></li>
</ul>
</td>
</tr>
</table>
<p>After making sure that both are present on your system, <a href="http://wiki.opensource.nokia.com/projects/Installing_PyS60">install PyS60</a> on your phone if you haven&#8217;t already done so.</p>
<p>Now the fun part:</p>
<ol>
<li>Switch on Bluetooth in the cellphone.
<p style="text-align: center; font-size: x-small"><img src="http://inspirated.com/uploads/pys60-rfcomm-mobile-1.jpg" alt="PyS60 Bluetooth HOWTO, Mobile screenshot #1" /></p>
</li>
<li>Launch <code>bluetooth-properties</code> and click on &#8220;Setup New Device&#8221;.
<p style="text-align: center; font-size: x-small"><img src="http://inspirated.com/uploads/pys60-rfcomm-pc-1.jpg" alt="PyS60 Bluetooth HOWTO, PC screenshot #1" /></p>
</li>
<li>Select your cellphone.
<p style="text-align: center; font-size: x-small"><img src="http://inspirated.com/uploads/pys60-rfcomm-pc-2.jpg" alt="PyS60 Bluetooth HOWTO, PC screenshot #2" /></p>
</li>
<li>You will be shown a pin.
<p style="text-align: center; font-size: x-small"><img src="http://inspirated.com/uploads/pys60-rfcomm-pc-3.jpg" alt="PyS60 Bluetooth HOWTO, PC screenshot #3" /></p>
</li>
<li>Enter the pin when queried on the cellphone.
<p style="text-align: center; font-size: x-small"><img src="http://inspirated.com/uploads/pys60-rfcomm-mobile-2.jpg" alt="PyS60 Bluetooth HOWTO, Mobile screenshot #2" /></p>
</li>
<li>The phone should be successfully paired.
<p style="text-align: center; font-size: x-small"><img src="http://inspirated.com/uploads/pys60-rfcomm-pc-4.jpg" alt="PyS60 Bluetooth HOWTO, PC screenshot #4" /></p>
</li>
<li>Authorize your Linux system to make automatic connections to the phone.
<p style="text-align: center; font-size: x-small"><img src="http://inspirated.com/uploads/pys60-rfcomm-mobile-3.jpg" alt="PyS60 Bluetooth HOWTO, Mobile screenshot #3" /></p>
</li>
<li>As <code>root</code>, run <a href="http://inspirated.com/uploads/rfcomm-listen.sh">this</a> shell script:

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">&#91;</span>root<span style="color: #000000; font-weight: bold;">@</span>orthanc ~<span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #666666; font-style: italic;"># ./rfcomm-listen.sh</span></pre></div></div>

<blockquote><p>Serial Port service registered<br />
Waiting for connection on channel 2
</p></blockquote>
</li>
<li>Launch PyS60 interpreter and select &#8220;Bluetooth Console&#8221; from the application menu.
<p style="text-align: center; font-size: x-small"><img src="http://inspirated.com/uploads/pys60-rfcomm-mobile-4.jpg" alt="PyS60 Bluetooth HOWTO, Mobile screenshot #4" /></p>
</li>
<li>Select your Linux machine.
<p style="text-align: center; font-size: x-small"><img src="http://inspirated.com/uploads/pys60-rfcomm-mobile-5.jpg" alt="PyS60 Bluetooth HOWTO, Mobile screenshot #5" /></p>
<p>The command you ran in previous step should have <strong>new</strong> output:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">&#91;</span>root<span style="color: #000000; font-weight: bold;">@</span>orthanc ~<span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #666666; font-style: italic;"># ./rfcomm-listen.sh</span></pre></div></div>

<blockquote><p>Serial Port service registered<br />
Waiting for connection on channel 2<br />
<strong>Connection from 00:17:4B:B6:35:31 to /dev/rfcomm0<br />
Press CTRL-C for hangup</strong>
</p></blockquote>
<p>The cellphone screen should be showing something like this:</p>
<p style="text-align: center; font-size: x-small"><img src="http://inspirated.com/uploads/pys60-rfcomm-mobile-6.jpg" alt="PyS60 Bluetooth HOWTO, Mobile screenshot #6" /></p>
</li>
<li>As <code>root</code> again, open a new terminal and run:

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">&#91;</span>root<span style="color: #000000; font-weight: bold;">@</span>orthanc ~<span style="color: #7a0874; font-weight: bold;">&#93;</span><span style="color: #666666; font-style: italic;"># cu -l /dev/rfcomm0</span></pre></div></div>

<blockquote><p>Connected.</p></blockquote>
</li>
<li>Hit Enter till prompt (<code>>>></code>) appears, then type:<br />
<blockquote><p>&gt;&gt;&gt; import appuifw<br />
&gt;&gt;&gt; appuifw.query(u&#39;Hello World&#39;, &#39;text&#39;)</p></blockquote>
</li>
<li>Viola, you should have an input box on the mobile screen:
<p style="text-align: center; font-size: x-small"><img src="http://inspirated.com/uploads/pys60-rfcomm-mobile-7.jpg" alt="PyS60 Bluetooth HOWTO, Mobile screenshot #7" /></p>
</li>
<li>Enter any text and press the OK key. It should be show up in the terminal you were using to type in code:<br />
<blockquote><p>&gt;&gt;&gt; import appuifw<br />
&gt;&gt;&gt; appuifw.query(u&#39;Hello World&#39;, &#39;text&#39;)<br />
<strong>u&#8217;Finally&#8217;</strong></p></blockquote>
</li>
<li>Exit the interpreter by typing <code>CTRL+D</code> on an empty line:<br />
<blockquote><p>&gt;&gt;&gt; import appuifw<br />
&gt;&gt;&gt; appuifw.query(u&#39;Hello World&#39;, &#39;text&#39;)<br />
u&#8217;Finally&#8217;<br />
&gt;&gt;&gt;<br />
<strong>Interactive interpreter finished.<br />
cu: Got hangup signal</strong></p>
<p><strong>Disconnected.</strong>
</p></blockquote>
</li>
</ol>
<p>Pat yourself on the back. Now, you can use your Bluetooth console to <code>import</code> your modules, execute some stuff and then jump in the middle to test some extra lines or values. In fact, I found it to be a pretty darned good way of learning about PyS60&#8242;s API. Res secundae!</p>
<div class="shr-publisher-250"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic --><hr />
<p><small><a href="http://inspirated.com/2009/10/31/howto-use-pys60s-bluetooth-console-on-fedoraubuntudebian-linux">Permalink</a> |
<a href="http://inspirated.com/2009/10/31/howto-use-pys60s-bluetooth-console-on-fedoraubuntudebian-linux#comments">4 comments</a>
<br/>
Post tags: <a href="http://inspirated.com/tag/bluetooth" rel="tag">Bluetooth</a>, <a href="http://inspirated.com/tag/code" rel="tag">Code</a>, <a href="http://inspirated.com/tag/debian" rel="tag">Debian</a>, <a href="http://inspirated.com/tag/debugging" rel="tag">Debugging</a>, <a href="http://inspirated.com/tag/fedora" rel="tag">Fedora</a>, <a href="http://inspirated.com/tag/flag-42" rel="tag">Flag 42</a>, <a href="http://inspirated.com/tag/linux" rel="tag">Linux</a>, <a href="http://inspirated.com/tag/mobile" rel="tag">Mobile</a>, <a href="http://inspirated.com/tag/nokia" rel="tag">Nokia</a>, <a href="http://inspirated.com/tag/open-source" rel="tag">Open Source</a>, <a href="http://inspirated.com/tag/pys60" rel="tag">PyS60</a>, <a href="http://inspirated.com/tag/python" rel="tag">Python</a>, <a href="http://inspirated.com/tag/series-60" rel="tag">Series 60</a>, <a href="http://inspirated.com/tag/symbian" rel="tag">Symbian</a>, <a href="http://inspirated.com/tag/technology" rel="tag">Technology</a>, <a href="http://inspirated.com/tag/tutorial" rel="tag">Tutorial</a>, <a href="http://inspirated.com/tag/ubuntu" rel="tag">Ubuntu</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://inspirated.com/2009/10/31/howto-use-pys60s-bluetooth-console-on-fedoraubuntudebian-linux/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.936 seconds -->

