<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   >
<channel>
    
    <title>Amarok Blog - Flameeyes</title>
    <link>http://amarok.kde.org/blog/</link>
    <description>Amarok developers at work</description>
    <dc:language>en</dc:language>
    <generator>Serendipity 1.6 - http://www.s9y.org/</generator>
    <pubDate>Thu, 10 May 2007 01:38:00 GMT</pubDate>

    <image>
        <url>http://amarok.kde.org/blog/templates/default/img/s9y_banner_small.png</url>
        <title>RSS: Amarok Blog - Flameeyes - Amarok developers at work</title>
        <link>http://amarok.kde.org/blog/</link>
        <width>100</width>
        <height>21</height>
    </image>

<item>
    <title>My fiddling with OpenJDK</title>
    <link>http://amarok.kde.org/blog/archives/393-My-fiddling-with-OpenJDK.html</link>
            <category>Flameeyes</category>
    
    <comments>http://amarok.kde.org/blog/archives/393-My-fiddling-with-OpenJDK.html#comments</comments>
    <wfw:comment>http://amarok.kde.org/blog/wfwcomment.php?cid=393</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://amarok.kde.org/blog/rss.php?version=2.0&amp;type=comments&amp;cid=393</wfw:commentRss>
    

    <author>nospam@example.com (Diego Pettenò)</author>
    <content:encoded>
    &lt;p&gt;It might sound strange coming from someone who wrote a post titled &lt;a href=&quot;http://planet.gentoo.org/developers/flameeyes/2005/08/13/rant_the_java_t_crap&quot;&gt;The Java t..crap&lt;/a&gt; but I&amp;#8217;m liking playing with OpenJDK.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Not like my Java skills (pretty much non-existant, I used it only a few times in my life) are improved, but I find myself comfortable when working with most build systems, after you get scons out of the way (note that I didn&amp;#8217;t say I &lt;strong&gt;like&lt;/strong&gt; it, but I can do it just fine), and I do have experience with adding support for external libraries, after all, and that is something that OpenJDK might need.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;So, let&amp;#8217;s start from the start. The first problem was getting to build OpenJDK on Linux. If you try to build it on &lt;span class=&quot;caps&quot;&gt;AMD64&lt;/span&gt; you&amp;#8217;ll see it fails, the reason for this is that the list of files to compile on hotspot is too long for the maximum size of arguments available on Linux; this in turn is caused by the long default path for sources that Portage sets. Petteri was able to build it fine because on x86 the architecture name is &amp;#8220;i486&amp;#8221;, while on &lt;span class=&quot;caps&quot;&gt;AMD64&lt;/span&gt; is, well, &amp;#8220;amd64&amp;#8221;: the extra character there is enough to make it burn in flames. Kelly O&amp;#8217;Hair from Sun is looking after the issue now, but he says it might take a few weeks to get the results out; not a problem, I suppose, in the mean time you might want to try changing &lt;code&gt;PORTAGE_TMPDIR&lt;/code&gt; to use /tmp for openjdk (if you have space in the /tmp partition) or you might want to fool the ebuild by renaming the openjdk directory inside &lt;code&gt;$WORKDIR&lt;/code&gt; to something shorter, like &amp;#8220;ojdk&amp;#8221;; actually, a single character less will work just fine.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;After getting a working build of OpenJDK, and trying so that it worked fine on Konqueror (it does!), I had to start messing with it, or I wouldn&amp;#8217;t have been myself &lt;img src=&quot;http://amarok.kde.org/blog/templates/default/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; The first thing was to get it to build with my flags correctly; I was able to get something that worked, but there are a few issues, and I&amp;#8217;d like to be able to provide a less invasive patch. O&amp;#8217;Hair also got me on the right track now, by telling that hotspot and j2se build systems are different, which might call for just using the same method on boths, by ignoring the default C(XX)FLAGS values coming from environment, and instead use the _OTHER variables. This should allow for just four lines changed, if I find where to put the &lt;span class=&quot;caps&quot;&gt;CFLAGS&lt;/span&gt;/CXXFLAGS unset.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;After this I started thinking of an useful hack to do to at least understand how the build system works; I could have looked at fixing a few warnings, but I thought it would have been more useful to actually start by looking at the build system, that is what I will need to understand to be able to get OpenJDK building on FreeBSD. I&amp;#8217;ve seen zlib-1.1.3 sources in the tree, so I decided to find a way to build against external zlib. Easy, quick, interesting and useful.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Why useful? Well, first of all, it would use a more stable version of zlib, and would share its code with the rest of the system (almost every process has a zlib copy loaded one way or another), second of all that would make it non-vulnerable by possible attacks on the zlib code. Unfortunately adding the support for external zlib was not as easy as I thought, but it was mostly because I stupidly forgot &lt;code&gt;FEATURES=keepwork&lt;/code&gt; on the environment (I wanted to get the object files output, as I want to see if the executable stack problems that affects Java are due to the architecture, or just a problem of not having the &lt;span class=&quot;caps&quot;&gt;GNU&lt;/span&gt; stack markings on the source files).&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;And while looking at fixing this, and seeing a &lt;code&gt;tempnam()&lt;/code&gt; warning at linking stage, I ended up finding a tiny memory leak, as the string coming from tempnam() is never freed. I&amp;#8217;ve prepared a patch and sent it, hopefully to the right mailing list.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Other hacks that might be useful would be finding a way to enable or disable &lt;span class=&quot;caps&quot;&gt;ALSA&lt;/span&gt; and Motif bindings building, to reduce the size of the final output, and to avoid depending on those to build openjdk, but I wonder if Sun would ever accept such changes.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;When I&amp;#8217;ll be comfortable enough with both build system and development environment, I&amp;#8217;ll see to start working on building OpenJDK on FreeBSD; for what I can read on the build system mailing list, it should be possible, for now, to build OpenJDK using a &lt;span class=&quot;caps&quot;&gt;JDK 1&lt;/span&gt;.5, which &lt;strong&gt;is&lt;/strong&gt; available for Gentoo/FreeBSD, even if the best thing would be using 1.6. Probably I&amp;#8217;ll have to provide a openjdk-bin package for Gentoo/FreeBSD to use as a seed, afterward.. this of course if the license allows to do this (most of OpenJDK is &lt;span class=&quot;caps&quot;&gt;GPL&lt;/span&gt;-2, but there are some binary blobs still present, until they are replaced, it might not be possible to redistribute the binary itself).&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Unfortunately a big problem I have to face while hacking at this is that I don&amp;#8217;t have any Solaris/OpenSolaris installation, and I suppose that Sun will accept more willingly contributions that don&amp;#8217;t break their main target platform &lt;img src=&quot;http://amarok.kde.org/blog/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Now, of course, the reasons I have to find this project interesting and to revert my attitude toward Java are not limited to the simple &lt;span class=&quot;caps&quot;&gt;GPL&lt;/span&gt;-2 licensing. What I find more attractive, and makes me hope I&amp;#8217;m not mistaken on my judgement, is that now it would be possible to support more hardware platforms, making Java a true platform agnostic language (okay, Kaffe help a bit with this, but the results are not really at the same level), and will also allow to support more operating systems. And with more users&amp;#8217; contributions, it will probably also get better optimisations (hey we got guys like FFmpeg devs who are able to optimise the hell out of multimedia codecs, someone might find useful things to improve on OpenJDK too!).&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;For what concerns Gentoo/FreeBSD, for sure FreeBSD guys have already some build definitions to support FreeBSD; the problem of those are that are likely not &lt;span class=&quot;caps&quot;&gt;GPL&lt;/span&gt;-2 as it is, as they were designed for previous &lt;span class=&quot;caps&quot;&gt;JDK&lt;/span&gt; versions, so I&amp;#8217;d rather not even look at them to avoid legal issues. The assembler code would likely be the same between Linux and FreeBSD, with the same architecture; for &lt;span class=&quot;caps&quot;&gt;SPARC&lt;/span&gt;, the code might be just taken out of the Solaris assembler sources, at least on i486, the assembler between Linux and Solaris doesn&amp;#8217;t change besides from a few minor places, and the main issue there is the difference in the assembler program used, and thus in the syntax.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Let&amp;#8217;s try to make Java a truly Free platform, and allow it to run on as many system as possible, then it might replace Flash and beat the heck out of Silverlight; Sun seems to be in the right mind set&amp;#8230; so waste no time!&lt;/p&gt;&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Thu, 10 May 2007 01:38:00 +0000</pubDate>
    <guid isPermaLink="false">http://amarok.kde.org/blog/archives/393-guid.html</guid>
    
</item>
<item>
    <title>Avoid SpamAssassin 3.2.0</title>
    <link>http://amarok.kde.org/blog/archives/392-Avoid-SpamAssassin-3.2.0.html</link>
            <category>Flameeyes</category>
    
    <comments>http://amarok.kde.org/blog/archives/392-Avoid-SpamAssassin-3.2.0.html#comments</comments>
    <wfw:comment>http://amarok.kde.org/blog/wfwcomment.php?cid=392</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://amarok.kde.org/blog/rss.php?version=2.0&amp;type=comments&amp;cid=392</wfw:commentRss>
    

    <author>nospam@example.com (Diego Pettenò)</author>
    <content:encoded>
    &lt;p&gt;Seems like this release has some problems, I&amp;#8217;ve been seeing the Junk folder empty for the past few days, and I thought the problem was due to PostgreSQL update (that&amp;#8217;s also a damned update, but that&amp;#8217;s for another day). Seems like 3.2.0 instead is not scoring anything at all anymore.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Mails that are pure spam are not even considered by 3.2.0 as possible spam, marking them with a 0.0 score, while 3.1.8 finds them just fine.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;I&amp;#8217;ve downgraded to 3.1.8 and I&amp;#8217;ll probably stick with that for a while.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Ah and forgot to count that the update channel for 3.2 is broken too, with two different bugs, so it can&amp;#8217;t even be updated.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;I hope in a 3.2.1, but I won&amp;#8217;t count on it as it is.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;By the way, I got some progress on OpenJDK, I&amp;#8217;ll probably blog about that later or tomorrow.&lt;/p&gt;&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Wed, 09 May 2007 22:36:00 +0000</pubDate>
    <guid isPermaLink="false">http://amarok.kde.org/blog/archives/392-guid.html</guid>
    
</item>
<item>
    <title>OpenJDK and Gentoo/FreeBSD</title>
    <link>http://amarok.kde.org/blog/archives/391-OpenJDK-and-GentooFreeBSD.html</link>
            <category>Flameeyes</category>
    
    <comments>http://amarok.kde.org/blog/archives/391-OpenJDK-and-GentooFreeBSD.html#comments</comments>
    <wfw:comment>http://amarok.kde.org/blog/wfwcomment.php?cid=391</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://amarok.kde.org/blog/rss.php?version=2.0&amp;type=comments&amp;cid=391</wfw:commentRss>
    

    <author>nospam@example.com (Diego Pettenò)</author>
    <content:encoded>
    &lt;p&gt;So, &lt;a href=&quot;http://planet.gentoo.org/developers/betelgeuse/2007/05/08/openjdk_ebuild&quot;&gt;Betelgeuse&lt;/a&gt; blogged about the new partly-free &lt;span class=&quot;caps&quot;&gt;JDK&lt;/span&gt; released by Sun Microsystems. Kudos to them for actually starting to fix the Java Trap. Hopefully in the next months we&amp;#8217;ll finally see Java taking the place it was designed for in development of platform-agnostic software, and applets in web pages, with the (hoped) availability of it on more platform that are available right now.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Of course I want to get OpenJDK working on Gentoo/FreeBSD as soon as possible, as the FreeBSD Foundation&amp;#8217;s &amp;#8220;Diablo&amp;#8221; project seems to be stale and broken (latest version is 1.5.0-7, I&amp;#8217;m not even sure if it&amp;#8217;s vulnerable, as I remember some security advisories for sun-jdk for Linux), and I wanted to move to Tomcat for my blog. So I asked Betelgeuse a bit of information about openjdk and downloaded the Java &lt;strong&gt;Experimental&lt;/strong&gt; overlay, and decided to merge openjdk on Linux first.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;To get it to work on Gentoo/FreeBSD the first thing is to get the Linux emulation support at least partly working, as a &lt;span class=&quot;caps&quot;&gt;JDK 1&lt;/span&gt;.7 is needed as a seed to build OpenJDK (this reminds me a lot of &lt;span class=&quot;caps&quot;&gt;GHC&lt;/span&gt; unfortunately). So I&amp;#8217;ll work on it until I can get OpenJDK building here.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Unfortunately I can&amp;#8217;t build openjdk yet, the build fails with an &amp;#8220;Argument list too long&amp;#8221; error in an execve() call. I&amp;#8217;m not sure what causes it, but I hope to investigate it further in the near future (maybe I should ask Betelgeuse tomorrow after his exam).&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Another problem I&amp;#8217;ve found with OpenJDK is that the build of hotspot mixes the values of &lt;span class=&quot;caps&quot;&gt;CFLAGS&lt;/span&gt; and &lt;span class=&quot;caps&quot;&gt;CXXFLAGS&lt;/span&gt;, throwing a lot of warnings about &lt;code&gt;-Wno-pointer-sign&lt;/code&gt; and &lt;code&gt;-Wno-format-zero-length&lt;/code&gt; that I have in &lt;span class=&quot;caps&quot;&gt;CFLAGS&lt;/span&gt; and are not supported by &lt;span class=&quot;caps&quot;&gt;GNU C&lt;/span&gt;++ building. I&amp;#8217;ve tried fixing this one but I was unable to find the perfect patch to fix it, so I reported the bug with the tentative patch to Sun, hopefully they know their build system better than I do &lt;img src=&quot;http://amarok.kde.org/blog/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;When I&amp;#8217;m able to get OpenJDK building on Linux, and I understand the process well enough to work on it, then I&amp;#8217;ll try to do my best so that OpenJDK works on Gentoo/FreeBSD at the best I can. I&amp;#8217;m sure there are people from FreeBSD project working on it too, they did this already to get Diablo out, after all, but most of them don&amp;#8217;t blog so you can&amp;#8217;t really know what they are up to (beside if they are the same who would be releasing the new Diablos, they are probably missing in action for months now).&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Who knows, maybe we&amp;#8217;ll be able to get OpenJDK working on Gentoo/FreeBSD/SPARC64 too, that would be neat &lt;img src=&quot;http://amarok.kde.org/blog/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; After all, FreeBSD and Solaris aren&amp;#8217;t that much different (as the DTrace and the &lt;span class=&quot;caps&quot;&gt;ZFS&lt;/span&gt; ports shows) and &lt;span class=&quot;caps&quot;&gt;SPARC64&lt;/span&gt; is supported by Sun for sure &lt;img src=&quot;http://amarok.kde.org/blog/templates/default/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Tue, 08 May 2007 23:02:00 +0000</pubDate>
    <guid isPermaLink="false">http://amarok.kde.org/blog/archives/391-guid.html</guid>
    
