<?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>kirjoittaessani &#187; Code</title>
	<atom:link href="http://kirjoittaessani.de/category/code/feed/" rel="self" type="application/rss+xml" />
	<link>http://kirjoittaessani.de</link>
	<description></description>
	<lastBuildDate>Mon, 14 May 2012 20:32:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>Lessons learned</title>
		<link>http://kirjoittaessani.de/2011/07/12/lessons-learned/</link>
		<comments>http://kirjoittaessani.de/2011/07/12/lessons-learned/#comments</comments>
		<pubDate>Tue, 12 Jul 2011 17:30:02 +0000</pubDate>
		<dc:creator>kirjoittaessani</dc:creator>
		<br />
<b>Warning</b>:  Parameter 1 to polyglot_get_the_tags() expected to be a reference, value given in <b>/usr/www/users/kirjoi/wp-includes/plugin.php</b> on line <b>166</b><br />
		<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://kirjoittaessani.de/?p=2164</guid>
		<description><![CDATA[Actually, I have known this for some time, but today, it has bitten me again: Interpreted languages[1] are not suited for application development. Period. Use them for quick hacks, or for prototyping, or in lieu of a shell script. But never for real applications. People tend to say Computers are so fast today the overhead [...]]]></description>
			<content:encoded><![CDATA[<p>Actually, I have known this for some time, but today, it has bitten me again: Interpreted languages[<a href="http://kirjoittaessani.de/2011/07/12/lessons-learned/#footnote_0_2164" id="identifier_0_2164" class="footnote-link footnote-identifier-link" title="like Python">1</a>] are not suited for application development. Period. Use them for quick hacks, or for prototyping, or in lieu of a shell script. But never for real applications.</p>
<p>People tend to say <em>Computers are so fast today the overhead does not really matter, and if it does for a few inner loops, no problem: our language can interface with C.</em> But that is beside the point. The real disadvantage of these languages is not their (somewhat inferior) execution speed, but their lack of static checking. If you write bogus in a compiled language, chances are the compiler will catch it. Some stricter languages[<a href="http://kirjoittaessani.de/2011/07/12/lessons-learned/#footnote_1_2164" id="identifier_1_2164" class="footnote-link footnote-identifier-link" title="like Ada">2</a>] will catch more kinds of bogus than more lenient ones[<a href="http://kirjoittaessani.de/2011/07/12/lessons-learned/#footnote_2_2164" id="identifier_2_2164" class="footnote-link footnote-identifier-link" title="like C">3</a>], but there are surprisingly many ways to write bogus that every compiler will catch. Interpreted languages do not have a compile phase, they just throw an exception when encountering bogus at runtime. <em>If </em>they encounter it: There are many execution paths through a program, and some may not be followed very often, making it easy to write, install, and use completely broken software. You may say <em>Well, write tests then</em>, but as useful tests are, they come with large disadvantages when relied upon as the only means of detecting errors: Firstly, they have to be written. A compiler knows about the language, but the developer has to write all necessary testcases by hand. It is easy to overlook something, and it is also very easy to be lazy and write too few tests (or none at all). Secondly, executing tests takes machine time (probably more than what was saved by not compiling), and writing tests takes developer time (lots of it). Finally, the static analysis a compiler provides tends to catch <em>different</em> errors than tests do, so combining the two will simply catch more problems than either method on its own.</p>
<p>Oh, and then there is the problem of external code. Libraries, modules, whatever. APIs should not change (needlessly), but sometimes they do. With ordinary binary code, there is an established way to keep around different versions of a given library, so older programs using an older API can still function. I am not aware of a similar mechanism for Python, so getting ImportErrors from a module that installed just fine is not that unusual. In fact, implementing such a method for an interpreted language would be somewhat more involved than for a compiled one: When a programmer links to a shared library, the linker will take that to mean the latest installed version of that library. The version number is then encoded into the application binary, so the correct library will be used whenever the application is started. However, the very nature of an interpreted language means that the program is not touched by anyone but the developer. So if the developer does not demand a particular version, nothing else does, either. Seriously: use a tool that fits the job rather than clutching a hammer and trying to see nails everywhere.</p>
<ol class="footnotes"><li id="footnote_0_2164" class="footnote">like Python</li><li id="footnote_1_2164" class="footnote">like Ada</li><li id="footnote_2_2164" class="footnote">like C</li></ol>]]></content:encoded>
			<wfw:commentRss>http://kirjoittaessani.de/2011/07/12/lessons-learned/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux, Ltd</title>
		<link>http://kirjoittaessani.de/2011/06/23/linux-ltd/</link>
		<comments>http://kirjoittaessani.de/2011/06/23/linux-ltd/#comments</comments>
		<pubDate>Thu, 23 Jun 2011 15:45:29 +0000</pubDate>
		<dc:creator>kirjoittaessani</dc:creator>
		<br />
