<?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>Journal: Software Development</title>
	<atom:link href="http://brianhoffmann.de/journal/feed/" rel="self" type="application/rss+xml" />
	<link>http://brianhoffmann.de/journal</link>
	<description>Logbuch und Notizen</description>
	<lastBuildDate>Tue, 07 May 2013 17:24:52 +0000</lastBuildDate>
	<language>de-DE</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Setup Dagger with Eclipse</title>
		<link>http://brianhoffmann.de/journal/coding/2013-05-07/setup-dagger-with-eclipse/</link>
		<comments>http://brianhoffmann.de/journal/coding/2013-05-07/setup-dagger-with-eclipse/#comments</comments>
		<pubDate>Tue, 07 May 2013 12:44:16 +0000</pubDate>
		<dc:creator>Brian Hoffmann</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Dagger]]></category>
		<category><![CDATA[Library]]></category>

		<guid isPermaLink="false">http://brianhoffmann.de/journal/?p=340</guid>
		<description><![CDATA[The dependency injection library Dagger by Square setup for using it with Eclipse is a bit different when not using Maven. At the time of writing, there seem to be no complete explaination on what is needed to setup everything. &#8230; <a href="http://brianhoffmann.de/journal/coding/2013-05-07/setup-dagger-with-eclipse/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>The dependency injection library <a title="Dagger" href="https://github.com/square/dagger">Dagger by Square</a> setup for using it with Eclipse is a bit different when not using Maven.</p>
<p>At the time of writing, there seem to be no complete explaination on what is needed to setup everything. I got everything working with combined information from the comments in <a title="Issue 126 on Github" href="https://github.com/square/dagger/issues/126">issue 126</a> by <a title="Comment by staxgr" href="https://github.com/square/dagger/issues/126#issuecomment-11992320">staxgr</a> and <a title="Comment by arichiardi" href="https://github.com/square/dagger/issues/126#issuecomment-13472727">arichiardi</a>.</p>
<ul>
<li>Prepare the Eclipse project and create the directories <code style="font-style: inherit;">libs</code> and <code style="font-style: inherit;">libs-compile</code>.</li>
<li>Download the following libraries:
<ul>
<li><a href="http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.squareup%22%20dagger%20AND%20(a%3A%22dagger%22%20OR%20a%3A%22dagger-compiler%22)">the dagger jars</a> from Maven Central.</li>
</ul>
<ul>
<ul>
<li><code>dagger-x.x.x.jar</code> goes into the <code>libs</code> directory</li>
<li><code>dagger-compiler-x.x.x.jar</code> goes in the <code>libs-compile</code> directory</li>
</ul>
<li><a href="http://search.maven.org/#search%7Cga%7C1%7Ca%3A%22javawriter%22">the javawriter jar</a> and put it into <code>libs-compile</code></li>
<li><a href="http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22javax.inject%22%20a%3A%22javax.inject%22">javax.inject</a> goes into <code>libs</code></li>
</ul>
</li>
<li>Enable Annotation Processing and add all four libraries to the factory path of the annotation processing settings
<ul>
<li>Project Properties → Java Compiler → Annotation Processing
<ul>
<li>check "Enable project specific settings" and "Enable annotation processing"</li>
</ul>
</li>
<li> Project Properties → Java Compiler → Annotation Processing → Factory Path
<ul>
<li>"Add JARs..." for each downloaded jar</li>
</ul>
</li>
</ul>
</li>
</ul>
<p>When starting a build, the generated files should appear in <code>.apt_generated</code>. This directory should be automatically configured as a source folder after annotation processing has Bern enabled.</p>

                            <div id="aspdf">
                                <a href="http://brianhoffmann.de/journal/wp-content/plugins/as-pdf/generate.php?post=340">
                                    <span></span>
                                </a>
                            </div>
                        ]]></content:encoded>
			<wfw:commentRss>http://brianhoffmann.de/journal/coding/2013-05-07/setup-dagger-with-eclipse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Becoming Agil: Magic Estimation</title>
		<link>http://brianhoffmann.de/journal/notes/2013-04-25/becoming-agil-magic-estimation/</link>
		<comments>http://brianhoffmann.de/journal/notes/2013-04-25/becoming-agil-magic-estimation/#comments</comments>
		<pubDate>Thu, 25 Apr 2013 14:26:28 +0000</pubDate>
		<dc:creator>Brian Hoffmann</dc:creator>
				<category><![CDATA[Notes]]></category>

		<guid isPermaLink="false">http://brianhoffmann.de/journal/?p=330</guid>
		<description><![CDATA[Usually we have certain constrains on our project which define what we can achieve and most likely also what we have to do first. Having a backlog packed with user stories makes it very difficult to get an overview of &#8230; <a href="http://brianhoffmann.de/journal/notes/2013-04-25/becoming-agil-magic-estimation/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Usually we have certain constrains on our project which define what we can achieve and most likely also what we have to do first. Having a backlog packed with user stories makes it very difficult to get an overview of the upcoming workload. To be able to actually get an idea for the upcoming sprints we need to estimate the product backlog. Doing that detailed for each user story would take us quite some time. So instead of estimating each single user story (as exact as possible) we could try to estimate a bunch of similar user stories at once. This is Magic Estimation.</p>
<p>Let's assume we have a backlog packed with 80 user stories. Each of them has a decent description and also has acceptance criteria defined.</p>
<p>As a first step we need to set up complexity buckets. In those buckets we'll put stories with similar complexity. For simplicity we choose shirt sizes: XS, S, M, L and XL. The XS bucket is for stories which can be easily achieved in a couple of hours, whereas the XL bucket is for stories which we don't really have a clue on how to solve. All other stories would be evenly distributed among the other buckets.</p>
<p>The buckets get put on a board in form of cards. The user stories will be put next to the <em>bucket cards</em>.</p>
<p>The product owner starts by briefly presenting each user story. The team then has just a couple of seconds to decide on the complexity of the story. When time is up (the ScrumMaster could help here by watching the time) the story goes into its complexity bucket. This process shouldn't really take much longer than 30 seconds, certainly not longer than a minute. If the team cannot make a reasonable decision, just put the story in one of the higher ranked buckets -- we are not in a sprint planning, we just want to get an idea of the workload. Don't think about it too long, just shoot right away.</p>
<p>After all stories are distributed the team gets time to have a look over all buckets (in the meantime the product owner can go to get a coffee refill). Are there some stories which doesn't quite fit to the others? The team can take maybe ten minutes to reorder all stories. If there are stories which could make up there own bucket, create a new one. There might be real no-brainers which could all go into an XXS bucket. But don't try to create too many buckets, this wouldn't be much helpful.</p>
<p>Now all user stories are clustered into their complexity. In the next step we can put story points on the buckets: is the S bucket three or five points; the XL bucket might be 20 points. When all buckets have story points assigned, we can add it all up.</p>
<div id="attachment_336" class="wp-caption aligncenter" style="width: 310px"><a href="http://brianhoffmann.de/journal/wp-content/uploads/2013/04/IMAG0237.jpg" rel="lightbox[330]"><img class="size-medium wp-image-336" alt="Board with user stories arranged into complexity categories" src="http://brianhoffmann.de/journal/wp-content/uploads/2013/04/IMAG0237-300x263.jpg" width="300" height="263" /></a><p class="wp-caption-text">Board with user stories arranged into complexity categories</p></div>
<p>The sum of story points gives us a rough direction of how many sprints it would take to finish all user stories. At the end the product owner can use the estimated story points to prioritize user stories for the upcoming sprints. Furthermore, he can compare the estimation outcome with the product's time table if it is actually possible to do or maybe if some feature need to be cut down.</p>
<p>This approach is just one possible way of doing a magic estimation. There are other ways the team could do this:</p>
<p><iframe width="584" height="329" src="http://www.youtube.com/embed/QocEro1J65Y?feature=oembed" frameborder="0" allowfullscreen></iframe></p>

                            <div id="aspdf">
                                <a href="http://brianhoffmann.de/journal/wp-content/plugins/as-pdf/generate.php?post=330">
                                    <span></span>
                                </a>
                            </div>
                        ]]></content:encoded>
			<wfw:commentRss>http://brianhoffmann.de/journal/notes/2013-04-25/becoming-agil-magic-estimation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Becoming Agile: Principles</title>
		<link>http://brianhoffmann.de/journal/notes/2013-04-01/becoming-agile-principles/</link>
		<comments>http://brianhoffmann.de/journal/notes/2013-04-01/becoming-agile-principles/#comments</comments>
		<pubDate>Mon, 01 Apr 2013 19:26:29 +0000</pubDate>
		<dc:creator>Brian Hoffmann</dc:creator>
				<category><![CDATA[Notes]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[scrum]]></category>

		<guid isPermaLink="false">http://brianhoffmann.de/journal/?p=325</guid>
		<description><![CDATA[Continuously integrate new code As soon as new code is finished it should be integrated into the code base. By that it is not only ensured that all members of the development team get access to new code, it also &#8230; <a href="http://brianhoffmann.de/journal/notes/2013-04-01/becoming-agile-principles/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<h2>Continuously integrate new code</h2>
<p>As soon as new code is finished it should be integrated into the code base. By that it is not only ensured that all members of the development team get access to new code, it also minimises the risk of running into incompatibilities and reduces the complexity of merging changes.</p>
<p>In a recurring fashion this could happen at the end of development day. Also partly finished features can already be pushed into the base as long as they meet the project's quality minimums (etc. testable/tested, documented). At the beginning of the next development day changes would get individually pulled into the working copy.</p>
<h2>Maximise coverage of automated tests</h2>
<p>Testing code is a crucial part in reaching a certain level of quality and stability. To minimise the workload needed the process should be automated where possible. This can be done with unit tests using state of the art testing frameworks (JUnit, Selenium, etc) to further reduce workload.</p>
<p>It should be also possible to combine testing with continuous integration. This gives the advantage of running tests as often as possible and getting the chance to react to issues quickly.</p>
<h2>Think ahead and stay flexible</h2>
<p>Each team member should keep the future constantly in mind. As the application grows requirements might (or most likely "will") change. To be able to react and implement these changes it is important to always develop for scalability and flexibility. This accounts not only for the development members but also for the management members of team. The management should always evaluate new features with what might come next.</p>
<h2>Keep it simple</h2>
<p>Always create the simplest solution for a problem that will work and deliver for the minimum requirement. Maintaining a simple, clean and open design ensures that the application can be easily extended while staying focused and meeting dead lines.</p>

                            <div id="aspdf">
                                <a href="http://brianhoffmann.de/journal/wp-content/plugins/as-pdf/generate.php?post=325">
                                    <span></span>
                                </a>
                            </div>
                        ]]></content:encoded>
			<wfw:commentRss>http://brianhoffmann.de/journal/notes/2013-04-01/becoming-agile-principles/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>StringEntity Doesn&#039;t Play by the Rules of Android</title>
		<link>http://brianhoffmann.de/journal/coding/2012-04-13/stringentity-doesnt-play-by-the-rules-of-android/</link>
		<comments>http://brianhoffmann.de/journal/coding/2012-04-13/stringentity-doesnt-play-by-the-rules-of-android/#comments</comments>
		<pubDate>Fri, 13 Apr 2012 08:39:26 +0000</pubDate>
		<dc:creator>Brian Hoffmann</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Charset]]></category>
		<category><![CDATA[Encoding]]></category>
		<category><![CDATA[HTTP]]></category>

		<guid isPermaLink="false">http://brianhoffmann.de/journal/?p=318</guid>
		<description><![CDATA[So here is the situation: you build up some JSON objects and pop them into a StringEntity so your HTTPClient can send the stuff to server. We know on Android, the default charset is UTF-8 and use that knowledge through out the &#8230; <a href="http://brianhoffmann.de/journal/coding/2012-04-13/stringentity-doesnt-play-by-the-rules-of-android/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>So here is the situation: you build up some JSON objects and pop them into a StringEntity so your HTTPClient can send the stuff to server. We know <a title="Charset#defaultCharset()" href="http://developer.android.com/reference/java/nio/charset/Charset.html#defaultCharset%28%29">on Android, the default charset is UTF-8</a> and use that knowledge through out the whole application, not considering that this fact might change in some places. But it does! Using a default StringEngtity with data supposed to be encoded in UTF-8 won't give us the expected results on Android. A <a href="http://grepcode.com/file/repo1.maven.org/maven2/org.apache.httpcomponents/httpcore/4.0/org/apache/http/entity/StringEntity.java#StringEntity">look into the code</a> explains why:</p>
<pre>// ...
if (charset == null) {
charset = HTTP.DEFAULT_CONTENT_CHARSET;
}
// ...</pre>
<p>And guess what, <code>HTTP.DEFAULT_CONTENT_CHARSET</code> does not take advantage of <code>Charset.defaultCharset()</code> but instead is set up with <code>"ISO-8859-1"</code>.</p>
<p>To get real UTF-8 data we need to do something like <code>new StringEntity("âáàéèê", HTTP.UTF_8);</code>.</p>

                            <div id="aspdf">
                                <a href="http://brianhoffmann.de/journal/wp-content/plugins/as-pdf/generate.php?post=318">
                                    <span></span>
                                </a>
                            </div>
                        ]]></content:encoded>
			<wfw:commentRss>http://brianhoffmann.de/journal/coding/2012-04-13/stringentity-doesnt-play-by-the-rules-of-android/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>stopManagingCursor</title>
		<link>http://brianhoffmann.de/journal/coding/2012-02-02/stopmanagingcursor/</link>
		<comments>http://brianhoffmann.de/journal/coding/2012-02-02/stopmanagingcursor/#comments</comments>
		<pubDate>Thu, 02 Feb 2012 16:29:35 +0000</pubDate>
		<dc:creator>Brian Hoffmann</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Database]]></category>

		<guid isPermaLink="false">http://brianhoffmann.de/journal/?p=314</guid>
		<description><![CDATA[When you get exceptions like the following after ActivityB resumes to ActivityA java.lang.IllegalStateException this should only be called when the cursor is valid You might want to call stopManagingCursor in onResume()]]></description>
				<content:encoded><![CDATA[<p>When you get exceptions like the following after ActivityB resumes to ActivityA</p>
<p><code>java.lang.IllegalStateException this should only be called when the cursor is valid</code></p>
<p>You might want to call stopManagingCursor in onResume()</p>

                            <div id="aspdf">
                                <a href="http://brianhoffmann.de/journal/wp-content/plugins/as-pdf/generate.php?post=314">
                                    <span></span>
                                </a>
                            </div>
                        ]]></content:encoded>
			<wfw:commentRss>http://brianhoffmann.de/journal/coding/2012-02-02/stopmanagingcursor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Irrlicht Engine - A free open source 3d engine</title>
		<link>http://brianhoffmann.de/journal/master/2011-09-01/irrlicht-engine-a-free-open-source-3d-engine/</link>
		<comments>http://brianhoffmann.de/journal/master/2011-09-01/irrlicht-engine-a-free-open-source-3d-engine/#comments</comments>
		<pubDate>Thu, 01 Sep 2011 14:17:31 +0000</pubDate>
		<dc:creator>Brian Hoffmann</dc:creator>
				<category><![CDATA[Master]]></category>
		<category><![CDATA[3D]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[engine]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[OpenGL]]></category>

		<guid isPermaLink="false">http://brianhoffmann.de/journal/?p=312</guid>
		<description><![CDATA[Irrlicht Engine - A free open source 3d engine.]]></description>
				<content:encoded><![CDATA[<p><a href="http://irrlicht.sourceforge.net/">Irrlicht Engine - A free open source 3d engine</a>.</p>

                            <div id="aspdf">
                                <a href="http://brianhoffmann.de/journal/wp-content/plugins/as-pdf/generate.php?post=312">
                                    <span></span>
                                </a>
                            </div>
                        ]]></content:encoded>
			<wfw:commentRss>http://brianhoffmann.de/journal/master/2011-09-01/irrlicht-engine-a-free-open-source-3d-engine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Latex Glossaries with TeXnicCenter</title>
		<link>http://brianhoffmann.de/journal/thesis/2011-08-01/latex-glossaries-with-texniccenter/</link>
		<comments>http://brianhoffmann.de/journal/thesis/2011-08-01/latex-glossaries-with-texniccenter/#comments</comments>
		<pubDate>Mon, 01 Aug 2011 13:44:07 +0000</pubDate>
		<dc:creator>Brian Hoffmann</dc:creator>
				<category><![CDATA[Thesis]]></category>
		<category><![CDATA[latex]]></category>

		<guid isPermaLink="false">http://brianhoffmann.de/journal/?p=304</guid>
		<description><![CDATA[Well, sometimes Latex can be annoying. How to create a glossary? The package glossaries seems to be state of the art. I set it up as the following on my Windows machine with TeXnicCenter: % in the preamble \usepackage{glossaries} \makeglossaries &#8230; <a href="http://brianhoffmann.de/journal/thesis/2011-08-01/latex-glossaries-with-texniccenter/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Well, sometimes Latex can be annoying. How to create a glossary?</p>
<p>The package glossaries seems to be state of the art. I set it up as the following on my Windows machine with TeXnicCenter:</p>
<p><code>% in the preamble<br />
\usepackage{glossaries}<br />
\makeglossaries</code></p>
<p>Define a new output profile: Copy one of the existing profiles (e.g. "LaTeX &gt; PDF") and add the following entries to the postprocessing tab:</p>
<ul>
<ul>
<li><strong>makeglossaries #1</strong><br />
Application: <code>{full path to}/makeindex.exe</code><br />
Arguments: <code>-s "%bm".ist -t "%bm".glg -o "%bm".gls "%bm".glo</code></li>
<li><strong>makeacronyms #1</strong><br />
Application: <code>{full path to}/makeindex.exe</code><br />
Arguments: <code>-s "%bm".ist -t "%bm".alg -o "%bm".acr "%bm".acn</code></li>
<li><strong>pdflatex #2</strong><br />
<em>copy from (La)Tex tab</em></li>
<li><strong>makeglossaries #2</strong><br />
Application: <code>{full path to}/makeindex.exe</code><br />
Arguments: <code>-s "%bm".ist -t "%bm".glg -o "%bm".gls "%bm".glo</code></li>
<li><strong>makeacronyms #1</strong><br />
Application: <code>{full path to}/makeindex.exe</code><br />
Arguments: <code>-s "%bm".ist -t "%bm".alg -o "%bm".acr "%bm".acn</code></li>
<li><strong>pdflatex #3</strong><br />
<em>copy from (La)Tex tab</em></li>
</ul>
</ul>
<p>This procedure avoids to use of <code>makeglossaries.exe</code> which requires that you have Perl installed. The iterative calls are described in the <a href="http://en.wikibooks.org/wiki/LaTeX/Glossary">Latex Wikibook</a> and it seems to work well this way. You can import my output profile: <a href="http://brianhoffmann.de/journal/wp-content/uploads/2011/08/latex-pdf-glossary+acronym.tco_.txt">latex-pdf-glossary+acronym.tco</a></p>
<p>Mind, that if you use the hyperref package, to load this before the glossaries package. This way glossary entries will be automatically linked in the PDF output.</p>

                            <div id="aspdf">
                                <a href="http://brianhoffmann.de/journal/wp-content/plugins/as-pdf/generate.php?post=304">
                                    <span></span>
                                </a>
                            </div>
                        ]]></content:encoded>
			<wfw:commentRss>http://brianhoffmann.de/journal/thesis/2011-08-01/latex-glossaries-with-texniccenter/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>FPU Boost</title>
		<link>http://brianhoffmann.de/journal/thesis/2011-07-25/fpu-boost/</link>
		<comments>http://brianhoffmann.de/journal/thesis/2011-07-25/fpu-boost/#comments</comments>
		<pubDate>Mon, 25 Jul 2011 09:03:25 +0000</pubDate>
		<dc:creator>Brian Hoffmann</dc:creator>
				<category><![CDATA[Thesis]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[boost]]></category>
		<category><![CDATA[FPU]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[OpenCV]]></category>
		<category><![CDATA[speed]]></category>

		<guid isPermaLink="false">http://brianhoffmann.de/journal/?p=301</guid>
		<description><![CDATA[I'm kind of thrilled right now. I just updated JavaCV to the latest version (2011-07-05) which includes OpenCV 2.3.0 and some precompiled code for Android devices with an FPU (armeabi-v7a). Just by replacing JavaCV I gained an enormously computation boost. &#8230; <a href="http://brianhoffmann.de/journal/thesis/2011-07-25/fpu-boost/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>I'm kind of thrilled right now.</p>
<p>I just updated <a title="javacv" href="http://brianhoffmann.de/journal/thesis/2011-06-25/javacv/">JavaCV</a> to the latest version (2011-07-05) which includes <a title="OpenCV" href="http://brianhoffmann.de/journal/thesis/2011-04-19/opencv/">OpenCV</a> 2.3.0 and some precompiled code for Android devices with an FPU (armeabi-v7a). Just by replacing JavaCV I gained an enormously computation boost. Well, of course I knew that an FPU is better for heavy number crunching than a CPU. Nevertheless I'm surprised that this makes such a big difference even in the tiny smartphone (HTC Desire HD).</p>
<p>My current implementation detects Shi-Thomasi corners and then tries to track them in following video frames. Where yesterday (without "FPU-code") my detector needed around 3 to 4 seconds to detect about 50 corners (even though it didn't much matter if I detected 50 or let's say 250) now it needs about 170 milliseconds and very often even less. My tracker needed about 1000 milliseconds to find known corners in new frames -- now 20 milliseconds. The detector is about 18 times faster.</p>
<p>I know, I know ... this is kind of supposed to be like that <img src='http://brianhoffmann.de/journal/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  . But I'm just surprised to see this working. As result from that I will just target on devices with an FPU. I'm not quite sure yet if a certain Android version requires an FPU, so could just say e.g. from 2.3.0 and up my program will work or if I need to actually check this during runtime.</p>

                            <div id="aspdf">
                                <a href="http://brianhoffmann.de/journal/wp-content/plugins/as-pdf/generate.php?post=301">
                                    <span></span>
                                </a>
                            </div>
                        ]]></content:encoded>
			<wfw:commentRss>http://brianhoffmann.de/journal/thesis/2011-07-25/fpu-boost/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Debugging Android JNI with CheckJNI</title>
		<link>http://brianhoffmann.de/journal/master/2011-07-19/debugging-android-jni-with-checkjni/</link>
		<comments>http://brianhoffmann.de/journal/master/2011-07-19/debugging-android-jni-with-checkjni/#comments</comments>
		<pubDate>Tue, 19 Jul 2011 19:13:45 +0000</pubDate>
		<dc:creator>Brian Hoffmann</dc:creator>
				<category><![CDATA[Master]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[JNI]]></category>
		<category><![CDATA[Links]]></category>

		<guid isPermaLink="false">http://brianhoffmann.de/journal/?p=298</guid>
		<description><![CDATA[Android Developers Blog: Debugging Android JNI with CheckJNI.]]></description>
				<content:encoded><![CDATA[<p><a href="http://android-developers.blogspot.com/2011/07/debugging-android-jni-with-checkjni.html">Android Developers Blog: Debugging Android JNI with CheckJNI</a>.</p>

                            <div id="aspdf">
                                <a href="http://brianhoffmann.de/journal/wp-content/plugins/as-pdf/generate.php?post=298">
                                    <span></span>
                                </a>
                            </div>
                        ]]></content:encoded>
			<wfw:commentRss>http://brianhoffmann.de/journal/master/2011-07-19/debugging-android-jni-with-checkjni/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ARmsk</title>
		<link>http://brianhoffmann.de/journal/thesis/2011-07-13/armsk/</link>
		<comments>http://brianhoffmann.de/journal/thesis/2011-07-13/armsk/#comments</comments>
		<pubDate>Wed, 13 Jul 2011 10:39:25 +0000</pubDate>
		<dc:creator>Brian Hoffmann</dc:creator>
				<category><![CDATA[Thesis]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[AR]]></category>
		<category><![CDATA[Links]]></category>
		<category><![CDATA[OpenGL]]></category>

		<guid isPermaLink="false">http://brianhoffmann.de/journal/?p=295</guid>
		<description><![CDATA[Just found yet another AR library for Android called ARmsk. The description sounds promising. But the demo video is kind of shocking. They have like half a frame per second. The code looks like they used a lot of examples, &#8230; <a href="http://brianhoffmann.de/journal/thesis/2011-07-13/armsk/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Just found yet another AR library for Android called <a title="ARmsk" href="http://armsk.org">ARmsk</a>. The description sounds promising. But the demo video is kind of shocking. They have like half a frame per second. The code looks like they used a lot of examples, like the OpenGL Cube renderer from the Android API demos and some stuff from the OpenCV-Android examples.</p>
<p>Last updates were in January this year, so quite up-to-date actually.</p>
<p>Oh, btw, guys why can't I find you when I search for "AR Android". I mean seriously, take care of your website keywords <img src='http://brianhoffmann.de/journal/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>

                            <div id="aspdf">
                                <a href="http://brianhoffmann.de/journal/wp-content/plugins/as-pdf/generate.php?post=295">
                                    <span></span>
                                </a>
                            </div>
                        ]]></content:encoded>
			<wfw:commentRss>http://brianhoffmann.de/journal/thesis/2011-07-13/armsk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Note] Lot&#039;s of FPS</title>
		<link>http://brianhoffmann.de/journal/thesis/2011-07-07/note-lots-of-fps/</link>
		<comments>http://brianhoffmann.de/journal/thesis/2011-07-07/note-lots-of-fps/#comments</comments>
		<pubDate>Thu, 07 Jul 2011 08:21:46 +0000</pubDate>
		<dc:creator>Brian Hoffmann</dc:creator>
				<category><![CDATA[Thesis]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Note]]></category>

		<guid isPermaLink="false">http://brianhoffmann.de/journal/?p=293</guid>
		<description><![CDATA[If you are suddenly getting high framerates, you might doing something wrong with the FPS calculation!]]></description>
				<content:encoded><![CDATA[<p>If you are suddenly getting high framerates, you might doing something wrong with the FPS calculation! <img src='http://brianhoffmann.de/journal/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>

                            <div id="aspdf">
                                <a href="http://brianhoffmann.de/journal/wp-content/plugins/as-pdf/generate.php?post=293">
                                    <span></span>
                                </a>
                            </div>
                        ]]></content:encoded>
			<wfw:commentRss>http://brianhoffmann.de/journal/thesis/2011-07-07/note-lots-of-fps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AndEngine</title>
		<link>http://brianhoffmann.de/journal/thesis/2011-07-05/andengine/</link>
		<comments>http://brianhoffmann.de/journal/thesis/2011-07-05/andengine/#comments</comments>
		<pubDate>Tue, 05 Jul 2011 19:17:29 +0000</pubDate>
		<dc:creator>Brian Hoffmann</dc:creator>
				<category><![CDATA[Thesis]]></category>
		<category><![CDATA[2D]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[AR]]></category>
		<category><![CDATA[Link]]></category>
		<category><![CDATA[OpenGL]]></category>

		<guid isPermaLink="false">http://brianhoffmann.de/journal/?p=287</guid>
		<description><![CDATA[AndEngine is a 2D OpenGL Engine. Actually a game engine. But it has also some small AR extension. I've stumbled upon this project a little while ago but then somehow forgot about it and now rediscovered it. So far it &#8230; <a href="http://brianhoffmann.de/journal/thesis/2011-07-05/andengine/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><a title="AndEngine" href="http://www.andengine.org/">AndEngine</a> is a 2D OpenGL Engine. Actually a game engine. But it has also some small AR extension. I've stumbled upon this project a little while ago but then somehow forgot about it and now rediscovered it. So far it looks promising (even though I already found some kind of "lazy bug" which prevents the AR example to run <img src='http://brianhoffmann.de/journal/wp-includes/images/smilies/icon_confused.gif' alt=':?' class='wp-smiley' />  ). Especially the the animation stuff and sensor helpers look great.</p>
<p>Hopefully this can boost my project a little.Will see.</p>

                            <div id="aspdf">
                                <a href="http://brianhoffmann.de/journal/wp-content/plugins/as-pdf/generate.php?post=287">
                                    <span></span>
                                </a>
                            </div>
                        ]]></content:encoded>
			<wfw:commentRss>http://brianhoffmann.de/journal/thesis/2011-07-05/andengine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>android-experimental + android-cmake (on Windows)</title>
		<link>http://brianhoffmann.de/journal/thesis/2011-07-04/android-experimental-android-cmake-on-windows/</link>
		<comments>http://brianhoffmann.de/journal/thesis/2011-07-04/android-experimental-android-cmake-on-windows/#comments</comments>
		<pubDate>Mon, 04 Jul 2011 11:07:49 +0000</pubDate>
		<dc:creator>Brian Hoffmann</dc:creator>
				<category><![CDATA[Thesis]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Cygwin]]></category>
		<category><![CDATA[OpenCV]]></category>

		<guid isPermaLink="false">http://brianhoffmann.de/journal/?p=281</guid>
		<description><![CDATA[Just another desperate try to get something connected with OpenCV compiled under Windows. AndroidExperimental looked promising at the beginning. But of course everything just works on Linux without problems. The step where get_ndk_toolchain_linux.sh is referenced won't work on Windows and &#8230; <a href="http://brianhoffmann.de/journal/thesis/2011-07-04/android-experimental-android-cmake-on-windows/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Just another desperate try to get something connected with <a title="OpenCV" href="http://brianhoffmann.de/journal/thesis/2011-04-19/opencv/">OpenCV</a> compiled under Windows.</p>
<p><a href="http://opencv.willowgarage.com/wiki/AndroidExperimental">AndroidExperimental</a> looked promising at the beginning. But of course everything just works on Linux without problems.</p>
<p>The step where <code>get_ndk_toolchain_linux.sh</code> is referenced won't work on Windows and actually you don't need to do everything in there if you already have the NDK. So, assuming the NDK is already installed, just run the last portion of the script. The following is what worked for me with Cygwin. <code>ANDROID_NDK</code> was defined in the Windows environment variables and therefore had backslashes in it, somehow this wouldn't want to work, so I overwrite it. <code>NDK_TMPDIR</code> is used in the shell script and with Cygwin it has no write access to this folder. Choosing another folder worked.</p>
<pre>export ANDROID_NDK=/cygdrive/d/android-ndk-windows
export NDK_TMPDIR=$ANDROID_NDK/../ndk-tmp

$ANDROID_NDK/build/tools/make-standalone-toolchain.sh --platform=android-5 --install-dir=$ANDROID_NDK/android-toolchain --system=windows

ln -fs $ANDROID_NDK/android-toolchain /opt/android-toolchain</pre>
<p>So, this prep-work is done. Unfortunately compiling the <code>hello-cmake</code> sample didn't work and ends with:</p>
<pre>
-- Check for working C compiler: /cygdrive/d/android-ndk-windows/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc -- broken
CMake Error at /usr/share/cmake-2.8.4/Modules/CMakeTestCCompiler.cmake:52 (MESSAGE):
  The C compiler "/cygdrive/d/android-ndk-windows/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc" is not able to compile a simple test program.
</pre>
<p>I'm not sure why this is happening. Maybe it's because the path to the project has spaces in it. Or what ever.<br />
Trying something else for now.</p>

                            <div id="aspdf">
                                <a href="http://brianhoffmann.de/journal/wp-content/plugins/as-pdf/generate.php?post=281">
                                    <span></span>
                                </a>
                            </div>
                        ]]></content:encoded>
			<wfw:commentRss>http://brianhoffmann.de/journal/thesis/2011-07-04/android-experimental-android-cmake-on-windows/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Note] No up-to-date AR libraries?</title>
		<link>http://brianhoffmann.de/journal/thesis/2011-06-27/note-no-up-to-date-ar-libraries/</link>
		<comments>http://brianhoffmann.de/journal/thesis/2011-06-27/note-no-up-to-date-ar-libraries/#comments</comments>
		<pubDate>Mon, 27 Jun 2011 08:37:23 +0000</pubDate>
		<dc:creator>Brian Hoffmann</dc:creator>
				<category><![CDATA[Thesis]]></category>
		<category><![CDATA[AR]]></category>
		<category><![CDATA[Links]]></category>
		<category><![CDATA[Note]]></category>

		<guid isPermaLink="false">http://brianhoffmann.de/journal/?p=275</guid>
		<description><![CDATA[Somehow there doesn't seem to be good AR libraries which are either working well or even up to date. It looks like there where some buzz between 2007 and 2009. Quiet some people developed libraries and applications using marker-based AR. &#8230; <a href="http://brianhoffmann.de/journal/thesis/2011-06-27/note-no-up-to-date-ar-libraries/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Somehow there doesn't seem to be good AR libraries which are either working well or even up to date. It looks like there where some buzz between 2007 and 2009. Quiet some people developed libraries and applications using marker-based AR. Like the <a href="http://sourceforge.net/projects/artoolkit/">ARToolkit</a> which was last updated in 2007. The successor (or at least an extended version) of that is <a href="https://launchpad.net/artoolkitplus">ARToolkitPlus</a>, which was actually updated in February this year. But well, both work just with markers, which I don't need at all. I thought I could hack the code a little to extend it to work with natural features (FAST corners or something like that), but the creepy C++ code is just ugly and would probably require too much time to go through. There is also <a href="http://code.google.com/p/andar/">AndAR</a>, but this just uses ARToolkit internally and last update sometime in 2010, so no real help for me. <a href="http://sourceforge.jp/projects/nyartoolkit-and/">NyARToolkit</a> looked nice in the beginning. It's similar to ARToolkit (and I somehow guess that there is at least one person working on it who was also working on the other library) but a bit more lagging. I could work with that -- if the code wouldn't be almost completely commented in Japanese. Again, no help for me.</p>
<p>But there is more. <a href="http://ar.qualcomm.at/qdevnet/">Qualcomms QCAR</a> augmented reality SDK is well up to date and working incredibly good. Though, there is a huge problem: If you want to track images with natural features you'd need to first upload your images, let them go through Qualcomms "Image Target System", download some binary file (which has most likely interest points from the image in it) and then compile everything into the Android application. I mean, come on! How useful is that!? So I cannot use QCAR either, because I want to dynamically load interest points and other information during runtime.</p>
<p>What is left? I guess I need to try it on my own. <a title="OpenCV" href="http://brianhoffmann.de/journal/thesis/2011-04-19/opencv/">OpenCV</a> has all the functionality I need (There is this <a title="OpenCV-Android" href="http://brianhoffmann.de/journal/thesis/2011-06-24/opencv-android/">Android-optimized version</a> which compiles nicely with the NDK). I "just" need to use it. <a title="javacv" href="http://brianhoffmann.de/journal/thesis/2011-06-25/javacv/">JavaCV</a> is Java-based wrapper to the OpenCV API, it is not commented at all but hopefully it will be of any use for me.</p>
<p>If there is someone out there with (helping) suggestions, please drop me a line in the comments.</p>

                            <div id="aspdf">
                                <a href="http://brianhoffmann.de/journal/wp-content/plugins/as-pdf/generate.php?post=275">
                                    <span></span>
                                </a>
                            </div>
                        ]]></content:encoded>
			<wfw:commentRss>http://brianhoffmann.de/journal/thesis/2011-06-27/note-no-up-to-date-ar-libraries/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Review: „Multiple Target Detection and Tracking with Guaranteed Framerates on Mobile Phones“</title>
		<link>http://brianhoffmann.de/journal/thesis/2011-06-25/review-%e2%80%9emultiple-target-detection-and-tracking-with-guaranteed-framerates-on-mobile-phones%e2%80%9c/</link>
		<comments>http://brianhoffmann.de/journal/thesis/2011-06-25/review-%e2%80%9emultiple-target-detection-and-tracking-with-guaranteed-framerates-on-mobile-phones%e2%80%9c/#comments</comments>
		<pubDate>Sat, 25 Jun 2011 09:55:18 +0000</pubDate>
		<dc:creator>Brian Hoffmann</dc:creator>
				<category><![CDATA[Thesis]]></category>
		<category><![CDATA[FAST]]></category>
		<category><![CDATA[Paper]]></category>
		<category><![CDATA[Review]]></category>
		<category><![CDATA[SIFT]]></category>
		<category><![CDATA[smartphone]]></category>

		<guid isPermaLink="false">http://brianhoffmann.de/journal/?p=265</guid>
		<description><![CDATA[The described related work tracks motion using optical flow algorithms. It seems that those produce satisfying results but not yet cover the full potential of a AR tracking system. Others use interest-point based algorithms which are commonly known as very &#8230; <a href="http://brianhoffmann.de/journal/thesis/2011-06-25/review-%e2%80%9emultiple-target-detection-and-tracking-with-guaranteed-framerates-on-mobile-phones%e2%80%9c/">Weiterlesen <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>The described related work tracks motion using optical flow algorithms. It seems that those produce satisfying results but not yet cover the full potential of a AR tracking system. Others use interest-point based algorithms which are commonly known as very computational expensive. SIFT descriptors are probably the most used ones although they might belong the the most expensive ones. Nevertheless, some improvements have been achieved with SIFT and also SURF algorithms.</p>
<p>Similar to <a title="PTAM" href="http://brianhoffmann.de/journal/thesis/2011-04-19/ptam/">PTAM</a> Wagner et. al also use a separated detection and tracking system. The detection system tries to find known targets in the currently available camera image using a modified SIFT algorithm. Instead of calculating the kind of expensive Differences of Gaussian (DoG) they use a FAST corner detection over multiple scales. Memory consumption is then reduced by using only 36-dimensional features instead of the original 128-dimensions of SIFT. Found descriptors are matched with entries from multiple spill trees, which is a similar data structure like the k-d-tree used in the original SIFT.</p>
<p><em>-- unfinished --</em></p>

                            <div id="aspdf">
                                <a href="http://brianhoffmann.de/journal/wp-content/plugins/as-pdf/generate.php?post=265">
                                    <span></span>
                                </a>
                            </div>
                        ]]></content:encoded>
			<wfw:commentRss>http://brianhoffmann.de/journal/thesis/2011-06-25/review-%e2%80%9emultiple-target-detection-and-tracking-with-guaranteed-framerates-on-mobile-phones%e2%80%9c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