</item>
<item>
    <title>The relaxing method failure</title>
    <link>http://amarok.kde.org/blog/archives/390-The-relaxing-method-failure.html</link>
            <category>Flameeyes</category>
    
    <comments>http://amarok.kde.org/blog/archives/390-The-relaxing-method-failure.html#comments</comments>
    <wfw:comment>http://amarok.kde.org/blog/wfwcomment.php?cid=390</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://amarok.kde.org/blog/rss.php?version=2.0&amp;type=comments&amp;cid=390</wfw:commentRss>
    

    <author>nospam@example.com (Diego Pettenò)</author>
    <content:encoded>
    &lt;p&gt;Not sure if you remember, but I&amp;#8217;ve started, since a month and a half ago, trying to relax myself by playing with the Nintendo DS. When I bought I also bought Mario Kart DS (provided with the unit itself) and Pokémon Sapphire (for &lt;span class=&quot;caps&quot;&gt;GBA&lt;/span&gt;, but that was needed also to protect the &lt;span class=&quot;caps&quot;&gt;GBA&lt;/span&gt; card slot, as the pre-Lite version doesn&amp;#8217;t have a dustcover for it). I&amp;#8217;m the nerd kind of guy who actually &lt;strong&gt;like&lt;/strong&gt; the Pokémon series, and I was pretty happy to play it through the end; I&amp;#8217;ve played emulated the previous generations, this was the first time I could afford a game myself, and so I took the chance.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;I don&amp;#8217;t actually like racing games, I got Mario Kart just because it was sold together with the unit, but I enjoyed it, especially to try out the Nintendo DS graphic which was quite nice. Of course after a while, playing only two games starts to be boring, so when I had the last cold I asked my syster to pick up Lego StarWars II for me.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Nice game, nice graphic, nice ideas&amp;#8230; too bad that starting from Episode V (the second of the three movies reproduced in the game), it starts to feel buggy.. there are times when you can end up stuck in a wall, requiring to end the mission and then restart from scratch. The game is nice so even if bugged, I continued playing, till in Episode &lt;span class=&quot;caps&quot;&gt;VI I&lt;/span&gt; got stuck in a big bug and I needed to search for the solution of the game to find how to pass that mission&amp;#8230; the solution also referred to the bug, so I did a bit of search, and I found that LucasArts admitted that the game, in its DS version, was shipped incomplete and unfinished. Nice one.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Oh well, as I said the game is interesting on its own so I don&amp;#8217;t feel like I totally wasted my money (I also got it relatively cheap), still I would have liked if Nintendo paid more attention to the title that are published worldwide, maybe putting a &amp;#8220;Notice: might contain annoying bugs&amp;#8221;  on the package&amp;#8230; okay I know it won&amp;#8217;t ever happen, but let&amp;#8217;s say that this game didn&amp;#8217;t relax me that much.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Then finally the game I was expecting was released, Yu-Gi-Oh Championship 2007, a nice game after all, although I don&amp;#8217;t play the &lt;span class=&quot;caps&quot;&gt;TCG&lt;/span&gt;, I found it quite interesting to play emulated before, so I gone for it as soon as it was available (via Amazon, as the local suppliers don&amp;#8217;t carry it), I received it last Saturday and I started playing around. The nice thing about this game is the online challenge, which finally allows me to play against human opponents: playing against the computer becomes just a run to a better deck every time until you can beat the next opponent.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;So there I go, I try to get some decent cards and start getting beaten up by human adversaries, I wasn&amp;#8217;t expecting anything different, but I wanted to see some more strategies before working out a deck that might work against the computer but not against an human.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;The online play is a nice thing, really cool especially since it&amp;#8217;s WiFi-based so you don&amp;#8217;t have to stay put while playing, and the stylus control in the game is well designed; but then I&amp;#8217;ve started feeling bothered by the repeated &amp;#8220;communication errors&amp;#8221; I started getting during games.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;First I thought it was truly random, then I&amp;#8217;ve seen it happened mostly when I was leading the game.. I thought of a coincidence, but when it happened after I &lt;strong&gt;did&lt;/strong&gt; win the game, the opponent coming to 0 life points&amp;#8230; I was sure the thing was not that random.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Now, of course Konami can&amp;#8217;t disallow people from closing their connection, or powering off the DS when they see they are losing, but&amp;#8230; they could at least assign you the bonus points for the match, or at least the 10 match points you get for playing online, when the adversary fails to complete the game!&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Even if I like the game, I&amp;#8217;m tempted to ask Konami my money back, online playing is poorly designed.&lt;/p&gt;&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Tue, 08 May 2007 00:56:00 +0000</pubDate>
    <guid isPermaLink="false">http://amarok.kde.org/blog/archives/390-guid.html</guid>
    
</item>
<item>
    <title>Proceeding with xine</title>
    <link>http://amarok.kde.org/blog/archives/384-Proceeding-with-xine.html</link>
            <category>Flameeyes</category>
    
    <comments>http://amarok.kde.org/blog/archives/384-Proceeding-with-xine.html#comments</comments>
    <wfw:comment>http://amarok.kde.org/blog/wfwcomment.php?cid=384</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://amarok.kde.org/blog/rss.php?version=2.0&amp;type=comments&amp;cid=384</wfw:commentRss>
    

    <author>nospam@example.com (Diego Pettenò)</author>
    <content:encoded>
    &lt;p&gt;My changes to xine in the audio conversion branch are improving step by step; now all the decoders should playback fine, with their maximum resolution, by using the 32-bit floating point format as highest upscale. &lt;span class=&quot;caps&quot;&gt;AC3&lt;/span&gt; files are still a problem, although thanks to moesaji I now know that the mysterious function reduces the value basically by a value of 383 units; it&amp;#8217;s still a mystery to me as I have no idea why that happens, and I can&amp;#8217;t seem to find any documentation about these magic numbes for other stuff but a52dec.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Anyway, beside a52dec, most of other decoders are already fixed for the new interface, and I&amp;#8217;ve started working on updating the &lt;span class=&quot;caps&quot;&gt;ALSA&lt;/span&gt; audio output plugin; unfortunately the code of that plugin is ugly and complex, and seems to be a great big compendium of bad code style. With my changes in the audio conversion branch, the size of the initialisation function was reduced by 1KB, which is far from being small. It should also reduce the number of strings to translate, as I&amp;#8217;ve used two loops rather than unrolling the tests for the capabilities of &lt;span class=&quot;caps&quot;&gt;ALSA&lt;/span&gt; devices, which then condensed the number of strings to translate (they are composed during output, rather than being complete literals).&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Hopefully the audio conversion branch will be merged into 1.2 series as soon as all the audio output plugins are converted, and a few more audio conversions routines are written. As the conversions are all limited to a single source file, it should also be quite easy to write more optimised routines using &lt;span class=&quot;caps&quot;&gt;SIMD&lt;/span&gt; extensions for various architectures.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;By working on this I ended up applying a few changes to 1.2 series itself already, by removing a few members from the decoder&amp;#8217;s state structure for many plugins, and putting them into the functions they are used (why declare them in a state structure that is allocated in heap and passed, by pointer, everywhere, when they are used only in a single function? Sometimes even in a single &lt;em&gt;branch&lt;/em&gt; of a given function.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;The nice parts are that for instance &lt;span class=&quot;caps&quot;&gt;NSF&lt;/span&gt; files now playback with a smaller memory footprint, as the buffer is allocated only when needed, and in the audio conversion branch also reduces the whole xine-lib memory footprint by two megabytes, this result means that to playback an mp3 file, xine-lib-1.2-audio-conversion takes &lt;strong&gt;half&lt;/strong&gt; the memory xine-lib-1.1 takes! It&amp;#8217;s incredible, but it&amp;#8217;s true.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;There are a lot more improvements that I hope to push into xine-lib-1.2, one of these is the splitting out of the modplug demuxer on its own plugin, so that binary distributions can just package it separately, allowing users wanting mod playback to actually get it, and saving the ones who cares not about mod files from having to initialise libmodplug every time (it takes quite a bit of &lt;span class=&quot;caps&quot;&gt;CPU&lt;/span&gt; time, because of the calculation of the samples, I think I&amp;#8217;ll post some images about this in the next days).&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Oh and I&amp;#8217;m actually thinking of reducing even more the code present in the decoders, by handling also the downmixing into the audio output loop (currently at least &lt;span class=&quot;caps&quot;&gt;A52&lt;/span&gt;, DTS and Vorbis decoders contains the code to handle that) and by providing the code to handle also channels&amp;#8217; interleaving, as currently the same plugins also contain the same code, once again.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;This again is to allow providing optimisations if possible, although I admit I&amp;#8217;m not sure which kind of optimisation can be handled here. Still, it should be better to only have a copy of the code, rather than an undefined number&amp;#8230;&lt;/p&gt;&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Fri, 04 May 2007 11:39:00 +0000</pubDate>
    <guid isPermaLink="false">http://amarok.kde.org/blog/archives/384-guid.html</guid>
    
</item>
<item>
    <title>The mystery of the a52dec decoded samples</title>
    <link>http://amarok.kde.org/blog/archives/375-The-mystery-of-the-a52dec-decoded-samples.html</link>
            <category>Flameeyes</category>
    
    <comments>http://amarok.kde.org/blog/archives/375-The-mystery-of-the-a52dec-decoded-samples.html#comments</comments>
    <wfw:comment>http://amarok.kde.org/blog/wfwcomment.php?cid=375</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://amarok.kde.org/blog/rss.php?version=2.0&amp;type=comments&amp;cid=375</wfw:commentRss>
    

    <author>nospam@example.com (Diego Pettenò)</author>
    <content:encoded>
    &lt;p&gt;I&amp;#8217;ve been working a lot on the audio conversion code for xine-lib, with results that are always more satisfying, although Amarok fails to build on this new version, audio playback improved a lot, and with the code being all self-contained, the option of replacing the functions with more optimised code, using &lt;span class=&quot;caps&quot;&gt;MMX&lt;/span&gt;, SSE, AltiVec or whatever other &lt;span class=&quot;caps&quot;&gt;SIMD&lt;/span&gt; extension is more feasible.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Unfortunately I&amp;#8217;ve hit one issue: beside &lt;span class=&quot;caps&quot;&gt;A52&lt;/span&gt; and &lt;span class=&quot;caps&quot;&gt;DTS&lt;/span&gt; having a channel order different than most of other formats, I have an issue with the type of the decoded samples. There&amp;#8217;s a function called &lt;code&gt;float_to_int()&lt;/code&gt; that I supposed truncated the floating-point values to get 16-bit signed integer samples (that were the only format supported by xine before), but the floats themselves don&amp;#8217;t play at all, while floating-point data plays fine for most other formats. I had to look up a lot of documentation to find for sure that floating-point samples, like I supposed before, varies in the interval [-1.0,1.0], so I was doing it alright up to now.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Now, if someone has any idea on what the following code does, I&amp;#8217;d be glad to know it. The &lt;code&gt;blah()&lt;/code&gt; function (with the same name) is present in xine, MPlayer, FFmpeg, and renamed in Ogle and other software too.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;typocode&quot;&gt;&lt;pre&gt;&lt;code class=&quot;typocode_default &quot;&gt;#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdint.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
