<?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>Sascha Hlusiak</title>
	<atom:link href="http://www.saschahlusiak.de/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.saschahlusiak.de</link>
	<description>what once was lost</description>
	<lastBuildDate>Fri, 10 May 2013 13:07:01 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>In-App Donations in Freebloks 3D</title>
		<link>http://www.saschahlusiak.de/2013/05/in-app-donations-in-freebloks-3d/</link>
		<comments>http://www.saschahlusiak.de/2013/05/in-app-donations-in-freebloks-3d/#comments</comments>
		<pubDate>Sun, 05 May 2013 02:35:25 +0000</pubDate>
		<dc:creator>Sascha</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[develop]]></category>
		<category><![CDATA[freebloks]]></category>
		<category><![CDATA[github]]></category>

		<guid isPermaLink="false">http://www.saschahlusiak.de/?p=1453</guid>
		<description><![CDATA[Freebloks 3D for Android is the Android port of the PC version of Freebloks 3D for Windows and Linux. Like the PC version, the Android port is completely free software, available for free in the Google Play Store and the &#8230; <a href="http://www.saschahlusiak.de/2013/05/in-app-donations-in-freebloks-3d/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><a href="https://play.google.com/store/apps/details?id=de.saschahlusiak.freebloks">Freebloks 3D for Android</a> is the Android port of the PC version of <a title="Freebloks 3D" href="http://www.saschahlusiak.de/freebloks-3d/">Freebloks 3D</a> for Windows and Linux. Like the PC version, the Android port is completely free software, available for free in the <a href="https://play.google.com/store/apps/details?id=de.saschahlusiak.freebloks">Google Play Store</a> and the source code being available on <a href="https://github.com/shlusiak/Freebloks-Android">GitHub</a>.</p>
<p>I strongly believe in Open Source software and that it can help to make the world a better place by making knowledge and power available to everyone. While many hours of work went into the Android port, I feel good to completely open the software for others to study, to modify or contribute. A lot of my knowledge and skills come from the study of others work and my contribution to open source software is my attempt to give something back in return.</p>
<p>If you like Freebloks, please be encouraged to contribute, send be feedback, work on the code or support the developers with a <strong>donation</strong>. The recent update makes in-app donations available for users. These in-app items acknowledge the work of the developers and are completely voluntary. <strong>Freebloks will always be free but relies on your contribution!</strong></p>
<p>So if you think, the game has some value for you, please consider a donation of your choice.</p>
<p style="text-align: center;"><a href="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/05/Screenshot_2013-05-05-10-01-35.png"><img class="aligncenter  wp-image-1455" alt="Screenshot_2013-05-05-10-01-35" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/05/Screenshot_2013-05-05-10-01-35-576x1024.png" width="400" height="710" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.saschahlusiak.de/2013/05/in-app-donations-in-freebloks-3d/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dropshadows for Freebloks for Android</title>
		<link>http://www.saschahlusiak.de/2013/04/dropshadows-for-freebloks-for-android/</link>
		<comments>http://www.saschahlusiak.de/2013/04/dropshadows-for-freebloks-for-android/#comments</comments>
		<pubDate>Fri, 19 Apr 2013 03:10:36 +0000</pubDate>
		<dc:creator>Sascha</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[CGI]]></category>
		<category><![CDATA[freebloks]]></category>
		<category><![CDATA[game]]></category>

		<guid isPermaLink="false">http://www.saschahlusiak.de/?p=1447</guid>
		<description><![CDATA[The latest update of Freebloks 3D for Android adds nice drop shadows to falling stones. Instead of &#8220;correct&#8221; shadows using shadow volumes in a stencil buffer, the android version renders a pseudo drop shadow texture on the board. The shadows &#8230; <a href="http://www.saschahlusiak.de/2013/04/dropshadows-for-freebloks-for-android/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>The latest update of <a title="Freebloks 3D in the Google Play Store" href="https://play.google.com/store/apps/details?id=de.saschahlusiak.freebloks">Freebloks 3D for Android</a> adds nice drop shadows to falling stones. Instead of &#8220;correct&#8221; shadows using shadow volumes in a stencil buffer, the android version renders a pseudo drop shadow texture on the board. The shadows are not always correct, but it is much easier to add individual tinting, alpha or scale effects, depending on the distance of the stones. This adds a more realistic look and is easy on the hardware, because there is no need to recalculate the shadow volume each frame.</p>
<p style="text-align: center;"><a href="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/04/Screenshot_2013-04-18-12-01-57.png"><img class="aligncenter size-large wp-image-1448" alt="Screenshot_2013-04-18-12-01-57" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/04/Screenshot_2013-04-18-12-01-57-576x1024.png" width="500" height="888" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.saschahlusiak.de/2013/04/dropshadows-for-freebloks-for-android/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ein Tag mit Han</title>
		<link>http://www.saschahlusiak.de/2013/02/ein-tag-mit-han/</link>
		<comments>http://www.saschahlusiak.de/2013/02/ein-tag-mit-han/#comments</comments>
		<pubDate>Wed, 20 Feb 2013 08:06:28 +0000</pubDate>
		<dc:creator>Sascha</dc:creator>
				<category><![CDATA[Australien]]></category>

		<guid isPermaLink="false">http://www.saschahlusiak.de/?p=1394</guid>
		<description><![CDATA[Heute war ich mit Han unterwegs. Er ist mein CouchSurfing Host und er hat sich angeboten, mir einen Tag die Stadt zu zeigen, wenn ich mit ihm Deutsch rede. Leider hat sich das ergeben, 10 Minuten nachdem ich mein Hostel &#8230; <a href="http://www.saschahlusiak.de/2013/02/ein-tag-mit-han/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Heute war ich mit Han unterwegs. Er ist mein CouchSurfing Host und er hat sich angeboten, mir einen Tag die Stadt zu zeigen, wenn ich mit ihm Deutsch rede. Leider hat sich das ergeben, 10 Minuten nachdem ich mein Hostel gebucht hatte, sodass ich erstmal nicht bei ihm übernachte, aber die Möglichkeit, einen &#8220;local&#8221; zu treffen, nehme ich doch gerne an. Er hat Chinesische Wurzeln aber ist in Malaysia geboren, er gibt Gesangs- und Musikunterricht und singt selber in Opern mit. Dadurch kann er seine Zeit natürlich frei einteilen und konnte mir einen ganzen Tag widmen.</p>
<p>Zuerst ging es zu den <em>Batu Caves</em> im Norden von Kuala Lumpur, eine sehr beeindruckende, buddhistische Felsenhöhle und beliebtes Ziel von Gläubigen und Reisenden. Nach Rundführungen durch die Stadt, zu seinem Lieblingssee, Einkaufsmeilen, Straßencafes und einem Chinesischen Tempel, ging es abends dann zu den Petronas Twintowers, dem Wahrzeichen der Stadt. Gerade abends ist das unglaublich beeindruckend. Wieder erschlagen hat mich die &#8220;digital mall&#8221;, in der es allerhand Elektronikware gibt, allerdings wieder im absoluten Überfluß. Jedes Geschäft bietet nahezu dieselben Geräte an, zum gleichen Preis, sodass man sich gar nicht für eins entscheiden kann. Preislich sind die Geräte leider nicht mehr billiger als in Deutschland und ein gutes Gefühl, teure Elektronikware am Straßenrand zu kaufen, habe ich auch nicht. Hätte mir gerne eine bessere Kamera gekauft, aber es gibt keinen Grund, das in Malaysia zu tun. Steuern kriegt man bei der Ausreise auch nicht mehr zurück.</p>
<p>Es ist unglaublich, wieviele Religionen, Kulturen und Sprachen in Eintracht nebeneinander existieren. Malaysia ist ein riesiger Mix aus angrenzenden Asiatischen Kulturen, als einziger gemeinsamer Nenner bleibt meist nur Englisch übrig, das jeder mindestens grundlegend beherrscht.</p>
<p>Das KLCC, Kuala Lumpur Convention Center, ist die Touristenattraktion überhaupt, mit den Petronas Twintowers, der Shoppingmall und dem angrenzenden Park mit Springbrunnen dahinter. Inmitten des angrenzenden Chaos, Drecks und nervenden Straßenhändlern ist das wie eine Insel und fühlt sich sofort nach westlicher Kultur an, mit Toiletten, wie man sie gewohnt ist. Auf der Straße sind die öffentlichen Toiletten nämlich oft ohne Wasserspülung und statt Toilettenpapier gibt es nur einen Wasserschlauch. Man hat zwar nicht das Gefühl, als könne man sich irgendwie darüber beschweren, aber man sucht da doch lieber das nächste Einkaufszentrum. <img src='http://www.saschahlusiak.de/wp/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>

<a href='http://www.saschahlusiak.de/2013/02/ein-tag-mit-han/20130219_113422/' title='20130219_113422'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/02/20130219_113422-150x150.jpg" class="attachment-thumbnail" alt="20130219_113422" /></a>
<a href='http://www.saschahlusiak.de/2013/02/ein-tag-mit-han/20130219_113642/' title='20130219_113642'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/02/20130219_113642-150x150.jpg" class="attachment-thumbnail" alt="20130219_113642" /></a>
<a href='http://www.saschahlusiak.de/2013/02/ein-tag-mit-han/20130219_113808/' title='20130219_113808'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/02/20130219_113808-150x150.jpg" class="attachment-thumbnail" alt="20130219_113808" /></a>
<a href='http://www.saschahlusiak.de/2013/02/ein-tag-mit-han/20130219_114057/' title='20130219_114057'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/02/20130219_114057-150x150.jpg" class="attachment-thumbnail" alt="20130219_114057" /></a>
<a href='http://www.saschahlusiak.de/2013/02/ein-tag-mit-han/20130219_114308/' title='20130219_114308'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/02/20130219_114308-150x150.jpg" class="attachment-thumbnail" alt="20130219_114308" /></a>
<a href='http://www.saschahlusiak.de/2013/02/ein-tag-mit-han/20130219_114644/' title='20130219_114644'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/02/20130219_114644-150x150.jpg" class="attachment-thumbnail" alt="20130219_114644" /></a>
<a href='http://www.saschahlusiak.de/2013/02/ein-tag-mit-han/20130219_114830/' title='20130219_114830'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/02/20130219_114830-150x150.jpg" class="attachment-thumbnail" alt="20130219_114830" /></a>
<a href='http://www.saschahlusiak.de/2013/02/ein-tag-mit-han/20130219_115340/' title='20130219_115340'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/02/20130219_115340-150x150.jpg" class="attachment-thumbnail" alt="20130219_115340" /></a>
<a href='http://www.saschahlusiak.de/2013/02/ein-tag-mit-han/20130219_115844/' title='20130219_115844'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/02/20130219_115844-150x150.jpg" class="attachment-thumbnail" alt="20130219_115844" /></a>
<a href='http://www.saschahlusiak.de/2013/02/ein-tag-mit-han/20130219_120359/' title='20130219_120359'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/02/20130219_120359-150x150.jpg" class="attachment-thumbnail" alt="20130219_120359" /></a>
<a href='http://www.saschahlusiak.de/2013/02/ein-tag-mit-han/20130219_121156/' title='20130219_121156'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/02/20130219_121156-150x150.jpg" class="attachment-thumbnail" alt="20130219_121156" /></a>
<a href='http://www.saschahlusiak.de/2013/02/ein-tag-mit-han/20130219_121514/' title='20130219_121514'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/02/20130219_121514-150x150.jpg" class="attachment-thumbnail" alt="20130219_121514" /></a>
<a href='http://www.saschahlusiak.de/2013/02/ein-tag-mit-han/20130219_124913/' title='20130219_124913'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/02/20130219_124913-150x150.jpg" class="attachment-thumbnail" alt="20130219_124913" /></a>
<a href='http://www.saschahlusiak.de/2013/02/ein-tag-mit-han/20130219_125951/' title='20130219_125951'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/02/20130219_125951-150x150.jpg" class="attachment-thumbnail" alt="20130219_125951" /></a>
<a href='http://www.saschahlusiak.de/2013/02/ein-tag-mit-han/20130219_131345/' title='20130219_131345'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/02/20130219_131345-150x150.jpg" class="attachment-thumbnail" alt="20130219_131345" /></a>
<a href='http://www.saschahlusiak.de/2013/02/ein-tag-mit-han/20130219_131506/' title='20130219_131506'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/02/20130219_131506-150x150.jpg" class="attachment-thumbnail" alt="20130219_131506" /></a>
<a href='http://www.saschahlusiak.de/2013/02/ein-tag-mit-han/20130219_132316/' title='20130219_132316'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/02/20130219_132316-150x150.jpg" class="attachment-thumbnail" alt="20130219_132316" /></a>
<a href='http://www.saschahlusiak.de/2013/02/ein-tag-mit-han/20130219_132700/' title='20130219_132700'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/02/20130219_132700-150x150.jpg" class="attachment-thumbnail" alt="20130219_132700" /></a>
<a href='http://www.saschahlusiak.de/2013/02/ein-tag-mit-han/20130219_140519/' title='20130219_140519'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/02/20130219_140519-150x150.jpg" class="attachment-thumbnail" alt="20130219_140519" /></a>
<a href='http://www.saschahlusiak.de/2013/02/ein-tag-mit-han/20130219_151725/' title='20130219_151725'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/02/20130219_151725-150x150.jpg" class="attachment-thumbnail" alt="20130219_151725" /></a>
<a href='http://www.saschahlusiak.de/2013/02/ein-tag-mit-han/20130219_153709/' title='20130219_153709'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/02/20130219_153709-150x150.jpg" class="attachment-thumbnail" alt="20130219_153709" /></a>
<a href='http://www.saschahlusiak.de/2013/02/ein-tag-mit-han/20130219_153850/' title='20130219_153850'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/02/20130219_153850-150x150.jpg" class="attachment-thumbnail" alt="20130219_153850" /></a>
<a href='http://www.saschahlusiak.de/2013/02/ein-tag-mit-han/20130219_164200/' title='20130219_164200'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/02/20130219_164200-150x150.jpg" class="attachment-thumbnail" alt="20130219_164200" /></a>
<a href='http://www.saschahlusiak.de/2013/02/ein-tag-mit-han/20130219_164635/' title='20130219_164635'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/02/20130219_164635-150x150.jpg" class="attachment-thumbnail" alt="20130219_164635" /></a>
<a href='http://www.saschahlusiak.de/2013/02/ein-tag-mit-han/20130219_164819/' title='20130219_164819'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/02/20130219_164819-150x150.jpg" class="attachment-thumbnail" alt="20130219_164819" /></a>
<a href='http://www.saschahlusiak.de/2013/02/ein-tag-mit-han/20130219_170439/' title='20130219_170439'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/02/20130219_170439-150x150.jpg" class="attachment-thumbnail" alt="20130219_170439" /></a>
<a href='http://www.saschahlusiak.de/2013/02/ein-tag-mit-han/20130219_183459/' title='20130219_183459'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/02/20130219_183459-150x150.jpg" class="attachment-thumbnail" alt="20130219_183459" /></a>
<a href='http://www.saschahlusiak.de/2013/02/ein-tag-mit-han/20130219_192044/' title='20130219_192044'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/02/20130219_192044-150x150.jpg" class="attachment-thumbnail" alt="20130219_192044" /></a>
<a href='http://www.saschahlusiak.de/2013/02/ein-tag-mit-han/20130219_192150/' title='20130219_192150'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/02/20130219_192150-150x150.jpg" class="attachment-thumbnail" alt="20130219_192150" /></a>
<a href='http://www.saschahlusiak.de/2013/02/ein-tag-mit-han/20130219_192428/' title='20130219_192428'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/02/20130219_192428-150x150.jpg" class="attachment-thumbnail" alt="20130219_192428" /></a>
<a href='http://www.saschahlusiak.de/2013/02/ein-tag-mit-han/20130219_192723/' title='20130219_192723'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/02/20130219_192723-150x150.jpg" class="attachment-thumbnail" alt="20130219_192723" /></a>
<a href='http://www.saschahlusiak.de/2013/02/ein-tag-mit-han/20130219_192943/' title='20130219_192943'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/02/20130219_192943-150x150.jpg" class="attachment-thumbnail" alt="20130219_192943" /></a>
<a href='http://www.saschahlusiak.de/2013/02/ein-tag-mit-han/20130219_195831/' title='20130219_195831'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/02/20130219_195831-150x150.jpg" class="attachment-thumbnail" alt="20130219_195831" /></a>
<a href='http://www.saschahlusiak.de/2013/02/ein-tag-mit-han/20130219_200314/' title='20130219_200314'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/02/20130219_200314-150x150.jpg" class="attachment-thumbnail" alt="20130219_200314" /></a>
<a href='http://www.saschahlusiak.de/2013/02/ein-tag-mit-han/20130219_201039/' title='20130219_201039'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/02/20130219_201039-150x150.jpg" class="attachment-thumbnail" alt="20130219_201039" /></a>
<a href='http://www.saschahlusiak.de/2013/02/ein-tag-mit-han/20130219_201315/' title='20130219_201315'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/02/20130219_201315-150x150.jpg" class="attachment-thumbnail" alt="20130219_201315" /></a>
<a href='http://www.saschahlusiak.de/2013/02/ein-tag-mit-han/20130219_201731/' title='20130219_201731'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/02/20130219_201731-150x150.jpg" class="attachment-thumbnail" alt="20130219_201731" /></a>
<a href='http://www.saschahlusiak.de/2013/02/ein-tag-mit-han/20130219_202003/' title='20130219_202003'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/02/20130219_202003-150x150.jpg" class="attachment-thumbnail" alt="20130219_202003" /></a>
<a href='http://www.saschahlusiak.de/2013/02/ein-tag-mit-han/20130219_202934/' title='20130219_202934'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/02/20130219_202934-150x150.jpg" class="attachment-thumbnail" alt="20130219_202934" /></a>
<a href='http://www.saschahlusiak.de/2013/02/ein-tag-mit-han/20130219_203459/' title='20130219_203459'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/02/20130219_203459-150x150.jpg" class="attachment-thumbnail" alt="20130219_203459" /></a>
<a href='http://www.saschahlusiak.de/2013/02/ein-tag-mit-han/20130219_210457/' title='20130219_210457'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/02/20130219_210457-150x150.jpg" class="attachment-thumbnail" alt="20130219_210457" /></a>
<a href='http://www.saschahlusiak.de/2013/02/ein-tag-mit-han/20130219_210946/' title='20130219_210946'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/02/20130219_210946-150x150.jpg" class="attachment-thumbnail" alt="20130219_210946" /></a>
<a href='http://www.saschahlusiak.de/2013/02/ein-tag-mit-han/20130219_211439/' title='20130219_211439'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/02/20130219_211439-150x150.jpg" class="attachment-thumbnail" alt="20130219_211439" /></a>
<a href='http://www.saschahlusiak.de/2013/02/ein-tag-mit-han/20130219_215513/' title='20130219_215513'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/02/20130219_215513-150x150.jpg" class="attachment-thumbnail" alt="20130219_215513" /></a>

]]></content:encoded>
			<wfw:commentRss>http://www.saschahlusiak.de/2013/02/ein-tag-mit-han/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mehr von Kuala Lumpur</title>
		<link>http://www.saschahlusiak.de/2013/02/mehr-von-kuala-lumpur/</link>
		<comments>http://www.saschahlusiak.de/2013/02/mehr-von-kuala-lumpur/#comments</comments>
		<pubDate>Tue, 19 Feb 2013 08:05:02 +0000</pubDate>
		<dc:creator>Sascha</dc:creator>
				<category><![CDATA[Australien]]></category>

		<guid isPermaLink="false">http://www.saschahlusiak.de/?p=1366</guid>
		<description><![CDATA[Im Hostel findet man schnell Anschluss, weil alles international ist. Das Hostel ist zwar sehr klein und primitiv, die Qualität und Sauberkeit dafür gut. Macht nichts, wenn die Dusche nur kalt ist und es nur ein WC pro Geschlecht gibt. &#8230; <a href="http://www.saschahlusiak.de/2013/02/mehr-von-kuala-lumpur/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Im Hostel findet man schnell Anschluss, weil alles international ist. Das Hostel ist zwar sehr klein und primitiv, die Qualität und Sauberkeit dafür gut. Macht nichts, wenn die Dusche nur kalt ist und es nur ein WC pro Geschlecht gibt. Dafür gibt es freies (sehr langsames) WLan und kostenloses einfaches Frühstück, aber es mangelt an nichts.</p>
<p>Mit Yohei, einem Japaner aus meinem Zimmer, hab ich mir die Stadt angeschaut, die Einkaufsstrassen und den riesigen botanischen Garten. Das Essen ist super lecker und nie so viel, dass man satt ist, aber so billig, dass man einfach öfters am Tag eine Kleinigkeit isst. Man isst einfach, wenn man Hunger hat, das sei gesünder, als 3 volle Mahlzeiten am Tag.</p>
<p>Direkt neben dem Hostel in Chinatown ist die Petaling Street, eine bekannte Marktstrasse mit Straßenhändlern. Mich hat mehrfach gewundert, dass eine Warengruppe fast immer von vielen Händlern gleichzeitig am selben Ort angeboten werden, also sehr viele Essensläden nebeneinander, dann mehrere Schuhhändler, Taschenhändler oder Straßenhändler, die Elektronikware verkaufen, alle das gleiche. Natürlich reihen sich gelegentlich auch Massagestudios aneinander an. Wie ich erfahren habe, kauft der Malaysier nur dann gerne ein, wenn er das Gefühl hat, feilschen zu können und wenn er das Gefühl hat, Kompetenz versammelt zu haben. Deshalb kann ein Laden seine Waren nicht loswerden, wenn er nicht die Konkurrenz direkt daneben hat. Daraus ergibt sich natürlich ein reges Handeln und buhlen um den Kunden, die Verkäufer kommen immer auf einen zu, um ihn als Kunden zu gewinnen. Da aber die Preise meist alle reguliert sind, ist die angebotene Ware überall gleich und es spielt wieder keine Rolle wo man kauft. Dann nervt das angebliche Handeln nur, weil man es eh nicht billiger kriegt.</p>
<p>Im botanischen Garten laufen wilde Affen rum, das ist aber leider das einzige Wildlife, das ich in Malaysia gesehen habe. Bunte Vögel gibt es außerhalb des <em>KL Birdparks</em> nicht und auch keine anderen wilde Tiere.</p>
<p>Ich habe für Mittwoch ein Busticket nach <em>Penang</em> gebucht, eine Insel weiter nördlich, die mir von vielen Leuten empfohlen wurde. Die Fahrt dauert 4 Stunden und kostet 35 Ringgit, ca. 8,50 EUR. Dieselbe Fahrt wird von ca. 20 Busgesellschaften angeboten, für exakt denselben Preis, wahrscheinlich reguliert, um das Feilschen und Abzockerei einzudämmen. Schon am Eingang vom Busbahnhof laufen deshalb &#8220;Headhunter&#8221; der einzelnen Gesellschaften herum, um die Leute zu &#8220;fangen&#8221;, da sich keine Gesellschaft mehr abheben kann. Zwar versprechen einem alle Rabatt, weil ich es bin, aber bekommen tut man den natürlich nicht. Geht schon heiß her. Statt eines Tickets kriegt man für sein Geld komischerweise nur eine Quittung, für die man am Reisetag dann das Ticket bekommt.</p>
<p>Die Restaurants sehen immer so unvertrauenswürdig aus, so notdürftig platziert und nicht sauber oder gepflegt, aber den Anspruch darf man auch nicht haben und es gibt eigentlich nichts, worüber man sich beschweren muss. <img src='http://www.saschahlusiak.de/wp/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>

<a href='http://www.saschahlusiak.de/2013/02/mehr-von-kuala-lumpur/20130218_113325/' title='20130218_113325'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/03/20130218_113325-150x150.jpg" class="attachment-thumbnail" alt="20130218_113325" /></a>
<a href='http://www.saschahlusiak.de/2013/02/mehr-von-kuala-lumpur/20130218_113556/' title='20130218_113556'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/03/20130218_113556-150x150.jpg" class="attachment-thumbnail" alt="20130218_113556" /></a>
<a href='http://www.saschahlusiak.de/2013/02/mehr-von-kuala-lumpur/20130218_114119/' title='20130218_114119'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/03/20130218_114119-150x150.jpg" class="attachment-thumbnail" alt="20130218_114119" /></a>
<a href='http://www.saschahlusiak.de/2013/02/mehr-von-kuala-lumpur/20130218_123520/' title='20130218_123520'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/03/20130218_123520-150x150.jpg" class="attachment-thumbnail" alt="20130218_123520" /></a>
<a href='http://www.saschahlusiak.de/2013/02/mehr-von-kuala-lumpur/20130218_143636/' title='20130218_143636'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/03/20130218_143636-150x150.jpg" class="attachment-thumbnail" alt="20130218_143636" /></a>
<a href='http://www.saschahlusiak.de/2013/02/mehr-von-kuala-lumpur/20130218_143915/' title='20130218_143915'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/03/20130218_143915-150x150.jpg" class="attachment-thumbnail" alt="20130218_143915" /></a>
<a href='http://www.saschahlusiak.de/2013/02/mehr-von-kuala-lumpur/20130218_175405/' title='20130218_175405'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/03/20130218_175405-150x150.jpg" class="attachment-thumbnail" alt="20130218_175405" /></a>
<a href='http://www.saschahlusiak.de/2013/02/mehr-von-kuala-lumpur/20130218_175819/' title='20130218_175819'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/03/20130218_175819-150x150.jpg" class="attachment-thumbnail" alt="20130218_175819" /></a>
<a href='http://www.saschahlusiak.de/2013/02/mehr-von-kuala-lumpur/20130218_180759/' title='20130218_180759'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/03/20130218_180759-150x150.jpg" class="attachment-thumbnail" alt="20130218_180759" /></a>
<a href='http://www.saschahlusiak.de/2013/02/mehr-von-kuala-lumpur/20130218_182732/' title='20130218_182732'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/03/20130218_182732-150x150.jpg" class="attachment-thumbnail" alt="20130218_182732" /></a>
<a href='http://www.saschahlusiak.de/2013/02/mehr-von-kuala-lumpur/20130218_183120/' title='20130218_183120'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/03/20130218_183120-150x150.jpg" class="attachment-thumbnail" alt="20130218_183120" /></a>
<a href='http://www.saschahlusiak.de/2013/02/mehr-von-kuala-lumpur/20130218_183135/' title='20130218_183135'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/03/20130218_183135-150x150.jpg" class="attachment-thumbnail" alt="20130218_183135" /></a>
<a href='http://www.saschahlusiak.de/2013/02/mehr-von-kuala-lumpur/20130218_183641/' title='20130218_183641'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/03/20130218_183641-150x150.jpg" class="attachment-thumbnail" alt="20130218_183641" /></a>
<a href='http://www.saschahlusiak.de/2013/02/mehr-von-kuala-lumpur/20130218_183700/' title='20130218_183700'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/03/20130218_183700-150x150.jpg" class="attachment-thumbnail" alt="20130218_183700" /></a>
<a href='http://www.saschahlusiak.de/2013/02/mehr-von-kuala-lumpur/20130218_184727/' title='20130218_184727'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/03/20130218_184727-150x150.jpg" class="attachment-thumbnail" alt="20130218_184727" /></a>
<a href='http://www.saschahlusiak.de/2013/02/mehr-von-kuala-lumpur/20130218_185735/' title='20130218_185735'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/03/20130218_185735-150x150.jpg" class="attachment-thumbnail" alt="20130218_185735" /></a>
<a href='http://www.saschahlusiak.de/2013/02/mehr-von-kuala-lumpur/20130218_193418/' title='20130218_193418'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/03/20130218_193418-150x150.jpg" class="attachment-thumbnail" alt="20130218_193418" /></a>
<a href='http://www.saschahlusiak.de/2013/02/mehr-von-kuala-lumpur/20130218_193902/' title='20130218_193902'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/03/20130218_193902-150x150.jpg" class="attachment-thumbnail" alt="20130218_193902" /></a>
<a href='http://www.saschahlusiak.de/2013/02/mehr-von-kuala-lumpur/20130218_194136/' title='20130218_194136'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/03/20130218_194136-150x150.jpg" class="attachment-thumbnail" alt="20130218_194136" /></a>
<a href='http://www.saschahlusiak.de/2013/02/mehr-von-kuala-lumpur/20130218_205517/' title='20130218_205517'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/03/20130218_205517-150x150.jpg" class="attachment-thumbnail" alt="20130218_205517" /></a>
<a href='http://www.saschahlusiak.de/2013/02/mehr-von-kuala-lumpur/20130218_205725/' title='20130218_205725'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/03/20130218_205725-150x150.jpg" class="attachment-thumbnail" alt="20130218_205725" /></a>
<a href='http://www.saschahlusiak.de/2013/02/mehr-von-kuala-lumpur/20130218_205744/' title='20130218_205744'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/03/20130218_205744-150x150.jpg" class="attachment-thumbnail" alt="20130218_205744" /></a>
<a href='http://www.saschahlusiak.de/2013/02/mehr-von-kuala-lumpur/20130218_210444/' title='20130218_210444'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/03/20130218_210444-150x150.jpg" class="attachment-thumbnail" alt="20130218_210444" /></a>

]]></content:encoded>
			<wfw:commentRss>http://www.saschahlusiak.de/2013/02/mehr-von-kuala-lumpur/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Erste Eindrücke von Kuala Lumpur</title>
		<link>http://www.saschahlusiak.de/2013/02/erste-eindrucke-von-kuala-lumpur/</link>
		<comments>http://www.saschahlusiak.de/2013/02/erste-eindrucke-von-kuala-lumpur/#comments</comments>
		<pubDate>Mon, 18 Feb 2013 08:52:54 +0000</pubDate>
		<dc:creator>Sascha</dc:creator>
				<category><![CDATA[Australien]]></category>

		<guid isPermaLink="false">http://www.saschahlusiak.de/?p=1340</guid>
		<description><![CDATA[Ich bin gut in Kuala Lumpur gelandet, um ca. 7:00 Ortszeit und mit dem KLIA Express zur Sentral Station gefahren. Von dort wollte ich zum Hostel laufen, was gar nicht so einfach war, weil es keine ausgeschilderten Fußwege gab und &#8230; <a href="http://www.saschahlusiak.de/2013/02/erste-eindrucke-von-kuala-lumpur/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Ich bin gut in Kuala Lumpur gelandet, um ca. 7:00 Ortszeit und mit dem <em>KLIA Express</em> zur <em>Sentral Station</em> gefahren. Von dort wollte ich zum Hostel laufen, was gar nicht so einfach war, weil es keine ausgeschilderten Fußwege gab und der Bahnhof nur von Highways umgeben ist. Ich musste am Seitenweg auf den großen Highways entlang laufen, um auf weniger befahrene Straßen zu kommen. Der Verkehr ist chaotisch, jeder fährt, wie er will, aber man kann sich auch daran gewöhnen, weil der Verkehr allgemein stockend vorwärts geht. Die Luft ist dadurch nicht die Beste, aber die Stadt ist insgesamt sehr abwechslungsreich, von Jungel und wilden Straßenmärkten zu hightech Gebäuden, wie den <em>Petronas Twin Towers</em>.</p>
<p>Ich bin auf den <em>KL Tower</em> hoch, aber von der Metropole war nicht viel zu sehen, weil die Sicht wegen Smog zu schlecht war. Aber man hat einen Eindruck bekommen, wie zusammengewürfelt und scheinbar ohne Struktur die Stadt gewachsen ist.</p>
<p>Trotz stets 30 Grad und leicht schwüler Luft kann man es gut aushalten, weil der Himmel stets bedeckt ist und es weder viel Regnet noch die Sonne zu stark scheint.</p>
<p>Es gibt natürlich noch nicht viel zu berichten, aber hier sind mal ein paar Fotos.</p>
<p>Am Mittwoch nehme ich einen Bus nach Penang und möchte dort 3 Nächte bleiben. Am Samstag fahre ich zurück nach Kuala Lumpur, denn am Sonntag geht der Flug weiter nach Sydney.</p>

<a href='http://www.saschahlusiak.de/2013/02/erste-eindrucke-von-kuala-lumpur/20130217_021952/' title='20130217_021952'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/02/20130217_021952-150x150.jpg" class="attachment-thumbnail" alt="20130217_021952" /></a>
<a href='http://www.saschahlusiak.de/2013/02/erste-eindrucke-von-kuala-lumpur/20130217_100122/' title='20130217_100122'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/02/20130217_100122-150x150.jpg" class="attachment-thumbnail" alt="20130217_100122" /></a>
<a href='http://www.saschahlusiak.de/2013/02/erste-eindrucke-von-kuala-lumpur/20130217_101542/' title='20130217_101542'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/02/20130217_101542-150x150.jpg" class="attachment-thumbnail" alt="20130217_101542" /></a>
<a href='http://www.saschahlusiak.de/2013/02/erste-eindrucke-von-kuala-lumpur/20130217_101808/' title='20130217_101808'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/02/20130217_101808-150x150.jpg" class="attachment-thumbnail" alt="20130217_101808" /></a>
<a href='http://www.saschahlusiak.de/2013/02/erste-eindrucke-von-kuala-lumpur/20130217_102100/' title='20130217_102100'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/02/20130217_102100-150x150.jpg" class="attachment-thumbnail" alt="20130217_102100" /></a>
<a href='http://www.saschahlusiak.de/2013/02/erste-eindrucke-von-kuala-lumpur/20130217_104106/' title='20130217_104106'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/02/20130217_104106-150x150.jpg" class="attachment-thumbnail" alt="20130217_104106" /></a>
<a href='http://www.saschahlusiak.de/2013/02/erste-eindrucke-von-kuala-lumpur/20130217_110320/' title='20130217_110320'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/02/20130217_110320-150x150.jpg" class="attachment-thumbnail" alt="20130217_110320" /></a>
<a href='http://www.saschahlusiak.de/2013/02/erste-eindrucke-von-kuala-lumpur/20130217_110641/' title='20130217_110641'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/02/20130217_110641-150x150.jpg" class="attachment-thumbnail" alt="20130217_110641" /></a>
<a href='http://www.saschahlusiak.de/2013/02/erste-eindrucke-von-kuala-lumpur/20130217_110641-2/' title='20130217_110641'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/02/20130217_1106411-150x150.jpg" class="attachment-thumbnail" alt="20130217_110641" /></a>
<a href='http://www.saschahlusiak.de/2013/02/erste-eindrucke-von-kuala-lumpur/20130217_123829/' title='20130217_123829'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/02/20130217_123829-150x150.jpg" class="attachment-thumbnail" alt="20130217_123829" /></a>
<a href='http://www.saschahlusiak.de/2013/02/erste-eindrucke-von-kuala-lumpur/20130217_141838/' title='20130217_141838'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/02/20130217_141838-150x150.jpg" class="attachment-thumbnail" alt="20130217_141838" /></a>
<a href='http://www.saschahlusiak.de/2013/02/erste-eindrucke-von-kuala-lumpur/20130217_194301/' title='20130217_194301'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/02/20130217_194301-150x150.jpg" class="attachment-thumbnail" alt="20130217_194301" /></a>
<a href='http://www.saschahlusiak.de/2013/02/erste-eindrucke-von-kuala-lumpur/20130217_023204/' title='20130217_023204'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/02/20130217_023204-150x150.jpg" class="attachment-thumbnail" alt="20130217_023204" /></a>

]]></content:encoded>
			<wfw:commentRss>http://www.saschahlusiak.de/2013/02/erste-eindrucke-von-kuala-lumpur/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Much improved AI speed for Freebloks for Android using jni</title>
		<link>http://www.saschahlusiak.de/2013/02/much-improved-ai-speed-for-freebloks-for-android-using-jni/</link>
		<comments>http://www.saschahlusiak.de/2013/02/much-improved-ai-speed-for-freebloks-for-android-using-jni/#comments</comments>
		<pubDate>Tue, 12 Feb 2013 08:34:36 +0000</pubDate>
		<dc:creator>Sascha</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[develop]]></category>
		<category><![CDATA[freebloks]]></category>
		<category><![CDATA[game]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[opengl]]></category>

		<guid isPermaLink="false">http://www.saschahlusiak.de/?p=1332</guid>
		<description><![CDATA[For the port of Freebloks 3D to Android I rewrote all code from C to Java. While that was working fine and resulted in greatly simplified networking code, the speed of the AI was not so great. It took up &#8230; <a href="http://www.saschahlusiak.de/2013/02/much-improved-ai-speed-for-freebloks-for-android-using-jni/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>For the port of <a title="Freebloks 3D" href="http://www.saschahlusiak.de/freebloks-3d/">Freebloks 3D</a> to Android I rewrote all code from C to Java. While that was working fine and resulted in greatly simplified networking code, the speed of the AI was not so great. It took up to 10 seconds on a fairly powerful SGS 2 for the computer to find a good move.</p>
<p>I was trying to move the CPU intense routines of the AI to C again, using jni as a bridge between Java and C. The simple network routines should stay in Java.</p>
<p>But the transfer of relevant game data to C and back to Java turned out to be very ugly, yet the solution was incredibly simple:</p>
<p>The Freebloks code was always split in two parts, the GUI/client part and the AI/server part, with the client and server always communicating using network sockets. Yes, even the single player version starts a network server and connects to localhost. The original source code always contained a package for running a dedicated server.</p>
<p>It was incredibly easy to copy the dedicated server code into my project, compile the C code with the NDK and connect it to Java with only a single jni call. It was running out of the box, with almost no change of the original C code at all! Since the server is running in a thread started from the native C code, there is no additional jni call neccessary and no data transfers except for the sockets.</p>
<p>The average duration for the AI to calculate a complete game dropped from 87 sec to 28 sec on my SGS 2. The version 0.0.2 in the Google Play Store supports ARMv5, ARMv7 and x86. <a title="Freebloks 3D for Android" href="https://play.google.com/store/apps/details?id=de.saschahlusiak.freebloks">Grab it now</a>! You may also download a free apk file <a href="http://www.saschahlusiak.de/downloads/Freebloks.apk">here</a>.</p>
<p>And please don&#8217;t forget to give feedback.</p>
<p><a href="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/02/Screenshot_2013-02-11-14-27-24.png"><img class="aligncenter size-medium wp-image-1334" alt="Screenshot_2013-02-11-14-27-24" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/02/Screenshot_2013-02-11-14-27-24-180x300.png" width="180" height="300" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.saschahlusiak.de/2013/02/much-improved-ai-speed-for-freebloks-for-android-using-jni/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Winter in Bizau</title>
		<link>http://www.saschahlusiak.de/2013/01/winter-in-bizau/</link>
		<comments>http://www.saschahlusiak.de/2013/01/winter-in-bizau/#comments</comments>
		<pubDate>Tue, 15 Jan 2013 21:47:11 +0000</pubDate>
		<dc:creator>Sascha</dc:creator>
				<category><![CDATA[Photos]]></category>
		<category><![CDATA[lake constance]]></category>
		<category><![CDATA[photo]]></category>

		<guid isPermaLink="false">http://www.saschahlusiak.de/?p=1316</guid>
		<description><![CDATA[Some photos taken near Bizau, Austria. &#160;]]></description>
				<content:encoded><![CDATA[<p>Some photos taken near Bizau, Austria.</p>
<p><a href="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/01/20130113_134636.jpg"><img class="aligncenter size-large wp-image-1327" alt="20130113_134636" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/01/20130113_134636-1024x768.jpg" width="500" height="375" /></a></p>

<a href='http://www.saschahlusiak.de/2013/01/winter-in-bizau/20130112_124144/' title='20130112_124144'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/01/20130112_124144-150x150.jpg" class="attachment-thumbnail" alt="20130112_124144" /></a>
<a href='http://www.saschahlusiak.de/2013/01/winter-in-bizau/20130112_132950/' title='20130112_132950'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/01/20130112_132950-150x150.jpg" class="attachment-thumbnail" alt="20130112_132950" /></a>
<a href='http://www.saschahlusiak.de/2013/01/winter-in-bizau/20130112_141136/' title='20130112_141136'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/01/20130112_141136-150x150.jpg" class="attachment-thumbnail" alt="20130112_141136" /></a>
<a href='http://www.saschahlusiak.de/2013/01/winter-in-bizau/20130112_130617/' title='20130112_130617'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/01/20130112_130617-150x150.jpg" class="attachment-thumbnail" alt="20130112_130617" /></a>
<a href='http://www.saschahlusiak.de/2013/01/winter-in-bizau/20130112_125759/' title='20130112_125759'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/01/20130112_125759-150x150.jpg" class="attachment-thumbnail" alt="20130112_125759" /></a>
<a href='http://www.saschahlusiak.de/2013/01/winter-in-bizau/20130113_120731/' title='20130113_120731'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/01/20130113_120731-150x150.jpg" class="attachment-thumbnail" alt="20130113_120731" /></a>
<a href='http://www.saschahlusiak.de/2013/01/winter-in-bizau/20130112_143807/' title='20130112_143807'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/01/20130112_143807-150x150.jpg" class="attachment-thumbnail" alt="20130112_143807" /></a>
<a href='http://www.saschahlusiak.de/2013/01/winter-in-bizau/20130113_121604/' title='20130113_121604'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/01/20130113_121604-150x150.jpg" class="attachment-thumbnail" alt="20130113_121604" /></a>
<a href='http://www.saschahlusiak.de/2013/01/winter-in-bizau/20130112_141219/' title='20130112_141219'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2013/01/20130112_141219-150x150.jpg" class="attachment-thumbnail" alt="20130112_141219" /></a>

<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.saschahlusiak.de/2013/01/winter-in-bizau/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Handmade Totoro</title>
		<link>http://www.saschahlusiak.de/2012/12/handmade-totoro/</link>
		<comments>http://www.saschahlusiak.de/2012/12/handmade-totoro/#comments</comments>
		<pubDate>Sat, 29 Dec 2012 20:44:09 +0000</pubDate>
		<dc:creator>Sascha</dc:creator>
				<category><![CDATA[Photos]]></category>
		<category><![CDATA[photo]]></category>
		<category><![CDATA[totoro]]></category>

		<guid isPermaLink="false">http://www.saschahlusiak.de/?p=1306</guid>
		<description><![CDATA[This is a very personal, completely handmade Totoro I got for Christmas today. It is meant to be used as a travel pillow and to follow me wherever I go. Isn&#8217;t it nice? I will always keep it close.]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.saschahlusiak.de/wp/wp-content/uploads/2012/12/totoro_standing_small.jpg"><img class="aligncenter size-full wp-image-1309" alt="totoro_standing_small" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2012/12/totoro_standing_small.jpg" width="900" height="1145" /></a></p>
<p>This is a very personal, completely handmade <em>Totoro</em> I got for Christmas today. It is meant to be used as a travel pillow and to follow me wherever I go. <img src='http://www.saschahlusiak.de/wp/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Isn&#8217;t it nice? I will always keep it close.</p>

<a href='http://www.saschahlusiak.de/2012/12/handmade-totoro/totoro_standing_small/' title='totoro_standing_small'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2012/12/totoro_standing_small-150x150.jpg" class="attachment-thumbnail" alt="totoro_standing_small" /></a>
<a href='http://www.saschahlusiak.de/2012/12/handmade-totoro/totoro_tree_small/' title='totoro_tree_small'><img width="150" height="150" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2012/12/totoro_tree_small-150x150.jpg" class="attachment-thumbnail" alt="totoro_tree_small" /></a>

]]></content:encoded>
			<wfw:commentRss>http://www.saschahlusiak.de/2012/12/handmade-totoro/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>USB write performance drop on Fritz!Box 7170</title>
		<link>http://www.saschahlusiak.de/2012/11/usb-write-performance-drop-on-fritzbox-7170/</link>
		<comments>http://www.saschahlusiak.de/2012/11/usb-write-performance-drop-on-fritzbox-7170/#comments</comments>
		<pubDate>Mon, 26 Nov 2012 11:35:25 +0000</pubDate>
		<dc:creator>Sascha</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[fritzbox]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.saschahlusiak.de/?p=1263</guid>
		<description><![CDATA[I want to attach a USB stick to the AVM Fritz!Box 7170 to use as USB storage and be able to write to it using the integrated ftp server. When writing a bunch of files, the write performance drops to &#8230; <a href="http://www.saschahlusiak.de/2012/11/usb-write-performance-drop-on-fritzbox-7170/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>I want to attach a USB stick to the <a href="http://www.avm.de">AVM</a> Fritz!Box 7170 to use as USB storage and be able to write to it using the integrated ftp server. When writing a bunch of files, the write performance drops to under <em>50 kb/sec</em>, while the stick can easily handle<em> 512 kb/sec</em>. <em>Why the bad performance and why the drop?</em></p>
<p>I replaced the stock AVM firmware with <a href="http://www.freetz.org">Freetz</a> but got similar results. What got my attention is a drop in performance after copying 4 files, that does not recover after time. The following tests were done using the Freetz modification with Linux kernel 2.6.13.1-ohio.</p>
<h3>Performance drop when writing</h3>
<p>Look at these numbers when copying a bunch of files to the stick using scp:</p>
<pre>$ scp tmp* root@fritz.box:/var/media/ftp/uStor00/
tmp1                          100% 2048KB 682.7KB/s   00:03    
tmp2                          100% 2048KB 512.0KB/s   00:04    
tmp3                          100% 2048KB 512.0KB/s   00:04    
<strong>tmp4                          100% 2048KB  55.4KB/s   00:37    </strong>
<strong>tmp5                          100% 2048KB  38.6KB/s   00:53</strong></pre>
<p>Each following transfer would then be at only 55KB/s. Issuing a sync command to flush out dirty buffers makes no difference, so the speed is not throttled by the USB stick being busy.</p>
<h3>Let&#8217;s have a look at the VFS cache</h3>
<p>The Linux kernel reveals some interesting cache and <a href="http://unixfoo.blogspot.de/2008/02/know-about-procmeminfo.html">memory information</a> in <em>/proc/meminfo</em>. These are numbers taken after a fresh boot:</p>
<pre># cat /proc/meminfo 
MemTotal:        30204 kB
<strong>MemFree:</strong>         <strong> 9632 kB</strong>    # unused, completely free memory
Buffers:           280 kB
<strong>Cached:</strong>           <strong>6280 kB</strong>    # memory used for cached files
SwapCached:          0 kB
Active:           8652 kB
Inactive:         1524 kB
HighTotal:           0 kB
HighFree:            0 kB
LowTotal:        30204 kB
LowFree:          9632 kB
SwapTotal:           0 kB
SwapFree:            0 kB
<strong>Dirty:</strong>               <strong>0 kB</strong>    # memory waiting to be written to disk
<strong>Writeback:</strong>          <strong>0 kB</strong>    #  memory actively being written to disk
Mapped:           8040 kB
Slab:             6028 kB
CommitLimit:     15100 kB
Committed_AS:     5724 kB
PageTables:        240 kB
VmallocTotal:  1048560 kB
VmallocUsed:      4056 kB
VmallocChunk:  1043636 kB</pre>
<p>While copying the first files, the highlighted numbers read like this:</p>
<pre>MemFree:          1716 kB
<strong>Cached</strong>:          <strong>13704 kB</strong>
Active:           8976 kB
Inactive:         8928 kB
<strong>Dirty</strong>:            <strong>6836 kB</strong>     # lots of data waiting to be written
<strong>Writeback</strong>:         <strong>444 kB</strong>    # lots of data being actively writting</pre>
<p>We see that the cache is filled up quickly with buffers also marked to be written on the stick (marked dirty) and that <a href="http://www.westnet.com/~gsmith/content/linux-pdflush.htm">the pdflush daemon</a> already started to write out chunks of consecutive data to the usb stick. Remember that usb sticks have good performance when streaming out data chunks that <a href="http://linux-howto-guide.blogspot.de/2009/10/increase-usb-flash-drive-write-speed.html">fit into the physical structure</a> but bad performance, when writing out small chunks because a lot of the flash memory keeps being reread and overwritten. The performance is good here, because there are a lot of dirty buffers the kernel can optimize the writing out.</p>
<h3>Writing file &#8216;tmp1&#8242;</h3>
<p>Let&#8217;s go back and look at the numbers exactly after <em>tmp1</em> has been written (2048 kB):</p>
<pre><strong>MemFree</strong>:          <strong>7100 kB</strong>    # before: 9632 kB
<strong>Cached</strong>:           <strong>8456 kB</strong>    # before: 6280 kB
Dirty:               0 kB
Writeback:           0 kB</pre>
<p>The buffers have all been flushed, so the stick is idle. Our cache grew by 2048 kB taken from the free memory, containing now also the file <em>tmp1</em>.</p>
<h3>Writing file &#8216;tmp2&#8242;</h3>
<p>Copying file <em>tmp2</em> (2048 kB) is fast and the memory info after copying is no surprise:</p>
<pre><strong>MemFree</strong>:          <strong>5084 kB</strong>    # 2048 kB less
<strong>Cached</strong>:          <strong>10504 kB</strong>    # 2048 kB more
Dirty:               0 kB
Writeback:           0 kB</pre>
<p>Neither is <em>tmp3</em> (2048 kB), because there is still unused memory left. But now it&#8217;s getting interesting, because write performance with <em>tmp4</em> drops drastically.</p>
<h3>Writing file &#8216;tmp4&#8242; with no free memory</h3>
<p>While writing tmp4, and the performance dropping to 30 KB/sec, the numbers look like this:</p>
<pre>MemFree:          1148 kB
Cached:          13988 kB
<strong>Dirty</strong>:              <strong>12 kB</strong>
<strong>Writeback</strong>:          <strong>36 kB</strong></pre>
<p>Of course free memory is useless, we&#8217;d rather have everying to into the cache. The cache stays filled (we have <em>tmp1</em>, <em>tmp2</em> and <em>tmp3</em> in the cache), but the values for Dirty and Writeback are too low.</p>
<p>Before, the file to be written was completely loaded into the cache first and marked dirty.The <em>pdflush</em> daemon was started deferred and found rich caches to be written to disk.</p>
<p>The number of blocks marked dirty now never seems to exceed 50 kB. The pdflush daemon can only flush out small chunks of up to 36 kB at once (usually less), resulting in a lot of USB operations and overhead and low performance.</p>
<h3>Clearing the cache helps</h3>
<p>The Freetz kernel unfortunately does not expose <em>/proc/sys/vm/drop_caches</em> to drop all cached buffers. But what happens, if we <em>rm tmp1</em>:</p>
<pre>MemFree:          1604 kB
Cached:          14004 kB</pre>
<p><strong>Nothing</strong>. <em>tmp1</em> is not in the cache anymore and most likely <em>tmp4</em> has taken it&#8217;s place, because it is newer. But <em>tmp2</em> is still in the cache, so let&#8217;s <em>rm</em> it:</p>
<pre>MemFree:          3464 kB     # rm tmp2 frees up the cached memory
Cached:          12152 kB     # the rm'ed file is removed from cache</pre>
<p>Now we have over 3 MB free and unused memory and the file is not in the cache anymore.</p>
<h3>Writing tmp5</h3>
<p>Now let&#8217;s copy tmp5 (2048 KB). These are numbers from during the copy to see the values of Dirty and Writeback, so the file is only partly transfered yet:</p>
<pre>MemFree:          2204 kB
Cached:          12948 kB
<strong>Dirty</strong>:             <strong>152 kB</strong>
<strong>Writeback</strong>:         <strong>424 kB</strong></pre>
<p>We again see high numbers for Dirty and Writeback as parts of the copied file are moved to the cache and dirty. The pdflush daemon gets huge chunks of buffers again to be streamed to the medium and we get a fairly high transfer rate.</p>
<h3>Broken kernel behaviour</h3>
<p>This is the fairly old Linux kernel 2.6.13.1-ohio from Freetz. The behaviour of the VFS and pdflush seems to be broken and thus result in very poor write performance:</p>
<ul>
<li>when there is no free memory available, why doesn&#8217;t the kernel free more old cache memory for the new buffers to be marked dirty?</li>
<li>it seems, the pdflush daemon is forced to write out as soon as there are dirty buffers and memory is low (= no free memory). <a href="http://linux-mm.org/Low_On_Memory">Why does the kernel seem to prefer to free memory by writing out dirty buffers instead of clearing the read cache to make room for more dirty buffers?</a></li>
<li>allocating new buffers seems to stall while pdflush daemon is freeing up dirty memory</li>
<li>new buffers are still taken from old cached files, so after copying the whole file, it is completely in the cache. why not put if completely in the cache before starting to write out and stall allocation of new buffers?</li>
<li>rm&#8217;ing a file that is in the cache, frees up the cache, resulting in performance boosts, until that free memory is used by the cache again and the pdflush daemon writes out much smaller chunks. Practically that won&#8217;t happen and a normal Linux system should never have large amounts of free memory.</li>
</ul>
<p>This is a kernel bug preventing Fritz!Box 7170 from ever achieving good write performance on my USB stick and other mediums.</p>
<h3>Summary</h3>
<ol>
<li>When copying files to the Fritz!Box, the kernel caches these files in it&#8217;s cache only when free memory is available.</li>
<li>It writes out the cached files to storage, with good performance because there are big chunks to be written. The files remain in the cache in case they are read.</li>
<li>With a full cache and no free memory, new files aren&#8217;t cached anymore but directly written to the medium, resulting in a lot of small writes with big overhead and bad performance. The file is still in the cache after writing is done.</li>
<li>Clearing up the cache results in free memory and write performance boosts until the cache is saturated again.</li>
<li>Because the cache is only freed up on unmount, the situation almost never happens, making writing data to USB sticks a pain.</li>
</ol>
<p>External harddrives might work better, because of fast integrated hardware caches that can take lots of small chunks. But on a USB stick without hardware cache, performance is killed by the small writes.</p>
<p>It is unlikely that this bug will be fixed by AVM or by Freetz for the Fritz!Box 7170 because it seems to be a flaw in the used Linux kernel and AVM does not update the 7170 firmware anymore.</p>
<p>Is this a known bug and is this fixed in newer kernels?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.saschahlusiak.de/2012/11/usb-write-performance-drop-on-fritzbox-7170/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Out of Memory in GLSurfaceView on resume</title>
		<link>http://www.saschahlusiak.de/2012/11/glsurfaceview-and-hardwareaccelerated-subactivity/</link>
		<comments>http://www.saschahlusiak.de/2012/11/glsurfaceview-and-hardwareaccelerated-subactivity/#comments</comments>
		<pubDate>Mon, 19 Nov 2012 19:30:51 +0000</pubDate>
		<dc:creator>Sascha</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[develop]]></category>
		<category><![CDATA[game]]></category>
		<category><![CDATA[opengl]]></category>
		<category><![CDATA[wordmix]]></category>

		<guid isPermaLink="false">http://www.saschahlusiak.de/?p=1249</guid>
		<description><![CDATA[The SympTom After publishing WordMix with the OpenGL accelerated 2D game view (using GLSurfaceView), I received weird crash reports from some devices, mostly out of memory from within the GL context: android.opengl.GLException: out of memory at android.opengl.GLErrorWrapper.checkError(GLErrorWrapper.java:62) at android.opengl.GLErrorWrapper.glGenTextures(GLErrorWrapper.java:350) at &#8230; <a href="http://www.saschahlusiak.de/2012/11/glsurfaceview-and-hardwareaccelerated-subactivity/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<h3>The SympTom</h3>
<p>After publishing <a title="WordMix for Android" href="http://www.saschahlusiak.de/wordmix-for-android/">WordMix</a> with the OpenGL accelerated 2D game view (using <a href="http://developer.android.com/reference/android/opengl/GLSurfaceView.html">GLSurfaceView</a>), I received weird crash reports from some devices, mostly out of memory from within the GL context:</p>
<pre>android.opengl.GLException: out of memory
 at android.opengl.GLErrorWrapper.checkError(GLErrorWrapper.java:62)
 at android.opengl.GLErrorWrapper.glGenTextures(GLErrorWrapper.java:350)
 at [...]</pre>
<p>From the very limited information the Google Play Developer Console gives me about crash reports, I assumed it only affects devices running Android version 3. Modifying the code only caused the out of memory exception to be thrown at random other places, even at <strong>GL10.glClear(&#8230;)</strong>!</p>
<p>I also found out, the crash only happens when the user finishes a <em>subactivity</em> that would leave to the activity containing the GLSurfaceView. Users were complaining about the crash happening before starting a second game, which puzzled me, because all my rendering code seemed to be working fine on all devices running Android 4. Everything worked fine without the GLSurfaceView as well.</p>
<p>Looking that the source code for GLSurfaceView, nothing interesting was changed between Android 3.2 to Android 4, so the GLSurfaceView was hardly to blame, but more the hardware, drivers or specific OpenGL implementation.</p>
<h3>The problem</h3>
<p>The actual problem was very hard to track down and took me several hours and was particularly hard because I did not have an Android 3 tablet for debugging:</p>
<p>Up to Android 2.3, views were drawn in software and later composited using the hardware. Android 3 introduced an alternative <a href="http://developer.android.com/guide/topics/graphics/hardware-accel.html">hardware accelerated drawing engine</a> for everything that uses <a href="http://developer.android.com/reference/android/graphics/Canvas.html">Canvas </a>classes. This alternative render path is disabled by default in Android 3 and supposedly enabled by default in Android 4 (<a title="Hardware acceleration on SGS2 with Android 4.0" href="http://www.saschahlusiak.de/2012/10/hardware-acceleration-on-sgs2-with-android-4-0/">previous blog post</a>).</p>
<p>When I found out, that the <em>Samsung Galaxy S2</em> does <em>not</em> enable hardware acceleration by default, I did set</p>
<pre><code>&lt;<strong>application</strong> android:<strong>hardwareAccelerated</strong>="true" ...&gt;</code></pre>
<p>in the <em>AndroidManifest.xml</em> for all activities that should support hardware acceleration. Using hardware acceleration for the activity with the anyway hardware accelerated GLSurfaceView did not make much of a difference. But accelerating the results or preferences activity, for example, gave a nice performance boost on my SGS2.</p>
<p>It turns out that the crash happens in Android, when an activity, that contains a GLSurfaceView, is paused for a fullscreen activity, that is hardware accelerated. When that hardware accelerated activity is finished, the underlying GLSurfaceView is screwed up, throwing out of memory exceptions, even though the GL context is completely reinitialized correctly.</p>
<h3>The solution</h3>
<p>Yes, I should have tested more the effects of <strong>hardwareAccelerated=&#8221;true&#8221;</strong>.</p>
<p>Leaving that attribute entirely unset is recommended for Android 3, especially when you use a GLSurfaceView, and should not hurt Android 4 devices as well. Setting a reasonable default value is then up to the manufacturers.</p>
<h3>Summary</h3>
<ul>
<li>and suspend that activity by starting another fullscreen activity</li>
<li>and that activity is hardwareAccelerated by setting so in the <em>AndroidManifest.xml</em></li>
<li>and you target Android 3 devices</li>
<li>expect weird behaviour like <em>out-of-memory</em> exceptions</li>
</ul>
<p>Welcome to fragmentation. Just let hardwareAccelerated be unset.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.saschahlusiak.de/2012/11/glsurfaceview-and-hardwareaccelerated-subactivity/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>isatapd hits the portage tree</title>
		<link>http://www.saschahlusiak.de/2012/11/isatapd-hits-the-portage-tree/</link>
		<comments>http://www.saschahlusiak.de/2012/11/isatapd-hits-the-portage-tree/#comments</comments>
		<pubDate>Sun, 11 Nov 2012 10:54:47 +0000</pubDate>
		<dc:creator>Sascha</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[develop]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[IPv6]]></category>
		<category><![CDATA[isatap]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[network]]></category>

		<guid isPermaLink="false">http://www.saschahlusiak.de/?p=1238</guid>
		<description><![CDATA[My ISATAP client daemon for Linux finally hits the Gentoo portage tree. When originally released, the tool quickly got packaged into Ubuntu (10.04), Debian 6 (Squeeze) and derivates, but it needed another 2 years to get integrated in Gentoo. At &#8230; <a href="http://www.saschahlusiak.de/2012/11/isatapd-hits-the-portage-tree/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>My <a href="http://www.saschahlusiak.de/linux/isatap.htm">ISATAP client daemon</a> for Linux finally hits the <a href="http://packages.gentoo.org/package/net-misc/isatapd">Gentoo portage tree</a>.</p>
<p>When originally released, the tool quickly got packaged into <a href="http://packages.ubuntu.com/search?keywords=isatapd&amp;searchon=names&amp;suite=all&amp;section=all">Ubuntu</a> (10.04), <a href="http://packages.debian.org/search?keywords=isatapd&amp;searchon=names&amp;suite=all&amp;section=all">Debian 6 (Squeeze)</a> and derivates, but it needed another 2 years to get integrated in Gentoo. At last. <img src='http://www.saschahlusiak.de/wp/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<pre># emerge isatapd</pre>
<p>Source code is available on <a href="http://github.com/shlusiak/isatapd">http://github.com/shlusiak/isatapd</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.saschahlusiak.de/2012/11/isatapd-hits-the-portage-tree/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordMix Pro available on Amazon App Store</title>
		<link>http://www.saschahlusiak.de/2012/11/wordmix-pro-available-on-amazon-app-store/</link>
		<comments>http://www.saschahlusiak.de/2012/11/wordmix-pro-available-on-amazon-app-store/#comments</comments>
		<pubDate>Fri, 09 Nov 2012 11:04:07 +0000</pubDate>
		<dc:creator>Sascha</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[wordmix]]></category>

		<guid isPermaLink="false">http://www.saschahlusiak.de/?p=1232</guid>
		<description><![CDATA[WordMix Pro is now available on the Amazon App Store, making it available for all Amazons Kindle devices running Android. So far only the paid Pro version is available, the free version, which comes without the nice 3D interface, might &#8230; <a href="http://www.saschahlusiak.de/2012/11/wordmix-pro-available-on-amazon-app-store/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><a title="WordMix for Android" href="http://www.saschahlusiak.de/wordmix-for-android/">WordMix Pro</a> is now available on the <a href="http://www.amazon.com/gp/product/B00A0SSW98">Amazon App Store</a>, making it available for all Amazons Kindle devices running Android.</p>
<p>So far only the paid Pro version is available, the free version, which comes without the nice 3D interface, might follow soon.</p>
<p>The review process took only about 4 work days.</p>
<ul>
<li><a href="http://www.amazon.com/gp/product/B00A0SSW98"><strong>WordMix Pro on Amazon.com</strong></a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.saschahlusiak.de/2012/11/wordmix-pro-available-on-amazon-app-store/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenGL antialiasing in Android and transparent textures</title>
		<link>http://www.saschahlusiak.de/2012/10/opengl-antialiasing-in-android-with-transparent-textures/</link>
		<comments>http://www.saschahlusiak.de/2012/10/opengl-antialiasing-in-android-with-transparent-textures/#comments</comments>
		<pubDate>Sat, 27 Oct 2012 12:47:26 +0000</pubDate>
		<dc:creator>Sascha</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[CGI]]></category>
		<category><![CDATA[develop]]></category>
		<category><![CDATA[opengl]]></category>
		<category><![CDATA[wordmix]]></category>

		<guid isPermaLink="false">http://www.saschahlusiak.de/?p=1153</guid>
		<description><![CDATA[I tried to replace the legacy 2D rendering code of WordMix, which uses the native Android canvas methods, with an OpenGL renderer to allow for fancy effects and animations. First attempt Because the tiles are simple rectangles with round corners, &#8230; <a href="http://www.saschahlusiak.de/2012/10/opengl-antialiasing-in-android-with-transparent-textures/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>I tried to replace the legacy 2D rendering code of <a href="http://www.saschahlusiak.de/?page_id=891">WordMix</a>, which uses the native Android <a href="http://developer.android.com/reference/android/graphics/Canvas.html">canvas</a> methods, with an OpenGL renderer to allow for fancy effects and animations.</p>
<h3>First attempt</h3>
<div id="attachment_1156" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.saschahlusiak.de/wp/wp-content/uploads/2012/10/gimp1.png"><img class="size-medium wp-image-1156 " title="gimp1" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2012/10/gimp1-300x300.png" alt="" width="300" height="300" /></a><p class="wp-caption-text">simple texture with full bleed image, no border</p></div>
<p style="text-align: left;">Because the tiles are simple rectangles with round corners, I created a texture with <a href="http://www.gimp.org/">gimp</a> and rendered a quad in OpenGL. The texture had no mipmaps and was filtered linear for both, minimizing and magnifying. When rotating that quad, I got the typical &#8220;staircase&#8221; lines, because I did not use anti-aliasing / multisampling. The result looks rather horrible:</p>
<div id="attachment_1159" class="wp-caption aligncenter" style="width: 355px"><a href="http://www.saschahlusiak.de/wp/wp-content/uploads/2012/10/Screenshot_2012-10-27-11-31-22.png"><img class="wp-image-1159  " title="Screenshot_2012-10-27-11-31-22" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2012/10/Screenshot_2012-10-27-11-31-22.png" alt="" width="345" height="372" /></a><p class="wp-caption-text">no multisampling, no mipmaps, simple texture result in typical &#8220;staircase&#8221; borders</p></div>
<p>You can see two effects, one if it being the clear staircase borders, where the texture is not linear filtered, and you see the round corners of the texture with a grayish border, I&#8217;ll explain in the next paragraphs.</p>
<h3>Multisampling emulation to remove &#8220;staircase&#8221;</h3>
<p>So how to achieve multisampling in OpenGL ES 1.1? <a title="How to emulate anti-aliasing in opengl es 1.1" href="http://agileroute.wordpress.com/2011/02/17/how-to-emulate-anti-aliasing-in-opengl-es-1-1/">The answer I found</a> is quite simple and easy on the hardware: use a texture with a transparent border and linear texture interpolation will do the rest. So I modified the texture to include a transparent border and rendered the quads slightly bigger to fill the same amount of pixels.</p>
<div id="attachment_1157" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.saschahlusiak.de/wp/wp-content/uploads/2012/10/gimp2.png"><img class="size-medium wp-image-1157" title="gimp2" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2012/10/gimp2-300x290.png" alt="" width="300" height="290" /></a><p class="wp-caption-text">texture image with transparent border</p></div>
<p>The result looked better but I was not satisfied with the borders. I saw the interpolations but there is still a very visible &#8220;staircase&#8221;. Plus it seems, that the borders are blended with a black color, which can be seen on the overlapping tiles:</p>
<div id="attachment_1165" class="wp-caption aligncenter" style="width: 209px"><a href="http://www.saschahlusiak.de/wp/wp-content/uploads/2012/10/Screenshot_2012-10-27-11-33-40.png"><img class="size-full wp-image-1165" title="Screenshot_2012-10-27-11-33-40" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2012/10/Screenshot_2012-10-27-11-33-40.png" alt="" width="199" height="210" /></a><p class="wp-caption-text">no mipmaps, texture with transparent border, still visible &#8220;staircase&#8221; and dark colored border</p></div>
<p>This is in fact due to my texture, which had the transparent pixels assigned the color black. The OpenGL interpolation would just average two neighbour pixels, which would calculate like</p>
<pre>(argb(1, 1, 1, 1) + argb(0, 0, 0, 0)) / 2 = argb(0.5, <strong>0.5</strong>, <strong>0.5</strong>, <strong>0.5</strong>)</pre>
<p>which is a semi transparent gray color tone.</p>
<h3>Monkeying with gimp for transparent pixel</h3>
<p>So how to create a texture, where the transparent pixels have the color white? Gimp seemed to screw up the color of transparent pixels even though when exporting my work as png file, it offers to keep the color of transparent pixels.</p>
<p><a href="http://www.gimpforum.de/showthread.php?t=20314">The trick</a>: combine all visible planes, create an alpha channel and change the color layer. If you have uncombined planes, the result is unpredictable and the colors are screwed up.</p>
<p>So now I had a texture with a white but fully transparent border (value 0x00FFFFFF) and I&#8217;d expect the calculation to be</p>
<pre>(argb(1, 1, 1, 1) + argb(0, 1, 1, 1)) / 2 = argb(0.5, <strong>1</strong>, <strong>1</strong>, <strong>1</strong>)</pre>
<p>But I still got the same result:</p>
<div id="attachment_1166" class="wp-caption aligncenter" style="width: 270px"><a href="http://www.saschahlusiak.de/wp/wp-content/uploads/2012/10/Screenshot_2012-10-27-11-35-02.png"><img class="size-full wp-image-1166" title="Screenshot_2012-10-27-11-35-02" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2012/10/Screenshot_2012-10-27-11-35-02.png" alt="" width="260" height="193" /></a><p class="wp-caption-text">texture with transparent + white border: still black border in Android</p></div>
<h3 style="text-align: left;">Bitmaps with transparent pixels in Android</h3>
<p>So why is my border still black, while the texture has white transparent regions? I checked the loaded Bitmap with this code after loading the png resource:</p>
<pre>Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.stone);
Log.d("texture", bmp.getPixel(0, 0)); /* result: 0 */</pre>
<p>Why is the result 0?? I&#8217;d expect a 0x00FFFFFF, but either <a href="http://www.kittehface.com/2010/06/androidbitmap-and-premultiplied-alpha.html">Androids Bitmap loader premultiplies the alpha</a> or <em>recompresses</em> the image file on compile, although I did place the image in the <em>res/drawable-nodpi</em> folder.</p>
<p>But apparently Bitmap and Canvas throw away all color information, when drawing with an alpha value of 0. This results in a fully transparent, but black canvas:</p>
<pre>canvas.drawColor(Color.argb(0, 255, 255, 255), Mode.SRC);
Log.d("texture", bmp.getPixel(0, 0)); /* result: 0 */</pre>
<p>while the following results in a white canvas, which is almost transparent (1/256):</p>
<pre>canvas.drawColor(Color.argb(1, 255, 255, 255), Mode.SRC);
Log.d("texture", bmp.getPixel(0, 0)); /* result: 0x01FFFFFF */</pre>
<p>Good to know, so now I create my texture with a border that is almost transparent, but not completely (alpha value 1/256) and the color white, which should be hardly visible, calculating like:</p>
<pre>(argb(1, 1, 1, 1) + argb(0.01, 1, 1, 1)) / 2 = argb(0.505, 1, 1, 1)</pre>
<p>I checked with above Log code and indeed got the value 0x01FFFFFF. So at least the Bitmap was loaded correctly now. <strong>But I still get a  black border and the result looks the same. Why?<br />
</strong></p>
<h3>Creating OpenGL textures with unmultiplied alpha</h3>
<p>I found a post and bug report that apparently the <a href="https://groups.google.com/forum/?fromgroups=#!topic/android-developers/uqbDPmP4L8o">GLUtils.glTexImage2D() screws with the alpha and colors</a> too, creating texture values of 0&#215;01010101, which gets blended with the nearby white pixels on linear filtering. What the&#8230;?</p>
<p>The post suggests a workaround to not use GLUtils to load the Bitmap into an OpenGL texture but use the original GL10.glTexImage2D(). While the code in that post is not very efficient, it does result in nice and smooth blended borders. Of course the use of mipmaps helps too to make the texture smooth when minified:</p>
<div id="attachment_1168" class="wp-caption aligncenter" style="width: 369px"><a href="http://www.saschahlusiak.de/wp/wp-content/uploads/2012/10/Screenshot_2012-10-27-11-38-48.png"><img class="size-full wp-image-1168" title="Screenshot_2012-10-27-11-38-48" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2012/10/Screenshot_2012-10-27-11-38-48.png" alt="" width="359" height="288" /></a><p class="wp-caption-text">texture with 0x01FFFFFF almost-transparent border and use of original GL10.glTexImage2D method and mipmaps</p></div>
<h3 style="text-align: left;">Summary</h3>
<p style="text-align: left;">Several culprits were found to make antialiasing work with an Android App using OpenGL ES 1.1:</p>
<ol>
<li>Create textures that have transparent borders, so linear filtering emulated oversampling at polygon borders</li>
<li>Make sure the transparent border of your texture contains color values, which will &#8220;bleed&#8221; into the border pixels of the texture.</li>
<li>If you use mipmaps, make sure you have enough transparent border pixels or set <em>GL_TEXTURE_WRAP</em> to <em>GL_CLAMP</em>.</li>
<li>Double check result, because gimp does screw up when having multiple layers, that are merged when exporting as png image.</li>
<li>Androids Bitmap loader and Canvas code seems to zero out the color values when alpha is 0. The workaround to keep the color values on load: Use colored pixels with alpha value of 1 (of 255).</li>
<li>The <a href="http://developer.android.com/reference/android/opengl/GLUtils.html#texImage2D%28int,%20int,%20android.graphics.Bitmap,%20int%29">GLUtils.glTexImage2D implementation</a> premultiplies alpha values with color values, resulting in very dark color, instead of the white I wanted. Use the <a href="http://developer.android.com/reference/javax/microedition/khronos/opengles/GL10.html#glTexImage2D%28int,%20int,%20int,%20int,%20int,%20int,%20int,%20int,%20java.nio.Buffer%29">GL10.glTexImage2D</a> directly (<a href="https://groups.google.com/forum/?fromgroups=#!topic/android-developers/uqbDPmP4L8o">example in this post</a>).</li>
</ol>
<p>Using mipmaps and adding a nice shadow texture results in a screen, that looks very similar to the original, but which is much faster:</p>
<div id="attachment_1171" class="wp-caption aligncenter" style="width: 490px"><a href="http://www.saschahlusiak.de/wp/wp-content/uploads/2012/10/Screenshot_2012-10-27-14-46-29.png"><img class="size-full wp-image-1171" title="Screenshot_2012-10-27-14-46-29" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2012/10/Screenshot_2012-10-27-14-46-29.png" alt="" width="480" height="800" /></a><p class="wp-caption-text">final result with all workarounds, mipmaps and shadows</p></div>
<p style="text-align: center;">
]]></content:encoded>
			<wfw:commentRss>http://www.saschahlusiak.de/2012/10/opengl-antialiasing-in-android-with-transparent-textures/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordMix learning Russian</title>
		<link>http://www.saschahlusiak.de/2012/10/wordmix-learning-russian/</link>
		<comments>http://www.saschahlusiak.de/2012/10/wordmix-learning-russian/#comments</comments>
		<pubDate>Wed, 17 Oct 2012 22:38:11 +0000</pubDate>
		<dc:creator>Sascha</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[develop]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[wordmix]]></category>

		<guid isPermaLink="false">http://www.saschahlusiak.de/?p=1126</guid>
		<description><![CDATA[The next WordMix and WordMix Pro release will include support for Russian, Portuguese and Dutch as dictionary languages. I had a lot of fun with the Cyrillic encoding of characters and especially the database for the words as I learned &#8230; <a href="http://www.saschahlusiak.de/2012/10/wordmix-learning-russian/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.saschahlusiak.de/wp/wp-content/uploads/2012/10/Screenshot_2012-10-18-00-20-20.png"><img class="alignleft size-medium wp-image-1129" title="Screenshot_2012-10-18-00-20-20" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2012/10/Screenshot_2012-10-18-00-20-20-180x300.png" alt="" width="180" height="300" /></a>The next <a href="https://play.google.com/store/apps/details?id=de.saschahlusiak.wordmix">WordMix</a> and <a href="https://play.google.com/store/apps/details?id=de.saschahlusiak.wordmixpro">WordMix Pro</a> release will include support for Russian, Portuguese and Dutch as dictionary languages. I had a lot of fun with the Cyrillic encoding of characters and especially the database for the words as I learned that a lot of Linux tools are still not ready for handling multi byte character sequences correctly.</p>
<p>Mostly the tool <em>tr</em> kept me busy, when I tried to convert lower case letters to upper case. The normal approach of</p>
<pre>tr [:lower:] [:upper:]</pre>
<p>only seems to work for the ASCII character set. If manually used on UTF-8 data, it screws everything up even more, like in the command:</p>
<pre>tr \
  абвгдеёжзийклмнопрстуфхцчшщъыьэюя \
  AБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ</pre>
<p><a href="http://www.saschahlusiak.de/wp/wp-content/uploads/2012/10/Screenshot_2012-10-18-00-20-03.png"><img class="alignright size-medium wp-image-1128" title="Screenshot_2012-10-18-00-20-03" src="http://www.saschahlusiak.de/wp/wp-content/uploads/2012/10/Screenshot_2012-10-18-00-20-03-180x300.png" alt="" width="180" height="300" /></a>The trick was to use <em>tr</em> on the original <a href="http://en.wikipedia.org/wiki/KOI8-R">KOI8-R</a> encoded data (which is 8 bit), for which I also had to pass KOI8-R encoded parameters to the tool, which was a pain inside an otherwise UTF-8 encoded shell script. So I tried to read the KOI8-R encoded parameters from a file before passing it as arguments so I don&#8217;t screw up my shell script.</p>
<p>It took me several hours and attempts to find that out and to get all the encodings right, so now a working Russian dictionary is available. <img src='http://www.saschahlusiak.de/wp/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  It won&#8217;t be shipped by default though, so it needs to be fetched from the Internet once by the game, on first use.</p>
<p>Of course the <a href="http://www.saschahlusiak.de/wordmix">global ranklist</a> is prepared for the new languages as well.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.saschahlusiak.de/2012/10/wordmix-learning-russian/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>manually enabling deflate filter</title>
		<link>http://www.saschahlusiak.de/2012/10/deflate-disabled/</link>
		<comments>http://www.saschahlusiak.de/2012/10/deflate-disabled/#comments</comments>
		<pubDate>Tue, 02 Oct 2012 19:50:27 +0000</pubDate>
		<dc:creator>Sascha</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[develop]]></category>
		<category><![CDATA[network]]></category>

		<guid isPermaLink="false">http://www.saschahlusiak.de/?p=1113</guid>
		<description><![CDATA[Oh my, my webhoster has the deflate output filter disabled by default, that enables gzip compression of outgoing content. This is important for huge xml/json data from webservices that travel over mobile networks and easily reduces used bandwith to up &#8230; <a href="http://www.saschahlusiak.de/2012/10/deflate-disabled/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Oh my, my <a href="http://www.domaingo.de">webhoster</a> has the <a href="http://httpd.apache.org/docs/2.2/mod/mod_deflate.html">deflate output filter</a> disabled by default, that enables gzip compression of outgoing content. This is important for huge xml/json data from webservices that travel over mobile networks and easily reduces used bandwith to up to 10%.</p>
<p>Putting this in my <em>.htaccess</em> did the trick:</p>
<pre>AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript</pre>
<p>You can analyze the traffic with <em>Wireshark</em>, <em>Firebug</em> or use an online tool:</p>
<ul>
<li><a href="http://www.gidnetwork.com/tools/gzip-test.php">http://www.gidnetwork.com/tools/gzip-test.php</a></li>
</ul>
<p>Make sure, your mobile app sets the <a href="https://github.com/shlusiak/HRW-Dienststatus/commit/33fc4739c089f363c776255245412214bc4948aa">Accept-Encoding</a> of the request accordingly.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.saschahlusiak.de/2012/10/deflate-disabled/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
