<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="/assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hartwork Blog (Posts about Planet KDE)</title><link>https://blog.hartwork.org/</link><description></description><atom:link href="https://blog.hartwork.org/topics/planet-kde.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><copyright>Contents © 2026 &lt;a href="mailto:sebastian@pipping.org"&gt;Sebastian Pipping&lt;/a&gt; </copyright><lastBuildDate>Sun, 08 Feb 2026 14:31:54 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>Making Audex use MusicBrainz (rather than FreeDB)</title><link>https://blog.hartwork.org/posts/making-audex-use-musicbrainz-rather-than-freedb/</link><dc:creator>Sebastian Pipping</dc:creator><description>&lt;p&gt;From my experience, &lt;a href="https://musicbrainz.org/"&gt;MusicBrainz&lt;/a&gt;'s data is more
complete and of higher quality than that from
&lt;a href="https://www.freedb.org/"&gt;FreeDB&lt;/a&gt;. Sadly, the official list of
&lt;a href="https://musicbrainz.org/doc/MusicBrainz_Enabled_Applications#CD_rippers"&gt;MusicBrainz enabled CD rippers&lt;/a&gt;
lists a single CD ripper for Linux, only:
&lt;a href="https://burtonini.com/blog/computers/sound-juicer/"&gt;Sound Juicer&lt;/a&gt;.
In the "spirit of
GNOME" Sound Juicer aims to stay as minimal as possible, which exclude
features like custom folder naming schemes (the one of my choice is not
included). So I moved to using &lt;a href="https://kde.maniatek.com/audex/"&gt;Audex&lt;/a&gt; with
FreeDB a long time ago. Sadly, some of the CDs I bought lately could not be
resolved using FreeDB. Happily I just found the
&lt;a href="https://musicbrainz.org/doc/FreeDB_Gateway"&gt;MusicBrainz FreeDB gateway&lt;/a&gt;.
With that, Audex just
keeps talking the FreeDB protocol but provides the quality and completeness of
using MusicBrainz. All I had to do is enter &lt;code&gt;freedb.musicbrainz.org&lt;/code&gt; at
MENU &amp;gt; Settings &amp;gt; Configure Audex... &amp;gt; CDDB Settings &amp;gt; Lookup &amp;gt; Freedb Server &amp;gt; Freedb Server .&lt;/p&gt;</description><category>Frustration</category><category>Planet KDE</category><guid>https://blog.hartwork.org/posts/making-audex-use-musicbrainz-rather-than-freedb/</guid><pubDate>Sun, 12 Aug 2012 11:48:03 GMT</pubDate></item><item><title>Before svn2git you want to run: svneverever</title><link>https://blog.hartwork.org/posts/before-svn2git-you-want-to-run-svneverever/</link><dc:creator>Sebastian Pipping</dc:creator><description>&lt;p&gt;First: There are several tools called svn2git: this is about the &lt;a href="https://gitorious.org/svn2git/svn2git"&gt;svn2git of
KDE up on Gitorious&lt;/a&gt;. So you're about to
convert a larger SVN repository to Git, say 15,000 revisions. You check out
the latest revision, run some find command or fire up a file browser to get a
better view of file hierarchy in there. Then it strikes you:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What if the layout didn't look like that all the time?&lt;/li&gt;
&lt;li&gt;Are there any sub projects hidden in there that you want to ignore or
    extract to a separate repository?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You may end up using "svn ls" or something peeping in here and there not being
really sure until you've seen it all. What a nightmare. When converting the
repository of
&lt;a href="https://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=summary"&gt;Gentoo's Portage&lt;/a&gt;
I wrote a simple &lt;a href="https://github.com/hartwork/svneverever"&gt;tool in Python&lt;/a&gt; to
do that work for me in automated fashion: I called it
&lt;a href="https://github.com/hartwork/svneverever"&gt;svneverever&lt;/a&gt;. It runs through all
history collecting additions of directories. In the end it presents &lt;em&gt;a tree of
all directories ever having existed&lt;/em&gt; in the repository. Let's do a quick
example. First we create tiny but suitable sample repository:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="c1"&gt;# Create and checkout dummy SVN repo&lt;/span&gt;
svnadmin&lt;span class="w"&gt; &lt;/span&gt;create&lt;span class="w"&gt; &lt;/span&gt;example-store
svn&lt;span class="w"&gt; &lt;/span&gt;co&lt;span class="w"&gt; &lt;/span&gt;file://&lt;span class="nv"&gt;$PWD&lt;/span&gt;/example-store&lt;span class="w"&gt; &lt;/span&gt;example-workdir
&lt;span class="nb"&gt;cd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;example-workdir