static inline int16_t blah (int32_t i) {&lt;br /&gt;
  if (i &amp;gt; 0x43c07fff)&lt;br /&gt;
    return 32767;&lt;br /&gt;
  else if (i &amp;lt; 0x43bf8000)&lt;br /&gt;
    return -32768;&lt;br /&gt;
  else&lt;br /&gt;
    return i - 0x43c00000;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main() {&lt;br /&gt;
  uint8_t val_1[4] = { 0xFF, 0xFF, 0xBF, 0x43 };&lt;br /&gt;
&lt;br /&gt;
  return printf(&amp;quot;%f\n%d\n&amp;quot;, *(float*)(&amp;amp;val_1), blah(*(int32_t*)(&amp;amp;val_1)));&lt;br /&gt;
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;The output (on Little-Endian, as val_1 is the byte representation of a float number in Little-Endian) is: 383.999969 and -1; it makes no sense to me, but maybe someone else has a clue..&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;And for who&amp;#8217;s wondering, the byte-value I chosen there is one of the samples decoded by a52dec, so it&amp;#8217;s a proper value I&amp;#8217;m trying to understand; and for who&amp;#8217;s wondering, the proper correspondence for -1 (int16) in float32 format is (approximated) -3.0517e-05.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;&lt;strong&gt;Edit:&lt;/strong&gt; thanks Nathan Smith who made me see the spelling error in the title (I still confuse the two).&lt;/p&gt;&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Wed, 02 May 2007 17:48:00 +0000</pubDate>
    <guid isPermaLink="false">http://amarok.kde.org/blog/archives/375-guid.html</guid>
    
</item>
<item>
    <title>Audio conversion flies!</title>
    <link>http://amarok.kde.org/blog/archives/376-Audio-conversion-flies!.html</link>
            <category>Flameeyes</category>
    
    <comments>http://amarok.kde.org/blog/archives/376-Audio-conversion-flies!.html#comments</comments>
    <wfw:comment>http://amarok.kde.org/blog/wfwcomment.php?cid=376</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://amarok.kde.org/blog/rss.php?version=2.0&amp;type=comments&amp;cid=376</wfw:commentRss>
    

    <author>nospam@example.com (Diego Pettenò)</author>
    <content:encoded>
    &lt;p&gt;After a week spent closing envelopes and attaching labels, I was finally able to get the audio conversion branch of xine-lib 1.2 to play mp3s.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;As libmad decodes the mp3s as 32-bit signed integer samples, the direct output cannot be sent directly to PulseAudio when playing it back (and PulseAudio is the only audio output I converted to the new plugin &lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt;), so I had to actually implement at least some basic conversion, in this case from almost every integer format to 32-bit floating point samples (which is the simplest conversion, although it&amp;#8217;s &lt;span class=&quot;caps&quot;&gt;CPU&lt;/span&gt; consuming.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Previously every mp3 file decoded with libmad was truncated to 16-bit signed integer samples, losing precision, and for what I can see amplifying the volume quite a bit, distorting the signal, but with my new code, there&amp;#8217;s no precision loss, and the difference is audible.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;You can see the difference in the following screenshot:&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;&quot; class=&quot;flickrplugin&quot;&gt;&lt;a href=&quot;http://www.flickr.com/photos/flameeyes/475655629&quot;&gt;&lt;img src=&quot;http://farm1.static.flickr.com/222/475655629_6e25caa4e0.jpg&quot; width=&quot;500&quot; height=&quot;273&quot; alt=&quot;xine-audio-conversion.jpg&quot; title=&quot;xine-audio-conversion.jpg&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;If you look at the screenshot you will see the stream info dialog windows of xine-ui: on the left there&amp;#8217;s the window for xine-lib 1.1 while on the right there&amp;#8217;s the one for xine-lib 1.2 audio_conversion branch. As you can see at the bottom of the window, the first one reports 16-bit for the stream, while the new one returns 32-bit as intended.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;I can tell you, the difference is great, and this is just the first step! Hopefully it will be merged in xine-lib-1.2 and then it will be able to play hi-fidelity wave files just fine.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Unfortunately before I can actually merge this branch into main xine-lib-1.2, all the output plugins, the post plugins and most of the audio decoding plugins have to be ported, which is a &lt;span class=&quot;caps&quot;&gt;HUGE&lt;/span&gt; amount of work for just one person. I&amp;#8217;d also require to use some virtual machines to confirm most of the output plugins work afterward, so it will take me &lt;strong&gt;a lot&lt;/strong&gt; of time alone. If you can handle converting and testing the code, that will certainly be appreciated.&lt;/p&gt;&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Sat, 28 Apr 2007 16:01:00 +0000</pubDate>
    <guid isPermaLink="false">http://amarok.kde.org/blog/archives/376-guid.html</guid>
    
</item>
<item>
    <title>Self-signed certificates on the E61: failed.</title>
    <link>http://amarok.kde.org/blog/archives/377-Self-signed-certificates-on-the-E61-failed..html</link>
            <category>Flameeyes</category>
    
    <comments>http://amarok.kde.org/blog/archives/377-Self-signed-certificates-on-the-E61-failed..html#comments</comments>
    <wfw:comment>http://amarok.kde.org/blog/wfwcomment.php?cid=377</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://amarok.kde.org/blog/rss.php?version=2.0&amp;type=comments&amp;cid=377</wfw:commentRss>
    

    <author>nospam@example.com (Diego Pettenò)</author>
    <content:encoded>
    &lt;p&gt;I&amp;#8217;m not sure if you remember, but last Christmas I &lt;a href=&quot;http://farragut.flameeyes.is-a-geek.org/articles/2006/12/24/holiday-time&quot;&gt;blogged&lt;/a&gt; about my need to find a way to allow my smartphone (a Nokia &lt;span class=&quot;caps&quot;&gt;E61&lt;/span&gt;) to automatically accept the  certificate file for my &lt;span class=&quot;caps&quot;&gt;IMAP&lt;/span&gt; server, to avoid having to accept it every time when I want to check my mails.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Well, I originally thought it was just a problem of format, as a lot of places on the net talked about the need to convert the &lt;span class=&quot;caps&quot;&gt;PEM&lt;/span&gt; certificate to a &lt;span class=&quot;caps&quot;&gt;DER&lt;/span&gt; certificate, and then download it with the internal browser from a properly-configured webserver (properly meaning the certificate is served with the mime-type application/x-509-ca-cert), but then it wasn&amp;#8217;t enough, I thought it was a problem of size of the certificate (over 1024 bits it doesn&amp;#8217;t seem to be supported) but it wasn&amp;#8217;t the case either, and the last idea I had was that the problem was with the firmware version.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Unfortunately last month when I asked a friend of mine to help me updating the firmware on the phone, the download process on his laptop (with Windows XP) took more than three hours, then we shut everything down, as it was coming late, and the download wasn&amp;#8217;t complete yet. I tried upgrading through a (demo) version of Parallels Desktop for Mac &lt;span class=&quot;caps&quot;&gt;OS X&lt;/span&gt;, but it didn&amp;#8217;t help either, today I tried on vmware-server, and there it worked fine, without the problems with disconnection and reconnection of the &lt;span class=&quot;caps&quot;&gt;USB&lt;/span&gt; device that Parallels suffered from (probably while the device was being reconfigured to provide a different interface to check the phone model, serial and firmware). The firmware upgrade process went fine and easy, in about thirty minutes just like Nokia wrote on the site, I&amp;#8217;m not sure what was wrong with my friend&amp;#8217;s laptop, nor I care much at this point, if I have to be blunt.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;But, not even the firmware update helped me.. so I decided to investigate further: the posts on the web about the configuring the &lt;span class=&quot;caps&quot;&gt;E61&lt;/span&gt; (or the &lt;span class=&quot;caps&quot;&gt;USA&lt;/span&gt;-marketed &lt;span class=&quot;caps&quot;&gt;E62&lt;/span&gt;, which should just be a crippled version of mine) mixes information about the addition of extra Certificate Authority certificates with requests for help with self-signed certificate. As soon as I considered this, light shed into my mind and I found the problem: &lt;strong&gt;the Nokia &lt;span class=&quot;caps&quot;&gt;E61&lt;/span&gt; does not support self-signed certificates&lt;/strong&gt;; this is an absolute, and there doesn&amp;#8217;t seem to be a way to get around this. What you can do instead is create your own Certificate Authority, load that certificate on the smartphone, and then use it to generate your own &lt;span class=&quot;caps&quot;&gt;SSL&lt;/span&gt; certificate; this solved the problem for me entirely.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;If you need an easy way to build a certificate authority certificate, and to create a new certificate signed with that, you might want to look in the openvpn&amp;#8217;s sources&amp;#8217; tarball, that contains an easy-rsa directory with a series of scripts that really helps on that matter.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;By the way, the reason why I updated firmware was also to enable the VoIP features, so that I can have a landline-like number routed on my phone while I&amp;#8217;m at home (or anywhere where a &lt;span class=&quot;caps&quot;&gt;WLAN&lt;/span&gt; can be found) allowing me to receive calls directly without passing through my family&amp;#8217;s number.&lt;/p&gt;&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Fri, 27 Apr 2007 18:16:00 +0000</pubDate>
    <guid isPermaLink="false">http://amarok.kde.org/blog/archives/377-guid.html</guid>
    
</item>
<item>
    <title>usb.ids, is it still maintained?</title>
    <link>http://amarok.kde.org/blog/archives/378-usb.ids,-is-it-still-maintained.html</link>
            <category>Flameeyes</category>
    
    <comments>http://amarok.kde.org/blog/archives/378-usb.ids,-is-it-still-maintained.html#comments</comments>
    <wfw:comment>http://amarok.kde.org/blog/wfwcomment.php?cid=378</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://amarok.kde.org/blog/rss.php?version=2.0&amp;type=comments&amp;cid=378</wfw:commentRss>
    

    <author>nospam@example.com (Diego Pettenò)</author>
    <content:encoded>
    &lt;p&gt;Classically, usb.ids file can be found at &lt;a href=&quot;http://www.linux-usb.org/usb.ids;&quot;&gt;http://www.linux-usb.org/usb.ids&lt;/a&gt; unfortunately there doesn&amp;#8217;t seem to be any more updates after last December. I sent to Vojtech a few patches to add the devices I have here at home, but I didn&amp;#8217;t get an answer (I know Vojtech usually answers in a day or two).&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Since I hate seeing stuff getting obsoleted so easily, I&amp;#8217;ve decided to add a bunch of devices to usb.ids, fix an entry (the one for &lt;span class=&quot;caps&quot;&gt;APC&lt;/span&gt; UPSes, as now I have two of them to cope with), and maintain my own copy of usb.ids.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Most of the devices I&amp;#8217;ve added are things that I have here at home, but they are not limited to, I&amp;#8217;ve added some &lt;span class=&quot;caps&quot;&gt;USB&lt;/span&gt; sticks of friends of mine who happened to pass by here, and an entry for a Microsoft mouse from Timothy. I suppose that while usb.ids is not fixed in the original location, I can continue maintaining it for my systems at least, by changing the cron jobs&amp;#8217; path to fetch from (it&amp;#8217;s also pretty much useless to download the same usb.ids every month).&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;So my copy of usb.ids is located at &lt;a href=&quot;http://dev.gentooexperimental.org/~flameeyes/usb.ids&quot;&gt;http://dev.gentooexperimental.org/~flameeyes/usb.ids&lt;/a&gt; (thanks &lt;a href=&quot;http://gentooexperimental.org/~patrick/weblog/&quot;&gt;Patrick&lt;/a&gt; for the hosting, which I&amp;#8217;m also using for a few other stuff like dist tarballs); if you want to add more devices to the list, feel free to mail me at flameeyes@gmail.com with a diff -u, or simple the vendor and product ids of the device, and the complete naming of it.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;I know the hardware from the MacBook Pro is missing, I&amp;#8217;ll see to add those the next time I boot the laptop on Linux.&lt;/p&gt;&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Thu, 26 Apr 2007 21:09:00 +0000</pubDate>
    <guid isPermaLink="false">http://amarok.kde.org/blog/archives/378-guid.html</guid>
    
</item>
<item>
    <title>Laptop policies on a workstation</title>
    <link>http://amarok.kde.org/blog/archives/379-Laptop-policies-on-a-workstation.html</link>
            <category>Flameeyes</category>
    
    <comments>http://amarok.kde.org/blog/archives/379-Laptop-policies-on-a-workstation.html#comments</comments>
    <wfw:comment>http://amarok.kde.org/blog/wfwcomment.php?cid=379</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://amarok.kde.org/blog/rss.php?version=2.0&amp;type=comments&amp;cid=379</wfw:commentRss>
    

    <author>nospam@example.com (Diego Pettenò)</author>
    <content:encoded>
    &lt;p&gt;As I bought the new &lt;span class=&quot;caps&quot;&gt;UPS&lt;/span&gt;, I now have quite some time to work with it while I&amp;#8217;m without power, as the two UPSes can keep the system online for about one hour without any kind of interruptions, included network access. This is quite nice, but there is one thing I was thinking of today&amp;#8230;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;When the workstations are running on &lt;span class=&quot;caps&quot;&gt;UPS&lt;/span&gt;&amp;#8217;s battery power, it&amp;#8217;s comparable to a laptop running on battery, so I could be just using the same method laptops use: reduce the frequency of the &lt;span class=&quot;caps&quot;&gt;CPU&lt;/span&gt;. At least Enterprise is able of &lt;span class=&quot;caps&quot;&gt;CPU&lt;/span&gt; frequency scaling, so I&amp;#8217;ve configured it to switch to power saving profile when the onbattery event is received by apcupsd.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;It was actually quite simple, first of all apcupsd runs as root (although it should drop all privileges, but I&amp;#8217;m not sure about it), and I have powersave installed and configured to handle this, so I just changed the &lt;code&gt;/etc/apcupsd/onbattery&lt;/code&gt; and &lt;code&gt;/etc/apcupsd/offbattery&lt;/code&gt; scripts to add a call to powersave binary, with &lt;code&gt;-e Powersave&lt;/code&gt; on the onbattery event and &lt;code&gt;-e Performance&lt;/code&gt; on the offbattery event; unfortunately I don&amp;#8217;t think there is anything else beside slowing the &lt;span class=&quot;caps&quot;&gt;CPU&lt;/span&gt; speed during &lt;span class=&quot;caps&quot;&gt;UPS&lt;/span&gt; battery supply that can be done on a Workstation &lt;img src=&quot;http://amarok.kde.org/blog/templates/default/img/emoticons/sad.png&quot; alt=&quot;:-(&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Now I&amp;#8217;m going to look to split the connection of the power cables in my home office so that the hardware that would just go in standby while I&amp;#8217;m sleeping would be connected to a single multi-socket, which can be disconnected at once, to avoid leaving the hardware consuming power without any reason. I&amp;#8217;d like to be able to do the same with the monitors (that otherwise would remain in standby as they can&amp;#8217;t be shut down. If I wasn&amp;#8217;t using the same &lt;span class=&quot;caps&quot;&gt;UPS&lt;/span&gt; for both networking and monitors, I could probably use the &lt;span class=&quot;caps&quot;&gt;UPS&lt;/span&gt; to shut them down and turn them back on at my command.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Sigh, I&amp;#8217;m afraid there will be a looot of work to do, and I&amp;#8217;m sealing envelopes, once again &lt;img src=&quot;http://amarok.kde.org/blog/templates/default/img/emoticons/sad.png&quot; alt=&quot;:-(&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Wed, 25 Apr 2007 14:02:00 +0000</pubDate>
    <guid isPermaLink="false">http://amarok.kde.org/blog/archives/379-guid.html</guid>
    
</item>
<item>
    <title>A nice productive day</title>
    <link>http://amarok.kde.org/blog/archives/380-A-nice-productive-day.html</link>
            <category>Flameeyes</category>
    
    <comments>http://amarok.kde.org/blog/archives/380-A-nice-productive-day.html#comments</comments>
    <wfw:comment>http://amarok.kde.org/blog/wfwcomment.php?cid=380</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://amarok.kde.org/blog/rss.php?version=2.0&amp;type=comments&amp;cid=380</wfw:commentRss>
    

    <author>nospam@example.com (Diego Pettenò)</author>
    <content:encoded>
    &lt;p&gt;I might be sick, or just crazy, or both of them, but I still think I&amp;#8217;m quite more productive when I have fever, or the days around that time. Yesterday I had fever, and I was knock out till late afternoon, but then I started feeling better, and I started producing.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;First of all, rbot&amp;#8217;s init script in my overlay has been updated: Subversion trunk will now create a rbot.pid file inside the bot&amp;#8217;s directory without need for &lt;code&gt;start-stop-daemon&lt;/code&gt; to create it itself, which means I can finally let rbot fork on its own rather than forcing it to background (which is not really a good thing to do, if it can be avoided). Thanks to tango and jbn for looking after my raw patch.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Then I decided to finish the work with apcupsd; again in my overlay you can find a new ebuild for 3.14.0 based on the one found on bugzilla, but with a new apccontrol file and a totally renewed init script. This script can be multiplied, which means you can have a &lt;code&gt;/etc/init.d/apcupsd.foo&lt;/code&gt; link, which would then start apcupsd looking for &lt;code&gt;/etc/apcupsd/foo.conf&lt;/code&gt; configuration file. Thanks to apcupsd authors for implementing this feature in 3.14!&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;I&amp;#8217;ve also attached the two UPSes to Farragut instead of Enterprise, as the latter is not a server and might as well be offline when Farragut is still up (for instance this is the case most of the times I&amp;#8217;m outside for the whole day, or if there is noone at home); apcupsd on FreeBSD works nicely, and doesn&amp;#8217;t require any fiddling with configuration, neither kernel side (the ugen support is built by default) nor with permissions (as the default is to run as root, this might change in the future, but as it is it&amp;#8217;s fine to me; I&amp;#8217;ll be working on a better handling of permissions on device nodes for Gentoo/FreeBSD, but it&amp;#8217;s not in my priority list at the moment). Also here, they work perfectly fine.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;I was also able to fix a bug in xine-lib, with mp4/mov files playback that used version 1 rather than version 0 of the media header atom, such as files generated by FFmpeg. The bug was reported on sourceforge already but I wasn&amp;#8217;t sure what it actually meant and where to find a sample file; when I generated the same condition by chance here, I decided to take a deeper look; unfortunately MultimediaWiki doesn&amp;#8217;t provide much information about that, but I asked Mike to give me an account there so I can try to write something useful, maybe next time someone else needs a mdhd atom description they won&amp;#8217;t have to look at the sources of FFmpeg to see how it&amp;#8217;s read and generated.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Then tonight I wanted to resume my work on implementing audio conversions inside the audio output loop instead of doing it for every decoder; it&amp;#8217;s an hard work as it probably will require rewriting a good deal of code, but it should be rewarding once it&amp;#8217;s done. Right now there are a bunch more of flag values for capabilities, so for instance I can say if a drivers supports integer or float 32-bit samples, 64-bit samples, and if it can accept streams in a different endianness. This is important because there&amp;#8217;s little point in doing the job of the output plugin, that might handle that transparently, for instance a big-endian stream might be decoded on a little-endian machine, then sent through PulseAudio to a big-endian machine where it will be reproduced: in this setup, xine&amp;#8217;s endian reversal of the stream (from big to little endian) would have been superfluous, as PulseAudio would have accepted the big-endian samples, then sent them to the other machine that needed not to reverse them to reproduce them.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Anyway, right now the code is quite fragile, there&amp;#8217;s no conversion being done, there are mostly only things that are totally broken out, there are asserts @1 == 0@ used to mark the code that needs to be rewritten. &lt;strong&gt;But&lt;/strong&gt; something works: I was able to remove a lot of code from the musepack decoder, as libmpcdec always produces 32-bit native-endian (or maybe little-endian, I&amp;#8217;m not yet sure) floating point samples; previously the decoder converted all the samples back to 16-bit format, and then gave it to the audio output loop to handle? now instead it sends them directly to the output, and as PulseAudio supports 32-bit float samples, they are not converted and play back fine.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Tomorrow I&amp;#8217;ll see to work a way to handle upsamping and downsampling of streams, the problem is that it&amp;#8217;s not trivial to decide what to do: if a plugin supports 32-bit integer samples, but not 24-bit integer samples, it should probably upscale the 24-bit to 32-bit to avoid losing precision; if it doesn&amp;#8217;t it might upscale it to 32-bit float, or maybe downscale it to 16-bit integers. The same applies to channel mode, if the driver doesn&amp;#8217;t support stereo output, should it be updated to 4.0 or should it be downgraded to mono?&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;For sure this time I&amp;#8217;m very happy of being working on branches: leaving the code broken for weeks, maybe months, is not something you want to do on the main development branch. And I mean it, because with the changes I&amp;#8217;m doing, not only I&amp;#8217;ll be changing the &lt;span class=&quot;caps&quot;&gt;ABI&lt;/span&gt; of the library itself (well, actually not much, just a couple of structures), but more importantly I&amp;#8217;ll be changing the audio output plugins &lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt;, as I need to feed them a sample format rather than a bits-per-sample size.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Anyway, this is not going to be something easy to complete, but it &lt;strong&gt;will&lt;/strong&gt; be a noticeable improvement for Amarok users once done, especially because I want to make sure that the capabilities for &amp;#8220;mixer&amp;#8221; volume and &amp;#8220;PCM&amp;#8221; volume are cleared up, probably by deprecating one of them, so that Amarok can be changed &lt;strong&gt;not&lt;/strong&gt; to use xine&amp;#8217;s software amplification (which also sucks and I also need to rewrite in good part in this branch) if the output plugin actually supports a per-stream volume (like PulseAudio).&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Sponsoring, bribing, and comfort words are welcome, as xine-lib&amp;#8217;s audio_out code is giving me creeps.&lt;/p&gt;&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Sun, 22 Apr 2007 01:03:00 +0000</pubDate>
    <guid isPermaLink="false">http://amarok.kde.org/blog/archives/380-guid.html</guid>
    
</item>
<item>
    <title>Downtime and new UPS</title>
    <link>http://amarok.kde.org/blog/archives/381-Downtime-and-new-UPS.html</link>
            <category>Flameeyes</category>
    
    <comments>http://amarok.kde.org/blog/archives/381-Downtime-and-new-UPS.html#comments</comments>
    <wfw:comment>http://amarok.kde.org/blog/wfwcomment.php?cid=381</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://amarok.kde.org/blog/rss.php?version=2.0&amp;type=comments&amp;cid=381</wfw:commentRss>
    

    <author>nospam@example.com (Diego Pettenò)</author>
    <content:encoded>
    &lt;p&gt;Sorry for the downtime guys, the update to baselayout 2 on Farragut wasn&amp;#8217;t as easy as expected, I have some talk to do with Roy about it &lt;img src=&quot;http://amarok.kde.org/blog/templates/default/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Now, this is probably going to be the fourth night I&amp;#8217;m not gonna sleep well, today I had a support request to take care of in the afternoon and I was supposed to go out with a few friends tonight, but I was so tired that I started having fever, so I had to get a raincheck for that.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;The good news is that I received the new &lt;span class=&quot;caps&quot;&gt;UPS&lt;/span&gt;, an &lt;span class=&quot;caps&quot;&gt;APC&lt;/span&gt; SmartUPS 1000VA, that seems to be able to take enterprise and farragut up for 1 hour and a quarter, which is quite good (the other &lt;span class=&quot;caps&quot;&gt;UPS&lt;/span&gt; would take the monitors and the network equipment up for also an hour, which is not bad, and should cover most of short-time non-planned outages.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Unfortunately, if you have followed me for a while, you know there&amp;#8217;s no flawless hardware acquisition for me; this time the problem comes from the software needed to control the &lt;strong&gt;two&lt;/strong&gt; UPSes; please note that there are two.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;First of all, when I started using an &lt;span class=&quot;caps&quot;&gt;UPS&lt;/span&gt;, I used apcupsd but then I moved to nut because it had a decent graphical control software (knutclient); what was the problem with this? Well, nut was confused by the two UPSes, that being both &lt;span class=&quot;caps&quot;&gt;APC&lt;/span&gt;, shares the same identical vendor and product ID for the &lt;span class=&quot;caps&quot;&gt;USB&lt;/span&gt; device. So it was not a nice thing.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;I&amp;#8217;ve then decided to come back to apcupsd, but the latest version is not in portage (again) so I bumped it locally with the patch on Bugzilla, and added a gnome useflag for the graphical control utility that is now present. This version is important to me, not only because of the utility, but also because with this version is possible to choose the configuration file at runtime, as it&amp;#8217;s not hardcoded during build.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;This is also important because in previous versions the only way to have more than one &lt;span class=&quot;caps&quot;&gt;UPS&lt;/span&gt; being monitored on the same box with apcupsd required to have two different builds on different places. What I want to do now is to rewrite the init script so that it is multiplexed (like rbot, mt-daapd, openvpn and so on), that way I can simply start two apcupsd instances to have all I need (note that one of them won&amp;#8217;t be shutting off my box at all, as it would just keep monitoring the &lt;span class=&quot;caps&quot;&gt;UPS&lt;/span&gt; that is actually connected to the monitors and networking.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Once Baselayout 2 is more functional on Farragut, I&amp;#8217;ll probably move apcupsd instances there, and network it down here, it would be safer on the long run as enterprise might not be up when farragut is.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;I still haven&amp;#8217;t been able to finish working on rbot&amp;#8217;s changes I need, sigh. And don&amp;#8217;t get me started on xine-lib, I&amp;#8217;m taking a few days off because what I found myself working on now is a veeery bad thing I&amp;#8217;m afraid&amp;#8230;. (bit per sample transcoding during output).&lt;/p&gt;&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Fri, 20 Apr 2007 23:57:00 +0000</pubDate>
    <guid isPermaLink="false">http://amarok.kde.org/blog/archives/381-guid.html</guid>
    
</item>
<item>
    <title>About libdvdnav and xine</title>
    <link>http://amarok.kde.org/blog/archives/373-About-libdvdnav-and-xine.html</link>
            <category>Flameeyes</category>
    
    <comments>http://amarok.kde.org/blog/archives/373-About-libdvdnav-and-xine.html#comments</comments>
    <wfw:comment>http://amarok.kde.org/blog/wfwcomment.php?cid=373</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://amarok.kde.org/blog/rss.php?version=2.0&amp;type=comments&amp;cid=373</wfw:commentRss>
    

    <author>nospam@example.com (Diego Pettenò)</author>
    <content:encoded>
    &lt;p&gt;Don&amp;#8217;t worry all you people, I wasn&amp;#8217;t killed in a bus accident yet; you are lucky, I actually go out quite rarely so I don&amp;#8217;t suffer from this kind of problems very often, the worst that can happen would be a health problem, but I&amp;#8217;m lucky enough to feel decently well at the moment &lt;img src=&quot;http://amarok.kde.org/blog/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; Of course there is too much heat for my liking and I start to feel how annoying it is at this temperature, especially staying in my home office with two/three boxes online.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Anyway, as I promised, I started looking at the fork of libdvdnav lead by Nico, to import a newer version of libdvdnav in xine, and cleaning up the patches applied.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Unfortunately it wasn&amp;#8217;t exactly straightforward to update the libdvdnav version; beside my will to move the sources into the &lt;code&gt;contrib/&lt;/code&gt; subdirectory as I already did for libmpcdec and ffmpeg, Nico started to replace autotools with a build system alike to FFmpeg&amp;#8217;s (which is quite fine by me, as I can integrate it nicely enough into xine-lib), so I had to make sure that the build system was up to a minimum support for the features I needed. The main showstopper was the lack of a way to build in a directory different from the original sources directory, but that was quite easy to handle.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;But luckily working with Nico is quite enjoyable &lt;img src=&quot;http://amarok.kde.org/blog/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; All the patch I&amp;#8217;ve sent for inclusion up to tonight (so excluding the one I sent less than an hour ago) were accepted and committed to the Subversion repository, which means that the build system is usable from xine-lib&amp;#8217;s custom base system, that the compiler flags we inject are respected, that the library builds with &lt;code&gt;-Werror-implicit-declarations&lt;/code&gt; (the change was needed to libdvdread, Nico took care of sending it up there).&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Tonight I rebuilt xine-lib-1.2 with the new libdvdnav, and it&amp;#8217;s working nicely. I suppose the reason why external libdvdnav is not working on seeking is that the code was present in cvs (for sf.net&amp;#8217;s dvd project) but not released yet. I should probably also add support for .pc files for libdvdnav and then use those to check for its presence, so to require at least a new enough version that doesn&amp;#8217;t have seeking problems, but that is not a priority until a release is done.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;There is only one problem that has to be considered: the libdvdnav copy in xine-lib is patched with a patch from Bastien Nocera (Totem&amp;#8217;s author) which is used to play invalid DVDs (non-encrypted &lt;span class=&quot;caps&quot;&gt;ISO&lt;/span&gt; filesystem DVDs; proper DVDs have &lt;span class=&quot;caps&quot;&gt;UDF&lt;/span&gt; as file system). That patch as it is won&amp;#8217;t be accepted by libdvdnav authors, and sincerely I wouldn&amp;#8217;t have accepted it for xine-lib either.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Why this? Well, the patch takes an opaque type, and makes it transparent, copying out of libdvdcss the structure definition. This is fine as long as the structure is not changed on libdvdcss, but the reason why a type is opaque, is just so that you don&amp;#8217;t have to put its definition in the &lt;span class=&quot;caps&quot;&gt;ABI&lt;/span&gt;, so you can change it without having to deal with software crashing because it was compiled against the previous definition. This patch breaks this assumption with xine, so it&amp;#8217;s bad from a good practices point of view.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;I&amp;#8217;m not sure myself how much sense does it make to use such a stupid solution (sorry Bastien, but re-declaring an opaque type is a stupid solution) to consider invalid media. A better solution would be to always use the files if they are found, rather than using &lt;span class=&quot;caps&quot;&gt;UDF&lt;/span&gt; access, with fallback to raw &lt;span class=&quot;caps&quot;&gt;UDF&lt;/span&gt; instead. This &lt;strong&gt;should&lt;/strong&gt; work, but I need first some media to test with, and then I have to understand libdvdnav code.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Anyway, the build framework changes are now committed to the xine-lib-1.2-newdvdnav branch, the &amp;#8220;only&amp;#8221; thing missing there is the libdvdnav code itself; the reason for this is that up to tonight I was still working with patched sources, not with upstream sources, and I wanted to avoid recommitting everything every time. I will probably wait as much as I can before committing the sources themselves, with this &amp;#8220;as much as I can&amp;#8221; representing ideally the time till I get to have committed to libdvdnav all the changes that make sense for xine-lib (revised Bastien&amp;#8217;s patch, and the file descriptor leak patch).&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;I also want to thank Nico for the work being done toward adding an option to use external libdvdread in libdvdnav, which will certainly help Gentoo and other distributions: you wouldn&amp;#8217;t have to duplicate the code between libdvdnav and libdvdread; you&amp;#8217;d have one more dependency in the libdvdnav library, but that shouldn&amp;#8217;t be much overhead.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;And I want to say it officially: there is a lot of code in xine-lib that scares the hell out of me, and I would like to see it killed before it propagates too much; unfortunately overhauling all of it is difficult alone, especially since I might end up having repercussions that I don&amp;#8217;t see (like the &lt;span class=&quot;caps&quot;&gt;CDDA&lt;/span&gt; failure that didn&amp;#8217;t fail for me when I tested &amp;#8211; I was using by-extension detection in Amarok &amp;#8211; and the &lt;span class=&quot;caps&quot;&gt;DVD&lt;/span&gt; failure that still I was unable to reproduce till at least since Darren fixed it).&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;I start hating spending my time on xine, I hope to be able to continue working on it till it&amp;#8217;s enjoyable to do so.&lt;/p&gt;&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Tue, 17 Apr 2007 23:03:00 +0000</pubDate>
    <guid isPermaLink="false">http://amarok.kde.org/blog/archives/373-guid.html</guid>
    
</item>
<item>
    <title>More progress for XDG support in xine</title>
    <link>http://amarok.kde.org/blog/archives/370-More-progress-for-XDG-support-in-xine.html</link>
            <category>Flameeyes</category>
    
    <comments>http://amarok.kde.org/blog/archives/370-More-progress-for-XDG-support-in-xine.html#comments</comments>
    <wfw:comment>http://amarok.kde.org/blog/wfwcomment.php?cid=370</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://amarok.kde.org/blog/rss.php?version=2.0&amp;type=comments&amp;cid=370</wfw:commentRss>
    

    <author>nospam@example.com (Diego Pettenò)</author>
    <content:encoded>
    &lt;p&gt;Returning on yesterday&amp;#8217;s blog entry, today I&amp;#8217;ll see to update you on the status of xine-lib&amp;#8217;s &lt;span class=&quot;caps&quot;&gt;XDG&lt;/span&gt; support.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Thanks to Mark Nevill, I didn&amp;#8217;t have to reinvent the wheel by parsing the various &lt;span class=&quot;caps&quot;&gt;XDG&lt;/span&gt;_ variables to check for the directories I have to search in; he already wrote a libxdg-basedir library that takes care of most of it, allowing me to take care of the implementation details.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Now, xine-lib-1.2 branch has an internal copy of libxdg-basedir (two source files, so it&amp;#8217;s not a big deal, and I&amp;#8217;ve added a switch to use the external copy of it if needed), and uses it to decide where to read and write some files.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;For instance, the plugins cache is no more in &lt;code&gt;~/.xine/catalog.cache&lt;/code&gt; but it&amp;#8217;s in &lt;code&gt;$XDG_CACHE_HOME/xine-lib/plugins.cache&lt;/code&gt; which both makes more sense and can be decided by user to be moved out of its home (for instance I change the value to &lt;span class=&quot;caps&quot;&gt;XDG&lt;/span&gt;_CACHE_HOME, but that&amp;#8217;s a topic for another post). The &lt;span class=&quot;caps&quot;&gt;CDDB&lt;/span&gt; cache is also moved on the cache home, while the fonts are now discovered in the &lt;span class=&quot;caps&quot;&gt;XDG&lt;/span&gt;_DATA_DIRS defined paths. Darren also moved channels.conf load from &lt;code&gt;~/.xine&lt;/code&gt; to &lt;span class=&quot;caps&quot;&gt;XDG&lt;/span&gt;_CONFIG_HOME, which means it&amp;#8217;s loaded in ~/.config/xine-lib by default.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Please note that I&amp;#8217;ve been using xine-lib all over rather than xine, so that users know what is generated/handled by the frontends and what is actually part of the library, if they care.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;There are still a few changes pending, for instance Darren wants to support loading of a system-level channels.conf, so that it can be put in &lt;code&gt;/etc/xdg&lt;/code&gt; and used for all users without having to put it in xine&amp;#8217;s configuration for every user.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;I&amp;#8217;ve also decided to pay more attention to the security side of xine-lib, for instance, after talking with Taviso today, I&amp;#8217;ve added a &lt;code&gt;xine_xcalloc&lt;/code&gt; function to wrap around &lt;code&gt;calloc&lt;/code&gt;, which should avoid possible overflows (there was one in input_dvb); I&amp;#8217;ve changed some of the code, but of course it&amp;#8217;s not totally cleaned up. xine-lib really should be audited piece by piece for improvement, every time I touch something I end up cleaning it up by adding more &lt;code&gt;const&lt;/code&gt; keywords (trying to let the compiler optimise a bit more) and adding/removing/cleaning up code .&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;One thing that certainly would help would be to put a better wall between contributed code (where we should always do the work on upstream&amp;#8217;s side and then merge it back into xine-lib, to avoid getting them out of sync, unless fixing some xine corner case or similar&amp;#8212;although there it could certainly help to put a proper wrapping around the two), and the xine proper code that should fixed/cleaned/improved as we go.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Really, while xine actually do its job most of the times, it still suffers from a lot of possible problems just because the code is too old and stratified. I think I should simply undergo an audit file per file trying to fix stuff while I also update the documentation to be doxygen-compatible, but that&amp;#8217;s going to take so much time that I&amp;#8217;m not sure how realistic is to work on it; beside I don&amp;#8217;t have hardware such as a &lt;span class=&quot;caps&quot;&gt;DVB&lt;/span&gt; tuner that would allow me to complete the audit (I can&amp;#8217;t try that code and I can&amp;#8217;t ensure its working state).&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;On the other hand, tonight I fired up Klothos again; it has been some time since I&amp;#8217;ve done any Gentoo/*BSD work, but I&amp;#8217;ve lately asked Roy to put me back in bsd@gentoo.org alias, to see if there is work that needs to be done that I can do. Yes, I suppose I&amp;#8217;m considering coming back, but if I will do that, it will be on a lower profile; maybe I&amp;#8217;ll help Mike, Frysinger, SpanKY and vapier with the &lt;span class=&quot;caps&quot;&gt;ARM&lt;/span&gt; architecture, maybe I&amp;#8217;ll just decide to take care of &lt;span class=&quot;caps&quot;&gt;BSD&lt;/span&gt; alone.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;The problem with Klothos is the &lt;span class=&quot;caps&quot;&gt;PSU&lt;/span&gt;; the whole box is quite silent, as the UltraSPARC &lt;span class=&quot;caps&quot;&gt;CPU&lt;/span&gt; is cooled by a slow and silent fan, but the &lt;span class=&quot;caps&quot;&gt;PSU&lt;/span&gt; is annoyingly noisy, and I can&amp;#8217;t just put a &lt;em&gt;be quiet&lt;/em&gt; PSU like I put on Enterprise because of the Ultra5 casing (it&amp;#8217;s a desktop machine, the case is high as the &lt;span class=&quot;caps&quot;&gt;ATX&lt;/span&gt; power supply, which means the big fan used by most silent units would be obstructed by it); I could try a passive &lt;span class=&quot;caps&quot;&gt;PSU&lt;/span&gt;, as the box shouldn&amp;#8217;t be sucking too much power anyway, but I&amp;#8217;m not sure about it and I don&amp;#8217;t have money to waste (at the moment I&amp;#8217;m unemployed).&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;If anybody has a suggestion about which &lt;span class=&quot;caps&quot;&gt;PSU I&lt;/span&gt; could use for such a box, it&amp;#8217;s really appreciated. It&amp;#8217;s funny that I paid ?35 for a working box, and then paid way more to bring it to a standard worth to be a dev machine&amp;#8230; well, I got the &lt;span class=&quot;caps&quot;&gt;SATA&lt;/span&gt; controller already in my possession, as well as the &lt;span class=&quot;caps&quot;&gt;SATA&lt;/span&gt; hard disk; the &lt;span class=&quot;caps&quot;&gt;DVD&lt;/span&gt; reader was also an old one I used, but I had to buy a new ethernet card to avoid using the obnoxious hme0 driver..&lt;/p&gt;&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Sun, 15 Apr 2007 00:03:00 +0000</pubDate>
    <guid isPermaLink="false">http://amarok.kde.org/blog/archives/370-guid.html</guid>
    
</item>
<item>
    <title>Contributed code and FreeDesktop standard</title>
    <link>http://amarok.kde.org/blog/archives/369-Contributed-code-and-FreeDesktop-standard.html</link>
            <category>Flameeyes</category>
    
    <comments>http://amarok.kde.org/blog/archives/369-Contributed-code-and-FreeDesktop-standard.html#comments</comments>
    <wfw:comment>http://amarok.kde.org/blog/wfwcomment.php?cid=369</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://amarok.kde.org/blog/rss.php?version=2.0&amp;type=comments&amp;cid=369</wfw:commentRss>
    

    <author>nospam@example.com (Diego Pettenò)</author>
    <content:encoded>
    &lt;p&gt;Of course, this entry will talk about xine-lib.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;First of all, a note about what I&amp;#8217;m trying to do with contributed code in xine-lib for 1.2 series. As I said already, my ffmpeg_integration branch, which is one of the two branches I merged to get the 1.2 branch itself, was born to allow using FFmpeg without changing its buildsystem, and putting it in a &lt;code&gt;contrib/&lt;/code&gt; subdirectory instead of mixing it with xine sources.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Well, as I&amp;#8217;ve now started working on providing also some Doxygen documentation, I&amp;#8217;ve seen that this is useful also for other projects that are imported in xine-lib, so that I don&amp;#8217;t have to blacklist one by one the directories and the files that are not to be parsed for Doxygen generation.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;In xine-lib-1.2 hg tip you can now find libmpcdec (that replaced libmusepack) in &lt;code&gt;contrib/libmpcdec/&lt;/code&gt; rather than having it together xine&amp;#8217;s actual code (the decoder plugin code) inside &lt;code&gt;src/libmusepack/&lt;/code&gt;. I also updated it to the last version available.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Similarly I hope to move other code, like libmad and of course libdvdnav, that was recently taken over by MPlayer developers because of the unresponsiveness of the original development project.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;It will take some time to complete all the moves, also because I&amp;#8217;ll try to contextually update the code with the last version available for every project beside libmpeg2. This should be a breath of fresh air for xine 1.2.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Talking about FreeDesktop standards, as Darren already changed gxine to abide to &lt;a href=&quot;http://standards.freedesktop.org/basedir-spec/latest/index.html&quot;&gt;&lt;span class=&quot;caps&quot;&gt;XDG&lt;/span&gt; Base Directory Specification&lt;/a&gt;, he also added better FreeDesktop standard support in xine-lib for configuration and cache files. So right now I&amp;#8217;m working on making xine-lib use &lt;code&gt;XDG_CACHE_HOME&lt;/code&gt; to store the plugins cache instead of the hardcoded &lt;code&gt;~/.xine/catalog.cache&lt;/code&gt;, which also allows me to move more cache data out of my home directory &lt;img src=&quot;http://amarok.kde.org/blog/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;By the way, why one earth the description of the permissions to use while creating directory (that is actually a quite logic 0700) is written in the «Referencing this specification» section ?&lt;/p&gt;&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Fri, 13 Apr 2007 13:28:00 +0000</pubDate>
    <guid isPermaLink="false">http://amarok.kde.org/blog/archives/369-guid.html</guid>
    
</item>
<item>
    <title>Discarica abusiva</title>
    <link>http://amarok.kde.org/blog/archives/366-Discarica-abusiva.html</link>
            <category>Flameeyes</category>
    
    <comments>http://amarok.kde.org/blog/archives/366-Discarica-abusiva.html#comments</comments>
    <wfw:comment>http://amarok.kde.org/blog/wfwcomment.php?cid=366</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://amarok.kde.org/blog/rss.php?version=2.0&amp;type=comments&amp;cid=366</wfw:commentRss>
    

    <author>nospam@example.com (Diego Pettenò)</author>
    <content:encoded>
    &lt;p&gt;Non so che altro titolo dare a questo post, se non, appunto «Discarica Abusiva», perché di questo tratta.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Mi è venuto in mente di scriverne dopo aver parlato l&amp;#8217;altra sera con X-Drum su #gentoo-it su Freenode, visto che stavo informandomi su dove portare a far smaltire alcuni rottami che ho qui in casa (la vecchia lavastoviglie e un gruppo di continuità totalmente partito; alla fine domani chiamerò la società che si occupa dei servizi ambientali per questa zona, Vesta, per fissare un appuntamento per il ritiro, era così semplice, ma non è un fatto conosciuto che questo ritiro è pure gratuito).&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Beh, non si tratta di una novità; quando ancora ero in seconda media (quindi ormai circa 8 anni), sono iniziati i lavori necessari alla costruzione delle fognature comunali per la zona dove abito (Santa Lucia/Tarù, alla periferia di Zelarino, entroterra di Venezia, Mestre). Beh per qualche motivo dopo due o tre anni di lavoro, la prima impresa è stata mandata a casa, e il cantiere che avevano aperto a non tanti metri dalla rete del mio giardino, in mezzo ad un campo, è stato posto sotto sequestro. È arrivata un&amp;#8217;altra ditta che ha aperto un altro cantiere di fianco, ed è andata avanti con i lavori fino a non molti anni fa.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Beh, visto che il primo cantiere era sotto sequestro e intoccabile, e il secondo cantiere aveva gente che andava e veniva tutti i giorni, la sbarra di accesso al campo è rimasta aperta per molti mesi, e dove c&amp;#8217;erano i container, rimasti per anni incustoditi e intoccati (solo poco prima che il secondo cantiere finisse sono stati spostati due camion ribaltabili che erano rimasti là, carichi di benzina pure, in mezzo ad un campo arso dal sole tutta l&amp;#8217;estate), si è cominciata a formare una discarica abusiva.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Le foto, cortesia di un mio amico, Alberto Chinellato, che ha collaborato in passato con il quotidiano La Nuova Venezia, e «caporedattore» di un giornalino di zona, sono tutte da vedere:&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;&quot; class=&quot;flickrplugin&quot;&gt;&lt;a href=&quot;http://www.flickr.com/photos/flameeyes/456570273&quot;&gt;&lt;img src=&quot;http://farm1.static.flickr.com/204/456570273_02f3f45972_m.jpg&quot; width=&quot;240&quot; height=&quot;180&quot; alt=&quot;PICT1003.JPG&quot; title=&quot;PICT1003.JPG&quot;/&gt;&lt;/a&gt;&lt;p class=&quot;caption&quot; style=&quot;width:240px&quot;&gt;Una visione d&amp;#8217;insieme della discarica.&lt;/p&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Se andate su &lt;a href=&quot;http://flickr.com/photos/flameeyes/sets/72157600069408194/&quot;&gt;Flickr&lt;/a&gt; trovate anche le altre foto panoramiche.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Ora, non è che sia difficile da vedere, visto che si vede dalla strada, non è difficile da sapere dove si trova, se un cantiere è sotto sequestro, ci si aspetta che le forze dell&amp;#8217;ordine sappiano dove sia, e soprattuto è cosa nota almeno alla Polizia municipale (i vigili urbani) visto che sono stati contattati da me e da mia madre più volte, e sicuramente anche da altri abitanti della zona (anche se noi siamo effettivamente i più esposti essendo a occhio meno di 100 metri dal nostro giardino).&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Per circa due anni l&amp;#8217;erba nel campo non è stata tagliata, e come potete vedere dalle foto, tutt&amp;#8217;ora ci sono piante ed erbacce che crescono da quello che è rimasto, fornendo un ambiente ideale per pantegane e altri animali non propriamente salubri.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;In aggiunta, poiché fino a qualche mese fa la sbarra era ancora aperta, la «stradina» di accesso al campo era diventata una meta nota di auto che cercavano un posto per infrattarsi (e vi assicuro che la zona di romantico non ha assolutamente &lt;strong&gt;nulla&lt;/strong&gt; quindi traetene voi le deduzioni). A tal proposito, Alberto ha anche scritto un articolo sul giornalino di cui sopra:&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;&quot; class=&quot;flickrplugin&quot;&gt;&lt;a href=&quot;http://www.flickr.com/photos/flameeyes/456714636&quot;&gt;&lt;img src=&quot;http://farm1.static.flickr.com/176/456714636_59b370ecc6_m.jpg&quot; width=&quot;165&quot; height=&quot;240&quot; alt=&quot;Quattrogatti di Febbraio 2007&quot; title=&quot;Quattrogatti di Febbraio 2007&quot;/&gt;&lt;/a&gt;&lt;p class=&quot;caption&quot; style=&quot;width:165px&quot;&gt;La copertina del Quattrogatti (giornalino locale) con l&amp;#8217;articolo di Alberto riguardo alla discarica.&lt;/p&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;(in aggiunta potete trovare una scansione in &lt;a href=&quot;http://www.lizardtech.com/&quot;&gt;DjVu&lt;/a&gt; ad alta qualità per la lettura direttamente &lt;a href=&quot;http://farragut.flameeyes.is-a-geek.org/my_images/quattrogatti-0702.djvu&quot;&gt;sul mio server&lt;/a&gt; &amp;#8211; sorry ma questo era l&amp;#8217;unico formato che avesse una resa accettabile, visto che non ho il sorgente originale da convertire in &lt;span class=&quot;caps&quot;&gt;PDF&lt;/span&gt;).&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Ora, dopo otto anni che non succede nulla, vediamo se la rete può aiutare ad avere una risposta &lt;em&gt;fattiva&lt;/em&gt; nella soluzione di questo problema&amp;#8230; specie perché ci sono già altre discariche abusive qua attorno di cui nessuno si occupa.&lt;/p&gt;&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Thu, 12 Apr 2007 16:06:00 +0000</pubDate>
    <guid isPermaLink="false">http://amarok.kde.org/blog/archives/366-guid.html</guid>
    
</item>
<item>
    <title>A little Summer of Code analysis</title>
    <link>http://amarok.kde.org/blog/archives/365-A-little-Summer-of-Code-analysis.html</link>
            <category>Flameeyes</category>
    
    <comments>http://amarok.kde.org/blog/archives/365-A-little-Summer-of-Code-analysis.html#comments</comments>
    <wfw:comment>http://amarok.kde.org/blog/wfwcomment.php?cid=365</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://amarok.kde.org/blog/rss.php?version=2.0&amp;type=comments&amp;cid=365</wfw:commentRss>
    

    <author>nospam@example.com (Diego Pettenò)</author>
    <content:encoded>
    &lt;p&gt;So today the allocated projects for the various organisations accepted in Google Summer of Code were released, and I decided to skim through them to see if there was something interesting; especially with xine-lib in mind.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;First, &lt;a href=&quot;http://code.google.com/soc/ffmpeg/about.html&quot;&gt;FFmpeg projects&lt;/a&gt;, as FFmpeg is for good or bad xine&amp;#8217;s heart, and improvement in it is certainly going to do good to xine project too. There are four decoders proposed and accepted: &lt;span class=&quot;caps&quot;&gt;RV40&lt;/span&gt; (Real Video), E-AC3 (used in some kind of HD media if I remember correctly), Dirac and &lt;span class=&quot;caps&quot;&gt;QCELP&lt;/span&gt;. I sincerely never heard of the last one, and of &lt;a href=&quot;http://en.wikipedia.org/wiki/Dirac_(codec&quot;&gt;Diract&lt;/a&gt;) I heard only as an experiment from &lt;span class=&quot;caps&quot;&gt;BBC&lt;/span&gt;; I prepared the ebuild for the Dirac library when I was trying to support it in &lt;span class=&quot;caps&quot;&gt;VLC&lt;/span&gt;, but as there was not a simple way to test it I left it masked in the tree for a while; the package is still there, masked, but someone else probably took it over; with further experience, I should have put it in an overlay.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;While really interesting, &lt;span class=&quot;caps&quot;&gt;RV40&lt;/span&gt; and E-AC3 doesn&amp;#8217;t sound that appealing for the target of xine users; first the Real demuxer needs an overdue overhaul, second E-AC3 only makes sense if we also start supporting HD media, which I don&amp;#8217;t think we&amp;#8217;d be doing soon enough. I was hoping for a Monkey&amp;#8217;s Audio decoder, but that was not the case neither this year.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Users interested in having Monkey&amp;#8217;s audio support in Amarok and other xine-based players might consider the idea to start a Chinese wall reverse engineering for it from the macport library, also if some &lt;a href=&quot;http://wiki.multimedia.cx/index.php?title=APE&quot;&gt;description&lt;/a&gt; is present already, and might be enough to start working on it; I&amp;#8217;m not keen on going to do it myself though; beside having other things to do, I don&amp;#8217;t really know where to start at the moment.. bribes might make me reconsider but remember that almost anything I do goes to help in some way&amp;#8230;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Now instead &lt;a href=&quot;http://code.google.com/soc/freebsd/about.html&quot;&gt;FreeBSD&lt;/a&gt; has interesting ideas, I&amp;#8217;m quite interested in support for the Apple&amp;#8217;s MacBooks (hoping that they will also consider MacBookPro), as I&amp;#8217;m an user for it; the &lt;span class=&quot;caps&quot;&gt;TCP&lt;/span&gt;/IP regressions testing might also help, as there has been a few &lt;span class=&quot;caps&quot;&gt;TCP&lt;/span&gt;/IP problems in the past that might get solved once and forever with this, but what is really interesting is the bintools project to replace parts of binutils with &lt;span class=&quot;caps&quot;&gt;BSD&lt;/span&gt;-licensed variants.. interesting not much for its usefulness, but just to see the mess when you add bintools&amp;#8217;s commands to binutils&amp;#8217;s and elfutils&amp;#8217;s &amp;#8230; reinventing the wheel, year after year.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;For what concerns &lt;a href=&quot;http://code.google.com/soc/kde/about.html&quot;&gt;&lt;span class=&quot;caps&quot;&gt;KDE&lt;/span&gt;&lt;/a&gt; I think we&amp;#8217;ll see the results only in a few months, but I&amp;#8217;m happy to see that there are projects to improve Kopete&amp;#8217;s &lt;span class=&quot;caps&quot;&gt;MSN&lt;/span&gt; and Jabber protocols. I just hope that in &lt;span class=&quot;caps&quot;&gt;KDE4&lt;/span&gt; Kopete is going to get more maintenance and won&amp;#8217;t be allowed to fall behind every year to an obsolete state (Jingle support was nice&amp;#8230; but it was left incomplete and never update up to now!). And I don&amp;#8217;t intend to forget Mike&amp;#8217;s project on Kontact&amp;#8217;s blogging support.. &lt;em&gt;that&lt;/em&gt; will be neat for a blog-addicted like me!&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;For &lt;a href=&quot;http://code.google.com/soc/xorg/about.html&quot;&gt;X.org&lt;/a&gt;, the server-side &lt;span class=&quot;caps&quot;&gt;XCB&lt;/span&gt; support is something that I&amp;#8217;ve read about for a few months now in the xcb mailing list and seems like it&amp;#8217;s going to be quite useful to reduce the possibility of a mistake in the X server code, which is something we all rely upon nowadays (by the way, since X.Org was founded, using X started to be less a pain that it was before, the no-configuration startup is nice, too bad xorg.conf still uses that obscure format &lt;img src=&quot;http://amarok.kde.org/blog/templates/default/img/emoticons/sad.png&quot; alt=&quot;:-(&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; ).&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;When it comes to &lt;a href=&quot;http://code.google.com/soc/gcc/about.html&quot;&gt;&lt;span class=&quot;caps&quot;&gt;GCC&lt;/span&gt;&lt;/a&gt; instead, the projects are more technicalities, but there is at least a speedup project that all Gentoo users should welcome easily, and the &lt;span class=&quot;caps&quot;&gt;SEH&lt;/span&gt; support (that by the way comes from a friend of mine, hey Hyp if you&amp;#8217;re reading! &lt;img src=&quot;http://amarok.kde.org/blog/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; ), that will be one less reason not to use MinGW32 rather than VC++.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;And not directly related to xine, but coming from one of xine&amp;#8217;s contributors in the last months, there&amp;#8217;s a project for &lt;a href=&quot;http://code.google.com/soc/wine/about.html&quot;&gt;Wine&lt;/a&gt; to support Solaris.. I wish him good luck, as that might make wine&amp;#8217;s code even better, as usually portability helps cleaning up after yourself.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Okay now let&amp;#8217;s hope these projects will all be completed during Summer of Code and maintained for a long time afterward! &lt;img src=&quot;http://amarok.kde.org/blog/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Thu, 12 Apr 2007 08:42:00 +0000</pubDate>
    <guid isPermaLink="false">http://amarok.kde.org/blog/archives/365-guid.html</guid>
    
</item>
<item>
    <title>Music overdose?</title>
    <link>http://amarok.kde.org/blog/archives/364-Music-overdose.html</link>
            <category>Flameeyes</category>
    
    <comments>http://amarok.kde.org/blog/archives/364-Music-overdose.html#comments</comments>
    <wfw:comment>http://amarok.kde.org/blog/wfwcomment.php?cid=364</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://amarok.kde.org/blog/rss.php?version=2.0&amp;type=comments&amp;cid=364</wfw:commentRss>
    

    <author>nospam@example.com (Diego Pettenò)</author>
    <content:encoded>
    &lt;p&gt;Finally, yesterday I received the package from Amazon JP!&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Let&amp;#8217;s ignore the fact that on a ?110 order I had to pay ?41 for custom duties (oh well, the cost of a single &lt;span class=&quot;caps&quot;&gt;CD I&lt;/span&gt; ordered in a shop around here I asked before was way higher anyway), and I&amp;#8217;ll also try not to repeat too often the ridiculousness that &lt;span class=&quot;caps&quot;&gt;DHL&lt;/span&gt; Express was able to ship the package in three days from Narita to Marcon (Venice) and then it took three more days to ship from there to my home (because last Saturday they didn&amp;#8217;t deliver, and the package was received there just Friday evening); all things considered, four working days is not a bad delivery time.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Now as crazy as I am, I &lt;em&gt;do&lt;/em&gt; like some Japanese music&amp;#8230; I started loving L&amp;#8217;Arc~en~Ciel music when I heard &lt;em&gt;Driver&amp;#8217;s High&lt;/em&gt; as opening for &lt;em&gt;Great Teacher Onizuka&lt;/em&gt; anime. I was able to buy myself &lt;em&gt;Awake&lt;/em&gt; some time ago, and yesterday I received &lt;em&gt;ark&lt;/em&gt; in the special 15th anniversary edition, CD with &lt;span class=&quot;caps&quot;&gt;DVD&lt;/span&gt;, so I was more than happy! &lt;img src=&quot;http://amarok.kde.org/blog/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Now this doesn&amp;#8217;t mean I passed the whole day listening to music, eh.. I was actually working for part of the time on finishing the details of my (now expired) job, then I took a shopping tour to a bookshop in Mestre, looking for something from Dario Fo (with scarce results, I was able only to find a single book of him), but of course this without forgetting working on xine; as I said, mercurial &lt;em&gt;is&lt;/em&gt; something useful.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;The 1.2 series, on which I&amp;#8217;m focusing at the moment, is now spotting a cleaner support for packed attributes, and I&amp;#8217;m working on adding Doxygen documentation to the code; currently I&amp;#8217;m converting documentation in the buffer.h file, just because it&amp;#8217;s the one I found most difficult to understand myself.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Unfortunately, emacs support for Doxygen seems to be pretty much non-existant, and even the doxymacs extension does a lousy job, as it fails to highlight the Doxygen comments properly. Add to that that emacs insists on putting two spaces in front of every line after an &lt;code&gt;extern &quot;C&quot; {&lt;/code&gt; block (that has to stay there as it&amp;#8217;s a public header, although nowadays I think it should be C++ code that should use &lt;code&gt;extern &quot;C&quot; {&lt;/code&gt; before includes, rather than polluting the C header files), and you can see why I haven&amp;#8217;t converted the whole xine-lib yet.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Unfortunately, I&amp;#8217;m not yet sure on how many of the improvements I hoped for I&amp;#8217;ll be able to implement in 1.2 series, considering that I&amp;#8217;d hope for 1.2 to be released more or less with &lt;span class=&quot;caps&quot;&gt;KDE4&lt;/span&gt; release (before if possible, if not possible not too much afterward), as the 10MB improvement in memory usage &lt;em&gt;is&lt;/em&gt; a killer feature.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;I&amp;#8217;m also trying now to handle a few things in a slightly different way, for instance I&amp;#8217;ll be trying to move &lt;em&gt;all&lt;/em&gt; of the contributed code in the contrib/ subdirectory, rather than having it scattered among xine proper sources. The problem is that having to deal with both build system and code changes makes quite more difficult to track down the changes, but this should not be a big problem on the long run.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;And for who&amp;#8217;s curious, yes, I also have an Amazon JP &lt;a href=&quot;http://www.amazon.co.jp/gp/registry/U17P786K9PR4&quot;&gt;wishlist&lt;/a&gt; but it&amp;#8217;s mostly for my own use, as the customs duties are a problem.&lt;/p&gt;&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Wed, 11 Apr 2007 06:17:00 +0000</pubDate>
    <guid isPermaLink="false">http://amarok.kde.org/blog/archives/364-guid.html</guid>
    
</item>
<item>
    <title>The other big memory waste</title>
    <link>http://amarok.kde.org/blog/archives/360-The-other-big-memory-waste.html</link>
            <category>Flameeyes</category>
    
    <comments>http://amarok.kde.org/blog/archives/360-The-other-big-memory-waste.html#comments</comments>
    <wfw:comment>http://amarok.kde.org/blog/wfwcomment.php?cid=360</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://amarok.kde.org/blog/rss.php?version=2.0&amp;type=comments&amp;cid=360</wfw:commentRss>
    

    <author>nospam@example.com (Diego Pettenò)</author>
    <content:encoded>
    &lt;p&gt;Tonight I finally started the true 1.2 series branch on xine-lib&amp;#8217;s repository; this branch is the merge of the nopadding and the ffmpeg_integration branches, which means it starts with two big improvements: 10MB memory saving and a simpler to upgrade FFmpeg snapshot, with handling for disabling uncommon decoders, just like Miguel wanted.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Now, if you looked well enough at the graphs you posted, you already know what I&amp;#8217;m talking about, if you didn&amp;#8217;t, well here there&amp;#8217;s a new graph, created using the &lt;code&gt;-pq&lt;/code&gt; option at xine so that the logo is not displayed once the mp3 finished playing, removing the spurious spike at the end of the graph.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://dev.gentooexperimental.org/~flameeyes/xine-massif/massif.29090.png&quot;&gt;&lt;img src=&quot;http://dev.gentooexperimental.org/~flameeyes/xine-massif/massif.29090.png&quot; width=&quot;324&quot; height=&quot;241&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;The yellow are you see it&amp;#8217;s the memory created by &lt;code&gt;_x_fifo_buffer_new&lt;/code&gt; called by &lt;code&gt;_x_video_decoder_init&lt;/code&gt; function. That&amp;#8217;s right, there&amp;#8217;s a huge amount of memory allocated by the video decoder initialisation function when playing an audio only mp3.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Okay, so what the problem is here? First, as the code cannot tell if what is playing is audio only or contains video too beforehand, it has to initialise the video driver every time too; this is quite normal though, nothing to be a problem.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;The problem is that the video initialisation initialise automatically also a number of buffers, by default 500, of size 8KB.. even if they never gets used. It also allocates a single memory area for the buffers, 2KB-aligned, which is not exactly the cheapest way to allocate memory.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Now, this in general should be okay, shouldn&amp;#8217;t it? Most of the times you&amp;#8217;re playing video with xine, and so it should be fine, but there are cases when using this method will just waste a lot of memory, especially if the user tried to be smart and increased the number of buffers to something that isn&amp;#8217;t exactly sane&amp;#8230;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;I&amp;#8217;ll now be working on checking if it&amp;#8217;s possible to just allocate the buffers when they are needed; in that case the graph will certainly appear different, as the memory will increase less steeply, and would just run down together at the end.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Let&amp;#8217;s return to work (although I should be finding a way to clean up the mess that is my home office here)&amp;#8230;&lt;/p&gt;&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Mon, 09 Apr 2007 20:11:00 +0000</pubDate>
    <guid isPermaLink="false">http://amarok.kde.org/blog/archives/360-guid.html</guid>
    
</item>
<item>
    <title>Spring cleaning in your $HOME: spamassassin with SQL backend</title>
    <link>http://amarok.kde.org/blog/archives/358-Spring-cleaning-in-your-HOME-spamassassin-with-SQL-backend.html</link>
            <category>Flameeyes</category>
    
    <comments>http://amarok.kde.org/blog/archives/358-Spring-cleaning-in-your-HOME-spamassassin-with-SQL-backend.html#comments</comments>
    <wfw:comment>http://amarok.kde.org/blog/wfwcomment.php?cid=358</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://amarok.kde.org/blog/rss.php?version=2.0&amp;type=comments&amp;cid=358</wfw:commentRss>
    

    <author>nospam@example.com (Diego Pettenò)</author>
    <content:encoded>
    &lt;p&gt;This is going to be the first of a series of posts about «spring cleaning» of your home directory. We&amp;#8217;re also in the right season, so I&amp;#8217;m not that Off Topic for now &lt;img src=&quot;http://amarok.kde.org/blog/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Why do I care about having a clean home directory? Well, it vastly depends on my setup, but I think this is common enough to grant some discussion about it. I have my /home in a partition that is set up with DM to be replicated on my two harddrives, providing me a basic &lt;span class=&quot;caps&quot;&gt;RAID1&lt;/span&gt; setup for that single partition; this allows me to be relatively safe from a harddisk crash, for what concerns my important data, like &lt;span class=&quot;caps&quot;&gt;SSH&lt;/span&gt; and &lt;span class=&quot;caps&quot;&gt;GPG&lt;/span&gt; keys, configuration files, mail and so on.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;The problem with this is that everything that gets written to my home directory has to be written on two disks, and is often a performance drawback; for this reason, I tend to scatter the non-essential data (like repository checkouts and similar) in different partitions, as they also don&amp;#8217;t require much backup most of the times. This also brings me to hate the software that uses my home directory to save cache data, because it ends up using &lt;span class=&quot;caps&quot;&gt;RAID1&lt;/span&gt; for disposable data that I wouldn&amp;#8217;t want to have backed up together with really important data.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;So, this series of posts are going to explain how I try to keep my home directory clean from cache data, in part to help someone else that might want to do the same, in part for me to remember &lt;em&gt;how&lt;/em&gt; and &lt;em&gt;why&lt;/em&gt; I did something &lt;img src=&quot;http://amarok.kde.org/blog/templates/default/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;One of the first services that I thought of, using data in my home directory, was spamassassin; while the amount of spam mail I receive has now decreased &lt;em&gt;a lot&lt;/em&gt; since I left Gentoo (as I&amp;#8217;m not in 10 aliases), I still receive quite a bit, so I&amp;#8217;m not yet ready to remove my local SpamAssassin filter; it&amp;#8217;s probably a sane idea especially since for xine-lib I&amp;#8217;m going to repeat my email address over and over at every commit &lt;img src=&quot;http://amarok.kde.org/blog/templates/default/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;SpamAssassin saves some data in &lt;code&gt;~/.spamassassin&lt;/code&gt;, namely the bayesian tokes database, the automatic whitelist and your extra preferences. As I don&amp;#8217;t have extra per-user preferences (I use SpamAssassin in a single-user environment), I don&amp;#8217;t need those, but I do need bayes and awl to work. Since I already have Amarok using PostgreSQL in this box, I decided to use PostgreSQL to also save SpamAssassin data.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Unfortunately, as it is the ebuild does not allow you to easily add postgres support, but this is probably going to be fixed in the future; I have a better ebuild in my overlay ( git://flameeyes.is-a-geek.org/overlay.git ) and I&amp;#8217;ll see to send the changes to Perl team now; in the mean time, the things to change are not that much.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;The documentation on setting up SpamAssassin with &lt;span class=&quot;caps&quot;&gt;SQL&lt;/span&gt; backend can be found on &lt;a href=&quot;http://wiki.apache.org/spamassassin/?action=fullsearch&amp;#38;context=180&amp;#38;value=sql&amp;#38;titlesearch=Titles&quot;&gt;SpamAssassin Wiki&lt;/a&gt;, and it applies to PostgreSQL as well as MySQL, even if some things has to be changed around, nothing major though.&lt;br /&gt;
During this post I&amp;#8217;ll assume that both PostgreSQL and SpamAssassin are only reachable on localhost, and that you don&amp;#8217;t need extra security concerns like a password to the database or something like that.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;First of all, stop SpamAssassin (if your mail system is not mission critical) and start backing up the bayesian database:&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;typocode&quot;&gt;&lt;pre&gt;&lt;code class=&quot;typocode_default &quot;&gt;% sudo /etc/init.d/spamd stop&lt;br /&gt;
% sa-learn --backup &amp;gt; sa-bayes-backup&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;This will create a &lt;code&gt;sa-bayes-backup&lt;/code&gt; file with the bayesian token currently saved in your home directory in a Berkley DB file.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;After this, change the useflags for &lt;code&gt;mail-filter/spamassassin&lt;/code&gt;: disable the berkdb useflag and enable the postgres useflag; ignore the warning currently thrown by the ebuild that the bayesian filter needs the DB_File module, it works just as fine with PostgreSQL as backend, but you have to configure it. You might also want to enable the doc useflag, as right now it&amp;#8217;s unfortunately controlling the installation of user-serviceable documentation; in alternative, just get an extracted copy of SpamAssassin&amp;#8217;s tarball to use as a reference.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Now, it&amp;#8217;s time to create the user and the database to store the data into.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;typocode&quot;&gt;&lt;pre&gt;&lt;code class=&quot;typocode_default &quot;&gt;% sudo -u postgres -i&lt;br /&gt;
postgres % createuser spamassassin&lt;br /&gt;
postgres % createdb -O spamassassin spamassassin&lt;br /&gt;
postgres % bzcat /usr/share/doc/spamassassin-3*/sql/bayes_pg.sql.bz2 | \&lt;br /&gt;
  psql -U spamassassin spamassassin&lt;br /&gt;
postgres % bzcat /usr/share/doc/spamassassin-3*/sql/awl_pg.sql.bz2 | \&lt;br /&gt;
  psql -U spamassassin spamassassin&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;You could also use per-user preferences stored in &lt;span class=&quot;caps&quot;&gt;SQL&lt;/span&gt; backend if you really need them; as I don&amp;#8217;t need them, I instead edited &lt;code&gt;/etc/conf.d/spamd&lt;/code&gt; replacing the &lt;code&gt;-c&lt;/code&gt; option (which forces spamd into creating per-user configuration files if missing) with &lt;code&gt;-x&lt;/code&gt; (which says to spamd to ignore per-user options, that is just what I need.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Now it&amp;#8217;s time to set up the database connection from SpamAssassin; although the ebuild suggests to use the &lt;code&gt;secrets.cf&lt;/code&gt; file, that is not readable by users, to configure the connection to the database, if you plan to use sa-learn from your user, you might prefer to just enable it in a world-readable file, especially if you don&amp;#8217;t have any security concerns on the use of the spamassassin PostgreSQL database; this is what I have done anyway:&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;typocode&quot;&gt;&lt;pre&gt;&lt;code class=&quot;typocode_default &quot;&gt;bayes_store_module      Mail::SpamAssassin::BayesStore::PgSQL&lt;br /&gt;
bayes_sql_dsn           DBI:Pg:dbname=spamassassin;host=localhost&lt;br /&gt;
bayes_sql_username      spamassassin&lt;br /&gt;
bayes_sql_override_username     spamassassin&lt;br /&gt;
&lt;br /&gt;
auto_whitelist_factory  Mail::SpamAssassin::SQLBasedAddrList&lt;br /&gt;
user_awl_dsn            DBI:Pg:dbname=spamassassin;host=localhost&lt;br /&gt;
user_awl_sql_username   spamassassin&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;At this point, SpamAssassin will only use PostgreSQL for its databases, so you can just remove your &lt;code&gt;~/.spamassassin&lt;/code&gt; directory, it will not be recreated. Let&amp;#8217;s then start PostgreSQL (or make sure it&amp;#8217;s started already, and then restore the Bayes database:&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;typocode&quot;&gt;&lt;pre&gt;&lt;code class=&quot;typocode_default &quot;&gt;% sudo /etc/init.d/postgresql start&lt;br /&gt;
% sa-learn --restore sa-bayes-backup&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Now you could restart spamd and have your system back already, but there is one problem with the current ebuild (the one in my overlay does not need this change though): it does not depend on PostgreSQL. From one side it&amp;#8217;s correct, you might not be using the localhost pgsql to store the data, so in that case you don&amp;#8217;t have to care to start spamd after postgresql, but if you&amp;#8217;re going to use a local configuration, you certainly don&amp;#8217;t want spamd to start before the PostgreSQL database is up, so you have to edit the &lt;code&gt;/etc/init.d/spamd&lt;/code&gt; script, and add in the &lt;code&gt;depend()&lt;/code&gt; function, a simple &lt;code&gt;use postgresql&lt;/code&gt; line; add postgresql to your default runlevel, and that should be it.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;At this point you&amp;#8217;re set, just restart your spamd, and it won&amp;#8217;t use your homedirectory to store cache data anymore!&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;typocode&quot;&gt;&lt;pre&gt;&lt;code class=&quot;typocode_default &quot;&gt;% sudo /etc/init.d/spamd start&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Sun, 08 Apr 2007 13:32:00 +0000</pubDate>
    <guid isPermaLink="false">http://amarok.kde.org/blog/archives/358-guid.html</guid>
    
</item>
<item>
    <title>Integrating FFmpeg in xine-lib</title>
    <link>http://amarok.kde.org/blog/archives/357-Integrating-FFmpeg-in-xine-lib.html</link>
            <category>Flameeyes</category>
    
    <comments>http://amarok.kde.org/blog/archives/357-Integrating-FFmpeg-in-xine-lib.html#comments</comments>
    <wfw:comment>http://amarok.kde.org/blog/wfwcomment.php?cid=357</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://amarok.kde.org/blog/rss.php?version=2.0&amp;type=comments&amp;cid=357</wfw:commentRss>
    

    <author>nospam@example.com (Diego Pettenò)</author>
    <content:encoded>
    &lt;p&gt;Beside the &lt;span class=&quot;caps&quot;&gt;ABI&lt;/span&gt; breakage that is needed to reduce the structures&amp;#8217; size, that as I blogged yesterday &lt;a href=&quot;http://farragut.flameeyes.is-a-geek.org/articles/2007/04/07/the-first-improvement-in-xine-with-mercurial&quot;&gt;helps quite a bit&lt;/a&gt;, another of my currently worked on branches is the FFmpeg integration.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Now, xine-lib has used FFmpeg since ever, and it has an internal copy of it (although on Gentoo you use the external copy of it to reduce the size of the code, and avoid having double security problems), but that copy requires rewriting the build system from FFmpeg&amp;#8217;s own makefiles to &lt;code&gt;Makefile.am&lt;/code&gt; files, which is far from trivial and quite error prone.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;It also requires to clone in configure.ac the tests for the features that are tested in FFmpeg&amp;#8217;s own configure script, which is a waste of time when using external FFmpeg most of the time, and needs to be maintained over the long run as they might be modified by FFmpeg developers, and we can&amp;#8217;t just copy them 1:1 as they don&amp;#8217;t use autoconf either.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;To solve this issue, I&amp;#8217;ve been working before to implement a sort of Chinese Wall, so that FFmpeg&amp;#8217;s build system could be called from xine&amp;#8217;s automake build system without need to accommodate the Makefiles every time an upgrade is needed.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;It wasn&amp;#8217;t that difficult to begin with, but there was an obstacle with the &lt;code&gt;make dist&lt;/code&gt; command that is used to create the distribution tarball, as there was no way to seemingly merge its processing with FFmpeg&amp;#8217;s build system; today I then implemented a &lt;code&gt;dist-hook&lt;/code&gt; that takes the list of files to add for FFmpeg support to the tarball. It requires an extra step during the update of the internal copy, but that&amp;#8217;s far from being a problem, as it&amp;#8217;s certainly more straightforward than it was to update the previous FFmpeg copy.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;With this problem fixed, I was finally able to start working on getting distcheck working and thus trying to get a working branch out of it. The result is quite good, as I was able to get a distcheck running already, and I&amp;#8217;m now working on actually implementing Miguel&amp;#8217;s idea to disable the &amp;#8220;uncommon&amp;#8221; audio/video decoders present in FFmpeg; his work on the current 1.1 series is basically half-implemented, and probably never to be fixed, as it would require to change all the Makefile.am so that they take into consideration the huge amount of conditionals currently present in FFmpeg; I think once it&amp;#8217;s completed I&amp;#8217;ll just ask Miguel to give up on having it working in 1.1 series, as it&amp;#8217;s unlikely to ever work decently&amp;#8230; well, it might even work, but refreshing FFmpeg would require a huge amount of work, and we are understaffed already.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;And by working on this branch, and on this idea, I already discovered two bugs in FFmpeg that I&amp;#8217;ve locally patched.. the patches are now waiting (as usual) in ffmpeg-devel to be applied.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Hopefully, this will also be integrated in 1.2 series, that should then start being interesting&amp;#8230;&lt;/p&gt;&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Sat, 07 Apr 2007 21:04:00 +0000</pubDate>
    <guid isPermaLink="false">http://amarok.kde.org/blog/archives/357-guid.html</guid>
    
</item>
<item>
    <title>The first improvement in xine with Mercurial</title>
    <link>http://amarok.kde.org/blog/archives/356-The-first-improvement-in-xine-with-Mercurial.html</link>
            <category>Flameeyes</category>
    
    <comments>http://amarok.kde.org/blog/archives/356-The-first-improvement-in-xine-with-Mercurial.html#comments</comments>
    <wfw:comment>http://amarok.kde.org/blog/wfwcomment.php?cid=356</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://amarok.kde.org/blog/rss.php?version=2.0&amp;type=comments&amp;cid=356</wfw:commentRss>
    

    <author>nospam@example.com (Diego Pettenò)</author>
    <content:encoded>
    &lt;p&gt;So, after xine finally moved to Mercurial for xine-lib management, I&amp;#8217;ve decided to start working on those things that required me to branch out, at least on some of them that is; the first one I was able to tackle down was ffmpeg_integration, that now works fine beside the dist target.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;And then I moved working on the structures, applying pahole to &lt;em&gt;all&lt;/em&gt; the structures in libxine, even those comprising the public &lt;span class=&quot;caps&quot;&gt;ABI&lt;/span&gt; of the library, as I could just break the &lt;span class=&quot;caps&quot;&gt;ABI&lt;/span&gt; when needed, rather than limiting to the local structures of the plugins. Some of these changes applied to structures that are not part of the public &lt;span class=&quot;caps&quot;&gt;ABI&lt;/span&gt;, so I ended up merging them to the main repository already, and will be present in 1.1.5, even if they are mostly bytes-size changes, that nobody beside me should care about.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;But then tonight I gone looking for the 32 buttons that are/were present as an inline array in one of the video overlay structures; I was going to change the inline array with a dynamic array or with an array of pointers, so that the memory was going to be used only when actually used..&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;It was a sour surprise to find out that the array was &lt;strong&gt;never&lt;/strong&gt; used at all in the code, and it wasn&amp;#8217;t used on frontends either, and by removing it, the size of the structure in which it was dropped from 86KB to 40 bytes.. and then the &lt;code&gt;video_overlay_s&lt;/code&gt; structure dropped from over 4MB to about 3KB&amp;#8230; finally with it removed, there was also a 10MB of memory usage cut down during xine-lib runtime playback, 1/3 of the memory usage when playing an mp3 file:&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;(before the change, about 1.1.4 release)&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://dev.gentooexperimental.org/~flameeyes/xine-massif/massif-xine-lib-1.1.4.png&quot;&gt;&lt;img src=&quot;http://dev.gentooexperimental.org/~flameeyes/xine-massif/massif-xine-lib-1.1.4.png&quot; width=&quot;324&quot; height=&quot;241&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;(after the change, on my nopadding branch)&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://dev.gentooexperimental.org/~flameeyes/xine-massif/massif-xine-lib-nopadding.png&quot;&gt;&lt;br /&gt;
&lt;img src=&#039;http://dev.gentooexperimental.org/~flameeyes/xine-massif/massif-xine-lib-nopadding.png&#039; width=&#039;324&#039; height=&#039;241&#039;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;For starters, this does seem quite good, don&amp;#8217;t you think? &lt;img src=&quot;http://amarok.kde.org/blog/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Fri, 06 Apr 2007 22:01:00 +0000</pubDate>
    <guid isPermaLink="false">http://amarok.kde.org/blog/archives/356-guid.html</guid>
    
</item>
<item>
    <title>Conversion to Mercurial done</title>
    <link>http://amarok.kde.org/blog/archives/355-Conversion-to-Mercurial-done.html</link>
            <category>Flameeyes</category>
    
    <comments>http://amarok.kde.org/blog/archives/355-Conversion-to-Mercurial-done.html#comments</comments>
    <wfw:comment>http://amarok.kde.org/blog/wfwcomment.php?cid=355</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://amarok.kde.org/blog/rss.php?version=2.0&amp;type=comments&amp;cid=355</wfw:commentRss>
    

    <author>nospam@example.com (Diego Pettenò)</author>
    <content:encoded>
    &lt;p&gt;So, as of yesterday, thanks to Darren Salt and Reinhard Tartler, xine finally moved out of &lt;span class=&quot;caps&quot;&gt;CVS&lt;/span&gt; dark age, and came into Mercurial&amp;#8217;s territory.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;As you can see on &lt;a href=&quot;http://hg.debian.org/hg/&quot;&gt;Debian&amp;#8217;s Mercurial repositories page&lt;/a&gt; we have quite a few xine repositories: together with xine-lib, Darren also moved his gxine repositories so they are all together.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;I&amp;#8217;ve already started doing some little work, which shown a little bug on &lt;a href=&quot;http://cia.vc/stats/project/xine&quot;&gt;&lt;span class=&quot;caps&quot;&gt;CIA&lt;/span&gt;.vc&lt;/a&gt; yesterday that was ignoring my commits; fortunately &lt;a href=&quot;http://cia.vc/blog&quot;&gt;Micah&lt;/a&gt; corrected the problem right away.. thanks Micah! &lt;img src=&quot;http://amarok.kde.org/blog/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;One of the tasks I was able to take care of today was the update of the FFmpeg integration branch, that now is up to date with main xine-lib-1.1 branch. Unfortunately Binutils seems to have broken FFmpeg so I&amp;#8217;m unable to finish building and thus checking if it actually works as intended.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Anyway, soon I&amp;#8217;ll see to post more updates about it.&lt;/p&gt;&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Tue, 03 Apr 2007 10:28:00 +0000</pubDate>
    <guid isPermaLink="false">http://amarok.kde.org/blog/archives/355-guid.html</guid>
    
</item>
<item>
    <title>Pahole and xine-lib</title>
    <link>http://amarok.kde.org/blog/archives/345-Pahole-and-xine-lib.html</link>
            <category>Flameeyes</category>
    
    <comments>http://amarok.kde.org/blog/archives/345-Pahole-and-xine-lib.html#comments</comments>
    <wfw:comment>http://amarok.kde.org/blog/wfwcomment.php?cid=345</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://amarok.kde.org/blog/rss.php?version=2.0&amp;type=comments&amp;cid=345</wfw:commentRss>
    

    <author>nospam@example.com (Diego Pettenò)</author>
    <content:encoded>
    &lt;p&gt;So, I&amp;#8217;ve taken two days totally off from almost any kind of communication, I tried to relax, and now I feel a bit better. I still do think I haven&amp;#8217;t been able to do much good beside my work on Gentoo, but I&amp;#8217;m not ready  yet to give up, even if it&amp;#8217;s hard to continue, I &lt;strong&gt;will&lt;/strong&gt; continue. At least for a while.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Unfortunately my current &lt;span class=&quot;caps&quot;&gt;UPS&lt;/span&gt; setup is not going to fly, X-Drum in #gentoo-it informed me last night of the incompatibility between PSUs with active &lt;a href=&quot;http://en.wikipedia.org/wiki/Power_factor_correction&quot;&gt;&lt;span class=&quot;caps&quot;&gt;PFC&lt;/span&gt;&lt;/a&gt; and UPSes with stepped sinusoidal wave.. and the new &lt;span class=&quot;caps&quot;&gt;PSU I&lt;/span&gt; bought two months ago &lt;em&gt;has&lt;/em&gt; active &lt;span class=&quot;caps&quot;&gt;PFC&lt;/span&gt;. The result is that I need a new &lt;span class=&quot;caps&quot;&gt;UPS&lt;/span&gt;, of the Smart &lt;span class=&quot;caps&quot;&gt;UPS&lt;/span&gt; series from &lt;span class=&quot;caps&quot;&gt;APC&lt;/span&gt;, which will cost me ?420, sigh.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Talking about the topic in subject, two days ago I analysed most of the xine-lib plugins with pahole (with a patch to fix an integer overflow in the offset counter (the author wasn&amp;#8217;t expecting structures bigger than 64KiB, but this in xine-lib is not rare), and I do have at least one good news: FFmpeg decoding of non-mpeg video streams was taking 1MB of memory for a libmpeg2 buffer that was not going to be used; I&amp;#8217;ve now fixed this so that the structure is only allocated and initialised when needed, so decoding will take 1MB of memory less than before, on next xine-lib release.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Unfortunately, I&amp;#8217;ve found similar mistakes in design in other structures, most of which are public, so part of the libxine &lt;span class=&quot;caps&quot;&gt;ABI&lt;/span&gt;, and thus I can&amp;#8217;t fix them in the 1.1 series, not unless there are good reasons and good results to achieve by breaking it. But, next week we&amp;#8217;re going to move to Mercurial, thanks to Darren Salt and Reinhard Tartler who are helping with the migration (for who&amp;#8217;s wondering about hosting, it will likely be on Alioth, if they accept us), so I can branch out and fix the stuff.. and then merge back in either 1.1 or 1.2 as we feel needed.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;One of the structures I surely will be refactoring is the video overlay structure.. that has a size over 4MiB as it is, which explains why the function to initialise video overlay consumes 5MiB of memory right after xine initialisation, even when playing a sound file. By instancing the structures only when really needed, and making sure that there aren&amp;#8217;t holes around, it should be possible to reduce drastically the memory used up by xine.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Another thing in my &lt;span class=&quot;caps&quot;&gt;TODO&lt;/span&gt; list is, as I said already, rewriting the plugins cache code. I will also try to provide a simple way to regenerate this cache globally, so that for instance it can be installed directly by the ebuild, without asking users to regenerate the cache by theirselves, and sharing it in memory (through mmap) between users too.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;To help this, I&amp;#8217;ll also see to change the way the plugins are handled, by using where possible inline arrays for the names and description of the plugins, rather than pointers, allowing to share the structures in memory, where this does not waste too many bytes.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Anyway, I still need to relax a bit more because I can&amp;#8217;t really rest lately, and I &lt;em&gt;do&lt;/em&gt; need some rest if I am to carry on.&lt;/p&gt;&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Sat, 31 Mar 2007 16:18:00 +0000</pubDate>
    <guid isPermaLink="false">http://amarok.kde.org/blog/archives/345-guid.html</guid>
    
</item>
<item>
    <title>I *will* say &amp;quot;I told you that^Wso&amp;quot;</title>
    <link>http://amarok.kde.org/blog/archives/347-I-will-say-quot;I-told-you-thatWsoquot;.html</link>
            <category>Flameeyes</category>
    
    <comments>http://amarok.kde.org/blog/archives/347-I-will-say-quot;I-told-you-thatWsoquot;.html#comments</comments>
    <wfw:comment>http://amarok.kde.org/blog/wfwcomment.php?cid=347</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://amarok.kde.org/blog/rss.php?version=2.0&amp;type=comments&amp;cid=347</wfw:commentRss>
    

    <author>nospam@example.com (Diego Pettenò)</author>
    <content:encoded>
    &lt;p&gt;&lt;em&gt;Edit: thanks to Mike Arthur for letting me remember I got the phrase wrong, the permalink will have to stay wrong to avoid confusion though :/&lt;/em&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;So today&amp;#8217;s news are that a bunch of people who never seemed to care about &lt;span class=&quot;caps&quot;&gt;ALSA&lt;/span&gt; (sorry Tony but iirc you said that yourself) now will be the new &lt;span class=&quot;caps&quot;&gt;ALSA&lt;/span&gt; maintainers. And their first action is to flush down the toilet the months of work I&amp;#8217;ve put in making sure that the official alsa-driver package works.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Okay, well, their responsibility.. but again, what about those people who &lt;strong&gt;need&lt;/strong&gt; to use alsa-driver? While Josh (nightmorph) agrees that it&amp;#8217;s more than 2.4, Daniel seems to care about it just for 2.4 and those few extra drivers on it. Tell you what: neither my boxes can run in-kernel &lt;span class=&quot;caps&quot;&gt;ALSA&lt;/span&gt;, as they both die with it.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;And has any of them tried to contact me? I told to them already that the &lt;span class=&quot;caps&quot;&gt;ALSA&lt;/span&gt; maintainer&amp;#8217;s guide is incomplete, were they able to fill the gaps that I haven&amp;#8217;t been able to update before leaving without asking? Maybe.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;But with all due respect, Steve wasn&amp;#8217;t able to find time to proxy-commit the ebuilds I &lt;strong&gt;already&lt;/strong&gt; prepared for &lt;span class=&quot;caps&quot;&gt;ALSA&lt;/span&gt;, Petteri did it.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Do they know about the six bugs that I&amp;#8217;ve opened on the &lt;span class=&quot;caps&quot;&gt;ALSA&lt;/span&gt; bugs tracker that are patched in Gentoo?&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;For the way it has been handled, I do think Daniel is just trying to get revenge for my handling of &lt;span class=&quot;caps&quot;&gt;ALSA&lt;/span&gt;, sorry Daniel, I respect you, but you&amp;#8217;re dead set on the wrong way to see the issue this time. And I&amp;#8217;m pretty sure that it &lt;strong&gt;will&lt;/strong&gt; create problems.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;I don&amp;#8217;t think I handled &lt;span class=&quot;caps&quot;&gt;ALSA&lt;/span&gt; all that bad, I didn&amp;#8217;t get any help by any other developer, and Daniel tried to push me off track once or twice, but there weren&amp;#8217;t many users complaining about &lt;span class=&quot;caps&quot;&gt;ALSA&lt;/span&gt; not working&amp;#8230; while we all know what happened on the 1.0.8 to 1.0.9 update (or do we? rather, do they? I was there, not sure where they were on that one); genstef failed already once trying to take over &lt;span class=&quot;caps&quot;&gt;ALSA&lt;/span&gt; from me, by the way, and if it wasn&amp;#8217;t for my proxied commit, &lt;span class=&quot;caps&quot;&gt;ALSA 1&lt;/span&gt;.0.14_rc3 wouldn&amp;#8217;t have been in the tree most likely (released 6 March, my ebuild was ready on 7th, Petteri committed it at 17 March after leaving some time to see if someone else was going to pick it up).&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Anyway, with the future in hands of those devs, I think I won&amp;#8217;t restrain myself from saying &amp;#8220;I told you so&amp;#8221; when, in a couple of months, you&amp;#8217;ll hear users complaining about their VIA82xx card or their &lt;span class=&quot;caps&quot;&gt;HDA&lt;/span&gt; card not working. Bets are open on when the first signs of something broken will appear.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	&lt;p&gt;Oh, someone in there is going to actually take care of what I left incomplete (ld10k1 init script), or is that not cool enough?&lt;/p&gt;&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Wed, 28 Mar 2007 10:34:00 +0000</pubDate>
    <guid isPermaLink="false">http://amarok.kde.org/blog/archives/347-guid.html</guid>
    
</item>

</channel>
</rss>