<b>Warning</b>:  Parameter 1 to polyglot_get_the_tags() expected to be a reference, value given in <b>/usr/www/users/kirjoi/wp-includes/plugin.php</b> on line <b>166</b><br />
		<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://kirjoittaessani.de/?p=2162</guid>
		<description><![CDATA[Linux und die Speicherverwaltung &#8212; das ist gar kein einfaches Thema. Wenn man dann noch versucht, seine User mittels ulimit im Zaume zu halten, wird es nur schwieriger. Gerade habe ich etwas sehr erhellendes gefunden: die meisten Sachen funktionieren einfach nicht.]]></description>
			<content:encoded><![CDATA[<p>Linux und die Speicherverwaltung &#8212; das ist gar kein einfaches Thema. Wenn man dann noch versucht, seine User mittels <code>ulimit</code> im Zaume zu halten, wird es nur schwieriger. Gerade habe ich etwas sehr erhellendes <a href="http://www.csamuel.org/2007/11/30/linux-ulimit-memory-enforcement-oddity">gefunden</a>: die meisten Sachen funktionieren einfach nicht.</p>
]]></content:encoded>
			<wfw:commentRss>http://kirjoittaessani.de/2011/06/23/linux-ltd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Erased</title>
		<link>http://kirjoittaessani.de/2011/06/14/erased/</link>
		<comments>http://kirjoittaessani.de/2011/06/14/erased/#comments</comments>
		<pubDate>Tue, 14 Jun 2011 13:27:25 +0000</pubDate>
		<dc:creator>kirjoittaessani</dc:creator>
		<br />
<b>Warning</b>:  Parameter 1 to polyglot_get_the_tags() expected to be a reference, value given in <b>/usr/www/users/kirjoi/wp-includes/plugin.php</b> on line <b>166</b><br />
		<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://kirjoittaessani.de/?p=2155</guid>
		<description><![CDATA[Unpleasant: night after night, your machine keeps deleting your laboriously developed code. Convenient: everything is in a local git repository, and any point in time may be reconstructed. Strange: not only has the code disappeared, but all traces of its history as well. In the past few months, I have spent an hour or two [...]]]></description>
			<content:encoded><![CDATA[<p>Unpleasant: night after night, your machine keeps deleting your laboriously developed code. Convenient: everything is in a local git repository, and any point in time may be reconstructed. Strange: not only has the code disappeared, but all traces of its history as well.</p>
<p>In the past few months, I have spent an hour or two almost every week to find the leak. Today, I have met with success:</p>
<blockquote><p>In the normal fast-forward case the behavior remains unchanged. However, now local modifications and commits will be erased, and upstream rewrites are handled smoothly.  This ensures that the upstream<br />
branch is tested as expected.</p></blockquote>
<p>Argh! What bally idea is that? I would like to decide for myself what I want to test, thank you very much. If I really want to test Upstream, I will create a branch for that purpose. It is not up to some piece of software to decide in my place, and then remove my code <em>from the repository!</em></p>
]]></content:encoded>
			<wfw:commentRss>http://kirjoittaessani.de/2011/06/14/erased/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Maschine</title>
		<link>http://kirjoittaessani.de/2011/02/26/maschine/</link>
		<comments>http://kirjoittaessani.de/2011/02/26/maschine/#comments</comments>
		<pubDate>Sat, 26 Feb 2011 19:17:59 +0000</pubDate>
		<dc:creator>kirjoittaessani</dc:creator>
		<br />
<b>Warning</b>:  Parameter 1 to polyglot_get_the_tags() expected to be a reference, value given in <b>/usr/www/users/kirjoi/wp-includes/plugin.php</b> on line <b>166</b><br />
		<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://kirjoittaessani.de/?p=2128</guid>
		<description><![CDATA[Gerade gefunden: Ein Link für alle, die wissen, was eine Turingmaschine ist.]]></description>
			<content:encoded><![CDATA[<p>Gerade gefunden: Ein <a href="http://www.youtube.com/watch?v=E3keLeMwfHY">Link</a> für alle, die wissen, was eine Turingmaschine ist.</p>
]]></content:encoded>
			<wfw:commentRss>http://kirjoittaessani.de/2011/02/26/maschine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Suboptimal</title>
		<link>http://kirjoittaessani.de/2011/02/19/suboptimal/</link>
		<comments>http://kirjoittaessani.de/2011/02/19/suboptimal/#comments</comments>
		<pubDate>Sat, 19 Feb 2011 00:54:31 +0000</pubDate>
		<dc:creator>kirjoittaessani</dc:creator>
		<br />
<b>Warning</b>:  Parameter 1 to polyglot_get_the_tags() expected to be a reference, value given in <b>/usr/www/users/kirjoi/wp-includes/plugin.php</b> on line <b>166</b><br />
		<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://kirjoittaessani.de/?p=2110</guid>
		<description><![CDATA[Ja, da war ich wohl ein wenig voreilig, das Verständnis des Buildsystems anzunehmen. Das stellte sich heraus, als ich den erfolgreich kompilierten gcc unter einem Debugger[1] betreiben wollte. Wer schon einmal versucht hat, ein Kompilat mit eingeschalteter Optimierung zu debuggen, weiß, was ich meine: Variablen lassen sich nicht mehr auslesen, das Programm scheint im Code [...]]]></description>
			<content:encoded><![CDATA[<p>Ja, da war ich wohl ein wenig <a href="http://kirjoittaessani.de/2011/02/16/bootstrap/">voreilig</a>, das Verständnis des Buildsystems anzunehmen. Das stellte sich heraus, als ich den erfolgreich kompilierten gcc unter einem Debugger[<a href="http://kirjoittaessani.de/2011/02/19/suboptimal/#footnote_0_2110" id="identifier_0_2110" class="footnote-link footnote-identifier-link" title="F&uuml;r den Fall, da&szlig; noch nicht alle des Programmierens nicht m&auml;chtigen Leser aufgegeben haben, sei gesagt: Ein Debugger ist ein Programm, mit dem man den Ablauf und den Zustand eines anderen &amp;#8212; m&ouml;glicherweise fehlerhaften &amp;#8212; Programmen schrittweise verfolgen kann.">1</a>] betreiben wollte. Wer schon einmal versucht hat, ein Kompilat mit eingeschalteter Optimierung zu debuggen, weiß, was ich meine: Variablen lassen sich nicht mehr auslesen, das Programm scheint im Code wirr vor und zurück zu springen &#8212; selbst ein sehr einfaches, selbst geschriebenes Programm ist kaum noch nachvollziehbar. Nicht so schlimm, dachte ich mir, und habe mit <code>CFLAGS='-g -O0' configure</code> gleich den nächsten Build angestoßen. Die Ernüchterung folgte allerdings auf dem Fuße:[<a href="http://kirjoittaessani.de/2011/02/19/suboptimal/#footnote_1_2110" id="identifier_1_2110" class="footnote-link footnote-identifier-link" title="Jedenfalls halbwegs &amp;#8212; so ein Notebook ist nicht gerade die schnellste aller Entwicklungsmaschinen">2</a>] die Flags waren irgendwo unterwegs verlorengegangen, und das Resultat kein bißchen brauchbarer als beim ersten Versuch.</p>
<p>Dabei bin ich eigentlich froh und dankbar, daß der gcc als Buildsystem die GNU Autotools verwendet. Sie werden zwar manchmal als veraltet und zu kompliziert abgetan, aber ich komme mit ihnen immer noch weit besser klar als mit CMake, Python Distutils und allem anderen, das ich bislang gesehen habe. Die Probleme beim gcc rühren allein daher, daß es mit dem bloßen Kompilieren nicht getan ist; stattdessen wird der dabei erzeugte Compiler dazu verwendet, aus dem Sourcecode noch einen Compiler (<em>Stage2</em>) zu erzeugen, und dieser wiederum erzeugt dann das fertige Kompilat (<em>Stage3</em>).[<a href="http://kirjoittaessani.de/2011/02/19/suboptimal/#footnote_2_2110" id="identifier_2_2110" class="footnote-link footnote-identifier-link" title="Dieser Bootstrap genannte Zauber dient dazu, den fertigen Compiler mit sich selbst zu kompilieren, was ein guter Test f&uuml;r seine Zuverl&auml;ssigkeit ist. ">3</a>] Of will man in verschiedenen Stadien verschiedene Optionen verwenden, und deshalb gibt es auch einen ganzen Zoo von Umgebungsvariablen, deren Zweck nicht immer ohne weiteres klar ist.</p>
<p>Ach so, die Lösung: nach dem Konfigurieren einfach <code>make BOOT_CFLAGS='-g -O0' bootstrap</code> eingeben, und schon klappt es.</p>
<ol class="footnotes"><li id="footnote_0_2110" class="footnote">Für den Fall, daß noch nicht alle des Programmierens nicht mächtigen Leser aufgegeben haben, sei gesagt: Ein Debugger ist ein Programm, mit dem man den Ablauf und den Zustand eines anderen &#8212; möglicherweise fehlerhaften &#8212; Programmen schrittweise verfolgen kann.</li><li id="footnote_1_2110" class="footnote">Jedenfalls halbwegs &#8212; so ein Notebook ist nicht gerade die schnellste aller Entwicklungsmaschinen</li><li id="footnote_2_2110" class="footnote">Dieser <em>Bootstrap</em> genannte Zauber dient dazu, den fertigen Compiler mit sich selbst zu kompilieren, was ein guter Test für seine Zuverlässigkeit ist. </li></ol>]]></content:encoded>
			<wfw:commentRss>http://kirjoittaessani.de/2011/02/19/suboptimal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bootstrap</title>
		<link>http://kirjoittaessani.de/2011/02/16/bootstrap/</link>
		<comments>http://kirjoittaessani.de/2011/02/16/bootstrap/#comments</comments>
		<pubDate>Wed, 16 Feb 2011 21:09:02 +0000</pubDate>
		<dc:creator>kirjoittaessani</dc:creator>
		<br />
<b>Warning</b>:  Parameter 1 to polyglot_get_the_tags() expected to be a reference, value given in <b>/usr/www/users/kirjoi/wp-includes/plugin.php</b> on line <b>166</b><br />
		<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://kirjoittaessani.de/?p=2107</guid>
		<description><![CDATA[Eine kurze Statusmeldung: Inzwischen läuft der Build durch, und ein passendes Problemchen zur Analyse habe ich auch schon gefunden. Am Anfang ist es immer ratsam, sich einen weniger drängenden Bug zu suchen, weil es sonst leicht passiert, daß jemand mit mehr Erfahrung und Überblick schneller ist&#8230;]]></description>
			<content:encoded><![CDATA[<p>Eine kurze Statusmeldung: Inzwischen läuft der <a href="http://kirjoittaessani.de/2011/02/10/dreaming-of-code/">Build</a> durch, und ein passendes Problemchen zur Analyse habe ich auch schon gefunden. Am Anfang ist es immer ratsam, sich einen weniger drängenden Bug zu suchen, weil es sonst leicht passiert, daß jemand mit mehr Erfahrung und Überblick schneller ist&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://kirjoittaessani.de/2011/02/16/bootstrap/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Dreaming of Code</title>
		<link>http://kirjoittaessani.de/2011/02/10/dreaming-of-code/</link>
		<comments>http://kirjoittaessani.de/2011/02/10/dreaming-of-code/#comments</comments>
		<pubDate>Thu, 10 Feb 2011 21:45:17 +0000</pubDate>
		<dc:creator>kirjoittaessani</dc:creator>
		<br />
<b>Warning</b>:  Parameter 1 to polyglot_get_the_tags() expected to be a reference, value given in <b>/usr/www/users/kirjoi/wp-includes/plugin.php</b> on line <b>166</b><br />
		<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://kirjoittaessani.de/?p=2105</guid>
		<description><![CDATA[Es war vor ein paar Tagen, da saß ich in meinem Lieblingssessel, es war etwas früher als üblich, und es sollte ein schöner Abend werden. Endlich die Gelegenheit, etwas zu tun, zu dem mir sonst die Zeit fehlt &#8212; doch was nur? Lesen mochte ich aus irgendeinem Grund nicht, und der Vokabelkasten neben mir wirkte [...]]]></description>
			<content:encoded><![CDATA[<p>Es war vor ein paar Tagen, da saß ich in meinem Lieblingssessel, es war etwas früher als üblich, und es sollte ein schöner Abend werden. Endlich die Gelegenheit, etwas zu tun, zu dem mir sonst die Zeit fehlt &#8212; doch was nur? Lesen mochte ich aus irgendeinem Grund nicht, und der Vokabelkasten neben mir wirkte auch nicht gerade verlockend. Ein Computerspiel vielleicht, dachte ich mir, wenn die Monster zur Tür hereinkommen und du die Taschenlampen und Bumerangs strategisch ums Bett herum verteilst ist das sehr befriedigend, weil die Kiste dir mit jeder Monsterwelle eine neue Herausforderung vorwirft aber du löst sie jedesmal und die Lösung ist so einfach und so elegant wenn du nur die Taschenlampen hinten in die Kurven und die Shuriken vorne an die Geraden stellst, aber nein irgendwie ist das ja auch alles repetitiv und ein bißchen langeweilig, und dann wußte ich du brauchst Code code CODE und es ist völlig egal daß du jeden Tag acht Stunden am Rechner verbringst du mußt jetzt und gerade den Compiler anwerfen und ein programmieren und jedes Problem ist eine Herausforderung aber das Programm löst sie und der Code ist so elegant nur ist es gar nicht repetitiv wenn du nur das richtige Problem hast und hinterher können tatsächlich Leute dein Programm benutzen und&#8230;</p>
<p>Nun ja, ich habe dann ein bißchen nach einem passenden Projekt gesucht. Vielleicht ein schönes buntes Mac-Programm? Aber bald fiel mir wieder ein, daß ich vor fünf oder sechs Jahren schonmal ein bißchen im <a href="http://gcc.gnu.org">gcc</a> herumgefuhrwerkt hatte, und das hat mir eigentlich von allen Projekten immer noch am meisten Spaß gemacht: einerseits ist der Compilerbau schon soetwas wie die Königsdisziplin der angewandten Informatik, und andererseits gibt es beim gcc unglaublich viele kleine Nischen und Unterprojekte, in denen man sich nicht gegenseitig auf die Füße tritt, man aber auch Chancen hat, daß der eigene Code hinterher im fertigen Produkt Verwendung findet. Naja, und dann hat der gcc natürlich eine sehr zentrale Rolle im GNU-Projekt und eine unglaublich breite Nutzerschaft, und das schmeichelt dem Ego dann auch irgendwie.</p>
<p>Für&#8217;s erste ist aber statt <em>Blood, Sweat &amp; Code</em> noch der Kampf mit dem Buildsystem angesagt, damit ich den ersten Bootstrap hinbekomme.</p>
]]></content:encoded>
			<wfw:commentRss>http://kirjoittaessani.de/2011/02/10/dreaming-of-code/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>End Of File</title>
		<link>http://kirjoittaessani.de/2010/11/26/end-of-file/</link>
		<comments>http://kirjoittaessani.de/2010/11/26/end-of-file/#comments</comments>
		<pubDate>Fri, 26 Nov 2010 11:11:01 +0000</pubDate>
		<dc:creator>kirjoittaessani</dc:creator>
		<br />
<b>Warning</b>:  Parameter 1 to polyglot_get_the_tags() expected to be a reference, value given in <b>/usr/www/users/kirjoi/wp-includes/plugin.php</b> on line <b>166</b><br />
		<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://kirjoittaessani.de/?p=2054</guid>
		<description><![CDATA[This is again an entry bound to be uninteresting to most&#8230; If you use Jim Rogers&#8217; Pipe Commands for Ada, and the linker complains about an undefined reference to `c_constant_eof', try pragma Import (C, c_constant_EOF, "__gnat_constant_eof"); instead of pragma Import (C, c_constant_EOF); [via Usenet]]]></description>
			<content:encoded><![CDATA[<p>This is <a href="http://kirjoittaessani.de/2008/03/28/1092/">again</a> an entry bound to be uninteresting to most&#8230;</p>
<p>If you use Jim Rogers&#8217; <em>Pipe Commands</em> for Ada, and the linker complains about an<br />
<code>undefined reference to `c_constant_eof'</code>,<br />
try<br />
<code>pragma Import (C, c_constant_EOF, "__gnat_constant_eof");</code><br />
instead of<br />
<code>pragma Import (C, c_constant_EOF);</code></p>
<p>[via <a href="http://coding.derkeiler.com/Archive/Ada/comp.lang.ada/2004-08/0296.html">Usenet</a>]</p>
]]></content:encoded>
			<wfw:commentRss>http://kirjoittaessani.de/2010/11/26/end-of-file/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kosmisch</title>
		<link>http://kirjoittaessani.de/2010/06/30/kosmisch/</link>
		<comments>http://kirjoittaessani.de/2010/06/30/kosmisch/#comments</comments>
		<pubDate>Wed, 30 Jun 2010 20:13:38 +0000</pubDate>
		<dc:creator>kirjoittaessani</dc:creator>
		<br />
<b>Warning</b>:  Parameter 1 to polyglot_get_the_tags() expected to be a reference, value given in <b>/usr/www/users/kirjoi/wp-includes/plugin.php</b> on line <b>166</b><br />
		<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://kirjoittaessani.de/?p=1999</guid>
		<description><![CDATA[When your computer suddenly does funny things, Cosmic Rays may be at the heart of the matter. At least, that is what Nelson Elhage at the Ksplice blog suspects. Personally, I would wager more on defective RAM. Still, Nelson&#8217;s debugging ist first class, and his post well worth reading.]]></description>
			<content:encoded><![CDATA[<p>When your computer suddenly does funny things, <em><a href="http://blog.ksplice.com/2010/06/attack-of-the-cosmic-rays/">Cosmic Rays</a></em> may be at the heart of the matter. At least, that is what Nelson Elhage at the Ksplice blog suspects. Personally, I would wager more on defective RAM. Still, Nelson&#8217;s debugging ist first class, and his post well worth reading.</p>
]]></content:encoded>
			<wfw:commentRss>http://kirjoittaessani.de/2010/06/30/kosmisch/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Chocolate Chips and Nut Ice</title>
		<link>http://kirjoittaessani.de/2010/01/09/einmal-stracciatella-und-nus-bitte/</link>
		<comments>http://kirjoittaessani.de/2010/01/09/einmal-stracciatella-und-nus-bitte/#comments</comments>
		<pubDate>Sat, 09 Jan 2010 00:06:36 +0000</pubDate>
		<dc:creator>kirjoittaessani</dc:creator>
		<br />
<b>Warning</b>:  Parameter 1 to polyglot_get_the_tags() expected to be a reference, value given in <b>/usr/www/users/kirjoi/wp-includes/plugin.php</b> on line <b>166</b><br />
		<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://kirjoittaessani.de/?p=1900</guid>
		<description><![CDATA[Dumb Thoughts Whenever I enter our company&#8217;s precincts these days, I am reminded of ice cream: a packed layer of snow, sprinkled with dark grit, looks just like chocolate chip ice cream; a thin layer of slightly dirty snow on top has more or less the colour of nut ice cream. On Music Never mind. [...]]]></description>
			<content:encoded><![CDATA[<h4>Dumb Thoughts</h4>
<p>Whenever I enter our company&#8217;s precincts these days, I am reminded of ice cream: a packed layer of snow, sprinkled with dark grit, looks just like chocolate chip ice cream; a thin layer of slightly dirty snow on top has more or less the colour of nut ice cream.</p>
<h4>On Music</h4>
<p>Never mind. I meant to tell you something totally different. It is about iTunes, the program I use to listen to music, and to keep my music library in order (and for a podcast or two). I have not yet bought anything from the iTMS, and nowadays, my iPod is used but rarely. So, I could just as well use a different program. On the other hand, iTunes works very well, it is integrated into the OS (on the Mac, that is), and I do not know of any real alternative.[<a href="http://kirjoittaessani.de/2010/01/09/einmal-stracciatella-und-nus-bitte/#footnote_0_1900" id="identifier_0_1900" class="footnote-link footnote-identifier-link" title="Again: on the Mac. The situation may be different for other operating systems.">1</a>]</p>
<h4>Out of tune</h4>
<p>Nevertheless, there are some things I do not like. Mostly, these are minor points. For example, you can change the toolbar[<a href="http://kirjoittaessani.de/2010/01/09/einmal-stracciatella-und-nus-bitte/#footnote_1_1900" id="identifier_1_1900" class="footnote-link footnote-identifier-link" title="That is, the upper part of a window, where you will find icons serving as shortcuts to important commands.">2</a>] to suit you likings in almost every little utility; this is functionality provided by the operating system, so application programmers do not have to work too hard to include this in their program. Not so in iTunes. Or take Smart Playlists[<a href="http://kirjoittaessani.de/2010/01/09/einmal-stracciatella-und-nus-bitte/#footnote_2_1900" id="identifier_2_1900" class="footnote-link footnote-identifier-link" title="Automatically compiled, rule-based collections of music.">3</a>]: You can combine several criteria by either <em>and</em> or <em>or</em>, but not by both[<a href="http://kirjoittaessani.de/2010/01/09/einmal-stracciatella-und-nus-bitte/#footnote_3_1900" id="identifier_3_1900" class="footnote-link footnote-identifier-link" title="Say, I cannot select all titles I like especially well and that are either from the 70s  or belong to the folk genre.">4</a>]. It is possible to work around this problem[<a href="http://kirjoittaessani.de/2010/01/09/einmal-stracciatella-und-nus-bitte/#footnote_4_1900" id="identifier_4_1900" class="footnote-link footnote-identifier-link" title="Apple Mail does it, too.">5</a>] by combining several Smart Playlists.</p>
<h4>Rated</h4>
<p>Two points are, however, a bit bigger: the way iTunes works with albums, and with ratings.<br />
iTunes&#8217; ratings are quite simple &#8212; and that is the reason it looks a bit slapped-on to me: You can rate each track with one to five stars. These will be shown in your track lists, and you can use them in Smart Playlists[<a href="http://kirjoittaessani.de/2010/01/09/einmal-stracciatella-und-nus-bitte/#footnote_5_1900" id="identifier_5_1900" class="footnote-link footnote-identifier-link" title="For example, you could create a list of all tracks with four or more stars.">6</a>]. That is about it. Wait, there is something else: when rating a complete album, the stars are copied to all the album&#8217;s (unrated) tracks. They will be shown as outlines to remind you that the track as such has not been rated. Likewise, an album will be rated from the combined ratings of its tracks.[<a href="http://kirjoittaessani.de/2010/01/09/einmal-stracciatella-und-nus-bitte/#footnote_6_1900" id="identifier_6_1900" class="footnote-link footnote-identifier-link" title="Unless you have explicitly rated the album already.">7</a>].</p>
<p>So far, so good. Such a simplistic rating seems to me to belong to the 90s[<a href="http://kirjoittaessani.de/2010/01/09/einmal-stracciatella-und-nus-bitte/#footnote_7_1900" id="identifier_7_1900" class="footnote-link footnote-identifier-link" title="I am tempted to say: to last century.">8</a>]. My average rating is slightly better than four &#8212; a prime example of grade creep. This is where I would like to see something completely new. I do not know exactly how it should work; however, the fundamental idea is to take away the need to give absolute ratings. Instead, one could for instance perform relative ratings between two tracks; the application would then calculate absolute ratings for all titles. Or maybe the rating is calculated incrementally, and you rate it up and down each time you listen to a track.[<a href="http://kirjoittaessani.de/2010/01/09/einmal-stracciatella-und-nus-bitte/#footnote_8_1900" id="identifier_8_1900" class="footnote-link footnote-identifier-link" title="I may have been less than clear: a new track is given an average rating, say, 3. Once I have listened to it, I think it is better than that, and iTunes increases its rating to 3.5 or so. After listening for the second time, I still think it is underrated, so it increases to 3.8 &amp;#8212; and so weiter in smaller and smaller steps.">9</a>]. Or maybe there is a totally different idea. Some engineer is bound to have a great idea.[<a href="http://kirjoittaessani.de/2010/01/09/einmal-stracciatella-und-nus-bitte/#footnote_9_1900" id="identifier_9_1900" class="footnote-link footnote-identifier-link" title="I have added something to the wish list:
What I would like to see in a future iTunes version is a truly innovative rating system. Instead of assigning a fixed number of stars per title, something that evolves as I build up my library and listen to music would be great.
For example, once I have assigned preliminary stars to a new title, iTunes might allow me to compare it to other titles with a similar rating (say, while listening to the track). iTunes could then adjust its rating accordingly. Globally adjusting ratings in order to use the full spectrum of one to five stars might also be useful. Currently, the average rating in my library is slightly above four stars, however it is hard to correct this manually.
">10</a>]</p>
<h4>Albus, -a, -um</h4>
<p>Now, I have to admit I am pretty old-fashioned. Since mp3 and similar formats have been accepted, the music business seems to have shifted toward single tracks.[<a href="http://kirjoittaessani.de/2010/01/09/einmal-stracciatella-und-nus-bitte/#footnote_10_1900" id="identifier_10_1900" class="footnote-link footnote-identifier-link" title="Except for concerts, that is.">11</a>] Albums are more or less dead.</p>
<p>Well, not for me. I still like to listen to whole records: the tracks belong together, forming a whole that is more than its parts, and sometimes, they even tell a story.[<a href="http://kirjoittaessani.de/2010/01/09/einmal-stracciatella-und-nus-bitte/#footnote_11_1900" id="identifier_11_1900" class="footnote-link footnote-identifier-link" title="And I like vinyl. But the drive does not fit into my Mac. Sob.">12</a>].</p>
<p>Fortunately, albums are not totally gone: iTunes will group tracks by album, putting the cover art next to the list of tracks. You can also instruct shuffle mode to play whole records at a time rather than single tracks. Finally, there is the indirect rating system I mentioned above.</p>
<p>However, I think there is still much room for improvement. For instance, I like to use Smart Playlists, to look for highly rated tracks, of for ones I have not listened to for a while. Sometimes, only isolated tracks from various albums will be collected in this way: I might have stopped listening in the middle of an album last week, so its first tracks are two weeks more recent than the last ones; or maybe, I have rated several tracks differently even though they belong to the same record, and now only a few can be found on my five-star list.</p>
<p>I would really like Smart Playlists to work better with albums: wouldn&#8217;t it be great to have a list of albums collecting dust rather than just isolated tracks?</p>
<p>[Edit: English]</p>
<ol class="footnotes"><li id="footnote_0_1900" class="footnote">Again: on the Mac. The situation may be different for other operating systems.</li><li id="footnote_1_1900" class="footnote">That is, the upper part of a window, where you will find icons serving as shortcuts to important commands.</li><li id="footnote_2_1900" class="footnote">Automatically compiled, rule-based collections of music.</li><li id="footnote_3_1900" class="footnote">Say, I cannot select all titles I like especially well <em>and</em> that are either from the 70s  <em>or</em> belong to the folk genre.</li><li id="footnote_4_1900" class="footnote">Apple Mail does it, too.</li><li id="footnote_5_1900" class="footnote">For example, you could create a list of all tracks with four or more stars.</li><li id="footnote_6_1900" class="footnote">Unless you have explicitly rated the album already.</li><li id="footnote_7_1900" class="footnote">I am tempted to say: to last century.</li><li id="footnote_8_1900" class="footnote">I may have been less than clear: a new track is given an average rating, say, 3. Once I have listened to it, I think <em>it is better than that</em>, and iTunes increases its rating to 3.5 or so. After listening for the second time, I still think it is underrated, so it increases to 3.8 &#8212; and so weiter in smaller and smaller steps.</li><li id="footnote_9_1900" class="footnote">I have added something to the <a href="http://www.apple.com/feedback/itunesapp.html">wish list</a>:</p>
<blockquote><p>What I would like to see in a future iTunes version is a truly innovative rating system. Instead of assigning a fixed number of stars per title, something that evolves as I build up my library and listen to music would be great.</p>
<p>For example, once I have assigned preliminary stars to a new title, iTunes might allow me to compare it to other titles with a similar rating (say, while listening to the track). iTunes could then adjust its rating accordingly. Globally adjusting ratings in order to use the full spectrum of one to five stars might also be useful. Currently, the average rating in my library is slightly above four stars, however it is hard to correct this manually.</p></blockquote>
<p></li><li id="footnote_10_1900" class="footnote">Except for concerts, that is.</li><li id="footnote_11_1900" class="footnote">And I like vinyl. But the drive does not fit into my Mac. Sob.</li></ol>]]></content:encoded>
			<wfw:commentRss>http://kirjoittaessani.de/2010/01/09/einmal-stracciatella-und-nus-bitte/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

