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

<channel>
	<title>Martin Ankerl &#187; open source</title>
	<atom:link href="http://martin.ankerl.com/category/open-source/feed/" rel="self" type="application/rss+xml" />
	<link>http://martin.ankerl.com</link>
	<description>No movement is faster than no movement</description>
	<lastBuildDate>Tue, 13 Jul 2010 05:31:29 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=abc</generator>
		<item>
		<title>svn-shortlog &#8212; Compact &amp; Beautiful Subversion Changelog</title>
		<link>http://martin.ankerl.com/2009/12/23/svn-shortlog-compact-beautiful-subversion-changelog/</link>
		<comments>http://martin.ankerl.com/2009/12/23/svn-shortlog-compact-beautiful-subversion-changelog/#comments</comments>
		<pubDate>Wed, 23 Dec 2009 16:58:17 +0000</pubDate>
		<dc:creator>Martin Ankerl</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://martin.ankerl.com/?p=303</guid>
		<description><![CDATA[At work we periodically have short developer meetings to discuss what has happened in the last month. To do this, we go through the bugs in our issue tracking system, and the subversion commits in our repository. Unfortunately, getting an overview of the subversion commits was rather cumbersome, and we could not find any efficient [...]]]></description>
			<content:encoded><![CDATA[<p>At work we periodically have short developer meetings to discuss what has happened in the last month. To do this, we go through the bugs in our issue tracking system, and the subversion commits in our repository. Unfortunately, getting an overview of the subversion commits was rather cumbersome, and we could not find any efficient tool to do this. Hence, <strong>svn-shortlog</strong> was born.</p>
<p>This is an attempt to format the subversion log of a one-month period in the following way:</p>
<ul>
<li>Beautiful HTML output.</li>
<li>Compact representation of lots of information</li>
<li>Usable with a not-so color rich beamer.</li>
<li>Fully automatic.</li>
</ul>
<h2>Usage</h2>
<ol>
<li>Install <a href="http://www.ruby-lang.org/de/">Ruby</a> (both 1.8 or 1.9 should work).</li>
<li>Download <a href="http://svn-shortlog.googlecode.com/svn/trunk/svn-shortlog.rb">svn-shortlog.rb</a>.</li>
<li>Open <tt>svn-shortlog.rb</tt> with your favourite text editor, and configure the config section according to your needs.</li>
<li>Doubleclick <tt>svn-shortlog.rb</tt></li>
<li>Open the generated <tt>changelog_....html</tt> file with your favourite browser.</li>
</ol>
<h2>Sample Output</h2>
<p>Here is a <a target="_blank" href="http://martin.ankerl.com/wp-content/uploads/2009/12/changes_2009-12-01_to_2009-12-31.html">sample output of one month of boost commits</a> into trunk, taken from the <a href="http://www.boost.org/users/download/#repository">public repository</a>. The output is quite information dense, a quick description is in the screenshot: <center><img src="http://martin.ankerl.com/wp-content/uploads/2009/12/documentation.png" alt="" title="documentation" width="690" height="408" /></center> All commits are structured by user, then by date. Each commit is on one line. You can click each line to see the full information related to a commit.</p>
<h2>Issues</h2>
<p>Ideas, suggestions, problems? Please post them as a comment here, at the <a href="https://code.google.com/p/svn-shortlog/issues/list">bug tracker</a>.</p>
<h2>Credits</h2>
<p>This tool is based on the idea from my colleague <a href="http://cheind.wordpress.com/">Christoph Heindl</a> and inspired by <a href="http://groups.google.com/group/linux.kernel/msg/d43224c9ba53f0cc?">Linus&#8217; Kernel shortlog</a> and <a href="http://mail.google.com/">Gmail</a>.</p>
<div style='clear:both'></div><img src="http://martin.ankerl.com/?ak_action=api_record_view&id=303&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://martin.ankerl.com/2009/12/23/svn-shortlog-compact-beautiful-subversion-changelog/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How To: Download Any Flash Video with flashrip in Ubuntu</title>
		<link>http://martin.ankerl.com/2009/11/15/how-to-download-any-flash-video-with-flashrip-in-ubuntu/</link>
		<comments>http://martin.ankerl.com/2009/11/15/how-to-download-any-flash-video-with-flashrip-in-ubuntu/#comments</comments>
		<pubDate>Sun, 15 Nov 2009 11:57:37 +0000</pubDate>
		<dc:creator>Martin Ankerl</dc:creator>
				<category><![CDATA[downloads]]></category>
		<category><![CDATA[freeware]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[tricks]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[videos]]></category>

		<guid isPermaLink="false">http://martin.ankerl.com/?p=218</guid>
		<description><![CDATA[Downloading flash videos in Linux was already not too difficult, but thanks to flashrip, it has gotten very easy. Here is a little demo how it works: Once installed, you basically use one click to get a video preview and then a prompt with the filename to save the file. The script works by looking [...]]]></description>
			<content:encoded><![CDATA[<p>Downloading flash videos in Linux was already <a href="http://www.youtube.com/watch?v=vxBGr2T1Ueo">not too difficult</a>, but thanks to <tt>flashrip</tt>, it has gotten very easy. Here is a little demo how it works:<br />
<center><br />
<object width="560" height="370"><param name="movie" value="http://www.youtube.com/v/qvxHQKGci9o&#038;hl=en_US&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/qvxHQKGci9o&#038;hl=en_US&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="370"></embed></object><br />
</center></p>
<p>
Once installed, you basically use one click to get a video preview and then a prompt with the filename to save the file. The script works by looking into the newest flash files in your <tt>/tmp</tt> folder, and creates a hardlink to the save destination. When the video has fully loaded, you can close the browser window. The temp file will get deleted, and the linked copy will remain.</p>
<h2>Installing flashrip</h2>
<p>Open a terminal like gnome-terminal or konsole, and run these commands:</p>
<pre>wget http://martin.ankerl.com/wp-content/uploads/2009/11/flashrip.sh
chmod 755 flashrip.sh
sudo mv flashrip.sh /usr/local/bin</pre>
<p>Now all thats left to do is to create a link in your gnome panel for ease of use: Right click the gnome panel, &#8220;Add to panel&#8230;&#8221;, choose &#8220;Custom Application Launcher&#8230;&#8221;. Choose a proper name, and a command like this:
<pre>/usr/local/bin/flashrip.sh /home/manker/Videos</pre>
<p>For the command, replace the second parameter with the default location where you want to save the ripped videos (you have to use the full path here!)</p>
<p>I have tested this in Ubuntu, but it should work on any linux where gnome is installed. </p>
<p>Have fun!</p>
<div style='clear:both'></div><img src="http://martin.ankerl.com/?ak_action=api_record_view&id=218&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://martin.ankerl.com/2009/11/15/how-to-download-any-flash-video-with-flashrip-in-ubuntu/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Beautiful Font Hinting in Ubuntu 8.10 and 9.04</title>
		<link>http://martin.ankerl.com/2009/01/22/beautiful-font-hinting-in-ubuntu-810/</link>
		<comments>http://martin.ankerl.com/2009/01/22/beautiful-font-hinting-in-ubuntu-810/#comments</comments>
		<pubDate>Thu, 22 Jan 2009 20:59:03 +0000</pubDate>
		<dc:creator>Martin Ankerl</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[tricks]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://martin.ankerl.com/?p=197</guid>
		<description><![CDATA[Even though I have an LCD monitor, I always have the subpixel hinting switched off because it is just painfully ugly to my eyes. Even when hinting is switched to maximum, the fonts are quite blurry (if you don&#8217;t believe me, type xmag and take a screenshot of your font. You can see red and [...]]]></description>
			<content:encoded><![CDATA[<p>Even though I have an LCD monitor, I always have the subpixel hinting switched off because it is just painfully ugly to my eyes. Even when hinting is switched to maximum, the fonts are quite blurry (if you don&#8217;t believe me, type <tt>xmag</tt> and take a screenshot of your font. You can see red and blue linese everywhere). My eyes hurt when I see this. </p>
<p>Thanks to <a href="http://johan.kiviniemi.name/blag/ubuntu-fonts/">Johan Kivinemi</a> I have just found out how to bring back the excellent legacy subpixel hinting engine. This has a much more crisp hinting, and uses subpixels only where it really is an improvement:</p>
<p>Just open these files in your home directory, and copy the content into them:</p>
<h2>~/.fonts.conf</h2>
<pre class="brush: xml;">
&lt;?xml version='1.0'?&gt;
&lt;!DOCTYPE fontconfig SYSTEM 'fonts.dtd'&gt;
&lt;fontconfig&gt;
  &lt;match target=&quot;font&quot;&gt;
    &lt;edit name=&quot;antialias&quot; mode=&quot;assign&quot;&gt;
      &lt;bool&gt;true&lt;/bool&gt;
    &lt;/edit&gt;
    &lt;edit name=&quot;hinting&quot; mode=&quot;assign&quot;&gt;
      &lt;bool&gt;true&lt;/bool&gt;
    &lt;/edit&gt;
    &lt;edit name=&quot;hintstyle&quot; mode=&quot;assign&quot;&gt;
      &lt;const&gt;hintfull&lt;/const&gt;
    &lt;/edit&gt;
    &lt;edit name=&quot;lcdfilter&quot; mode=&quot;assign&quot;&gt;
      &lt;const&gt;lcdlegacy&lt;/const&gt;
    &lt;/edit&gt;
    &lt;edit name=&quot;rgba&quot; mode=&quot;assign&quot;&gt;
      &lt;const&gt;rgb&lt;/const&gt;
    &lt;/edit&gt;
  &lt;/match&gt;
&lt;/fontconfig&gt;
</pre>
<h2>~/.Xresources</h2>
<pre class="brush: xml;">
Xft.antialias:  true
Xft.hinting:    true
Xft.hintstyle:  hintfull
Xft.lcdfilter:  lcdlegacy
Xft.rgba:       rgb
</pre>
<p>This should work in Ubuntu 8.04, 8.10, and 9.04 too, and makes all fonts much more crisp. Of course, your mileage may vary.</p>
<h1>UPDATE: Comparison Screenshots</h1>
<p>As promised on <a href="http://www.reddit.com/r/linux/comments/7ru91/beautiful_font_hinting_in_ubuntu_810/">reddit</a>, I got back from an awesome snowboard trip so I am able to put up extensive comparison screenshots of the two subpixel hinting engines. Move your mouse over the following images to see the differences. Watch especially out for letters like &#8220;m&#8221; where the spacing between the lines is very small. You might have to wait a bit for the image to load.</p>
<p>I have used all of the most important fonts that I usually use, and just for fun I have added &#8220;Dijkstra&#8221;, which just looks cool.</p>
<h2>Sans Fonts</h2>
<p>Mouse to see the same fonts with the legacy hinter.</p>
<style type="text/css"><!-- #sans a { text-decoration:none; display:block; background-image:url(http://martin.ankerl.com/wp-content/uploads/2009/01/sans-normal.png); width:395px; height:850px; } #sans a:hover {background-image:url(http://martin.ankerl.com/wp-content/uploads/2009/01/sans-legacy.png); } --> </style>
<div id="sans">
<a href="#">&nbsp;</a>
</div>
<h2>Mono Fonts</h2>
<p>Mouse to see the same fonts with the legacy hinter.</p>
<style type="text/css"><!-- #mono a { text-decoration:none; display:block; background-image:url(http://martin.ankerl.com/wp-content/uploads/2009/01/mono-normal.png); width:430px; height:940px; } #mono a:hover {background-image:url(http://martin.ankerl.com/wp-content/uploads/2009/01/mono-legacy.png); } --> </style>
<div id="mono">
<a href="#">&nbsp;</a>
</div>
<h2>Zoomed Comparison Screenhots</h2>
<p>Here is an excerpt with 400% magnifications. Mouse over the pictures to see the legacy hinter.</p>
<h3>Zoomed Sans</h3>
<style type="text/css"><!-- #sanszoom a { text-decoration:none; display:block; background-image:url(http://martin.ankerl.com/wp-content/uploads/2009/01/sans-normal-zoomed.png); width:400px; height:200px; } #sanszoom a:hover {background-image:url(http://martin.ankerl.com/wp-content/uploads/2009/01/sans-legacy-zoomed.png); } --> </style>
<div id="sanszoom">
<a href="#">&nbsp;</a>
</div>
<h3>Zoomed Mono</h3>
<style type="text/css"><!-- #monozoom a { text-decoration:none; display:block; background-image:url(http://martin.ankerl.com/wp-content/uploads/2009/01/mono-normal-zoomed.png); width:400px; height:200px; } #monozoom a:hover {background-image:url(http://martin.ankerl.com/wp-content/uploads/2009/01/mono-legacy-zoomed.png); } --> </style>
<div id="monozoom">
<a href="#">&nbsp;</a>
</div>
<div style='clear:both'></div><img src="http://martin.ankerl.com/?ak_action=api_record_view&id=197&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://martin.ankerl.com/2009/01/22/beautiful-font-hinting-in-ubuntu-810/feed/</wfw:commentRss>
		<slash:comments>27</slash:comments>
		</item>
		<item>
		<title>Amazing Caching Proxy in Java</title>
		<link>http://martin.ankerl.com/2008/12/22/amazing-caching-proxy-in-java/</link>
		<comments>http://martin.ankerl.com/2008/12/22/amazing-caching-proxy-in-java/#comments</comments>
		<pubDate>Mon, 22 Dec 2008 21:53:59 +0000</pubDate>
		<dc:creator>Martin Ankerl</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[tricks]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://martin.ankerl.com/?p=184</guid>
		<description><![CDATA[Use Case Imagine you have some Java code that does lots and lots of computation. All the time intensive calculations is performed by the class SlowCalculator which implements the interface Calculator: public static interface Calculator { public String calculate(int a, String b); } public static void main(String[] args) { Calculator c = new SlowCalculator(); // [...]]]></description>
			<content:encoded><![CDATA[<h2>Use Case</h2>
<p>Imagine you have some Java code that does lots and lots of computation. All the time intensive calculations is performed by the class <tt>SlowCalculator</tt> which implements the interface <tt>Calculator</tt>:</p>
<pre class="brush: java;">
public static interface Calculator {
    public String calculate(int a, String b);
}

public static void main(String[] args) {
    Calculator c = new SlowCalculator();
    // call c.calculate() a lot of times here...
}
</pre>
<p>You notice that <tt>calculate()</tt> is often called with the same parameters which lead to the exact same result (<tt>SlowCalculator</tt> is stateless). This means it is possible to cache values so there&#8217;s no need to recompute. Using the generic CachingProxy&trade; described below, you can create a cached proxy for any class with just one single line of code:</p>
<pre class="brush: java;">
// ...

public static void main(String[] args) {
    Calculator c = new SlowCalculator();
    c = CachedProxy.create(Calculator.class, c);
    // call c.calculate() a lot of times here...
}
</pre>
<p>That&#8217;s it, and the application is blazingly fast again.</p>
<p><strong>UPDATE</strong>: Support for <tt>null</tt> values, transparently handles exceptions, better hash, nullpointer-bugfix.</p>
<p><strong>UPDATE</strong>: Here is an article &#8220;<a href="http://www.onjava.com/pub/a/onjava/2003/08/20/memoization.html">Memoization in Java Using Dynamic Proxy Classes</a>&#8221; that does (almost) exactly the same as this code.</p>
<p><span id="more-184"></span></p>
<h2>How To Do This</h2>
<p>All this sounds nice, but can you do this in java? Turns out you can and it is not that difficult either. The feature that makes it all possible is <a href="http://java.sun.com/j2se/1.4.2/docs/guide/reflection/proxy.html">Dynamic Proxy</a>. With it you can implement interfaces <em>at runtime</em>. You take an interface, create a proxy for it with <tt><a href="http://java.sun.com/javase/6/docs/api/java/lang/reflect/Proxy.html">Proxy</a>.newProxyInstance(...)</tt>, supply an <a href="http://java.sun.com/javase/6/docs/api/java/lang/reflect/InvocationHandler.html">InvocationHandler</a> that implements the <tt><a href="http://java.sun.com/javase/6/docs/api/java/lang/reflect/InvocationHandler.html#invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[])">invoke()</a></tt> method, and you are done.</p>
<p>The code for the <tt>CachedProxy.create()</tt> method is this:</p>
<pre class="brush: java;">
    /**
     * Creates an intermediate proxy object that uses cached results if
     * available, otherwise calls the given code.
     *
     * @param &lt;T&gt;
     *            Type of the class.
     * @param cl
     *            The interface for which the proxy should be created.
     * @param code
     *            The actual calculation code that should be cached.
     * @return The proxy.
     */
    @SuppressWarnings(&quot;unchecked&quot;)
    public static &lt;T&gt; T create(final Class&lt;T&gt; cl, final T code) {
        // create the cache
        final Map&lt;Args, Object&gt; argsToOutput = new HashMap&lt;Args, Object&gt;();

        // proxy for the interface T
        return (T) Proxy.newProxyInstance(cl.getClassLoader(), new Class&lt;?&gt;[] { cl }, new InvocationHandler() {

            @Override
            public Object invoke(final Object proxy, final Method method, final Object[] args) throws Throwable {
                final Args input = new Args(method, args);
                Object result = argsToOutput.get(input);
                // check containsKey to support null values
                if (result == null &amp;&amp; !argsToOutput.containsKey(input)) {
                    // make sure exceptions are handled transparently
                    try {
                        result = method.invoke(code, args);
                        argsToOutput.put(input, result);
                    } catch (InvocationTargetException e) {
                        throw e.getTargetException();
                    }
                }
                return result;
            }
        });
    }
</pre>
<ol>
<li>First I create a <tt>HashMap</tt> that is the cache for the return values. I have written a class <tt>Args</tt> (omitted here) that is as the key to map from the method and the parameters to the cached output.
<li>A Proxy is created for the interface <tt>cl</tt>, with an InvocationHandler that does all the magic.
<li>The magic is actually very simple: If there is no cached result already available (line 25), perform the computation (line 26) and store the result in the map, then return the result.
</ol>
<h2>Download</h2>
<p>You can get the full code at my github repository:</p>
<ul>
<li>
<a href="http://github.com/martinus/java-playground/tree/master/src/java/com/ankerl/proxy/CachedProxy.java">CachedProxy</a>
</li>
</ul>
<h2>Benchmarks</h2>
<p>In my benchmark I can run about 8 million calls per secons via the cached proxy. That&#8217;s not too bad, given all the additional overhead with reflection and the HashMap.</p>
<p>Do you know of any way to improve this? Any ideas or suggestions are welcome!</p>
<div style='clear:both'></div><img src="http://martin.ankerl.com/?ak_action=api_record_view&id=184&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://martin.ankerl.com/2008/12/22/amazing-caching-proxy-in-java/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Human Compact Themes (for Ubuntu 8.10)</title>
		<link>http://martin.ankerl.com/2008/11/04/human-compact-themes-for-ubuntu-810/</link>
		<comments>http://martin.ankerl.com/2008/11/04/human-compact-themes-for-ubuntu-810/#comments</comments>
		<pubDate>Tue, 04 Nov 2008 17:11:58 +0000</pubDate>
		<dc:creator>Martin Ankerl</dc:creator>
				<category><![CDATA[downloads]]></category>
		<category><![CDATA[freeware]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://martin.ankerl.com/?p=182</guid>
		<description><![CDATA[This is a new release of the compact theme, based on the original Ubuntu 8.10 (Intrepid) theme. It was created by Jan Suhr almost a month ago, based on my little howto. I have now two versions of the theme: one with normal icon sizes, and one with the smaller 16&#215;16 icons for even more [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://brainstorm.ubuntu.com/idea/6772/"><img style="float:right; margin-left:20px; margin-bottom:20px" src="http://brainstorm.ubuntu.com/idea/6772/image/1/" /></a>This is a new release of the compact theme, based on the original Ubuntu 8.10 (Intrepid) theme. It was created by Jan Suhr almost a month ago, based on my little <a href="http://martin.ankerl.com/2008/10/10/how-to-make-a-compact-gnome-theme/">howto</a>. </p>
<p>I have now two versions of the theme: one with normal icon sizes, and one with the smaller 16&#215;16 icons for even more compactness. Here is a comparison animation of the standard Human theme vs. the compact theme:</p>
<p><center><br />
<img src="/files/compact8.10.gif" width="552" height="387" /><br />
</center></p>
<p>You can download the themes here:</p>
<ul>
<li><a href="/files/HumanCompact-8.10.tar.bz2">HumanCompact-8.10.tar.bz2</a>
<li><a href="/files/HumanCompactSmallIcons-8.10.tar.bz2">HumanCompactSmallIcons-8.10.tar.bz2</a>
</ul>
<h1>Download and Installation</h1>
<ol>
<li>Save the theme to your computer.
<li>Open the gnome&#8217;s appearence dialog with System > Preferences > Appearance.
<li>Drag and drop the downloaded file into the Theme tab of the appearance dialog. If you get an error message &#8220;Can&#8217;t move directory over directory&#8221;, you have already installed a theme with the same name. To be able to reinstall it, remove the directory <tt>~/.themes/Human Compact</tt> or <tt>~/.themes/Human Compact Small Icons</tt>.
<li>Choose &#8220;Apply new theme&#8221; in the popup dialog.
</ol>
<p>Most changes will occur immediately, but for e.g. the icon sizes it is best to log out and log in again. When you change the theme, you can get the Human Compact theme back by clicking on Customize, and then selecting Human Compact.</p>
<p>Any question, praise or flames? please post them!</p>
<h1>Install for root (e.g. Synaptic)</h1>
<p>Some readers asked how to get this to work for applications that run as root (e.g. synaptic), so here it is: simply copy the copy the theme file into the root’s home directory, like this (exchange <em>username</em> with your own name):</p>
<pre>sudo cp /home/username/.themes/Human\ Compact/gtk-2.0/gtkrc /root/.gtkrc-2.0</pre>
<p>Afterwards synaptic uses the human compact theme.</p>
<h1>Older Themes</h1>
<p>Here is some information about the original compact themes I have created:</p>
<ul>
<li><a href="http://martin.ankerl.com/2008/10/10/how-to-make-a-compact-gnome-theme/">How to Make a Human Compact Theme</a>
<li><a href="http://martin.ankerl.com/2008/05/13/human-compact-gnome-theme/">Human Compact Theme (for Ubuntu 8.04)</a>
<li><a href="http://martin.ankerl.com/2007/11/04/clearlooks-compact-gnome-theme/">Clearlooks Compact Theme (for Ubuntu 8.04)</a>
</ul>
<div style='clear:both'></div><img src="http://martin.ankerl.com/?ak_action=api_record_view&id=182&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://martin.ankerl.com/2008/11/04/human-compact-themes-for-ubuntu-810/feed/</wfw:commentRss>
		<slash:comments>37</slash:comments>
		</item>
		<item>
		<title>Human Compact Gnome Theme (for Ubuntu 8.04)</title>
		<link>http://martin.ankerl.com/2008/05/13/human-compact-gnome-theme/</link>
		<comments>http://martin.ankerl.com/2008/05/13/human-compact-gnome-theme/#comments</comments>
		<pubDate>Tue, 13 May 2008 19:46:28 +0000</pubDate>
		<dc:creator>Martin Ankerl</dc:creator>
				<category><![CDATA[freeware]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://martin.ankerl.com/2008/05/13/human-compact-gnome-theme/</guid>
		<description><![CDATA[Thanks to the overwhelming success of the Clearlooks Compact Theme and demand from several users I have now created a Human Compact theme. Basically it features the same compactness as Clearlooks Compact, but the look &#038; feel of the Ubuntu Human theme. So, if you want compactness and did not like the cold blue look [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://brainstorm.ubuntu.com/idea/6772/"><img style="float:right; margin-left:20px; margin-bottom:20px" src="http://brainstorm.ubuntu.com/idea/6772/image/1/" /></a>Thanks to the overwhelming success of the <a href="http://martin.ankerl.com/2007/11/04/clearlooks-compact-gnome-theme/">Clearlooks Compact Theme</a> and demand from several users I have now created a <em>Human Compact</em> theme. Basically it features the same compactness as Clearlooks Compact, but the look &#038; feel of the <a href="http://www.ubuntu.com/">Ubuntu</a> Human theme. So, if you want compactness and did not like the cold blue look of clearlooks, this is for you. It should also work well with the Eee pc, there even is a <a href="http://wiki.eeeuser.com/ubuntu:eeexubuntu:customization">nice tutorial here</a>.</p>
<p><strong>UPDATE</strong>: <a href="http://martin.ankerl.com/2008/11/04/human-compact-themes-for-ubuntu-810/">Human Compact Theme for Ubuntu 8.10 (Intrepid Ibex)</a> is available!</p>
<h1>Comparison</h1>
<p>Move your mouse over the image to see the difference of a save dialog between Ubuntu&#8217;s 8.04 <i>Human</i>, and <i>Human Compact</i>. Buttons and spacing is much smaller which results in a lot more free space for the actual content. See for yourself:</p>
<style type="text/css"><!-- #humancompact a { display:block; background-image:url(/wp-content/uploads/2008/05/s2.png); width:414px; height:423px; } #humancompact a:hover {background-image:url(/wp-content/uploads/2008/05/s1.png); } --> </style>
<p><center></p>
<div id="humancompact">
<a href="#">&nbsp;</a>
</div>
<p></center></p>
<p>Here are some other screenshots. The eclipse window uses 800&#215;480 resolution, which is the same as the eee pc has.<br />
<center><br />
<a href='http://martin.ankerl.com/wp-content/uploads/2008/05/screenshot-java-koagent-src-test-feasibility-at-profactor-inspector-graphvizvisitorjava-eclipse-platform.png' title='eclipse'><img src='http://martin.ankerl.com/wp-content/uploads/2008/05/screenshot-java-koagent-src-test-feasibility-at-profactor-inspector-graphvizvisitorjava-eclipse-platform.thumbnail.png' alt='eclipse' /></a> <a href='http://martin.ankerl.com/wp-content/uploads/2008/05/screenshot-infosvg-inkscape.png' title='inkscape'><img src='http://martin.ankerl.com/wp-content/uploads/2008/05/screenshot-infosvg-inkscape.thumbnail.png' alt='inkscape' /></a> <a href='http://martin.ankerl.com/wp-content/uploads/2008/05/screenshot-calculator-scientific.png' title='calc'><img src='http://martin.ankerl.com/wp-content/uploads/2008/05/screenshot-calculator-scientific.thumbnail.png' alt='calc' /></a><br />
</center></p>
<h1>Download and Installation</h1>
<ol>
<li>Save the file <a href='/files/HumanCompact.tar.bz2'>HumanCompact.tar.bz2</a> to your computer.
<li>Open the gnome&#8217;s appearence dialog with System > Preferences > Appearance.
<li>Drag and drop the downloaded file into the Theme tab of the appearance dialog.
<li>Choose &#8220;Apply new theme&#8221; in the popup dialog.
</ol>
<p>Most changes will occur immediately, but for e.g. the icon sizes it is best to log out and log in again. When you change the theme, you can get the Human Compact theme back by clicking on Customize, and then selecting Human Compact.</p>
<p>Any question, praise or flames? please post them!</p>
<h1>Install for root (e.g. Synaptic)</h1>
<p>Some readers asked how to get this to work for applications that run as root (e.g. synaptic), so here it is: simply copy the copy the theme file into the root’s home directory, like this (exchange <em>username</em> with your own name):</p>
<pre>sudo cp /home/username/.themes/Human\ Compact/gtk-2.0/gtkrc /root/.gtkrc-2.0</pre>
<p>Afterwards synaptic uses the human compact theme.</p>
<div style='clear:both'></div><img src="http://martin.ankerl.com/?ak_action=api_record_view&id=146&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://martin.ankerl.com/2008/05/13/human-compact-gnome-theme/feed/</wfw:commentRss>
		<slash:comments>41</slash:comments>
		</item>
		<item>
		<title>Clearlooks Compact Update</title>
		<link>http://martin.ankerl.com/2008/04/12/clearlooks-compact-update/</link>
		<comments>http://martin.ankerl.com/2008/04/12/clearlooks-compact-update/#comments</comments>
		<pubDate>Sat, 12 Apr 2008 14:01:35 +0000</pubDate>
		<dc:creator>Martin Ankerl</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://martin.ankerl.com/2008/04/12/clearlooks-compact-update/</guid>
		<description><![CDATA[I have made a minor update to the Clearlooks Compact theme, the panel menu now uses small icons. Clearlooks Compact is a Gnome theme that tries to make use of the wasted screen space as much as possible. It is especially useful for small screens like on the Eee PC, or with intense applications like [...]]]></description>
			<content:encoded><![CDATA[<p>I have made a minor update to the <a href="http://martin.ankerl.com/2007/11/04/clearlooks-compact-gnome-theme/">Clearlooks Compact theme</a>, the panel menu now uses small icons.</p>
<p>Clearlooks Compact is a Gnome theme that tries to make use of the wasted screen space as much as possible. It is especially useful for small screens like on the <a href="http://eeepc.asus.com/global/">Eee PC</a>, or with intense applications like Eclipse. </p>
<p>This theme is picking up some steam lately:</p>
<ul>
<li>It is recommended from the <a href="http://wiki.eeeuser.com/ubuntu:eeexubuntu:customization">EeeUser Installation manual</a> (also available in many other languages, see translations to the top right).</li>
<li>Somebody wrote an idea into <a href="http://brainstorm.ubuntu.com/idea/6772/">Ubuntu&#8217;s Brainstorm</a>, and it got 86 votes already <img src='http://martin.ankerl.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </li>
<li>I have written <a href="https://bugs.launchpad.net/ubuntu/+source/ubuntu-artwork/+bug/160938 ">a bug report</a> in Ubuntu&#8217;s launchpad a while ago, and somebody wrote <a href="https://blueprints.launchpad.net/ubuntu-eee/+spec/compact-theme">an Eee PC blueprint</a></li>
<li>There is an entry in <a href="http://www.gnome-look.org/content/show.php/Clearlooks+Compact?content=69357">Gnome-Look</a> and <a href="http://www.xfce-look.org/content/show.php/Clearlooks%20Compact?content=69357">Xfce-Look</a>.
<li>And of course there are <a href="http://blogsearch.google.com/blogsearch?hl=en&#038;q=clearlooks+compact&#038;btnG=Search+Blogs">several blog postings</a>.
</ul>
<p>I am using it on my 22&#8243; monitor and like it here too.</p>
<div style='clear:both'></div><img src="http://martin.ankerl.com/?ak_action=api_record_view&id=127&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://martin.ankerl.com/2008/04/12/clearlooks-compact-update/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Netvibes Search Widgets Updated</title>
		<link>http://martin.ankerl.com/2008/04/12/netvibes-search-widgets-updated/</link>
		<comments>http://martin.ankerl.com/2008/04/12/netvibes-search-widgets-updated/#comments</comments>
		<pubDate>Sat, 12 Apr 2008 13:35:38 +0000</pubDate>
		<dc:creator>Martin Ankerl</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[freeware]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[search]]></category>
		<category><![CDATA[netvibes]]></category>
		<category><![CDATA[updates]]></category>
		<category><![CDATA[UWA]]></category>
		<category><![CDATA[widgets]]></category>

		<guid isPermaLink="false">http://martin.ankerl.com/2008/04/12/netvibes-search-widgets-updated/</guid>
		<description><![CDATA[I have just updated the Netvibes (iGoogle, Apple Dashboard, Opera, Windows Live) search widgets with some Javascript voodoo. See my previous post for more info about these widgets. You can try them inline here: Even though there is not much about this search, I have done quite a bit of user interface tweaks to make [...]]]></description>
			<content:encoded><![CDATA[<p>I have just updated the <a href="http://www.netvibes.com/">Netvibes</a> (<a href="http://www.google.com/ig">iGoogle</a>, <a href="http://www.apple.com/downloads/dashboard/">Apple Dashboard</a>, <a href="http://www.opera.com/">Opera</a>, <a href="http://www.live.com/">Windows Live</a>) search widgets with some Javascript voodoo. See <a href="http://martin.ankerl.com/2008/03/18/netvibes-widgets-for-jdk-and-oss-search/">my previous post for more info</a> about these widgets. You can try them inline here:</p>
<p><center><iframe style="border: 1px solid #79A7E2;" frameborder="0" height="60" width="350" src="http://www.netvibes.com/api/uwa/frame/uwa_standalone.php?id=1205831538&#038;moduleUrl=http%3A%2F%2Fopensource.ankerl.com%2Fnetvibes.html&#038;commUrl=http://eco.netvibes.com/uwa.html" scrolling="no"></iframe></center></p>
<p><center><iframe style="border: 1px solid #79A7E2;" frameborder="0" height="60" width="350"  src="http://www.netvibes.com/api/uwa/frame/uwa_standalone.php?id=1205828082&#038;moduleUrl=http%3A%2F%2Fjavadoc.ankerl.com%2Fnetvibes.html&#038;commUrl=http://eco.netvibes.com/uwa.html" scrolling="no"></iframe></center></p>
<p>Even though there is not much about this search, I have done quite a bit of user interface tweaks to make them easier to use. Here are the new features:</p>
<dl>
<dt>Remember Latest Selection</dt>
<dd>When you use e.g. the <a href="http://eco.netvibes.com/widgets/234614/open-source-software-search">Open Source Search</a>, the previously used operating system (selected by clicking on the button) is automatically used when you just enter the search term end press Return. The selection is highlighted with bold text.</dd>
<dt>Select Text On Click</dt>
<dd>Clicking into the text field automatically selects the whole text, so it is easier to reuse the textfield. I have also entered a default value, because from the webanalyzer logs I found out that many people just click on the buttons without entering any text, so now it should be more obvious how this thing works.</dd>
<dt>No Textfield Changes</dt>
<dd>The previous version added a text like <tt>more:Linux</tt> into the search box that was used by the custom search. This clutter is now hidden from the user.</dd>
</dl>
<p>I think the widgets are much more useful now. If you like them, add them to <a href="http://www.netvibes.com/">Netvibes</a>, <a href="http://www.google.com/ig">iGoogle</a>, <a href="http://www.apple.com/downloads/dashboard/">Apple Dashboard</a>, <a href="http://www.opera.com/">Opera</a>, <a href="http://www.live.com/">Windows Live</a>, or Windows Vista here:
<ul>
<li><a href="http://eco.netvibes.com/widgets/234614/open-source-software">Open Source Software Search Widget</a></li>
<li><a href="http://eco.netvibes.com/widgets/234615/java-developer-kit-documentation">Java Developer Kit Documentation Widget</a></li>
</ul>
<p>I think the widgets are now much more useful. Post if you have any problems!</p>
<div style='clear:both'></div><img src="http://martin.ankerl.com/?ak_action=api_record_view&id=126&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://martin.ankerl.com/2008/04/12/netvibes-search-widgets-updated/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Netvibes Widgets for JDK and OSS Search</title>
		<link>http://martin.ankerl.com/2008/03/18/netvibes-widgets-for-jdk-and-oss-search/</link>
		<comments>http://martin.ankerl.com/2008/03/18/netvibes-widgets-for-jdk-and-oss-search/#comments</comments>
		<pubDate>Tue, 18 Mar 2008 09:39:07 +0000</pubDate>
		<dc:creator>Martin Ankerl</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[freeware]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[search]]></category>
		<category><![CDATA[ginger]]></category>
		<category><![CDATA[netvibes]]></category>
		<category><![CDATA[widgets]]></category>

		<guid isPermaLink="false">http://martin.ankerl.com/2008/03/18/netvibes-widgets-for-jdk-and-oss-search/</guid>
		<description><![CDATA[Netvibes has recently released a very cool update on their Widget API (see Ginger and UWA). It is now possible to create widgets that can be used in iGoogle, Apple Dashboard, Opera, Windows Live, Windows Vista, and of course Netvibes itself. I have just created two widgets for the two search engines Open Source Software [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.netvibes.com/">Netvibes</a> has recently released a very cool update on their Widget API (see <a href="http://ginger.netvibes.com/">Ginger</a> and <a href="http://dev.netvibes.com/">UWA</a>). It is now possible to create widgets that can be used in <a href="http://www.google.com/ig">iGoogle</a>, <a href="http://www.apple.com/downloads/dashboard/">Apple Dashboard</a>, <a href="http://www.opera.com/">Opera</a>, <a href="http://www.live.com/">Windows Live</a>, Windows Vista, and of course <a href="http://www.netvibes.com/">Netvibes</a> itself. I have just created two widgets for the two search engines <a href="http://opensource.ankerl.com/">Open Source Software</a> and <a href="http://javadoc.ankerl.com/">Java Developer Kit (JDK) Documentation</a> which I believe are extremely convenient, but try for yourself!</p>
<h2>Try Them</h2>
<p>For example, enter <tt>Word</tt> and click <tt>Linux</tt> to find open source alternatives for your favorite operating system. The widget remembers what your choice, and the next time you use the search you just have to enter the search term and press enter to search with the same operating system again.<br />
<center><iframe style="border: 1px solid #79A7E2;" frameborder="0" height="60" width="350" src="http://www.netvibes.com/api/uwa/frame/uwa_standalone.php?id=1205831538&#038;moduleUrl=http%3A%2F%2Fopensource.ankerl.com%2Fnetvibes.html&#038;commUrl=http://eco.netvibes.com/uwa.html" scrolling="no"></iframe></center></p>
<p>Type <tt>concurrent</tt> and click <tt>6.0</tt> in the JDK search to find out about the concurrency package in JDK 1.6.0.<br />
<center><iframe style="border: 1px solid #79A7E2;" frameborder="0" height="60" width="350"  src="http://www.netvibes.com/api/uwa/frame/uwa_standalone.php?id=1205828082&#038;moduleUrl=http%3A%2F%2Fjavadoc.ankerl.com%2Fnetvibes.html&#038;commUrl=http://eco.netvibes.com/uwa.html" scrolling="no"></iframe></center></p>
<h2>Add Them</h2>
<p>You can add the engines to <a href="http://www.netvibes.com/">Netvibes</a>, <a href="http://www.google.com/ig">iGoogle</a>, <a href="http://www.apple.com/downloads/dashboard/">Apple Dashboard</a>, <a href="http://www.opera.com/">Opera</a>, <a href="http://www.live.com/">Windows Live</a>, or Windows Vista here:
<ul>
<li><a href="http://eco.netvibes.com/widgets/234614/open-source-software">Open Source Software Search Widget</a></li>
<li><a href="http://eco.netvibes.com/widgets/234615/java-developer-kit-documentation">Java Developer Kit Documentation Widget</a></li>
</ul>
<p>Are the widgets useful to you? Please tell me!</p>
<div style='clear:both'></div><img src="http://martin.ankerl.com/?ak_action=api_record_view&id=123&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://martin.ankerl.com/2008/03/18/netvibes-widgets-for-jdk-and-oss-search/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Get More Space Out of Your ext3 Partition</title>
		<link>http://martin.ankerl.com/2008/01/12/get-more-space-out-of-your-ext3-partition/</link>
		<comments>http://martin.ankerl.com/2008/01/12/get-more-space-out-of-your-ext3-partition/#comments</comments>
		<pubDate>Sat, 12 Jan 2008 11:56:24 +0000</pubDate>
		<dc:creator>Martin Ankerl</dc:creator>
				<category><![CDATA[howto]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[tricks]]></category>
		<category><![CDATA[ext3]]></category>
		<category><![CDATA[harddisk]]></category>
		<category><![CDATA[trick]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[wastedspace]]></category>

		<guid isPermaLink="false">http://martin.ankerl.com/?p=104</guid>
		<description><![CDATA[I have just discovered that ext3 defaults to reserving 5% of its partition exclusively for root, as a precaution measure that your system does not get FUBAR when you use it for your root partition. I have a 230GB external USB disk that I use for all my big storage requirements, downloaded stuff, backups etc. [...]]]></description>
			<content:encoded><![CDATA[<p>I have just discovered that ext3 defaults to reserving 5% of its partition exclusively for root, as a precaution measure that your system does not get FUBAR when you use it for your root partition. I have a 230GB external USB disk that I use for all my big storage requirements, downloaded stuff, backups etc. Due to this reservation I had 11.5GB of unusable disk space, thankfully this is easy to fix:</p>
<pre>tune2fs -m 0 /dev/sdf1</pre>
<p>Replace <tt>sdf1</tt> with your partition name. You don&#8217;t even have to unmount your disk. Voilá, 11.5 GB more space for free <img src='http://martin.ankerl.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  Here is the output of <tt>df -h</tt> as proof:</p>
<h3>Before:</h3>
<pre>Filesystem            Size  Used Avail Use% Mounted on
/dev/sdf1             230G  193G   26G  89% /media/disk</pre>
<h3>After:</h3>
<pre>Filesystem            Size  Used Avail Use% Mounted on
/dev/sdf1             230G  193G   38G  84% /media/disk</pre>
<p>If you like this, you might also be interested in <a href="/2007/11/03/howto-change-ubuntu-forced-fsck/">How to change Ubuntu forced fsck</a>.</p>
<p><strong>Update:</strong> The free space limitation is also used to prevent fragmentation. So if you set the limit to zero and operate on a very full harddisk for a while, your filesystem might slow down.</p>
<div style='clear:both'></div><img src="http://martin.ankerl.com/?ak_action=api_record_view&id=104&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://martin.ankerl.com/2008/01/12/get-more-space-out-of-your-ext3-partition/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>
