<?xml version="1.0"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">

<channel>
	<title>Openismus Blogs</title>
	<link>http://www.openismus.com</link>
	<language>en</language>
	<description>Openismus Blogs - http://www.openismus.com</description>

<item>
	<title>Daniel Elstner: Bjarne Stroupstrup on C++0x</title>
	<guid>http://danielkitta.org/blog/?p=211</guid>
	<link>http://danielkitta.org/blog/2010/03/18/bjarne-stroupstrup-on-c0x/</link>
	<description>&lt;p&gt;I&amp;#8217;m just back from &lt;a href=&quot;http://www.tkk.fi/en/&quot;&gt;Aalto University School of Science and Technology&lt;/a&gt; in Espoo, Finland, where I attended &lt;a href=&quot;http://www2.research.att.com/~bs/homepage.html&quot;&gt;Bjarne Stroustrup&lt;/a&gt;&amp;#8217;s roadshow talk on C++0x. In the talk, Stroustrup provided a very nice overview of the features in the C++ standard and how they fit into the evolution of the C++ programming language.&lt;/p&gt;
&lt;p&gt;Bjarne Stroustrup made the impression of a down-to-earth guy with a very healthy attitude about C++ features and their development. I was excited to learn that the C++0x draft standard had just been declared final the week before. That means the content of the standard is de-facto finished now, and it will be formalized as an ISO standard in about one year. There sure are quite a number of nice goodies in C++0x, I can&amp;#8217;t wait to get my hands dirty on code using it.&lt;/p&gt;
&lt;p&gt;For the C++ groupies among us, I took &lt;a href=&quot;http://www.flickr.com/photos/45158207@N08/sets/72157623644005870/&quot;&gt;photographs&lt;/a&gt; of all presentation slides and of course also of Bjarne Stroustrup himself.&lt;/p&gt;</description>
	<pubDate>Thu, 18 Mar 2010 12:09:54 +0000</pubDate>
</item>
<item>
	<title>Mathias Hasselmann: QML Hype</title>
	<guid>http://taschenorakel.de/mathias/2010/03/18/qml-hype/</guid>
	<link>http://taschenorakel.de/mathias/2010/03/18/qml-hype/</link>
	<description>&lt;p&gt;So yesterday I've skipped the chance to watch some &amp;quot;exciting&amp;quot; &lt;a href=&quot;http://taschenorakel.de/mathias/2010/03/18/qml-hype/&quot;&gt;QML&lt;/a&gt; demos in &lt;a href=&quot;http://maps.google.com/maps?f=q&amp;amp;source=s_q&amp;amp;hl=de&amp;amp;geocode=&amp;amp;q=helsinki,+ruoholahti&amp;amp;sll=37.0625,-95.677068&amp;amp;sspn=34.122306,78.486328&amp;amp;ie=UTF8&amp;amp;hq=&amp;amp;hnear=Ruoholahti,+Helsinki,+Finnland&amp;amp;z=14&quot;&gt;Helsinki&lt;/a&gt;. This was quite surprising to some of my KDE rooted team mates. They didn't understand how I could not show the slightest sign of excitement.
&lt;/p&gt;
&lt;p&gt;Well, but actually I wonder for months: What's actually the fancy and awesome, the brilliant new, the exciting part of QML? It doesn't seem to be rocket science. It's nothing new. Declarative UIs are done for ages. To name some very few implementations there are Windows and PM/Shell RC files, Glade, GtkBuilder. You want to mix declarations with managed code? XUL and XAML have visited that land. You want to use JavaScript for your UIs? Flash, XUL, Dynamic HTML and Web Widgets, GObject Introspection.
&lt;/p&gt;
&lt;p&gt;So what am I missing except that Qt finally catches up to its competition? It's a welcome addition, but why should I be overly excited and die of excitement?
&lt;/p&gt;</description>
	<pubDate>Thu, 18 Mar 2010 10:24:35 +0000</pubDate>
</item>
<item>
	<title>Daniel Borgmann: ubuntu-theme-tweak</title>
	<guid>http://dborg.wordpress.com/?p=169</guid>
	<link>http://dborg.wordpress.com/2010/03/15/contemporary-visual-ui-design/</link>
	<description>&lt;p&gt;One thing that I often missed in GNOME development is an easy way to apply glow and shadow effects to any kind of element. The most obvious kind of this is the lack of a built-in method to render text shadows. Selectively used in almost every single designer&amp;#8217;s mockup, the lack of it in actual implementations has been one reason why the result is rarely as satisfying as it could be.&lt;/p&gt;
&lt;p&gt;While some people have stated the opinion that they do not like text shadows, and they can easily be overused, this is not an excuse to make it harder than a single line of code (or CSS!) to implement them. Creating text twice is not a good solution. Despite the awkwardness of the implementation, it is also inefficient, and the reason why this approach was discarded for Maemo 5.&lt;/p&gt;
&lt;p&gt;To give a few examples of the importance of text shadows (and glow) in modern UI design:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://dborg.files.wordpress.com/2010/03/text-effects.png&quot;&gt;&lt;img class=&quot;alignnone size-medium wp-image-170&quot; title=&quot;text-effects&quot; src=&quot;http://dborg.files.wordpress.com/2010/03/text-effects.png?w=300&amp;#038;h=186&quot; alt=&quot;&quot; width=&quot;300&quot; height=&quot;186&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;(Click to enlarge)&lt;/p&gt;
&lt;p&gt;WebKit got this covered, why haven&amp;#8217;t we? This should be well supported throughout the platform. Where and when to actually use it should not at all be a question that depends on technical issues.&lt;/p&gt;
&lt;p&gt;Text shadows are only the tip of the iceberg though. In particular shadows and glow effects are extremely powerful and flexible assets in any GUI designer&amp;#8217;s toolkit. We should have utility functions easily available for these effects, as well as the obvious rounded borders and multi-step gradients.&lt;/p&gt;
&lt;p&gt;GNOME Shell is certainly on the right track, with their fairly flexible CSS styling, but many of these elements are still missing. This leads to issues like &lt;a href=&quot;https://bugzilla.gnome.org/show_bug.cgi?id=581067&quot;&gt;Bug 581067&lt;/a&gt;. If the designer wants a glow, she should be getting a glow. Something as elemental as this just shouldn&amp;#8217;t require any significant programming effort. I am confident that GNOME Shell will get there, it&amp;#8217;s just something to keep in mind (i.e. once the effect is implemented once, make it easily available via CSS).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Classy Gradients&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Another common eye-sore is the way we utilise gradients. A rule of thumb should be: Unless the gradient is used to indicate an obviously rounded surface, the gradient should not actually be visible to the naked eye. Gradients are excellent to add sophistication to an otherwise flat surface by simulating the natural distribution of light, but gradients in itself are by and large just not an attractive design element.&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;alignnone size-full wp-image-174&quot; title=&quot;gradients&quot; src=&quot;http://dborg.files.wordpress.com/2010/03/gradients.png?w=500&amp;#038;h=400&quot; alt=&quot;&quot; width=&quot;500&quot; height=&quot;400&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Consider the new &lt;a href=&quot;http://farm5.static.flickr.com/4042/4405063646_f13782d542_o.png&quot;&gt;Ubuntu theme&lt;/a&gt;. The gradient in the panel is pretty good. Oddly enough the gradient in the titlebars is much different. While in itself it is still acceptable (due to the slight illusion of glossiness), the added menubar completely ruins it. Of course that is ultimately a symptom of the larger issue that is the separation between window frame and application (hopefully soon solved by client side decorations), but there is certainly an argument for rather not doing something than to do it badly. Also unnecessarily exaggerated is the gradient of the title button tray.&lt;/p&gt;
&lt;p&gt;The straight-forward application of the concepts above would result in something like this:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://dborg.files.wordpress.com/2010/03/ubuntu-theme-tweak1.png&quot;&gt;&lt;img class=&quot;alignnone size-medium wp-image-178&quot; title=&quot;ubuntu-theme-tweak&quot; src=&quot;http://dborg.files.wordpress.com/2010/03/ubuntu-theme-tweak1.png?w=300&amp;#038;h=225&quot; alt=&quot;&quot; width=&quot;300&quot; height=&quot;225&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;(Yes, it&amp;#8217;s far from perfect, but I hope it illustrates some points. I also forgot to colour the title and menu text)&lt;/p&gt;
&lt;p&gt;What I mainly hoped to accomplish with this is to create some discussion about how we can make these things easier to do for designers and developers, and where to add these capabilities in the stack (Cairo? Pango? A graphic styles library? Gtk?). I would want to work on this.&lt;/p&gt;
&lt;p&gt;Also, what is our answer for rich application UIs? When Webkit beats us in capabilities for desktop application UIs, something is clearly amiss.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/dborg.wordpress.com/169/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/dborg.wordpress.com/169/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/dborg.wordpress.com/169/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/dborg.wordpress.com/169/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/dborg.wordpress.com/169/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/dborg.wordpress.com/169/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/dborg.wordpress.com/169/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/dborg.wordpress.com/169/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/dborg.wordpress.com/169/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/dborg.wordpress.com/169/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=dborg.wordpress.com&amp;amp;blog=14048&amp;amp;post=169&amp;amp;subd=dborg&amp;amp;ref=&amp;amp;feed=1&quot; /&gt;</description>
	<pubDate>Mon, 15 Mar 2010 19:44:11 +0000</pubDate>
</item>
<item>
	<title>Peter Penz: Git</title>
	<guid>tag:blogger.com,1999:blog-591179528445148028.post-8924159573149688580</guid>
	<link>http://ppenz.blogspot.com/2010/03/git.html</link>
	<description>The question which version control system is &quot;the best&quot;, is often the base for endless discussions. I'm quite pragmatic in this regard: I've used &lt;a href=&quot;http://en.wikipedia.org/wiki/IBM_Rational_ClearCase&quot;&gt;Rational Clearcase&lt;/a&gt; during the last 9 years and worked with &lt;a href=&quot;http://www.cvshome.org/&quot;&gt;CVS&lt;/a&gt; and &lt;a href=&quot;http://subversion.tigris.org/&quot;&gt;Subversion&lt;/a&gt; during the last 4 years. From my experience the acceptance of a version control system depends a lot on how it matches to the software development workflow of a company/community.&lt;br /&gt;&lt;br /&gt;Personally I prefer the straight forward approach of Subversion over the (technically) powerful Clearcase. Still Subversion is cumbersome when working with temporary development branches and I was curious when I heard about the concepts used in &lt;a href=&quot;http://git-scm.com/&quot;&gt;Git&lt;/a&gt;. After reading about Git I thought that it unites the benefits of Clearcase and Subversion without introducing any drawbacks.&lt;br /&gt;&lt;br /&gt;At &lt;a href=&quot;http://www.openismus.com/&quot;&gt;Openismus&lt;/a&gt; I got the chance to work with Git on a real project. The first impression was ambivalent: On one hand Git is extremely powerful, fast and does not limit the developer how to work with branches or doing merges. On the other hand the learning curve is higher than expected and it requires a different mind set in comparison to centralized version control systems. Because of the huge amount of new possibilities a ruleset for projects using git is highly recommended. Git reminds me to C++: You can do wonderful things with it in a clever way, but it's very easy to shoot oneself in the foot.&lt;br /&gt;&lt;br /&gt;I still need to learn a lot about Git, but after a few weeks of working with it I already prefer it over Subversion a lot. More and more projects switch to Git, so this does seem to be a common experience.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/591179528445148028-8924159573149688580?l=ppenz.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 11 Mar 2010 17:24:46 +0000</pubDate>
</item>
<item>
	<title>Murray Cumming: What our Trainees Learn</title>
	<guid>http://www.murrayc.com/blog/?p=1144</guid>
	<link>http://www.murrayc.com/blog/permalink/2010/03/09/what-our-trainees-learn/</link>
	<description>&lt;p&gt;After our successful year of training at Openismus, I thought I&amp;#8217;d publish the rough bullet-point list that we used. Whoever we &lt;a href=&quot;http://www.murrayc.com/blog/permalink/2010/03/05/openismus-wants-more-trainees/&quot;&gt;choose&lt;/a&gt; for the following year will repeat much the same process, with in-depth critique and a dose of reality.&lt;/p&gt;
