<?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; campkde</title>
	<atom:link href="http://www.binaryelysium.com/blog/tag/campkde/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>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<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. [...]]]></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 Qt&#8217;s [...]]]></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 [...]]]></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 [...]]]></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&#8242;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>
