<?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>Binary Elysium &#187; amarok</title>
	<atom:link href="http://www.binaryelysium.com/blog/tag/amarok/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.binaryelysium.com/blog</link>
	<description>No Ordinary Hotel</description>
	<lastBuildDate>Sun, 20 Dec 2009 18:11:41 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Parley meets Android in Cairo</title>
		<link>http://www.binaryelysium.com/blog/2009/04/29/parley-meets-android-in-cairo/</link>
		<comments>http://www.binaryelysium.com/blog/2009/04/29/parley-meets-android-in-cairo/#comments</comments>
		<pubDate>Wed, 29 Apr 2009 21:11:47 +0000</pubDate>
		<dc:creator>Casey</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[amarok]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[arabic]]></category>
		<category><![CDATA[egypt]]></category>
		<category><![CDATA[g1]]></category>
		<category><![CDATA[mobile]]></category>

		<guid isPermaLink="false">http://www.binaryelysium.com/blog/?p=117</guid>
		<description><![CDATA[I&#8217;m exactly three months into my Arabic studies in Cairo, where I&#8217;ve been taking time off university studies and Amarok development. I&#8217;ve realized that acquiring a large vocabulary as fast as you can manage is a crucial part of studying a language intensively, and thanks to the awesome KDE-Edu folks I&#8217;ve been successfully barely keeping [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m exactly three months into my Arabic studies in Cairo, where I&#8217;ve been taking time off university studies and Amarok development. I&#8217;ve realized that acquiring a large vocabulary as fast as you can manage is a crucial part of studying a language intensively, and thanks to the awesome KDE-Edu folks I&#8217;ve been <del>successfully</del> <em>barely</em> keeping up with the hundreds of new words I&#8217;m assigned per week with <a href="http://edu.kde.org/parley/" title="Parley's Homepage">Parley</a>.</p>
<p>The major problem I have with Parley is that I have to be in front of my computer to use it! </p>
<p>I know you&#8217;re laughing. That&#8217;s like saying a major fault of beer is that you have to <em>drink it</em> to get drunk, after all Parley is a computer program.<br />
You&#8217;re right, just because I hardly find the time to actually use the computer doesn&#8217;t mean I should lay the blame on Parley. Technically, I should  blame the denizens of Cairo and their <a href="http://www.flickr.com/photos/tronics/380379732/" title="Typical Cairo Traffic">insane traffic</a>. Seriously, too many of my life&#8217;s hours are wasted in the smelly, stuffy, taxis of Cairo (today was particularly bad, pardon the rant).</p>
<p>This past weekend I ignored the towering pile of homework and whipped up a little application for Android devices that groks Parley&#8217;s kvtml2 file format, displays lessons, and provides flashcard exercises. My app is really an Android Port of the J2ME mobile application <a href="http://sourceforge.net/projects/mobvoc/" title="MobVoc project home">MobVoc</a>. Michael, the MobVoc developer, did most of the hard work for me: parsing kvtml2 files into java data structures. Mad props to Michael; I definitely plan to pass along any contribute any bug fixes/optimizations I make to his code (such as sub-lessons support).</p>
<p>The application &#8211; unimaginatively dubbed ParleyDroid for now &#8211; is extremely bare-bones. Here is the current feature set</p>
<ul>
<li> Pick a kvtml2 file from the SD card </li>
<li> Choose 1 or more lessons to practice </li>
<li> View flashcards of the words in the selected lessons.</li>
<li> Gesture support in the flashcards: Long Press marks card as known, Fling Left/Right changes to Next/Prev card.
<li> Each practice session has a short-term memory: i.e., if you mark a card as known you won&#8217;t see it again that session but if you restart the session you will.</li>
<li> <em>Arabic Support</em> &#8211; if the 2nd language is Arabic, it will be rendered correctly on screen</li>
</ul>
<p>The last feature is probably the most noteworthy. Android, by default does not support RTL or non-Latin scripts, but with a little Android-trickery-that-deserves-another-blog-post I&#8217;m finally able to practice my vocabulary in the back of the taxi or while walking along the Nile.</p>
<p>Binary and Source:<br />
<a href="http://www.binaryelysium.com/code/ParleyDroid-0.1.tar.gz" title="ParleyDroid Source">ParleyDroid Source</a><br />
<a href="http://www.binaryelysium.com/code/ParleyDroid-0.1.apk" title="ParleyDroid Android Binary">ParleyDroid Android Binary</a></p>
<p>Obligatory Screenshots (click for full view):<br />
<a href="http://www.binaryelysium.com/blog/wp-content/uploads/2009/04/pd_pick_file.png"><img src="http://www.binaryelysium.com/blog/wp-content/uploads/2009/04/pd_pick_file-150x150.png" alt="ParleyDroid Pick File Screen" title="ParleyDroid Pick File Screen" width="150" height="150" class="alignnone size-thumbnail wp-image-123" /></a><a href="http://www.binaryelysium.com/blog/wp-content/uploads/2009/04/pd_lessons.png"><img src="http://www.binaryelysium.com/blog/wp-content/uploads/2009/04/pd_lessons-150x150.png" alt="ParleyDroid Lessons Screen" title="ParleyDroid Lessons Screen" width="150" height="150" class="alignnone size-thumbnail wp-image-121" /></a><br />
<a href="http://www.binaryelysium.com/blog/wp-content/uploads/2009/04/pd_word1.png"><img src="http://www.binaryelysium.com/blog/wp-content/uploads/2009/04/pd_word1-150x150.png" alt="ParleyDroid First Word Screen" title="ParleyDroid First Word Screen" width="150" height="150" class="alignnone size-thumbnail wp-image-124" /></a><a href="http://www.binaryelysium.com/blog/wp-content/uploads/2009/04/pd_word2_menu.png"><img src="http://www.binaryelysium.com/blog/wp-content/uploads/2009/04/pd_word2_menu-150x150.png" alt="ParleyDroid Second Word Screen w/ Arabic" title="ParleyDroid Second Word Screen w/ Arabic" width="150" height="150" class="alignnone size-thumbnail wp-image-125" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.binaryelysium.com/blog/2009/04/29/parley-meets-android-in-cairo/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>The Twitter Account Jive</title>
		<link>http://www.binaryelysium.com/blog/2009/01/25/the-twitter-account-jive/</link>
		<comments>http://www.binaryelysium.com/blog/2009/01/25/the-twitter-account-jive/#comments</comments>
		<pubDate>Sun, 25 Jan 2009 19:40:09 +0000</pubDate>
		<dc:creator>Casey</dc:creator>
				<category><![CDATA[Life]]></category>
		<category><![CDATA[amarok]]></category>

		<guid isPermaLink="false">http://www.binaryelysium.com/blog/?p=109</guid>
		<description><![CDATA[Short version: @Ramblurr is my new public Tech/FOSS twitter account, please follow it.
I have been on twitter for quite awhile, for several years at least. My original use case for twitter was something like a web/sms based IRC channel for my good friends from my hometown. Twitter is responsible for keeping us close in the [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Short version</strong>: <a href="https://twitter.com/Ramblurr" title="My Public Twitter Account">@Ramblurr</a> is my new public Tech/FOSS twitter account, please follow it.</p>
<p>I have been on twitter for quite awhile, for several years at least. My original use case for twitter was something like a web/sms based IRC channel for my good friends from my hometown. Twitter is responsible for keeping us close in the years after we parted ways for different colleges. This use case worked great until my online communities (KDE, tech industry, etc) started jumping aboard the twitter boat.</p>
<p>At first I tried to handle both social spheres—online professional, and raucous college student—with the same account. Needless to say one group did not appreciate the drunken tweets or lengthy star wars quotation contests, and the other group did not appreciate my Java vs C++ discussions. Eventually, I made my account private and left the online technology twitter sphere, but now things are changing. </p>
<p>Twitter has risen to prominence in the online community, and I am missing out on this form of social communication with my fellow technology and open source enthusiasts. So, I&#8217;ve renamed my <a href="https://twitter.com/rmblr" title="Private Twitter Account"> private account</a>, and opened my original for public use.</p>
<p>Please feel free to follow <a href="https://twitter.com/Ramblurr" title="My Public Twitter Account">@Ramblurr</a>, my public account, without need to fear a flood of inane, hyper-context-sensitive, ramblings between friends.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.binaryelysium.com/blog/2009/01/25/the-twitter-account-jive/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Lessons of a Master</title>
		<link>http://www.binaryelysium.com/blog/2009/01/24/lessons-of-a-master/</link>
		<comments>http://www.binaryelysium.com/blog/2009/01/24/lessons-of-a-master/#comments</comments>
		<pubDate>Sat, 24 Jan 2009 09:14:40 +0000</pubDate>
		<dc:creator>Casey</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[amarok]]></category>
		<category><![CDATA[campkde]]></category>
		<category><![CDATA[qt]]></category>

		<guid isPermaLink="false">http://www.binaryelysium.com/blog/?p=82</guid>
		<description><![CDATA[Several of us at Camp KDE—myself included—owe a great debt to Till Adam. When he came to the sunny, beautiful beaches of Jamaica, instead of spending his days lounging on the shore or swimming in the warm Caribbean, he chose to pen himself in a stuffy room with a dozen geeks and teach them Qt.
Till [...]]]></description>
			<content:encoded><![CDATA[<p>Several of us at Camp KDE—myself included—owe a great debt to <a href="http://www.kdedevelopers.org/blog/432" tilte="Till Adam's blog">Till Adam</a>. When he came to the sunny, beautiful beaches of Jamaica, instead of spending his days lounging on the shore or swimming in the warm Caribbean, he chose to pen himself in a stuffy room with a dozen geeks and teach them Qt.</p>
<p>Till works for Klarälvdalens Datakonsult AB (<a href="http://kdab.net" title="KDAB Website">KDAB</a>), <em>the</em> Qt consultancy firm. Besides working on large-scale, enterprise Qt applications, KDAB provides professional Qt training to such companies as IBM, Boeing, Ericsson, and J.D. Edwards. These training sessions usually run a few thousand Euros <em>per person</em>. With the OK from Nokia and Qt Software, Till provided us with a mini two day training course for free!</p>
<p>While the content and materials Till used during the sessions is copyrighted, the information I learned is not. With his permission I&#8217;m going to discuss a few pointers in this post. The topics covered somewhat basic/intermediate Qt skills, so those of you who have been programming with Qt for any length of time might not find anything new or interesting. However, for those, like me, who haven&#8217;t quite developed our Qt Fu to the Master level, take away tips from here knowing it was passed from a master.</p>
<p><b>#1 Most Common Performance Issue in Qt</b><br />
Converting from a QPixmap to QImage too often.</p>
<p>This tip is actually fairly well known, but apparently KDAB consultants run across this mistake very often while in the field. There is a great discussion of this topic over at <a href="http://techbase.kde.org/Development/Tutorials/Graphics/Performance" title="Discussion of QPixmap vs QImage at techbase">KDE&#8217;s techbase</a>. In summary:</p>
<ul>
<li>A QImage is stored in main memory </li>
<li>A QPixmap is stored in video memory</li>
<li>Converting from a QPixmap to a QImage is a very expensive operation (see the above article for the explanation)</li>
</ul>
<p><b>#1 Most Common Cause of Crashes in Qt</b><br />
Deleting this from slots</p>
<p>This tip needs some more explanation. Essentially, a mistake many Qt programmers do is include executable code after emitting a signal.  Consider this flow of execution:</p>
<ul>
<li>The function <em>Produce::blend()</em> emits signal <em>pineapple()</em>
<li>
<li>The slot <em>slotBlender()</em> deletes the instance of <em>Produce</em></li>
<li>The signal/slot connection returns to the function <em>Produce::blend()</em>, which has some other executable code such as variable assignments after the emit.</li>
<li>Crash. Since the slot deleted <em>Produce</em>, any code following the emit statement that modifies memory is now attempting to write to invalid memory. </li>
<p>One good practice to follow is: don&#8217;t have any executable code following the last emit statement in your objects&#8217; methods.<br />
However, the real solution is: Use <a href="http://doc.trolltech.com/4.4/qobject.html#deleteLater" title="deleteLater() documentation">deleteLater()</a> on your QObjects.</p>
<p>This post is getting somewhat lengthy and I potentially still have two topics to cover (Threading and Model/View). Most likely I&#8217;ll dedicate a post regarding threading in Qt (I took better notes during that talk) in the next couple days. Many thanks to Till for the sessions, as well as KDAB and Qt Software for allowing them to happen. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.binaryelysium.com/blog/2009/01/24/lessons-of-a-master/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>It&#8217;s Jamaica, Mon.</title>
		<link>http://www.binaryelysium.com/blog/2009/01/19/its-jamaica-mon/</link>
		<comments>http://www.binaryelysium.com/blog/2009/01/19/its-jamaica-mon/#comments</comments>
		<pubDate>Mon, 19 Jan 2009 22:58:26 +0000</pubDate>
		<dc:creator>Casey</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[amarok]]></category>
		<category><![CDATA[campkde]]></category>

		<guid isPermaLink="false">http://www.binaryelysium.com/blog/?p=72</guid>
		<description><![CDATA[The &#8220;conference&#8221; ended yesterday as the final presentations were given, however we still have 4 days left here among the sunny beaches.  Today Till Adam gave a fantastic lecture-slash-hands-on-workshop of Qt&#8217;s Model/View and plugin architecture. Just a couple weeks ago I was slamming my head against the desk trying to wrap my head around [...]]]></description>
			<content:encoded><![CDATA[<p>The &#8220;conference&#8221; ended yesterday as the final presentations were given, however we still have 4 days left here among the sunny beaches.  Today <a href="http://www.kdedevelopers.org/blog/432" title="Till Adam's Blog">Till Adam</a> gave a <a href="http://flickr.com/photos/ramblurr/3210990772/" title="Never lecture without your towel">fantastic</a> lecture-slash-hands-on-workshop of Qt&#8217;s Model/View and plugin architecture. Just a couple weeks ago I was slamming my head against the desk trying to wrap my head around Qt&#8217;s M/V concepts, the results of which can be seen in Amarok&#8217;s new last.fm service browser. Through the creative use of <a href="http://flickr.com/photos/ramblurr/3210988802/" title="Visual Evidence">roleplaying</a> (thanks Ade, Jeff, Sebas, and Leo!) and two helpful hands-on exercises I&#8217;ve finally gotten a decent grasp of the system. Tomorrow morning we hope to sip QtConcurrent knowledge from the cup that is Till.</p>
<p>I&#8217;d write more, but the ocean is calling and I still need to get a Pina Colada. But before I go, check out <a href="http://flickr.com/photos/ramblurr/sets/72157612763904188/">some photos</a> from the past couple days.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.binaryelysium.com/blog/2009/01/19/its-jamaica-mon/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>View From Lunch at CampKDE</title>
		<link>http://www.binaryelysium.com/blog/2009/01/17/view-from-lunch-at-campkde/</link>
		<comments>http://www.binaryelysium.com/blog/2009/01/17/view-from-lunch-at-campkde/#comments</comments>
		<pubDate>Sat, 17 Jan 2009 19:11:53 +0000</pubDate>
		<dc:creator>Casey</dc:creator>
				<category><![CDATA[Life]]></category>
		<category><![CDATA[amarok]]></category>
		<category><![CDATA[campkde]]></category>

		<guid isPermaLink="false">http://www.binaryelysium.com/blog/2009/01/17/view-from-lunch-at-campkde/</guid>
		<description><![CDATA[The internet is on the fritz here in Negril, Jamaica at Camp KDE, but while it is working I&#8217;ll post this photo taken from the balcony during lunch.
This is also a field test of the Wordpress Android application. 
We have had 3 presentations so far. Right now Sebastian Kügler is giving a great talk concerning [...]]]></description>
			<content:encoded><![CDATA[<p>The internet is on the fritz here in Negril, Jamaica at Camp KDE, but while it is working I&#8217;ll post this photo taken from the balcony during lunch.</p>
<p>This is also a field test of the Wordpress Android application. </p>
<p>We have had 3 presentations so far. Right now Sebastian Kügler is giving a great talk concerning optimizing your applications for mobile devices.</p>
<p>More quality updates soon.<br/><br />
<a href="http://www.binaryelysium.com/blog/wp-content/uploads/2009/01/wpid-29.jpg"><br />
   <img src="http://www.binaryelysium.com/blog/wp-content/uploads/2009/01/wpid-29-240x320.jpg" alt="thumbnail"/><br />
</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.binaryelysium.com/blog/2009/01/17/view-from-lunch-at-campkde/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>A Quickie: Amarok, Last.fm, CampKDE</title>
		<link>http://www.binaryelysium.com/blog/2009/01/14/a-quickie-amarok-lastfm-campkde/</link>
		<comments>http://www.binaryelysium.com/blog/2009/01/14/a-quickie-amarok-lastfm-campkde/#comments</comments>
		<pubDate>Wed, 14 Jan 2009 22:01:22 +0000</pubDate>
		<dc:creator>Casey</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[amarok]]></category>
		<category><![CDATA[campkde]]></category>
		<category><![CDATA[last.fm]]></category>

		<guid isPermaLink="false">http://www.binaryelysium.com/blog/2009/01/14/a-quickie-amarok-lastfm-campkde/</guid>
		<description><![CDATA[Things have been busy around here! First, there was the end-of-semester rush that occurs right before exams, then there was exams themselves. After the 3-day cross country drive home, I&#8217;ve spent the last couple weeks playing Settlers of Cataan with old friends, and hitting the ski slopes a couple times a week.
In between all that [...]]]></description>
			<content:encoded><![CDATA[<p>Things have been busy around here! First, there was the end-of-semester rush that occurs right before exams, then there was exams themselves. After the 3-day cross country drive home, I&#8217;ve spent the last couple weeks playing Settlers of Cataan with old friends, and hitting the ski slopes a couple times a week.</p>
<p>In between all that I haven&#8217;t had much time for development. Actually, I told a small lie. I&#8217;ve been pretty busy with a secret project &#8482;, but I can&#8217;t post anything about that until the 19th.</p>
<p>Amarok wise, things are looking up. I&#8217;ve started to completely refactor the last.fm service in Amarok 2. Expect a more explanatory post (plus screenshots!) soon. </p>
<p>Finally, Camp KDE is a few short days away. During the conference <a href="http://amarok.kde.org/blog/categories/20-lfranchi" title="lfranchi">Leo Franchi</a> and I plan to knock out some huge improvmeents to Amarok 2&#8217;s Context View.</p>
<p>Gah, Gah, Go, that&#8217;s all folks!</p>
<p><img alt="Im Going to Camp KDE!" src="http://wadejolson.files.wordpress.com/2009/01/campkde.png?w=300&#038;h=73" title="Going to Camp KDE" width="300" height="73" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.binaryelysium.com/blog/2009/01/14/a-quickie-amarok-lastfm-campkde/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Amarok &amp; NPR :: 13 Years of News Media Now Available at Your Fingertips</title>
		<link>http://www.binaryelysium.com/blog/2008/11/05/amarok-and-npr/</link>
		<comments>http://www.binaryelysium.com/blog/2008/11/05/amarok-and-npr/#comments</comments>
		<pubDate>Thu, 06 Nov 2008 04:21:21 +0000</pubDate>
		<dc:creator>Casey</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[amarok]]></category>
		<category><![CDATA[npr]]></category>

		<guid isPermaLink="false">http://binaryelysium.com/blog/?p=49</guid>
		<description><![CDATA[Earlier this summer I had noticed that National Public Radio (NPR) launched a brand new open API based on open source technologies. My initial reaction was at best skeptical. I assumed any sort of &#8220;API&#8221; released by a major media outlet would turn out to be nothing more than a few customizable RSS feeds. If [...]]]></description>
			<content:encoded><![CDATA[<p>Earlier this summer I had noticed that National Public Radio (<a href="http://www.npr.org" title="NPR.org">NPR</a>) launched a brand new <a href="http://www.npr.org/blogs/inside/2008/07/npr_api_is_live_on_nprorg.html" title="NPR API Announcement">open API</a> based on open source technologies. My initial reaction was at best skeptical. I assumed any sort of &#8220;API&#8221; released by a major media outlet would turn out to be nothing more than a few customizable RSS feeds. If the company was particularly progressive the RSS feeds might include full articles, rather than the neutered one-sentence teasers you find in <a href="http://www.nytimes.com/services/xml/rss/nyt/HomePage.xml" title="NYT's neutered feed">all</a> <a href="http://www.foxnews.com/xmlfeed/rss/0,4313,0,00.rss" title="Fox News' neutered feed">the</a> <a href="http://feeds.cbsnews.com/CBSNewsMain" title="CBS' neutered feed">big</a> <a href="http://rss.cnn.com/rss/cnn_topstories.rss" title="CNN's neutered feed">name&#8217;s</a> syndicated content.</p>
<p>I couldn&#8217;t have been more mistaken. NPR&#8217;s API is no small potatoes. Just take a look at the comprehensive <a href="http://www.npr.org/api/queryGenerator.php" title="NPR API Query Generator">Query Generator</a> to get an inkling of the types of complex queries you can create. Looking at the Query Generator also sheds some light on the content you can retrieve using the API. The <a href="http://www.npr.org/api/index.php" title="NPR API Overview">API&#8217;s main page</a> says the API exposes the <em>entire</em> NPR archive of content starting from the launch of the NPR website in 1995. Just how big is this archive? Over 250,000 stories including text, images, video, and audio! </p>
<p>This quote from the article announcing the API caught my eye immediately:</p>
<blockquote><p>
There were quite a few questions that we addressed when developing the API, but one thing that was not really in question was the need to open as much of our content as possible.<sup>1</sup>
</p></blockquote>
<p>This isn&#8217;t the first open media API. BBC was the first to offer a public open access API, however BBC&#8217;s API is restricted to the content from the past 7-days. Seven days! That&#8217;s nothing compared to the (approx.) 4748 days &#8211; and counting &#8211; that NPR&#8217;s API offers. NPR and the BBC are two large companies leading the technological shift towards open and free information.</p>
<p>But that&#8217;s only half the story. </p>
<p>After discovering this fantastic API I had to do something with it, and the new service architecture in <a href="http://www.amarok.kde.org">Amarok 2</a> provided the perfect platform to build a NPR mashup. That was several months ago, and at the time the scripting API in Amarok was still being flesh out (Thanks to <a href="http://amarok.kde.org/en/aggregator/sources/16" title="Peter's Amarok syndicated blog">Peter</a>). On Monday I noticed the BBC scriptable service <a href="http://amarok.kde.org/blog/archives/826-There-is-a-BBC-in-my-Amarok.html" title="There is a BBC in my Amarok">Nikolaj had created</a> for Amarok 2. I happened to have several hours of free time, so I cooked up a similar service for NPR:</p>
<p><a href="http://www.binaryelysium.com/images/Amarok_npr2.png"><img width='400' height='239' style="border: 0px;" src="http://www.binaryelysium.com/images/Amarok_npr2_thumb.png" /><a/><a href="http://www.binaryelysium.com/images/Amarok_npr3.png"><img width='400' height='239' style="border: 0px;" src="http://www.binaryelysium.com/images/Amarok_npr3_thumb.png" /></a><a href="http://www.binaryelysium.com/images/Amarok_npr1.png"<img width='400' height='239' style="border: 0px;" src="http://www.binaryelysium.com/images/Amarok_npr1_thumb.png" /></a></p>
<p>You can get it at <a href="http://www.kde-apps.org/content/show.php?content=92543" title="kde-apps NPR Service">kde-apps</a> or via the &#8220;Get More Scripts&#8221; button in Amarok 2&#8217;s Script Manager.</p>
<p>There is definitely room for improvement and in fact here are a few things I plan to do with it:</p>
<ul>
<li>Display more than 20 stories under a category</li>
<li>Sort content by date</li>
<li>Support searching</li>
<li>Display the full articles, with images, in the context view</li>
</ul>
<p>Major props and thanks go out to the entire NPR technical team and all the contributors who made API a reality.</p>
<ol class="footnotes"><li id="footnote_0_49" class="footnote"> <a href="http://www.npr.org/blogs/inside/2008/07/npr_api_is_live_on_nprorg.html" title="NPR API is Live on NPR.org">NPR API is Live on NPR.org</a></li></ol>]]></content:encoded>
			<wfw:commentRss>http://www.binaryelysium.com/blog/2008/11/05/amarok-and-npr/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>GSoC Wrap Up</title>
		<link>http://www.binaryelysium.com/blog/2008/09/18/gsoc-wrap-up/</link>
		<comments>http://www.binaryelysium.com/blog/2008/09/18/gsoc-wrap-up/#comments</comments>
		<pubDate>Thu, 18 Sep 2008 14:33:40 +0000</pubDate>
		<dc:creator>Casey</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[amarok]]></category>
		<category><![CDATA[gsoc]]></category>
		<category><![CDATA[mp3tunes]]></category>

		<guid isPermaLink="false">http://binaryelysium.com/blog/?p=40</guid>
		<description><![CDATA[If there was a blogger award for &#8220;Most likely to make timely posts&#8221;, then in no possible world would I even be considered for the award. I could list some excuses that sound legit in my head, but the real reason I don&#8217;t feel motivated to post often (or on time) is because I&#8217;d rather [...]]]></description>
			<content:encoded><![CDATA[<p>If there was a blogger award for &#8220;Most likely to make timely posts&#8221;, then in no possible world would I even be considered for the award. I could list some <acronym title="School">excuses</acronym> <acronym title="Travel">that</acronym> <acronym title="Life">sound</acronym> <acronym title="Moving In">legit</acronym> in my head, but the real reason I don&#8217;t feel motivated to post often (or on time) is because I&#8217;d rather spend that time in Google Reader reading everyone else&#8217;s exciting content (that was not sarcastic).</p>
<p>So, lets see&#8230; last time I posted I was en route to Akademy 2008 (the KDE developers conference). That was July 30th, now, a month and a half later I am back from Europe (which was amazing), GSoC is over (sad), and class has started (jury&#8217;s still out).</p>
<p><strong>Current Status of the MP3tunes Amarok Service</strong></p>
<p>The Good (Works)</p>
<ul>
<li>Browsing &#038; Streaming</li>
<li>Querymaker is as functional as possible with the current API</li>
<li>Manual Downloading from MP3tunes to Local Collection</li>
<li>Manual Uploading from any Collection to MP3tunes</li>
</ul>
<p>The Bad (Doesn&#8217;t work)</p>
<ul>
<li>AutoSync &#8211; 80%- <em>The code is there, however there are problems with the daemon not receiving signals from the MP3tunes&#8217; servers</em></li>
<li>MP3tunes playlists support &#8211; 0%- <em>Never got started on this</em></li>
</ul>
<p>The Ugly</p>
<p>There is one large issue I am still wrestling with. The details of the issue are complicated, but essentially it deals with the way Amarok handles remote tracks in playlists across sessions. Generally, remote tracks&#8217; metadata isn&#8217;t cached by Amarok for use between multiple sessions. So, if you add an mp3tunes track to a playlist in Amarok, then restart Amarok and try to play that playlist the mp3tunes track is blank. Now, there exists a method for retrieving that metadata, however it was originally implemented synchronously. When you are retrieving metadata for any significant number of tracks (10+) synchronously, and each one of those retreivals is an HTTP Get request you end up blocking the GUI thread. At Akademy I hacked a way to do this asynchronously, but it is a really nasty hack. I&#8217;ve got code on my computer that implements this feature correctly, but it has the nasty habit of crashing Amarok every so often.</p>
<p>Between classes, marching band, homework, and other responsibilities I&#8217;m working on getting this ironed out and committed. Hopefully this will happen before the 2.0 release, because right now using MP3tunes in Amarok across sessions is slow and annoying.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.binaryelysium.com/blog/2008/09/18/gsoc-wrap-up/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>I&#8217;m Leaving on a Jet Plane&#8230;</title>
		<link>http://www.binaryelysium.com/blog/2008/07/30/leaving-on-a-jet-plane/</link>
		<comments>http://www.binaryelysium.com/blog/2008/07/30/leaving-on-a-jet-plane/#comments</comments>
		<pubDate>Wed, 30 Jul 2008 22:14:10 +0000</pubDate>
		<dc:creator>Casey</dc:creator>
				<category><![CDATA[Life]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[amarok]]></category>
		<category><![CDATA[gsoc]]></category>

		<guid isPermaLink="false">http://binaryelysium.com/blog/?p=35</guid>
		<description><![CDATA[The ball has been dropped by me &#8211; dropped hard &#8211; during the past several weeks. First, I was stumped for a week and a half by the glib+qt fiasco, then my development machine&#8217;s hard drive shuffled off the mortal coil. Replacing it took a solid week, and when it finally arrived I installed Gentoo. [...]]]></description>
			<content:encoded><![CDATA[<p>The ball has been dropped by me &#8211; dropped hard &#8211; during the past several weeks. First, I was stumped for a week and a half by the glib+qt fiasco, then my development machine&#8217;s hard drive shuffled off the mortal coil. Replacing it took a solid week, and when it finally arrived I installed Gentoo. Two days later, the finally install completes as I&#8217;m frantically throwing my life&#8217;s possessions into a car:</p>
<ul>
<li>clothes</li>
<li>2 laptops</li>
<li>1 Target desk (retail $50)</li>
<li>assorted books</li>
<li>1 blow-up air mattress</li>
</ul>
<p>Fast forward through seven hours of me hurtling down the interstate at not-so-safe velocities, and here I am, pardoning my recent idleness as my flight to Paris boards at gate D32. Not accomplishing much over the past several weeks suddenly doesn&#8217;t seem so bad: I&#8217;m going to Europe! There is a week long hack-a-thon at Akademy; I&#8217;ll catch up then.</p>
<p><a href="http://akademy.kde.org"><img alt="Im Going to Akademy" src="http://blog.lydiapintscher.de/wp-content/igta2008.png" title="Im Going to Akademy" width="320" height="178" /></a></p>
<p>A bientôt!</p>
<p><embed src="http://www.seeqpod.net/cache/seeqpodSlimlineEmbed.swf" wmode="transparent" width="300" height="80" type="application/x-shockwave-flash" flashvars="domain=http://www.seeqpod.com&#038;playlistXMLPath=http://www.seeqpod.com/api/music/getPlaylist?playlist_id=f3ea4fd4e8"></embed></p>
]]></content:encoded>
			<wfw:commentRss>http://www.binaryelysium.com/blog/2008/07/30/leaving-on-a-jet-plane/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Another GSoC Mini Report</title>
		<link>http://www.binaryelysium.com/blog/2008/07/17/another-gsoc-mini-report/</link>
		<comments>http://www.binaryelysium.com/blog/2008/07/17/another-gsoc-mini-report/#comments</comments>
		<pubDate>Thu, 17 Jul 2008 21:42:17 +0000</pubDate>
		<dc:creator>Casey</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[amarok]]></category>
		<category><![CDATA[gsoc]]></category>
		<category><![CDATA[mp3tunes]]></category>

		<guid isPermaLink="false">http://binaryelysium.com/blog/?p=33</guid>
		<description><![CDATA[I&#8217;ve been slacking on the update reports over the past two weeks, because I&#8217;m holding out for the exciting post where I say &#8220;MP3tunes AutoSync is working! Huzzah!&#8221; Sadly, this report isn&#8217;t that one.
For the past week I&#8217;ve been banging my head against the wall of glib, QtEventLoop, and QThreads. I have quite a headache [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been slacking on the update reports over the past two weeks, because I&#8217;m holding out for the exciting post where I say &#8220;MP3tunes AutoSync is working! Huzzah!&#8221; Sadly, this report isn&#8217;t that one.</p>
<p>For the past week I&#8217;ve been banging my head against the wall of glib, QtEventLoop, and QThreads. I have quite a headache to say the least, but yesterday thanks to <a href="http://amarok.kde.org/blog/categories/18-freespirit">my mentor</a> and <a href="http://www.monroe.nu/">Ian</a>, both Amarok developers, my head actually broke through that wall. Literally. GLIB, and Qt are kowtowing at my feet swearing oaths of fealty. They have promised to work together and let me get back to doing fun things, like code new features.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.binaryelysium.com/blog/2008/07/17/another-gsoc-mini-report/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
