<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>A Quiet Place</title>
	<atom:link href="http://drfav.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://drfav.wordpress.com</link>
	<description>Life is what you make it, that's why I'm trying my best</description>
	<lastBuildDate>Tue, 15 Sep 2009 10:12:19 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='drfav.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/5a132e2f4ffc09a3dbe662d6393610a3?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>A Quiet Place</title>
		<link>http://drfav.wordpress.com</link>
	</image>
			<item>
		<title>KAuth in use: privileged KCModules</title>
		<link>http://drfav.wordpress.com/2009/09/15/kauth-in-use-privileged-kcmodules/</link>
		<comments>http://drfav.wordpress.com/2009/09/15/kauth-in-use-privileged-kcmodules/#comments</comments>
		<pubDate>Tue, 15 Sep 2009 10:09:28 +0000</pubDate>
		<dc:creator>drfav</dc:creator>
				<category><![CDATA[KDE]]></category>
		<category><![CDATA[Qt]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[kauth]]></category>
		<category><![CDATA[kde]]></category>
		<category><![CDATA[policykit]]></category>
		<category><![CDATA[stuff]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://drfav.wordpress.com/2009/09/15/kauth-in-use-privileged-kcmodules/</guid>
		<description><![CDATA[Hello people,
Today I want to write a more extensive introduction and how-to, with the KAuth API being finalized, on writing a privileged KCModule. Please note that this information will be soon on Techbase as well.
So, before we start, why should you read this post?

Because you&#8217;re a developer who needs to develop an application requiring high [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=drfav.wordpress.com&blog=1329113&post=183&subd=drfav&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Hello people,</p>
<p>Today I want to write a more extensive introduction and how-to, with the KAuth API being finalized, on writing a privileged KCModule. Please note that this information will be soon on Techbase as well.</p>
<p>So, before we start, why should you read this post?</p>
<ul>
<li>Because you&#8217;re a developer who needs to develop an application requiring high privileges</li>
<li>Because you&#8217;re a developer who needs to develop an application requiring authorization</li>
<li>Because you&#8217;re a curious developer</li>
<li>Because you&#8217;re a curious user</li>
</ul>
<p>So, defined the target audience, here we go <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Back in the KDE3 days, we had an &#8220;Administration mode&#8221; button, that basically removed the kcm widget, XEmbedded another widget running as root into the kcmshell, and that&#8217;s it. Pretty ugly and unsecure, but still working. Most of all, the developer did not know what was happening under the hood, since what happened is in no way different than issuing right now &#8220;sudo kcmshell4 &lt;module&gt;&#8221;. In KDE4(.4), things are different.</p>
<p>We do not have an &#8220;Administrator mode&#8221; button, neither widgets being embedded. We do have small helper applications running in the background with high privileges, performing the requested action only if explicitely authorized by the underlying policy system. And we have an easy API, that extends throughout KDEUI and KCModule to make things transparent, customizable, yet extremely easy to the developer.</p>
<p>So let&#8217;s start. We are trying to create &#8220;fookcm&#8221;, a kcmodule for writing to /etc/foo the lines &#8220;foo&#8221;. So important. As you, experienced developer should know, the first lines will look like this:</p>
<p><code>K_PLUGIN_FACTORY(FooKCMFactory, registerPlugin&lt;FooKCM&gt;();) K_EXPORT_PLUGIN(FooKCMFactory("fookcm")) <br />FooKCM::FooKCM(QWidget *parent, const QVariantList &amp;)<br />: KCModule(FooKCMFactory::componentData(), parent)<br />{<br />KAboutData *about =<br />new KAboutData(I18N_NOOP("fookcm"), 0, ki18n("Da foo KCM"),<br />0, KLocalizedString(), KAboutData::License_GPL, ki18n("(c) foo"));</code></p>
<p>Remember well the name we gave to the module (fookcm), we will need it later. So you wonder what we need to add to the constructor to make the magic happen. A single line: </p>
<p>setNeedsAuthorization(true);</p>
<p>What does that do? A variety of things:</p>
<ul>
<li>It maps the KCM to the action org.kde.kcontrol.&lt;modulename&gt;.save. So our save action is named org.kde.kcontrol.fookcm.save. Keep this in mind, we&#8217;ll need it later</li>
<li>It turns kcmshell/and or systemsettings Ok and Apply buttons authAction property to the newly mapped action, so that buttons reflect the action state (eg: they are disabled, show a key instead of the icon, etc)</li>
<li>It sets some additional visual feedback to the kcmodule.</li>
</ul>
<p>After this line, your header (obviously after the action install phase, which I&#8217;ll show you later on) when you are required to authenticate will look something like this:</p>
<p><img src="http://drfav.files.wordpress.com/2009/09/snapshot1.png" title="The header" alt="This is how the header will look like" /></p>
<p>Neat, isn&#8217;t it? But to achieve this, a small thing needs to be done. We need to create an action file. So let&#8217;s just open your favorite editor on fookcm.actions (the &#8220;actions&#8221; extension is mandatory to let scripty translate your file successfully) and let&#8217;s write this down:</p>
<p><code>[Domain]<br />Name=Foo configuration<br />Icon=foo</p>
<p>[org.kde.kcontrol.fookcm.save]<br />Name=Save the foo<br />Description=Authentication is required for saving the foo<br />Policy=auth_admin</code></p>
<p>It is pretty straightforward, but let&#8217;s see this in detail. The structure is a standard ini file. You can define an unlimited number of actions in each actions file, provided they belong to the same domain (in this case org.kde.kcontrol.fookcm). The group name is the action name, Name is what will appear when you will browse the PolicyKit Authorization module, and Description is the message that will appear in the auth dialog. Policy is mandatory as well, and defines the default policy. It can be yes, no, auth_self or auth_admin. There is also an optional field, Persistence, that will define the default persistence of the authentication. There is also a special &#8220;Domain&#8221; group: this defines some additional settings that will affect all the actions under the domain you&#8217;re configuring. You can set the Name, that will appear as the folder name in the PolicyKit authorization module, and an icon that will be shown both in the authorization module and dialog. The whole Domain group is advised for better feedback, but not mandatory.</p>
<p>Done that, we need a small magic in our CMakeLists.txt. We need to register the actions like this:</p>
<p>kde4_install_auth_actions(org.kde.kcontrol.fookcm fookcm.actions)</p>
<p>Straightforward as well. Just define the helper ID (which basically is the action domain) and the action file. This will take care of generating and installing the actions for you.</p>
<p>So now we have our beautiful kcmodule with all bells and whistles and our save() function will be called just if the user is authorized to save the module. But we&#8217;re missing one step, huh? We actually want to save stuff in /etc, so we need high privileges. Then it&#8217;s time to create our helper.</p>
<p>Creating an helper is really easy with KAuth, since with the tools the library provides you, you won&#8217;t even know another application is running in the background. The helper has also remote debugging, so if you issue a qDebug() from the helper application, you will see the output in your main application. So you really don&#8217;t have to care about the fact it&#8217;s separate. But let&#8217;s get to the point.</p>
<p>Let&#8217;s create a new class for the helper, let&#8217;s name it FooHelper. The header file would look like this:</p>
<p><code>#include &lt;kauth.h&gt; </p>
<p>using namespace KAuth; </p>
<p>class FooHelper : public QObject<br />{<br />Q_OBJECT</p>
<p>public slots:<br />ActionReply save(const QVariantMap &amp;map);<br />};</code></p>
<p>There are some small but important details here. For every action our helper implements, we need to define a slot that has EXACTLY the same name as the action itself (so save), returns an ActionReply and accepts a QVariantMap. It&#8217;s EXTREMELY important that the return type is an ActionReply and not a KAuth::ActionReply, eg you have to use using namespace KAuth. Short explaination: otherwise things won&#8217;t work. Long explaination: we&#8217;re using QMetaObject::invokeMethod for calling the actions, and it is extremely picky about namespaces.</p>
<p>To understand better the arguments, let&#8217;s have a look at how to implement save() in our kcm</p>
<p><code>void FooKCM::save() {<br />KAuth::Action *action = authAction();<br />QVariantMap args;<br />args["path"] = "/etc/foo";<br />args["contents"] = "foooooo";<br />action-&gt;setArguments(args);<br />KAuth::ActionReply reply = action-&gt;execute(); </code></p>
<p>I did not write the followup, where you actually check the result of the reply and act accordingly. So what we do here is grabbing the authAction of our KCModule, attaching some arguments, and executing it synchronously. I think you can now realize the reason for the arguments of the save function of the helper. ActionReply can also carry a QVariantMap, so you have a way of returning data back from the helper. In any case, returning ActionReply::SuccessReply will just tell the main application that everything went well.</p>
<p>Almost done (I&#8217;m just skipping the save implementation in the helper, as it is really stupid). We need two more small things, one in the helper implementation (our foohelper.cpp) and one of course in cmake. The first one is a macro, and it goes like this:</p>
<p>KDE4_AUTH_HELPER_MAIN(&#8220;org.kde.kcontrol.fookcm&#8221;, FooHelper)</p>
<p>What does it do? It accepts our helper ID (so the actions&#8217; domain), and the class which represents the helper itself. Under the hood, it creates a main function for the helper instantiating and registering your class. CMake stuff is pretty straightforward as well:</p>
<p><code>kde4_add_executable(fookcmhelper foohelper.cpp)<br />target_link_libraries(fookcmhelper ${KDE4_KDECORE_LIBS})<br />install(TARGETS fookcmhelper DESTINATION ${LIBEXEC_INSTALL_DIR})<br />kde4_install_auth_helper_files(fookcmhelper org.kde.kcontrol.fookcm root)</code></p>
<p>It adds a new executable, that has to be installed (this is mandatory) in LIBEXEC_INSTALL_DIR. Installing it elsewhere will make things fail. The additional macro you surely spotted takes as arguments the target, the helper ID associated to it, and the user under which the helper will run on. Yes, you can also create helpers not running as root! This can be extremely useful to improve security in some cases. Under the hood, this macro generates and installs a lot of files. It creates a dbus policy for your helper, so that it will be able to be exposed on the system bus, and an activation file, to make it start up automatically. As you probably have realized by now, the helper ID is nothing else but the service name of the helper. But as you noticed, you (as a developer) do not even know that DBus is running under the hood, as you don&#8217;t see/have to write a single line of DBus related code.</p>
<p>That&#8217;s it. You now have a nicely integrated, rock-solid, clean and extremely secure KCModule that saves data with high privileges. I&#8217;m not covering why it is secure (you can read about Polkit and/or Authorization Services if you are interested) as this post is already long enough.</p>
<p>Also, what I&#8217;ve shown you is just a very basic usage of KAuth. You can, for example, execute actions asynchronously, and stream progress of an action, and even data from your helper. To learn more about KAuth, go now to the <a href="http//api.kde.org" title="KDE API Documentation" target="_blank">KDE API Documentation</a> for a complete overview of KAuth and its capabilities, and be sure to have a look at the <a href="http://api.kde.org/4.x-api/kdelibs-apidocs/kdecore/html/namespaceKAuth.html" target="_blank">KAuth namespace documentation</a>, which features a really extensive introduction/tutorial that will be reformatted as well to be included in Techbase.</p>
<p>Now, before you start yelling this is the best thing you&#8217;ve ever seen, there are also some caveats you might want to be aware of and, of course, avoid:</p>
<ul>
<li>If you are using a non-standard type in your QVariant, Q_DECLARE_METATYPE is not enough. Data is streamed through the bus in a binary datastream, so you have to implement custom operator&lt;&lt; and operator&gt;&gt; of QDataStream for your class. Please read QDataStream documentation for more details about this.</li>
<li>KAuth needs to install some files in privileged and specific locations. In particular, if you are installing stuff in a different prefix than /usr, things will not work out of the box. You have to tweak DBus configuration and move PolicyKit files to /usr (even though the PolicyKit guys are fixing that) to make things work. But be careful in editing DBus configuration as you might end up screwing your system. More details on that will follow on the TechBase tutorial. If you are installing KDE from packages you can simply ignore this, or blame your packager.</li>
<li>I noticed (at least here) that sometimes DBus does not recognize immediately new policies/autostart services. Before screaming about things not working, you might want to try restarting DBus first.</li>
</ul>
<p>That&#8217;s all, folks. Hope you enjoyed this, please give me some feedback before I push a refined version of this tutorial on TechBase.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/drfav.wordpress.com/183/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/drfav.wordpress.com/183/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/drfav.wordpress.com/183/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/drfav.wordpress.com/183/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/drfav.wordpress.com/183/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/drfav.wordpress.com/183/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/drfav.wordpress.com/183/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/drfav.wordpress.com/183/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/drfav.wordpress.com/183/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/drfav.wordpress.com/183/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=drfav.wordpress.com&blog=1329113&post=183&subd=drfav&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://drfav.wordpress.com/2009/09/15/kauth-in-use-privileged-kcmodules/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/01faf7015408f7f3e252055682e5f8ef?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">drfav</media:title>
		</media:content>

		<media:content url="http://drfav.files.wordpress.com/2009/09/snapshot1.png" medium="image">
			<media:title type="html">The header</media:title>
		</media:content>
	</item>
		<item>
		<title>Bilbo blogger Test</title>
		<link>http://drfav.wordpress.com/2009/09/14/bilbo-blogger-test/</link>
		<comments>http://drfav.wordpress.com/2009/09/14/bilbo-blogger-test/#comments</comments>
		<pubDate>Mon, 14 Sep 2009 17:46:12 +0000</pubDate>
		<dc:creator>drfav</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://drfav.wordpress.com/2009/09/14/bilbo-blogger-test/</guid>
		<description><![CDATA[Just testing Bilbo Blogger.
Looks like it could actually rock.

So byebye wordpress web interface!
       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=drfav.wordpress.com&blog=1329113&post=180&subd=drfav&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Just testing Bilbo Blogger.</p>
<p>Looks like it could actually rock.</p>
</p>
<p><strong>So byebye wordpress web interface!</strong></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/drfav.wordpress.com/180/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/drfav.wordpress.com/180/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/drfav.wordpress.com/180/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/drfav.wordpress.com/180/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/drfav.wordpress.com/180/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/drfav.wordpress.com/180/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/drfav.wordpress.com/180/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/drfav.wordpress.com/180/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/drfav.wordpress.com/180/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/drfav.wordpress.com/180/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=drfav.wordpress.com&blog=1329113&post=180&subd=drfav&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://drfav.wordpress.com/2009/09/14/bilbo-blogger-test/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/01faf7015408f7f3e252055682e5f8ef?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">drfav</media:title>
		</media:content>
	</item>
		<item>
		<title>Tokamak Wrap-up</title>
		<link>http://drfav.wordpress.com/2009/09/06/tokamak-wrap-up/</link>
		<comments>http://drfav.wordpress.com/2009/09/06/tokamak-wrap-up/#comments</comments>
		<pubDate>Sun, 06 Sep 2009 11:50:44 +0000</pubDate>
		<dc:creator>drfav</dc:creator>
				<category><![CDATA[KDE]]></category>
		<category><![CDATA[beer]]></category>
		<category><![CDATA[fun]]></category>
		<category><![CDATA[kauth]]></category>
		<category><![CDATA[kde]]></category>
		<category><![CDATA[niceness]]></category>
		<category><![CDATA[plasma]]></category>
		<category><![CDATA[randa]]></category>
		<category><![CDATA[tokamak]]></category>

		<guid isPermaLink="false">http://drfav.wordpress.com/?p=178</guid>
		<description><![CDATA[So, quite lately, but it&#8217;s my time as well to write a small wrapup on this wonderful Tokamak. Shame I had to leave earlier than all the other guys due to an exam, but I managed to have a great time anyway. I met a lot of people who I really wanted to get in [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=drfav.wordpress.com&blog=1329113&post=178&subd=drfav&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>So, quite lately, but it&#8217;s my time as well to write a small wrapup on this wonderful Tokamak. Shame I had to leave earlier than all the other guys due to an exam, but I managed to have a great time anyway. I met a lot of people who I really wanted to get in touch with since a lot of time, and it was great sharing rooms and beds with a lot of people you work with all the year but you somehow manage to meet in person just in some special occasions just like this one <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>The location was lovely, the host even more, so Mario keep your mobile switched on as I could call you anytime to share a beer together in the beautiful randa again. And I also hope I won&#8217;t have to wait some more years to catch up again with all the great KDE people I met in Switzerland.</p>
<p>Of course, it was not just about socializing. We also pushed a lot of new stuff, which we will refine and get ready for 4.4. KAuth is almost stable BC/SC wise (will be soon on cmake side, since some macros are still being discussed by me and Alexander), and it took really some pain to push it in. Pushing a new framework that relies on generating some special files in kdecore can be difficult and you sometimes need to take the most difficult route to lead to innovation.</p>
<p>I had also a lot of valuable reviews after pushing stuff in trunk. I had seen this coming, and this is probably the most important reason why I pushed this framework that early in the development cycle. This way, I sure have to change some stuff around in kdelibs/kdebase, but I am also sure that when we have 4 months yet since 4.4 release, we have a 100% tested and reviewed framework ready. I realized during all my time in KDE that kdereview, for this kind of stuff, is really not enough; and I was proven right <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>What am I going to do in the next days: some tutorials for developers (still did not write anything due to the fact that we&#8217;re still stabilizing the API), some more talking with people interested to use KAuth for their stuff, and make a plan for trying to integrate KAuth into KIO::File. It&#8217;s a difficult task, but we have some great people ready to help (Davide, Nicola, Riccardo), and we really want to get this feature in, so we&#8217;ll try our best.</p>
<p>And some stuff for users (hoping that Sebastian will push the nice &#8220;commercial&#8221; videos we made <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  ), such as screencasts, screenshots and whatever to let you know what this thing is bringing to your table.</p>
<p>All in all, we really managed to join productivity and fun in a way I did not think was possible, but this is what happens when you share some days with some of the best developers (and crazy people) out there. You guys rock, thank you for the great time I (and you hopefully) had, and I&#8217;m really looking forward to see you again!</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/drfav.wordpress.com/178/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/drfav.wordpress.com/178/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/drfav.wordpress.com/178/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/drfav.wordpress.com/178/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/drfav.wordpress.com/178/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/drfav.wordpress.com/178/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/drfav.wordpress.com/178/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/drfav.wordpress.com/178/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/drfav.wordpress.com/178/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/drfav.wordpress.com/178/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=drfav.wordpress.com&blog=1329113&post=178&subd=drfav&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://drfav.wordpress.com/2009/09/06/tokamak-wrap-up/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/01faf7015408f7f3e252055682e5f8ef?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">drfav</media:title>
		</media:content>
	</item>
		<item>
		<title>Tokamak: KAuth into kdelibs</title>
		<link>http://drfav.wordpress.com/2009/08/31/tokamak-kauth-into-kdelibs/</link>
		<comments>http://drfav.wordpress.com/2009/08/31/tokamak-kauth-into-kdelibs/#comments</comments>
		<pubDate>Mon, 31 Aug 2009 10:35:36 +0000</pubDate>
		<dc:creator>drfav</dc:creator>
				<category><![CDATA[KDE]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[authorization services]]></category>
		<category><![CDATA[kauth]]></category>
		<category><![CDATA[kde]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[policykit]]></category>

		<guid isPermaLink="false">http://drfav.wordpress.com/?p=173</guid>
		<description><![CDATA[Yes, KAuth is finally in KDELibs. Yes, systemsettings has integration. Yes, the first module (date/time) is already ported &#38; ready. I know this was a long awaited feature by many of you, and now it&#8217;s in. But today, I want to show developers how to enjoy the new power of this framework.
First of all, what [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=drfav.wordpress.com&blog=1329113&post=173&subd=drfav&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Yes, KAuth is finally in KDELibs. Yes, systemsettings has integration. Yes, the first module (date/time) is already ported &amp; ready. I know this was a long awaited feature by many of you, and now it&#8217;s in. But today, I want to show developers how to enjoy the new power of this framework.</p>
<p>First of all, what is it? It is the first known framework to check for authorizations by fine granting them and/or granting applications high privileges in a transparent, secure way completely integrated with the desktop and completely native and multiplatform. So you have quite some power in your hands. Why should you use it? Well, if you want to lock out users from certain features, for example, or to perform privileged actions. But let&#8217;s get into details.</p>
<p>KPushButton and KAction have 2 new methods, which are setAuthAction and authAction. Just set a KAuth::Action into one of them and you will have the following things for free: the authentication will be automatically triggered when the action/button has been triggered, you will get an authorized() signal when the user actually got the authorization, and the button/action change their availability and appearance according to the action status. Quite straightforward, huh?</p>
<p>KCModule has a new method as well. It&#8217;s (set)needsAuthorization(). Whenever you set this to true, an action for it will be created, named &#8220;org.kde.kcontrol..save&#8221;, where name is your KCM&#8217;s main as specified in the KAboutData. Just do this, and you get all the ui integration for free and save() will get called just when the user grants that authorization. Even simpler, isn&#8217;t it?</p>
<p>Want to have a look? A tutorial on Techbase is coming up, but for now, you can simply have a look at kdebase/workspace/kcontrol/datetime and kdelibs/kdecore/auth/example to have an idea. I&#8217;ll ping you back when the tutorial gets ready <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  oh, and api.kde.org is your friend as well, Nicola made a great work in documenting all the library just for you guys to pick it up.</p>
<p>So put your thumbs up for a great GSoC project ended, and stay tuned, because this is just the beginning. The next keywords are now: KIO, GHNS, and KIOSK.</p>
<p>And put your hands up for the fun and the productivity we are having at Tokamak 3!!!</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/drfav.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/drfav.wordpress.com/173/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/drfav.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/drfav.wordpress.com/173/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/drfav.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/drfav.wordpress.com/173/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/drfav.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/drfav.wordpress.com/173/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/drfav.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/drfav.wordpress.com/173/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=drfav.wordpress.com&blog=1329113&post=173&subd=drfav&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://drfav.wordpress.com/2009/08/31/tokamak-kauth-into-kdelibs/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/01faf7015408f7f3e252055682e5f8ef?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">drfav</media:title>
		</media:content>
	</item>
		<item>
		<title>My take on the Mono/C# debate</title>
		<link>http://drfav.wordpress.com/2009/07/01/my-take-on-the-monoc-debate/</link>
		<comments>http://drfav.wordpress.com/2009/07/01/my-take-on-the-monoc-debate/#comments</comments>
		<pubDate>Wed, 01 Jul 2009 17:12:57 +0000</pubDate>
		<dc:creator>drfav</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[KDE]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Qt]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[gnome]]></category>
		<category><![CDATA[gtk]]></category>
		<category><![CDATA[kde]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[money]]></category>
		<category><![CDATA[mono]]></category>
		<category><![CDATA[shit]]></category>
		<category><![CDATA[solving problems]]></category>

		<guid isPermaLink="false">http://drfav.wordpress.com/?p=170</guid>
		<description><![CDATA[As you might have understood if you&#8217;re reading me, if you&#8217;re easily offendable on this matter, you&#8217;d better skip this post.
So, i figured out I should shout out something. Because I am always interested in hearing skilled, readable, balanced and well-made opinions from people such as Richard or Adrian, but I&#8217;m fucking tired of hearing [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=drfav.wordpress.com&blog=1329113&post=170&subd=drfav&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>As you might have understood if you&#8217;re reading me, if you&#8217;re easily offendable on this matter, you&#8217;d better skip this post.</p>
<p>So, i figured out I should shout out something. Because I am always interested in hearing skilled, readable, balanced and well-made opinions from people such as Richard or Adrian, but I&#8217;m fucking tired of hearing random people screaming out why mono is cool or not. These kind of people don&#8217;t even know what coding is about, or they just learned Java or C# at university and they&#8217;re like &#8220;oh shit, I can code!!&#8221;. STOP THAT.</p>
<p>This is a technical, and ethical problem that regards DEVELOPERS. Users will end up having choice. All you pro/anti-mono fanboys, what is difficult in installing or removing mono, being it provided by default or not? No matter what your position is.</p>
<p>After this small rant, hoping to have made some things clearer, let&#8217;s move forward.</p>
<p>I&#8217;d like to skip the ethics/politics part for a variety of reasons. First of all, I&#8217;m all for things that work, if they&#8217;re free, much better. That&#8217;s why I&#8217;m using closed nVidia drivers, because they work better. Secondly, everyone has freedom of choice. And this also means freedom on choosing where to be free. And I hope some false freedom advocates will revise their concept of freedoms. One should be free of being not free as well. And more than that, this is not my field, so I&#8217;ll just leave the word to someone knowledgeable (following what I said before)</p>
<p>That said.</p>
<p>I am still asking myself why on earth people should need Mono, .NET, C# or similar stuff. I am starting to think that while more and more people are starting to code, the overall coding skills are getting lower and lower. Maybe it&#8217;s just me being too strict in using almost always C/C++, but I remain extremely confident in the fact that if you don&#8217;t know how/don&#8217;t want to manage memory, you should be doing something else. I&#8217;m not saying that using python, ruby or similar stuff is bad: I do it as well, and enjoy doing it. I think being capable of using JUST python, ruby or similar stuff is bad. Also for broadening your mind and knowledge. Just my opinion anyway.</p>
<p>Before you start yelling at me: yes I used C#, and some friends such as Java (similarity is almost ridicolous). I wrote about that as well. There were some things I liked, but a majority of things I disliked.</p>
<p>Now, comparing what Java/C# has to offer (just to demonstrate that I&#8217;m not blindly bashing C# only, that I also like better than Java) with Qt, there should be a single question.</p>
<p>Why on earth someone should choose C# over Qt/C++?</p>
<p>I don&#8217;t know, really. Maybe introspection, it&#8217;s much better. Maybe serialization, it really works out. Maybe something else. But when i talk about something that should be the backbone of your program, such as event loops, threading, events, and whatever, Qt/C++ puts C#+Forms/WPF/etc to shame. Please come up with some technical reasons why C# is better. And don&#8217;t start with compilation: I don&#8217;t think it&#8217;s so relevant for a deployment.</p>
<p>I don&#8217;t want to spend more time talking about this: you can verify what I&#8217;m telling you is true by looking at the percentage of KDE code written in languages different from C++. And we have some great bindings.</p>
<p>So, what&#8217;s the conclusion? Why people can still code fast, efficiently and easily with an &#8220;old&#8221; language like C++? Probably because the toolkit/framework integrates extremely well and extends the language to fit everyone&#8217;s need. That&#8217;s what Qt does.</p>
<p>So this is the point, on which you are free to flame me until death: the problem is GTK. Consider the amount of programs recently written in GTK. A huge percentage of them is in Python or Mono. Let&#8217;s be clear: I don&#8217;t have anything against bindings. But try stopping your flaming ego and follow me a bit more.</p>
<p>We have PyQt and Qyoto. Yet they are not so widespread and planetkde is filled with new C++/Qt apps. So where is the problem? Probably people are no longer comfortable in programming with GTK/C. I did it a while ago, and it was quite a pain to me actually, and it made me want to look into python, damn my laziness. I think that this is the kind of route a lot of people take nowadays.</p>
<p>Now you&#8217;re expecting a sort of GTK/GNOME flaming here, right? Well, bad for you. This was not meant to be a flame, just an introspection to understand the reason why mono existed (see the introduction). And my take is that mono is just a way to &#8220;modernize&#8221; something that is NOT obsolete (and I repeat: NOT obsolete), but simply no longer fitting the 2009 attitude of &#8220;oh shit I need to create a program in 3 lines of code!!!&#8221;. To demonstrate that I&#8217;m actually not attacking GNOME and/or GTK, I&#8217;ll give you Microsoft.</p>
<p>If you think about it, the iter that Microsoft followed for getting more developers is not that different from the one GTK took. So, what&#8217;s the conclusion?</p>
<p>Mono is not the panacea. Mono is a great way of developing easily, without spending that much time. But some skilled GNOME developers already showed the world (*cough*GNote*cough*) how Mono is NOT saving time to someone who is skilled and knows how to do things the right way. To me, GNote is not a symbol of freedom, but a symbol of the fact that people can still use GTK with success with C or C++ (and by this point I hope you realized that this is not a war against GTK, more some constructive criticysm).</p>
<p>So, Mono is nice to have, but not required to have, and not necessary to have. And I don&#8217;t see (today) a reason why a developer should choose C#/.NET/Mono over Qt or some other great frameworks out there. And I still think it is a nicer bridge FROM Linux TO Windows, and not the other way round. You should be blind if you can&#8217;t see it, or you&#8217;ve been simply hiding in your house without looking for a job those days. People need to make money, dude.</p>
<p>Last line, I bored you enough: my solution to the debate is not boycotting, insulting or anything: is having easier, crossplatform toolkits, and more skilled developers.</p>
<p>And now come on, the flaming box is just some pixels away from you!</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/drfav.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/drfav.wordpress.com/170/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/drfav.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/drfav.wordpress.com/170/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/drfav.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/drfav.wordpress.com/170/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/drfav.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/drfav.wordpress.com/170/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/drfav.wordpress.com/170/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/drfav.wordpress.com/170/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=drfav.wordpress.com&blog=1329113&post=170&subd=drfav&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://drfav.wordpress.com/2009/07/01/my-take-on-the-monoc-debate/feed/</wfw:commentRss>
		<slash:comments>57</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/01faf7015408f7f3e252055682e5f8ef?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">drfav</media:title>
		</media:content>
	</item>
		<item>
		<title>Some help on a possible new instrument</title>
		<link>http://drfav.wordpress.com/2009/06/23/some-help-on-a-possible-new-instrument/</link>
		<comments>http://drfav.wordpress.com/2009/06/23/some-help-on-a-possible-new-instrument/#comments</comments>
		<pubDate>Tue, 23 Jun 2009 10:58:00 +0000</pubDate>
		<dc:creator>drfav</dc:creator>
				<category><![CDATA[KDE]]></category>
		<category><![CDATA[Music]]></category>
		<category><![CDATA[band]]></category>
		<category><![CDATA[buy]]></category>
		<category><![CDATA[kde]]></category>
		<category><![CDATA[rock]]></category>
		<category><![CDATA[synth]]></category>
		<category><![CDATA[synthesizer]]></category>

		<guid isPermaLink="false">http://drfav.wordpress.com/?p=168</guid>
		<description><![CDATA[Dear lazyweb,
As you know, it&#8217;s not in my style filling PlanetKDE with non-KDE related stuff, but this time I really need some help from the community, as I know that there are some good musicians around you.
I&#8217;m about to buy a synthesizer, since we&#8217;re adding some electronical influences in our band (we&#8217;re mostly playing rock [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=drfav.wordpress.com&blog=1329113&post=168&subd=drfav&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Dear lazyweb,</p>
<p>As you know, it&#8217;s not in my style filling PlanetKDE with non-KDE related stuff, but this time I really need some help from the community, as I know that there are some good musicians around you.</p>
<p>I&#8217;m about to buy a synthesizer, since we&#8217;re adding some electronical influences in our band (we&#8217;re mostly playing rock music). So, here it comes. I need something on a decent budget, with good action on the keys (I&#8217;m quite choosey as a pianist), and decent piano, strings, and lead sounds (square and sawtooth are the sounds that intrigue me the most at the moment, but I&#8217;m opening to a new world in which I&#8217;m quite ignorant).</p>
<p>I would use it with piano sounds, and with synth sounds, mostly to harmonize guitar parts (such as solos). I would let you taste a sample of our latest work but it&#8217;s still in the studio. Anyway, this synth should be suitable especially for live performances and optionally for composing.</p>
<p>At the moment, my choice for budget and everything is the <a href="http://www.roland.com/products/en/JUNO-G/index.html">roland Juno-G</a>. It fits my budget and it looks like it will fit my needs as well.</p>
<p>Here&#8217;s the question: any advice on this being a good/not bad/worst ever choice? Any other synths you would recommend me?</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/drfav.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/drfav.wordpress.com/168/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/drfav.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/drfav.wordpress.com/168/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/drfav.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/drfav.wordpress.com/168/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/drfav.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/drfav.wordpress.com/168/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/drfav.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/drfav.wordpress.com/168/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=drfav.wordpress.com&blog=1329113&post=168&subd=drfav&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://drfav.wordpress.com/2009/06/23/some-help-on-a-possible-new-instrument/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/01faf7015408f7f3e252055682e5f8ef?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">drfav</media:title>
		</media:content>
	</item>
		<item>
		<title>Oslo, day two</title>
		<link>http://drfav.wordpress.com/2009/06/06/oslo-day-two/</link>
		<comments>http://drfav.wordpress.com/2009/06/06/oslo-day-two/#comments</comments>
		<pubDate>Sat, 06 Jun 2009 08:26:08 +0000</pubDate>
		<dc:creator>drfav</dc:creator>
				<category><![CDATA[KDE]]></category>
		<category><![CDATA[Real Life]]></category>
		<category><![CDATA[beer]]></category>
		<category><![CDATA[kde]]></category>
		<category><![CDATA[metal up your ass]]></category>
		<category><![CDATA[nokia]]></category>
		<category><![CDATA[oslo]]></category>
		<category><![CDATA[stuff]]></category>
		<category><![CDATA[trolls]]></category>

		<guid isPermaLink="false">http://drfav.wordpress.com/?p=164</guid>
		<description><![CDATA[Well, it&#8217;s day 3, but yesterday I had no time to blog or whatever, so I&#8217;m just writing with a day of delay.
So yesterday I woke up at a decent time to check out from Anker and getting to Munch. After having left my luggage over there, waiting for Will to arrive, I took a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=drfav.wordpress.com&blog=1329113&post=164&subd=drfav&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Well, it&#8217;s day 3, but yesterday I had no time to blog or whatever, so I&#8217;m just writing with a day of delay.</p>
<p>So yesterday I woke up at a decent time to check out from Anker and getting to Munch. After having left my luggage over there, waiting for Will to arrive, I took a tour of the Oslo fjord, which is really nice, especially the park around it. I had a nice and relaxing walk, and then I catched up with Will and headed up for Nokia offices.</p>
<p>Once there we met all Qt software guys, that were basically waiting for us after having read my previous blogpost. I suppose that is the web 2.0 deal everyone&#8217;s talking about. Anyway.</p>
<p>We had lunch with Knut, Thiago and Alexis and talked about some stuff, while waiting for Frederik and the students to catch up with us. We actually discussed some plans about the networkmanager applet and we now have a defined direction, that we will probably make real today. That was worth quite some hours of work, and we left the office around midnight to get some fun in the town.</p>
<p>So me, Frederik (who is basically sitting next to me writing probably the same stuff on his blog, and that feels kinda weird), Will and Olivier took the chance and went into the Garage having a beer. After Will left us, since he was really tired after his flight, the three of us went to Rock Inn to get another beer and some nice music.</p>
<p>Waking up today felt kinda hard, and me and Frederik are basically waiting for the other guys to arrive. Well, it&#8217;s always like people going to bed later are the ones waking up earlier. And hopefully, you should see some code today as well.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/drfav.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/drfav.wordpress.com/164/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/drfav.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/drfav.wordpress.com/164/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/drfav.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/drfav.wordpress.com/164/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/drfav.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/drfav.wordpress.com/164/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/drfav.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/drfav.wordpress.com/164/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=drfav.wordpress.com&blog=1329113&post=164&subd=drfav&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://drfav.wordpress.com/2009/06/06/oslo-day-two/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/01faf7015408f7f3e252055682e5f8ef?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">drfav</media:title>
		</media:content>
	</item>
		<item>
		<title>Oslo, day one</title>
		<link>http://drfav.wordpress.com/2009/06/04/oslo-day-one/</link>
		<comments>http://drfav.wordpress.com/2009/06/04/oslo-day-one/#comments</comments>
		<pubDate>Thu, 04 Jun 2009 17:15:49 +0000</pubDate>
		<dc:creator>drfav</dc:creator>
				<category><![CDATA[KDE]]></category>
		<category><![CDATA[Real Life]]></category>
		<category><![CDATA[kde]]></category>
		<category><![CDATA[norway]]></category>
		<category><![CDATA[oslo]]></category>

		<guid isPermaLink="false">http://drfav.wordpress.com/?p=162</guid>
		<description><![CDATA[So I finally arrived in Oslo for the NM applet meeting. Today I&#8217;m alone, since the meeting starts tomorrow, but I came here one day before to cut the travel costs (yes, hard to believe, but it&#8217;s true) and I decided to write a small something everyday, since it&#8217;s a whole new experience for me.
I [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=drfav.wordpress.com&blog=1329113&post=162&subd=drfav&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>So I finally arrived in Oslo for the NM applet meeting. Today I&#8217;m alone, since the meeting starts tomorrow, but I came here one day before to cut the travel costs (yes, hard to believe, but it&#8217;s true) and I decided to write a small something everyday, since it&#8217;s a whole new experience for me.</p>
<p>I left from Bergamo at 10.45. 2 hours and a half later and 20°C less after, I finally arrived in Torp, greeted by the awesome view of the Danish and Norwegian coasts, one of the most amazing things I&#8217;ve ever seen. It still took an hour and a half to get to Oslo, and some more time to reach Anker, where I&#8217;m staying just for this night (I&#8217;ll join the rest of the KDE people in Munch tomorrow). The room is really nice, especially for the price paid.</p>
<p>Oslo is kinda expensive, but I fit myself finding some pizza slices at 20kr (2 for 30). Not the best deal ever, but quite cheap for the standards indeed, I hope tonight I&#8217;ll be eating somewhere decent.</p>
<p>The city is nice. Well, it rained almost all the time, but I took the time to walk on the Opera theatre, have a quick look at the fortress, and  walk through the main streets of the city.</p>
<p>A fun fact is that I needed an adaptor for my PC. Without knowing which kind of ac plugs they had in Norway, I brought an english one from home, and came here to find out that they have german-like ones. So I went to a shop (on advice of the people at the hostel) to buy another adaptor, and they told me they the only ones they had were for english plugs. As you can imagine, my setup now consist of my laptop plugged into my adaptor, which is plugged into the adaptor I just bought. Lucky chance indeed.</p>
<p>Tonight I&#8217;ll look around for some pubs &amp; clubs, hoping to have a great night in Oslo. And if you&#8217;re hanging around there, be sure to catch us in the next days to join the fun!</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/drfav.wordpress.com/162/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/drfav.wordpress.com/162/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/drfav.wordpress.com/162/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/drfav.wordpress.com/162/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/drfav.wordpress.com/162/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/drfav.wordpress.com/162/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/drfav.wordpress.com/162/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/drfav.wordpress.com/162/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/drfav.wordpress.com/162/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/drfav.wordpress.com/162/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=drfav.wordpress.com&blog=1329113&post=162&subd=drfav&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://drfav.wordpress.com/2009/06/04/oslo-day-one/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/01faf7015408f7f3e252055682e5f8ef?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">drfav</media:title>
		</media:content>
	</item>
		<item>
		<title>Getting a hold on small things</title>
		<link>http://drfav.wordpress.com/2009/06/02/getting-a-hold-on-small-things/</link>
		<comments>http://drfav.wordpress.com/2009/06/02/getting-a-hold-on-small-things/#comments</comments>
		<pubDate>Tue, 02 Jun 2009 00:04:45 +0000</pubDate>
		<dc:creator>drfav</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://drfav.wordpress.com/?p=160</guid>
		<description><![CDATA[I&#8217;m sitting on my bed sipping one of the great beers I took home from bruxelles, eating some great Provolone (an Italian cheese) and salami, while I&#8217;m listening to Queen, Beatles and Rush, chatting with some friends and doing some code in the very spare moments.
Shit, this is happiness.
I feel so comfortably well that I [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=drfav.wordpress.com&blog=1329113&post=160&subd=drfav&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I&#8217;m sitting on my bed sipping one of the great beers I took home from bruxelles, eating some great Provolone (an Italian cheese) and salami, while I&#8217;m listening to Queen, Beatles and Rush, chatting with some friends and doing some code in the very spare moments.</p>
<p>Shit, this is happiness.</p>
<p>I feel so comfortably well that I really have to realize (once again) how small things change your life; how small things _are_ your life. There are a lot of small things, like this one, like seeing a smile, reading a pink post-it, play your music until your fingers and throat hurt, that make you feel happy, well, without knowing a reason. It&#8217;s like being in love. Most of the times it&#8217;s a person. Some times you&#8217;re simply in love with your life. And sometimes you happen to be in love with a person that made you love your life again.</p>
<p><em>This post is simple, small and short too, to keep things consistent <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  (and hoping it will be beautiful as well to read)</em></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/drfav.wordpress.com/160/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/drfav.wordpress.com/160/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/drfav.wordpress.com/160/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/drfav.wordpress.com/160/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/drfav.wordpress.com/160/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/drfav.wordpress.com/160/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/drfav.wordpress.com/160/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/drfav.wordpress.com/160/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/drfav.wordpress.com/160/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/drfav.wordpress.com/160/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=drfav.wordpress.com&blog=1329113&post=160&subd=drfav&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://drfav.wordpress.com/2009/06/02/getting-a-hold-on-small-things/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/01faf7015408f7f3e252055682e5f8ef?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">drfav</media:title>
		</media:content>
	</item>
		<item>
		<title>The future of PowerDevil (and of power management)</title>
		<link>http://drfav.wordpress.com/2009/05/03/the-future-of-powerdevil-and-of-power-management/</link>
		<comments>http://drfav.wordpress.com/2009/05/03/the-future-of-powerdevil-and-of-power-management/#comments</comments>
		<pubDate>Sun, 03 May 2009 08:44:19 +0000</pubDate>
		<dc:creator>drfav</dc:creator>
				<category><![CDATA[KDE]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[PowerDevil]]></category>
		<category><![CDATA[Qt]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[4.4]]></category>
		<category><![CDATA[actions]]></category>
		<category><![CDATA[events]]></category>
		<category><![CDATA[kde]]></category>
		<category><![CDATA[kde4]]></category>
		<category><![CDATA[power]]></category>
		<category><![CDATA[power management]]></category>
		<category><![CDATA[powerdevil]]></category>

		<guid isPermaLink="false">http://drfav.wordpress.com/?p=152</guid>
		<description><![CDATA[Long time no see, again a post on PowerDevil.
PowerDevil has proven to be quite a solid software, and I&#8217;m both proud and happy about it: the 4.2-&#62;4.3 transition has happened almost with no maintainance (apart from a critical bugfix from Jacopo, thanks!). The proportion of bugs affecting it regard 20% up/downstream problems, 25% &#8220;please implement [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=drfav.wordpress.com&blog=1329113&post=152&subd=drfav&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Long time no see, again a post on PowerDevil.</p>
<p>PowerDevil has proven to be quite a solid software, and I&#8217;m both proud and happy about it: the 4.2-&gt;4.3 transition has happened almost with no maintainance (apart from a critical bugfix from Jacopo, thanks!). The proportion of bugs affecting it regard 20% up/downstream problems, 25% &#8220;please implement the feature x&#8221; and 15% &#8220;oh, the GUI sucks and looks confusing&#8221; (yeah, percentages are not accurate, I can tell)</p>
<p>The problem is that PowerDevil GUI does suck, big time, because it&#8217;s way too cluttered. However, I can&#8217;t add cool and nice features without cluttering it even more. Result, there has to be something wrong. The topic came back today by chance in a short conversation with Martin, and while I was eating, suddenly (and by chance, I was not even thinking about it) I got struck by an idea.</p>
<p>Let&#8217;s start knowing that Power Management is something that is very much linked to the hardware, and the average user should have a minor part in configuring/dealing with it.</p>
<p>Today, power management systems are based on profiles, more or less configurable. They offer the user access to a set of things to configure, and that&#8217;s it. There are some problems, though.</p>
<ul>
<li>The options are limited. Some features will still be missing</li>
<li>The options can&#8217;t be expanded: code gets fat, GUI gets unusable</li>
<li>Everyone loses on the long run: developers have a dirty code base, users have limited possibilities and/or an unusable GUI, distribution don&#8217;t have much flexibility in providing custom and effective settings, hardware vendors even less.</li>
</ul>
<p>To me, this means one thing: the current profile concept fails. That&#8217;s why I thought about an alternative: putting an additional layer of abstraction: let&#8217;s call it &#8220;Actions&#8221;.</p>
<p>Actions are containers of, well, actions such as setting CPU scaling, brightness, and anything you can configure with PowerDevil right now. They come in form of plugins (KPlugin ftw!), so that you can create custom Actions (mind the capital letter) by defining your very own set of actions. But let&#8217;s make an example, to make things clearer.</p>
<p>You create a new Action, name it &#8220;Set Powersaving mode&#8221;. In it, you define (using the available plugins), that the scaling should be ondemand, the brightness 10%, the power scheme &#8220;powersaving&#8221;. That&#8217;s it. In the profile chooser, you now have a similar situation: a <strong>single page </strong>that has some per-event based fields: for example, &#8220;When PC is idle for more than 15 minutes, do&#8221;. Now what do you do? Just set an Action, in this case &#8220;Set Powersaving Mode&#8221;.</p>
<p>Everyone wins. Still can&#8217;t see why? I&#8217;ll tell you:</p>
<ul>
<li>Average users: they have to do almost no configuration, and they have it in a very readable form (as Actions can have human readable names, such as &#8220;Set Powersaving mode&#8221;), and with the best combination in the Actions, that were defined by KDE team, or by the Distro (better), or by the hardware manifacturer (even better)</li>
<li>Power user: you finally can do the f**k you want with no limits, and I think that&#8217;s enough. And the GUI would be damn clean.</li>
<li>Distributions: you have a way to define your very own actions based on your specific configuration, in a truly easy way, providing your users the best defaults possible</li>
<li>Hardware vendors, and netbook vendors, I&#8217;m mainly looking at you: suppose your new motherboard has a &#8220;WOWSAVEALOTOFPOWER&#8221; feature, that can be used only on your motherboard by calling some weird functions. Pretty fine. Go ahead, and write 100 line of code to add a new plugin to PowerDevil&#8217;s Action system, to let Powerdevil handle it. Netbook vendors shipping KDE can also include it in their default Actions, to give their users the very best.</li>
</ul>
<p>Looks cool? Obviously, we still miss one step, the configuration of events. I mean, leaving &#8220;When the pc is idle for &#8230; minutes&#8221; gets you limited and hardcoded. So simple, let&#8217;s apply the same concept to events too. A profile configuration GUI would look like this (squallid, more conceptual than anything else mockup):</p>
<p><a href="http://drfav.files.wordpress.com/2009/05/powerdconcept.png"><img class="size-full wp-image-154" title="New Concept" src="http://drfav.files.wordpress.com/2009/05/powerdconcept.png?w=497&#038;h=385" alt="That's the concept. Slick, huh?" width="497" height="385" /></a>That&#8217;s the concept. Slick, huh?</p>
<p>Well, even if it&#8217;s a fast and quick mockup, I think you will agree with me that it already looks much more polished than the current one <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  And as you can see, adding a new event is very, very easy and human-readable. I also have a mockup for the Action editor:</p>
<p><a href="http://drfav.files.wordpress.com/2009/05/powerdconcept1.png"><img class="size-full wp-image-156" title="Action Editor" src="http://drfav.files.wordpress.com/2009/05/powerdconcept1.png?w=497&#038;h=365" alt="Even more slick!" width="497" height="365" /></a>Even more slick!</p>
<p>That&#8217;s it, the Events one would be analogue to the action one. As you can see, both GUIs need some love, but have a very simple and powerful concept behind. What&#8217;s more, is that this way we are getting even closer to Power Management integration in the system: all application would be able to define their own events/actions, allowing, for example, to stop your music when you enter deep powersaving mode, or anything you can think of.</p>
<p>Now, I&#8217;ve been eloquent enough, and now I would like to grab opinion and ideas. Do you like it? Would you like to see it in 4.4? Do you think it&#8217;s a major improvement and/or sucks? Let&#8217;s gather some ideas so that I know where to work on <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/drfav.wordpress.com/152/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/drfav.wordpress.com/152/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/drfav.wordpress.com/152/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/drfav.wordpress.com/152/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/drfav.wordpress.com/152/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/drfav.wordpress.com/152/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/drfav.wordpress.com/152/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/drfav.wordpress.com/152/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/drfav.wordpress.com/152/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/drfav.wordpress.com/152/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=drfav.wordpress.com&blog=1329113&post=152&subd=drfav&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://drfav.wordpress.com/2009/05/03/the-future-of-powerdevil-and-of-power-management/feed/</wfw:commentRss>
		<slash:comments>31</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/01faf7015408f7f3e252055682e5f8ef?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">drfav</media:title>
		</media:content>

		<media:content url="http://drfav.files.wordpress.com/2009/05/powerdconcept.png" medium="image">
			<media:title type="html">New Concept</media:title>
		</media:content>

		<media:content url="http://drfav.files.wordpress.com/2009/05/powerdconcept1.png" medium="image">
			<media:title type="html">Action Editor</media:title>
		</media:content>
	</item>
	</channel>
</rss>