&lt;span class="c1"&gt;# Make revision #1 for /trunk&lt;/span&gt;
mkdir&lt;span class="w"&gt; &lt;/span&gt;trunk
touch&lt;span class="w"&gt; &lt;/span&gt;trunk/readme.txt
svn&lt;span class="w"&gt; &lt;/span&gt;add&lt;span class="w"&gt; &lt;/span&gt;trunk
svn&lt;span class="w"&gt; &lt;/span&gt;ci&lt;span class="w"&gt; &lt;/span&gt;-m&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'Add /trunk'&lt;/span&gt;

&lt;span class="c1"&gt;# Make revision #2 for /project7/trunk&lt;/span&gt;
mkdir&lt;span class="w"&gt; &lt;/span&gt;project7
svn&lt;span class="w"&gt; &lt;/span&gt;add&lt;span class="w"&gt; &lt;/span&gt;project7/
svn&lt;span class="w"&gt; &lt;/span&gt;mv&lt;span class="w"&gt; &lt;/span&gt;trunk&lt;span class="w"&gt; &lt;/span&gt;project7/
svn&lt;span class="w"&gt; &lt;/span&gt;ci&lt;span class="w"&gt; &lt;/span&gt;-m&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'Move /trunk to /project7/trunk'&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Let's feed that to svneverever:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;svneverever&lt;span class="w"&gt; &lt;/span&gt;file://&lt;span class="nv"&gt;$PWD&lt;/span&gt;/../example-store
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Its output will be:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;Analyzing 2 revisions.... 50% (r1)... 100% (r2).

/project7
    /trunk
/trunk
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;(The output for Portage was more complex, have a look at &lt;a href="https://bugs.gentoo.org/attachment.cgi?id=224803"&gt;all-portage-repo-
dirs-ever.txt&lt;/a&gt; if you're
curious.) With that information at hand it's easy to write a svn2git rules
file for it:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="nv"&gt;create&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;repository&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;project7&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;repository&lt;/span&gt;

&lt;span class="nv"&gt;match&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;project7&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;trunk&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nv"&gt;repository&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;project7&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nv"&gt;branch&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;master&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;match&lt;/span&gt;

&lt;span class="nv"&gt;match&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;trunk&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nv"&gt;repository&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;project7&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nv"&gt;branch&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;master&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;match&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;or this one after unification of the matchers into one:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="nv"&gt;create&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;repository&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;project7&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;repository&lt;/span&gt;

