<?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</title>
	<atom:link href="http://www.binaryelysium.com/blog/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>Running Blurb Booksmart in Linux (without Wine)</title>
		<link>http://www.binaryelysium.com/blog/2009/10/23/running-blurb-booksmart-in-linux-without-wine/</link>
		<comments>http://www.binaryelysium.com/blog/2009/10/23/running-blurb-booksmart-in-linux-without-wine/#comments</comments>
		<pubDate>Fri, 23 Oct 2009 15:35:48 +0000</pubDate>
		<dc:creator>Casey</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[blurb]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.binaryelysium.com/blog/?p=135</guid>
		<description><![CDATA[Blurb Booksmart is a book layouting application from Blurb Inc. that enables budding authors to create books using their own text and images. Think of it as a highly specialized Adobe Illustrator or Microsoft Publisher. After creating your book in the software, you upload it to Blurb&#8217;s website where you can then order printed copies [...]]]></description>
			<content:encoded><![CDATA[<div class='stb-info_box' >Update: 2009.12.20. New version of installer released with major bugfixes.</div><br />
Blurb Booksmart is a book layouting application from <a href="http://www.blurb.com">Blurb Inc.</a> that enables budding authors to create books using their own text and images. Think of it as a highly specialized Adobe Illustrator or Microsoft Publisher. After creating your book in the software, you upload it to Blurb&#8217;s website where you can then order printed copies of the book.</p>
<p>Officially, Blurb supports Booksmart only on Windows and Mac, however it is a generic Java application, and as such can easily be ran on Linux &#8211; with some finagling. You could try and run it through wine, but the layer of emulated Windows on top of the Java makes for an annoyingly sluggish experience.  To make it easier for others, I&#8217;ve created a little script that will automatically download, convert, and install Booksmart in Linux.</p>
<p><div class='stb-info_box' >Note: While, the following instructions are Ubuntu specific, a determined other-distro user could replace the <em>apt </em> calls in the script with calls to the appropriate package management tool.</div>
<div class='stb-download_box' style="background-image: url(http://www.binaryelysium.com/blog/wp-content/plugins/wp-special-textboxes/images/download-b.png); min-height: 40px; padding-left: 50px; "><br />
<strong><a href="http://www.binaryelysium.com/blog/2009/10/23/running-blurb-booksmart-in-linux-without-wine/">Blurb Booksmart Installer</a></strong><br />
Author: <a href="http://www.binaryelysium.com">Ramblurr</a>, version: 0.2, updated: December 12, 2009,<br />
Requires Java Version 1.6 or higher, Ubuntu Linux.Note: There is a file embedded within this post, please visit this post to download the file.</div>
<h3>Setting up the Location</h3>
<p>After downloading the package, open up a terminal, and then extract the contents of the tarball.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">tar</span> zxf Blurb_Booksmart_Installer-0.2.tar.gz</pre></div></div>

<p>Change to the directory where you want booksmart installed, and copy <em>install.sh</em> to that location.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">Example:
<span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>username<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>
<span style="color: #c20cb9; font-weight: bold;">cp</span> <span style="color: #000000; font-weight: bold;">/</span>path<span style="color: #000000; font-weight: bold;">/</span>to<span style="color: #000000; font-weight: bold;">/</span>Blurb_Booksmart_Installer<span style="color: #000000; font-weight: bold;">/</span>install.sh .</pre></div></div>

<h3>Run the Installer</h3>
<p>With the terminal still open to the location where you want booksmart installed, execute the install script. Don&#8217;t forget to give it executable permissions first.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">chmod</span> +x install.sh
.<span style="color: #000000; font-weight: bold;">/</span>install.sh</pre></div></div>

<p>It will download all the necessary files to install booksmart 2.5.1. The process might take awhile on a slow internet connection.</p>
<h3>Edit the launcher script </h3>
<p>Once the script has finished executing, Booksmart should be installed in the current directory. You&#8217;ll need to edit the launcher script, so it knows where Booksmart is. The launcher script is <em>booksmart.sh</em> in the tarball.</p>
<p>Open it in an editor and edit the second line to point to the directory you created in step slash booksmart.</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">Example: <span style="color: #007800;">BOOKSMART_PATH</span>=<span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>username<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span>booksmart</pre></div></div>

<p>You can put this launcher script anywhere and use it to start bookmark. Don&#8217;t forget to give it executable permissions.</p>
<p>By default, Booksmart saves its data in $HOME/My Documents if you don&#8217;t like this you can change it by opening Booksmart and running File > Change Data Location.</p>
<p><div id="attachment_156" class="wp-caption center" style="width: 310px"><a href="http://www.binaryelysium.com/blog/wp-content/uploads/2009/10/booksmart_linux.png" title="Booksmart running in Kubuntu" rel="lightbox"><img src="http://www.binaryelysium.com/blog/wp-content/uploads/2009/10/booksmart_linux-300x187.png" alt="Booksmart running in Kubuntu" title="Booksmart running in Linux" width="300" height="187" class="size-medium wp-image-156" /></a><p class="wp-caption-text">Booksmart running in Kubuntu</p></div><br />
Happy Blurbing : )</p>
]]></content:encoded>
			<wfw:commentRss>http://www.binaryelysium.com/blog/2009/10/23/running-blurb-booksmart-in-linux-without-wine/feed/</wfw:commentRss>
		<slash:comments>32</slash:comments>
		</item>
		<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 Vodafone G1</title>
		<link>http://www.binaryelysium.com/blog/2009/01/30/the-vodafone-g1/</link>
		<comments>http://www.binaryelysium.com/blog/2009/01/30/the-vodafone-g1/#comments</comments>
		<pubDate>Fri, 30 Jan 2009 15:43:10 +0000</pubDate>
		<dc:creator>Casey</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[g1]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[mobile]]></category>

		<guid isPermaLink="false">http://www.binaryelysium.com/blog/2009/01/30/the-vodafone-g1/</guid>
		<description><![CDATA[I&#8217;m writing this post from my G1 (thanks to the PostBot wordpress application) in Cairo, Egypt using Vodafone Egypt&#8217;s 3G service.
Before coming over I was told (by T-mobile) that my phone absolutely would not work, because the G1 only works with the &#8220;google network&#8221; that T-Mobile has exclusive access to. Without this &#8220;google network&#8221;, I [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m writing this post from my G1 (thanks to the PostBot wordpress application) in Cairo, Egypt using Vodafone Egypt&#8217;s 3G service.</p>
<p>Before coming over I was told (by T-mobile) that my phone absolutely would not work, because the G1 only works with the &#8220;google network&#8221; that T-Mobile has exclusive access to. Without this &#8220;google network&#8221;, I was told, my phone wouldn&#8217;t turn on and was essentially a paper weight (exact words). Yeah right.</p>
<p>I convinced the customer service representative to give me my unlock code (which you are entitled to after 90 days of service), and told her I didn&#8217;t want the outrageous international plan (15$/megabyte).  Note: it takes 1 or 2 days for the unlock code request to be processed and emailed to you.</p>
<p>Getting my G1 working in Egypt was quite simple. I bought a prepaid sim card from one of the Vodafone shops you&#8217;ll find on every street (literally) for 45 L.E. (approx. $6) and a 100 L.E. (approx $17) card for 100 minutes.</p>
<p>After putting the simcard in and powering up the phone, I was greeted with an unlock dialog into which I entered the T-Mobile unlock code. Poof! Instant cellular access. 3G service was slightly more complicated. You have to add a new APN in the mobile network settings.</p>
<p><strong>Instructions for adding the Vodafone Egypt APN </strong></p>
<ol>
<li> Open <em> Settings > Wireless Controls > Mobile Networks > Access Point Names </em></li>
<li> Click <em>Menu > Add APN </em></li>
<li> Enter the following information<br />
<strong>Name:</strong> Vodafone Internet<br />
<strong>APN:</strong> internet.vodafone.net<br />
<strong>User:</strong> internet<br />
<strong>Pass:</strong> internet<br />
<strong>APN type:</strong> default
</li>
<li> Leave every other field at the default setting </li>
<li> Reboot the phone </li>
<li> Enjoy 3G service </li>
</ol>
<p>My hands are cramping from writing this post on the tiny keyboard. Pardon any spelling/grammar mistakes. My hands are done.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.binaryelysium.com/blog/2009/01/30/the-vodafone-g1/feed/</wfw:commentRss>
		<slash:comments>12</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>Android: Now With 100% More Radio</title>
		<link>http://www.binaryelysium.com/blog/2009/01/24/android-now-with-more-radio/</link>
		<comments>http://www.binaryelysium.com/blog/2009/01/24/android-now-with-more-radio/#comments</comments>
		<pubDate>Sat, 24 Jan 2009 09:50:40 +0000</pubDate>
		<dc:creator>Casey</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[last.fm]]></category>

		<guid isPermaLink="false">http://www.binaryelysium.com/blog/?p=93</guid>
		<description><![CDATA[Last week I mentioned a secret project involving Last.fm. Well today it was finally announced! Since late last November I, and several other open source android developers, have been working together with the official last.fm developers on an Android application that would leverage the full suite of Last.fm features. Today this app was officially released [...]]]></description>
			<content:encoded><![CDATA[<p>Last week I mentioned a <a href="http://www.binaryelysium.com/blog/2009/01/14/a-quickie-amarok-lastfm-campkde/" title="secret project">secret project</a> involving Last.fm. Well today it was finally <a href="http://blog.last.fm/2009/01/23/lastfm-on-android" title="last.fm on android announcement">announced</a>! Since late last November I, and several other open source android developers, have been working together with the official last.fm developers on an Android application that would leverage the full suite of Last.fm features. Today this app was officially released to the <a href="http://www.android.com/market/#app=lastfm" title="Last.fm App in the Android Market">Android Market</a>. </p>
<p>Not only does the application bring the full power of last.fm radio to the Android platform, but it also demonstrates the power of open source development in a commercial setting. When last.fm expressed interest around late November in developing an android application to be featured in the Marketplace, Google responded with an enthusiastic thumbs up but included a deadline of mid-January. A month and a half is an incredibly short turnaround time for a fully featured mobile application. </p>
<p>Last.fm contacted several 3rd-party developers who had already began work on their own last.fm android clients, and suggested that we work together and pool our resources. You can take a peek at the results below. I am proud of our product after such a short development cycle, even though there exist several outstanding bugs at launch time. We already have a slew of bug-fixes and feature additions in the tubes for another release. </p>
<p>Keep an eye out for posts announcing the opening of the site where the source code can be found, as well as bugs and feature requests submitted. Due to licensing issues the source code repository and issue tracker will be delayed several days.</p>
<p>(click for full image)<br />

<a href='' title='now_playing'><img width="150" height="150" src="http://www.binaryelysium.com/blog/wp-content/uploads/2009/01/now_playing-150x150.png" class="attachment-thumbnail" alt="" title="now_playing" /></a>
<a href='' title='search_results'><img width="150" height="150" src="http://www.binaryelysium.com/blog/wp-content/uploads/2009/01/search_results-150x150.png" class="attachment-thumbnail" alt="" title="search_results" /></a>
<a href='' title='search_no_results'><img width="150" height="150" src="http://www.binaryelysium.com/blog/wp-content/uploads/2009/01/search_no_results-150x150.png" class="attachment-thumbnail" alt="" title="search_no_results" /></a>
<a href='' title='bio'><img width="150" height="150" src="http://www.binaryelysium.com/blog/wp-content/uploads/2009/01/bio-150x150.png" class="attachment-thumbnail" alt="" title="bio" /></a>
<a href='' title='event'><img width="150" height="150" src="http://www.binaryelysium.com/blog/wp-content/uploads/2009/01/event-150x150.png" class="attachment-thumbnail" alt="" title="event" /></a>
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.binaryelysium.com/blog/2009/01/24/android-now-with-more-radio/feed/</wfw:commentRss>
		<slash:comments>5</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>Thoughts From Charlotte International</title>
		<link>http://www.binaryelysium.com/blog/2009/01/16/thoughts-from-charlotte-international/</link>
		<comments>http://www.binaryelysium.com/blog/2009/01/16/thoughts-from-charlotte-international/#comments</comments>
		<pubDate>Fri, 16 Jan 2009 12:30:23 +0000</pubDate>
		<dc:creator>Casey</dc:creator>
				<category><![CDATA[Life]]></category>

		<guid isPermaLink="false">http://www.binaryelysium.com/blog/2009/01/16/thoughts-from-charlotte-international/</guid>
		<description><![CDATA[Alright, so this post is more of an excuse to play with this new Wordpress app for my Android phone, then it is me sharing a spontaneous flash of insight while sitting at gate B2 in Charlotte International.
Airports are fantastic settings for observing people interact. The field of rigid, connected chairs at the gates force [...]]]></description>
			<content:encoded><![CDATA[<p>Alright, so this post is more of an excuse to play with this new Wordpress app for my Android phone, then it is me sharing a spontaneous flash of insight while sitting at gate B2 in Charlotte International.</p>
<p>Airports are fantastic settings for observing people interact. The field of rigid, connected chairs at the gates force people to congregate, and often the sphere of personal space is severly limited. The space is public, but groups of friends or families will treat it as private.</p>
<p>Interesting, how our sense of the boundary between public and private space changes when we are forced into close proximity with strangers. Consider, the young couple getting hot and bothered only a chair adjacent from me as if they&#8217;re the only people for miles, but glare at me when they notice me looking at them while typing furiously on this tiny keyboard. Apparently one empty chair on either side is sufficient space for them to consider their activity private, because as someone took the empty seat on the othe side, they stopped immediately. </p>
<p>The family with enough luggage to supply a small army has staked out a section of chairs, almost creating a walled fortress within which they laugh, argue, carry on as if they&#8217;re in the comfort of their own home. Then there are the two strangers sitting adjacent to eachother. Their arms share the same rest, yet for all their actions they could be in the opposite corners of the world.</p>
<p>Boarding has started. Hopefully this blogging app works. See you in Jamaica!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.binaryelysium.com/blog/2009/01/16/thoughts-from-charlotte-international/feed/</wfw:commentRss>
		<slash:comments>0</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>
	</channel>
</rss>
