<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Toma&#039;s blog &#187; RSIBreak</title>
	<atom:link href="http://www.omat.nl/tag/rsibreak/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.omat.nl</link>
	<description>My Blogs.</description>
	<lastBuildDate>Wed, 28 Jul 2010 20:31:29 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Froscon Day 1.</title>
		<link>http://www.omat.nl/2009/08/22/froscon-day-1/</link>
		<comments>http://www.omat.nl/2009/08/22/froscon-day-1/#comments</comments>
		<pubDate>Sat, 22 Aug 2009 19:37:54 +0000</pubDate>
		<dc:creator>toma</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[FrOSCon]]></category>
		<category><![CDATA[Mailody]]></category>
		<category><![CDATA[RSIBreak]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[This year I decided to go to Froscon. I had planned to go the last couple of years, but I never actually did it. And I must admit that I like it very much. The differences with for example Fosdem are huge. The developer tracks are really of the level of Getting Things Done instead of talking about it. Also the location is quite ok. The rooms are tidy, I can sit perfectly (something I can't say about Fosdem), the heat in the rooms is bearable and also the acoustic is very good. Most tracks are in German, but some are in English. Just the right ones.

The rest of this blog is about the presentations I saw, so if you don't need those details, skip the rest ;-). The first presentation I saw was about the Spider engine for MySQL. Most of you know MyISAM and InnoDB. Spider is another one. This one makes it possible to store tables on different servers. The spider enabled server forwards the request to the remote server and passes it back to the requester. Not so useful you might think. Well, it also has the ability to forward sections of a table to different servers. Say you have 2000 records, you can store id 0-1000 on one server and 1000-2000 on another one. When a client requests id 1500, it will be passed on to the right server. As that server only holds 1000 records, the record is easily found and returned. For the client this whole process is transparent. You can imagine that searching for a keyword on two servers with half the records in parallel is much faster than searching it in one server which holds all records.

The second talk was about phpunit. This framework makes it possible to make unit tests for your php applications and libraries. He talked a lot about the reasons to do it and best practices. As I work on quite some php applications during day time, I think it makes sense to start using such a framework when possible. I think it also tells a bit about the matureness of an application when it contains unit tests. There are also some tools that can show which lines of your code are unittested. Something I did not know existed. I wonder if such a tool exists for C++ and if it does, what amount of lines are unittested within KDE libs. 

After that I attended the keynote about Cloud Computing. Simon Wardley is a prefect keynote speaker. He brought statistical graphs, fighting cats and Tom Cruise together in something like 369 slides, without getting boring for a second. Although the topic was about Cloud Computing, it gave a good insight about the evolution of a technological invention. From the invention through a product until it reaches a service and about how that cycle has all the room for improvements, related inventions. I think I'm going to watch the video of the presentation to get a good understanding of everything he explained. Presentation of the day in my book.

After that the only possibility is disappointment of course. And it was. The presentation about a new mysqltuner was not so good. She arrived late, the beamer would not cooperate nicely, the laptop had issues with the mysql server and the presentation was largely about what the current mysqltuner script is doing wrong and at 5 minutes before the finish line she started to very quickly show the version she has written. I don't consider the new version so much better, the mysqltuner script gives a nice summary of the state of your mysql server, after that you can start investigating what to do to make the thing faster. I don't think any script can give a complete overview about how to tune the mysql-server best. Ah well, she has improved the output of some things, so it's not that bad, I just expected more. Like output in html, a database which stores results over time, a deeper analysis of the most common queries, or whatever.

After that I returned to the main track where Alexandra Leisse had a talk about Community Building 101. It was something completely different and that was nice. I enjoyed the presentation very much, I think she used 5 slides for the whole presentation and they mostly contained pictures, hurray! She talked a lot about the aspects of maintaining a healthy community within a project. Some of that was really obvious, at least for me, but it's nice to have it spelled out, some things are not so obvious and I learned some new tricks. Maybe I'll now manage to create a community behind RSIBreak or Mailody ;-).

Finally I ended with a presentation about common mistakes in php unit testing. unfortunately it contained quite some overlap with the earlier presentation about phpunit, but that one too contained some things I did not know and things to remember when I ever start using testcases in PHP.

So tomorrow will be day 2. I'm looking forward to that. I made a list of things I want to attend, now the challenge is to not forget that list, like  i did today.
]]></description>
			<content:encoded><![CDATA[<p>This year I decided to go to Froscon. I had planned to go the last couple of years, but I never actually did it. And I must admit that I like it very much. The differences with for example Fosdem are huge. The developer tracks are really of the level of Getting Things Done instead of talking about it. Also the location is quite ok. The rooms are tidy, I can sit perfectly (something I can&#8217;t say about Fosdem), the heat in the rooms is bearable and also the acoustic is very good. Most tracks are in German, but some are in English. Just the right ones.</p>
<p>The rest of this blog is about the presentations I saw, so if you don&#8217;t need those details, skip the rest ;-). The first presentation I saw was about the Spider engine for MySQL. Most of you know MyISAM and InnoDB. Spider is another one. This one makes it possible to store tables on different servers. The spider enabled server forwards the request to the remote server and passes it back to the requester. Not so useful you might think. Well, it also has the ability to forward sections of a table to different servers. Say you have 2000 records, you can store id 0-1000 on one server and 1000-2000 on another one. When a client requests id 1500, it will be passed on to the right server. As that server only holds 1000 records, the record is easily found and returned. For the client this whole process is transparent. You can imagine that searching for a keyword on two servers with half the records in parallel is much faster than searching it in one server which holds all records.</p>
<p>The second talk was about phpunit. This framework makes it possible to make unit tests for your php applications and libraries. He talked a lot about the reasons to do it and best practices. As I work on quite some php applications during day time, I think it makes sense to start using such a framework when possible. I think it also tells a bit about the matureness of an application when it contains unit tests. There are also some tools that can show which lines of your code are unittested. Something I did not know existed. I wonder if such a tool exists for C++ and if it does, what amount of lines are unittested within KDE libs.</p>
<p>After that I attended the keynote about Cloud Computing. Simon Wardley is a prefect keynote speaker. He brought statistical graphs, fighting cats and Tom Cruise together in something like 369 slides, without getting boring for a second. Although the topic was about Cloud Computing, it gave a good insight about the evolution of a technological invention. From the invention through a product until it reaches a service and about how that cycle has all the room for improvements, related inventions. I think I&#8217;m going to watch the video of the presentation to get a good understanding of everything he explained. Presentation of the day in my book.</p>
<p>After that the only possibility is disappointment of course. And it was. The presentation about a new mysqltuner was not so good. She arrived late, the beamer would not cooperate nicely, the laptop had issues with the mysql server and the presentation was largely about what the current mysqltuner script is doing wrong and at 5 minutes before the finish line she started to very quickly show the version she has written. I don&#8217;t consider the new version so much better, the mysqltuner script gives a nice summary of the state of your mysql server, after that you can start investigating what to do to make the thing faster. I don&#8217;t think any script can give a complete overview about how to tune the mysql-server best. Ah well, she has improved the output of some things, so it&#8217;s not that bad, I just expected more. Like output in html, a database which stores results over time, a deeper analysis of the most common queries, or whatever.</p>
<p>After that I returned to the main track where Alexandra Leisse had a talk about Community Building 101. It was something completely different and that was nice. I enjoyed the presentation very much, I think she used 5 slides for the whole presentation and they mostly contained pictures, hurray! She talked a lot about the aspects of maintaining a healthy community within a project. Some of that was really obvious, at least for me, but it&#8217;s nice to have it spelled out, some things are not so obvious and I learned some new tricks. Maybe I&#8217;ll now manage to create a community behind RSIBreak or Mailody ;-).</p>
<p>Finally I ended with a presentation about common mistakes in php unit testing. unfortunately it contained quite some overlap with the earlier presentation about phpunit, but that one too contained some things I did not know and things to remember when I ever start using testcases in PHP.</p>
<p>So tomorrow will be day 2. I&#8217;m looking forward to that. I made a list of things I want to attend, now the challenge is to not forget that list, like  i did today.<br />
<!--break--></p>
]]></content:encoded>
			<wfw:commentRss>http://www.omat.nl/2009/08/22/froscon-day-1/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>New beta RSIBreak</title>
		<link>http://www.omat.nl/2009/07/12/new-beta-rsibreak/</link>
		<comments>http://www.omat.nl/2009/07/12/new-beta-rsibreak/#comments</comments>
		<pubDate>Sun, 12 Jul 2009 16:36:18 +0000</pubDate>
		<dc:creator>toma</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[RSIBreak]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[The past week I've worked hard to rewrite sections of RSIBreak. I've just released 0.10 beta 1.

This new version is based on the 0.9 version, which was basically a port to KDE4. This new version tries to be more stable and provide a better user experience. Because it is a beta, it would be nice to receive as much feedback as possible!

I've rewritten most of the full screen effects and updated them to be more KDE4 like. There is a new effect called 'Plasma effect', which let's you see the dashboard during a break.

The gray out effect does no longer fake transparency but uses the real stuff. Also the level of transparency is adjustable.

There is another new effect which only shows a passive popup during breaks, this serves like a permanent, but not intrusive, warning to take a break. Of course it will only disappear when you actually take that break...

Lots more tweaks and adjustments and bugfixes, just try it out...
]]></description>
			<content:encoded><![CDATA[<p>The past week I&#8217;ve worked hard to rewrite sections of RSIBreak. I&#8217;ve just released 0.10 beta 1.</p>
<p>This new version is based on the 0.9 version, which was basically a port to KDE4. This new version tries to be more stable and provide a better user experience. Because it is a beta, it would be nice to receive as much feedback as possible!</p>
<p>I&#8217;ve rewritten most of the full screen effects and updated them to be more KDE4 like. There is a new effect called &#8216;Plasma effect&#8217;, which let&#8217;s you see the dashboard during a break.</p>
<p>The gray out effect does no longer fake transparency but uses the real stuff. Also the level of transparency is adjustable.</p>
<p>There is another new effect which only shows a passive popup during breaks, this serves like a permanent, but not intrusive, warning to take a break. Of course it will only disappear when you actually take that break&#8230;</p>
<p>Lots more tweaks and adjustments and bugfixes, just try it out&#8230;<br />
<!--break--></p>
]]></content:encoded>
			<wfw:commentRss>http://www.omat.nl/2009/07/12/new-beta-rsibreak/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>RSIBreak 0.9.0 is out</title>
		<link>http://www.omat.nl/2008/11/19/rsibreak-090-out/</link>
		<comments>http://www.omat.nl/2008/11/19/rsibreak-090-out/#comments</comments>
		<pubDate>Wed, 19 Nov 2008 19:19:21 +0000</pubDate>
		<dc:creator>toma</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[RSIBreak]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Get it <a href="http://www.rsibreak.org">here!</a>]]></description>
			<content:encoded><![CDATA[<p>Get it <a href="http://www.rsibreak.org">here!</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.omat.nl/2008/11/19/rsibreak-090-out/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>RSIBreak beta5 + Junior Jobs + Akonadi  Meeting</title>
		<link>http://www.omat.nl/2008/10/29/rsibreak-beta5-junior-jobs-akonadi-meeting/</link>
		<comments>http://www.omat.nl/2008/10/29/rsibreak-beta5-junior-jobs-akonadi-meeting/#comments</comments>
		<pubDate>Wed, 29 Oct 2008 13:03:59 +0000</pubDate>
		<dc:creator>toma</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Mailody]]></category>
		<category><![CDATA[RSIBreak]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[I released RSIBreak beta 5 yesterday evening. I can not recall ever making 5 beta releases before in my life. Not for digiKam, kipi-plugins, libkipi, Mailody, Akonadi or RSIBreak. But the good news is that RSIBreak is now bugfree according to bugzilla and there is only <a href="https://bugs.kde.org/show_bug.cgi?id=144534" target="_new">one Junior Job</a> present, which is good. 

I would love to do things like a network sync so you can break together with your favorite colleague which also uses RSIBreak, but that seems to be more difficult than I thought. I browsed through some applications that uses the zeroconf KDE implementation. But it requires to much code for such a feature. I'll check again in a few years, maybe someone has made a more high level API around zeroconf. Yes, it is the lazy option, I know. 

Maybe Junior Jobs in bugzilla need more explanation. I don't recall being on planetkde recently. Junior Jobs are jobs which are great bugs for people that want to start with KDE development and want to start with some easy to implement features. These are not bugs which the application developer does not feel like implementing because it is boring or only serves a small portion of the users, no.. I leave them open for a while in bugzilla to give people the chance to start with KDE development. So if you want to start developing for KDE, take a look at our <a href="https://bugs.kde.org/buglist.cgi?keywords=junior-jobs&#038;bug_status=UNCONFIRMED&#038;bug_status=NEW&#038;bug_status=ASSIGNED&#038;bug_status=REOPENED&#038;cmdtype=doit" target="_new">list of Junior Jobs on bugzilla</a>.

Next Friday is the start of a new Akonadi meeting. Goal there is to give the Akonadi Pillar a good shakedown for the next KDE release. This should be the release where Akonadi KDE Libraries should be in good shape to be used for everyday usage by users. They don't have to know they will use Akonadi for their address book, it simply will happen ;-). But before that, we need to make sure we have the stability which is required. We've seen all kinds of interests from application developers. Recently I've seen KPilot do things with Akonadi, KJots too and the KIPI-plugins team is considering it. For this meeting KPilot and KJots authors will be available, so we can fix any issue they run into quickly. I say 'we', but it's mostly 'Volker' btw. Credits where they belong. 

I'm also looking forward to get Mailody in shape for a new release. I've recently fixed a large set of bugs and I hope that after this weekend I can switch permanently to Mailody4. What might help here is that Igor is flying in from the Amazon area in Brazil (he's exchanging 30 degrees Celsius for 3 degrees Celsius; talking about motivation ;-)). This summer (that's actually winter there, right?) he has made an Akonadi testing framework. I'm really looking forward to his presentation to see in what way we can make use of this framework. I'll make sure I'll blog from the event.
]]></description>
			<content:encoded><![CDATA[<p>I released RSIBreak beta 5 yesterday evening. I can not recall ever making 5 beta releases before in my life. Not for digiKam, kipi-plugins, libkipi, Mailody, Akonadi or RSIBreak. But the good news is that RSIBreak is now bugfree according to bugzilla and there is only <a href="https://bugs.kde.org/show_bug.cgi?id=144534" target="_new">one Junior Job</a> present, which is good. </p>
<p>I would love to do things like a network sync so you can break together with your favorite colleague which also uses RSIBreak, but that seems to be more difficult than I thought. I browsed through some applications that uses the zeroconf KDE implementation. But it requires to much code for such a feature. I&#8217;ll check again in a few years, maybe someone has made a more high level API around zeroconf. Yes, it is the lazy option, I know. </p>
<p>Maybe Junior Jobs in bugzilla need more explanation. I don&#8217;t recall being on planetkde recently. Junior Jobs are jobs which are great bugs for people that want to start with KDE development and want to start with some easy to implement features. These are not bugs which the application developer does not feel like implementing because it is boring or only serves a small portion of the users, no.. I leave them open for a while in bugzilla to give people the chance to start with KDE development. So if you want to start developing for KDE, take a look at our <a href="https://bugs.kde.org/buglist.cgi?keywords=junior-jobs&#038;bug_status=UNCONFIRMED&#038;bug_status=NEW&#038;bug_status=ASSIGNED&#038;bug_status=REOPENED&#038;cmdtype=doit" target="_new">list of Junior Jobs on bugzilla</a>.</p>
<p>Next Friday is the start of a new Akonadi meeting. Goal there is to give the Akonadi Pillar a good shakedown for the next KDE release. This should be the release where Akonadi KDE Libraries should be in good shape to be used for everyday usage by users. They don&#8217;t have to know they will use Akonadi for their address book, it simply will happen ;-). But before that, we need to make sure we have the stability which is required. We&#8217;ve seen all kinds of interests from application developers. Recently I&#8217;ve seen KPilot do things with Akonadi, KJots too and the KIPI-plugins team is considering it. For this meeting KPilot and KJots authors will be available, so we can fix any issue they run into quickly. I say &#8216;we&#8217;, but it&#8217;s mostly &#8216;Volker&#8217; btw. Credits where they belong. </p>
<p>I&#8217;m also looking forward to get Mailody in shape for a new release. I&#8217;ve recently fixed a large set of bugs and I hope that after this weekend I can switch permanently to Mailody4. What might help here is that Igor is flying in from the Amazon area in Brazil (he&#8217;s exchanging 30 degrees Celsius for 3 degrees Celsius; talking about motivation ;-)). This summer (that&#8217;s actually winter there, right?) he has made an Akonadi testing framework. I&#8217;m really looking forward to his presentation to see in what way we can make use of this framework. I&#8217;ll make sure I&#8217;ll blog from the event.<br />
<!--break--></p>
]]></content:encoded>
			<wfw:commentRss>http://www.omat.nl/2008/10/29/rsibreak-beta5-junior-jobs-akonadi-meeting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Updates</title>
		<link>http://www.omat.nl/2008/10/16/updates/</link>
		<comments>http://www.omat.nl/2008/10/16/updates/#comments</comments>
		<pubDate>Thu, 16 Oct 2008 20:46:14 +0000</pubDate>
		<dc:creator>toma</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Mailody]]></category>
		<category><![CDATA[RSIBreak]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[RSIBreak
I got some reports that the settings dialog was broken. When I checked SVN it was already fixed, so I just needed to make a new release. Will Stephenson gave the finishing touch and after that I used the createtarballs script to generate a new tarball. The only thing which stands in the way of making a release candidate is the fact that the plasma applet is currently broken. a new contributor started to work on the applet, but seems to have disapeared. So if there is someone out there with plasma knowledge, please make the rsibreak applet behave, the engine is there, the rsibreak code is nice, just requires an hour hacking. ;-)

I even updated the <a href="http://www.rsibreak.org">site</a> together with a co-worker. She did the layout, i updated the content.            
                                                                                                                          
The official state of rsibreak is kind of weird, officially I've given up on it, not because i don't like the app or don't need it anymore, it is just that i've too little time. But it completely works, so I keep maintaining it in maintenance mode until a new eager hacker stands up and wants to take over.

Mailody
Last week I returned in hacking mode for a while. I seriously want to start using Mailody4 rather soon now. So in the private hacking weekend i had, i started to simply fix each and every bug i hit. After two days it finally got somewhere. At the end of this month there will be a Akonadi hacking weekend. I hope we find time there to squash another set of bugs on the Akonadi side, so I can use Mailody4 full time after that. Akonadi has seen a lot of progress lately. Stabalisation fixes and error handling is improved...

Release-team
The release team is kind of working allright. Now and then you simply hit the fact that it is not always easy to make decisions while you are in a group. When one person proposes something and ten people reply, it often results in some kind of deadlock which has to be resolved. In this case David Faure stepped up and pulled the tags-for-kdesupport into reality. It's great that someone steps up and does that. Though I'm not completely sure this happens all the time, some kind of a 'leader' could make things easier, but we're not a company, so that does not exists. Not that it is not possible when you are not a company, it's just that it is not natural. Ah well, you get what I mean.

Community Working group
Another project I wish I could spend time on. Jucato already <a href="http://jucato.org/blog/userbase-a-tour/">explained a lot</a> about userbase, and I'm happy to see the other members of the CWG getting this of the ground. It seems to gain momentum. I think it is awesome that there is a techbase for users. It can serve as first stop for users to see if their problem is covered in a FAQ already.
]]></description>
			<content:encoded><![CDATA[<p>RSIBreak<br />
I got some reports that the settings dialog was broken. When I checked SVN it was already fixed, so I just needed to make a new release. Will Stephenson gave the finishing touch and after that I used the createtarballs script to generate a new tarball. The only thing which stands in the way of making a release candidate is the fact that the plasma applet is currently broken. a new contributor started to work on the applet, but seems to have disapeared. So if there is someone out there with plasma knowledge, please make the rsibreak applet behave, the engine is there, the rsibreak code is nice, just requires an hour hacking. ;-)</p>
<p>I even updated the <a href="http://www.rsibreak.org">site</a> together with a co-worker. She did the layout, i updated the content.            </p>
<p>The official state of rsibreak is kind of weird, officially I&#8217;ve given up on it, not because i don&#8217;t like the app or don&#8217;t need it anymore, it is just that i&#8217;ve too little time. But it completely works, so I keep maintaining it in maintenance mode until a new eager hacker stands up and wants to take over.</p>
<p>Mailody<br />
Last week I returned in hacking mode for a while. I seriously want to start using Mailody4 rather soon now. So in the private hacking weekend i had, i started to simply fix each and every bug i hit. After two days it finally got somewhere. At the end of this month there will be a Akonadi hacking weekend. I hope we find time there to squash another set of bugs on the Akonadi side, so I can use Mailody4 full time after that. Akonadi has seen a lot of progress lately. Stabalisation fixes and error handling is improved&#8230;</p>
<p>Release-team<br />
The release team is kind of working allright. Now and then you simply hit the fact that it is not always easy to make decisions while you are in a group. When one person proposes something and ten people reply, it often results in some kind of deadlock which has to be resolved. In this case David Faure stepped up and pulled the tags-for-kdesupport into reality. It&#8217;s great that someone steps up and does that. Though I&#8217;m not completely sure this happens all the time, some kind of a &#8216;leader&#8217; could make things easier, but we&#8217;re not a company, so that does not exists. Not that it is not possible when you are not a company, it&#8217;s just that it is not natural. Ah well, you get what I mean.</p>
<p>Community Working group<br />
Another project I wish I could spend time on. Jucato already <a href="http://jucato.org/blog/userbase-a-tour/">explained a lot</a> about userbase, and I&#8217;m happy to see the other members of the CWG getting this of the ground. It seems to gain momentum. I think it is awesome that there is a techbase for users. It can serve as first stop for users to see if their problem is covered in a FAQ already.<br />
<!--break--></p>
]]></content:encoded>
			<wfw:commentRss>http://www.omat.nl/2008/10/16/updates/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Unbreak Mailody</title>
		<link>http://www.omat.nl/2007/08/23/unbreak-mailody/</link>
		<comments>http://www.omat.nl/2007/08/23/unbreak-mailody/#comments</comments>
		<pubDate>Thu, 23 Aug 2007 07:30:31 +0000</pubDate>
		<dc:creator>toma</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Mailody]]></category>
		<category><![CDATA[RSIBreak]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[<a href="http://jlp.holodeck1.com/blog/2007/08/22/the-book-of-qt-4-–-a-short-review/">Jure Repinc</a> posted a small review of the book <a href="http://www.qt4-book.com/">The Book of Qt 4
 The Art of Building Qt Applications</a> by Daniel Molkentin. My copy arrived yesterday from amazon.de. After hacking all day in PHP - I love that language, but I deny I ever said that when asked in public - I thought I read some chapters.

It's indeed a very nice book. It explains understandably why you should put things on the stack or the heap, it's better to remember when you understand why something is done a certain way then just doing so. Also I never understood what was meant by implicitly sharing. All clear now. Qt is smart.

I also came to some solution for Mailody. In the KDE3-series it was optmized to show a large amount of headers in threads quickly. Of course in Qt4 this can all be thrown away. Even more, the whole system of the header list was rewritten in a model/view. But I never got the same performance of the KDE3 Mailody. This due to a combination of bad implementation of the model/view framework and the previous optimalisations now biting me. 

The Book pointed me to the obvious answer to my problem though. Mailody uses a sqlite backend for caching the mails. Qt now has Sql classes, so it should be possible to use Qt for accessing the database, which alse removes the dependency on libsqlite (I think). Using those classes is not spectacular, but what is spectacular that there is a Qt model for the Sql-database. This means I can get rid of the whole model part I wrote (and that stinks) and use a standard QSqlQueryModel in combination with a slightly adjusted QTreeView. 

It would have been nice if the book told me something about the performance of all those classes. In what ways are the qt-sqlite classes faster then the regular implementation? What is the performance of the model/view approach. For Qt3 I made a system that only parses the main part of the headers when the those headers had to be shown in the headerview. So as long as the user is at the bottom of the mailbox, the headers of the messages at the top are not yet filled in, only when the user scrolls up and the headers are needed, those were parsed and shown. Which makes it pretty fast, as the parsing of the messages is the time consuming part. It would have been nice to get a feeling how it's done in Qt's-Interview, but I can also understand that's out of scope for the book.

When I have the model/view setup correctly, the threading part should be done in the mapToSource() and mapFromSource() within the proxy, but that can be done at a much later date. Till already told me to do it in the proxy and the book told me the same. I better listen and do it that way. 

I've not been very active on Mailody lately, but that might change. But ideally I would finish the book first. And the one from Johan Thelin too. And finish RSIBreak.
]]></description>
			<content:encoded><![CDATA[<p><a href="http://jlp.holodeck1.com/blog/2007/08/22/the-book-of-qt-4-–-a-short-review/">Jure Repinc</a> posted a small review of the book <a href="http://www.qt4-book.com/">The Book of Qt 4<br />
 The Art of Building Qt Applications</a> by Daniel Molkentin. My copy arrived yesterday from amazon.de. After hacking all day in PHP &#8211; I love that language, but I deny I ever said that when asked in public &#8211; I thought I read some chapters.</p>
<p>It&#8217;s indeed a very nice book. It explains understandably why you should put things on the stack or the heap, it&#8217;s better to remember when you understand why something is done a certain way then just doing so. Also I never understood what was meant by implicitly sharing. All clear now. Qt is smart.</p>
<p>I also came to some solution for Mailody. In the KDE3-series it was optmized to show a large amount of headers in threads quickly. Of course in Qt4 this can all be thrown away. Even more, the whole system of the header list was rewritten in a model/view. But I never got the same performance of the KDE3 Mailody. This due to a combination of bad implementation of the model/view framework and the previous optimalisations now biting me. </p>
<p>The Book pointed me to the obvious answer to my problem though. Mailody uses a sqlite backend for caching the mails. Qt now has Sql classes, so it should be possible to use Qt for accessing the database, which alse removes the dependency on libsqlite (I think). Using those classes is not spectacular, but what is spectacular that there is a Qt model for the Sql-database. This means I can get rid of the whole model part I wrote (and that stinks) and use a standard QSqlQueryModel in combination with a slightly adjusted QTreeView. </p>
<p>It would have been nice if the book told me something about the performance of all those classes. In what ways are the qt-sqlite classes faster then the regular implementation? What is the performance of the model/view approach. For Qt3 I made a system that only parses the main part of the headers when the those headers had to be shown in the headerview. So as long as the user is at the bottom of the mailbox, the headers of the messages at the top are not yet filled in, only when the user scrolls up and the headers are needed, those were parsed and shown. Which makes it pretty fast, as the parsing of the messages is the time consuming part. It would have been nice to get a feeling how it&#8217;s done in Qt&#8217;s-Interview, but I can also understand that&#8217;s out of scope for the book.</p>
<p>When I have the model/view setup correctly, the threading part should be done in the mapToSource() and mapFromSource() within the proxy, but that can be done at a much later date. Till already told me to do it in the proxy and the book told me the same. I better listen and do it that way. </p>
<p>I&#8217;ve not been very active on Mailody lately, but that might change. But ideally I would finish the book first. And the one from Johan Thelin too. And finish RSIBreak.<br />
<!--break--></p>
]]></content:encoded>
			<wfw:commentRss>http://www.omat.nl/2007/08/23/unbreak-mailody/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>RSIBreak porting almost done</title>
		<link>http://www.omat.nl/2007/08/04/rsibreak-porting-almost-done/</link>
		<comments>http://www.omat.nl/2007/08/04/rsibreak-porting-almost-done/#comments</comments>
		<pubDate>Sat, 04 Aug 2007 17:20:05 +0000</pubDate>
		<dc:creator>toma</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[RSIBreak]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[RSIBreak is in good shape for KDE4, all the basic stuff works, just some bugs left. And those will take large amounts of time to solve probably. 90% of the task you do in 10% of the time, the other 10% will take 90%.

Today I sat down, and read up on Plasma. My last blog entry triggered comments about making rsibreak work with Plasma. After reading the example I made the Plasma applet. The screenie:

[img_assist&#124;nid=165&#124;title=rsibreakplasma&#124;desc=&#124;link=none&#124;align=center&#124;width=193&#124;height=199]

It's not graphically very appealing, but I don't own the skills to do that yet, so I've to learn those before it gets visually more attractive.

]]></description>
			<content:encoded><![CDATA[<p>RSIBreak is in good shape for KDE4, all the basic stuff works, just some bugs left. And those will take large amounts of time to solve probably. 90% of the task you do in 10% of the time, the other 10% will take 90%.</p>
<p>Today I sat down, and read up on Plasma. My last blog entry triggered comments about making rsibreak work with Plasma. After reading the example I made the Plasma applet. The screenie:</p>
<p>[img_assist|nid=165|title=rsibreakplasma|desc=|link=none|align=center|width=193|height=199]</p>
<p>It&#8217;s not graphically very appealing, but I don&#8217;t own the skills to do that yet, so I&#8217;ve to learn those before it gets visually more attractive.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.omat.nl/2007/08/04/rsibreak-porting-almost-done/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>RSIBreak porting has started &amp; porting problems.</title>
		<link>http://www.omat.nl/2007/07/28/rsibreak-porting-has-started-porting-problems/</link>
		<comments>http://www.omat.nl/2007/07/28/rsibreak-porting-has-started-porting-problems/#comments</comments>
		<pubDate>Sat, 28 Jul 2007 16:28:13 +0000</pubDate>
		<dc:creator>toma</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[Mailody]]></category>
		<category><![CDATA[RSIBreak]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Yes, it's a bit late to start porting an app now, but I needed a break from Mailody for a while and I need an RSIBreak app for KDE4 anyway and I'm the maintainer of that app, so I feel the need to do something with it.

Anyway, RSIBreak is highly focussed as being a tray application. That means, there is no real main window which should popup when clicking on the tray. And that's where I've some problems. As soon as I open the configuration from the context menu of the tray icon and close it again, RSIBreak exit(0)'s. And it does that for all the about screens as well. I've no idea why. 

Another problem (or the same?) is that KSystemTrayIcon is no longer a QWidget, that means I can not intercept left clicks on the Icon - or catch the hover event. The latter problem I tackled with hooking into the tooltip event, but that's far from ideal.

When RSIBreak starts for the very first time or when RSIBreak is started while running, it shows a popup with a screenshot of the system tray with the icon in there. Up to now I used (borrowed code from Konversation though) a QMimeSourceFactory to store the image, like in:

<code>
QMimeSourceFactory::defaultFactory()->setPixmap( "systray_shot", QPixmapOfTheTrayIcon );
</code>

then i could use that in a dialog:

<code>
KMessageBox::information(this,
           i18n("&#60;p>RSIBreak is already running&#60;p>&#60;p>It is located here:")
           + "&#60;p>&#60;center>&#60;img source=\"systray_shot\">&#60;/center>&#60;/p>&#60;p>",
           i18n("Already Running"));
</code>

But there is bad news, QMimeSourceFactory is not available in Qt4. The porting document tells me to look at Qt resource system, but that's not the use case here. So I have the pixmap and I've a messagebox, just need to find an easy way to show the image there. I need to peek at Konversation again to see how they solved it.

Just some random issues you run into when porting... The good news is that there will be a RSIBreak ready, probably before the final release of KDE.
]]></description>
			<content:encoded><![CDATA[<p>Yes, it&#8217;s a bit late to start porting an app now, but I needed a break from Mailody for a while and I need an RSIBreak app for KDE4 anyway and I&#8217;m the maintainer of that app, so I feel the need to do something with it.</p>
<p>Anyway, RSIBreak is highly focussed as being a tray application. That means, there is no real main window which should popup when clicking on the tray. And that&#8217;s where I&#8217;ve some problems. As soon as I open the configuration from the context menu of the tray icon and close it again, RSIBreak exit(0)&#8217;s. And it does that for all the about screens as well. I&#8217;ve no idea why. </p>
<p>Another problem (or the same?) is that KSystemTrayIcon is no longer a QWidget, that means I can not intercept left clicks on the Icon &#8211; or catch the hover event. The latter problem I tackled with hooking into the tooltip event, but that&#8217;s far from ideal.</p>
<p>When RSIBreak starts for the very first time or when RSIBreak is started while running, it shows a popup with a screenshot of the system tray with the icon in there. Up to now I used (borrowed code from Konversation though) a QMimeSourceFactory to store the image, like in:</p>
<p><code><br />
QMimeSourceFactory::defaultFactory()->setPixmap( "systray_shot", QPixmapOfTheTrayIcon );<br />
</code></p>
<p>then i could use that in a dialog:</p>
<p><code><br />
KMessageBox::information(this,<br />
           i18n("&lt;p>RSIBreak is already running&lt;p>&lt;p>It is located here:")<br />
           + "&lt;p>&lt;center>&lt;img source=\"systray_shot\">&lt;/center>&lt;/p>&lt;p>",<br />
           i18n("Already Running"));<br />
</code></p>
<p>But there is bad news, QMimeSourceFactory is not available in Qt4. The porting document tells me to look at Qt resource system, but that&#8217;s not the use case here. So I have the pixmap and I&#8217;ve a messagebox, just need to find an easy way to show the image there. I need to peek at Konversation again to see how they solved it.</p>
<p>Just some random issues you run into when porting&#8230; The good news is that there will be a RSIBreak ready, probably before the final release of KDE.<br />
<!--break--></p>
]]></content:encoded>
			<wfw:commentRss>http://www.omat.nl/2007/07/28/rsibreak-porting-has-started-porting-problems/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>RSIBreak is Debian Package of the Day</title>
		<link>http://www.omat.nl/2007/03/11/rsibreak-debian-package-day/</link>
		<comments>http://www.omat.nl/2007/03/11/rsibreak-debian-package-day/#comments</comments>
		<pubDate>Sun, 11 Mar 2007 10:36:32 +0000</pubDate>
		<dc:creator>toma</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[RSIBreak]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[RSIBreak has been made <a href="http://debaday.debian.net/2007/03/11/rsibreak-a-kde-utility-which-can-help-to-prevent-the-rsi/" target="_new">Package of the Day</a>. It's nice to get this kind of publicity. I've not been blogging about it for a while and to be honest, have not worked on it for a while.

The main reason for it is that it does what I want it to do. I use it daily. Some days I don't see it reminding me for a break at all - usually slow days - and sometimes it popups up every 20 minutes - busy days. I try to honor it's suggestions usually. 

It's on my list to port to KDE4, because I want to keep using it there as well. It is interesting to see that when you give regular attention to an application in the form of blogs, the project becomes active and lively. For RSIBreak I see that there are usually no visitors on the irc channel, no patches, etc. While when it was in heavy development there were people in the channel and patches. But I guess there are written multiple e-books about 'managing an open source community'.

Anyhow, it's great to be Package of the Day!]]></description>
			<content:encoded><![CDATA[<p>RSIBreak has been made <a href="http://debaday.debian.net/2007/03/11/rsibreak-a-kde-utility-which-can-help-to-prevent-the-rsi/" target="_new">Package of the Day</a>. It&#8217;s nice to get this kind of publicity. I&#8217;ve not been blogging about it for a while and to be honest, have not worked on it for a while.</p>
<p>The main reason for it is that it does what I want it to do. I use it daily. Some days I don&#8217;t see it reminding me for a break at all &#8211; usually slow days &#8211; and sometimes it popups up every 20 minutes &#8211; busy days. I try to honor it&#8217;s suggestions usually. </p>
<p>It&#8217;s on my list to port to KDE4, because I want to keep using it there as well. It is interesting to see that when you give regular attention to an application in the form of blogs, the project becomes active and lively. For RSIBreak I see that there are usually no visitors on the irc channel, no patches, etc. While when it was in heavy development there were people in the channel and patches. But I guess there are written multiple e-books about &#8216;managing an open source community&#8217;.</p>
<p>Anyhow, it&#8217;s great to be Package of the Day!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.omat.nl/2007/03/11/rsibreak-debian-package-day/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>RSIBreak needs exercises</title>
		<link>http://www.omat.nl/2006/06/18/rsibreak-needs-exercises/</link>
		<comments>http://www.omat.nl/2006/06/18/rsibreak-needs-exercises/#comments</comments>
		<pubDate>Sat, 17 Jun 2006 23:25:01 +0000</pubDate>
		<dc:creator>toma</dc:creator>
				<category><![CDATA[English]]></category>
		<category><![CDATA[RSIBreak]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[While we are preparing RSIBreak 0.7.0, it is time to think about the next release. The feature which is at the top of my wanted list is the possibility to show exercises during breaks. 

You can imagine different ways to show them, they can be an animated konqi, sitting behind a computer showing one exercises per break.

Or some very expressive drawings, maybe something like the card with emergency instructions in a plane. 

All RSIBreak-like application have instructions and I consider it a must have for the near future. So if you want to work on this, please make a comment or drop by at irc.kde.org, channel #rsibreak]]></description>
			<content:encoded><![CDATA[<p>While we are preparing RSIBreak 0.7.0, it is time to think about the next release. The feature which is at the top of my wanted list is the possibility to show exercises during breaks. </p>
<p>You can imagine different ways to show them, they can be an animated konqi, sitting behind a computer showing one exercises per break.</p>
<p>Or some very expressive drawings, maybe something like the card with emergency instructions in a plane. </p>
<p>All RSIBreak-like application have instructions and I consider it a must have for the near future. So if you want to work on this, please make a comment or drop by at irc.kde.org, channel #rsibreak</p>
]]></content:encoded>
			<wfw:commentRss>http://www.omat.nl/2006/06/18/rsibreak-needs-exercises/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
