<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" version="2.0">

<channel>
	<title>Inspirated</title>
	
	<link>http://inspirated.com</link>
	<description>krkhan's blog</description>
	<lastBuildDate>Sun, 05 Sep 2010 01:10:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/Inspirated" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="inspirated" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">Inspirated</feedburner:emailServiceId><feedburner:feedburnerHostname xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://feedburner.google.com</feedburner:feedburnerHostname><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[Rants]]></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[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Finspirated.com%2F2010%2F09%2F05%2Fsumming-up-gsoc-2010"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Finspirated.com%2F2010%2F09%2F05%2Fsumming-up-gsoc-2010&amp;source=krkhan&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<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>
</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><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">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/rants" rel="tag">Rants</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>1</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[Rants]]></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[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Finspirated.com%2F2010%2F08%2F17%2Fsummer-of-code-progress-wrapping-up"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Finspirated.com%2F2010%2F08%2F17%2Fsummer-of-code-progress-wrapping-up&amp;source=krkhan&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<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><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/rants" rel="tag">Rants</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[Rants]]></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[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Finspirated.com%2F2010%2F08%2F10%2Fsummer-of-code-progress-refactoring-matching-and-patching"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Finspirated.com%2F2010%2F08%2F10%2Fsummer-of-code-progress-refactoring-matching-and-patching&amp;source=krkhan&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<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><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/rants" rel="tag">Rants</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>Summer of Code Progress: Attachment Upstreamer improvements</title>
		<link>http://inspirated.com/2010/07/24/summer-of-code-progress-attachment-upstreamer-improvements</link>
		<comments>http://inspirated.com/2010/07/24/summer-of-code-progress-attachment-upstreamer-improvements#comments</comments>
		<pubDate>Sat, 24 Jul 2010 16:15:33 +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[GSoC]]></category>
		<category><![CDATA[Launchpad]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Rants]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[XML-RPC]]></category>

		<guid isPermaLink="false">http://inspirated.com/?p=307</guid>
		<description><![CDATA[Related Links Summer of Code Archive Inspirated Code Report Guidelines Ubuntu Wiki Original Proposal Ubuntu Wiki Time Spent 60 hours. Highlights New features were added to Attachment Upstreamer in order to make it more suitable for issues encountered by Ubuntu maintainers (as suggested by Bryce from his experience as the X.org maintainer). Concerns None. Waiting [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Finspirated.com%2F2010%2F07%2F24%2Fsummer-of-code-progress-attachment-upstreamer-improvements"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Finspirated.com%2F2010%2F07%2F24%2Fsummer-of-code-progress-attachment-upstreamer-improvements&amp;source=krkhan&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<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>New features were added to Attachment Upstreamer in order to make it more suitable for issues encountered by Ubuntu maintainers (as suggested by Bryce from his experience as the X.org maintainer).</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/send-attachments-cache-credentials">Branch</a>, <a href="http://bazaar.launchpad.net/~arsenal-devel/arsenal/master/revision/656">Merge Revision</a>: Implemented caching of Bugzilla credentials using Gnome Keyring and <code>ConfigParser</code>.</li>
<li><a href="http://bazaar.launchpad.net/~arsenal-devel/arsenal/master/revision/657">Merge Revision</a>:
<ul>
<li><a href="https://code.launchpad.net/~inspirated/arsenal/send-attachments-exclude-filenames">Branch</a>: Added support for excluding attachments based on filename matching using glob patterns.</li>
<li><a href="https://code.launchpad.net/~inspirated/arsenal/send-attachments-extract-archives">Branch</a>: Added support for extracting Tar and Zip archives when the number of files in them is below a specified limit.</li>
<li><a href="https://code.launchpad.net/~inspirated/arsenal/send-attachments-filesize-limit">Branch</a>: Added support for excluding attachments based on their sizes, optionally Gzipping them in an effort to make the size acceptable.</li>
<li><a href="https://code.launchpad.net/~inspirated/arsenal/send-attachments-enforce-mimetype">Branch</a>: Added support for enforcing content-types of attachments based on their filenames.</li>
</ul>
</li>
</ul>
<h3>Minor Tasks</h3>
<ul>
<li>Various bugfixes and code-cleanup for previously merged GSoC code.</li>
</ul>
<h3>Actions for the Following Report</h3>
<p>The Launchpad and Bugzilla sides of the Upstreamer are to be cleaned up and made dependent on <code>launchpadlib-toolkit</code> and <code>BugzillaAdapter</code> respectively. This will help future scripts which rely on Bugzilla communication as well as make such things agnostic to the implementation lying beneath the adapter (e.g., whether we&#8217;re using Curl/XML-RPC/REST to talk to the server).</p>
<div class="shr-publisher-307"></div><hr />
<p><small><a href="http://inspirated.com/2010/07/24/summer-of-code-progress-attachment-upstreamer-improvements">Permalink</a> |
<a href="http://inspirated.com/2010/07/24/summer-of-code-progress-attachment-upstreamer-improvements#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/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/rants" rel="tag">Rants</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/07/24/summer-of-code-progress-attachment-upstreamer-improvements/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Beta Repository for making Firefox 4 coexist peacefully with 3.6 on Fedora 13</title>
		<link>http://inspirated.com/2010/07/18/beta-repository-for-making-firefox-4-coexist-peacefully-with-3-6-on-fedora-13</link>
		<comments>http://inspirated.com/2010/07/18/beta-repository-for-making-firefox-4-coexist-peacefully-with-3-6-on-fedora-13#comments</comments>
		<pubDate>Sun, 18 Jul 2010 16:45:07 +0000</pubDate>
		<dc:creator>krkhan</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Beta]]></category>
		<category><![CDATA[Fedora]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Repository]]></category>
		<category><![CDATA[RPM]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Yum]]></category>

		<guid isPermaLink="false">http://inspirated.com/?p=306</guid>
		<description><![CDATA[Firefox 4 offers some compelling features such as HTML 5 improvements and a new add-on manager. Since it&#8217;s quite painstaking to compile the beta from source and quite messy to place pre-compiled binaries in system default folders (not to mention the compatibility checks and upgrade chores that would interrupt at each launch if you go [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Finspirated.com%2F2010%2F07%2F18%2Fbeta-repository-for-making-firefox-4-coexist-peacefully-with-3-6-on-fedora-13"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Finspirated.com%2F2010%2F07%2F18%2Fbeta-repository-for-making-firefox-4-coexist-peacefully-with-3-6-on-fedora-13&amp;source=krkhan&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Firefox 4 offers some compelling features such as HTML 5 improvements and a new add-on manager. Since it&#8217;s quite painstaking to compile the beta from source and quite messy to place pre-compiled binaries in system default folders (not to mention the compatibility checks and upgrade chores that would interrupt at each launch if you go back and forth between different versions), I created a repository at <a href="http://repo.inspirated.com/">repo.inspirated.com</a> which can be used to test the beta version without touching any 3.6 stable release already installed on the system:</p>
<p style="text-align: center; font-size: x-small;"><img src="http://inspirated.com/uploads/firefox-beta-menu.jpg" alt="Firefox 4 Beta 1 Menu Shortcut" /></p>
<p>To use the repository, issue the following commands:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">su</span> <span style="color: #660033;">-c</span> <span style="color: #ff0000;">'wget http://repo.inspirated.com/inspirated.repo -O /etc/yum.repos.d/inspirated.repo'</span>
$ <span style="color: #c20cb9; font-weight: bold;">su</span> <span style="color: #660033;">-c</span> <span style="color: #ff0000;">'yum install firefox-beta'</span></pre></div></div>

<p>The beta refuses to run if an instance of old Firefox is already active. Therefore, close the older Firefox and then launch the 4.0b1 version using <code>firefox-beta</code> command or the &#8220;Firefox Beta&#8221; shortcut in the applications menu. A new profile shall be created at <code>~/.mozilla/firefox/beta/</code> in order to leave your older profile&#8217;s settings, bookmarks and extensions etc. intact.</p>
<p style="text-align: center; font-size: x-small"><a href="http://inspirated.com/uploads/firefox-beta-intro.png"><img src="http://inspirated.com/uploads/firefox-beta-intro-thumb.jpg" alt="Firefox 4 Beta 1 Screenshot" /></a><br />
(Click on the thumbnail for larger version.)</p>
<div class="shr-publisher-306"></div><hr />
<p><small><a href="http://inspirated.com/2010/07/18/beta-repository-for-making-firefox-4-coexist-peacefully-with-3-6-on-fedora-13">Permalink</a> |
<a href="http://inspirated.com/2010/07/18/beta-repository-for-making-firefox-4-coexist-peacefully-with-3-6-on-fedora-13#comments">4 comments</a>
<br/>
Post tags: <a href="http://inspirated.com/tag/beta" rel="tag">Beta</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/open-source" rel="tag">Open Source</a>, <a href="http://inspirated.com/tag/repository" rel="tag">Repository</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/yum" rel="tag">Yum</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://inspirated.com/2010/07/18/beta-repository-for-making-firefox-4-coexist-peacefully-with-3-6-on-fedora-13/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Summer of Code Progress: Curl It Unlike Beckham</title>
		<link>http://inspirated.com/2010/07/12/summer-of-code-progress-curl-it-unlike-beckham</link>
		<comments>http://inspirated.com/2010/07/12/summer-of-code-progress-curl-it-unlike-beckham#comments</comments>
		<pubDate>Mon, 12 Jul 2010 18:10:55 +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[GSoC]]></category>
		<category><![CDATA[Launchpad]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Rants]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[XML-RPC]]></category>

		<guid isPermaLink="false">http://inspirated.com/?p=305</guid>
		<description><![CDATA[Related Links Summer of Code Archive Inspirated Code Report Guidelines Ubuntu Wiki Original Proposal Ubuntu Wiki Time Spent 50 hours. Highlights The send-attachments-upstream.py script was migrated from XML-RPC to Curl for communicating with Bugzilla. The script was the refactored in order to provide capabilities such as attachment filtering. Various bugfixes and improvements were catered to [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Finspirated.com%2F2010%2F07%2F12%2Fsummer-of-code-progress-curl-it-unlike-beckham"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Finspirated.com%2F2010%2F07%2F12%2Fsummer-of-code-progress-curl-it-unlike-beckham&amp;source=krkhan&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<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>50 hours.</p>
<h3>Highlights</h3>
<p>The <code>send-attachments-upstream.py</code> script was migrated from XML-RPC to Curl for communicating with Bugzilla. The script was the refactored in order to provide capabilities such as attachment filtering. Various bugfixes and improvements were catered to along the way.</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/send-attachments-curl">Branch</a>, <a href="http://bazaar.launchpad.net/~arsenal-devel/arsenal/master/revision/620">Merge Revision</a>: Reimplemented attachment sending using <code>pycurl</code>.</li>
<li><a href="https://code.launchpad.net/~inspirated/arsenal/send-attachments-improvements">Branch</a>, <a href="http://bazaar.launchpad.net/~arsenal-devel/arsenal/master/revision/620">Merge Revision</a>: Refactored the script in order to provide options such as <code>-o</code> (copy only attachments uploaded by bug owner).</li>
</ul>
<h3>Minor Tasks</h3>
<ul>
<li><a href="https://code.launchpad.net/~inspirated/arsenal/fix-encoding-and-regexp">Branch</a>, <a href="http://bazaar.launchpad.net/~arsenal-devel/arsenal/master/revision/646">Merge Revision</a>: Fixed regular expressions for parsing results and handling of Unicode attachment titles.</li>
</ul>
<h3>Actions for the Following Report</h3>
<p>Implement the following improvements in <a href="http://bazaar.launchpad.net/~arsenal-devel/arsenal/master/annotate/head:/scripts/send-attachments-upstream.py">send-attachments.py</a>:</p>
<ul>
<li>Caching Bugzilla credentials.</li>
<li>Filename exclusion for attachments.</li>
<li>Archive extraction.</li>
<li>File size limits.</li>
<li>A command-line switch to enforce MIME content-types based on file extensions.</li>
</ul>
<div class="shr-publisher-305"></div><hr />
<p><small><a href="http://inspirated.com/2010/07/12/summer-of-code-progress-curl-it-unlike-beckham">Permalink</a> |
<a href="http://inspirated.com/2010/07/12/summer-of-code-progress-curl-it-unlike-beckham#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/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/rants" rel="tag">Rants</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/07/12/summer-of-code-progress-curl-it-unlike-beckham/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Summer of Code Progress: Attachment Upstreamer</title>
		<link>http://inspirated.com/2010/07/03/summer-of-code-progress-attachment-upstreamer</link>
		<comments>http://inspirated.com/2010/07/03/summer-of-code-progress-attachment-upstreamer#comments</comments>
		<pubDate>Sat, 03 Jul 2010 12:04:01 +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[GSoC]]></category>
		<category><![CDATA[Launchpad]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Rants]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[XML-RPC]]></category>

		<guid isPermaLink="false">http://inspirated.com/?p=299</guid>
		<description><![CDATA[Related Links Summer of Code Archive Inspirated Code Report Guidelines Ubuntu Wiki Original Proposal Ubuntu Wiki Time Spent 10 hours. Highlights Communicating with Bugzilla is done through the python-bugzilla wrapper library. This could have been achieved by using xmlrpclib directly but doing that would require reinventing a whole lot of wheels by handling Bugzilla specific [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Finspirated.com%2F2010%2F07%2F03%2Fsummer-of-code-progress-attachment-upstreamer"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Finspirated.com%2F2010%2F07%2F03%2Fsummer-of-code-progress-attachment-upstreamer&amp;source=krkhan&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<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>10 hours.</p>
<h3>Highlights</h3>
<p>Communicating with Bugzilla is done through the <a href="https://fedorahosted.org/python-bugzilla/">python-bugzilla</a> wrapper library. This could have been achieved by using <code>xmlrpclib</code> directly but doing that would require reinventing a whole lot of wheels by handling Bugzilla specific XML-RPC eccentricities.</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/send-attachments">Branch</a>: Added support for copying attachments to a remote bugzilla:

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ .<span style="color: #000000; font-weight: bold;">/</span>send-attachments-upstream.py <span style="color: #660033;">--user</span>=krkhan<span style="color: #000000; font-weight: bold;">@</span>inspirated.com <span style="color: #660033;">--pass</span>=xxx https:<span style="color: #000000; font-weight: bold;">//</span>bugs.launchpad.net<span style="color: #000000; font-weight: bold;">/</span>ubuntu<span style="color: #000000; font-weight: bold;">/</span>+bug<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">223435</span>  https:<span style="color: #000000; font-weight: bold;">//</span>partner-bugzilla.redhat.com<span style="color: #000000; font-weight: bold;">/</span>show_bug.cgi?<span style="color: #007800;"><span style="color: #c20cb9; font-weight: bold;">id</span></span>=<span style="color: #000000;">593603</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">Logging in Launchpad [Success &lt;Logged in as Kamran Riaz Khan&gt;]
Logging in Bugzilla [Success &lt;Logged in as krkhan@inspirated.com&gt;]
Uploading: Dependencies.txt [Success]
Uploading: Disassembly.txt [Success]
Uploading: ProcMaps.txt [Success]
Uploading: ProcStatus.txt [Success]
Uploading: Registers.txt [Success]
Uploading: Stacktrace.txt [Success]
Uploading: ThreadStacktrace.txt [Success]
Uploading: Stacktrace.txt (retraced) [Success]
Uploading: ThreadStacktrace.txt (retraced) [Success]</pre></div></div>

</li>
</ul>
<h3>Minor Tasks</h3>
<ul>
<li><a href="http://bazaar.launchpad.net/~inspirated/arsenal/send-attachments/revision/607">Revision</a>: Added python-bugzilla in lib and modified setup.py accordingly.
</li>
<li><a href="http://bazaar.launchpad.net/~inspirated/arsenal/send-attachments/revision/608">Revision</a>: Initial commit for sending attachments to a remote Bugzilla.</li>
<li><a href="http://bazaar.launchpad.net/~inspirated/arsenal/send-attachments/revision/609">Revision</a>: Added error handling for API calls.</li>
</ul>
<h3>Actions for the Following Report</h3>
<p>Add support for creating new bugs in a remote Bugzilla based on data from a Launchpad bug.</p>
<div class="shr-publisher-299"></div><hr />
<p><small><a href="http://inspirated.com/2010/07/03/summer-of-code-progress-attachment-upstreamer">Permalink</a> |
<a href="http://inspirated.com/2010/07/03/summer-of-code-progress-attachment-upstreamer#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/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/rants" rel="tag">Rants</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/07/03/summer-of-code-progress-attachment-upstreamer/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>dd: The Ultimate Backup Solution</title>
		<link>http://inspirated.com/2010/07/01/dd-the-ultimate-backup-solution</link>
		<comments>http://inspirated.com/2010/07/01/dd-the-ultimate-backup-solution#comments</comments>
		<pubDate>Thu, 01 Jul 2010 02:27:30 +0000</pubDate>
		<dc:creator>krkhan</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Backup]]></category>
		<category><![CDATA[Command-line]]></category>
		<category><![CDATA[dd]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Western Digital]]></category>

		<guid isPermaLink="false">http://inspirated.com/?p=298</guid>
		<description><![CDATA[Over the 8 years of my acquaintance with computers valuable data has been lost at an average of twice per annum. I have tried all kinds of solution to help my situation only to fail miserably by forgetting to back up some important bits and pieces of information before upgrading my distro. Backup solutions can [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Finspirated.com%2F2010%2F07%2F01%2Fdd-the-ultimate-backup-solution"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Finspirated.com%2F2010%2F07%2F01%2Fdd-the-ultimate-backup-solution&amp;source=krkhan&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Over the 8 years of my acquaintance with computers valuable data has been lost at an average of twice per annum. I have tried all kinds of solution to help my situation only to fail miserably by forgetting to back up some important bits and pieces of information before upgrading my distro.</p>
<p>Backup solutions can mostly be factored into two approaches of archiving and cloning. If space is limited, you can archive your important data using utilities such as <code>tar</code>. This in fact was the approach I had been using until now. The downside appeared to be lesser accessibility of the files inside the backup. Say, I needed a small text-file from a 200 GB archive. It&#8217;d take me around 20 minutes to &#8220;get&#8221; to its location in the archive.</p>
<p>Which is why, I decided to shift to a newer approach. My laptop has a 320 GB hard disk and I own another 320 GB Western Digital Passport for extra data. To utilize the similitude, I bought another 500 GB Passport, transferred the &#8220;extra&#8221; data to it and then cloned the entire laptop hard disk to its 320 GB external cousin.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ <span style="color: #c20cb9; font-weight: bold;">dd</span> <span style="color: #007800;"><span style="color: #000000; font-weight: bold;">if</span></span>=<span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>sda <span style="color: #007800;">of</span>=<span style="color: #000000; font-weight: bold;">/</span>dev<span style="color: #000000; font-weight: bold;">/</span>sdb</pre></div></div>

<p>That is all. <code>dd</code>&#8216;s performance was questionable, as it took around 15 hours to clone the entire 320 GB. Nevertheless, this time around I was satisfied with the final backup. Not only was it a <em>bit-by-bit</em> replica of my original data but also an accessible repository which I could access easily by plugging in the USB.</p>
<div class="shr-publisher-298"></div><hr />
<p><small><a href="http://inspirated.com/2010/07/01/dd-the-ultimate-backup-solution">Permalink</a> |
<a href="http://inspirated.com/2010/07/01/dd-the-ultimate-backup-solution#comments">One comment</a>
<br/>
Post tags: <a href="http://inspirated.com/tag/backup" rel="tag">Backup</a>, <a href="http://inspirated.com/tag/command-line" rel="tag">Command-line</a>, <a href="http://inspirated.com/tag/dd" rel="tag">dd</a>, <a href="http://inspirated.com/tag/linux" rel="tag">Linux</a>, <a href="http://inspirated.com/tag/open-source" rel="tag">Open Source</a>, <a href="http://inspirated.com/tag/technology" rel="tag">Technology</a>, <a href="http://inspirated.com/tag/western-digital" rel="tag">Western Digital</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://inspirated.com/2010/07/01/dd-the-ultimate-backup-solution/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Find your most used words in Pidgin logs with Python</title>
		<link>http://inspirated.com/2010/06/27/find-your-most-used-words-in-pidgin-logs-with-python</link>
		<comments>http://inspirated.com/2010/06/27/find-your-most-used-words-in-pidgin-logs-with-python#comments</comments>
		<pubDate>Sat, 26 Jun 2010 19:08:20 +0000</pubDate>
		<dc:creator>krkhan</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Beautiful Soup]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[IM]]></category>
		<category><![CDATA[Logs]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Pidgin]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Statistics]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://inspirated.com/?p=296</guid>
		<description><![CDATA[Here&#8217;s a quick little script which I wrote to tabulate the word frequencies in Pidgin logs. Simple, you point it towards a contact&#8217;s log directory: $ ./purple-stats.py /home/krkhan/.purple/logs/msn/krkhan\@inspirated.com/some.friend\@some.gmail.com And it gives you the words in their descending order of usage: 0: you (38) 1: it (30) 2: to (24) 3: the (22) 4: in (22) [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Finspirated.com%2F2010%2F06%2F27%2Ffind-your-most-used-words-in-pidgin-logs-with-python"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Finspirated.com%2F2010%2F06%2F27%2Ffind-your-most-used-words-in-pidgin-logs-with-python&amp;source=krkhan&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<p>Here&#8217;s a quick little script which I wrote to tabulate the word frequencies in Pidgin logs. Simple, you point it towards a contact&#8217;s log directory:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">$ .<span style="color: #000000; font-weight: bold;">/</span>purple-stats.py <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>krkhan<span style="color: #000000; font-weight: bold;">/</span>.purple<span style="color: #000000; font-weight: bold;">/</span>logs<span style="color: #000000; font-weight: bold;">/</span>msn<span style="color: #000000; font-weight: bold;">/</span>krkhan\<span style="color: #000000; font-weight: bold;">@</span>inspirated.com<span style="color: #000000; font-weight: bold;">/</span>some.friend\<span style="color: #000000; font-weight: bold;">@</span>some.gmail.com</pre></div></div>

<p>And it gives you the words in their descending order of usage:</p>
<blockquote><pre>         0: you        (38)
         1: it         (30)
         2: to         (24)
         3: the        (22)
         4: in         (22)
         5: lol        (22)
         6: of         (22)
         7: so         (18)
         8: is         (18)
         9: what       (16)
         ...
</pre>
</blockquote>
<p>As usual, Python was used for the dirty work:</p>
<p style="text-align: center"><a href="http://inspirated.com/uploads/purple-stats.zip">purple-stats.py</a></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
</pre></td><td class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#!/usr/bin/env python</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">from</span> <span style="color: #dc143c;">operator</span> <span style="color: #ff7700;font-weight:bold;">import</span> itemgetter
<span style="color: #ff7700;font-weight:bold;">from</span> <span style="color: #dc143c;">string</span> <span style="color: #ff7700;font-weight:bold;">import</span> punctuation
&nbsp;
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">locale</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">os</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">sys</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">from</span> BeautifulSoup <span style="color: #ff7700;font-weight:bold;">import</span> BeautifulSoup
&nbsp;
<span style="color: #ff7700;font-weight:bold;">if</span> __name__ == <span style="color: #483d8b;">&quot;__main__&quot;</span>:
    <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #008000;">len</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">sys</span>.<span style="color: black;">argv</span><span style="color: black;">&#41;</span> <span style="color: #66cc66;">&lt;</span> <span style="color: #ff4500;">2</span>:
        <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;usage:&quot;</span>, <span style="color: #dc143c;">sys</span>.<span style="color: black;">argv</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span>, <span style="color: #483d8b;">&quot;&lt;logs directory&gt;&quot;</span>
    <span style="color: #008000;">dir</span> = <span style="color: #dc143c;">sys</span>.<span style="color: black;">argv</span><span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span>
&nbsp;
    contents = <span style="color: #008000;">filter</span><span style="color: black;">&#40;</span><span style="color: #ff7700;font-weight:bold;">lambda</span> x: x<span style="color: black;">&#91;</span>-<span style="color: #ff4500;">5</span>:<span style="color: black;">&#93;</span> == <span style="color: #483d8b;">'.html'</span>, <span style="color: #dc143c;">os</span>.<span style="color: black;">listdir</span><span style="color: black;">&#40;</span><span style="color: #008000;">dir</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
    stats = <span style="color: black;">&#123;</span><span style="color: black;">&#125;</span>
    <span style="color: #ff7700;font-weight:bold;">for</span> entry <span style="color: #ff7700;font-weight:bold;">in</span> contents:
        path = <span style="color: #dc143c;">os</span>.<span style="color: black;">path</span>.<span style="color: black;">join</span><span style="color: black;">&#40;</span><span style="color: #008000;">dir</span>, entry<span style="color: black;">&#41;</span>
        <span style="color: #ff7700;font-weight:bold;">with</span> <span style="color: #008000;">open</span><span style="color: black;">&#40;</span>path, <span style="color: #483d8b;">'r'</span><span style="color: black;">&#41;</span> <span style="color: #ff7700;font-weight:bold;">as</span> fd:
            data = fd.<span style="color: black;">read</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
        soup = BeautifulSoup<span style="color: black;">&#40;</span>data,
            convertEntities=BeautifulSoup.<span style="color: black;">ALL_ENTITIES</span><span style="color: black;">&#41;</span>
        spans = soup.<span style="color: black;">findAll</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'span'</span><span style="color: black;">&#41;</span>
        <span style="color: #ff7700;font-weight:bold;">for</span> span <span style="color: #ff7700;font-weight:bold;">in</span> spans:
            <span style="color: #ff7700;font-weight:bold;">for</span> word <span style="color: #ff7700;font-weight:bold;">in</span> span.<span style="color: black;">text</span>.<span style="color: black;">split</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:
                word = word.<span style="color: black;">strip</span><span style="color: black;">&#40;</span>punctuation<span style="color: black;">&#41;</span>.<span style="color: black;">lower</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
                <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #008000;">len</span><span style="color: black;">&#40;</span>word<span style="color: black;">&#41;</span> <span style="color: #66cc66;">&lt;</span> <span style="color: #ff4500;">2</span>:
                    <span style="color: #ff7700;font-weight:bold;">continue</span>
                stats<span style="color: black;">&#91;</span>word<span style="color: black;">&#93;</span> = stats.<span style="color: black;">get</span><span style="color: black;">&#40;</span>word, <span style="color: #ff4500;">0</span><span style="color: black;">&#41;</span> + <span style="color: #ff4500;">1</span>
&nbsp;
    sorted_stats = <span style="color: #008000;">sorted</span><span style="color: black;">&#40;</span>stats.<span style="color: black;">iteritems</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>, key=itemgetter<span style="color: black;">&#40;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
    sorted_stats.<span style="color: black;">reverse</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">for</span> num, <span style="color: black;">&#40;</span>word, count<span style="color: black;">&#41;</span> <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">enumerate</span><span style="color: black;">&#40;</span>sorted_stats<span style="color: black;">&#41;</span>:
        line = <span style="color: #483d8b;">&quot;%10d: %-10s (%d)&quot;</span> <span style="color: #66cc66;">%</span> <span style="color: black;">&#40;</span>num, word, count<span style="color: black;">&#41;</span>
        line = line.<span style="color: black;">encode</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">locale</span>.<span style="color: black;">getpreferredencoding</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
        <span style="color: #ff7700;font-weight:bold;">print</span> line</pre></td></tr></table></div>

<div class="shr-publisher-296"></div><hr />
<p><small><a href="http://inspirated.com/2010/06/27/find-your-most-used-words-in-pidgin-logs-with-python">Permalink</a> |
<a href="http://inspirated.com/2010/06/27/find-your-most-used-words-in-pidgin-logs-with-python#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/code" rel="tag">Code</a>, <a href="http://inspirated.com/tag/im" rel="tag">IM</a>, <a href="http://inspirated.com/tag/logs" rel="tag">Logs</a>, <a href="http://inspirated.com/tag/open-source" rel="tag">Open Source</a>, <a href="http://inspirated.com/tag/pidgin" rel="tag">Pidgin</a>, <a href="http://inspirated.com/tag/python" rel="tag">Python</a>, <a href="http://inspirated.com/tag/statistics" rel="tag">Statistics</a>, <a href="http://inspirated.com/tag/technology" rel="tag">Technology</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://inspirated.com/2010/06/27/find-your-most-used-words-in-pidgin-logs-with-python/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Summer of Code Progress: Merging Launchpad branches</title>
		<link>http://inspirated.com/2010/06/22/summer-of-code-progress-merging-launchpad-branches</link>
		<comments>http://inspirated.com/2010/06/22/summer-of-code-progress-merging-launchpad-branches#comments</comments>
		<pubDate>Tue, 22 Jun 2010 12:21:07 +0000</pubDate>
		<dc:creator>krkhan</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Arsenal]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[GSoC]]></category>
		<category><![CDATA[Launchpad]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Rants]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://inspirated.com/?p=295</guid>
		<description><![CDATA[Related Links Summer of Code Archive Inspirated Code Report Guidelines Ubuntu Wiki Original Proposal Ubuntu Wiki Time Spent 40 hours. Highlights This week was spent on trying to get my Launchpad branches merged upstream. During the process many concerns were raised which resulted in a number of patches and discussions. Concerns Quoting Stuart Bishop&#8217;s response [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Finspirated.com%2F2010%2F06%2F22%2Fsummer-of-code-progress-merging-launchpad-branches"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Finspirated.com%2F2010%2F06%2F22%2Fsummer-of-code-progress-merging-launchpad-branches&amp;source=krkhan&amp;style=normal" height="61" width="50" /><br />
			</a>
		</div>
<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>40 hours.</p>
<h3>Highlights</h3>
<p>This week was spent on trying to get my Launchpad branches merged upstream. During the process many concerns were raised which resulted in a number of patches and discussions.</p>
<h3>Concerns</h3>
<p>Quoting Stuart Bishop&#8217;s <a href="https://lists.launchpad.net/launchpad-dev/msg03633.html">response</a> from Launchpad-dev:</p>
<blockquote><p>I&#8217;m really not sure of the best way to tackle this problem. The<br />
Librarian data is not stored in the database because there are<br />
multiple TB of files. The team membership information is in the<br />
relational database. There are no indexes anywhere to the contents of<br />
the Librarian files. I think we need some sort of external search<br />
engine (I don&#8217;t think we don&#8217;t want to integrate this into the<br />
Librarian core). Ideally we could feed it subscriber information<br />
allowing it to determine the set of 32000 attachments that ubuntu-bugs<br />
has access to rather than having to calculate this information from<br />
the relational db and then feed the ids to the search engine.</p>
<p>Whatever approach certainly needs signoff from the LP team leads, as<br />
the resource requirements are non trivial and someone needs to pay for<br />
the hardware.</p></blockquote>
<h3>Waiting Items</h3>
<p>None.</p>
<h3>Stalled Items</h3>
<ul>
<li>Implementation of <code>Bug.findAttachments()</code>.</li>
</ul>
<h3>Accomplishments</h3>
<ul>
<li><a href="https://code.launchpad.net/~inspirated/launchpad/export-Person-getBugSubscriberPackages/+merge/27630">Merge Proposal</a>: Got the <code>export-Person-getBugSubscriberPackages</code> branch approved after fixing various tests and bugs.</li>
<li><a href="https://code.launchpad.net/~inspirated/launchpad/implement-Bug-findAttachments/+merge/27786">Merge Proposal</a>: Implemented Horspool&#8217;s algorithm and fixed various bugs in the <code>implement-Bug-findAttachments</code> branch. The branch itself didn&#8217;t get approved because of its design approach for searching the attachments:<br />
<blockquote><p>I&#8217;m going to mark this review as &#8216;disapproved,&#8217; not because the code is<br />
bad (it isn&#8217;t) but because I don&#8217;t think this is the right solution to<br />
the problem. I&#8217;m sorry to say that I don&#8217;t know what the right solution<br />
to the problem actually is at this point, but I&#8217;d guess that something<br />
involving FTIs would be a start, or some kind of asynchronous processing<br />
of searches (though then you get into all kinds of knotty stuff with<br />
callbacks).</p></blockquote>
</li>
</ul>
<h3>Minor Tasks</h3>
<p>For reading the file in chunks, I took the <a href="http://en.wikipedia.org/wiki/Boyer%E2%80%93Moore%E2%80%93Horspool_algorithm">Wiki</a> code for Horspool algorithm, converted it to Python and <a href="http://inspirated.com/2010/06/19/using-boyer-moore-horspool-algorithm-on-file-streams-in-python">modified</a> a little so that it would work with stream files.</p>
<h3>Actions for the Following Report</h3>
<p>There doesn&#8217;t appear to be a straightforward efficient way for searching bug attachments. I&#8217;ll discuss the course of my future development with Bryce tonight and decide whether I should head over to Arsenal development or should I focus on the proposed (albeit germinal) solutions from IRC and the mailing list.</p>
<div class="shr-publisher-295"></div><hr />
<p><small><a href="http://inspirated.com/2010/06/22/summer-of-code-progress-merging-launchpad-branches">Permalink</a> |
<a href="http://inspirated.com/2010/06/22/summer-of-code-progress-merging-launchpad-branches#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/code" rel="tag">Code</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/rants" rel="tag">Rants</a>, <a href="http://inspirated.com/tag/rest" rel="tag">REST</a>, <a href="http://inspirated.com/tag/ubuntu" rel="tag">Ubuntu</a><br/>
</small></p>]]></content:encoded>
			<wfw:commentRss>http://inspirated.com/2010/06/22/summer-of-code-progress-merging-launchpad-branches/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss><!-- Dynamic Page Served (once) in 0.758 seconds -->