&lt;p&gt;These were our overall aims:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Familiarity with the programming languages, toolkits, and tools, beyond the average.&lt;/li&gt;
&lt;li&gt;Good quality habits &amp;#8211; documentation, ChangeLogs/commit-messages, bug filing, simple code.&lt;/li&gt;
&lt;li&gt;Good communication &amp;#8211; politeness, precision, knowing who/where to contact, tracking progress and following up.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And this is the stuff that we checked off along the way:&lt;/p&gt;
&lt;h3&gt;Knowledge of C&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Respect for memory. True understanding of pointers.
&lt;ul&gt;
&lt;li&gt;Understanding of the many ways to use * and &amp;amp; and [], declaring and dereferencing.&lt;/li&gt;
&lt;li&gt;Understanding of state (Such as a widget&amp;#8217;s data, or a user_data struct, or a C++ class&amp;#8217;s member variables.)&lt;/li&gt;
&lt;li&gt;Understanding function pointers, including their weird syntax, made easier by use of typedefs.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Basic understanding of object-orientation &amp;#8211; Write functions that have a namespaced prefix and that take a first self/this parameter.
&lt;ul&gt;
&lt;li&gt;Write init and free functions where appropriate.&lt;/li&gt;
&lt;li&gt;Don&amp;#8217;t use a prefix that is used by an existing library.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Use of enums (or defines if necessary, or static constants if appropriate) instead of magic numbers/strings.&lt;/li&gt;
&lt;li&gt;Breaking code up into small blocks, separated by empty lines, with pseudo-code comments above each block. In small functions, of course.&lt;/li&gt;
&lt;li&gt;Initializing local variables, even if you don&amp;#8217;t think it&amp;#8217;s necessary.&lt;/li&gt;
&lt;li&gt;The GTK+ coding style, which is common for C.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Knowledge of GTK+&lt;/h3&gt;
&lt;p&gt;Familiarity with GTK+, to the level of implementing new widgets.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Reference-counting: Conventions and special cases (gstreamer and tinymail use a different convention, for instance).&lt;/li&gt;
&lt;li&gt;Child widgets don&amp;#8217;t really use reference-counting. They are destroyed by parents regardless.&lt;/li&gt;
&lt;li&gt;Glade and GtkBuilder&lt;/li&gt;
&lt;li&gt;Implement a new widget, doing some custom drawing and/or containing some child widgets. Make sure that you understand what the various construct/init/finalize/destroy/etc vfuncs do.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Other C stuff and basic tools&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Tools: gdb, valgrind, svn, git, diff, patch.&lt;/li&gt;
&lt;li&gt;Writing ChangeLog entries or commit messages (mentioning files and functions, and what changed in them and why).&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.openismus.com/documents/&quot;&gt;autotools&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;gtk-doc syntax, and knowing what developers need to see in the documentation. Mention the what, when, why, how, and &amp;#8220;see also&amp;#8221;.&lt;/li&gt;
&lt;li&gt;Familiarity with Clutter, to the level of implementing new actors. See the Openismus &lt;a href=&quot;http://openismus.com/documents/clutter_tutorial&quot;&gt;Clutter tutorial&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Fix some GNOME bugs, submitting patches. Maybe work with the &lt;a href=&quot;http://live.gnome.org/GnomeLove &quot;&gt;gnome-love&lt;/a&gt; group.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Communication&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Join the relevant GTK+, GNOME, Maemo, and Qt mailing lists.&lt;/li&gt;
&lt;li&gt;Add Openismus employees to your GNOME &lt;a href=&quot;https://bugzilla.gnome.org/userprefs.cgi?tab=email&quot;&gt;bugzilla Users To Watch list&lt;/a&gt;. Someone will watch yours too.&lt;/li&gt;
&lt;li&gt;Be repeatedly told to file bugs and patches, and to follow up on them. File bugs about documentation too.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Familiarity with C++ &amp;#8211; at least the parts used by gtkmm and Qt&lt;/h3&gt;
&lt;p&gt;This takes more time than anything else, but its doable with motivation and mentoring from our experts.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Read a full book, such as &lt;a href=&quot;http://www.amazon.com/exec/obidos/ISBN=020170353X/murrayswebpages/&quot;&gt;Accelerated C++&lt;/a&gt;, cover to cover.&lt;/li&gt;
&lt;li&gt; Understanding of classes, constructors, inheritance, polymorphism.&lt;/li&gt;
&lt;li&gt; Understanding of references.&lt;/li&gt;
&lt;li&gt; Understanding of const and mutable.&lt;/li&gt;
&lt;li&gt; Templates. And template specializations.&lt;/li&gt;
&lt;li&gt; Use of &lt;a href=&quot;http://www.openismus.com/documents/cplusplus/standard_containers.shtml&quot;&gt;std containers&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt; Familiarity with gtkmm (easy because they know GTK+ already.)&lt;/li&gt;
&lt;li&gt;The gtkmm coding style, which is common for C++.&lt;/li&gt;
&lt;li&gt; The doxygen/javadoc syntax.&lt;/li&gt;
&lt;li&gt; Wrap some new GTK+ API for gtkmm.&lt;/li&gt;
&lt;li&gt; Fix a Glom bug. For instance, there are some simple &lt;a href=&quot;https://bugzilla.gnome.org/buglist.cgi?keywords=gnome-love;product=Glom;resolution=---&quot;&gt;Glom gnome-love bugs&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Familiarity with Qt. Understand what moc does. Do something real-world with it&amp;#8217;s (quasi) model/view widgets. Understand QString historical oddities.&lt;/li&gt;
&lt;li&gt;Maybe find a bug to fix in KDE.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Optimization work&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Understanding processing, memory, and IO costs.&lt;/li&gt;
&lt;li&gt;Avoiding premature optimization while avoiding obvious performance errors.&lt;/li&gt;
&lt;li&gt;Using Oprofile, SysProf, system tap, etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Debian/Ubuntu packaging&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Package a new version of an existing package, such as Glom, in the Openismus PPA.&lt;/li&gt;
&lt;li&gt;Package something new for Ubuntu.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Embedded Linux&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Use of Scratchbox with Maemo.
&lt;ul&gt;
&lt;li&gt;Port something to Maemo.&lt;/li&gt;
&lt;li&gt;Package it for maemo-extras.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Using a BeagleBoard:
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.openismus.com/documents/linux/embedded/beagleboard_getting_started.shtml&quot;&gt;Set up the BeagleBoard&lt;/a&gt; and get something running.&lt;/li&gt;
&lt;li&gt;Try to install &lt;a href=&quot;http://wiki.maemo.org/Mer&quot;&gt;Mer&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Putting a self-built distro on generic hardware (BeagleBoard), using Poky or OpenEmbedded.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Be aware of differences/pros/cons between Poky and OpenEmbedded.&lt;/li&gt;
&lt;li&gt;Document how a customer might prepare and maintain a custom debian (or Ubuntu) distro for their embedded hardware project. For instance, how to install and use an autobuilder for packages.&lt;/li&gt;
&lt;/ul&gt;</description>
	<pubDate>Tue, 09 Mar 2010 14:46:44 +0000</pubDate>
</item>
<item>
	<title>André Klapper: maemo.org Bugday: March 16th, 18:00-03:00 UTC.</title>
	<guid>http://blogs.gnome.org/aklapper/?p=497</guid>
	<link>http://blogs.gnome.org/aklapper/2010/03/08/maemo-org-bugday2/</link>
	<description>&lt;p&gt;Announcing another maemo.org Bugday:&lt;/p&gt;
&lt;p&gt;&lt;center&gt;&lt;i&gt;Tuesday, March 16th, &lt;a href=&quot;http://www.timeanddate.com/worldclock/converter.html&quot;&gt;18:00-03:00 UTC&lt;/a&gt;&lt;br /&gt;in #maemo-bugs on Freenode IRC&lt;/i&gt;&lt;/center&gt;&lt;/p&gt;
&lt;p&gt;No specific topic set &amp;#8211; see &lt;a href=&quot;http://wiki.maemo.org/Bugs:Tasks&quot;&gt;the wiki for some ideas.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Bugdays are about hanging out together on IRC, triaging/discussing some reports in maemo.org Bugzilla, and introducing new people into triaging. No technical knowledge needed, no obligations. Step by and say hello to the &lt;a href=&quot;http://wiki.maemo.org/Bugsquad&quot;&gt;Bugsquad&lt;/a&gt; or become part of it. &lt;img src=&quot;http://blogs.gnome.org/aklapper/wp-content/mu-plugins/tango-smilies/tango/face-smile.png&quot; alt=&quot;:-)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;</description>
	<pubDate>Mon, 08 Mar 2010 18:02:41 +0000</pubDate>
</item>
<item>
	<title>Murray Cumming: Openismus Wants More Trainees</title>
	<guid>http://www.murrayc.com/blog/?p=1139</guid>
	<link>http://www.murrayc.com/blog/permalink/2010/03/05/openismus-wants-more-trainees/</link>
	<description>&lt;p&gt;A little over a year ago, we hired our first batch of &lt;a href=&quot;http://www.openismus.com/&quot;&gt;Openismus&lt;/a&gt; trainees. After an intensive year gaining knowledge and experience, I&amp;#8217;m proud to say that David King and Michael Hasselmann have now graduated to regular work on customer projects. They&amp;#8217;ve become solid developers in whom we have confidence, thanks to mentoring from all our other employees. Personally, creating these new development careers is one of the most worthwhile things I&amp;#8217;ve done in my career.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;So we need some more people&lt;/strong&gt; to repeat our success. Here&amp;#8217;s the text from the &lt;a href=&quot;http://www.murrayc.com/blog/permalink/2008/11/10/openismus-wants-trainees/&quot;&gt;first time&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;If you are smart and enthusiastic but you lack experience then we can provide the opportunity. You would work mostly on existing open source projects instead of customer projects, just to get experience with C, C++, GTK+ and Qt. Our developers would provide technical guidance and encourage you to work and communicate in a structured way, creating software that’s actually usable and useful.&lt;/p&gt;
&lt;p&gt;This is also a great opportunity to move to Berlin – a wonderful city for young people. Munich may also be a possibility if necessary.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;I&amp;#8217;d also like to point out that we are very much an &lt;strong&gt;equal-opportunities employer&lt;/strong&gt;. We get almost no applications from women or minority groups and that&amp;#8217;s not good enough. We are a small company so every new person can make the place more like themselves.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Please send us an email&lt;/strong&gt; telling us about yourself. Show enthusiasm and show us anything you&amp;#8217;ve done in the open source world already. As before, I will filter out the least suitable candidates by expecting you to find the appropriate email address yourself. Unfortunately, as before, it&amp;#8217;s unlikely that we&amp;#8217;ll want to deal with visa paperwork if you are not already working in the EU.&lt;/p&gt;</description>
	<pubDate>Fri, 05 Mar 2010 17:26:22 +0000</pubDate>
</item>
<item>
	<title>Peter Penz: Packaging</title>
	<guid>tag:blogger.com,1999:blog-591179528445148028.post-8296332328532043599</guid>
	<link>http://ppenz.blogspot.com/2010/03/packaging.html</link>
	<description>&lt;a href=&quot;http://3.bp.blogspot.com/_zDPqioLuxns/S4_G12X6sTI/AAAAAAAAAJg/n2EiUCyFfwg/s1600-h/application-x-deb.png&quot;&gt;&lt;img src=&quot;http://3.bp.blogspot.com/_zDPqioLuxns/S4_G12X6sTI/AAAAAAAAAJg/n2EiUCyFfwg/s320/application-x-deb.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5444789102945415474&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Before I joined &lt;a href=&quot;http://www.openismus.com/&quot;&gt;Openismus&lt;/a&gt;, I never created RPM- or Debian-package for my sources. After releasing an early version of the &lt;a href=&quot;http://dolphin.kde.org/&quot;&gt;Dolphin&lt;/a&gt; sources at &lt;a href=&quot;http://www.kde-apps.org/&quot;&gt;www.kde-apps.org&lt;/a&gt;, friendly people stepped up and created RPM- or Debian-packages for them. When Dolphin got part of &lt;a href=&quot;http://www.kde.org/&quot;&gt;KDE&lt;/a&gt;, the packaging anyhow was no problem anymore as it had been done by the Linux distributions.&lt;br /&gt;&lt;br /&gt;At Openismus one of my first tasks was the prepare Debian packages for &lt;a href=&quot;http://www.glom.org/&quot;&gt;Glom&lt;/a&gt; and the Qt frontend &lt;a href=&quot;http://gitorious.org/qlom/qlom&quot;&gt;Qlom&lt;/a&gt;. Beside preparing packages for Ubuntu Karmic, also packages for &lt;a href=&quot;http://maemo.org/&quot;&gt;Maemo&lt;/a&gt; had to be created.&lt;br /&gt;&lt;br /&gt;I always thought developing software can be tricky, but now I know that creating a package is also very challenging and requires a very focused style of working. As there are many traps for beginners, I'd like to provide some useful links that helped me to fulfill this task (beside the help of my colleagues at Openismus of course):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.debian.org/doc/maint-guide/&quot;&gt;Debian New Maintainers' Guide&lt;/a&gt;: Is a must-read if you need to create a package from scratch.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.murrayc.com/blog/permalink/2006/04/21/building-modified-debian-packages/&quot;&gt;Building Modified Debian Packages&lt;/a&gt;: Provides a good overview for the case where a source package is available, which should be updated by some patches.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://wiki.maemo.org/Documentation/Maemo_5_Developer_Guide/Packaging%2C_Deploying_and_Distributing#Creating_Debian_Packages&quot;&gt;Creating Debian Packages for Maemo&lt;/a&gt;: When creating a Debian package for Maemo, some things from the Debian New Maintainer's guide can be skipped, other additional steps are required. Beside step by step instructions to create a Maemo package from scratch, the differences to a default Debian package are explained well there.&lt;/li&gt;&lt;/ul&gt;Still there is a lot of room to fail at the beginning. There have been some traps I fell into and I'd like to summarize them as long as I can remember them:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Don't modify a decompressed version of a file that is part of the *.orig.tar.gz file, without updating the *.orig.tar.gz. This sounds (and is) obvious, but it is easy to fall into this trap when modifying e. g. a configure.ac file for testing. The result of doing such changes is that the local installation of the generated package might behave different in comparison to the official package created by a PPA.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Beside the build dependencies take care to verify the runtime dependencies. It is easy to forget this, as the local system most probably will already contain the needed packages.&lt;/li&gt;&lt;/ul&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/591179528445148028-8296332328532043599?l=ppenz.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Fri, 05 Mar 2010 07:43:41 +0000</pubDate>
</item>
<item>
	<title>Daniel Elstner: Why I hate Qt</title>
	<guid>http://danielkitta.org/blog/?p=203</guid>
	<link>http://danielkitta.org/blog/2010/02/25/why-i-hate-qt/</link>
	<description>&lt;p&gt;Although I&amp;#8217;m a GNOME and gtkmm guy, my paid work involves Qt. It&amp;#8217;s no secret that I have a very strong antipathy towards the Qt mania to assimilate everything into their framework, the culture of their community, and their nonchalant abuse of the C++ programming language. Often, people suggest that I&amp;#8217;m exaggerating the faults of Qt, and that there are much worse alternatives out there. Fair enough.&lt;/p&gt;
&lt;p&gt;But today I happened onto another one of those little inanities which so often add up to a huge stinking pile. I decided to share this particular example, as I think it may help people to understand why I&amp;#8217;m feeling so strongly about Qt.&lt;/p&gt;
&lt;p&gt;A while ago, I filed &lt;a href=&quot;http://bugreports.qt.nokia.com/browse/QTBUG-5732&quot;&gt;Qt bug #5732&lt;/a&gt;, together with a patch to fix the problem. In addition to the fix for the central problem reported in the bug, I also provided a second patch to correct another problem I stumbled upon while I worked on the actual bug fix. The bug was acknowledged by a Qt developer and the code got fixed. They decided to fix it their own way instead of applying my patch, which is fair enough. I may not have agreed with the way it was implemented, but the problem I reported was fixed.&lt;/p&gt;
&lt;p&gt;Today, I again looked at the Qt OpenGL code, and happened to stumble upon the OpenGL extension checks. Apparently, the extension checking had now finally &lt;a href=&quot;http://qt.gitorious.org/qt/qt/commit/bf9456c5a2d8dfe9a35a2175186630cb426858ad&quot;&gt;been factored out&lt;/a&gt; into a separate class, with a more efficient implementation to avoid the numerous temporary memory allocations of the string splitting method that was used before. Of course I was curious and had a look at the code which implements the string parsing.&lt;/p&gt;
&lt;p&gt;Here is how it looks like:&lt;/p&gt;
&lt;div class=&quot;box-code&quot;&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;// This class can be used to match GL extensions without doing any mallocs. The&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;// class assumes that the GL extension string ends with a space character,&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;// which it should do on all conformant platforms. Create the object and pass&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;// in a pointer to the extension string, then call match() on each extension&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;// that should be matched. The match() function takes the extension name&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;// *without* the terminating space character as input.&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;class&lt;/span&gt; QGLExtensionMatcher&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;&amp;#123;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp; QGLExtensionMatcher&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;const&lt;/span&gt; &lt;span&gt;char&lt;/span&gt; &lt;span&gt;*&lt;/span&gt;str&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span&gt;:&lt;/span&gt; gl_extensions&lt;span&gt;&amp;#40;&lt;/span&gt;str&lt;span&gt;&amp;#41;&lt;/span&gt;, gl_extensions_length&lt;span&gt;&amp;#40;&lt;/span&gt;qstrlen&lt;span&gt;&amp;#40;&lt;/span&gt;str&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp; &lt;span&gt;&amp;#123;&lt;/span&gt;&lt;span&gt;&amp;#125;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp; &lt;span&gt;bool&lt;/span&gt; match&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;const&lt;/span&gt; &lt;span&gt;char&lt;/span&gt; &lt;span&gt;*&lt;/span&gt;str&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;&amp;#123;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span&gt;int&lt;/span&gt; str_length &lt;span&gt;=&lt;/span&gt; qstrlen&lt;span&gt;&amp;#40;&lt;/span&gt;str&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span&gt;const&lt;/span&gt; &lt;span&gt;char&lt;/span&gt; &lt;span&gt;*&lt;/span&gt;extensions &lt;span&gt;=&lt;/span&gt; gl_extensions&lt;span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span&gt;int&lt;/span&gt; extensions_length &lt;span&gt;=&lt;/span&gt; gl_extensions_length&lt;span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span&gt;while&lt;/span&gt; &lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;&amp;#123;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span&gt;// the total length that needs to be matched is the str_length +&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span&gt;// the space character that terminates the extension name&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span&gt;if&lt;/span&gt; &lt;span&gt;&amp;#40;&lt;/span&gt;extensions_length &lt;span&gt;&amp;lt;&lt;/span&gt; str_length &lt;span&gt;+&lt;/span&gt; &lt;span&gt;1&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span&gt;return&lt;/span&gt; &lt;span&gt;false&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span&gt;if&lt;/span&gt; &lt;span&gt;&amp;#40;&lt;/span&gt;qstrncmp&lt;span&gt;&amp;#40;&lt;/span&gt;extensions, str, str_length&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;==&lt;/span&gt; &lt;span&gt;0&lt;/span&gt; &lt;span&gt;&amp;amp;&amp;amp;&lt;/span&gt; extensions&lt;span&gt;&amp;#91;&lt;/span&gt;str_length&lt;span&gt;&amp;#93;&lt;/span&gt; &lt;span&gt;==&lt;/span&gt; &lt;span&gt;' '&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span&gt;return&lt;/span&gt; &lt;span&gt;true&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span&gt;int&lt;/span&gt; split_pos &lt;span&gt;=&lt;/span&gt; &lt;span&gt;0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span&gt;while&lt;/span&gt; &lt;span&gt;&amp;#40;&lt;/span&gt;split_pos &lt;span&gt;&amp;lt;&lt;/span&gt; extensions_length &lt;span&gt;&amp;amp;&amp;amp;&lt;/span&gt; extensions&lt;span&gt;&amp;#91;&lt;/span&gt;split_pos&lt;span&gt;&amp;#93;&lt;/span&gt; &lt;span&gt;!&lt;/span&gt;&lt;span&gt;=&lt;/span&gt; &lt;span&gt;' '&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span&gt;++&lt;/span&gt;split_pos&lt;span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span&gt;++&lt;/span&gt;split_pos&lt;span&gt;;&lt;/span&gt; &lt;span&gt;// added for the terminating space character&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; extensions &lt;span&gt;+&lt;/span&gt;&lt;span&gt;=&lt;/span&gt; split_pos&lt;span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; extensions_length &lt;span&gt;-&lt;/span&gt;&lt;span&gt;=&lt;/span&gt; split_pos&lt;span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span&gt;&amp;#125;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span&gt;return&lt;/span&gt; &lt;span&gt;false&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp; &lt;span&gt;&amp;#125;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;private&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp; &lt;span&gt;const&lt;/span&gt; &lt;span&gt;char&lt;/span&gt; &lt;span&gt;*&lt;/span&gt;gl_extensions&lt;span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp; &lt;span&gt;int&lt;/span&gt; gl_extensions_length&lt;span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;&amp;#125;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;According to the log message the piece of code just shown went through internal code review. For comparison, here is the equivalent piece of code from my original patch, which was not considered good enough to be applied:&lt;/p&gt;
&lt;div class=&quot;box-code&quot;&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;static&lt;/span&gt; &lt;span&gt;bool&lt;/span&gt; parse_extensions_string&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;const&lt;/span&gt; &lt;span&gt;char&lt;/span&gt;&lt;span&gt;*&lt;/span&gt; extensions, &lt;span&gt;const&lt;/span&gt; &lt;span&gt;char&lt;/span&gt;&lt;span&gt;*&lt;/span&gt; name&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;&amp;#123;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&amp;nbsp; &lt;span&gt;const&lt;/span&gt; &lt;span&gt;size_t&lt;/span&gt; name_length &lt;span&gt;=&lt;/span&gt; &lt;span&gt;&amp;#40;&lt;/span&gt;name&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;?&lt;/span&gt; &lt;span&gt;strlen&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;name&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;:&lt;/span&gt; &lt;span&gt;0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&amp;nbsp; Q_ASSERT&lt;span&gt;&amp;#40;&lt;/span&gt;name_length &lt;span&gt;&amp;gt;&lt;/span&gt; &lt;span&gt;0&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&amp;nbsp; &lt;span&gt;if&lt;/span&gt; &lt;span&gt;&amp;#40;&lt;/span&gt;extensions&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;&amp;#123;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp; &lt;span&gt;const&lt;/span&gt; &lt;span&gt;char&lt;/span&gt;&lt;span&gt;*&lt;/span&gt; pos &lt;span&gt;=&lt;/span&gt; extensions&lt;span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp; &lt;span&gt;while&lt;/span&gt; &lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;const&lt;/span&gt; &lt;span&gt;char&lt;/span&gt; &lt;span&gt;*&lt;/span&gt;&lt;span&gt;const&lt;/span&gt; space &lt;span&gt;=&lt;/span&gt; &lt;span&gt;strchr&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;pos, &lt;span&gt;' '&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;&amp;#123;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span&gt;const&lt;/span&gt; &lt;span&gt;size_t&lt;/span&gt; length &lt;span&gt;=&lt;/span&gt; space &lt;span&gt;-&lt;/span&gt; pos&lt;span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span&gt;if&lt;/span&gt; &lt;span&gt;&amp;#40;&lt;/span&gt;length &lt;span&gt;==&lt;/span&gt; name_length &lt;span&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span&gt;memcmp&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;pos, name, length&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;==&lt;/span&gt; &lt;span&gt;0&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span&gt;return&lt;/span&gt; &lt;span&gt;true&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; pos &lt;span&gt;=&lt;/span&gt; space &lt;span&gt;+&lt;/span&gt; &lt;span&gt;1&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp; &lt;span&gt;&amp;#125;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp; &lt;span&gt;return&lt;/span&gt; &lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;strcmp&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;pos, name&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;==&lt;/span&gt; &lt;span&gt;0&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&amp;nbsp; &lt;span&gt;&amp;#125;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&amp;nbsp; &lt;span&gt;return&lt;/span&gt; &lt;span&gt;false&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;&lt;code&gt;&lt;span&gt;&amp;#125;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;So, instead of just taking the code handed to them on a silver platter, the Qt developers decided to roll their own version. Which I wouldn&amp;#8217;t even consider a problem if it weren&amp;#8217;t for the fact that the code that went in is longer, less readable, and generally ugly. It&amp;#8217;s also broken, because there is not a single word in the OpenGL specification about &lt;code&gt;glGetString()&lt;/code&gt; always returning a list terminated by a space character, contrary to what the code comment claims about &amp;#8220;all conformant platforms&amp;#8221;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://danielkitta.org/blog/wp-content/uploads/2010/02/wtf-is-this-shit.jpg&quot; alt=&quot;What the fuck is this shit?&quot; title=&quot;What the fuck is this shit?&quot; width=&quot;306&quot; height=&quot;227&quot; /&gt;&lt;/p&gt;</description>
	<pubDate>Thu, 25 Feb 2010 17:21:27 +0000</pubDate>
</item>
<item>
	<title>Michael Hasselmann: Logging facility for Miniature</title>
	<guid>http://taschenorakel.de/michael/2010/02/25/logging-facility-miniature/</guid>
	<link>http://taschenorakel.de/michael/2010/02/25/logging-facility-miniature/</link>
	<description>&lt;div class=&quot;image&quot;&gt;&lt;a href=&quot;http://taschenorakel.de/pictures/screenshots/2010/02/25/miniature_logging.png&quot;&gt;&lt;img src=&quot;http://taschenorakel.de/media/preview/128/pictures/2010/02/25/miniature_logging.png&quot; alt=&quot;&quot; title=&quot;&quot; border=&quot;1&quot; hspace=&quot;10&quot; vspace=&quot;5&quot; /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;On Maemo 5, log output from your app isn't always accessible to the user. This has created problems for Miniature bug reports (&lt;a href=&quot;https://bugs.maemo.org/show_bug.cgi?id=8142&quot;&gt;see bug #8124&lt;/a&gt;). To solve this, I created a &amp;quot;Game Log&amp;quot; screen which allows to filter the messages (by a given log level, I might want to allow combinations, too). It also has a nice fat &amp;quot;Copy all&amp;quot; button, so that the log output can be quickly attached to a bug report.
&lt;/p&gt;
&lt;p&gt;Now I &amp;quot;only&amp;quot; need to add useful log information =D
&lt;/p&gt;
&lt;p&gt;Thanks to &lt;a href=&quot;http://openismus.com&quot;&gt;Openismus&lt;/a&gt; for letting me work on this.
&lt;/p&gt;</description>
	<pubDate>Thu, 25 Feb 2010 16:46:20 +0000</pubDate>
</item>
<item>
	<title>André Klapper: GNOME 3.0 schedule proposal published</title>
	<guid>http://blogs.gnome.org/aklapper/?p=482</guid>
	<link>http://blogs.gnome.org/aklapper/2010/02/23/gnome-3-0-schedule-proposal-published/</link>
	<description>&lt;p&gt;&lt;center&gt;&lt;img src=&quot;http://live.gnome.org/BrandGuidelines?action=AttachFile&amp;#038;do=get&amp;#038;target=GnomeBrandBook-FullLogo.png&quot; /&gt;&lt;/center&gt;&lt;/p&gt;
&lt;p&gt;Today the &lt;a href=&quot;http://live.gnome.org/TwoPointThirtyone#Schedule&quot;&gt;GNOME release schedule proposal for 2.31/3.0&lt;/a&gt; was published. Please keep discussion streamlined on &lt;a href=&quot;http://mail.gnome.org/archives/desktop-devel-list/2010-February/msg00109.html&quot;&gt;desktop-devel mailing list&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It also lists high risk areas and potential showstoppers (please note the word &amp;#8220;potential&amp;#8221;) as I want to communicate them clearly to users, distributions and the community. Currently I personally don&amp;#8217;t expect everything to work out as planned, as manpower is missing in crucial areas. Distributions and the community can help minimizing such potential regressions by providing more developer manpower, or at least help in testing. Please contribute if you can.&lt;/p&gt;
&lt;p&gt;Another issue are of course those modules that are defacto unmaintained. Peer reviews could be arranged in such cases.&lt;/p&gt;</description>
	<pubDate>Tue, 23 Feb 2010 21:19:46 +0000</pubDate>
</item>
<item>
	<title>Peter Penz: Profiling</title>
	<guid>tag:blogger.com,1999:blog-591179528445148028.post-1602170401850188071</guid>
	<link>http://ppenz.blogspot.com/2010/02/profiling.html</link>
	<description>Although I like &lt;a href=&quot;http://www.cbs.com/primetime/criminal_minds/&quot;&gt;Criminal Minds&lt;/a&gt;, this blog entry is less thrilling: it's about profiling applications like Dolphin.&lt;br /&gt;&lt;br /&gt;When I faced a performance issue in Dolphin, I usually used &lt;a href=&quot;http://valgrind.org/&quot;&gt;valgrind&lt;/a&gt; in combination with &lt;a href=&quot;http://valgrind.org/info/tools.html#callgrind&quot;&gt;callgrind&lt;/a&gt; to find the bottleneck (valgrind --tool=callgrind dolphin -nofork). The output can be visualized by &lt;a href=&quot;http://kcachegrind.sourceforge.net/html/Home.html&quot;&gt;KCacheGrind&lt;/a&gt; in a nice way:&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://2.bp.blogspot.com/_zDPqioLuxns/S4LIh7Oii5I/AAAAAAAAAJY/duSYQLTYzE8/s1600-h/kcachegrind.png&quot;&gt;&lt;img src=&quot;http://2.bp.blogspot.com/_zDPqioLuxns/S4LIh7Oii5I/AAAAAAAAAJY/duSYQLTYzE8/s320/kcachegrind.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5441131784976894866&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;One big benefit of Valgrind is that it gives 100 % coverage of user-space code. But as usual there are rarely benefits without drawbacks: As valgrind is a kind of virtual machine, that uses just-in-time compiling, the application runs around 5 times slower. This can get a problem if timers are involved in the application. Also performance issues in combination with threads are tricky to identify, because valgrind does not give a non-obtrusive performance overview of the overall system.&lt;br /&gt;&lt;br /&gt;So I started to get familiar with &lt;a href=&quot;http://oprofile.sourceforge.net/news/&quot;&gt;OProfile&lt;/a&gt; during the last week. OProfile is a non-obtrusive system-wide profiler, which means that the application runs (nearly) at the same speed as without profiler. OProfile gives an overview about the workload of all processes in the system. This is very useful for Dolphin, as the overall performance of Dolphin depends also on e. g. &lt;a href=&quot;http://nepomuk.semanticdesktop.org/xwiki/bin/view/Main1/&quot;&gt;Nepomuk&lt;/a&gt; and asynchronous operations to e. g. get file previews. It is possible to convert the OProfile output to a readable KCachegrind file by 'opreport -gdf | op2calltree'.&lt;br /&gt;&lt;br /&gt;Dependent on the usecase, both tools are really helpful. The next thing on my TODO-list is to get more familiar to locate I/O bound bottlenecks: When reading the number of sub directories for 20000 directories, the bottleneck is definitely not on the CPU side (in this case neither Valgrind nor OProfile can detect the bottleneck). All in all I hope that I find the time during the KDE SC 4.5 cycle to improve the Dolphin performance in some areas with the help of these tools.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/591179528445148028-1602170401850188071?l=ppenz.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Mon, 22 Feb 2010 19:19:20 +0000</pubDate>
</item>
<item>
	<title>Murray Cumming: Glom 1.13/14 using boost::python</title>
	<guid>http://www.murrayc.com/blog/?p=1101</guid>
	<link>http://www.murrayc.com/blog/permalink/2010/02/22/glom-1-1314-using-boostpython/</link>
	<description>&lt;h3&gt;Finally Figured Out boost::python&lt;/h3&gt;
&lt;p&gt;After lots of experimentation and two previous failed attempts, Glom now uses boost::python, with very little use of the nasty Python C API remaining. This should make it easier to add Python API to easily access and set field/record/table/database details from the Python that&amp;#8217;s used in calculated fields or button scripts.&lt;/p&gt;
&lt;h3&gt;Useful Things I Now Know about boost::python&lt;/h3&gt;
&lt;p&gt;boost::python is no fun to get started with, but it&amp;#8217;s now far easier for me to use than the Python C API.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve &lt;a href=&quot;http://www.murrayc.com/blog/permalink/2009/03/10/boostpython-in-glom/&quot;&gt;mentioned the awful boost::python documentation&lt;/a&gt; before. Here are some essential things that I figured out, which are not really documented. This is thanks to helpful people on the &lt;a href=&quot;http://mail.python.org/mailman/listinfo/cplusplus-sig&quot;&gt;boost::python mailing list&lt;/a&gt;. &lt;strong&gt;Corrections welcome&lt;/strong&gt; &amp;#8211; there&amp;#8217;s so much here that some of it must be wrong.&lt;/p&gt;
&lt;p&gt;None of this is very obvious or pleasant. If anyone had their first real C++ experience with boost::python then I&amp;#8217;d forgive them for being put off C++ for good. I love C++ so that would be unfortunate.&lt;/p&gt;
&lt;h4&gt;&amp;#8220;Converting&amp;#8221; between C and C++ object types&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;C++ to C: &lt;/strong&gt;To get the underlying &lt;a href=&quot;http://docs.python.org/c-api/object.html&quot;&gt;PyObjec&lt;/a&gt;t* from a &lt;a title=&quot;I'd much rather use a URL without a specific version number.&quot; href=&quot;http://www.boost.org/doc/libs/1_41_0/libs/python/doc/v2/object.html&quot;&gt;boost::python::object&lt;/a&gt; (awful docs), when you need to use a C function:&lt;/p&gt;
&lt;pre&gt;PyObject* cobject = theobject.ptr();&lt;/pre&gt;
&lt;p&gt;To test for a boost::python::object with a null underlying PyObject*, do:&lt;/p&gt;
&lt;pre&gt;if(cppobject.ptr())&lt;/pre&gt;
&lt;p&gt;Do not do if(cppobject). That tests if the python object is actually a boolean that is PyTrue.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;C to C++:&lt;/strong&gt; To get a boost::python::object for a PyObject*, when you received one from a C function, but you then need to use the result in a C++ function, or just want the improved memory management:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; If the C function gave you a reference that you should later unreference:
&lt;pre&gt;boost::python::object cppobject( (boost::python::handle&amp;lt;&amp;gt;(cobject)) );&lt;/pre&gt;
&lt;p&gt;(You need those extra brackets, for &amp;#8220;interesting&amp;#8221; compiler reasons.)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;Or, if you need to take a reference.
&lt;pre&gt;boost::python::object cppobject(boost::python::borrowed(cobject));&lt;/pre&gt;
&lt;p&gt;(Yes. that&amp;#8217;s horrible too. I see no reason to expose &lt;a title=&quot;The documentation for this is awful too.&quot; href=&quot;http://www.boost.org/doc/libs/1_41_0/libs/python/doc/v2/handle.html&quot;&gt;boost::python::handle&lt;/a&gt; in the API.)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;However, you&amp;#8217;ll need to use allow_null too to avoid exceptions if the PyObject* might be null. Well, any pointer could be null, so say hello to:
&lt;pre&gt;boost::python::object cppobject(  (boost::python::handle&amp;lt;&amp;gt;(boost::python::allow_null(cobject))) );&lt;/pre&gt;
&lt;p&gt;or&lt;/p&gt;
&lt;pre&gt;boost::python::object(boost::python::borrowed(boost::python::allow_null(cobject)));&lt;/pre&gt;
&lt;p&gt;(Shoot me now. No, reducing it to b::p::whatever is not a significant improvement.)&lt;br /&gt;
I understand that a null PyObject* may sometimes be an exceptional unexpected event, but forcing the use of a try/catch by default just for a null pointer check is annoying. Explicit functions such as wrap() and wrap_not_null() would be so much easier.&lt;br /&gt;
See the &lt;a href=&quot;http://library.gnome.org/devel/gtkmm-tutorial/unstable/sec-basics-gobj-and-wrap.html.en&quot;&gt;equivalent for gtkmm&lt;/a&gt; (plus calling reference() when necessary with non-widgets).&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Using boost::python with your own wrapped C++ classes.&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;To get a boost::python::object for an instance of your C++ class that you&amp;#8217;ve wrapped for Python with boost::python::class, just do:
&lt;pre&gt;boost::python::object obj(new YourWrappedClass);&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;To get a C++ instance of your wrapped class from a boost::python::object, use boost::python::extract (as also mentioned generically below):
&lt;pre&gt;boost::python::extract&amp;lt;MyClass*&amp;gt; extractor(cppobject);
if(extractor.check()) myobject = extractor;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Others&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;To get a C++ value out of a boost::python::object do, for instance:
&lt;pre&gt;boost::python::extract&amp;lt;std::string&amp;gt; extractor(cppobject);
if(extractor.check()) mystring = extractor;&lt;/pre&gt;
&lt;p&gt;You can do&lt;/p&gt;
&lt;pre&gt;mystring = boost::python::extract&amp;lt;std::string&amp;gt;(cppobject)&lt;/pre&gt;
&lt;p&gt;without the check() but that will throw an exception if the underlying type is not really what you expect.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;boost::python likes to throw exceptions. I think it only ever throws boost::python::error_already_set, though the (Python) error is often not already set when it&amp;#8217;s thrown. When the error is set, you&amp;#8217;ll need to use Python C API to discover what it is.&lt;/li&gt;
&lt;li&gt;To provide [] syntax in python for your wrapped class, you&amp;#8217;ll need to know how the C API works. Add this voodoo to your boot::python::class declaration:
&lt;pre&gt;.def(&quot;__getitem__&quot;, &amp;amp;MyClass::getitem)
.def(&quot;__len__&quot;, &amp;amp;MyClass::len)&lt;/pre&gt;
&lt;p&gt;Those methods can then have signatures like this:&lt;/p&gt;
&lt;pre&gt;boost::python::object getitem(const boost::python::object&amp;amp; cppitem);
long len() const;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;To use Python date or time values, you will need to use C Python functions. For instance:
&lt;pre&gt;PyObject* cobject = cppobject.ptr();
int day = PyDateTime_GET_DAY(cobject);
int month = PyDateTime_GET_MONTH(cobject);
int year = PyDateTime_GET_YEAR(cobject) );&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Boost has no .pc files&lt;/h3&gt;
&lt;p&gt;boost is a complete pain as a dependency. I understand that they don&amp;#8217;t want to freeze API or ABI, because it&amp;#8217;s a place for gradually improving API, though I think they should just have regular stable/devel phases with parallel installs. But I can&amp;#8217;t forgive how difficult it is to get the header and linker options to use boost libraries. There are some m4 macros out there but they are hacky and fragile, and don&amp;#8217;t actually work for boost::python. It shouldn&amp;#8217;t be hard to provide pkg-config .pc files, so you wouldn&amp;#8217;t need to do any compilation or linker checks in configure at all. I hacked some m4 code together based on some existing stuff, but I couldn&amp;#8217;t recommend it.&lt;/p&gt;
&lt;p&gt;So distro packagers won&amp;#8217;t enjoy this new dependency. Sorry.&lt;/p&gt;</description>
	<pubDate>Mon, 22 Feb 2010 13:20:25 +0000</pubDate>
</item>
<item>
	<title>André Klapper: GNOME 3.0 module proposals welcome now!</title>
	<guid>http://blogs.gnome.org/aklapper/?p=478</guid>
	<link>http://blogs.gnome.org/aklapper/2010/02/17/gnome-3-0-module-proposals-welcome-now/</link>
	<description>&lt;p&gt;&lt;img src=&quot;http://blogs.gnome.org/aklapper/files/2010/02/three.png&quot; alt=&quot;Three.&quot; title=&quot;Three&quot; width=&quot;236&quot; height=&quot;150&quot; class=&quot;aligncenter size-full wp-image-479&quot; /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;http://mail.gnome.org/archives/devel-announce-list/2010-February/msg00003.html&quot;&gt;Module proposal period for the next GNOME release has started!&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you are a maintainer of a module that you want to propose for official inclusion in GNOME: Do it now! See the &lt;a href=&quot;http://live.gnome.org/ReleasePlanning/ModuleProposing&quot;&gt;wiki&lt;/a&gt; for the guidelines.&lt;/p&gt;</description>
	<pubDate>Wed, 17 Feb 2010 21:30:46 +0000</pubDate>
</item>
<item>
	<title>Murray Cumming: Openismus Website Now More Shiny</title>
	<guid>http://www.murrayc.com/blog/?p=1108</guid>
	<link>http://www.murrayc.com/blog/permalink/2010/02/17/openismus-website-now-more-shiny/</link>
	<description>&lt;p&gt;Daniel Borgmann has prettied up our &lt;a href=&quot;http://www.openismus.com&quot;&gt;Openismus&lt;/a&gt; website a little. The small touches make it easier on the eye. It&amp;#8217;s no longer so adaptable to every screen size or font size, but it&amp;#8217;s still relatively simple. It wasn&amp;#8217;t us who broke the web, though we tried not to break it more.&lt;/p&gt;
&lt;p&gt;Daniel would have liked to do much more impressive things, but I held him back because I like gradual iterative changes and very maintainable files. He did this without changing the content at all. We&amp;#8217;ll see what happens next.&lt;/p&gt;</description>
	<pubDate>Wed, 17 Feb 2010 17:49:47 +0000</pubDate>
</item>
<item>
	<title>Jan Arne Petersen: Application Indicators</title>
	<guid>http://blog.jpetersen.org/?p=25</guid>
	<link>http://blog.jpetersen.org/2010/02/17/application-indicators/</link>
	<description>&lt;p&gt;At &lt;a href=&quot;http://www.openismus.com&quot;&gt;Openismus&lt;/a&gt; I am currently supporting &lt;a href=&quot;http://www.canonical.com/&quot;&gt;Canonical&lt;/a&gt; to implement &lt;a href=&quot;https://wiki.ubuntu.com/DesktopExperienceTeam/ApplicationIndicators&quot;&gt;Application Indicators&lt;/a&gt; for &lt;a href=&quot;http://www.ubuntu.com/&quot;&gt;Ubuntu Lucid&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Application indicators are simple menus so it is easier and more consistent to interact with them than with the current notification area icons, where each icon behaves differently. Some are showing different popup menus on left and right click, others are showing or hiding some dialog/window on left click.&lt;/p&gt;
&lt;p&gt;I started to add support for Application Indicators to gnome-power-manager, IBus and gnome-settings-daemon last week. Patches for upstream are also available (&lt;a href=&quot;http://code.google.com/p/ibus/issues/detail?id=780&quot;&gt;1&lt;/a&gt;, &lt;a href=&quot;https://bugzilla.gnome.org/show_bug.cgi?id=609654&quot;&gt;2&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;alignnone&quot; src=&quot;http://jpetersen.org/app-indicators.png&quot; alt=&quot;Application Indicators in upcoming Ubuntu Lucid&quot; width=&quot;509&quot; height=&quot;325&quot; /&gt;&lt;/p&gt;</description>
	<pubDate>Wed, 17 Feb 2010 10:13:55 +0000</pubDate>
</item>
<item>
	<title>Daniel Borgmann: hackergotchi</title>
	<guid>http://dborg.wordpress.com/?p=155</guid>
	<link>http://dborg.wordpress.com/2010/02/16/hackergotchi/</link>
	<description>&lt;p&gt;Also long overdue is an updated hackergotchi:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://dborg.files.wordpress.com/2010/02/hackergotchi.png?w=84&amp;#038;h=118&quot; alt=&quot;&quot; title=&quot;hackergotchi&quot; width=&quot;84&quot; height=&quot;118&quot; class=&quot;alignleft size-full wp-image-156&quot; /&gt;&lt;/p&gt;
&lt;p&gt;I will also be looking for new blog software. Can somebody recommend one that is simple, modern, and standards-compliant?&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/dborg.wordpress.com/155/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/dborg.wordpress.com/155/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/dborg.wordpress.com/155/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/dborg.wordpress.com/155/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/dborg.wordpress.com/155/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/dborg.wordpress.com/155/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/dborg.wordpress.com/155/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/dborg.wordpress.com/155/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/dborg.wordpress.com/155/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/dborg.wordpress.com/155/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=dborg.wordpress.com&amp;amp;blog=14048&amp;amp;post=155&amp;amp;subd=dborg&amp;amp;ref=&amp;amp;feed=1&quot; /&gt;</description>
	<pubDate>Tue, 16 Feb 2010 17:54:15 +0000</pubDate>
</item>
<item>
	<title>Daniel Borgmann: Screenshot of Melody Theme</title>
	<guid>http://dborg.wordpress.com/?p=145</guid>
	<link>http://dborg.wordpress.com/2010/02/16/updated-website/</link>
	<description>&lt;p&gt;My official work on Maemo has ended now, so I finally had time to finish the long overdue refresh of &lt;a title=&quot;Openismus Homepage&quot; href=&quot;http://openismus.com&quot;&gt;Openismus.com&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://openismus.com&quot;&gt;&lt;img class=&quot;alignleft&quot; title=&quot;openismus-screenshot&quot; src=&quot;http://dborg.files.wordpress.com/2010/02/openismus-screenshot1.png?w=308&amp;#038;h=188&quot; alt=&quot;Openismus.com&quot; width=&quot;308&quot; height=&quot;188&quot; /&gt;&lt;/a&gt; In the end we didn&amp;#8217;t stray much from the original, and it was difficult to please everybody, but at least it looks a lot more polished now. The site is still simple and adjusts reasonably well to different font sizes and resolutions. The plan is to update the design frequently.&lt;/p&gt;
&lt;h3&gt;N900 Themes&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;http://store.ovi.com/content/22835&quot;&gt;&lt;img src=&quot;http://dborg.files.wordpress.com/2010/02/melody-2.png?w=300&amp;#038;h=180&quot; alt=&quot;Melody&quot; title=&quot;Screenshot of Melody Theme&quot; width=&quot;300&quot; height=&quot;180&quot; class=&quot;alignleft size-medium wp-image-149&quot; /&gt;&lt;/a&gt;Meanwhile, Harmony, Melody and Word City were released to the Ovi Store. All three themes have been developed with a lot of effort during the time I worked with Nokia and are based on the development theme. Harmony and Melody include a background by myself, Word City includes a background by Steffen Halme. I am very happy with how these turned out, unfortunately a &lt;a href=&quot;https://bugs.maemo.org/show_bug.cgi?id=7852&quot;&gt;bug&lt;/a&gt; in the firmware causes the themes to reset whenever the device is restarted. This will be fixed in the next firmware, for which themes will also have to be updated. &lt;/p&gt;
&lt;div&gt;&lt;/div&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/dborg.wordpress.com/145/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/dborg.wordpress.com/145/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/dborg.wordpress.com/145/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/dborg.wordpress.com/145/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/dborg.wordpress.com/145/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/dborg.wordpress.com/145/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/dborg.wordpress.com/145/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/dborg.wordpress.com/145/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/dborg.wordpress.com/145/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/dborg.wordpress.com/145/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=dborg.wordpress.com&amp;amp;blog=14048&amp;amp;post=145&amp;amp;subd=dborg&amp;amp;ref=&amp;amp;feed=1&quot; /&gt;</description>
	<pubDate>Tue, 16 Feb 2010 01:28:04 +0000</pubDate>
</item>
<item>
	<title>Peter Penz: Visiting Openismus in Berlin</title>
	<guid>tag:blogger.com,1999:blog-591179528445148028.post-1882878097322494556</guid>
	<link>http://ppenz.blogspot.com/2010/02/visiting-openismus-in-berlin.html</link>
	<description>&lt;a href=&quot;http://4.bp.blogspot.com/_zDPqioLuxns/S3lYpEvEspI/AAAAAAAAAIo/sLzELQfBsAM/s1600-h/B_F_2_basic.jpg&quot;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/_zDPqioLuxns/S3lYpEvEspI/AAAAAAAAAIo/sLzELQfBsAM/s200/B_F_2_basic.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5438475487695647378&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;On February the 1st I started my new job at &lt;a href=&quot;http://www.openismus.com/&quot;&gt;Openismus&lt;/a&gt;. Most of the time I can work at home in Austria, but last Wednesday I got the chance to meet the Openismus team at their office in Berlin. Beside my first visit of Openismus, it was also my first visit of Berlin. I was very impressed by both of them: the team and Berlin.&lt;br /&gt;&lt;br /&gt;I got the chance to do some trials with Qt on Maemo and to get familiar with what is working well and which parts still need a lot of investigations. All developers at Openismus are Gnome people, being the only one using KDE is not always easy ;-) But maybe it helped that Dolphin does not look so much different in comparison to Nautilus - I even got a KDE-sticker from an Openismus colleague.&lt;br /&gt;&lt;br /&gt;I'm learning a lot of new stuff currently and will have less time during the next weeks for Dolphin. However this will change after mastering the usual time that is needed to get really productive. In the end I hope that I can apply the knowledge I gathered through KDE development with Dolphin for Openismus and also that Dolphin will benefit from the new things I learn at Openismus.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/591179528445148028-1882878097322494556?l=ppenz.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Mon, 15 Feb 2010 15:24:42 +0000</pubDate>
</item>
<item>
	<title>André Klapper: A blast from the (German) past</title>
	<guid>http://blogs.gnome.org/aklapper/?p=471</guid>
	<link>http://blogs.gnome.org/aklapper/2010/02/15/a-blast-from-the-german-past/</link>
	<description>&lt;p&gt;Spend a day at my parents&amp;#8217; place this weekend and cleaned up a bit. Found this old application for Western German citizens to enter East Germany. Interesting to see all the stuff that was asked for. Also wondering why it&amp;#8217;s also in English and French, but not Russian&amp;#8230;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://blogs.gnome.org/aklapper/files/2010/02/DDR1.jpg&quot;&gt;&lt;img src=&quot;http://blogs.gnome.org/aklapper/files/2010/02/DDR1-300x196.jpg&quot; alt=&quot;Application for entering the GDR&quot; title=&quot;DDR1&quot; width=&quot;300&quot; height=&quot;196&quot; class=&quot;aligncenter size-medium wp-image-472&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://blogs.gnome.org/aklapper/files/2010/02/DDR2.jpg&quot;&gt;&lt;img src=&quot;http://blogs.gnome.org/aklapper/files/2010/02/DDR2-300x196.jpg&quot; alt=&quot;Application for entering the GDR&quot; title=&quot;DDR2&quot; width=&quot;300&quot; height=&quot;196&quot; class=&quot;aligncenter size-medium wp-image-473&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Mon, 15 Feb 2010 11:59:24 +0000</pubDate>
</item>
<item>
	<title>David King: FOSDEM 2010</title>
	<guid>tag:blogger.com,1999:blog-5721789612701680617.post-1711320923691069458</guid>
	<link>http://amigadave.blogspot.com/2010/02/fosdem-2010.html</link>
	<description>It was my first time at &lt;a href=&quot;http://www.fosdem.org/2010/&quot;&gt;FOSDEM&lt;/a&gt; this year, and it was pretty fun. I got to chat to people about &lt;a href=&quot;http://maemo.org/&quot;&gt;Maemo &lt;/a&gt;(although there were not many Maemo-specific talks), and managed to have a good meeting with Dave Neary about my work on maemo.org developer documentation. It was good to see Zeeshan again, and staying in the same hotel as Lennart meant that I got to &lt;strike&gt;steal his guidebook&lt;/strike&gt; pick his brain about good places to eat.&lt;br /&gt;&lt;br /&gt;The &lt;a href=&quot;http://projects.gnome.org/gnome-color-manager/&quot;&gt;GNOME Color Manager&lt;/a&gt; talk was fun, although nothing particularly new. Hopefully some cross-desktop participation can help that. &lt;a href=&quot;http://www.fosdem.org/2010/schedule/events/linuxkernelpatch&quot;&gt;Greg Kroah-Hartman's talk&lt;/a&gt; on writing a kernel patch was interesting, and might finally encourage me to fix my sound card driver (incorrectly-mapped output controls). I went to my first &lt;a href=&quot;http://www.fosdem.org/2010/keysigning&quot;&gt;keysigning party&lt;/a&gt;, which was weird but fun. &lt;a href=&quot;http://www.fosdem.org/2010/schedule/events/dist_bootchart2&quot;&gt;Michael Meeks' bootchart2 talk&lt;/a&gt; was excellent, and funny of course. Probably the best thing of the conference was the GNOME tshirts, with a GNOME coat of arm and monkeys. Hopefully I get the chance to go to FOSDEM again next year.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5721789612701680617-1711320923691069458?l=amigadave.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 11 Feb 2010 18:42:09 +0000</pubDate>
</item>
<item>
	<title>Michael Hasselmann: Testdriving the UI Extensions for Mobile on Maemo 5</title>
	<guid>http://taschenorakel.de/michael/2010/02/11/testdriving-ui-extensions-mobile-maemo-5/</guid>
	<link>http://taschenorakel.de/michael/2010/02/11/testdriving-ui-extensions-mobile-maemo-5/</link>
	<description>&lt;div class=&quot;image&quot;&gt;&lt;a href=&quot;http://taschenorakel.de/pictures/screenshots/2010/02/11/orbit.png&quot;&gt;&lt;img src=&quot;http://taschenorakel.de/media/preview/128/pictures/2010/02/11/orbit.png&quot; alt=&quot;&quot; title=&quot;&quot; border=&quot;1&quot; hspace=&quot;10&quot; vspace=&quot;5&quot; /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;Reading about &lt;a href=&quot;http://www.johanpaul.com/blog/2010/02/nokia-ui-extensions-for-mobile-compiled-in-ubuntu-and-maemo-5-sdk/&quot;&gt;Nokia's UI Extensions for Mobile&lt;/a&gt; (&lt;a href=&quot;http://qt.gitorious.org/uiemo&quot;&gt;sources available&lt;/a&gt;) I wanted to quickly try it myself.
   So I looked at the provided examples, and &lt;a href=&quot;http://taschenorakel.de/media/beerchooser/orbit.ogv&quot;&gt;this video is the result&lt;/a&gt; of what I came up with (well, of course it is &lt;a href=&quot;http://www.fosdem.org&quot;&gt;FOSDEM&lt;/a&gt;-induced). The provided API allowed me to easily apply my previous Qt knowledge, which is a nice touch. Sources for the example in the video app can be found &lt;a href=&quot;http://taschenorakel.de/media/beerchooser/main.h&quot;&gt;here&lt;/a&gt; and &lt;a href=&quot;http://taschenorakel.de/media/beerchooser/main.cc&quot;&gt;here&lt;/a&gt;. Happy hacking!
&lt;/p&gt;
&lt;p&gt; &lt;strong&gt;Update:&lt;/strong&gt; The UI Extensions for Mobile will &lt;em&gt;not&lt;/em&gt; compile on 64bit architectures.
&lt;/p&gt;</description>
	<pubDate>Thu, 11 Feb 2010 14:00:00 +0000</pubDate>
</item>
<item>
	<title>Murray Cumming: In Helsinki at the weekend, Monday and Tuesday</title>
	<guid>http://www.murrayc.com/blog/?p=1095</guid>
	<link>http://www.murrayc.com/blog/permalink/2010/02/10/in-helsinki-at-the-weekend-monday-and-tuesday/</link>
	<description>&lt;p&gt;Liam says &amp;#8220;broombroom soon Stinky Mama Papa mit&amp;#8221;.&lt;/p&gt;
&lt;p&gt;That means that we will be flying in an airplane on Friday to Helsinki. I&amp;#8217;ll be around for work stuff on Monday and Tuesday too. Most afternoons are planned out already, and evenings are generally difficult with a child, but I hope to see random Nokia/Maemo people, maybe at lunch. I shall be pinging you.&lt;/p&gt;
&lt;p&gt;We are looking forward to seeing old friends who we don&amp;#8217;t get a chance to see often enough.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/kitty-kat/&quot;&gt;Kat&lt;/a&gt;, &lt;a href=&quot;http://amigadave.blogspot.com/&quot;&gt;David&lt;/a&gt;, &lt;a href=&quot;http://taschenorakel.de/mathias/&quot;&gt;Mathias&lt;/a&gt;, and &lt;a href=&quot;http://danielkitta.org/blog/&quot;&gt;Daniel&lt;/a&gt; will be around too.&lt;/p&gt;</description>
	<pubDate>Wed, 10 Feb 2010 12:03:47 +0000</pubDate>
</item>
<item>
	<title>David King: Going to FOSDEM</title>
	<guid>tag:blogger.com,1999:blog-5721789612701680617.post-5008232313509998718</guid>
	<link>http://amigadave.blogspot.com/2010/02/going-to-fosdem.html</link>
	<description>&lt;div&gt;&lt;a href=&quot;http://www.fosdem.org/&quot;&gt;&lt;img alt=&quot;I'm going to FOSDEM,the Free and Open Source Software Developers' European Meeting&quot; src=&quot;http://www.fosdem.org/promo/going-to&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;I will be attending &lt;a href=&quot;http://www.fosdem.org/&quot;&gt;FOSDEM&lt;/a&gt; this weekend as part of my work on &lt;a href=&quot;http://maemo.org/&quot;&gt;maemo.org&lt;/a&gt; developer documentation. Come and talk to me about Maemo, developer documentation, &lt;a href=&quot;http://wiki.maemo.org/&quot;&gt;wiki.maemo.org&lt;/a&gt; or even &lt;a href=&quot;https://garage.maemo.org/projects/maemomm/&quot;&gt;Maemomm&lt;/a&gt;. I will also be going to the keysigning event, so come along with some photo ID to get yourself into the web of trust.&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5721789612701680617-5008232313509998718?l=amigadave.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 02 Feb 2010 16:57:30 +0000</pubDate>
</item>
<item>
	<title>Peter Penz: Internal Cleanups</title>
	<guid>tag:blogger.com,1999:blog-591179528445148028.post-3993730017429037125</guid>
	<link>http://ppenz.blogspot.com/2010/01/internal-cleanups.html</link>
	<description>&lt;span&gt;Warning: This might be a quite boring blog entry for non-developers - no fancy screenshots and no new features... ;-)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Beside taking care to keep Dolphin simple and efficient for users, it is also very important for me to do the same for the code: It should be simple and easy to maintain for developers.&lt;br /&gt;&lt;br /&gt;Sometimes this works quite well, but it also happens that parts of the code need to be refactored. It is quite common in commercial companies that developers don't get the chance to refactor the code: The user does not recognize it in the first sight and there is definitely a risk of having regressions.&lt;br /&gt;&lt;br /&gt;I'm convinced that in the long-term keeping the code base clean pays off and results in less bugs and easier maintenance. Although some features like &lt;a href=&quot;http://ppenz.blogspot.com/2009/11/searching.html&quot;&gt;improved searching&lt;/a&gt; or &lt;a href=&quot;http://ppenz.blogspot.com/2009/12/version-control-support.html&quot;&gt;version control support&lt;/a&gt; have been added for Dolphin in KDE SC 4.4, I also did some internal cleanups.&lt;br /&gt;&lt;br /&gt;For KDE SC 4.5 I want to completely concentrate on fine-tuning the code base of Dolphin, so that some long standing bugs can be fixed in a clean manner:&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Information Panel&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://4.bp.blogspot.com/_zDPqioLuxns/S2VtkynJ-TI/AAAAAAAAAII/GdQW3m-LydI/s1600-h/information_panel.png&quot;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/_zDPqioLuxns/S2VtkynJ-TI/AAAAAAAAAII/GdQW3m-LydI/s400/information_panel.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5432869004321093938&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;I totally underestimated the complexity of the Information Panel before KDE SC 4.0 had been released and was never happy with the code-base. I tried to fix things from release to release (which can also be seen visually when looking at the screenshots from the &lt;a href=&quot;http://dolphin.kde.org/news.html&quot;&gt;Dolphin-News&lt;/a&gt;). Now with KDE SC 4.4 the code-base is a lot better, although there is still some work until it can be moved to kdelibs to get shared with other applications (I blogged about it already in &lt;a href=&quot;http://ppenz.blogspot.com/2009/11/information-panel-and-tooltips.html&quot;&gt;Information Panel and Tooltips&lt;/a&gt;). One issue that needs definitely to be solved for KDE SC 4.5 is a non-blocking fallback solution for showing meta information even when Nepomuk and Strigi indexing are turned off &lt;a href=&quot;https://bugs.kde.org/show_bug.cgi?id=193592&quot;&gt;(bug 193592&lt;/a&gt;). Also fixing the missing meta information in the properties dialog (&lt;a href=&quot;https://bugs.kde.org/show_bug.cgi?id=190588&quot;&gt;bug 190588&lt;/a&gt;) is a must.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Column View&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://4.bp.blogspot.com/_zDPqioLuxns/S2Vt1cvXV4I/AAAAAAAAAIQ/JBnQ9_nuSf4/s1600-h/columns.png&quot;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/_zDPqioLuxns/S2Vt1cvXV4I/AAAAAAAAAIQ/JBnQ9_nuSf4/s400/columns.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5432869290507720578&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;The column view has been added shortly before the feature freeze for KDE SC 4.0. I fell into the trap to assume that showing several columns cannot be much more difficult in comparison to the other views. The result was that the column view added a lot of complexity to the code and fixing column view related bugs was tricky. I cleaned up the code base for KDE SC 4.4 and am quite happy now: A lot of interfaces and workarounds could be removed, less code is needed and fixing column view bugs is straight forward. The beta releases and release candidates popped up some regressions, but they could be fixed quite fast.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Location bar (&quot;breadcrumb&quot;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://4.bp.blogspot.com/_zDPqioLuxns/S2Vt-jumavI/AAAAAAAAAIY/0K0VlvTcI0o/s1600-h/breadcrumb.png&quot;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/_zDPqioLuxns/S2Vt-jumavI/AAAAAAAAAIY/0K0VlvTcI0o/s400/breadcrumb.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5432869447002385138&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;Long before KDE SC 4.0 had been released, the location bar was only meant as prototype. It happened too fast, that we moved it to kdelibs to make it available for the file dialog... It was my fault not taking care to cleanup up the public interface of this widget before KDE SC 4.0 (honestly speaking: There really where more serious problems to solve to that time ;-)). I could not manage to do a cleanup for KDE SC 4.4, but a refactored version is already available on trunk. There are two nice &quot;side effects&quot; of this cleanup:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Dolphin can now easily remember the expansion state of detail-view trees when going back in history (I've to thank Frank Reininghaus a lot for his contributions in this area).&lt;/li&gt;&lt;li&gt;The Dolphin code could be simplified, as it is very easy now to remember history states.&lt;/li&gt;&lt;/ol&gt;There are also a lot of minor things I wanted to fix since KDE SC 4.0 already. For example in the icons view the wrapping of file names is only done nice on spaces or the minus symbol. Dots and underscores are handled like letters, which might lead to nasty wrappings like:&lt;br /&gt;&lt;span&gt;   my_document.tx&lt;/span&gt;&lt;br /&gt;&lt;span&gt;   t&lt;/span&gt;&lt;br /&gt;instead of&lt;br /&gt;&lt;span&gt;   my_document.&lt;/span&gt;&lt;br /&gt;&lt;span&gt;   txt&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The searching for Dolphin has already improved in KDE SC 4.4, but still needs a lot of work...&lt;br /&gt;&lt;br /&gt;Things like these are what I'd like to fix in Dolphin for KDE SC 4.5, so please don't expect huge, new features :-)&lt;br /&gt;&lt;br /&gt;BTW: I'm very happy to announce that on February the 1st I'll start working fulltime at &lt;a href=&quot;http://www.openismus.com/&quot;&gt;Openismus&lt;/a&gt;. Most probably I'll get the chance to work with Qt for Maemo 6 (Harmattan).&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/591179528445148028-3993730017429037125?l=ppenz.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sun, 31 Jan 2010 14:07:33 +0000</pubDate>
</item>
<item>
	<title>Michael Hasselmann: How to customize your view with delegates</title>
	<guid>http://taschenorakel.de/michael/2010/01/29/how-customize-your-view-delegates/</guid>
	<link>http://taschenorakel.de/michael/2010/01/29/how-customize-your-view-delegates/</link>
	<description>&lt;p&gt;The usual way in Qt, when an item view wants to render itself, is to ask the item model for &lt;a href=&quot;http://doc.trolltech.com/4.6/qt.html#ItemDataRole-enum&quot;&gt;everything, layout, style and the actual data&lt;/a&gt;. Storing view-specific layout information in the model itself means that views and models can always only exist in a 1:1 relationship. The logical conclusion: If you need to share a model between different views, you will probably have to add proxy models for &lt;em&gt;each&lt;/em&gt; view. I wasn't satisfied with that idea, so I continued to research &lt;a href=&quot;http://doc.trolltech.com/4.6/qstyleditemdelegate.html&quot;&gt;QStyledItemDelegates&lt;/a&gt;. They have the following nice properties:
&lt;/p&gt;
&lt;ol&gt;
 &lt;li&gt;
     They are owned by the view.
 &lt;/li&gt;

 &lt;li&gt;
     They have complete control over the cell they are assigned to (although that might not be too obvious).
 &lt;/li&gt;

 &lt;li&gt;
     They only get called if there's work to do, that is, nothing is wasted unless a cell becomes visible in a view.
 &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;So instead of having one proxy model per view, I can now keep the single model/multiple views approach by writing custom delegates for each view. For a tabular view, that means I want to install custom delegates per column or row (see &lt;a href=&quot;http://gitorious.org/qlom/qlom/blobs/67716f4/src/gui/main_window.cc#line280&quot;&gt;Qlom's main window implementation&lt;/a&gt;).
&lt;/p&gt;

&lt;h3&gt; How to change colors of a cell&lt;/h3&gt;
&lt;p&gt;Use the &lt;a href=&quot;http://gitorious.org/qlom/qlom/blobs/67716f4/src/layout_delegates.cc#line38&quot;&gt;delegate's paint method&lt;/a&gt;, apply your changes to the QStyleOptionViewItem's palette and forward the paint request to the parent class. I had problems getting the correct background role, that is why I simply used the supplied painter to draw the background myself.
&lt;/p&gt;

&lt;h3&gt; How to format data from the model in the view&lt;/h3&gt;
&lt;p&gt;The &lt;a href=&quot;http://gitorious.org/qlom/qlom/blobs/67716f4/src/layout_delegates.cc#line92&quot;&gt;delegates' displayText method&lt;/a&gt; comes in handy. The model's data is wrapped in a QVariant already, so your custom delegate can apply all kinds of string formatting here. Just be aware that this method will never be called if the QVariant returned from the model (for the queried model index) is null.
&lt;/p&gt;

&lt;h3&gt;  How to replace a cell with a custom widget&lt;/h3&gt;
&lt;p&gt;For this, we abuse the fact that delegates are owned by their view. We only need to find a method that has a model index parameter, e.g., the paint method, and we are good to go! Inside that method, we &lt;a href=&quot;http://gitorious.org/qlom/qlom/blobs/67716f4/src/layout_delegates.cc#line213&quot;&gt;query the parent() and use the item view's setIndexWidget method&lt;/a&gt; (perhaps check if there already is a widget at the given index, so that we don't end up re-creating widgets for every paint request).
&lt;/p&gt;
&lt;p&gt;In Qlom, the embedded widget is a simple button, so I was interested in its pressed signal. For that, I used a &lt;a href=&quot;http://doc.trolltech.com/4.6/qsignalmapper.html&quot;&gt;QSignalMapper&lt;/a&gt; to bind &lt;a href=&quot;http://gitorious.org/qlom/qlom/blobs/67716f4/src/layout_delegates.h#line101&quot;&gt;custom data&lt;/a&gt; (here: the model index) to the delegate's buttonPressed signal. Now the view can connect to the delegates' buttonPressed signal, unwrap the custom QObject to find the model index and &lt;a href=&quot;http://gitorious.org/qlom/qlom/blobs/67716f4/src/gui/main_window.cc#line296&quot;&gt;display a nice message box&lt;/a&gt; with the exact model index of the clicked button.
&lt;/p&gt;
&lt;p&gt;Feedback and especially corrections welcome!
&lt;/p&gt;</description>
	<pubDate>Fri, 29 Jan 2010 16:00:00 +0000</pubDate>
</item>
<item>
	<title>André Klapper: FOSDEM, ah well, why not?</title>
	<guid>http://blogs.gnome.org/aklapper/?p=466</guid>
	<link>http://blogs.gnome.org/aklapper/2010/01/25/fosdem-ah-well-why-not/</link>
	<description>&lt;p&gt;Okay, after checking exam dates, chatting with &lt;a href=&quot;http://blogs.gnome.org/ovitters/&quot;&gt;Olav&lt;/a&gt; and the &lt;a href=&quot;http://www.openismus.com&quot;&gt;Openismus&lt;/a&gt; crew, and having the Maemo and GNOME communities in mind I&amp;#8217;d like to state:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.fosdem.org&quot;&gt;&lt;img src=&quot;http://www.fosdem.org/promo/going-to&quot; alt=&quot;I'm going to FOSDEM, the Free and Open Source Software Developers' European Meeting&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
Just booked a one-way flight to Brussels, not decided yet how and where to go back.&lt;/p&gt;</description>
	<pubDate>Mon, 25 Jan 2010 14:31:45 +0000</pubDate>
</item>
<item>
	<title>Murray Cumming: GtkToolPalette in GTK+ 2.20</title>
	<guid>http://www.murrayc.com/blog/?p=1084</guid>
	<link>http://www.murrayc.com/blog/permalink/2010/01/20/gtktoolpalette-in-gtk-2-20/</link>
	<description>&lt;p&gt;We (Openismus) &lt;a href=&quot;https://bugzilla.gnome.org/show_bug.cgi?id=567729&quot;&gt;recently&lt;/a&gt; got our GtkToolPalette widget into GTK+&amp;#8217;s git master, to be seen in recent GTK+ 2.19 (unstable) tarballs. We haven&amp;#8217;t had much extra time for this kind of thing, so I&amp;#8217;m glad it&amp;#8217;s finally done after being worked on now and then by Mathias Hasselmann, Jan Arne Petersen and Johannes Schmid. Thanks to Matthias Clasen for valuable reviewing and cleanup.&lt;/p&gt;
&lt;p&gt;We hope that this can replace the hand-coded tool palette widgets in Glade and Gimp, as well as making this easier for new applications. It replaces EggToolPalette in libegg, where we started the work. Please take a look and report any problems. I&amp;#8217;m already using it in a Glom branch.&lt;/p&gt;
&lt;p&gt;Here&amp;#8217;s the GTK+ &lt;a href=&quot;http://library.gnome.org/devel/gtk/unstable/GtkToolPalette.html&quot;&gt;API reference for GtkToolPalette&lt;/a&gt;. There&amp;#8217;s a &lt;a href=&quot;http://git.gnome.org/browse/gtk+/tree/demos/gtk-demo/toolpalette.c&quot;&gt;GtkToolPalette example&lt;/a&gt; in gtk-demo.&lt;/p&gt;
&lt;p&gt;And here&amp;#8217;s a little introductory &lt;a href=&quot;http://library.gnome.org/devel/gtkmm-tutorial/unstable/chapter-toolpalette.html.en&quot;&gt;Gtk::ToolPalette chapter&lt;/a&gt; I wrote for the gtkmm (C++) book. Note that gtkmm&amp;#8217;s API reference for this is mostly empty, but fixed already in git.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.murrayc.com/blog/wp-content/uploads/2010/01/toolpalette.png&quot;&gt;&lt;img class=&quot;alignnone size-medium wp-image-1087&quot; title=&quot;GtkToolPalette demo&quot; src=&quot;http://www.murrayc.com/blog/wp-content/uploads/2010/01/toolpalette-269x300.png&quot; alt=&quot;&quot; width=&quot;269&quot; height=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Wed, 20 Jan 2010 07:46:32 +0000</pubDate>
</item>
<item>
	<title>André Klapper: maemo.org: SNAFU ;-)</title>
	<guid>http://blogs.gnome.org/aklapper/?p=458</guid>
	<link>http://blogs.gnome.org/aklapper/2010/01/18/maemosnafu/</link>
	<description>&lt;p&gt;The last two weeks were a bit&amp;#8230; stressful.&lt;/p&gt;
&lt;p&gt;First of all some Nokia-internal changes with regard to Error Management, then maemo.org Bugzilla moving to a new server. Unexpected side effect was &lt;a href=&quot;http://www.mail-archive.com/maemo-users@maemo.org/msg14984.html&quot;&gt;data loss&lt;/a&gt;. Spent part of last Monday restoring what I still had in my bugmail. Still it leads to confusion and mistrust (&amp;#8220;Why was my account deleted?&amp;#8221; &amp;#8211; &amp;#8220;You probably created it in that data loss time frame?&amp;#8221; &amp;#8211; &amp;#8220;Ah.&amp;#8221;).&lt;/p&gt;
&lt;p&gt;Then we had the Maemo5 &lt;a href=&quot;http://wiki.maemo.org/Maemo_5/PR1.1&quot;&gt;PR1.1 release&lt;/a&gt; on Thursday (with a nice ChangeLog) and &lt;a href=&quot;http://maemo.org/news/announcements/repositories_down/&quot;&gt;some problems on Saturday and Sunday&lt;/a&gt;, hence bugmail (change notifications) was not delivered.&lt;/p&gt;
&lt;p&gt;Sharing other thoughts on broader issues that are currently on my mind:&lt;/p&gt;
&lt;p&gt;Before writing the very first bug report (maybe even of your life) it&amp;#8217;s recommended that reporters take a look at the &lt;a href=&quot;https://bugs.maemo.org/page.cgi?id=bug-writing.html&quot;&gt;How-To&lt;/a&gt;. Good bug reports save everybody&amp;#8217;s time and issues get fixed faster. We &lt;a href=&quot;https://bugs.maemo.org/show_bug.cgi?id=8132&quot;&gt;should put this information on the first Bugzilla page&lt;/a&gt; to avoid frustration on both sides.&lt;/p&gt;
&lt;p&gt;Also the number of incoming reports is constantly high, hence I am sometimes short with my comments (as I also have to take a look at the internal comments for public tickets, verify some reported issues in newer internal versions, keep stuff in sync, and other stuff). Depending on cultural backgrounds some of my comments &lt;a href=&quot;http://talk.maemo.org/showthread.php?p=465183#post465183&quot;&gt;might&lt;/a&gt; be misinterpreted as unfriendlyness.&lt;/p&gt;
&lt;p&gt;For the high workload Ubuntu has a nice approach called &lt;a href=&quot;https://wiki.ubuntu.com/5-A-Day&quot;&gt;5 A Day&lt;/a&gt; which is asking community members to triage five bug reports a day. I&amp;#8217;d be happy with any number though. &lt;img src=&quot;http://blogs.gnome.org/aklapper/wp-content/mu-plugins/tango-smilies/tango/face-wink.png&quot; alt=&quot;;-)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;br /&gt;On a related note, for some reasons I expect more Nokians to be around in maemo.org Bugzilla after the next feature release (PR1.2) has been published. Looking forward to it.&lt;/p&gt;
&lt;p&gt;Another problem is that many normal users don&amp;#8217;t understand the difference between a bug report and a &lt;a href=&quot;http://talk.maemo.org&quot;&gt;forum&lt;/a&gt; (I&amp;#8217;ve &lt;a href=&quot;http://blogs.gnome.org/aklapper/2009/08/31/maemo-org-welcome-new-users/&quot;&gt;blogged about this before&lt;/a&gt;, anyway). That&amp;#8217;s predictable if you&amp;#8217;ve never seen a bugtracker before, but if everybody wants &lt;a href=&quot;https://bugs.maemo.org/show_bug.cgi?id=630&quot;&gt;Nokia to be more present in maemo.org Bugzilla&lt;/a&gt; and folks actually reading bugmail and responding, please reduce adding comments on what is helpful and avoid unneeded fullquotes or answering above the quote.&lt;br /&gt;
Especially if instructions how to provide further information have been posted already adding just another &amp;#8220;I have this problem too&amp;#8221; comment is unhelpful and creates bugmail noise in everybody&amp;#8217;s inbox. Bug reports with &lt;a href=&quot;https://bugs.maemo.org/show_bug.cgi?id=6334&quot;&gt;hundreds of comments&lt;/a&gt;, mixing up issues with similar outcome but different reasons quickly become unreadable so the same questions or comments get reposted plus subscribed people tend to ignore new comments. Of course this is also a question of providing better information on &lt;a href=&quot;http://wiki.maemo.org/Bugs:Stock_answers&quot;&gt;how to provide logs etc&lt;/a&gt; &amp;#8211; should spend time on this in the next weeks.&lt;/p&gt;
&lt;p&gt;In general of course reading before posting is required, but people are lazy. &amp;#8220;If this is RESOLVED FIXED, then why do I still see that issue here?&amp;#8221; It&amp;#8217;s &lt;a href=&quot;https://bugs.maemo.org/page.cgi?id=fields.html#resolution&quot;&gt;explained that FIXED does not mean PUBLISHED&lt;/a&gt;, but we could consider renaming FIXED after &lt;a href=&quot;http://blogs.gnome.org/kbrae/2009/11/30/bugzilla-maintenance-to-trunk-progress/&quot;&gt;having Bugzilla 3.4 in place&lt;/a&gt;, as it confuses many people. Red Hat for example calls an internal fix &amp;#8220;RESOLVED ON_QA&amp;#8221; in their Bugzilla until the fix is really available for public.&lt;/p&gt;
&lt;p&gt;So that&amp;#8217;s the reason why I &lt;strike&gt;educate people&lt;/strike&gt; &lt;a href=&quot;https://bugs.maemo.org/show_bug.cgi?id=5357#c97&quot;&gt;ask people to please &amp;#8220;behave&amp;#8221;&lt;/a&gt;. Sometimes I &lt;a href=&quot;http://twitter.com/RevdKathy/status/7759243284&quot;&gt;scare some people&lt;/a&gt; or maybe have less friends at the end of the day, sometimes people are &lt;a href=&quot;https://bugs.maemo.org/show_bug.cgi?id=8062#c2&quot;&gt;fine with what I&amp;#8217;m doing&lt;/a&gt;.&lt;br /&gt;In any way it&amp;#8217;s necessary, I just felt a need to explain my intentions in public after a bit of negative feedback in the last days.&lt;/p&gt;</description>
	<pubDate>Mon, 18 Jan 2010 06:30:10 +0000</pubDate>
</item>
<item>
	<title>Murray Cumming: Peter Penz Joining Openismus</title>
	<guid>http://www.murrayc.com/blog/?p=1078</guid>
	<link>http://www.murrayc.com/blog/permalink/2010/01/12/peter-penz-joining-openismus/</link>
	<description>&lt;p&gt;I&amp;#8217;m pleased to say that &lt;a href=&quot;http://ppenz.blogspot.com/&quot;&gt;Peter Penz&lt;/a&gt; will become an &lt;a href=&quot;http://www.openismus.com/&quot;&gt;Openismus&lt;/a&gt; employee at the start of February. I&amp;#8217;ve known and liked Peter since I worked with him six years ago in Linz, Austria on a proprietary C++ mobile phone platform. Back then I was impressed with his skill and temperament so I&amp;#8217;ve watched with interest as he has become a core KDE maintainer via the &lt;a href=&quot;http://dolphin.kde.org/&quot;&gt;Dolphin&lt;/a&gt; file manager.&lt;/p&gt;
&lt;p&gt;Obviously Peter will help Openismus as we gain experience with Qt for &lt;a href=&quot;http://wiki.maemo.org/Open_development/Maemo_roadmap/Harmattan&quot;&gt;Maemo 6 (Harmattan)&lt;/a&gt; in addition to our continued use of GTK+ and gtkmm.&lt;/p&gt;
&lt;p&gt;Peter will work from home in Linz, occasionally visiting the office in Berlin. I like the idea of another office in Linz though.&lt;/p&gt;</description>
	<pubDate>Tue, 12 Jan 2010 11:43:20 +0000</pubDate>
</item>
<item>
	<title>Mathias Hasselmann: Technique vs. Intelligence</title>
	<guid>http://taschenorakel.de/mathias/2010/01/11/technique-vs-intelligence/</guid>
	<link>http://taschenorakel.de/mathias/2010/01/11/technique-vs-intelligence/</link>
	<description>&lt;p&gt; &lt;a href=&quot;http://www.nytimes.com/2010/01/11/business/11drone.html?hp&quot;&gt;New York Times reports&lt;/a&gt;:
&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;As the military rushes to place more spy drones over Afghanistan,
   the remote-controlled planes are producing so much video intelligence
   that analysts are finding it more and more difficult to keep up.
&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;Yet another proof that technique cannot replace intelligence.
&lt;/p&gt;
&lt;p&gt; &lt;small&gt;(Notice the wordplay.)&lt;/small&gt; 
&lt;/p&gt;</description>
	<pubDate>Mon, 11 Jan 2010 08:36:54 +0000</pubDate>
</item>
<item>
	<title>Mathias Hasselmann: Re: Facebook Scam Groups</title>
	<guid>http://taschenorakel.de/mathias/2010/01/10/re-facebook-scam-groups/</guid>
	<link>http://taschenorakel.de/mathias/2010/01/10/re-facebook-scam-groups/</link>
	<description>&lt;p&gt; &lt;a href=&quot;http://blog.drinsama.de/erich/en/web/20100109-facebook-scam-groups.html&quot;&gt;Erich&lt;/a&gt;: Not sure if Facebook is in charge. All that happens is, that people try to cheat and get cheated back. That's what happens to greedy people who consider themself smarter than they really are.
&lt;/p&gt;</description>
	<pubDate>Sun, 10 Jan 2010 09:25:53 +0000</pubDate>
</item>
<item>
	<title>Murray Cumming: Liam at Two</title>
	<guid>http://www.murrayc.com/blog/?p=1068</guid>
	<link>http://www.murrayc.com/blog/permalink/2010/01/07/liam-at-two/</link>
	<description>&lt;p&gt;December&amp;#8217;s long season of presents is over and Liam is now two years old.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/sigimueller/4225937377/&quot;&gt;&lt;img class=&quot;alignnone size-medium wp-image-1073&quot; title=&quot;Liam and birthday candles&quot; src=&quot;http://www.murrayc.com/blog/wp-content/uploads/2010/01/4225937377_a8d2f7d43a_o-300x200.jpg&quot; alt=&quot;&quot; width=&quot;300&quot; height=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;He&amp;#8217;s recently started the famous language explosion, learning several new words each day. He&amp;#8217;s obviously aware that he speaks two languages, now learning to say both words instead of preferring the first one he&amp;#8217;d learned. He still prefers hand gestures where he has learned them first, seeing no need to learn words for them too.&lt;/p&gt;
&lt;p&gt;For the past couple of months Liam has spent the mornings in the crèche over the road. That&amp;#8217;s why I&amp;#8217;m online again every morning. It&amp;#8217;s great for him to learn some independence and spend time with the same kids every day. Leaving him there in tears has been heart-breaking every morning for weeks, but now he&amp;#8217;s happy to go there and is nonchalant about us leaving.&lt;/p&gt;
&lt;p&gt;I was worried when he suddenly learned more German at the crèche, but that has settled down now. Still, I make an extra effort with plenty of English books and music and some DVDs of gentle British children&amp;#8217;s TV from the 70s, such as &lt;a href=&quot;http://en.wikipedia.org/wiki/The_Wombles&quot;&gt;The Wombles&lt;/a&gt; and &lt;a href=&quot;http://en.wikipedia.org/wiki/The_Wombles&quot;&gt;Ivor the Engine&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The language explosion was accompanied by a sudden increase in general understanding and concentration. Now he happily listens as I read all of a Dr Seuss book to him and seems to understand narrative instead of just wanting to identify objects. His imaginative play is more complicated, with detailed routines.&lt;/p&gt;
&lt;p&gt;We&amp;#8217;ve had a little snow in Munich this week. Liam learned to walk in last year&amp;#8217;s snow. I hope he remembers enjoying this year&amp;#8217;s.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.murrayc.com/gallery/v/murrayc_0/2010/liam_sledge/IMG_0779.JPG.html&quot;&gt;&lt;img class=&quot;alignnone size-medium wp-image-1070&quot; title=&quot;Liam and Sledge&quot; src=&quot;http://www.murrayc.com/blog/wp-content/uploads/2010/01/IMG_0779-200x300.jpg&quot; alt=&quot;&quot; width=&quot;200&quot; height=&quot;300&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://www.murrayc.com/gallery/v/murrayc_0/2010/liam_sledge/IMG_0679.JPG.html&quot;&gt;&lt;img class=&quot;alignnone size-medium wp-image-1075&quot; title=&quot;Liam on Sledge&quot; src=&quot;http://www.murrayc.com/blog/wp-content/uploads/2010/01/IMG_0679-200x300.jpg&quot; alt=&quot;&quot; width=&quot;200&quot; height=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Thu, 07 Jan 2010 10:16:14 +0000</pubDate>
</item>
<item>
	<title>Michael Hasselmann: Fragile API and invalid iterators</title>
	<guid>http://taschenorakel.de/michael/2010/01/02/fragile-api-and-invalid-iterators/</guid>
	<link>http://taschenorakel.de/michael/2010/01/02/fragile-api-and-invalid-iterators/</link>
	<description>&lt;p&gt;For the &lt;a href=&quot;http://wiki.maemo.org/Miniature&quot;&gt;Miniature project&lt;/a&gt; I sometimes need to iterate over all graphics items in a &lt;a href=&quot;http://doc.trolltech.com/4.6/qgraphicsscene.html&quot;&gt;QGraphicsScene&lt;/a&gt;, or more precisely, all items of a specific parent item, the chess board itself. For that, I use the &lt;a href=&quot;http://doc.trolltech.com/4.6/qgraphicsitem.html#childItems&quot;&gt;QGraphicsItem::childItems() API&lt;/a&gt;. However, when used with STL-style iterators you have to be careful, since value types of that form can easily break the iterator idiom:
&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;for (QList&amp;lt;QGraphicsItem *&amp;gt;::iterator iter = parent_item-&amp;gt;childItems().begin();
     iter != parent_item-&amp;gt;childItems().end();
     ++iter)
{
    (*iter)-&amp;gt;doSth(); // Ooops! Invalid iterator deref'ing! 
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The value-type list that is returned by parent_item-&amp;gt;childItems() has not been bound to a variable explicitly, so it is bound to an anonymous variable instead. The compiler will not complain here although the code is borken, from a C++ point of view. Worse yet, &amp;quot;(*iter)-&amp;gt;doSth();&amp;quot; might work often enough for you to not see the crashes right away, depending on the compiled code and how the architecture handles memory. 
&lt;/p&gt;
&lt;p&gt;Eventually though it will crash, and according to Murphy this will happen right after the big release. Valgrind of course would have complained about the illegal memory access right away (when run through that part of your code), because the list that we queried in the loop header is invalidated as soon as we enter the loop body, leaving us with an iterator that points into the void. This is C++-specific, in other languages even anonymous variables are only ever cleaned up after leaving the current block context, but in C++ their life time is only guaranteed for the scope of the current expression.
&lt;/p&gt;
&lt;p&gt;There is one fix and one workaround to that problem. First the fix: let QGraphicsItem::childItems() return a reference to a list member instead, or simply expose the begin/end iterators for the internal data structure directly. Assuming this is not possible, we are left with the workaround - bind the returned list to a variable explicitly, before the iterator is used:
&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;QList&amp;lt;QGraphicsItem *&amp;gt; children = parent_item-&amp;gt;childItems();
for (QList&amp;lt;QGraphicsItem *&amp;gt;::iterator iter = children.begin();
     iter != children.end();
     ++iter)
{
    (*iter)-&amp;gt;doSth(); // Fine!
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This of course prolongs the life time of the returned list unnecessarily. We only needed it inside the loop, but now it won't be cleaned up until the flow of control  leaves the surrounding block context. To finally get the desired behaviour we could limit the surrounding block context:
&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{
    QList&amp;lt;QGraphicsItem *&amp;gt; children = parent_item-&amp;gt;childItems();
    for (QList&amp;lt;QGraphicsItem *&amp;gt;::iterator iter = children.begin();
         iter != children.end();
         ++iter)
    {
        (*iter)-&amp;gt;doSth(); // Fine!
    }
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Perhaps a cleaner way is to move the loop code in a function of its own instead, although that might not always be feasible, depending on the code inside the loop body.
&lt;/p&gt;
&lt;p&gt;Another issue might be the need to dynamically cast QGraphicsItems (QGI) to the desired type, once you implemented your custom QGraphicsItem type. This wouldn't be too bad if there wasn't this horrible mix of QGraphicsObjects and QGraphicsItems in Qt 4.6 - some items inherit from QObject (&lt;a href=&quot;http://doc.trolltech.com/4.6/qgraphicssvgitem.html&quot;&gt;QGraphicsSvgItem&lt;/a&gt;), others don't (&lt;a href=&quot;http://doc.trolltech.com/4.6/qgraphicspixmapitem.html&quot;&gt;QGraphicsPixmapItem&lt;/a&gt;). So now you also have to decide between dynamic_casts and qobject_casts, how nice ... not! Honestly, it would be easier here to simply forget about qobject_casts, but that might break in subtle ways.
&lt;/p&gt;
&lt;p&gt;These two issues were enough for me to avoid the QGI::childItems() API whenever possible. One possible replacement can be provided by signals and slots [1]:
   First, add a slot representing the loop body to your custom QGI type.
   Second, connect a signal to the instances of your QGI type that would have been iterated in the loop, that is, have a custom signal representing the loop iteration. Then, instead of iterating over the children of the parent item you simply emit the custom signal which triggers the &amp;quot;loop body&amp;quot; execution for each connected custom QGI instance.
&lt;/p&gt;
&lt;p&gt;[1] requires QObject inheritance for your custom QGraphicsItem type
&lt;/p&gt;</description>
	<pubDate>Sat, 02 Jan 2010 18:00:00 +0000</pubDate>
</item>
<item>
	<title>André Klapper: 2009 Bugzilla statistics for maemo.org and GNOME</title>
	<guid>http://blogs.gnome.org/aklapper/?p=455</guid>
	<link>http://blogs.gnome.org/aklapper/2010/01/01/2009-bugzilla-statistics-for-maemo-org-and-gnome/</link>
	<description>&lt;p&gt;This morning my calendar told me there&amp;#8217;s a new year available, so I created some quick &amp;amp; dirty statistics for my favorite bug databases:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://lists.maemo.org/pipermail/maemo-community/2010-January/003638.html&quot;&gt;maemo.org Bugzilla 2009 stats&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://mail.gnome.org/archives/gnome-bugsquad/2010-January/msg00000.html&quot;&gt;GNOME Bugzilla 2009 stats&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
	<pubDate>Fri, 01 Jan 2010 20:44:47 +0000</pubDate>
</item>
<item>
	<title>André Klapper: 2009: Music.</title>
	<guid>http://blogs.gnome.org/aklapper/?p=437</guid>
	<link>http://blogs.gnome.org/aklapper/2009/12/31/2009-music/</link>
	<description>&lt;p&gt;Like &lt;a href=&quot;http://blogs.gnome.org/aklapper/2008/12/30/2008/&quot;&gt;last year&lt;/a&gt; my private soundtrack for 2009 in alphabetic order. (Warning: Explicit lyrics and/or video content.)&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=KmcPeuf5aXo&quot;&gt;Röyksopp&lt;/a&gt; and &lt;a href=&quot;http://www.youtube.com/watch?v=9bBkEQYdMM8&quot;&gt;The Dø&lt;/a&gt; to mention separately, because both albums are just marvelous. Quite unfair to pick just one song here.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://virb.com/mioumiou/videos/31570&quot;&gt;Miou Miou &amp;#8211; À l&amp;#8217;été de la Saint-Martin &amp;#8216;68&lt;/a&gt; / &lt;a href=&quot;http://www.youtube.com/watch?v=EuKlw5l9BM8&amp;#038;showinfo=0&quot;&gt;School of Seven Bells &amp;#8211; Connjur&lt;/a&gt; / &lt;a href=&quot;http://www.youtube.com/watch?v=vnXIq4UTiJ4&amp;#038;showinfo=0&quot;&gt;Depeche Mode &amp;#8211; Everything counts (Oliver Huntemann &amp;#038; Stephan Bodzin Dub remix)&lt;/a&gt; / &lt;a href=&quot;http://www.youtube.com/watch?v=ODF5yun9Eao&amp;#038;showinfo=0&quot;&gt;Paul Kalkbrenner &amp;#8211; Gebrünn Gebrünn (Berlin Calling Edit)&lt;/a&gt; / &lt;a href=&quot;http://www.youtube.com/watch?v=WZB7yswo6a0&amp;#038;showinfo=0&quot;&gt;N.A.S.A. ft. Kanye West, Santogold, Lykke Li &amp;#8211; Gifted&lt;/a&gt; / &lt;a href=&quot;http://www.greatwhitebear.tv/&quot;&gt;Dear Reader &amp;#8211; Great white bear&lt;/a&gt; / &lt;a href=&quot;http://www.dailymotion.com/video/x8pdue_heaven-fully-flared-intro-video-rem_music&quot;&gt;Unkle &amp;#8211; Heaven&lt;/a&gt; / &lt;a href=&quot;http://www.youtube.com/watch?v=6_t7LQkPQNw&amp;#038;showinfo=0&quot;&gt;Dragonette &amp;#8211; I go around (Midnight Juggernauts remix)&lt;/a&gt; / &lt;a href=&quot;http://www.youtube.com/watch?v=f_2rrxONlLo&amp;#038;showinfo=0&quot;&gt;Black Eyed Peas &amp;#8211; I got a feeling&lt;/a&gt; / Yarn:moor &amp;#8211; It&amp;#8217;s blooming / &lt;a href=&quot;http://www.youtube.com/watch?v=B24ocNYs5uE&amp;#038;showinfo=0&quot;&gt;London Elektricity &amp;#8211; Just one second&lt;/a&gt; / &lt;a href=&quot;http://www.youtube.com/watch?v=ISAtum_tDjQ&amp;#038;showinfo=0&quot;&gt;Friendly Fires ft. Au Revoir Simone &amp;#8211; Paris (Aeroplane Remix)&lt;/a&gt; / &lt;a href=&quot;http://www.youtube.com/watch?v=Ngf5Oo_XrjI&amp;#038;showinfo=0&quot;&gt;Lady GaGa &amp;#8211; Pokerface&lt;/a&gt; / &lt;a href=&quot;http://www.youtube.com/watch?v=BEz8N8AT-yo&amp;#038;showinfo=0&quot;&gt;Metric &amp;#8211; Sick muse&lt;/a&gt; / &lt;a href=&quot;http://www.dailymotion.com/video/x9d3ar_lady-sovereign-so-human_music&quot;&gt;Lady Sovereign: So Human&lt;/a&gt; /  &lt;a href=&quot;http://www.youtube.com/watch?v=q-Jw0H8VED4&amp;#038;showinfo=0&quot;&gt;IAMX &amp;#8211; Spit It Out (Designer Drugs Remix)&lt;/a&gt; / &lt;a href=&quot;http://www.youtube.com/watch?v=XOS5rrzKmWo&amp;#038;showinfo=0&quot;&gt;Hell &amp;#8211; U can dance&lt;/a&gt; / &lt;a href=&quot;http://www.youtube.com/watch?v=LhldkEc8yyY&amp;#038;showinfo=0&quot;&gt;David Guetta ft. Kelly Rowland &amp;#8211; When love takes over&lt;/a&gt; / &lt;a href=&quot;http://www.youtube.com/watch?v=CEfl-ARgiiU&amp;#038;showinfo=0&quot;&gt;2raumwohnung &amp;#8211; Wir werden sehen (Paul Kalkbrenner Remix)&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Thu, 31 Dec 2009 03:36:28 +0000</pubDate>
</item>
<item>
	<title>André Klapper: GNOME 3 platform cleanup</title>
	<guid>http://blogs.gnome.org/aklapper/?p=447</guid>
	<link>http://blogs.gnome.org/aklapper/2009/12/21/gnome-3-platform-cleanup/</link>
	<description>&lt;p&gt;Long time no update on the Cleanup part of GNOME 3, hence if somebody wants to spend the Christmas days with hacking a bit on boring stuff, here&amp;#8217;s the ToDo list! &lt;img src=&quot;http://blogs.gnome.org/aklapper/wp-content/mu-plugins/tango-smilies/tango/face-wink.png&quot; alt=&quot;;-)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Killing libgnomeui: &lt;a href=&quot;http://bugzilla.gnome.org/show_bug.cgi?id=586846&quot;&gt;gnome-panel&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Killing libglade: &lt;a href=&quot;http://bugzilla.gnome.org/show_bug.cgi?id=581346&quot;&gt;gdm&lt;/a&gt; (patch available awaiting review), &lt;a href=&quot;http://bugzilla.gnome.org/show_bug.cgi?id=524364&quot;&gt;gnome-media&lt;/a&gt; (initial patch exists, but help and feedback needed!), &lt;a href=&quot;http://bugzilla.gnome.org/show_bug.cgi?id=578046&quot;&gt;sound-juicer&lt;/a&gt; (patch available awaiting review), &lt;a href=&quot;https://bugzilla.novell.com/show_bug.cgi?id=502623&quot;&gt;mono&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Killing libgnome: &lt;a href=&quot;http://bugzilla.gnome.org/show_bug.cgi?id=580422&quot;&gt;tomboy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Killing libgnomecanvas: &lt;a href=&quot;http://bugzilla.gnome.org/show_bug.cgi?id=571742&quot;&gt;Evolution&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Killing Bonobo: Currently blocked by &lt;a href=&quot;http://bugzilla.gnome.org/show_bug.cgi?id=572131&quot;&gt;gnome-panel&lt;/a&gt;, the new &lt;a href=&quot;http://live.gnome.org/Accessibility/BonoboDeprecation&quot;&gt;A11Y infrastructure&lt;/a&gt; (which is on a good way), and for gconf by the proposed desktop wide &lt;a href=&quot;http://live.gnome.org/GnomeGoals/GSettingsMigration&quot;&gt;move to dconf/GSettings&lt;/a&gt; for 2.31.&lt;/li&gt;
&lt;li&gt;Killing &lt;a href=&quot;http://live.gnome.org/GnomeGoals/RemoveDeprecatedSymbols/Glib&quot;&gt;GlibDeprecatedSymbols&lt;/a&gt; and &lt;a href=&quot;http://live.gnome.org/GnomeGoals/RemoveDeprecatedSymbols/GTK%2B&quot;&gt;GtkDeprecatedSymbols&lt;/a&gt;: Moving target&amp;#8230;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://live.gnome.org/GnomeGoals/CleanupGTKIncludes&quot;&gt;Cleaning up GTK Includes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://live.gnome.org/GnomeGoals/UseGseal&quot;&gt;Use GSEAL&lt;/a&gt;: Moving target as per &lt;a href=&quot;http://bugzilla.gnome.org/show_bug.cgi?id=588339&quot;&gt;pending sealings&lt;/a&gt; and &lt;a href=&quot;https://bugzilla.gnome.org/show_bug.cgi?id=597610&quot;&gt;missing accessor functions&lt;/a&gt;. Maintainers: Please do take a look at your module(s) by compiling with -DGSEAL_ENABLE!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And in the extended basket:&lt;/p&gt;
&lt;li&gt;&lt;a href=&quot;http://live.gnome.org/GnomeGoals/DropLibsexy&quot;&gt;Killing libsexy&lt;/a&gt;: &lt;a href=&quot;http://bugzilla.gnome.org/show_bug.cgi?id=586537&quot;&gt;vino&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Killing HAL: See the open dependencies of the &lt;a href=&quot;https://bugzilla.gnome.org/show_bug.cgi?id=593938&quot;&gt;meta bug&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Killing XULRunner in favor of WebKit: &lt;a href=&quot;http://git.gnome.org/browse/yelp/log/?h=yelp-3-0&quot;&gt;yelp&lt;/a&gt;&lt;/li&gt;

&lt;p&gt;So, what did I forget in this quickly written list? &lt;img src=&quot;http://blogs.gnome.org/aklapper/wp-content/mu-plugins/tango-smilies/tango/face-smile.png&quot; alt=&quot;:-)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;
&lt;p&gt;Nice to see more and more modules getting &lt;a href=&quot;http://live.gnome.org/GnomeGoals/AddGObjectIntrospectionSupport&quot;&gt;Introspection Support&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Worth to consider: &lt;a href=&quot;http://live.gnome.org/GnomeGoals/XDGConfigFolders&quot;&gt;XDG config folder implementation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Also I&amp;#8217;d like to give a big &amp;#8220;Thanks&amp;#8221; to &lt;a href=&quot;http://live.gnome.org/JavierJardon&quot;&gt;Javier Jardon&lt;/a&gt; for working like mad by both filing bugs and providing patches in these fields, especially when it comes to GTK+.&lt;/p&gt;</description>
	<pubDate>Mon, 21 Dec 2009 18:40:36 +0000</pubDate>
</item>
<item>
	<title>André Klapper: To GNU or not to GNU</title>
	<guid>http://blogs.gnome.org/aklapper/?p=442</guid>
	<link>http://blogs.gnome.org/aklapper/2009/12/13/to-gnu-or-not-to-gnu/</link>
	<description>&lt;p&gt;Being not subscribed to GNOME&amp;#8217;s foundation-list mailing list (and having no intention to subscribe to it), I tried to catch up a bit with the controversy of the last days. I might have missed stuff of course.&lt;/p&gt;
&lt;p&gt;Trying to summarize:&lt;br /&gt;&lt;br /&gt;
Initially, &lt;a href=&quot;http://www.mail-archive.com/foundation-list@gnome.org/msg03962.html&quot;&gt;Lucas brought up complaints received about content posted on Planet GNOME&lt;/a&gt; which triggered a discussion whether there should be rules on appropriate content, whether an annual reminder should be sent to blog authors aggregated to Planet GNOME (telling them that they can remove themselves if they don&amp;#8217;t feel fine with it anymore), and whether GNOME has &amp;#8220;lost&amp;#8221; people because of reasons that could have been avoided.&lt;br /&gt;
&lt;a href=&quot;http://www.mail-archive.com/foundation-list@gnome.org/msg04036.html&quot;&gt;RMS joined the discussion&lt;/a&gt; and &lt;a href=&quot;http://www.mail-archive.com/foundation-list@gnome.org/msg04039.html&quot;&gt;Philip disagreed with him&lt;/a&gt;. RMS then wrote that &lt;a href=&quot;http://www.mail-archive.com/foundation-list@gnome.org/msg04052.html&quot;&gt;people should not post about closed source on Planet GNOME&lt;/a&gt; and defined his &lt;a href=&quot;http://www.mail-archive.com/foundation-list@gnome.org/msg04063.html&quot;&gt;&amp;#8220;most minimal support for the free software movement&amp;#8221;&lt;/a&gt; . Because of the obvious disagreement, Philip consequently proposed &lt;a href=&quot;http://www.mail-archive.com/foundation-list@gnome.org/msg04068.html&quot;&gt;&amp;#8220;to have a vote on GNOME&amp;#8217;s membership to the GNU project&amp;#8221;&lt;/a&gt;. Dave warned that such a vote &lt;a href=&quot;http://www.mail-archive.com/foundation-list@gnome.org/msg04071.html&quot;&gt;&amp;#8220;could cause a lot of harm &amp;#038; discord for the GNOME community&amp;#8221;&lt;/a&gt; which was &lt;a href=&quot;http://www.mail-archive.com/foundation-list@gnome.org/msg04072.html&quot;&gt;answered by Philip&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;
So far my summary.&lt;br /&gt;&lt;br /&gt;
Other folks may find other postings more important than the ones I&amp;#8217;ve picked &amp;#8211; feel free to read the entire thread yourself to get your own opinion.&lt;/p&gt;
&lt;p&gt;Now some questions come up here:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;How is &amp;#8220;membership to the GNU project&amp;#8221; defined? Was &amp;#8220;FSF membership&amp;#8221; meant here maybe? Is there a public document?&lt;/li&gt;
&lt;li&gt;Is KDE nowadays such a &amp;#8220;member to the GNU project&amp;#8221; too? If not, why not? Did KDE try or consider applying for it? Links to potential past KDE discussions appreciated.&lt;/li&gt;
&lt;li&gt;Wikipedia states that &lt;a href=&quot;http://en.wikipedia.org/wiki/GNU_Project&quot;&gt;&amp;#8220;the Linux kernel is not part of the GNU project&amp;#8221;&lt;/a&gt; which leads to the question: How important is it for the GNOME community to have GNOME being a member to the GNU project? (As a sidenote, the term &lt;a href=&quot;http://en.wikipedia.org/wiki/GNOME#Name&quot;&gt;&amp;#8220;GNOME&amp;#8221; being an acronym is obsolete&lt;/a&gt;, just to avoid a useless discussion about potential project name changes).&lt;/li&gt;
&lt;li&gt;I wonder if members of the FSF&amp;#8217;s board of directors agree with Richard Stallman&amp;#8217;s opinion that Planet GNOME &lt;a href=&quot;http://www.mail-archive.com/foundation-list@gnome.org/msg04052.html&quot;&gt;&amp;#8220;should not invite people to talk about their proprietary software projects just because they are also GNOME contributors&amp;#8221;&lt;/a&gt;. As clearly written, &lt;a href=&quot;http://planet.gnome.org/#footer&quot;&gt;&amp;#8220;Planet GNOME is a window into the world, work and lives of GNOME hackers and contributors&amp;#8221;&lt;/a&gt; which also covers activities outside of GNOME, may it be philosophy, hunting, music, non-free software or anything else, as long as blog authors have some relation to GNOME. For technical news there is always &lt;a href=&quot;http://news.gnome.org/&quot;&gt;GNOME News&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Which influence do FSF members have on FSF decisions? For example the &lt;a href=&quot;http://en.windows7sins.org/&quot;&gt;Windows7&lt;/a&gt; campaign got some bad feedback within parts of free software communities. How transparently are decisions made in the FSF, e.g. deciding about such campaigns? Who is involved? Are there public archives (URLs)?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Sorry if answers exist out there and I have been too lazy to search or have not found them yet.&lt;/p&gt;
&lt;p&gt;With regard to my current personal opinion (which may of course change as I&amp;#8217;m willing to learn), having read Richard M. Stallman&amp;#8217;s recent posts on the foundation mailinglist, he remains a fascistic extremist to me, painting black &amp;#038; white, ignoring reality (with a bad impact on free software user experience if you cannot interact properly with closed source products that obviously do exist out there) and trying to exclude folks from the GNOME community (because they also work on VMWare stuff) because he knows better what&amp;#8217;s good for the GNOME community.&lt;/p&gt;
&lt;p&gt;RMS has done great work in the 80es and 90es that I really appreciate, but I prefer to forget about his last years (a bit similar to Michael Jackson actually), especially his GCDS keynote in 2009 (yes, I have to come up with this again, because it&amp;#8217;s part of the picture). RMS was a non-funny comedian with jokes that can easily be interpreted as sexistic (to me they definitely were, though that most probably was not his intention), trying desperately to auction a GNU puppet by behaving like on a children&amp;#8217;s birthday. Okay, one can probably discuss humor here. At least it was not my type of humor. If GNOME ever invites RMS again to a conference, I prefer to stay away and not go there. It&amp;#8217;s simply not the community that I want to be part of and proud of.&lt;/p&gt;
&lt;p&gt;I always tell myself that RMS does not speak on behalf of the entire FSF, as the FSF has good intentions. But good intentions don&amp;#8217;t count if the actual acting and outcome is bad. Plus organizations normally are reflected quite well by the leaders that were elected to represent them.&lt;/p&gt;
&lt;p&gt;So yes, the discussion might be definitely less heated if the request to not post about closed source on Planet GNOME had been posted by a different person than RMS, as he himself is controversial enough already. Plus for many people, FSF = RMS.&lt;/p&gt;
&lt;p&gt;A general note at the end: &amp;#8220;Freedom&amp;#8221; to me is also the personal freedom to tolerate and even to use non-free software from time to time, without having a big issue if it fits my needs way better. (For potential &amp;#8220;Then help the free software to become better!&amp;#8221; comments: I talk about the present here, not about the future.)&lt;br /&gt;
And I have enough friends working on closed software. They are awesome people. They just have a different concept that I totally accept because I&amp;#8217;m not in a position to say &amp;#8220;My concept is the only right one and superior to any other concept&amp;#8221;. I prefer to let history decide on that instead.&lt;/p&gt;</description>
	<pubDate>Sun, 13 Dec 2009 15:24:00 +0000</pubDate>
</item>
<item>
	<title>Peter Penz: Version Control Support</title>
	<guid>tag:blogger.com,1999:blog-591179528445148028.post-7717856102392556487</guid>
	<link>http://ppenz.blogspot.com/2009/12/version-control-support.html</link>
	<description>Before a feature is added in Dolphin, it is checked whether the feature is mandatory for &lt;a href=&quot;http://dolphin.kde.org/philosophy.html&quot;&gt;Dolphin’s target user group&lt;/a&gt;. If this is not the case, it does not mean that the feature cannot be added; first it must be clarified whether the feature might be non-intrusive and adds a value for users outside the primary target user group. &lt;span&gt;Non-intrusive&lt;/span&gt; is mainly related to the user interface. A feature that adds a lot of clutter to the main menu, context menus or toolbar might harm the target user group. In this case the feature will not be added.&lt;br /&gt;&lt;br /&gt;A good example of a feature that is non-intrusive is the embedded terminal in Dolphin. It only requires one entry inside a sub menu, but adds great value for a lot of people that are not in the scope of Dolphin’s target user group.&lt;br /&gt;&lt;br /&gt;Another kind of non-intrusive feature will be available for Dolphin in KDE SC 4.4: version control support. In KDE 4.4 at least a plugin for Subversion is given:&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://4.bp.blogspot.com/_zDPqioLuxns/SyO8NIFGnkI/AAAAAAAAAH4/V7wu05i-JXU/s1600-h/version_control_2.png&quot;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/_zDPqioLuxns/SyO8NIFGnkI/AAAAAAAAAH4/V7wu05i-JXU/s400/version_control_2.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5414378110722678338&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;The version state emblems and additional entries in the context menu will only be shown if a directory is under version control, so this feature fulfills the requirements for being non-intrusive. The plugin still has a lot of rough edges and has mainly been written for testing the plugin interface. Still I use it regularly and it fulfills most of my needs.&lt;br /&gt;&lt;br /&gt;It is possible for developers to write other version control plugins for Git, Mercurial or whatever, just by following the instructions given in the &lt;a href=&quot;http://websvn.kde.org/trunk/KDE/kdebase/apps/lib/konq/kversioncontrolplugin.h?view=markup&quot;&gt;plugin interface&lt;/a&gt;. In KDE SC 4.5 it is planned to embed the plugins as part of the kdevplatform package, but this has not been finally decided yet. The benefit to offer the plugins as part of kdevplatform will be, that the existing infrastructure for version control integration can be reused by the plugins.&lt;br /&gt;&lt;br /&gt;Big thanks go to Nuno Pinheiro, who created icons for the version control states!&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/591179528445148028-7717856102392556487?l=ppenz.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sat, 12 Dec 2009 18:13:09 +0000</pubDate>
</item>
<item>
	<title>André Klapper: Maemo: Contributing and long-term platform strategy</title>
	<guid>http://blogs.gnome.org/aklapper/?p=431</guid>
	<link>http://blogs.gnome.org/aklapper/2009/12/09/maemo-contributing-and-long-term-platform-strategy/</link>
	<description>&lt;p&gt;&lt;img src=&quot;http://farm4.static.flickr.com/3040/2352514562_6be1610af5.jpg&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Great to see the interest on Maemo in the last weeks. As &lt;a href=&quot;http://blogs.gnome.org/aklapper/2009/08/31/maemo-org-welcome-new-users/&quot;&gt;expected&lt;/a&gt;, traffic in the &lt;a href=&quot;http://talk.maemo.org/&quot;&gt;forum&lt;/a&gt;, in &lt;a href=&quot;https://bugs.maemo.org/&quot;&gt;Bugzilla&lt;/a&gt; and in &lt;a href=&quot;http://maemo.org/community/brainstorm/&quot;&gt;Brainstorm&lt;/a&gt; has increased impressively.&lt;br /&gt;Discussions have been taking place (with regard to Bugzilla for example &lt;a href=&quot;http://talk.maemo.org/showthread.php?t=34878&quot;&gt;here&lt;/a&gt; or &lt;a href=&quot;http://talk.maemo.org/showthread.php?t=35976&quot;&gt;here&lt;/a&gt;) how to make infrastructure work out better for users, with some good proposals. I am also impressed by the patience and friendlyness towards new folks not searching for already existing threads or bug reports, partially pushing the limits of english grammar and punctuation, or towards folks having wrong expectations (Symbian is a completely different codebase than Maemo, hence talking about &amp;#8220;regressions&amp;#8221; is technically speaking wrong. If you want all of the Symbian functionality and lose some of the Maemo functionality, just get a Symbian device if it makes you happier). On a related note, I&amp;#8217;m also trying to keep Bugzilla a technically focused place and make clear that it&amp;#8217;s not a forum (&amp;#8220;WTF???&amp;#8221; comments are counterproductive noise if you want developers to read maemo.org Bugzilla mail, really).&lt;/p&gt;
&lt;p&gt;Two issues that have been on my mind lately:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
I am afraid of Nokia doing the same mistake for Maemo5 that was done for Maemo4 &amp;#8211; evolving and supporting a platform just for a few minor updates which is bad for the ecosystem around. &lt;a href=&quot;http://maemo.org/community/maemo-users/re-os_stability-001/&quot;&gt;&amp;#8220;Maemo hasn&amp;#8217;t had a chance yet to gain real long-term stability. The life-cycle of a Maemo version is too short for that, and there is no continuity between versions.&amp;#8221;&lt;/a&gt; If 3rd party developers are unsure whether to write their new great application in GTK (abandoned for Maemo6) or Qt (not yet ready for Maemo5) they in doubt don&amp;#8217;t write it at all and might support a different platform instead.&lt;/li&gt;
&lt;li&gt;Also, there must be improvements with regard to contributing (patches or even co-maintenance of modules). It&amp;#8217;s too unclear where to find which codebase. &lt;a href=&quot;https://garage.maemo.org/&quot;&gt;Garage&lt;/a&gt;? &lt;a href=&quot;https://stage.maemo.org/svn/maemo/projects/&quot;&gt;Stage&lt;/a&gt;? &lt;a href=&quot;http://git.gitorious.org/maemo-af/&quot;&gt;Gitorious&lt;/a&gt;? Is it free or closed? Glad to know that &lt;a href=&quot;http://maemo.org/profile/view/stskeeps/&quot;&gt;Stskeeps&lt;/a&gt; is working on it as part of the &lt;a href=&quot;http://wiki.maemo.org/Maemo.org_Sprints&quot;&gt;maemo.org Sprints&lt;/a&gt; (ID: 9.11-04).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Open source community expectations are about taking (Give me the code!) but also about giving back (Let me provide patches in Bugzilla and have maintainers review them!).&lt;br /&gt;Tarballs are &lt;a href=&quot;http://repository.maemo.org/pool/fremantle/free/&quot;&gt;available in the repositories&lt;/a&gt;, but hackers normally prefer the fresh code instead.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;&lt;a href=&quot;http://www.flickr.com/photos/brentdanley/2352514562/&quot;&gt;Photo&lt;/a&gt; by &lt;a href=&quot;http://www.flickr.com/photos/brentdanley/&quot;&gt;brentdanley&lt;/a&gt;, &lt;a href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/deed.en_US&quot;&gt;CC licensed&lt;/a&gt;&lt;/i&gt;&lt;/p&gt;</description>
	<pubDate>Wed, 09 Dec 2009 06:10:49 +0000</pubDate>
</item>
<item>
	<title>André Klapper: maemo.org Bugday: Dec 15th, 18:00-03:00 UTC</title>
	<guid>http://blogs.gnome.org/aklapper/?p=427</guid>
	<link>http://blogs.gnome.org/aklapper/2009/12/07/maemo-org-bugday-dec-15th-1800-0300-utc/</link>
	<description>&lt;p&gt;&lt;center&gt;&lt;img src=&quot;http://wiki.maemo.org/images/a/a6/Bugsquad-logo-wazd-small.png&quot; /&gt;&lt;/center&gt;&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m proudly announcing the first maemo.org Bugday:&lt;/p&gt;
&lt;p&gt;&lt;center&gt;&lt;b&gt;Tuesday, Dec 15th, &lt;a href=&quot;http://www.timeanddate.com/worldclock/converter.html&quot;&gt;18:00-03:00 UTC&lt;/a&gt;&lt;br /&gt;in #maemo-bugs on Freenode IRC&lt;/b&gt;&lt;/center&gt;&lt;/p&gt;
&lt;p&gt;This is a nice way to get involved if you are a fan of the Maemo platform and the N900, but cannot or do not want to write code for example.&lt;/p&gt;
&lt;p&gt;Bugdays are about hanging out together on IRC, triaging/discussing some reports in maemo.org Bugzilla, and introducing new people into triaging. No technical knowledge needed, no obligations. So, step by and say hello to the &lt;a href=&quot;http://wiki.maemo.org/Bugsquad&quot;&gt;Bugsquad&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;And now to some other bits and pieces:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We&amp;#8217;ve become stricter with regard to having non-trivial enhancement requests filed in &lt;a href=&quot;http://maemo.org/community/brainstorm/&quot;&gt;Brainstorm&lt;/a&gt; instead of Bugzilla. To avoid reporter frustration, a note about Brainstorm when &lt;a href=&quot;https://bugs.maemo.org/enter_bug.cgi&quot;&gt;entering a bug report&lt;/a&gt; will be displayed in Bugzilla soon (&lt;a href=&quot;http://blogs.gnome.org/kbrae/&quot;&gt;Karsten&lt;/a&gt; is looking into this).&lt;/li&gt;
&lt;li&gt;New shiny Bugsquad logo by &lt;a href=&quot;http://maemo.org/profile/view/wazd&quot;&gt;wazd&lt;/a&gt; (see above). Thanks!&lt;/li&gt;
&lt;li&gt;Published and updated version of my small &lt;a href=&quot;http://wiki.maemo.org/Bugsquad#Triaging&quot;&gt;maemo.org Greasemonkey triage helper script&lt;/a&gt;. Happy to share this.&lt;/li&gt;
&lt;/ul&gt;</description>
	<pubDate>Mon, 07 Dec 2009 15:18:38 +0000</pubDate>
</item>
<item>
	<title>Karsten Bräckelmann: Bugzilla maintenance to trunk. Progress.</title>
	<guid>http://blogs.gnome.org/kbrae/?p=62</guid>
	<link>http://blogs.gnome.org/kbrae/2009/11/30/bugzilla-maintenance-to-trunk-progress/</link>
	<description>&lt;p&gt;As Andre mentioned, me being back part-time to the technical side of Bugzilla and taking hacking work off his hands &lt;a href=&quot;http://blogs.gnome.org/aklapper/2009/11/18/minortweaks/&quot;&gt;already paid off&lt;/a&gt; &amp;#8212; some minor, yet much needed Bugzilla tweaks finally went live. While Andre can keep fully concentrating on the growing number of community bug reports, due to a growing community.&lt;/p&gt;
&lt;p&gt;The first task turned out to also require quite some cleaning-up, fixing and Perl compatibility coding, to get the maintenance branch back into working state. Once I won the fight with SVN, the requested changes were done quickly. &lt;img src=&quot;http://blogs.gnome.org/kbrae/wp-content/mu-plugins/tango-smilies/tango/face-wink.png&quot; alt=&quot;;)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;
&lt;p&gt;Currently I&amp;#8217;m wading through SVN again (trunk this time), making heads and tails of some confusing commits, chasing missing templates and skins, to get a clean, almost vanilla Bugzilla 3.4 up and running, while maintaining our precious customizations. A whole lot of CSS fun is lurking right behind the corner &amp;#8212; &lt;a href=&quot;https://bugs.maemo.org/&quot;&gt;Bugzilla&lt;/a&gt; with the new &lt;a href=&quot;http://maemo.org/&quot;&gt;maemo.org&lt;/a&gt; style!&lt;/p&gt;</description>
	<pubDate>Mon, 30 Nov 2009 19:50:44 +0000</pubDate>
</item>
<item>
	<title>Michael Hasselmann: About delegates and cell renderers - data formatting in Qt</title>
	<guid>http://taschenorakel.de/michael/2009/11/30/about-delegates-and-cell-renderers-data-formatting/</guid>
	<link>http://taschenorakel.de/michael/2009/11/30/about-delegates-and-cell-renderers-data-formatting/</link>
	<description>&lt;p&gt;Warning: the following blog post has a rant-to-usefulness ratio of 3:1.
&lt;/p&gt;
&lt;p&gt;Last week I needed to perform some data formatting on Qt list view. From reading the documentation alone I could not find a satisfying answer. When asking on IRC the answer was &lt;a href=&quot;http://doc.trolltech.com/4.6-snapshot/model-view-proxy-models.html&quot;&gt;to use proxy models&lt;/a&gt;. This would have worked, but having two models for one view can create all kind of correspondence problems (think of sorting etc.). And there is &lt;a href=&quot;http://qt.nokia.com/developer/task-tracker/index_html?method=entry&amp;amp;id=173958&quot;&gt;this interesting bugreport&lt;/a&gt;, complaining that there is no easy way to format data. Status: rejected!  So formatting should be a responsibility of the view? Wow, who would have thought ... however, if proxy models are a no-go we are left with ... custom delegates.
&lt;/p&gt;
&lt;p&gt;(&lt;i&gt;cut some nonsense about MVC&lt;/i&gt;)
&lt;/p&gt;
&lt;p&gt;In the Qt world, a delegate is reponsible for 3 tasks:
&lt;/p&gt;
&lt;ul&gt;
 &lt;li&gt;
     editing contents displayed in a view (possibly by creating new editor widgets on the fly),
 &lt;/li&gt;

 &lt;li&gt;
     updating the model with the modified contents,
 &lt;/li&gt;

 &lt;li&gt;
     rendering the contents in a view.
 &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; &lt;s&gt;Somehow, that's two tasks too many, for something that is not a controller. That's where I prefers&lt;/s&gt;Let's take a look at &lt;a href=&quot;http://library.gnome.org/devel/gtk/unstable/GtkCellRenderer.html#GtkCellRenderer.description&quot;&gt;GTK+ cell renderers&lt;/a&gt;: &lt;s&gt;they only perform one task, and that's exactly what their names suggests&lt;/s&gt;(&lt;i&gt;correction: actually, they are responsible for &lt;a href=&quot;http://library.gnome.org/devel/gtk/unstable/GtkCellRenderer.html#gtk-cell-renderer-start-editing&quot;&gt;editing&lt;/a&gt; and &lt;a href=&quot;http://library.gnome.org/devel/gtk/unstable/GtkCellRenderer.html#gtk-cell-renderer-activate&quot;&gt;updating&lt;/a&gt; as well, should have read more&lt;/i&gt;). A text cell renderer renders text, a pixbuf cell renderer renders pixbufs, and so on. Simple but tremendously flexible.
&lt;/p&gt;
&lt;p&gt;So how can I inject this flexibility into delegates? The &lt;a href=&quot;http://doc.trolltech.com/4.6-snapshot/qitemdelegate.html&quot;&gt;QItemDelegate&lt;/a&gt; won't be very useful unless you want to use a QPainter for everything. But there is this &lt;a href=&quot;http://doc.trolltech.com/4.6-snapshot/qstyleditemdelegate.html&quot;&gt;styled item delegate&lt;/a&gt;, added with version 4.4 of Qt. And if we look at the &lt;a href=&quot;http://doc.trolltech.com/4.6-snapshot/qstyleditemdelegate.html#details&quot;&gt;roles &amp;amp; accepted types table&lt;/a&gt; we can see how this - together with &lt;a href=&quot;http://doc.trolltech.com/4.6-snapshot/qstyleditemdelegate.html#displayText&quot;&gt;displayText&lt;/a&gt; - could translate nicely into Qt &amp;quot;cell renderers&amp;quot;. So we create custom styled delegates for each data type we need to display in our view: text delegates, pixmap^Wdecoration delegates ... Once we have defined a set of custom delegate classes we then request the view to use them on a &lt;a href=&quot;http://doc.trolltech.com/4.6-snapshot/qabstractitemview.html#itemDelegateForRow&quot;&gt;per-row&lt;/a&gt; or on a &lt;a href=&quot;http://doc.trolltech.com/4.6-snapshot/qabstractitemview.html#setItemDelegateForColumn&quot;&gt;per-column&lt;/a&gt; basis. A proof of concept &lt;a href=&quot;http://gitorious.org/qlom/qlom/blobs/numeric-formatting/src/main_window.cc#line265&quot;&gt;can be found here&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;EDIT: Had to correct some nonsense, this post was too much of a rant and I wasn't thinking clearly. What I originally wanted to express was that with QStyledItemDelegate we can have something very similar to GtkCellRenderer and use them both in a very similar way, too. I think the Qt documentation could have been easier to follow with straight and simple formatting data example, hence my rant. Sorry =/
&lt;/p&gt;</description>
	<pubDate>Mon, 30 Nov 2009 08:00:00 +0000</pubDate>
</item>
<item>
	<title>Murray Cumming: Trying to use gnuplot in massif_grapher</title>
	<guid>http://www.murrayc.com/blog/?p=1060</guid>
	<link>http://www.murrayc.com/blog/permalink/2009/11/20/trying-to-use-gnuplot-in-massif_grapher/</link>
	<description>&lt;p&gt;I&amp;#8217;ve been trying to use &lt;a href=&quot;http://www.gnuplot.info/&quot;&gt;gnuplot&lt;/a&gt; instead of Gd::Chart in my &lt;a href=&quot;http://www.murrayc.com/blog/permalink/2009/11/10/graphs-from-valgrinds-massif/&quot;&gt;massif_grapher&lt;/a&gt; script, mostly just so it can generate zoomable postscript or SVG output.&lt;/p&gt;
&lt;p&gt;I first tried using the &lt;a href=&quot;http://search.cpan.org/~kwmak/Chart-Gnuplot/lib/Chart/Gnuplot.pm&quot;&gt;Chart::Gnuplot&lt;/a&gt; perl API, but after a very helpful email conversation with its maintainer Ka-Wai Mak, we found that it cannot yet be used to create gnuplot&amp;#8217;s &amp;#8220;rowstacked&amp;#8221; histograms. So now my &lt;a href=&quot;http://github.com/murraycu/massif_grapher/tree/gnuplot&quot;&gt;gnuplot branch of massif_brancher &lt;/a&gt;uses gnuplot directly. However, there are still some problems that I can&amp;#8217;t solve easily:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The x axis has a label for each item, which makes it cluttered, with overlapping text. I think this cannot be changed while using xtics(1) in the &amp;#8220;using&amp;#8221; statement, but that&amp;#8217;s voodoo to me and I can&amp;#8217;t find some version of the using statement that doesn&amp;#8217;t use xtics.&lt;/li&gt;
&lt;li&gt;When using massif_grapher&amp;#8217;s &amp;#8211;detailed option, for instance with the example .out file, there are 60 stacked columns of data. The legend (key) is then so big that it pushes the graph off the page. I&amp;#8217;ve asked about this on the gnuplot mailing list, but I am inpatient.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Actually, I wish I could do these stacked (or &amp;#8220;cumulative&amp;#8221; in Gd::Chart terms) graphs for regular line graphs, instead of just as items on a histogram, in case the snapshot times are not at regular intervals.&lt;/p&gt;</description>
	<pubDate>Fri, 20 Nov 2009 13:21:42 +0000</pubDate>
</item>
<item>
	<title>Murray Cumming: LDTP in jhbuild: A Cry For Help</title>
	<guid>http://www.murrayc.com/blog/?p=1062</guid>
	<link>http://www.murrayc.com/blog/permalink/2009/11/19/ldtp-in-jhbuild-a-cry-for-help/</link>
	<description>&lt;p&gt;Glom has lots of code, lots of functionality and lots of UI. It&amp;#8217;s easy to break things when making changes to the code. So Armin set up some initial &lt;a href=&quot;http://git.gnome.org/cgit/glom/tree/ldtp&quot;&gt;Glom LDTP python scripts&lt;/a&gt; to check for regressions. These scripts try to actually use the UI and then check that the application worked as expected.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m sure I had that working once, but it doesn&amp;#8217;t work for me now. I wish it did because it would be incredibly useful to me. Note that I build Glom in jhbuild, so I need LDTP to work there. To simplify things, I build LDTP in jhbuild too. I&amp;#8217;m trying this on Ubuntu Jaunty and Ubuntu Karmic. Armin has a similar environment and it does work for him.&lt;/p&gt;
&lt;p&gt;The problem is that the &lt;a href=&quot;http://ldtp.freedesktop.org/user-doc/waittillguiexist.html&quot;&gt;waittillguiexist()&lt;/a&gt; [1] function calls just timeout instead of recognizing that the first window has appeared. I definitely have accessibility support enabled, and &lt;a href=&quot;http://live.gnome.org/Accerciser&quot;&gt;Accerciser&lt;/a&gt; does show the window properly. I&amp;#8217;ve asked the LDTP developers but they haven&amp;#8217;t been able to help me.&lt;/p&gt;
&lt;p&gt;[1] Yes, I hate that function name. I wish that the API and documentation had received proper feedback from native English speakers. It&amp;#8217;s rather embarrassing to look at so far.&lt;/p&gt;</description>
	<pubDate>Thu, 19 Nov 2009 16:45:53 +0000</pubDate>
</item>
<item>
	<title>André Klapper: maemo.org Bugzilla: Minor tweaks</title>
	<guid>http://blogs.gnome.org/aklapper/?p=413</guid>
	<link>http://blogs.gnome.org/aklapper/2009/11/18/minortweaks/</link>
	<description>&lt;div class=&quot;wp-caption aligncenter&quot;&gt;&lt;img src=&quot;http://blogs.gnome.org/aklapper/files/2009/11/bmo-income-stats.png&quot; alt=&quot;Statistics&quot; /&gt;
&lt;p class=&quot;wp-caption-text&quot;&gt;Incoming reports in the last weeks&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;As I&amp;#8217;m quite busy with the normal &amp;#8220;Triaging and Syncing&amp;#8221; business already (as seen above, a first increase of bug reports happened right after &lt;a href=&quot;http://blogs.gnome.org/aklapper/2009/10/18/maemo-summit-2009/&quot;&gt;Maemo Summit&lt;/a&gt; in week 41, but I expect way busier times ahead) &lt;a href=&quot;http://blogs.gnome.org/kbrae/2009/11/13/back-open-back-to-bugzilla/&quot;&gt;Karsten&lt;/a&gt; concentrates on technical stuff. It&amp;#8217;s good to have him back as now stuff gets done that unfortunately was on the backburner.&lt;br /&gt;First pay-offs (small, but definitely worth to mention, not only for the sake of transparency) that were done because I could &amp;#8220;outsource&amp;#8221; this to Karsten:&lt;/p&gt;
&lt;p&gt;
&lt;div class=&quot;wp-caption aligncenter&quot;&gt;&lt;img src=&quot;http://blogs.gnome.org/aklapper/files/2009/11/bmo-description-patch.png&quot; alt=&quot;Screenshot&quot; /&gt;
&lt;p class=&quot;wp-caption-text&quot;&gt;Entering a new report&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;
Having users/customers reporting a bug in order to improve a product is great (always keep in mind that they do not need to spend the time on that). However the freetext input makes this sometimes complicated: A &amp;#8220;Steps to reproduce: Connect to foo.&amp;#8221; is vague when there are several ways offered by the UI to connect to foo and only one of these ways triggers the bug. Also, some testers (me, for example) love to simply follow braindead exact instructions without the need to think a lot. &lt;img src=&quot;http://blogs.gnome.org/aklapper/wp-content/mu-plugins/tango-smilies/tango/face-wink.png&quot; alt=&quot;;-)&quot; class=&quot;wp-smiley&quot; /&gt;&lt;br /&gt;
Hence Bugzilla now asks reporters to use an ordered list to provide exact steps. Yes, it &lt;i&gt;is&lt;/i&gt; helpful.&lt;br /&gt;Also, when it comes to reproducibility of issues an answer like &amp;#8220;Sometimes, but not too often&amp;#8221; is always a bit vague and does not tell how often the reporter had tried (once? five times?). Now we ask for numbers like &amp;#8220;maybe 3 out of 10 times&amp;#8221;.&lt;/p&gt;
&lt;p&gt;
&lt;div class=&quot;wp-caption aligncenter&quot;&gt;&lt;img src=&quot;http://blogs.gnome.org/aklapper/files/2009/11/bmo-brainstorm.png&quot; alt=&quot;Screenshot&quot; width=&quot;440px&quot; /&gt;
&lt;p class=&quot;wp-caption-text&quot;&gt;New &amp;#8220;Moved to Brainstorm&amp;#8221; answer&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;
Closing valid enhancement requests as INVALID just because they are better suited for &lt;a href=&quot;http://maemo.org/community/brainstorm/&quot;&gt;maemo.org Brainstorm&lt;/a&gt; always sounded a bit rude. We now have a MOVED resolution plus a nice one-click-button-and-done implemented.&lt;/p&gt;
&lt;p&gt;And third, we have a link to the &lt;a href=&quot;http://wiki.maemo.org/Bugsquad&quot;&gt;Bugsquad&lt;/a&gt; on the &lt;a href=&quot;https://bugs.maemo.org/&quot;&gt;maemo.org Bugzilla frontpage&lt;/a&gt; now.&lt;/p&gt;
&lt;p&gt;More news to come.&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;</description>
	<pubDate>Wed, 18 Nov 2009 20:24:07 +0000</pubDate>
</item>
<item>
	<title>Michael Hasselmann: First Miniature .debs sighted!</title>
	<guid>http://taschenorakel.de/michael/2009/11/16/first-miniature-debs-sighted/</guid>
	<link>http://taschenorakel.de/michael/2009/11/16/first-miniature-debs-sighted/</link>
	<description>&lt;p&gt;Thanks to &lt;a href=&quot;http://taschenorakel.de/mathias&quot;&gt;Mathias&lt;/a&gt;, Miniature is now suitable for &lt;a href=&quot;http://gitorious.org/miniature/miniature/trees/master/debian&quot;&gt;debian packaging&lt;/a&gt;. He also &lt;a href=&quot;http://maemo.org/packages/view/miniature/&quot;&gt;uploaded a first test balloon&lt;/a&gt; which at least allows you to move pieces around. Feedback &lt;a href=&quot;http://talk.maemo.org/showthread.php?t=34242&quot;&gt;is of course more than welcome&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;Personally I wish the board's cell size could have been made bigger, but 60x60 pixels is already the upper limit. It is now up to us - the Miniature team -  to come up with clever techniques to make the board handling as finger-friendly as possible.
&lt;/p&gt;</description>
	<pubDate>Mon, 16 Nov 2009 13:00:00 +0000</pubDate>
</item>
<item>
	<title>Peter Penz: Searching</title>
	<guid>tag:blogger.com,1999:blog-591179528445148028.post-3084242284346477546</guid>
	<link>http://ppenz.blogspot.com/2009/11/searching.html</link>
	<description>If I compare the number of files on my current hard disk with the number of files I had 10 years ago, I'm quite amazed. How to deal with this increased number of files is topic of a lot discussions. Tagging, searching, filtering, relations, virtual folders... - terms, where from a KDE-developer's point of view Nepomuk comes to mind, which provides already all the technical base. Still there is the task to integrate Nepomuk into applications, so that users out there are able to benefit from this great technology.&lt;br /&gt;&lt;br /&gt;It's a small step only, but at least one step further: During the last week I've integrated &lt;a href=&quot;http://www.thekidder.com/2009/08/22/gsoc-2009-wrap-up&quot;&gt;Addam Kidder's GSoC 2009 work&lt;/a&gt; into Dolphin. I know that some people don't see searching and filtering as &quot;the solution&quot; to deal with the increased number of files and I agree. Nepomuk offers a lot more, still the searching and filtering is a basic feature, that I personally require quite often during my workflow. The current state of the code is far from finished, still the basics are there now. As soon as the search-bar at the top gets focused, the search configurations pop up below as shown here:&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://2.bp.blogspot.com/_zDPqioLuxns/Sv6j1Y548ZI/AAAAAAAAAHg/XLSyabEI33w/s1600-h/searching0.png&quot;&gt;&lt;img src=&quot;http://2.bp.blogspot.com/_zDPqioLuxns/Sv6j1Y548ZI/AAAAAAAAAHg/XLSyabEI33w/s400/searching0.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5403936740504826258&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Searching for files having the tag &quot;Tree&quot; is very simple. Selecting &quot;Equal to&quot; and the corresponding tag in the combo-boxes beside &quot;Tag:&quot; has the following result:&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://3.bp.blogspot.com/_zDPqioLuxns/Sv6kwQUpsRI/AAAAAAAAAHo/TtAKDTvYJg0/s1600-h/searching1.png&quot;&gt;&lt;img src=&quot;http://3.bp.blogspot.com/_zDPqioLuxns/Sv6kwQUpsRI/AAAAAAAAAHo/TtAKDTvYJg0/s400/searching1.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5403937751813435666&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;One goal of the interface was to minimize the number of clicks that are required to specify a search query. That's the reason why per default at least three (hopefully) commonly used search criterions are visible. For sure it is possible to create very complex queries with more criterions too:&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://3.bp.blogspot.com/_zDPqioLuxns/Sv6myDP6XZI/AAAAAAAAAHw/7XPDplyoXLY/s1600-h/searching3.png&quot;&gt;&lt;img src=&quot;http://3.bp.blogspot.com/_zDPqioLuxns/Sv6myDP6XZI/AAAAAAAAAHw/7XPDplyoXLY/s400/searching3.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5403939981686889874&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Still I think users will use such complex search queries quite rarely. I had some discussions with Sebastian Trüg and Alessandro Sivieri regarding the &lt;a href=&quot;http://www.chimera-bellerofonte.eu/2009/11/nepomuk-meeting-results-and-plans&quot;&gt;faceted panel&lt;/a&gt;, that exists as prototype currently. The discussion convinced me that a common workflow for users might be:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Fill the search-bar with some keywords and trigger the searching.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Only if the number of returned files is too high, start a filtering step by step on those files.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;This might sound obvious, but has implications on the user interface:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;The number of clicks to activate a filter must be minimized.&lt;/li&gt;&lt;li&gt;It should still be powerful: The kind of filters should not be limited.&lt;/li&gt;&lt;li&gt;Doing filtering step by step means that the user interface may not get hidden after triggering the first filter.&lt;/li&gt;&lt;/ol&gt;Especially the combination of point 1 and 2 have requires doing some compromises. Limiting the number of clicks requires more screen space. As there is only a limited screen space, the number of shown filters must be decreased. Finding a balanced solution is quite tricky.&lt;br /&gt;&lt;br /&gt;I'm also unsure which data the breadcrumb should show: Visualizing a string like &quot;nepomuksearch:/+lastModified2009-11-13 +rating8 +tag:Peter&quot; to the user is something where I doubt Apple would do. Any suggestions would be welcome.&lt;br /&gt;&lt;br /&gt;That's also one purpose to write this blog entry: Please let me know your daily problems when trying to search and filter files from your hard disk. I hope that I can integrate your input until KDE 4.4... Thanks!&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/591179528445148028-3084242284346477546?l=ppenz.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sat, 14 Nov 2009 13:59:14 +0000</pubDate>
</item>
<item>
	<title>Karsten Bräckelmann: Back Open, Back to Bugzilla</title>
	<guid>http://blogs.gnome.org/kbrae/?p=48</guid>
	<link>http://blogs.gnome.org/kbrae/2009/11/13/back-open-back-to-bugzilla/</link>
	<description>&lt;p&gt;After an interesting ride internal, I&amp;#8217;m back to open and hacking Bugzilla &amp;#8212; at least for a couple weeks &amp;#8212; helping &lt;a href=&quot;http://blogs.gnome.org/aklapper/&quot;&gt;Andre&lt;/a&gt; with technical and coding stuff for &lt;a href=&quot;https://bugs.maemo.org/&quot;&gt;maemo.org Bugzilla&lt;/a&gt;, as the increasing amount of incoming bug reports takes more and more time. It&amp;#8217;s very nice to see the same old guys still around.&lt;/p&gt;
&lt;p&gt;My priority tasks are first some quick, much needed tweaks to the current version. Then on to new lands, getting Bugzilla 3.4 in shape for &lt;a href=&quot;http://maemo.org/&quot;&gt;maemo.org&lt;/a&gt;. Stay tuned.&lt;/p&gt;</description>
	<pubDate>Fri, 13 Nov 2009 19:31:46 +0000</pubDate>
</item>
<item>
	<title>Michael Hasselmann: Qt 4.6 for Maemo: It works!</title>
	<guid>http://taschenorakel.de/michael/2009/11/11/qt-46-maemo-it-works/</guid>
	<link>http://taschenorakel.de/michael/2009/11/11/qt-46-maemo-it-works/</link>
	<description>&lt;p&gt;Today at work, &lt;a href=&quot;http://amigadave.blogspot.com&quot;&gt;David King&lt;/a&gt; kindly informed me that there was some new &lt;a href=&quot;http://maemo.org/packages/view/libqt4-maemo5-dev/&quot;&gt;Qt package in extras-devel&lt;/a&gt;. This could only mean one thing - I immediately fired up my scratchbox environment and installed the packages, trying to confirm that this new version would run with &lt;a href=&quot;http://github.com/amigadave/qlom&quot;&gt;Qlom&lt;/a&gt;. And in fact, it was &lt;a href=&quot;http://wiki.maemo.org/Miniature/Development/Qt4_for_Maemo5&quot;&gt;surprisingly painless&lt;/a&gt;. Thanks to autotroll, a simple QT_PATH env variable did all the magic, hooray!
&lt;/p&gt;
&lt;p&gt;Both of us were impressed with the UI improvements. It's certainly a big step forward regarding the Hildonisation of Qt on Maemo5. The application menues look correct now. Button sizes, colors, animations, etc - it all comes together nicely, finally.
&lt;/p&gt;
&lt;p&gt;There are still some widgets that need more work, but for a tech preview this is a pleasant surprise. 
&lt;/p&gt;
&lt;p&gt; &lt;div class=&quot;image&quot;&gt; &lt;a href=&quot;http://taschenorakel.de/pictures/screenshots/2009/11/11/miniature_qt46_n900.png&quot;&gt; &lt;img align=&quot;right&quot; src=&quot;http://taschenorakel.de/media/preview/192/pictures/2009/11/11/miniature_qt46_n900.png&quot; alt=&quot;Miniature&quot; title=&quot;Miniature&quot; border=&quot;1&quot; hspace=&quot;10&quot; vspace=&quot;5&quot; /&gt; &lt;/a&gt; &lt;/div&gt;On another note, the timing for the Miniature project could not have been much better. We immediately switched to Qt 4.6, and it even runs on the N900. It feels good to know that we can stop using hacks and that we can start to do (most) things properly, staying as cross-platform as possible. Needless to say, &lt;a href=&quot;http://twitter.com/quimgil/status/5629092014&quot;&gt;Quim was happy, too&lt;/a&gt;.
&lt;/p&gt;</description>
	<pubDate>Wed, 11 Nov 2009 22:30:00 +0000</pubDate>
</item>
<item>
	<title>Murray Cumming: Graphs from valgrind’s massif</title>
	<guid>http://www.murrayc.com/blog/?p=1053</guid>
	<link>http://www.murrayc.com/blog/permalink/2009/11/10/graphs-from-valgrinds-massif/</link>
	<description>&lt;p&gt;Valgrind&amp;#8217;s &lt;a href=&quot;http://valgrind.org/docs/manual/ms-manual.html#ms-manual.running-massif&quot;&gt;massif&lt;/a&gt; tool tracks how much memory an application uses over time, allowing you to see leaks. Previous versions produced pretty graphs. For instance, see the &lt;a href=&quot;http://library.gnome.org/devel/optimization-guide/2.28/optimization-massif-TBL-interpreting-results.html.en&quot;&gt;graph in this out-dated GNOME tutorial about massif&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;However, massif&amp;#8217;s behaviour has changed and those graphs are no longer generally appropriate. But they were nice. So I hacked a copy of the current ms_print perl code, producing &lt;a href=&quot;http://github.com/murraycu/massif_grapher&quot;&gt;massif_grapher&lt;/a&gt;. Forgive me for my perl code.&lt;/p&gt;
&lt;p&gt;I used perl&amp;#8217;s &lt;a href=&quot;http://search.cpan.org/dist/GDGraph/Graph.pm&quot;&gt;GD::Graph&lt;/a&gt; module. It worked but it&amp;#8217;s a little eccentric. The image size is hard-coded and needs to be increased in the code when Gd::Graph complains that the vertical or horizontal space is too small, if you have too many data points.&lt;/p&gt;
&lt;p&gt;massif_grapher.pl outputs a massif_pretty.png file:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;There&amp;#8217;s a &lt;strong&gt;simple graph&lt;/strong&gt; (the default) that just shows the stack and heap allocations, splitting the heap up into useful and extra (allocated as an optimization) . It doesn&amp;#8217;t mention any functions. See this &lt;a href=&quot;http://github.com/murraycu/massif_grapher/blob/master/example_massif.out_simple.png&quot;&gt;example&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;And there&amp;#8217;s a &lt;strong&gt;detailed graph&lt;/strong&gt; (via &amp;#8211;detailed) that tries to show the old-style cumulative graph, with color for each allocating function. See this &lt;a href=&quot;http://github.com/murraycu/massif_grapher/blob/master/example_massif.out_detailed.png&quot;&gt;example&lt;/a&gt;. I won&amp;#8217;t put it directly in my blog because their&amp;#8217;s some obviously weird stuff happening at the top. Also, the legend needs to be reversed so it&amp;#8217;s easier to associate the functions with the blocks on the graph. Patches welcome. You&amp;#8217;ll get weird results if you don&amp;#8217;t specify&amp;#8211;detailed-freq=1 to massif.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Time will tell if this is useful.&lt;/p&gt;
&lt;p&gt;Other useful massif tools:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.eclipse.org/linuxtools/projectPages/valgrind/&quot;&gt;Eclipse Linux Tools&amp;#8217; valgrind support&lt;/a&gt;: Scroll down to see the video for their massif support. This allows you to jump right to the code. Useful if you are using Eclipse.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://massiftool.sourceforge.net/&quot;&gt;massiftool&lt;/a&gt;: A Qt-based application for navigating massif snapshot data.&lt;/li&gt;
&lt;/ul&gt;</description>
	<pubDate>Tue, 10 Nov 2009 14:18:59 +0000</pubDate>
</item>
<item>
	<title>André Klapper: GNOME 3.0: September 2010!</title>
	<guid>http://blogs.gnome.org/aklapper/?p=399</guid>
	<link>http://blogs.gnome.org/aklapper/2009/11/10/gnome-3-0-september-2010/</link>
	<description>&lt;p&gt;&lt;center&gt;&lt;img src=&quot;http://live.gnome.org/BrandGuidelines?action=AttachFile&amp;#038;do=get&amp;#038;target=GnomeBrandBook-FullLogo.png&quot; alt=&quot;GNOME logo&quot; /&gt;&lt;/center&gt;&lt;/p&gt;
&lt;p&gt;After collecting some feedback, the GNOME Release Team has finally decided on the release date for GNOME 3.0: &lt;a href=&quot;http://mail.gnome.org/archives/devel-announce-list/2009-November/msg00001.html&quot;&gt;It will be September 2010&lt;/a&gt;.&lt;br /&gt;To take a look again at the GNOME 3 plan that was released in April 2009: &lt;a href=&quot;http://live.gnome.org/ThreePointZero/Plan&quot;&gt;Click here.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://mail.gnome.org/archives/devel-announce-list/2009-November/msg00002.html&quot;&gt;New module decisions for GNOME 2.30 were also made of course.&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Tue, 10 Nov 2009 11:16:07 +0000</pubDate>
</item>
<item>
	<title>Michael Hasselmann: Miniature - it moves!</title>
	<guid>http://taschenorakel.de/michael/2009/11/09/miniature-it-moves/</guid>
	<link>http://taschenorakel.de/michael/2009/11/09/miniature-it-moves/</link>
	<description>&lt;h1&gt; How it begun&lt;/h1&gt;
&lt;p&gt; &lt;div class=&quot;image&quot;&gt; &lt;a href=&quot;http://taschenorakel.de/pictures/screenshots/2009/11/08/miniature_on_n900.jpg&quot;&gt; &lt;img align=&quot;right&quot; src=&quot;http://taschenorakel.de/media/preview/192/pictures/2009/11/08/miniature_on_n900.jpg &quot; alt=&quot;Miniature&quot; title=&quot;Miniature&quot; border=&quot;1&quot; hspace=&quot;10&quot; vspace=&quot;5&quot; /&gt; &lt;/a&gt; &lt;/div&gt;When I read &lt;a href=&quot;http://talk.maemo.org/showthread.php?t=33764&quot;&gt;Quim's thread about the idea for a better Maemo chess app&lt;/a&gt; I knew I wanted to join the project. To me, it's all about the device and  the sparkling Hildon UX. I really &lt;em&gt;want&lt;/em&gt; a good chess app, for myself! I &lt;em&gt;want&lt;/em&gt; to play chess online, everywhere! And I want to analyze games as (OK, maybe after =p) they happen. No more &amp;quot;I'll check this position later&amp;quot; (we all know this rarely happens).
&lt;/p&gt;
&lt;p&gt;So I finally started last friday. At this point, &lt;a href=&quot;http://flors.wordpress.com/&quot;&gt;Quim&lt;/a&gt; and &lt;a href=&quot;http://talk.maemo.org/member.php?u=6326&quot;&gt;Andreas&lt;/a&gt; had already created a &lt;a href=&quot;http://wiki.maemo.org/Miniature&quot;&gt;beautiful, content-rich wiki page&lt;/a&gt;. It took a while for me to digest it all, and I added information where appropiate.
&lt;/p&gt;

&lt;h1&gt; Kick-starting the development&lt;/h1&gt;
&lt;p&gt;Andreas had registered a garage project, but we eventually decided to use gitorious &lt;a href=&quot;http://gitorious.org/miniature&quot;&gt;for our repository&lt;/a&gt;. Gitorious' UI definitely improved over the recent months, and the possibility to have teams working on a single project - also known as not-so-extreme-dvcs-development - makes gitorious a better choice than &lt;a href=&quot;http://taschenorakel.de/michael/2009/02/19/power-github/&quot;&gt;github&lt;/a&gt;, at the moment.
&lt;/p&gt;
&lt;p&gt;Saturday night (what better things to do than coding some Qt - my soul will be forever lost) I had a first running example (see screenshot). Currently, Miniature can move between positions, using next/prev menu navigation (we don't need this functionality per se, but it's perhaps a good demonstration that the simple approach I took works).
&lt;/p&gt;
&lt;p&gt;So no matter the toolkit, no matter the outdated packages or the endless confusion I had with the various Qt repos at gitorious - this project is really fun! Hopefully we get to make a 0.1 release soon.
&lt;/p&gt;</description>
	<pubDate>Mon, 09 Nov 2009 00:20:00 +0000</pubDate>
</item>
<item>
	<title>Peter Penz: Information Panel and Tooltips</title>
	<guid>tag:blogger.com,1999:blog-591179528445148028.post-2358355005500017706</guid>
	<link>http://ppenz.blogspot.com/2009/11/information-panel-and-tooltips.html</link>
	<description>Dolphin for KDE 4.4 will provide a refactored information panel and refactored tooltips. The goals of the refactoring have been:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Show the same data in the information panel and the tooltips. Up to now the information panel did not provide any information about the permissions or the owner of a file. The tooltips have shown this kind of information already, but they did not provide informations like rating, comments or tags.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Prevent a possible blocking of the user interface, even when a slow Nepomuk backend or a buggy Strigi analyzer is installed. Although in KDE 4.3 some improvements had been done already, there have been still problems in this regard especially for tooltips.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Improve the layout of the information. The rating, comment and tags information are not handled in a special manner anymore.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Simplify the interface for editing tags and comments.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Although there is still a lot of finetuning necessary until KDE 4.4, it is obvious already that the tooltips...&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://2.bp.blogspot.com/_zDPqioLuxns/SvR1T1EEqZI/AAAAAAAAAHY/JqruXlGWa9Y/s1600-h/tooltip.png&quot;&gt;&lt;img src=&quot;http://2.bp.blogspot.com/_zDPqioLuxns/SvR1T1EEqZI/AAAAAAAAAHY/JqruXlGWa9Y/s400/tooltip.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5401070836646193554&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;... show the same information as the information panel:&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://3.bp.blogspot.com/_zDPqioLuxns/SvR1PUo_beI/AAAAAAAAAHQ/Rm5ykHAqBXM/s1600-h/information_panel.png&quot;&gt;&lt;img src=&quot;http://3.bp.blogspot.com/_zDPqioLuxns/SvR1PUo_beI/AAAAAAAAAHQ/Rm5ykHAqBXM/s400/information_panel.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5401070759223193058&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Originally it was planned to move the refactored widget to kdelibs, so that applications like Mailody, Gwenview and Okular can show the informations in a similar way. However there have been some usecases especially in combination with Gwenview, where the interface of widget was not sufficient yet. So we decided to leave the widget in Dolphin for KDE 4.4, but I'm confident that we find a good solution until KDE 4.5.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/591179528445148028-2358355005500017706?l=ppenz.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Fri, 06 Nov 2009 20:17:45 +0000</pubDate>
</item>
<item>
	<title>David King: Packaging Glom for Maemo 5</title>
	<guid>tag:blogger.com,1999:blog-5721789612701680617.post-305687999012079663</guid>
	<link>http://amigadave.blogspot.com/2009/11/packaging-glom-for-maemo-5.html</link>
	<description>I have finally got Glom packaged for Maemo 5. It is currently in &lt;a href=&quot;http://wiki.maemo.org/Extras-devel&quot;&gt;extras-devel&lt;/a&gt; and is installable from the Application Manager. This took quite a bit of work, which I put down to not knowing enough auto-fu. However, the Debian packages are now &lt;a href=&quot;http://wiki.maemo.org/Documentation/Maemo_5_Developer_Guide/Packaging%2C_Deploying_and_Distributing/Installing_under_opt_and_MyDocs&quot;&gt;/opt-ified&lt;/a&gt;, and the DBus &lt;span&gt;.service&lt;/span&gt; file and &lt;span&gt;.desktop&lt;/span&gt; file are installed to the correct locations on Maemo, which gives working application launcher icons. The process for doing this is not particularly well-documented (the best &lt;a href=&quot;http://maemo.org/maemo_release_documentation/maemo4.1.x/node7.html&quot;&gt;documentation is from Diablo&lt;/a&gt;), so here is a quick list of what the average (moderately complex desktop application) Debian package would need in order to be modified for Maemo:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://maemo.gitorious.org/maemo-af/maemo-optify/blobs/master/README&quot;&gt;Maemo-optify support&lt;/a&gt;. This involves running &lt;span&gt;maemo-optify&lt;/span&gt; just before &lt;span&gt;dh_builddeb&lt;/span&gt;  is run, and adding maemo-optify to the package's &lt;span&gt;Build-Depends&lt;/span&gt;. For CDBS packages, this can be performed in the &lt;span&gt;binary-install&lt;/span&gt; target. Glom produces several binary packages from a single source package, and &lt;span&gt;maemo-optify&lt;/span&gt; is run for each binary package to be optified. There are alternatives to running &lt;span&gt;maemo-optify&lt;/span&gt;, but it was something that I wanted to try out, and it worked.&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://maemo.org/maemo_release_documentation/maemo4.1.x/node7.html#SECTION00791000000000000000&quot;&gt;DBus .service file and .desktop file modifications&lt;/a&gt;. This involves adding a &lt;span&gt;X-Osso-Service&lt;/span&gt; line to the .desktop file, e.g. &lt;span&gt;X-Osso-Service=org.maemo.glom&lt;/span&gt;. Then, a DBus .service file must be created, with the same service identifier, e.g. &lt;span&gt;Name=org.maemo.glom&lt;/span&gt;. The paths for installation of these files can be obtained via pkg-config from osso-af-settings (do not forget to add it to the Build-Depends of the package). My &lt;a href=&quot;http://git.gnome.org/cgit/glom/commit/?id=3ed10d14e8bc40b9b0f9a3fe04110952c1092b9b&quot;&gt;changes to Glom are in git&lt;/a&gt; (and a patch in the Glom package). The application must respond to DBus events if it is started in this way, and the simplest way to do this is to pass the DBus service name as a parameter to &lt;span&gt;osso_initialize()&lt;/span&gt;, from &lt;a href=&quot;http://maemo.org/api_refs/5.0/5.0-final/libosso/group__Init.html&quot;&gt;libosso&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://maemo.org/maemo_release_documentation/maemo4.1.x/node7.html#SECTION007100000000000000000&quot;&gt;Maemo-specific MIME-type modifications&lt;/a&gt;. Assuming that an application already installs MIME-type information and desktop files, and updates the databases correctly, there is one modification that can make things nicer on Maemo. There is an &lt;a href=&quot;http://git.gnome.org/cgit/glom/commit/?id=77d3baa10097e52b4aadedfb6a3e3c7650a83ef1&quot;&gt;additional category that can be added&lt;/a&gt; to the MIME-type description. The change is safely ignored on non-Maemo-platforms.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Atypically, Glom links to libgettextpo (most packages that use gettext for translations do not need to do this), and the package list on an N900 and in the SDK/package autobuilder is different, such that the required package does not exist on the N900. Rather than packaging gettext or libgettextpo for the N900, I decided to &lt;a href=&quot;http://git.gnome.org/cgit/glom/commit/?id=9323198236efa0e7bc212aa1b6780a4b84b83f82&quot;&gt;statically link to the library on Maemo only&lt;/a&gt;. This neatly solves the problem, and only increases the binary size by a few kB.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5721789612701680617-305687999012079663?l=amigadave.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Wed, 04 Nov 2009 20:01:01 +0000</pubDate>
</item>
<item>
	<title>David King: Fooshies (and corals)</title>
	<guid>tag:blogger.com,1999:blog-5721789612701680617.post-2917550248681362121</guid>
	<link>http://amigadave.blogspot.com/2009/11/fooshies-and-corals.html</link>
	<description>&lt;a href=&quot;http://1.bp.blogspot.com/_tO6RkouAM6k/Su313R4cNBI/AAAAAAAAAAM/geBNfv1E_hI/s1600-h/_mg_1797.jpg&quot;&gt;&lt;img src=&quot;http://1.bp.blogspot.com/_tO6RkouAM6k/Su313R4cNBI/AAAAAAAAAAM/geBNfv1E_hI/s320/_mg_1797.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5399241858328835090&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;It has now been ten months since our move, and the tanks are finally starting to look presentable. Over the last couple of months I have also been getting in touch with various specialist breeders and importers across Germany, as all three of my display tanks were very bare up until very recently, as we concentrated on acquiring new furniture. After many emails, I have finally managed to find a friendly marine importer who had one of my favourite corals in stock: &lt;span&gt;Duncanopsammia axifuga&lt;/span&gt;. It is probably one of the easiest corals I have ever kept, being undemanding in the lighting department and very hardy, requiring only the occasional feeding on a regular basis.&lt;br /&gt;&lt;br /&gt;Our freshwater aquariums have also been looking up, with the addition of gravel and décor to both. The Lake Malawi Mbuna travelled well compared to the South American fish, and the yellow Lab (&lt;span&gt;Labidochromis caeruleus&lt;/span&gt;) fry were especially resilient. As I am very limited on space, I have been raising them in my Rift Lake themed display tank which, unfortunately, means that I now have to find new homes for them.&lt;br /&gt;&lt;a href=&quot;http://3.bp.blogspot.com/_tO6RkouAM6k/Su32IevWAxI/AAAAAAAAAAU/t1keDod4G48/s1600-h/_mg_1791.jpg&quot;&gt;&lt;img src=&quot;http://3.bp.blogspot.com/_tO6RkouAM6k/Su32IevWAxI/AAAAAAAAAAU/t1keDod4G48/s320/_mg_1791.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5399242153838117650&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;The planted aquarium took the longest to recover, as many of the plants suffered during transport. It took a long time to find a suitable substrate so  the plants were left to float at the top of the tank for many months after the move. I have had to put this tank at the top of the list for restocking because I keep keyhole cichlids (&lt;span&gt;Cleithracara maronii&lt;/span&gt;), who are renowned for being extremely shy to the point where the sight of a neon tetra can send them into hiding, let alone a big, scary person walking into the room. Therefore, they require dither fish: any peaceful, small, schooling species which will indicate that there is no danger while they are out and about.&lt;br /&gt;&lt;a href=&quot;http://2.bp.blogspot.com/_tO6RkouAM6k/Su32SbX5AiI/AAAAAAAAAAc/gxbJtJfD6Vo/s1600-h/_mg_1794.jpg&quot;&gt;&lt;img src=&quot;http://2.bp.blogspot.com/_tO6RkouAM6k/Su32SbX5AiI/AAAAAAAAAAc/gxbJtJfD6Vo/s320/_mg_1794.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5399242324733133346&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;As for the quarantine tank, for the last four months, &lt;a href=&quot;http://blog.jpetersen.org/&quot;&gt;Jan Arne&lt;/a&gt; and &lt;a href=&quot;http://jpetersen.org/beverly/&quot;&gt;Bev&lt;/a&gt; have been borowing it to try out fishkeeping; I think they are both addicted now.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5721789612701680617-2917550248681362121?l=amigadave.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sun, 01 Nov 2009 23:03:03 +0000</pubDate>
</item>
<item>
	<title>Michael Hasselmann: Wt - a Qt-ish web toolkit written in C++</title>
	<guid>http://taschenorakel.de/michael/2009/10/31/wt-qt-ish-web-toolkit-written-c/</guid>
	<link>http://taschenorakel.de/michael/2009/10/31/wt-qt-ish-web-toolkit-written-c/</link>
	<description>&lt;p&gt;First of all, &lt;a href=&quot;http://www.webtoolkit.eu/wt&quot;&gt;C++ for web apps&lt;/a&gt; doesn't necessarily make it easier to write them. Compared to other solutions (let's say Django) you'll end up writing a lot more code. And you have to be very very careful with memory leaks.
&lt;/p&gt;
&lt;p&gt;But that isn't the point. The main advantage of this framework is how close it is to desktop applications. Porting your Qt desktop application to the web is certainly easier with Wt than with any other solution, as you keep most of the widget API and also the signal and slots paradigm (which should allow to port the app reusing the same business logic as on the desktop).
&lt;/p&gt;
&lt;p&gt;Also, this is the first time I could attach a powerful debugger, namely gdb, to a web app and debug it is as if it were a normal desktop app. Together with the compiler-guaranteed type safety this is a huge improvement for code robustness.
&lt;/p&gt;

&lt;h2&gt; A toolkit that actually uses C++&lt;/h2&gt;
&lt;p&gt;There are also some distinct advantages of this toolkit over Qt itself:
&lt;/p&gt;
&lt;ul&gt;
 &lt;li&gt;
     no MOC preprocessing (unless you integrate it with your Qt libraries, of course),
 &lt;/li&gt;

 &lt;li&gt;
     boost::signals &amp;amp; boost::bind wrapped in an easy-to-use WSignal, keeping most of the boost API accessible for the user. Which means: the compiler can check whether your signal connections will work! 
 &lt;/li&gt;

 &lt;li&gt;
     boost::any instead of QVariant: another big advantage. Boost::any is type-inferred using template voodoo so again, the compiler can check its correct usage for you. Getting values out sadly requires a (static) cast it seems.
 &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt; Installation&lt;/h2&gt;
&lt;p&gt;The fastest way is to simply get the source from the &lt;a href=&quot;http://www.webtoolkit.eu/git/wt.git&quot;&gt;git repo&lt;/a&gt; and to &lt;a href=&quot;http://www.webtoolkit.eu/wt/doc/reference/html/Installation.html&quot;&gt;follow the instructions&lt;/a&gt;:
&lt;/p&gt;
&lt;ul&gt;
 &lt;li&gt;
     (enter your jhbuild shell if your project happens to use any GNOME stuff)
 &lt;/li&gt;

 &lt;li&gt;
     enter the cloned git repo
 &lt;/li&gt;

 &lt;li&gt;
     &amp;quot;$ mkdir build&amp;quot;
 &lt;/li&gt;

 &lt;li&gt;
     &amp;quot;$ cd build #dont ignore this, it helps later on!&amp;quot;
 &lt;/li&gt;

 &lt;li&gt;
     &amp;quot;$ cmake -i ../ #interactive mode asks lots of stupid things but also various path settings!&amp;quot;
 &lt;/li&gt;

 &lt;li&gt;
     &amp;quot;$ make&amp;quot;
 &lt;/li&gt;

 &lt;li&gt;
     &amp;quot;$ make install&amp;quot;
 &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For your own projects make sure to link against all the needed Wt libs:
   libwt (core), libwtext (if you want to use anything from Wt::Ext, see below), libwthttp (if you want to build apps with inbuilt web server, quite helpful). If you happen to use autotools then you might want to include &lt;a href=&quot;http://www.gnu.org/software/gsl/manual/html_node/Autoconf-Macros.html&quot;&gt;AC_CHECK_LIB&lt;/a&gt; macros into your configure.ac. I had troubles finding non-name-mangled function names, but &amp;quot;$ readelf --dynamic --symbols  /path/to/lib/lib.so | grep -v _Z | tail&amp;quot; should help.
&lt;/p&gt;

&lt;h2&gt; ExtJS&lt;/h2&gt;
&lt;p&gt;Wt wrappes a highly advanced (in terms of bringing desktop UX to the web) Javascript framework - &lt;a href=&quot;http://extjs.com&quot;&gt;ExtJs&lt;/a&gt;. Sadly, it is also big (roughly 80kb have to travel to the client first) and very buggy. It would seem that you could use ExtJS and make it use jQuery instead, perhaps that's worth a try. For now I disabled ExtJS in my little project, since I couldn't debug some of its issues. The Wt-native widgets seem to be quite solid in comparison (even if they look a bit boring).
&lt;/p&gt;
&lt;p&gt;The installation instructions that come with Wt don't tell you how to install ExtJS, so here is what I found out:
&lt;/p&gt;
&lt;ul&gt;
 &lt;li&gt;
      &lt;a href=&quot;http://www.extjs.com/products/extjs/&quot;&gt;download ExtJS framework&lt;/a&gt; (you probably want version 3),
 &lt;/li&gt;

 &lt;li&gt;
     copy it into your chosen wt webroot (let's say &amp;quot;/var/www/wt/&amp;quot;), consult your CMakeCache.txt,
 &lt;/li&gt;

 &lt;li&gt;
     extract the zip archive,
 &lt;/li&gt;

 &lt;li&gt;
     THEN copy /var/www/wt/ext/adapter/ext/ext-base.js to /var/www/wt/ext/ (the error message when starting the web server gave that hint away),
 &lt;/li&gt;

 &lt;li&gt;
     make sure your project is linked against the libwtext library.
 &lt;/li&gt;
&lt;/ul&gt;</description>
	<pubDate>Sat, 31 Oct 2009 00:00:00 +0000</pubDate>
</item>
<item>
	<title>Murray Cumming: Trying qmake and CMake</title>
	<guid>http://www.murrayc.com/blog/?p=1028</guid>
	<link>http://www.murrayc.com/blog/permalink/2009/10/28/trying-qmake-and-cmake/</link>
	<description>&lt;p&gt;Until this week I was not familiar with &lt;a href=&quot;http://doc.trolltech.com/4.5/qmake-manual.html&quot;&gt;qmake&lt;/a&gt; and &lt;a href=&quot;http://www.cmake.org/&quot;&gt;CMake&lt;/a&gt; because I am a fairly satisfied user of autotools. I have not forgotten how strange it was when I first learned it, when there was no decent documentation, but things are much better now. I feel at home with it and I like how other systems and distros expect the standard &amp;#8220;configure;make all install&amp;#8221; steps. I am definitely biased against the use of other build systems.&lt;/p&gt;
&lt;p&gt;However, these days I have to deal with code that uses qmake and CMake and I can&amp;#8217;t just be stubbornly ignorant. So I tried an experiment. I created branches of a little (but real-world) project that uses Qt and an extra library via pkg-config: &lt;a href=&quot;http://github.com/murraycu/qlom/tree/qlom_qmake&quot;&gt;qlom with qmake&lt;/a&gt;, and &lt;a href=&quot;http://github.com/murraycu/qlom/tree/qlom_cmake&quot;&gt;qlom with cmake&lt;/a&gt;. The &lt;a href=&quot;http://github.com/murraycu/qlom&quot;&gt;master&lt;/a&gt; branch uses non-recursive autotools.&lt;/p&gt;
&lt;p&gt;I was not impressed. Please do add comments to correct me. I&amp;#8217;d particular like patches that make my errors crystal clear and prove that it&amp;#8217;s all much better than I think. I am capable of admitting error and changing my mind when appropriate.&lt;/p&gt;
&lt;h3&gt;Bad Documentation. Weird Syntax&lt;/h3&gt;
&lt;p&gt;Just like autotools, neither were easy to get started with. The documentation is fragmented, unclear, and incomplete. I found qmake easier than CMake, but that&amp;#8217;s probably just because qmake does much less. Nevertheless, CMake has a real problem with documentation and in general, as a widely-used open-source project, it deserves a better infrastructure.&lt;/p&gt;
&lt;p&gt;They both suffer from one major problem shared by autotools: They have evolved over enough time that Google will happily return out-of-date examples and documentation, making the syntax seem more varied than it really is. I wish that autotools could force me not to use deprecated syntax. I don&amp;#8217;t know if qmake and CMake can.&lt;/p&gt;
&lt;p&gt;As with autotools there&amp;#8217;s a heavy dose or arbitrariness:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;File names: autotools&amp;#8217;s configure.ac and Makefile.am seem more logical than SomeProject.pro (qmake) or CMakeLists.txt (CMake)&lt;/li&gt;
&lt;li&gt;Syntax: m4 (used by autotools) is a crappy language, but at least it&amp;#8217;s a mature one that&amp;#8217;s used outside of autotools. I understand the wish to have no dependencies, but &amp;#8220;invent a programming language&amp;#8221; is always a bad design decision.&lt;br /&gt;
And autotools don&amp;#8217;t require anything but make when building from a tarball. qmake and CMake seem to require that they are installed even when building from a tarball. I would have liked to see Python used because it&amp;#8217;s easily available on all machines that would create source tarballs.&lt;br /&gt;
CMake&amp;#8217;s non-case-sensitive function names and keywords are personally annoying to me, because I like code to have a consistent style.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;No Respect For pkg-config&lt;/h3&gt;
&lt;p&gt;I am dismayed that CMake expects people to &lt;a href=&quot;http://www.itk.org/Wiki/CMake:How_To_Find_Libraries&quot;&gt;write code for &amp;#8220;Find&amp;#8221; modules&lt;/a&gt; for each library they might use, while having poor support for the generic pkg-config solution. A project&amp;#8217;s list of dependencies is data, not an excuse to write code. More code means more problems.&lt;/p&gt;
&lt;p&gt;In fact, after several days of trying, I still &lt;a href=&quot;http://www.murrayc.com/blog/feed/In fact, after several days of trying, I still can't figure out how to use pkg-config with cmake.&quot;&gt;can&amp;#8217;t figure out how to use pkg-config with cmake&lt;/a&gt;, so my glom_cmake branch is not finished yet.&lt;/p&gt;
&lt;p&gt;Most libraries provide the simple .pc files these days. The autotools PKG_CHECK_MODULES() macro makes it very easy to check for several dependencies at once. CMake feels too much like the bad old 90s when we suffered fragile copy-paste-hacked config scripts, custom m4, macros and verbose build files with separate CFLAGS and LIBS variables for each dependency, and inconsistent release-version and API-version checking.&lt;/p&gt;
&lt;p&gt;I understand that pkg-config is not popular on Windows or MacOS, and that those are awkward platforms to work with, but:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The real solution to poor dependency information on Windows and MacOS is to encourage the use of pkg-config, so it can fix the problem there like it fixed the problem for Linux. That&amp;#8217;s entirely possible for the cross-platform libraries that are typically open source. And pkg-config would be easy to port.&lt;/li&gt;
&lt;li&gt;The platform-specific libraries on Windows and MacOs don&amp;#8217;t need any cross-platform support in the build system.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;CMake&amp;#8217;s use of scripts just spreads the chaos to Linux instead of keeping things simple on Linux and improving the other platforms too.&lt;/p&gt;
&lt;h3&gt;No Configure Stage&lt;/h3&gt;
&lt;p&gt;With qmake, I really miss having a proper configure stage, with the resulting config.h so my code can use ifdefs. I like seeing a list of documented build options from configure &amp;#8211;help, which neither qmake or cmake offer.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.itk.org/Wiki/CMake_HowToDoPlatformChecks&quot;&gt;CMake can generate a config.h&lt;/a&gt;, at least. However,&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;There are no default checks, so you must specify the common stuff always, making the build file more verbose.&lt;/li&gt;
&lt;li&gt;You can&amp;#8217;t just generate the config.h.in, as you can with autoheader when using autotools. There&amp;#8217;s no reason to specify the defines in both CMakeFiles.txt/configure.ac and config.h.in.&lt;/li&gt;
&lt;li&gt;Arbitrarily, the config.h.in uses &amp;#8220;#cmakedefine SOMETHING 1&amp;#8243; instead of #undef SOMETHING as in autotools (now deprecated, unnecessary) config.h.in files. For anything other than booleans, there&amp;#8217;s an undocumented syntax such as #cmakedefine &amp;#8220;@PACKAGE_NAME@&amp;#8221;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Install is an Afterthought&lt;/h3&gt;
&lt;p&gt;Both CMake and qmake require explicit extra syntax to actually install the built executable. With autotools you get this for free when using the regular bin_PROGRAMS to specify the executable name, though libraries do need more explicit instructions to install the correct headers in the correct place.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;With qmake, this typically means that paths are hard-coded in the build files. That way lies pain.&lt;/li&gt;
&lt;li&gt;With CMake, it&amp;#8217;s easier, but you have to do &amp;#8220;make -DCMAKE_INSTALL_PREFIX=/opt/mystuff&amp;#8221; instead of autotool&amp;#8217;s simpler ./configure &amp;#8211;prefix=/opt/mystuff. autotools lists that option via &amp;#8220;configure &amp;#8211;help&amp;#8221;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Also, qmake and CMake have no make distcheck for making source tarball releases.&lt;/p&gt;
&lt;p&gt;This makes sense slightly because CMake (and maybe qmake) aim to support Windows, Mac, and Linux equally, and Windows has no real convention for installation of built-from-source binaries. CMake (and maybe qmake) generate convenient Visual Studio and X-Code project files, for instance. But the end results it that Linux and Linux conventions are not fully supported, so they feel like major regressions compared to autotools.&lt;/p&gt;
&lt;p&gt;(note: removed my nonsense with the TODO about the location of .o files.)&lt;/p&gt;
&lt;h3&gt;Summary&lt;/h3&gt;
&lt;p&gt;In summary, I think:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;qmake would only be used by Trolltech (now called &lt;span id=&quot;parent-fieldname-description&quot;&gt;Qt Development Frameworks) &lt;/span&gt;for their own projects, out of habit, or by users of Qt who are so unaware of other systems that they would just do whatever Qt&amp;#8217;s developers recommend.&lt;/li&gt;
&lt;li&gt;CMake isn&amp;#8217;t simpler, so it doesn&amp;#8217;t solve autotool&amp;#8217;s steep learning curve. It makes many thinks worse than autotools and its documentation is disconcertingly vague and incomplete. It&amp;#8217;s cross-platform dependency checking adds complication without solving the real problem. The best CMake experience is probably with a large monolithic project rather than a large dependency tree of modules. But I like modularity and reuse.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I understand the wish to support Windows and Mac-specific build systems such as Visual Studio and X-Code. I just don&amp;#8217;t like how qmake and cmake do that, and for me it&amp;#8217;s not worth making things worse on Linux. Still, I&amp;#8217;ll have to use these in some existing projects, so I&amp;#8217;m glad that I&amp;#8217;m more familiar with them now.&lt;/p&gt;</description>
	<pubDate>Wed, 28 Oct 2009 09:34:43 +0000</pubDate>
</item>
<item>
	<title>Michael Hasselmann: Show me your home screen!</title>
	<guid>http://taschenorakel.de/michael/2009/10/25/show-me-your-home-screen/</guid>
	<link>http://taschenorakel.de/michael/2009/10/25/show-me-your-home-screen/</link>
	<description>&lt;p&gt;To me the empty home screen* of the N900 looked like an invitation, so I tried to fill it up with useless stuff as quickly as possible.  The home screen configuration menu offers app launchers (shortcuts), bookmarks, widgets and contacts. Let's go through all four options in detail:
&lt;/p&gt;
&lt;ul&gt;
 &lt;li&gt;&lt;p&gt;Shortcuts: I almost always have some tasks running in the background so launching an application would usually take three to four finger touches. Therefore the app launchers are extremely helpful to me.
&lt;/p&gt;

 &lt;/li&gt;

 &lt;li&gt;&lt;p&gt;Bookmarks: The idea is neat but not essential. The browser starts with a list of bookmarks anyway (how convenient).
&lt;/p&gt;

 &lt;/li&gt;

 &lt;li&gt;&lt;p&gt;Desktop widgets: I never believed in them, but the calendar widget might easily change this! It shows the current day and up to five upcoming events. It's a great addition to the fantastic calendar app.
&lt;/p&gt;

 &lt;/li&gt;

 &lt;li&gt;&lt;p&gt;Contact shortcuts: On this device, everything focuses on integrated contact management. For once, keeping your contacts up-to-date is actually useful and not just a time sink, simply because you can use them from almost everywhere. The logical conclusion follows: you can also add shortcuts to contacts on your home screen! It will show online status, avatar and nick of the chosen contact. Nice!
&lt;/p&gt;

 &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So what's on my current home screen?
&lt;/p&gt;
&lt;div class=&quot;image&quot;&gt;&lt;a href=&quot;http://taschenorakel.de/pictures/screenshots/2009/10/25/my_homescreen.png&quot;&gt;&lt;img align=&quot;right&quot; src=&quot;http://taschenorakel.de/media/preview/192/pictures/2009/10/25/my_homescreen.png&quot; alt=&quot;My current home screen&quot; title=&quot;My current home screen&quot; border=&quot;1&quot; hspace=&quot;10&quot; vspace=&quot;5&quot; /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;ul&gt;
 &lt;li&gt;
     Calendar widget,
 &lt;/li&gt;

 &lt;li&gt;
     two bookmarks,
 &lt;/li&gt;

 &lt;li&gt;
     home ip widget,
 &lt;/li&gt;

 &lt;li&gt;
     12 app launchers (from top left to bottom right): settings, app manager, terminal, media player, photos, chess, notes (nice app, too), e-mail (ugly icon, and potentially confusing), IM (why does this look like an e-mail icon?!), browser, address book, phone (I had to disable the &amp;quot;launch when rotating&amp;quot; feature since phone calls would stall and eventually force me into device restarts. Too buggy for now),
 &lt;/li&gt;

 &lt;li&gt;
     two contact shortcuts.
 &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I know - it looks as if this was a Symbian smartphone (that is, ugly and horribly crowded). But I like it this way, at least for now =)
&lt;/p&gt;
&lt;p&gt;So what's on your current home screen?
&lt;/p&gt;
&lt;p&gt; *:  I still think dashboard is a better name.
&lt;/p&gt;</description>
	<pubDate>Sun, 25 Oct 2009 20:30:00 +0000</pubDate>
</item>
<item>
	<title>Jan Arne Petersen: Fremantle Hildon Desktop</title>
	<guid>http://blog.jpetersen.org/?p=24</guid>
	<link>http://blog.jpetersen.org/2009/10/20/fremantle-hildon-desktop/</link>
	<description>&lt;p&gt;The source code of the Hildon Desktop for &lt;a href=&quot;http://www.maemo.org&quot;&gt;Maemo Fremantle&lt;/a&gt; including the hildon-deskop, libhildondesktop, hildon-home and hildon-status-menu components, which I worked on for the last year at &lt;a href=&quot;http://www.openismus.com&quot;&gt;Openismus&lt;/a&gt;, moved to a &lt;a href=&quot;http://maemo.gitorious.org/fremantle-hildon-desktop&quot;&gt;public git repository&lt;/a&gt; at &lt;a href=&quot;http://maemo.gitorious.org/&quot;&gt;maemo.gitorious.org&lt;/a&gt;. It is now easier to track the current developments or create your own modified version of the desktop for the &lt;a href=&quot;http://maemo.nokia.com/n900/&quot;&gt;N900&lt;/a&gt;.&lt;/p&gt;</description>
	<pubDate>Tue, 20 Oct 2009 18:49:46 +0000</pubDate>
</item>

</channel>
</rss>