&lt;span class="nv"&gt;match&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;?:&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;project7&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;?&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nv"&gt;trunk&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nv"&gt;repository&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;project7&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nv"&gt;branch&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;master&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;match&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;(For Portage we ended up with &lt;a href="https://bugs.gentoo.org/attachment.cgi?id=224937"&gt;these rules
(v3)&lt;/a&gt;.) On one hand
svneverever is a working tool already, on the other some of you will want more
from it. As of now I just won't be able to handle potential feature request
but I hope to have time to review and accept sets of clean patches. So if you
have patches for me: please &lt;a href="https://www.hartwork.org/doku.php?id=contact"&gt;contact
me&lt;/a&gt;. Last but not least a big
THANK YOU to the authors of svn2git. It's powerful and fast: 110 minutes
faster than git-svn on the history of Portage over here. Thank you (in order
of current commit count, descending):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Thiago Macieira&lt;/li&gt;
&lt;li&gt;Thomas Zander&lt;/li&gt;
&lt;li&gt;Torgny Nyblom&lt;/li&gt;
&lt;li&gt;Anders Kaseorg&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;One last time: here's the link to
&lt;a href="https://github.com/hartwork/svneverever"&gt;svneverever&lt;/a&gt;.&lt;/p&gt;</description><category>Planet Gentoo</category><category>Planet KDE</category><guid>https://blog.hartwork.org/posts/before-svn2git-you-want-to-run-svneverever/</guid><pubDate>Tue, 30 Mar 2010 00:13:45 GMT</pubDate></item><item><title>Created with Free Software! A button to spread the word</title><link>https://blog.hartwork.org/posts/created-with-free-software/</link><dc:creator>Sebastian Pipping</dc:creator><description>&lt;p&gt;Last month I did a presentation on the concept of redundancy in a human factor
related seminar at university. As most participants were non-IT people and
using Windows I felt like promoting Free Software without making it "too
loud". So I came up with the idea of putting a rubber stamp "Created with Free
Software" onto the front slide. I found an &lt;a href="https://howto.nicubunu.ro/rubber_stamp_inkscape/"&gt;Inkscape tutorial on rubber
stamps&lt;/a&gt; to get me started.
This is the result:
&lt;a href="http://www.fsfe.org/contribute/advocacy/cwfs/cwfs-1.0.0-original-25-degree.svg"&gt;&lt;img alt="" src="https://www.fsfe.org/contribute/advocacy/cwfs/cwfs-1.0.0-original-25-degree-300x201.png"&gt;&lt;/a&gt;
On the the front slide:
&lt;img alt="" src="https://blog.hartwork.org/__images/redundanz-pipping-1.0.0-frontslide-302x227.png"&gt;
To get the stamp appear at that very
place can be a little tricky. Feel free to inspect the &lt;a href="https://git.goodpoint.de/?p=redundancy-slides.git;a=summary"&gt;slide
sources&lt;/a&gt;,
particularly
&lt;a href="https://git.goodpoint.de/?p=redundancy-slides.git;a=blob;f=redundanz.tex;hb=HEAD"&gt;redundanz.tex&lt;/a&gt;.
By now there is
&lt;a href="https://optipng.sourceforge.net/"&gt;optimized&lt;/a&gt; PNGs&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;in 4 colors (original/red, gray, white and black)&lt;/li&gt;
&lt;li&gt;in 4 sizes (88x28/59, 120x38/81, 180x57/121 and 300x95/201)&lt;/li&gt;
&lt;li&gt;rotated or not (0° and 25° counter-clockwise)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;and SVGs respectively. In case you need PDFs: Inkscape converts well on the
commandline:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="gp"&gt;# &lt;/span&gt;inkscape&lt;span class="w"&gt; &lt;/span&gt;--export-pdf&lt;span class="o"&gt;=&lt;/span&gt;out.pdf&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;in&lt;/span&gt;.svg
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;To see them all please visit the &lt;a href="https://www.fsfe.org/contribute/advocacy/cwfs.en.html"&gt;"Created with Free Software"
page&lt;/a&gt; of the FSFE.
Please make use of this stamp whereever you see fits. If you have photos or
screenshots of the button in action please comment here. Please join promoting
Free Software!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;[EDIT]&lt;/strong&gt; : The button sources (SVG) are licensed under the
&lt;a href="https://creativecommons.org/licenses/by-sa/3.0/"&gt;Creative Commons Attribution-Share Alike 3.0 license&lt;/a&gt;
(unlike this blog post itself, see box below). The PNG versions are licensed even more liberally
under the
&lt;a href="https://creativecommons.org/publicdomain/zero/1.0/"&gt;Creative Commons Zero 1.0 Universal license&lt;/a&gt;.
The idea is to keep derivatives "in the pool" while allowing to use the PNGs without even
attribution.&lt;/p&gt;</description><category>Planet Gentoo</category><category>Planet KDE</category><category>Planet Xiph</category><guid>https://blog.hartwork.org/posts/created-with-free-software/</guid><pubDate>Thu, 18 Mar 2010 18:08:12 GMT</pubDate></item><item><title>Inviting you to project "PackageMap"</title><link>https://blog.hartwork.org/posts/inviting-you-to-project-packagemap/</link><dc:creator>Sebastian Pipping</dc:creator><description>&lt;p&gt;Quick (re-)introduction: My task for Gentoo/Google Summer of Code 2009 is to
give Gentoo a &lt;a href="https://popcon.debian.org/"&gt;Debian popcon&lt;/a&gt; equivalent, a tool to
collect statistics on "what package is installed how often". To achieve this
goal I'm extending &lt;a href="https://fedorahosted.org/smolt/"&gt;Smolt&lt;/a&gt; (a tool currently
doing similar things with hardware information) by fine-tunable software stats
gathering. The plan we have for Smolt is to make it cross-distro, not just fit
Gentoo or Fedora. One point where the consequences and benefits of such an
approach can be seen clearly is with
counting packages from different distros into the same buckets.&lt;/p&gt;
&lt;p&gt;What do I mean by that? Debian's Git counts for Gentoo's Git counts for
Fedora's, you know the list. With packages counted from accross distros we can
suddenly answer questions that we currently cannot answer, among them&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;What globally popular packages are missing in distro X? Let's say we don't have a package for product P. Do other distros have one? They do, maybe we need one, too? They don't, maybe P is not that important then?&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;How many Linux users are approximately using program X in total? Not just on Ubuntu or Arch - all across Linux, BSD, Solaris!&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Does distro X have 10 times the packages of Y or is it just different splitting?&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To count into the same bucket we use global identifiers for the "products"
that fall out of a package. Gentoo package "dev-util/git" can produce product
"cpe://a:git:git", Debian's "git-core" can, too. That string before is a
&lt;a href="https://cpe.mitre.org/"&gt;CPE&lt;/a&gt; name, a concept close to package naming in Java.
This "intermediate language" allows us to relate package names from distro X
with those of distro Y and answer various questions from that data. To do such
mapping we need code (or a "service") that does the mapping for us and base of
collected data that the service can operate on. Both of these is project
"PackageMap". I have started populating the database with packages (currently
312 in number) made from information extracted from the
&lt;a href="https://sources.gentoo.org/viewcvs.py/gentoo-x86/"&gt;Gentoo tree&lt;/a&gt;
and the &lt;a href="https://nvd.nist.gov/download.cfm"&gt;National Vulnerability Database&lt;/a&gt;.
Latter holds many
CPEs. Let me state clearly that packagemap is not about Gentoo in particular.
Sure, the initial data has lots of Gentoo in it but the whole point of the
project is to get information and people from &lt;em&gt;different&lt;/em&gt; distros &lt;em&gt;together&lt;/em&gt;.
To see what these 312 packages maps look like at the moment you best do a few
clicks through the database folder yourself:
&lt;a href="https://git.goodpoint.de/?p=packagemap.git;a=tree;f=database"&gt;https://git.goodpoint.de/?p=packagemap.git;a=tree;f=database&lt;/a&gt;
Also, there are Relax NG schema and DTD for validation, more documentation
than I usually write and a few scripts:
&lt;a href="https://git.goodpoint.de/?p=packagemap.git;a=tree"&gt;https://git.goodpoint.de/?p=packagemap.git;a=tree&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;By now I hope you have gained interest in what this can become. Your active
participation is highly appreciated. A few minutes from everyone can make a
huge difference here. If you want write access to the repo - mail me:
&lt;a href="mailto:sebastian@pipping.org"&gt;sebastian@pipping.org&lt;/a&gt;. Please have a look at
the &lt;a href="https://git.goodpoint.de/?p=packagemap.git;a=tree"&gt;Git repository&lt;/a&gt; and ask
questions. Thanks for reading up to this point. PS: I'm aware "hartwork.org"
might not make a good longterm location for DTDs, XML namespaces and such for
a cross-distro project. Any ideas where to put them best?&lt;/p&gt;</description><category>Gentoo</category><category>Planet Gentoo</category><category>Planet KDE</category><category>Planet Xiph</category><guid>https://blog.hartwork.org/posts/inviting-you-to-project-packagemap/</guid><pubDate>Fri, 12 Jun 2009 06:42:50 GMT</pubDate></item><item><title>libbs2b 2.2.1 released</title><link>https://blog.hartwork.org/posts/libbs2b-221-released/</link><dc:creator>Sebastian Pipping</dc:creator><description>&lt;p&gt;&lt;a href="https://bs2b.sourceforge.net/"&gt;bs2b&lt;/a&gt; is short for "Bauer stereophonic-to-
binaural DSP", an audio effect increasing headphone listening pleasure. Check
the well-explained &lt;a href="https://bs2b.sourceforge.net/"&gt;algorithm details&lt;/a&gt; for more.
I helped with making a shared library from bs2b using the Autotools family:
Autoconf, Automake, Libtool,
&lt;a href="https://git.goodpoint.de/?p=autogen-sh.git;a=tree"&gt;autogen.sh&lt;/a&gt;. The just-released
&lt;a href="https://sourceforge.net/forum/forum.php?forum_id=923582"&gt;libbs2b-2.2.1&lt;/a&gt; is
featuring that. bs2b plugins for many popular audio players are already
available (e.g. XMMS and Winamp) or in the making and to be released soon
(i.e. &lt;a href="https://qmmp.ylsoftware.com/index_en.php"&gt;QMMP&lt;/a&gt;). Still, some DSP-
supporting players lack a bs2b plugin (e.g. Audacious) and that's a great
place for &lt;em&gt;you&lt;/em&gt; to step in. Please contact &lt;a href="mailto:sebastian@pipping.org"&gt;me&lt;/a&gt;
about details if you're interested.&lt;/p&gt;</description><category>bs2b</category><category>GNU Autotools</category><category>Music</category><category>Planet KDE</category><category>Planet Xiph</category><guid>https://blog.hartwork.org/posts/libbs2b-221-released/</guid><pubDate>Fri, 27 Feb 2009 11:17:36 GMT</pubDate></item><item><title>libxspf 1.1.0 released (successor of libSpiff)</title><link>https://blog.hartwork.org/posts/libxspf-110-released/</link><dc:creator>Sebastian Pipping</dc:creator><description>&lt;p&gt;With this release libSpiff mutates into libxspf, same thing new name. Under
the hood the build system has improved and generation of Qt Assistant-friendly
documentation has been added. The source code moved from a Subversion to a
&lt;a href="https://git.xiph.org/?p=libxspf.git;a=summary"&gt;Git repository&lt;/a&gt;. Please meet me
at the
&lt;a href="https://lists.musicbrainz.org/mailman/listinfo/playlist"&gt;XSPF mailing list&lt;/a&gt;
to team up on any transition-related issues. Thank you!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://sourceforge.net/project/showfiles.php?group_id=176018"&gt;Download&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://sourceforge.net/project/shownotes.php?release_id=663000&amp;amp;group_id=176018"&gt;Changelog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category>Git</category><category>Planet KDE</category><category>Planet Xiph</category><category>XSPF</category><guid>https://blog.hartwork.org/posts/libxspf-110-released/</guid><pubDate>Sun, 22 Feb 2009 00:35:02 GMT</pubDate></item><item><title>Hire me, I do Free Software</title><link>https://blog.hartwork.org/posts/hire-me-i-do-free-software/</link><dc:creator>Sebastian Pipping</dc:creator><description>&lt;p&gt;I'm looking for a job with following three required qualities:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Producing Free Open Source Software&lt;/li&gt;
&lt;li&gt;Part time, about two days a week&lt;/li&gt;
&lt;li&gt;From home or in Berlin, Germany&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I'm quite open about the rest though I sure won't do Visual Basic ;-) Being
sponsored on continuing development of &lt;a href="https://uriparser.sf.net/"&gt;uriparser&lt;/a&gt;
would rock, for instance. Check out my CV here:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;del&gt;CV Sebastian Pipping&lt;/del&gt; (taken off-line)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mail me, call me, invite me:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="mailto:sebastian@pipping.org"&gt;sebastian@pipping.org&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;(+49177) 460 46 17&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Looking forward to hearing from you. Sebastian PS: Thanks to Jason Blevins for
his &lt;a href="https://jblevins.org/projects/cv-template"&gt;CV template&lt;/a&gt;.&lt;/p&gt;</description><category>Planet KDE</category><category>Planet Xiph</category><category>uriparser</category><guid>https://blog.hartwork.org/posts/hire-me-i-do-free-software/</guid><pubDate>Mon, 16 Feb 2009 16:21:12 GMT</pubDate></item><item><title>Commit log IRC bot... for a KDE project</title><link>https://blog.hartwork.org/posts/commit-log-irc-bot-for-a-kde-project/</link><dc:creator>Sebastian Pipping</dc:creator><description>&lt;p&gt;For Kate we have a &lt;a href="https://cia.vc/"&gt;cia.vc&lt;/a&gt; IRC bot posting stuff like this
when new Kate related content is commited:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;[00:18:29] &amp;lt;cia-20&amp;gt; ehamberg * r874179 [..]/katevikeysequenceparser.cpp
[00:18:29] &amp;lt;cia-20&amp;gt; fix crash when a qkeyevent's text() is empty
[00:18:29] &amp;lt;cia-20&amp;gt; https://websvn.kde.org/?view=rev&amp;amp;revision=874179
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;As cia.vc seems to attribute all KDE commits to project "KDE" and not its
actual children (i.e. "Kate" in our case) and because getting the above
n-liner with Websvn link is not completely trivial so I thought I blog about
it and show our current "Advanced Filtering" code here:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="nt"&gt;&amp;lt;and&amp;gt;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;or&amp;gt;&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;match&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="na"&gt;path=&lt;/span&gt;&lt;span class="s"&gt;"project"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Kate&lt;span class="nt"&gt;&amp;lt;/match&amp;gt;&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;match&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="na"&gt;path=&lt;/span&gt;&lt;span class="s"&gt;"project"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;KDE&lt;span class="nt"&gt;&amp;lt;/match&amp;gt;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;/or&amp;gt;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;or&amp;gt;&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;find&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="na"&gt;path=&lt;/span&gt;&lt;span class="s"&gt;"files"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;KDE/kdesdk/kate&lt;span class="nt"&gt;&amp;lt;/find&amp;gt;&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;find&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="na"&gt;path=&lt;/span&gt;&lt;span class="s"&gt;"files"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;KDE/kdelibs/kate&lt;span class="nt"&gt;&amp;lt;/find&amp;gt;&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;find&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="na"&gt;path=&lt;/span&gt;&lt;span class="s"&gt;"files"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;KDE/kdesdk/doc/kate&lt;span class="nt"&gt;&amp;lt;/find&amp;gt;&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;find&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="na"&gt;path=&lt;/span&gt;&lt;span class="s"&gt;"files"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;KDE/kdelibs/interfaces/ktexteditor&lt;span class="nt"&gt;&amp;lt;/find&amp;gt;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;/or&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/and&amp;gt;&lt;/span&gt;
&amp;gt;&lt;span class="w"&gt;  &lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;formatter&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="na"&gt;medium=&lt;/span&gt;&lt;span class="s"&gt;"irc"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;format&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="na"&gt;appliesTo=&lt;/span&gt;&lt;span class="s"&gt;"CommitToIRC"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;autoHide&amp;gt;&lt;/span&gt;
&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;color&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="na"&gt;fg=&lt;/span&gt;&lt;span class="s"&gt;'green'&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;author/&amp;gt;&amp;lt;/color&amp;gt;&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;/autoHide&amp;gt;&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;autoHide&amp;gt;&lt;/span&gt;
&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;color&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="na"&gt;fg=&lt;/span&gt;&lt;span class="s"&gt;'orange'&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;branch/&amp;gt;&amp;lt;/color&amp;gt;&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;/autoHide&amp;gt;&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;*
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;autoHide&amp;gt;&lt;/span&gt;
&lt;span class="w"&gt;   &lt;/span&gt;r&lt;span class="nt"&gt;&amp;lt;b&amp;gt;&amp;lt;revision/&amp;gt;&amp;lt;/b&amp;gt;&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;/autoHide&amp;gt;&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;files/&amp;gt;&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;br/&amp;gt;&amp;lt;log/&amp;gt;&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;autoHide&amp;gt;&lt;/span&gt;
&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;br/&amp;gt;&lt;/span&gt;https://websvn.kde.org/?view=rev&lt;span class="ni"&gt;&amp;amp;amp;&lt;/span&gt;revision=&lt;span class="nt"&gt;&amp;lt;revision/&amp;gt;&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;/autoHide&amp;gt;&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;/format&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/formatter&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;I'm very happy to see that cia.cv&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;provides such a service&lt;/li&gt;
&lt;li&gt;has online validation of the filter code so you won't save a broken filter&lt;/li&gt;
&lt;li&gt;has invented such a nice XML format&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Well done guys, I'm impressed.&lt;/p&gt;</description><category>Planet KDE</category><guid>https://blog.hartwork.org/posts/commit-log-irc-bot-for-a-kde-project/</guid><pubDate>Wed, 22 Oct 2008 16:28:58 GMT</pubDate></item><item><title>Kate searching: New bar just arrived</title><link>https://blog.hartwork.org/posts/kate-searching-new-bar-just-arrived/</link><dc:creator>Sebastian Pipping</dc:creator><description>&lt;h5&gt;v3, now status quo&lt;/h5&gt;
&lt;p&gt;&lt;a href="http://techbase.kde.org/images/3/3b/Katepart_search_bar_v3_power_minimal_20080928_100.png"&gt;&lt;img alt="" src="https://techbase.kde.org/images/f/fe/Katepart_search_bar_v3_power_minimal_20080928_50.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h6&gt;The "Add..." buttons&lt;/h6&gt;
&lt;p&gt;.. are &lt;em&gt;not&lt;/em&gt; gone - they went into the line edit's context menu.&lt;/p&gt;
&lt;h6&gt;The search mode&lt;/h6&gt;
&lt;p&gt;.. can now be switched using the shortcuts from Alt+1 to Alt+4. No more Tab-
Tab-Tab and no more need to click.&lt;/p&gt;
&lt;h6&gt;Selection only&lt;/h6&gt;
&lt;p&gt;.. is inside Options, though several people wanted direct access. I'd say try
to work with it for some time and if it's a real pain we will have to find
another solution later. Okay? I should mention that one tiny bit of this is
still missing: The plan is to re-initialize &lt;em&gt;Selection only&lt;/em&gt; when the user
changes selection in the document. I expect this to come in the next few days,
stay tuned. &lt;strong&gt;[EDIT 2008-10-13]:&lt;/strong&gt; Just arrived with revision 970640.&lt;/p&gt;
&lt;h6&gt;Use placeholders&lt;/h6&gt;
&lt;p&gt;.. has been removed as an option. It internally enabled when replacing text in
Regular Expression or Escape Sequences mode. I hope this is working for you,
not against you.&lt;/p&gt;</description><category>Kate</category><category>Planet KDE</category><guid>https://blog.hartwork.org/posts/kate-searching-new-bar-just-arrived/</guid><pubDate>Thu, 02 Oct 2008 16:23:13 GMT</pubDate></item><item><title>Kate searching: on to better usability 2</title><link>https://blog.hartwork.org/posts/kate-searching-on-to-better-usability-2/</link><dc:creator>Sebastian Pipping</dc:creator><description>&lt;h5&gt;v3, a new candidate&lt;/h5&gt;
&lt;p&gt;&lt;a href="http://techbase.kde.org/images/3/3b/Katepart_search_bar_v3_power_minimal_20080928_100.png"&gt;&lt;img alt="" src="https://techbase.kde.org/images/f/fe/Katepart_search_bar_v3_power_minimal_20080928_50.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I
have been talking to people, read written feedback and put both in the new
mockup. Like last time, below I will try to explain what drove which changes.
If I get &lt;em&gt;green&lt;/em&gt; from the main KatePart devs I'll go for implementing this.&lt;/p&gt;
&lt;h6&gt;Selection only&lt;/h6&gt;
&lt;p&gt;.. is still not there, though requested. Let me explain. In KDE3's KatePart
the checkbox called "Selected text" is initialized when the dialog opens as
following:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;If multi-line text is selected it's checked&lt;/li&gt;
&lt;li&gt;If single-line text is selected it's &lt;em&gt;not&lt;/em&gt; checked&lt;/li&gt;
&lt;li&gt;If no text is selected it's &lt;em&gt;not&lt;/em&gt; checked&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;So actually toggling the checkbox means that you want to do one of these two
things:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Searching the whole document for something spanning several lines&lt;/li&gt;
&lt;li&gt;Searching for text within a single-line selection&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I assume both to be "rare" cases. For now I'd like to put Selection only into
the Options combo and see how it works in action.&lt;/p&gt;
&lt;h6&gt;The mode combo box&lt;/h6&gt;
&lt;p&gt;.. aligns with the line edits now so they share the same vertical scan line
when the dialog is shown at minimal width. As we have one button less in v3
than v2, we have more space to do stuff like that. Still, v3 is less wide than
v2.&lt;/p&gt;
&lt;h6&gt;Highlight all&lt;/h6&gt;
&lt;p&gt;.. will probably not change too often. It's current state can often be told
from looking at the document. Therefore it's moved into the Options combo box.&lt;/p&gt;
&lt;h6&gt;The "Find:" label&lt;/h6&gt;
&lt;p&gt;.. is right aligned now as requested.&lt;/p&gt;</description><category>Kate</category><category>Planet KDE</category><guid>https://blog.hartwork.org/posts/kate-searching-on-to-better-usability-2/</guid><pubDate>Sun, 28 Sep 2008 00:32:12 GMT</pubDate></item></channel></rss>