<?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>Dazed &#38; Confused</title>
	<atom:link href="http://blog.f12.no/wp/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.f12.no/wp</link>
	<description>Running around in the maze</description>
	<lastBuildDate>Sat, 20 Feb 2010 16:10:13 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Hibernate performance and optimization</title>
		<link>http://blog.f12.no/wp/2010/02/16/hibernate-performance-and-optimization/</link>
		<comments>http://blog.f12.no/wp/2010/02/16/hibernate-performance-and-optimization/#comments</comments>
		<pubDate>Tue, 16 Feb 2010 15:03:56 +0000</pubDate>
		<dc:creator>Anders</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[hibernate]]></category>
		<category><![CDATA[optimization]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[persistence]]></category>

		<guid isPermaLink="false">http://blog.f12.no/wp/?p=1029</guid>
		<description><![CDATA[Since I started working way back in the summer of 2004 I&#8217;ve been working with ORM technologies. First TopLink, and then Hibernate. I like ORM technology, but I also see the associated problems. They are incredibly complex products, and not having some resources that really understands what is happening will get you into serious trouble. [...]]]></description>
			<content:encoded><![CDATA[<p>Since I started working way back in the summer of 2004 I&#8217;ve been working with ORM technologies. First <a href="http://www.oracle.com/technology/products/ias/toplink/index.html">TopLink</a>, and then <a href="https://www.hibernate.org/">Hibernate</a>. I like ORM technology, but I also see the associated problems. They are incredibly complex products, and not having some resources that really understands what is happening will get you into serious trouble. Usually the problems surface with performance,  other times, just strange results occur. Even if you are lucky enough to have experts at hand, the general understanding amongst your developers continues to be a problem.</p>
<p>I would love to have an easier alternative, but I don&#8217;t really see anything on the horizon that replaces it without removing too many of the benefits. But that&#8217;s really something for a different post.</p>
<p><strong>Some basics</strong></p>
<p>So if you&#8217;re doing ORM, and especially Hibernate there are some basics to keep your options open when it comes to performance:</p>
<ul>
<li>Don&#8217;t do explicit flushing</li>
<li>Don&#8217;t disable lazy loading in your mappings</li>
<li>Don&#8217;t use Session.clear()</li>
</ul>
<p>There are valid reasons for doing these things, but usually they are used because someone does not quite understand how Hibernate really works. And what&#8217;s even worse; they limit your choices later on when tuning and changing the solution. So if someone are experiencing problems and consider doing one of these things; make sure they talk to your main Hibernate guy first. I can guarantee you there is a lot of pain involved in removing these later on.</p>
<p>So if you&#8217;ve been a good boy or girl and avoided these pitfalls you should be set to do some performance optimisations in <strong>the areas reported as slow</strong>. Yeah, reported as slow. Don&#8217;t do any funky stuff before you <strong>know</strong> it is an area that needs improvement. Doing special tuning will limit your options later on, so only do it where it&#8217;s really necessary.</p>
<p><strong>Diagnosing the problem and finding the culprit</strong></p>
<p><a href="http://www.yourkit.com/">YourKit Java Profiler</a> is my absolute favourite for diagnosing problems related to Hibernate. It enables you to see all queries executed, and trace it back into the code to figure out why it is run.</p>
<p>Trond Isaksen from <a href="http://zenior.no">Zenior</a> also held a talk at <a href="http://capgemini.com">Capgemini</a> last week where he talked about using stacktraces in core dumps for analyzing problems. It might actually be your only option, because introducing Yourkit in production will cause side effects.</p>
<p>The amount of information can become quite overwhelming, but learn these tools and you will have a trusty companion for diagnosing your database performance in Java for a long time to come.</p>
<p><strong>Hibernate performance</strong></p>
<p>The way Hibernate basically promises to deliver performance is through caching and changing the amount of data that is fetched each time. This works for most of the cases where you use Hibernate. If not, you might just need to do some good old SQL.</p>
<p>Understand <a href="http://docs.jboss.org/hibernate/core/3.3/reference/en/html/performance.html">1st and 2nd level caching</a> and figure out how you can <a href="http://docs.jboss.org/hibernate/core/3.3/reference/en/html/performance.html#performance-fetching">tweak relations to change behaviour</a> and you have a good tool set to tune Hibernate with.</p>
<p><strong>Fixing issues</strong></p>
<p>Once you find the reason for your performance problem, and if it&#8217;s database or Hibernate related, you basically have the following options. I try to follow this list top to bottom. The last solutions impact your code more and can also complicate your deployment and infrastructure.</p>
<ol>
<li><strong>Check that your database indices are tuned</strong>. To have effective fetches your indices must match your actual queries, so make sure they are correct.</li>
<li><strong>Consider how you do key generation</strong>. If inserts are slow, it might be because it calls the Database for a key for each and every row it intends to insert. <a href="http://docs.jboss.org/hibernate/core/3.3/reference/en/html/mapping.html#mapping-declaration-id-enhanced-optimizers">Change generators</a> or assign yourself. Stuff like thr Sequence HiLo Generator can drastically reduce the number of queries Hibernate does to your database.</li>
<li><strong>Fetch on primary key whenever possible</strong>. Hibernate has some default methods called get/load that lets you retrieve an object based on the primary key. These methods checks with the first level cache whether the object has been retrieved within the same Hibernate session, and if so avoids database communication. So if you use these you will only get one call to the database, even though your code actually calls Hibernate multiple times. <a href="http://github.com/anderssv/hibernate-test/blob/master/src/test/java/HibernateTest.java">Using Queries will bypass this mechanism</a>, even though you query on primary key.</li>
<li><strong>Enable second level cache for Read Only entities.</strong> This is a really good quick win for stuff like Currency or Country. Close to zero cost.</li>
<li><strong>Consider wether you are always using a set of objects at the same time.</strong> You rarely retreive an Order without looking at the underlying Items in the Order. Setting fetch=&#8221;join|select|subselect&#8221; or batch size on the relation can increase the speed. Note that this will then happen every time you fetch the Order. It will also effectively bypass any caches you have enabled, so make sure you consider all the usage scenarios for this.</li>
<li><strong>Write custom queries for the situation.</strong> Setting the fetch mode in an association as in the previous section will impact every fetch of the Order object. If there&#8217;s only a few cases where the performance gets really bad and that is separated from other parts of the system, you can write a custom query. This enable you to tune the fetching to the concrete case and let other parts of the system actually benefit from lazy loading. This is preferably custom Hibernate Criteria, but can also be HQL or even SQL.</li>
<li><strong>Use plain old SQL.</strong> There is actually things that SQL is better at. Use it, and use something like the <a href="http://static.springsource.org/spring/docs/2.5.1/api/org/springframework/jdbc/core/RowMapper.html">RowMapper</a> feature in Spring with it.</li>
<li><strong>Refactor your code to enable better performance.</strong> Changes in the model, or the design of services and request can affect performance and might be the way to go. Especially consider <a href="http://docs.jboss.org/hibernate/core/3.3/reference/en/html/objectstate.html#objectstate-flushing">the flushing rules for Hibernate</a>. Making sure you read the information at the start of your transaction can reduce the number of times Hibernate writes to the database.</li>
<li><strong>Write cache your objects.</strong> This can become quite complex because of synchronization issues. If you&#8217;re running more nodes (most projects are), you&#8217;ll need to set up synchronization between your nodes and caches. This reduces scalability and complicates setup and deployment. Keep it simple.</li>
</ol>
<p>Let me know if there&#8217;s something I&#8217;ve forgotten, I&#8217;m still learning. <img src='http://blog.f12.no/wp/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Some resources:</p>
<ul>
<li><a href="http://docs.jboss.org/hibernate/core/3.3/reference/en/html/performance.html">Hibernate Doc: Improving performance</a></li>
<li><a href="http://www.google.com/url?sa=t&amp;source=web&amp;ct=res&amp;cd=4&amp;ved=0CCEQFjAD&amp;url=http%3A%2F%2Fwww.javadev.org%2Ffiles%2FHibernate%2520Performance%2520Tuning.pdf&amp;ei=RweAS5mgF5Hb-Qbr7pCsBw&amp;usg=AFQjCNFP2pksI-wdeNQsC_Dd5o9glmzK1A&amp;sig2=rEkhv_pD1octoQ5ol1ahSw">Hibernate performance tuning</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.f12.no/wp/2010/02/16/hibernate-performance-and-optimization/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>The cost and benefits of cleaning up code</title>
		<link>http://blog.f12.no/wp/2009/11/10/the-cost-and-benefits-of-cleaning-up-code/</link>
		<comments>http://blog.f12.no/wp/2009/11/10/the-cost-and-benefits-of-cleaning-up-code/#comments</comments>
		<pubDate>Tue, 10 Nov 2009 14:57:51 +0000</pubDate>
		<dc:creator>Anders</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[cost]]></category>
		<category><![CDATA[quality]]></category>
		<category><![CDATA[refactoring]]></category>

		<guid isPermaLink="false">http://blog.f12.no/wp/?p=1016</guid>
		<description><![CDATA[I&#8217;m not a very scientific person. Actually I&#8217;m probably quite un-academic in my approach towards software development. There are a lot of stuff I consider essential that havn&#8217;t really been proven, but I won&#8217;t stop doing it just because of that. It might be a weakness, but this field is also way too complex for [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m not a very scientific person. Actually I&#8217;m probably quite un-academic in my approach towards software development. There are a lot of stuff I consider essential that havn&#8217;t really been proven, but I won&#8217;t stop doing it just because of that. It might be a weakness, but this field is also way too complex for us to wait for stuff to be proven scientifically before we do it. Yeah. People are complex. <img src='http://blog.f12.no/wp/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />   It is however very nice when people smarter than me can prove stuff, especially when it matches my own world view. <img src='http://blog.f12.no/wp/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Even though it is not very scientifically conclusive Joakim Karlsson has <a href="http://jkarlsson.com/blog/2009/06/24/the-locality-of-code-changes/">some very interesting results on the locality of code changes</a>. As Joakim discusses this relates closely to how you evaluate whether the code you are currently looking at is worth a cleanup. It&#8217;s very hard to do a good evaluation of this, especially since we always seem to underestimate the time to, and frequency, of when we will be re-visiting that code.</p>
<p>On my own gut feeling I have started to do a lot more fixes when I stumble upon them, exactly because I have done this error so incredibly many times: I have tried to be cautious, and avoid doing unnecessary work by cleaning up stuff that I&#8217;ll &#8220;touch just this once&#8221;. But by touching it you introduce new bugs, change old behaviour and learn something new. All of this feeds back into the code, and you will most likely be debugging or making more changes to that code within the near future. It&#8217;s nice to see a more structured approach to investigating this.</p>
<p>There are some good suggestions and even references in the comments of the article. It&#8217;ll be interesting to see any refined results on this.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.f12.no/wp/2009/11/10/the-cost-and-benefits-of-cleaning-up-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Smidig 2009 and my talk</title>
		<link>http://blog.f12.no/wp/2009/11/04/smidig-2009-and-my-talk/</link>
		<comments>http://blog.f12.no/wp/2009/11/04/smidig-2009-and-my-talk/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 10:11:40 +0000</pubDate>
		<dc:creator>Anders</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[deployment]]></category>
		<category><![CDATA[smidig2009]]></category>
		<category><![CDATA[talk]]></category>

		<guid isPermaLink="false">http://blog.f12.no/wp/?p=1012</guid>
		<description><![CDATA[Smidig 2009, Norways very own Agile conference was held on October 22nd and 23rd. I have attended it earlier, and this year I was one of the organizers. The entire experience has been excellent, though a lot of work. Others were working a lot more than me, and I reall have to give them credit [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://smidig2009.no">Smidig 2009</a>, Norways very own Agile conference was held on October 22nd and 23rd. I have attended it earlier, and this year I was one of the organizers. The entire experience has been excellent, though a lot of work. Others were working a lot more than me, and I reall have to give them credit for beeing such a positive and active crowd.</p>
<p>Tandberg did an excellent effort of providing us with the video equipment, and enabled us to make the videos available. Even though sometechnical difficulties resulted in loosing some talks (mine included), they did an excellent job, and a big thank you to them.</p>
<p>I held a talk on agile deployment (again), due to some last minute cancellations.</p>
<p>Because my talk was lost I decided to put some details here on how you could get the material if you are interested. So:</p>
<ul>
<li>Slides on slideshare: <a href="http://www.slideshare.net/anderssv/smidig-utrulling-at-smidig-2009">http://www.slideshare.net/anderssv/smidig-utrulling-at-smidig-2009</a></li>
<li>A longer version I held with video at JavaZone 2009: <a href="http://tcs.java.no/tcs/?id=2E72A3F8-CD11-4C5C-A29A-63EB3E95149F">http://tcs.java.no/tcs/?id=2E72A3F8-CD11-4C5C-A29A-63EB3E95149F</a></li>
</ul>
<p>My own company, Capgemini had 7 talks, which was a really good effort. To see other videos (Norwegian only) go to<a href="http://tcs.java.no"> http://tcs.java.no</a> .</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.f12.no/wp/2009/11/04/smidig-2009-and-my-talk/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>My Javazone talks</title>
		<link>http://blog.f12.no/wp/2009/09/26/my-javazone-talks/</link>
		<comments>http://blog.f12.no/wp/2009/09/26/my-javazone-talks/#comments</comments>
		<pubDate>Sat, 26 Sep 2009 17:39:47 +0000</pubDate>
		<dc:creator>Anders</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[deploy]]></category>
		<category><![CDATA[javazone]]></category>
		<category><![CDATA[rules engine]]></category>
		<category><![CDATA[talk]]></category>

		<guid isPermaLink="false">http://blog.f12.no/wp/?p=1004</guid>
		<description><![CDATA[My JavaZone talks are available. Sorry, only in Norwegian. I&#8217;ve scanned through them and I&#8217;m fairly satisfied with the performance. Looks like the Rules engine talk doesn&#8217;t have video of us up on the stage. Not sure what happened.
I&#8217;ll have to go through them for a little retrospective later. Let me know if you have [...]]]></description>
			<content:encoded><![CDATA[<p>My JavaZone talks are available. Sorry, only in Norwegian. I&#8217;ve scanned through them and I&#8217;m fairly satisfied with the performance. Looks like the Rules engine talk doesn&#8217;t have video of us up on the stage. Not sure what happened.</p>
<p>I&#8217;ll have to go through them for a little retrospective later. Let me know if you have some feedback.</p>
<p>Here they are:</p>
<ul>
<li>Smidig utrulling: <a href="http://tcs.java.no/tcs/?id=2E72A3F8-CD11-4C5C-A29A-63EB3E95149F" target="_blank">http://tcs.java.no/tcs/?id=2E72A3F8-CD11-4C5C-A29A-63EB3E95149F</a></li>
<li>Rules engines vs. domain logic: <a href="http://tcs.java.no/tcs/?id=8E55C6BE-7CB5-4BEA-AB67-30B5FF6D4585" target="_blank">http://tcs.java.no/tcs/?id=8E55C6BE-7CB5-4BEA-AB67-30B5FF6D4585</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.f12.no/wp/2009/09/26/my-javazone-talks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JavaZone 2009 over</title>
		<link>http://blog.f12.no/wp/2009/09/11/javazone-2009-over/</link>
		<comments>http://blog.f12.no/wp/2009/09/11/javazone-2009-over/#comments</comments>
		<pubDate>Fri, 11 Sep 2009 18:55:32 +0000</pubDate>
		<dc:creator>Anders</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[javazone]]></category>
		<category><![CDATA[presentation]]></category>

		<guid isPermaLink="false">http://blog.f12.no/wp/?p=999</guid>
		<description><![CDATA[So the big event for Java geeks in Oslo, JavaZone, is over. I had a blast as always, and a little less people. Moving the overflow area helped a lot. The less people was a conscious choice I&#8217;ve been told, and I wouldn&#8217;t really mind even fewer. But hey, I guess there&#8217;s some economics that [...]]]></description>
			<content:encoded><![CDATA[<p>So the big event for Java geeks in Oslo, <a href="http://javazone.no">JavaZone</a>, is over. I had a blast as always, and a little less people. Moving the overflow area helped a lot. The less people was a conscious choice I&#8217;ve been told, and I wouldn&#8217;t really mind even fewer. But hey, I guess there&#8217;s some economics that has to work too.</p>
<p>My company, <a href="http://www.no.capgemini.com/">Capgemini</a> was present as usual, and the bright girls and guys did an excellent job of tweeting and blogging from the conference. If you know norwegian check out our <a href="http://twitter.com/CapgeminiNorge">twitter stream</a> and <a href="http://www.no.capgemini.com/teknologiblogg/">the technology blog</a>.</p>
<p>We also had two full feature talks, and I was really satisfied with how they went. Always something to change, but over all very satisfied. The topics were (sorry only Norwegian slides):</p>
<ul>
<li>Smidig Utrulling (Agile deployment) &#8211; <a href="http://www.slideshare.net/anderssv/javazone2009-smidig-utrulling">Slides</a></li>
<li>Rules engine vs. Domain logic &#8211; <a href="http://www.slideshare.net/anderssv/javazone2009-rules-engine-vs-domain-logic">Slides</a></li>
</ul>
<p>For the Smidig Utrulling talk I spent a lot of time creating code and examples. They contain some simplified Maven setup and a Java program to do deployment from the Maven repo. Check it out at <a href="http://github.com/anderssv/agile-deploy/tree/master">http://github.com/anderssv/agile-deploy/tree/master</a> . Documentation is scarce as always, but let me know if I can make something better. And feel free to use.</p>
<p>The videos will be available later, but if you want to see the ones that are available (of others, some english speakers) you can check them out at <a href="http://tcs.java.no">http://tcs.java.no</a> . Tandberg delivered the video equipment and it seems like they are doing a hell of a job for the community. Check out the videos, there&#8217;s a lot of good talks there.</p>
<p>Now for some vacation, see you. <img src='http://blog.f12.no/wp/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.f12.no/wp/2009/09/11/javazone-2009-over/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Essential Android Applications</title>
		<link>http://blog.f12.no/wp/2009/07/20/essential-android-applications/</link>
		<comments>http://blog.f12.no/wp/2009/07/20/essential-android-applications/#comments</comments>
		<pubDate>Mon, 20 Jul 2009 16:52:31 +0000</pubDate>
		<dc:creator>Anders</dc:creator>
				<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[applications]]></category>

		<guid isPermaLink="false">http://blog.f12.no/wp/?p=979</guid>
		<description><![CDATA[I have had my HTC Magic for a little over a month eight months now. I&#8217;m still satisfied, though I&#8217;m contemplating getting a Google Nexus One next year. I&#8217;ve updated my apps list below. Not all of them are necessary for handsets like Hero, but I&#8217;m still on Magic so I need some extra extensions. [...]]]></description>
			<content:encoded><![CDATA[<p>I have had my <a href="http://www.htc.com/no/product/magic/overview.html">HTC Magic</a> for a little over <span style="text-decoration: line-through;">a month</span> eight months now. I&#8217;m still satisfied, though I&#8217;m contemplating getting a Google Nexus One next year. I&#8217;ve updated my apps list below. Not all of them are necessary for handsets like Hero, but I&#8217;m still on Magic so I need some extra extensions. <img src='http://blog.f12.no/wp/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong>System</strong></p>
<ul>
<li><a href="http://www.androlib.com/android.application.com-nd-android-pandahome-jtjm.aspx">PandaHome</a> &#8211; Home screen replacement. Gives me as many home screens as I want and a nice dock.</li>
<li><a href="http://www.androlib.com/android.application.edu-mit-locale-zpC.aspx">Locale</a> &#8211; Profiles for your android. Adjusts sound etc. based on location or other parameters.</li>
<li><a href="http://www.androlib.com/android.application.com-mooapps-autolock-An.aspx">AutoLock</a> &#8211; Delays the need to draw your unlock pattern.</li>
<li><a href="http://www.androlib.com/android.application.maximyudin-usefulswitchers-zwB.aspx">Useful Switchers</a> &#8211; Easy access to switch on and off the things that consume battery.</li>
<li><a href="http://www.androlib.com/android.application.com-tni-taskiller-Fim.aspx">TasKiller</a> &#8211; Kill off tasks.</li>
</ul>
<p><strong>SMS and contacts</strong></p>
<ul>
<li><a href="http://www.androlib.com/android.application.com-handcent-sms-zpx.aspx">Handcent SMS</a> &#8211; iPhone like SMS handling with bubbles and all.</li>
<li><a href="http://www.androlib.com/android.application.net-everythingandroid-smspopup-zmA.aspx">SMS Popup</a> &#8211; Popup covering the screen on SMS instead of just the top bar notifications.</li>
<li><a href="http://www.androlib.com/android.application.uk-co-txttools-android-templates-Cwx.aspx">SMS Templates</a> &#8211; Templates for sending SMS.</li>
<li><a href="http://www.androlib.com/android.application.com-nloko-android-syncmypix-qxEz.aspx">SyncMyPix</a> &#8211; Get profile pictures from Facebook as contact photos.</li>
</ul>
<p><strong>Connectivity</strong></p>
<ul>
<li><a href="http://www.androlib.com/android.application.com-camurphy-toggledata-jCE.aspx">Toggle Data</a> &#8211; If you don&#8217;t have a free data plan, you really don&#8217;t want your Android to go checking the net all the time. This lets you turn off and on data usage.</li>
<li><a href="http://www.androlib.com/android.application.mobi-gearsoft-android-wifisync-znt.aspx">Wisync</a> &#8211; Automatically turn off data sync when not on WiFi.</li>
<li><a href="http://www.androlib.com/android.application.com-farproc-wifi-analyzer-jFCm.aspx">Wifi Analyzer</a> &#8211; Nice to have when messing around with my APs to find the free channels.</li>
<li><a href="http://www.androlib.com/android.application.com-wefi-wefi-Czi.aspx">WeFi Connect</a> &#8211; Scan, connect and test open connections in the area until one succeeds.</li>
<li><a href="http://www.androlib.com/android.application.com-googlecode-netsentry-qji.aspx">NetSentry</a> &#8211; Keep track of downloaded data.</li>
<li><a href="http://www.androlib.com/android.application.it-medieval-blueftp-qAFE.aspx">Bluetooth File Transfer</a> &#8211; Send and receive files over Bluetooth (sadly not standard).</li>
</ul>
<p><strong>Productivity</strong></p>
<ul>
<li><a href="http://www.androlib.com/android.application.com-sphericbox-syb-pAB.aspx">Share Your Board</a> &#8211; Takes a snapshot of your whiteboard, corrects the angles, crops and increases contrast. I mail mine to <a href="http://evernote.com">Evernote</a> for search and storage.</li>
<li><a href="http://www.androlib.com/android.application.com-evernote-xEtj.aspx">Evernote</a> &#8211; Capture anything, for ever. It even does OCR on any images so you can search for what you have written.</li>
<li><a href="http://www.androlib.com/android.application.com-mobdev-notepadgdocs-qAAB.aspx">GDocs Notepad</a> &#8211; Notepad that Syncs to a folder on Google Docs.</li>
<li><a href="http://www.androlib.com/android.application.com-rememberthemilk-mobilertm-qtpq.aspx">Remember The Milk</a> &#8211; My essential GTD app. Nice widget for displaying list of current tasks. Only works if you are a paying member of RTM.</li>
<li><a href="http://www.androlib.com/android.application.net-thinkingspace-jFDx.aspx">Thinking Space</a> &#8211; Easy mind maps for Android. Syncs to &#8220;the cloud&#8221;, but no alternative client for editing (yet?).</li>
</ul>
<p><strong>Media</strong></p>
<ul>
<li><a href="http://uk.androlib.com/android.application.com-spotify-mobile-android-ui-qiqj.aspx">Spotify</a> &#8211; Music like I like it.</li>
<li><a href="http://uk.androlib.com/android.application.com-google-android-apps-listen-qqFj.aspx">Google Listen</a> &#8211; Podcasts</li>
<li><a href="http://www.androlib.com/android.application.com-qik-android-wpj.aspx">Qik</a> &#8211; Stream your video live, and store them when you&#8217;re done broadcasting.</li>
<li><a href="http://www.androlib.com/android.application.com-shazam-android-wFn.aspx">Shazam</a> &#8211; Figure out which song is playing on the radio.</li>
<li><a href="http://www.androlib.com/android.application.com-snaptell-mobile-client-android-xpz.aspx">SnapTell</a> &#8211; Snap pictures of videos, books etc. and get online quotes and links to IMDB etc. Also supports bar codes.</li>
<li><a href="http://www.androlib.com/android.application.com-stylem-wallpapers-Azi.aspx">Backgrounds</a> &#8211; Easy way of finding new ones when you get tired of the one you got.</li>
</ul>
<p><strong>Travel and location</strong></p>
<ul>
<li><a href="http://www.androlib.com/android.application.com-conducivetech-android-lite-xjim.aspx">Flightstats Lite</a> &#8211; Not really a good app (just sends you to the web all the time), but nice shortcuts for getting your flight status.</li>
<li><a href="http://www.androlib.com/android.application.com-tripit-xmBp.aspx">TripIt</a> &#8211; Keep track of trips and contacts trips. Nice sync option to have everything on your phone before you leave.</li>
<li><a href="http://www.androlib.com/android.application.no-shortcut-z.aspx">Trafikanten</a> &#8211; Bus, train, tram and subway info for Oslo.</li>
<li><a href="http://uk.androlib.com/android.application.com-codesector-hereiam-nx.aspx">Here I Am</a> &#8211; Send your current location via SMS or Mail.</li>
<li><a href="http://www.androlib.com/android.application.com-google-android-maps-mytracks-iwn.aspx">My Tracks</a> &#8211; Get the tracks and stats from your trip and export GPX file for Geotagging.</li>
<li><a href="http://www.androlib.com/android.application.com-mycitybikes-android-zwp.aspx">MyCityBikes</a> &#8211; Status for bikes in Oslo and other cities. Lets me find nearest bike, and nearest free slot.</li>
<li><a href="http://www.androlib.com/android.application.com-wikitude-jpnp.aspx">Wikitude</a> &#8211; Augumented reality and the ultimate show off app. Can also help you find restaurants etc. near by. <img src='http://blog.f12.no/wp/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </li>
</ul>
<p><strong>Misc</strong></p>
<ul>
<li><a href="http://www.androlib.com/android.application.com-google-zxing-client-android-xzA.aspx">Barcode Scanner</a> &#8211; Scan barcodes and open in browser or do a search. Eases installation of applications on the links below.</li>
<li><a href="http://www.androlib.com/android.application.com-seesmic-xjCE.aspx">Seesmic</a> &#8211; Twitter client with twitter lists.</li>
<li><a href="http://www.androlib.com/android.application.org-transdroid-BDB.aspx">Transdroid</a> &#8211; Add and manage torrents in a variety of torrent clients on your computer.</li>
<li><a href="http://www.androlib.com/android.application.com-brightkite-android-Fij.aspx">Brightkite</a> &#8211; Location based social microblogging. The best so far. <img src='http://blog.f12.no/wp/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
<li><a href="http://www.androlib.com/android.application.bz-ktk-bubble-zin.aspx">Bubble</a> &#8211; Level anything. <img src='http://blog.f12.no/wp/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
<li><a href="http://www.androlib.com/android.application.com-meebo-BEn.aspx">Meebo IM</a> &#8211; Connect to just about any IM service, and use the same account as meebo.com.</li>
</ul>
<p>Anything else I should be using? Let me know. <img src='http://blog.f12.no/wp/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.f12.no/wp/2009/07/20/essential-android-applications/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Java migrations tools</title>
		<link>http://blog.f12.no/wp/2009/07/08/java-migrations-tools/</link>
		<comments>http://blog.f12.no/wp/2009/07/08/java-migrations-tools/#comments</comments>
		<pubDate>Wed, 08 Jul 2009 12:56:19 +0000</pubDate>
		<dc:creator>Anders</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[dbdeploy]]></category>
		<category><![CDATA[deplo]]></category>
		<category><![CDATA[deployment]]></category>
		<category><![CDATA[evolutionary-databases]]></category>
		<category><![CDATA[migrations]]></category>

		<guid isPermaLink="false">http://blog.f12.no/wp/?p=977</guid>
		<description><![CDATA[Wow, it&#8217;s been a while. If you&#8217;re interested in good links follow me on Twitter: http://twitter.com/anderssv . I usually update there these days.
My talk on &#8220;Agile deployment&#8221; got accepted for JavaZone this year! I&#8217;m extremely happy, but a bit scared too.   I&#8217;ll be talking about rolling out changes in a controlled manner, and [...]]]></description>
			<content:encoded><![CDATA[<p>Wow, it&#8217;s been a while. If you&#8217;re interested in good links follow me on Twitter: <a href="http://twitter.com/anderssv">http://twitter.com/anderssv</a> . I usually update there these days.</p>
<p>My talk on &#8220;Agile deployment&#8221; got accepted for <a href="http://javazone.no">JavaZone</a> this year! I&#8217;m extremely happy, but a bit scared too. <img src='http://blog.f12.no/wp/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  I&#8217;ll be talking about rolling out changes in a controlled manner, and one of the things that are usually neglected in this scenario is the database side. I&#8217;ll cover stuff like packaging and deploy of the application too, but that&#8217;s probably the area where I know the least. The database side of things are really sort of my expertise.</p>
<p>In connection with the talk and things at work I did a quick search for Java migration tools. DBDeploy I have used earlier, but there are now a couple of other contenders. Here&#8217;s my list so far of tools that work on sql deltas that can be checked into SCM:</p>
<ul>
<li><a href="http://dbdeploy.com/">DBDeploy</a> &#8211; Tried, few features but works well. Ant based.</li>
<li><a href="http://dbmaintain.sourceforge.net/overview.html">DbMaintain</a> &#8211; Probably has the most features. Ant based.</li>
<li><a href="http://code.google.com/p/c5-db-migration/">c5-db-migration</a> &#8211; Interesting alternative, similar to DBDeploy. Maven based.</li>
<li><a href="http://code.google.com/p/scala-migrations/">scala-migrations</a> &#8211; Based on the Ruby on Rails migrations. Interesting take.</li>
</ul>
<p>I&#8217;ll definitely be looking into DbMaintain and c5-db-migration soon. DbMaintain looks promising, or I migh just contribute to DBDeploy some features. I&#8217;ll let you know how it went. <img src='http://blog.f12.no/wp/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>(updated with scala-migrations after first post)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.f12.no/wp/2009/07/08/java-migrations-tools/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Synchronized calendar and contacts</title>
		<link>http://blog.f12.no/wp/2009/03/28/synchronized-calendar-and-contacts/</link>
		<comments>http://blog.f12.no/wp/2009/03/28/synchronized-calendar-and-contacts/#comments</comments>
		<pubDate>Sat, 28 Mar 2009 18:04:00 +0000</pubDate>
		<dc:creator>Anders</dc:creator>
				<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[calendar]]></category>
		<category><![CDATA[contacts]]></category>
		<category><![CDATA[pim]]></category>

		<guid isPermaLink="false">http://blog.f12.no/wp/?p=949</guid>
		<description><![CDATA[I&#8217;m a geek. I&#8217;m even a geek that try to stay organized, so I like to know that my data are backed up and available wherever I am. I see I still get some traffic from Google on a post that&#8217;s really not relevant any more, so this is sort of an update to that.
Calendar
Google [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m a geek. I&#8217;m even a geek that try to stay organized, so I like to know that my data are backed up and available wherever I am. I see I still get some traffic from Google on <a href="http://blog.f12.no/wp/2005/07/31/how-to-sync-outlook-and-sunbird/">a post that&#8217;s really not relevant any more</a>, so this is sort of an update to that.</p>
<p><strong>Calendar</strong></p>
<p><a href="http://www.google.com/calendar">Google calendar</a> is the hub of my calendar. Even though you don&#8217;t really like or use gcal it&#8217;s a great hub because there&#8217;s support for it in nearly every program that&#8217;s available. So from/to Google Calendar you can use:</p>
<ul>
<li><a href="http://www.goosync.com/">Goosync</a> to sync with my phone. I especially like the ability to sync several calendars with different keywords.</li>
<li><a href="http://www.calgoo.com/connect/solution.do">Calgoo connect</a> to sync with Outlook</li>
<li><a href="https://addons.mozilla.org/en-US/sunbird/addon/4631">Google calendar extension</a> to sync with Sunbird</li>
</ul>
<p><strong>Contacts</strong></p>
<p>For contacts it has always been sort of separate for phone and mail. With more and more happening on my phone it&#8217;s quite relevant to join these two registers. For contacts I guess the phone serves as some sort of hub. I use:</p>
<ul>
<li><a href="http://www.goosync.com">Goosync</a> to sync contacts so they&#8217;re available in <a href="http://gmail.com">Gmail</a></li>
<li><a href="http://zyb.com">ZYB</a> to sync and clean up contacts (the merge duplicates feature is pretty nice). ZYB also has the surprising feature of updating your contacts with the latest information from <a href="http://www.facebook.com">Facebook</a>. This also includes pictures, so suddenly I have avatars for many of my contacts.</li>
</ul>
<p>I have a Nokia Series 60 phone, but Goosync which is used for both contacts and calendar only requires SyncML so it should work on many phones.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.f12.no/wp/2009/03/28/synchronized-calendar-and-contacts/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Disconnected architecture</title>
		<link>http://blog.f12.no/wp/2009/03/28/disconnected-architecture/</link>
		<comments>http://blog.f12.no/wp/2009/03/28/disconnected-architecture/#comments</comments>
		<pubDate>Sat, 28 Mar 2009 13:29:53 +0000</pubDate>
		<dc:creator>Anders</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[design]]></category>

		<guid isPermaLink="false">http://blog.f12.no/wp/?p=945</guid>
		<description><![CDATA[I was reading an interview with Renzo Piano in this fridays issue of D2. He is one of the most revered architects of our time and is responsible for many great buildings, amongst them the Pompidou centre in Paris which was his first big break through. He is known for his innovative ideas, but also [...]]]></description>
			<content:encoded><![CDATA[<p>I was reading <a href="http://www.dn.no/d2/arkitektur/article1639191.ece">an interview with Renzo Piano in this fridays issue of D2</a>. He is one of the most revered architects of our time and is responsible for many great buildings, amongst them <a href="http://en.wikipedia.org/wiki/Centre_Georges_Pompidou">the Pompidou centre in Paris</a> which was his first big break through. He is known for his innovative ideas, but also his very good technical and functional execution of the designs. He was interviewed in connection with the <a href="http://www.tjuvholmen.no/?aid=9073255">Tjuvholmen project in Oslo</a>, and one of the quotes was just spot on (my translation):</p>
<blockquote><p>My fundamental reason has it&#8217;s origins in my builder background. To me, architecture is a craft. You can&#8217;t separate the idea of a building from the execution of it, even though a lot of architects act like it. This has been catastrophic for architecture. &#8211; Renzo Piano</p></blockquote>
<p>In the software world there seems to be a notion that you can draw the architecture, and then let someone else design the details. Because it is based on high level ideas and sometimes faulty assumptions it becomes a resistance for building a good solution, in stead of enabling a solid foundation. Stop separating the architecture from execution, and make sure it is something that is flexible and evolves as execution moves forward. In other words: Architects need to take part in the execution to see the constraints the architecture imposes, and see new opportunities for the architecture to evolve into.</p>
<p>I&#8217;m not going to go into that rant now, that&#8217;s content for another post, but that also means that the architecture must be evolvable. And less code is more flexible than a lot of code. Strangely enough most architectural constraints tend to lead to more code, not less. <img src='http://blog.f12.no/wp/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.f12.no/wp/2009/03/28/disconnected-architecture/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Agile deployment talk retro</title>
		<link>http://blog.f12.no/wp/2009/03/27/agile-deployment-talk-retro/</link>
		<comments>http://blog.f12.no/wp/2009/03/27/agile-deployment-talk-retro/#comments</comments>
		<pubDate>Fri, 27 Mar 2009 16:25:28 +0000</pubDate>
		<dc:creator>Anders</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[deployment]]></category>
		<category><![CDATA[slides]]></category>
		<category><![CDATA[talk]]></category>

		<guid isPermaLink="false">http://blog.f12.no/wp/?p=937</guid>
		<description><![CDATA[On wednesday I did a talk at the Norwegian Java User Group about agile deployment. The slides (in norwegian) are available here as well as embedded on the bottom of this post.
From the comments and questions I got afterwards, I could see how I should have included more detail. That would have made it even [...]]]></description>
			<content:encoded><![CDATA[<p>On wednesday I did a talk at the <a href="http://www.java.no">Norwegian Java User Group</a> about agile deployment. <a href="http://www.slideshare.net/anderssv/smidig-utrulling">The slides (in norwegian) are available here</a> as well as embedded on the bottom of this post.</p>
<p>From the comments and questions I got afterwards, I could see how I should have included more detail. That would have made it even more interesting for that kind of crowd. I probably also should have clearified that I had limited time to prepare and that this was just a slightly extended version of <a href="http://xp.meetup.com/13/calendar/8996347/">a lightning talk I held at XP Meetup last year</a>. I hope to get the chance to correct this in a <a href="http://www.javazone.no">JavaZone</a> talk with more details. If you did see the talk and have comments please do leave them at the bottom of the page. <img src='http://blog.f12.no/wp/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Many of the questions I got revolved around the handling of the database, so I just thought I should give some pointers here to articles that better describes what I have been up to:</p>
<ul>
<li><a href="http://blog.f12.no/wp/2009/01/03/agile-databases/">Agile databases</a></li>
<li><a href="http://blog.f12.no/wp/2009/01/03/migrations-for-java/">Migrations for Java</a></li>
<li><a href="http://blog.f12.no/wp/2009/01/24/the-new-guy-and-his-database/">The new guy and his database</a></li>
</ul>
<p>Check them out if you&#8217;re curious.</p>
<div style="width:425px;text-align:left" id="__ss_1208211"><a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/anderssv/smidig-utrulling?type=powerpoint" title="Smidig Utrulling">Smidig Utrulling</a><object style="margin:0px" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=cap-smidigutrulling-090327030327-phpapp02&#038;rel=0&#038;stripped_title=smidig-utrulling" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=cap-smidigutrulling-090327030327-phpapp02&#038;rel=0&#038;stripped_title=smidig-utrulling" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
<div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;">View more <a style="text-decoration:underline;" href="http://www.slideshare.net/">presentations</a> from <a style="text-decoration:underline;" href="http://www.slideshare.net/anderssv">Anders Sveen</a>.</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.f12.no/wp/2009/03/27/agile-deployment-talk-retro/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 9.150 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2010-03-12 04:44:00 -->
