<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Kevin Potgieter</title>
	<atom:link href="http://kevinpotgieter.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://kevinpotgieter.wordpress.com</link>
	<description>Musings on Software Development, Life and everything inbetween.</description>
	<lastBuildDate>Fri, 06 Jan 2012 11:34:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='kevinpotgieter.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Kevin Potgieter</title>
		<link>http://kevinpotgieter.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://kevinpotgieter.wordpress.com/osd.xml" title="Kevin Potgieter" />
	<atom:link rel='hub' href='http://kevinpotgieter.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Android Development Part 2 &#8211; RoboGuice &amp; Robolectric</title>
		<link>http://kevinpotgieter.wordpress.com/2011/12/13/android-development-part-2-roboguice-robolectric/</link>
		<comments>http://kevinpotgieter.wordpress.com/2011/12/13/android-development-part-2-roboguice-robolectric/#comments</comments>
		<pubDate>Tue, 13 Dec 2011 04:00:10 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Android Dependency Injection]]></category>
		<category><![CDATA[Android Development]]></category>
		<category><![CDATA[Android Testing]]></category>
		<category><![CDATA[Android Unit Test]]></category>
		<category><![CDATA[Android Unit Testing]]></category>
		<category><![CDATA[RoboGuice]]></category>
		<category><![CDATA[Robolectric]]></category>

		<guid isPermaLink="false">http://kevinpotgieter.wordpress.com/?p=103</guid>
		<description><![CDATA[Wow, this really is a belated post! I apologise for taking nearly 6 months to write this, but things have gotten me rather distracted over the past couple of months which hopefully I&#8217;ll share in the next few blog posts to come (I promise I won&#8217;t take another 6 more months to write those either! [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kevinpotgieter.wordpress.com&amp;blog=13357298&amp;post=103&amp;subd=kevinpotgieter&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Wow, this really is a belated post! I apologise for taking nearly 6 months to write this, but things have gotten me rather distracted over the past couple of months which hopefully I&#8217;ll share in the next few blog posts to come (I promise I won&#8217;t take another 6 more months to write those either! <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  )</p>
<p>So, as promised in my <a title="Android Development Part 1 – Choosing the right project structure" href="http://kevinpotgieter.wordpress.com/2011/06/22/android-development-part-1-choosing-the-right-project-structure/">previous post</a>, I said I&#8217;d talk about some frameworks to get you up and running quickly with building android applications. In fact there are 2 which I found invaluable. <a title="RoboGuice" href="http://code.google.com/p/roboguice/" target="_blank">RoboGuice</a>, and <a title="Robolectric" href="http://pivotal.github.com/robolectric/" target="_blank">Robolectric</a>.</p>
<h2>RoboGuice</h2>
<p>If you&#8217;re familiar with dependency injection and your normal run of the mill <a title="Inversion of Control" href="http://en.wikipedia.org/wiki/Inversion_of_control" target="_blank">IoC</a> frameworks, then RoboGuice will make you feel right at home! I&#8217;d already had quite a bit of experience with Spring, so using RoboGuice was relatively straight forward. They have a very good &#8220;<a title="RoboGuice - Getting Started" href="http://code.google.com/p/roboguice/wiki/SimpleExample">Getting Started</a>&#8221; guide on their site,  which I encourage you to read if you need a little nudge in the right direction. What sealed it for me was that RoboGuice could take care of the boring stuff for me, like injecting my Views, Resources and Services which I would have normally had to painstakingly code the lookups for myself. You&#8217;ll find that without RoboGuice, you&#8217;ll be coding a lot of lines that look like this <em>(Unashamedly plagiarized from RoboGuice&#8217;s getting started page!)</em>:</p>
<p><pre class="brush: java;">
class AndroidWay extends Activity {
    TextView name;
    ImageView thumbnail;
    LocationManager loc;
    Drawable icon;
    String myName;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        name      = (TextView) findViewById(R.id.name);
        thumbnail = (ImageView) findViewById(R.id.thumbnail);
        loc       = (LocationManager) getSystemService(Activity.LOCATION_SERVICE);
        icon      = getResources().getDrawable(R.drawable.icon);
        myName    = getString(R.string.app_name);
        name.setText( &quot;Hello, &quot; + myName );
    }
}
</pre></p>
<p>So as you can see, there is a fair amount of plumbing going on here, and this is just a simple view. Imagine a form input view which has a myriad of input and label fields, from drop downs, to TextViews, to Lists etc. Man I&#8217;m getting a headache just thinking how messy it could get! <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  So, lets face it, who really wants to have to type that line to find the view, and remember to cast it correctly,  or do that laborious resource lookup &#8211; quite frankly, its a waste of time!</p>
<p>So by simply using the <code>@InjectView</code>, <code>@InjectResource</code> or just plain <code>@Inject</code>, you can avoid all this pain quite easily, and here is a sample of the above example using RoboGuice <em>(Unashamedly plagiarized from RoboGuice&#8217;s getting started page!)</em>:</p>
<p><pre class="brush: java;">
class RoboWay extends RoboActivity {
    @InjectView(R.id.name)             TextView name;
    @InjectView(R.id.thumbnail)        ImageView thumbnail;(Unashamedly plagiarized from Roboguice's getting started page!)
    @InjectResource(R.drawable.icon)   Drawable icon;
    @InjectResource(R.string.app_name) String myName;
    @Inject                            LocationManager loc;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        name.setText( &quot;Hello, &quot; + myName );
    }
}
</pre></p>
<h2>Robolectric</h2>
<p>Now with RoboGuice and all its injectable goodness, you wouldn&#8217;t be accused of wondering if this makes your testing easier&#8230; well let me put your mind at rest and tell you, that YES, it most certainly does! And what better way to test your functionality, than with an android testing framework known as Robolectric. I&#8217;ve seen in the past, quite a few approaches to testing android apps, and some of them involved actually booting up an emulator, deploying the package, and running the app with the tests. This is a very time-consuming operation, and to be honest, most of the time, we just want to test the functionality that we have written, which can&#8217;t be done without the inclusion of the activities and views along with their respective interactions. How does Robolectric achieve this? Well, to quote from their website:</p>
<blockquote><p>Robolectric makes this possible by intercepting the loading of the Android classes and rewriting the method bodies. Robolectric re-defines Android methods so they return null (or 0, false, etc.), or if provided Robolectric will forward method calls to shadow Android objects giving the Android SDK behavior. Robolectric provides a large number of shadow objects covering much of what a typical application would need to test-drive the business logic and functionality of your application. Coverage of the SDK is improving every day.</p></blockquote>
<p>So, what this essentially boils down to is that, Robolectric has its own Test runner(which you use with the @RunWith annotation), which will mimic your android device, by returning what effectively is a mock object for things like location services, or views, or resources etc. You can then even override these mock objects &#8211; also referred to &#8220;shadow objects&#8221; &#8211; which you can code yourself to return a predicted outcome. This allows you to test your android app from within a JVM, even inside your own IDE! No need for bootstrapping an emulator, no need for compiling and packaging it into a dex and deploying. Just write the test, and run. The beauty of this, at least for me, is that I can now run these tests via maven, and include them as part of my CI build. Job Done. You might not be able to catch form factor bugs in this manner, but I believe that trying to test for different form factors on different devices provided by different vendors actually requires a different approach which I haven&#8217;t yet had to tackle &#8211; but when I do, my solution will be up here. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Well that&#8217;s all for now. I hope this helps any of you out there thinking of writing an android app, and need help getting started. If you can get your project structure right, and use these two frameworks I&#8217;ve mentioned, you&#8217;ll be well on your well to a painless and happily filled developement life! <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kevinpotgieter.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kevinpotgieter.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/kevinpotgieter.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kevinpotgieter.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/kevinpotgieter.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/kevinpotgieter.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/kevinpotgieter.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/kevinpotgieter.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/kevinpotgieter.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kevinpotgieter.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/kevinpotgieter.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kevinpotgieter.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/kevinpotgieter.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kevinpotgieter.wordpress.com/103/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kevinpotgieter.wordpress.com&amp;blog=13357298&amp;post=103&amp;subd=kevinpotgieter&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://kevinpotgieter.wordpress.com/2011/12/13/android-development-part-2-roboguice-robolectric/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/983c19a93cd267db1d401818c29f6363?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">kevinpotgieter</media:title>
		</media:content>
	</item>
		<item>
		<title>Android Development Part 1 &#8211; Choosing the right project structure</title>
		<link>http://kevinpotgieter.wordpress.com/2011/06/22/android-development-part-1-choosing-the-right-project-structure/</link>
		<comments>http://kevinpotgieter.wordpress.com/2011/06/22/android-development-part-1-choosing-the-right-project-structure/#comments</comments>
		<pubDate>Wed, 22 Jun 2011 07:00:26 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[maven-android-plugin]]></category>

		<guid isPermaLink="false">http://kevinpotgieter.wordpress.com/?p=85</guid>
		<description><![CDATA[I&#8217;ve been doing some android development now for a little over 4 months, and I thought I&#8217;d try to convey my lessons learnt while both celebrating my successes, and bashing my head on my not so grandest moments. I&#8217;ll attempt to break my journey into a few blog posts which will talk about project setup, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kevinpotgieter.wordpress.com&amp;blog=13357298&amp;post=85&amp;subd=kevinpotgieter&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been doing some android development now for a little over 4 months, and I thought I&#8217;d try to convey my lessons learnt while both celebrating my successes, and bashing my head on my not so grandest moments. I&#8217;ll attempt to break my journey into a few blog posts which will talk about project setup, all they way through to choosing the right frameowkrs, and deployment of the app.</p>
<p>So to start, lets talk about how to structure your project. I&#8217;ve used eclipse to develop my android goodness, and I&#8217;ve found it to suffice for what I need &#8211; although I am pretty tempted these days to IntelliJ, but thats a story for another blog post! <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>The best way I found to structure my project, was to use maven. Honestly, I could have just stuck with the standard project that comes with the android SDK, but there&#8217;s something that really erks me about not describing my dependiencies in a POM file! This also makes me feel a little more cosier inside for when I eventually try and set the beast up to run a Jenkins build!</p>
<p>OK, so we&#8217;ve established that we need to use Maven. Thats great, but how do I go about trying to structure where my files go, and what about the nice feature in eclipse that allows me to build my android project, and even deploy it?! Well, here comes the neat little plugin called : <a title="Maven Android Plugin" href="http://code.google.com/p/maven-android-plugin/" target="_blank">maven-android-plugin</a> This is a fantastic little maven plugin to help you build you project, and to help you along, below is a xml snippet of what it would look like configured in your pom:</p>
<p><pre class="brush: xml;">
&lt;dependencies&gt;
	&lt;dependency&gt;
		&lt;groupId&gt;com.google.android&lt;/groupId&gt;
		&lt;artifactId&gt;android&lt;/artifactId&gt;
		&lt;version&gt;2.2.1&lt;/version&gt;
		&lt;scope&gt;provided&lt;/scope&gt;
	&lt;/dependency&gt;
&lt;/dependencies&gt;
&lt;!-- Other config ommited for brevity --&gt;
&lt;build&gt;
&lt;plugins&gt;
	&lt;plugin&gt;
		&lt;groupId&gt;com.jayway.maven.plugins.android.generation2&lt;/groupId&gt;
		&lt;artifactId&gt;maven-android-plugin&lt;/artifactId&gt;
		&lt;version&gt;2.9.0-SNAPSHOT&lt;/version&gt; &lt;!-- 2.8.4 --&gt;
		&lt;configuration&gt;
			&lt;sdk&gt;
				&lt;path&gt;${env.ANDROID_HOME}&lt;/path&gt;
				&lt;!-- platform or api level (api level 4 = platform 1.6)--&gt;
				&lt;platform&gt;8&lt;/platform&gt;
			&lt;/sdk&gt;
			&lt;device&gt;&lt;!-- Insert the device ID here if you want to deploy to an actual device --&gt;&lt;/device&gt;
			&lt;!--  emulator&gt;emulator_name&lt;/emulator --&gt;
			&lt;deleteConflictingFiles&gt;true&lt;/deleteConflictingFiles&gt;
			&lt;undeployBeforeDeploy&gt;true&lt;/undeployBeforeDeploy&gt;
			&lt;coreLibrary&gt;true&lt;/coreLibrary&gt;
		&lt;/configuration&gt;
		&lt;extensions&gt;true&lt;/extensions&gt;
	&lt;/plugin&gt;
&lt;/plugins&gt;
&lt;/build&gt;
</pre></p>
<p>One thing worth mentioning here, is the version of the maven-android-plugin I&#8217;m using. Its actually my own rolled version which I forked from the github repo because I needed to fix a bug. The bug fix has been included into the currently 3.0.0-alpha-1 release. You can read about it <a href="http://kevinpotgieter.wordpress.com/2011/06/07/maven-android-plugin-core-library-option-not-quite-working/">here</a>. I haven&#8217;t yet updated to the 3.0.0-alpha-1 version, because I haven&#8217;t had time yet to make sure everything still works. I can&#8217;t see anything majorly wrong with using this version for now, but do be warned.. it is an alpha after all!</p>
<p>With that started, I&#8217;ll be writing next about some really cool frameworks there are for the android platform, that could easily cut down on the amount of code you&#8217;d have to write!</p>
<p>Till next time&#8230;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kevinpotgieter.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kevinpotgieter.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/kevinpotgieter.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kevinpotgieter.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/kevinpotgieter.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/kevinpotgieter.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/kevinpotgieter.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/kevinpotgieter.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/kevinpotgieter.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kevinpotgieter.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/kevinpotgieter.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kevinpotgieter.wordpress.com/85/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/kevinpotgieter.wordpress.com/85/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kevinpotgieter.wordpress.com/85/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kevinpotgieter.wordpress.com&amp;blog=13357298&amp;post=85&amp;subd=kevinpotgieter&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://kevinpotgieter.wordpress.com/2011/06/22/android-development-part-1-choosing-the-right-project-structure/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/983c19a93cd267db1d401818c29f6363?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">kevinpotgieter</media:title>
		</media:content>
	</item>
		<item>
		<title>AWS winning formula has to be Agile!</title>
		<link>http://kevinpotgieter.wordpress.com/2011/06/20/aws-winning-formula-has-to-be-agile/</link>
		<comments>http://kevinpotgieter.wordpress.com/2011/06/20/aws-winning-formula-has-to-be-agile/#comments</comments>
		<pubDate>Mon, 20 Jun 2011 15:24:29 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[Methodologies]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[Amazon Web Services]]></category>
		<category><![CDATA[AWS]]></category>
		<category><![CDATA[Methodology]]></category>

		<guid isPermaLink="false">http://kevinpotgieter.wordpress.com/?p=78</guid>
		<description><![CDATA[Recently I was at the Amazon Web Services summit, to try to sponge, yet again, as much information as I could. There&#8217;s no surprise that I left at the end of the day, not only exhausted, but with a notebook, full of my scribblings &#8211; both in the form of frantic notes, and the occasional [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kevinpotgieter.wordpress.com&amp;blog=13357298&amp;post=78&amp;subd=kevinpotgieter&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Recently I was at the Amazon Web Services summit, to try to sponge, yet again, as much information as I could. There&#8217;s no surprise that I left at the end of the day, not only exhausted, but with a notebook, full of my scribblings &#8211; both in the form of frantic notes, and the occasional stick man!</p>
<p>The last two summits I&#8217;ve attended here in London, have had increasing amounts of attendance, so I wasn&#8217;t too surprised to find that they had split up the day with different tracks for the different types of customer they had anticipated. Namely the newbie, who wants to know what AWS and the cloud is all about, then the advanced user, who&#8217;s been using it for a while and needs some tips and tricks, and then the &#8220;guided track&#8221; for those interested in Cloud Solutions.</p>
<p>For the most part, I found myself hopping between the novice and advanced tracks, trying to squeeze out the best I could from each session. However, I&#8217;m not going to describe all that I learnt there, because to be honest, a lot of what was covered there I&#8217;m pretty sure is material you could find on their website with a good enough search. No, what I am going to talk about it something that really struck me about AWS&#8217;s success.</p>
<p>It&#8217;s no secret, AWS are good at what they do, and they&#8217;re only getting better. What once started out as a modest attempt to offer services with names such as Elastic Compute Cloud (renting out computing capacity), Simple Storage Service (renting data storage) and <a href="https://www.mturk.com/mturk/welcome">Mechanical Turk</a> (I didn&#8217;t know what that was either!), has now grown into what I think is a rather large, and ever-growing business. One of the reasons for their renowned success, hit me like a brick during a talk by Matt Woods &#8211; AWS are actually Agile!</p>
<p>Amazon have consistently displayed their uncanny ability to deliver small sets of features to their customers, allow for feedback, then iterate and improve. Rinse and repeat. This constant delivery of features &#8211; which by the way I think has been something like 6 new features a month on average &#8211; is what creates the buzz, and we as developers really love to try out new things. And as we do, we find some aspects which aren&#8217;t always to our liking, we tell AWS, and BINGO! they fix or enhance it. And in some cases I&#8217;ve heard from customers that they no sooner have given feedback, and the fix just happened to be released the next day!</p>
<p>AWS have been very focussed on customer feedback, and they take it very seriously. They listen, react, and in doing so, help strengthen their relationships with their customers. And I think they should be commended for adopting such a simple but effective strategy.</p>
<p>These very agile tenets of short cycles of delivery, frequent customer communication, and rapid response to what your customers regard as the most important focus, are what makes for delivering quality goods. In the case of AWS, it&#8217;s delivering a quality service, and in the case of software development, its delivering quality software.  So really they&#8217;re not very different. It just goes to show that, agile isn&#8217;t something that only has to be practised in a software development environment.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kevinpotgieter.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kevinpotgieter.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/kevinpotgieter.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kevinpotgieter.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/kevinpotgieter.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/kevinpotgieter.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/kevinpotgieter.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/kevinpotgieter.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/kevinpotgieter.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kevinpotgieter.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/kevinpotgieter.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kevinpotgieter.wordpress.com/78/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/kevinpotgieter.wordpress.com/78/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kevinpotgieter.wordpress.com/78/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kevinpotgieter.wordpress.com&amp;blog=13357298&amp;post=78&amp;subd=kevinpotgieter&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://kevinpotgieter.wordpress.com/2011/06/20/aws-winning-formula-has-to-be-agile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/983c19a93cd267db1d401818c29f6363?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">kevinpotgieter</media:title>
		</media:content>
	</item>
		<item>
		<title>Belated SpringSource S2G Forum Notes</title>
		<link>http://kevinpotgieter.wordpress.com/2011/06/09/belated-springsource-s2g-forum-notes/</link>
		<comments>http://kevinpotgieter.wordpress.com/2011/06/09/belated-springsource-s2g-forum-notes/#comments</comments>
		<pubDate>Thu, 09 Jun 2011 07:51:36 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[S2G Tomcat 7]]></category>
		<category><![CDATA[Spring Data]]></category>
		<category><![CDATA[Spring MVC 3.1 Update]]></category>

		<guid isPermaLink="false">http://kevinpotgieter.wordpress.com/?p=76</guid>
		<description><![CDATA[I&#8217;ve been rather ill recently, and so this post is a bit belated, but still worth mentioning I think &#8211; if for anything else, just to refresh my memory I recently attended the SpringSource S2G Forum Series at the London Hilton. There were some good sessions being presented, and sometimes I wish I could clone myself, as more often [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kevinpotgieter.wordpress.com&amp;blog=13357298&amp;post=76&amp;subd=kevinpotgieter&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been rather ill recently, and so this post is a bit belated, but still worth mentioning I think &#8211; if for anything else, just to refresh my memory <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>I recently attended the SpringSource S2G Forum Series at the London Hilton. There were some good sessions being presented, and sometimes I wish I could clone myself, as more often than not, there&#8217;s always more than one really good session running in the same time slot!</p>
<p>My three big take-aways were Tomcat 7, Spring MVC 3.1 update and the Spring Data Project, which I&#8217;ll talk about here.</p>
<h3>Tomcat 7</h3>
<p>So, first up, after the keynote, was a brush over what&#8217;s new in Tomcat 7. I must say, there are some rather neat enhancements in v7 that I&#8217;ll be looking forward to(but not necessarily using):</p>
<ul>
<li>Support for parallel deployment
<ul>
<li>This is fantastic IMO. This enables you to deploy multiple different versions on the same web application (WAR) concurrently, all being accessed by the same context path. Tomcat will automatically route new sessions to the latest version of the application, while current sessions on older versions will continue their requests to those versions until their session expires. This greatly reduces deployment costs, and having to worry about deployment upgrade schedules/windows. Upgrading using parallel deployments will make upgrading seamless.</li>
</ul>
</li>
<li>The ability to configure an active tomcat instance via JMX from just running the server component.
<ul>
<li>I think this is great news for those who want absolute control over how their Tomcat instance is configured. With the capability of being able to configure tomcat in this fashion, opens the doors for tools/utilities to be written to programmatically create instances just how you like them.</li>
</ul>
</li>
<li>The new Cross Site Request Forgery(CSRF) protection filter
<ul>
<li>This filter basically generates a nonce value after every request, and stores the value in the user&#8217;s session. The nonce has to be added as a request parameter on every request, and Tomcat will verify if the values are the same, to check to see if the request wasn&#8217;t from somewhere else.</li>
</ul>
</li>
<li>Various default configurations
<ul>
<li>Access Logs on by default</li>
<li>LockoutRealm used by default</li>
<li>DefaultServlet serves content from the root of the context by default</li>
</ul>
</li>
</ul>
<p>I was glad to hear that SpringSource tc Server and the Tomcat 7 source were being kept in line , and felt at ease when I was reassured that whatever changes are being made in TC7 are soon finding their way into SpringSource tc Server.</p>
<h3>Spring 3.1 MVC Update</h3>
<p>I&#8217;m noticing more and more of a focus these days on Java based configuration with Spring, and this was highlighted in the Spring MVC session. Rossen Stoyanchev did a good job highlighting this point, and gave some good examples which demonstrated this. I&#8217;m still not 100% converted though, and I still feel that there is a place for xml configuration, but if I&#8217;m honest, I am beginning to find myself coding my configuration more these days.</p>
<p>There is much better support now for making customisations to any one or more aspects of the mcv namespace. whereas before if you were happy with the default configuration setup, all you previously had to do to setup most of the web bits was to have the following line in your xml config:</p>
<p>&lt;mcv:annotation-config/&gt;</p>
<p>However, if you wanted to setup an xml marshaller for example, then you pretty much had to redefine all the parts that the previous convinience xml fragment did for you. This was very much a pain, and now is easy to accomplish.  All that is required is that you annotate your configuration class with <code>@EnableWebMvc</code>(yes, you have to use the java based configuration route if you want to avert the previous pain) and extend the <code>WebMvcConfigurerAdapter</code> class. The <code>WebMvcConfigurerAdapter</code> class provides you with many callback methods to add to/modify what is configured by default.</p>
<p>Along with easier MVC configuration, there is also now a bit more transparency about what gets configured for you under the hood. If you take a look now at the<code>WebMvcConfiguration</code> class, you can now see what&#8217;s being configured for you now by default.</p>
<p>Other areas which were mentioned, but I am yet to explore, are features around pre/post validation hooks, as well as pre/post bind when binding your form object to a controller method invocation.</p>
<p>Spring Data Project</p>
<p>Now this is something quite exciting, and rather new to me. I like the idea Spring has here to build a data-access framework to give developers the capability to have their business object data stored in different data stores. The clever people over a SpringSource have built it in such a way that you can even have different parts of your domain object for example, stored in different data stores, so you might have some info stored in a graph database, some info in a regular RDBMS store, and if you have data that has no relation to anything, but you still need to store it, you can have that stored in a NoSQL data store, and all this, will be transparent to the user. Brilliant! If you have a application that stores data(who doesn&#8217;t?!), then I&#8217;d strongly suggest that Spring Data be given a once over. I for one think its a move forward in the right direction, empowered to store your data where it needs to be stored best, without having to worry about the vast amount of plumbing involved to get it done!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kevinpotgieter.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kevinpotgieter.wordpress.com/76/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/kevinpotgieter.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kevinpotgieter.wordpress.com/76/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/kevinpotgieter.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/kevinpotgieter.wordpress.com/76/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/kevinpotgieter.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/kevinpotgieter.wordpress.com/76/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/kevinpotgieter.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kevinpotgieter.wordpress.com/76/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/kevinpotgieter.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kevinpotgieter.wordpress.com/76/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/kevinpotgieter.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kevinpotgieter.wordpress.com/76/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kevinpotgieter.wordpress.com&amp;blog=13357298&amp;post=76&amp;subd=kevinpotgieter&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://kevinpotgieter.wordpress.com/2011/06/09/belated-springsource-s2g-forum-notes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/983c19a93cd267db1d401818c29f6363?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">kevinpotgieter</media:title>
		</media:content>
	</item>
		<item>
		<title>Maven android plugin, &#8220;&#8211;core-library&#8221; option not quite working</title>
		<link>http://kevinpotgieter.wordpress.com/2011/06/07/maven-android-plugin-core-library-option-not-quite-working/</link>
		<comments>http://kevinpotgieter.wordpress.com/2011/06/07/maven-android-plugin-core-library-option-not-quite-working/#comments</comments>
		<pubDate>Tue, 07 Jun 2011 08:09:26 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[--core-library]]></category>
		<category><![CDATA[android Ill-advised or mistaken usage of a core class (java.* or javax.*)]]></category>
		<category><![CDATA[maven android plugin --core-library]]></category>
		<category><![CDATA[maven-android-plugin]]></category>

		<guid isPermaLink="false">http://kevinpotgieter.wordpress.com/?p=72</guid>
		<description><![CDATA[I&#8217;ve recently been working on building some android based applications now for the passed 3 or so months, and its been a fantastic journey so far. However, there have been times where I&#8217;ve found I talk to myself quite a bit, and for most part, I find myself muttering &#8220;what the heck is that supposed [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kevinpotgieter.wordpress.com&amp;blog=13357298&amp;post=72&amp;subd=kevinpotgieter&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve recently been working on building some android based applications now for the passed 3 or so months, and its been a fantastic journey so far. However, there have been times where I&#8217;ve found I talk to myself quite a bit, and for most part, I find myself muttering &#8220;what the heck is that supposed to mean?!&#8221;</p>
<p>This was one such occasion. I use maven for building my android project, but I had recently started using Springs RestTemplate, and there were a few libraries that I had to import while attempting to build REST based communications.</p>
<p>One thing that caught me off-guard, was, that when I came to build the project, I was now presented with a number of errors, all with the same sort of warning which read as:</p>
<blockquote><p>[INFO] [android:dex {execution: default-dex}]<br />
[INFO] C:\Program Files\Java\jdk1.6.0_20\jre\bin\java [-jar, C:\Program Files (x86)\Android\android-sdk-windows\platform-tools\lib\dx.jar, --dex, --output=C:\dev\android-sample\target\classes.dex, C:\dev\android-sample\target\android-classes]<br />
[INFO]<br />
[INFO] trouble processing &#8220;javax/xml/bind/annotation/adapters/CollapsedStringAdapter.class&#8221;:<br />
[INFO]<br />
[INFO] Ill-advised or mistaken usage of a core class (java.* or javax.*)<br />
[INFO] when not building a core library.<br />
[INFO]<br />
[INFO] This is often due to inadvertently including a core library file<br />
[INFO] in your application&#8217;s project, when using an IDE (such as<br />
[INFO] Eclipse). If you are sure you&#8217;re not intentionally defining a<br />
[INFO] core class, then this is the most likely explanation of what&#8217;s<br />
[INFO] going on.<br />
[INFO]<br />
[INFO] However, you might actually be trying to define a class in a core<br />
[INFO] namespace, the source of which you may have taken, for example,<br />
[INFO] from a non-Android virtual machine project. This will most<br />
[INFO] assuredly not work. At a minimum, it jeopardizes the<br />
[INFO] compatibility of your app with future versions of the platform.<br />
[INFO] It is also often of questionable legality.<br />
[INFO]<br />
[INFO] If you really intend to build a core library &#8212; which is only<br />
[INFO] appropriate as part of creating a full virtual machine<br />
[INFO] distribution, as opposed to compiling an application &#8212; then use<br />
[INFO] the &#8220;&#8211;core-library&#8221; option to suppress this error message.<br />
[INFO]<br />
[INFO] If you go ahead and use &#8220;&#8211;core-library&#8221; but are in fact<br />
[INFO] building an application, then be forewarned that your application<br />
[INFO] will still fail to build or run, at some point. Please be<br />
[INFO] prepared for angry customers who find, for example, that your<br />
[INFO] application ceases to function once they upgrade their operating<br />
[INFO] system. You will be to blame for this problem.<br />
[INFO]<br />
[INFO] If you are legitimately using some code that happens to be in a<br />
[INFO] core package, then the easiest safe alternative you have is to<br />
[INFO] repackage that code. That is, move the classes in question into<br />
[INFO] your own package namespace. This means that they will never be in<br />
[INFO] conflict with core system classes. JarJar is a tool that may help<br />
[INFO] you in this endeavor. If you find that you cannot do this, then<br />
[INFO] that is an indication that the path you are on will ultimately<br />
[INFO] lead to pain, suffering, grief, and lamentation.<br />
[INFO]<br />
[INFO] 1 error; aborting<br />
[INFO] &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
[ERROR] BUILD ERROR<br />
[INFO] &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
[INFO]</p></blockquote>
<p>Now that&#8217;s a pretty scary error to have, and on subsequent investigation, it seems like some marshalling libraries I&#8217;ve imported have the same namespace as some included java namespaces. Not to worry, I trust that the developers of this marshalling library know what they&#8217;re doing, so I just want it to build. But alas, following the instructions to use the &#8211;core-library option, the maven-android-plugin still refuses to build, and you just get back the same build error message.</p>
<p>I then found this <a href="http://code.google.com/p/maven-android-plugin/issues/detail?id=157" target="_blank">nice bug report</a>, which detailed pretty much everything I was experiencing &#8211; thank you to whoever you might be! So I thought the least I could do was fix the bug, if it was so well logged!</p>
<p>It turns out that the maven-android-plugin had a small bug in it, where the order of the options weren&#8217;t quite 100%. The GitHub pull request is <a href="https://github.com/jayway/maven-android-plugin/commit/37c1f681634b08295be29f691d8d46121eeb3738" target="_blank">here</a>, and it has been accepted, so I assume it will be available in the next release.</p>
<p>I hope this helps anyone else out there experiencing this problem.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kevinpotgieter.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kevinpotgieter.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/kevinpotgieter.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kevinpotgieter.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/kevinpotgieter.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/kevinpotgieter.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/kevinpotgieter.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/kevinpotgieter.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/kevinpotgieter.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kevinpotgieter.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/kevinpotgieter.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kevinpotgieter.wordpress.com/72/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/kevinpotgieter.wordpress.com/72/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kevinpotgieter.wordpress.com/72/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kevinpotgieter.wordpress.com&amp;blog=13357298&amp;post=72&amp;subd=kevinpotgieter&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://kevinpotgieter.wordpress.com/2011/06/07/maven-android-plugin-core-library-option-not-quite-working/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/983c19a93cd267db1d401818c29f6363?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">kevinpotgieter</media:title>
		</media:content>
	</item>
		<item>
		<title>Null Intent passed back On Samsung Galaxy Tab&#8230;</title>
		<link>http://kevinpotgieter.wordpress.com/2011/03/30/null-intent-passed-back-on-samsung-galaxy-tab/</link>
		<comments>http://kevinpotgieter.wordpress.com/2011/03/30/null-intent-passed-back-on-samsung-galaxy-tab/#comments</comments>
		<pubDate>Wed, 30 Mar 2011 21:06:23 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Samsung Galaxy Tab]]></category>
		<category><![CDATA[Android Camera]]></category>

		<guid isPermaLink="false">http://kevinpotgieter.wordpress.com/?p=66</guid>
		<description><![CDATA[So, I&#8217;ve had a rough few days, and by rough, I&#8217;m talking about the equivilant of a goats knee kinda rough. And if you haven&#8217;t guessed it yet, it has to do with the Samsung Galaxy Tab(the 7 inch guy), and null intents when using the camera from inside your app. Let me set the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kevinpotgieter.wordpress.com&amp;blog=13357298&amp;post=66&amp;subd=kevinpotgieter&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>So, I&#8217;ve had a rough few days, and by rough, I&#8217;m talking about the equivilant of a goats knee kinda rough. And if you haven&#8217;t guessed it yet, it has to do with the Samsung Galaxy Tab(the 7 inch guy), and null intents when using the camera from inside your app.</p>
<p>Let me set the scene, first, and tell you my story.  I was über excited to recieve my very own &#8220;work purchased&#8221; Samsung galaxy tablet yesterday, to be used for, among other things, developing some Android applications. I couldn&#8217;t contain my excitement, and this was way more fun than filling in my timesheets, so, I cracked the sucker open and began developing a little something that basically made use of the camera functionality. So I initially set off to create a test Activity which had a Gallery control, and a button to activate the camera. All I wanted to do was create a sample app, which would populate the gallery with the photos that I&#8217;d take. However, I couldn&#8217;t help but be reminded of how similar grappling with the camera functionality on the Samsung Galaxy tab is issuing a command to my ridgeback dog Bruno. Neither of them does what you expect it to! Instead, you&#8217;re just left surprised while it does its own crazy thing!  <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>So in my example, I thought I&#8217;d try something simple. Just start the camera activity with the method call to startActivityForResult, and in the method onActivityResult, when the camera returns, I expected to be able to get both the thumbnail and the actual image in the intent&#8217;s data. Alas, this is not the case. It appears that if you populate the EXTRA_OUTPUT extra with a URI of where to store the new photo, then the camera will store the photo there for you. Now in my experience, this is true, however, with a little annoying caveat. Not only will the camera store it in the URI location that you supplied, but it also stores it in the default location of its own!</p>
<p>I had another problem. I wanted not only the thumbnail, but also the actual image. For the purpose of this, I didn&#8217;t really need the <em><strong>actual</strong></em> image, but more the location of where I could go and get it. Now when using the method I just previously spoke about, by providing the EXTRA_OUTPUT extra on the request intent, the camera on return to the onActivityResult, ends up passing back a <em>NULL</em> intent, which used to have the thumbnail image in the extra key called &#8220;<em>data</em>&#8220;. Now you have diddley squat!</p>
<p>Yet another problem I faced was that, the URI I was passing in the request intent, to tell the camera where to save this image, always ended up being <em>NULL</em> when the onActivityResult method was called. So now, not only do I have to somehow persist the URI that I had already passed into the request intent (to prevent it from becoming null), I now also didn&#8217;t have a thumbnail to speak of &#8211; which I used to get from the &#8220;data&#8221; extra in the return intent.</p>
<p>Plan B&#8230;..</p>
<p>It seemed that from all my reading, the best way was to create a temp file, that always had a deterministic name and location, create the file, then create a URI from that, and pass that as part of the request intent, and you could reconstruct the URI when the onActivityResult was called. Thats great, but where&#8217;s my thumbnail? Still not there? &lt;sarcasm&gt;Nice!&lt;/sarcasm&gt;</p>
<p>Plan C&#8230;.</p>
<p>So this is what I eventually had to resort to, in order to get both the thumbnail, AND actual image location in order to populate my gallery control with the thumbnails, and retain the actual image location so that I could display it when the user tapped on the thumbnail, and thereby also avoiding any duplicate images being stored :</p>
<p>Call the Camera activity as per normal Don&#8217;t do anything fancy, just create the intent with the ACTION_IMAGE_CAPTURE constant. That way, you don&#8217;t create duplicate images all over the place.</p>
<p>On the return call of onActivityResult, you need to do a managedQuery on the MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI and MediaStore.Images.Media.EXTERNAL_CONTENT_URI locations, and selecting the last image that was captured. This way, you are able to obtain a handle to both the thumbnail, <strong><em>and</em></strong> the image without having to deal with all the weirdness of before. Once you have these, then you&#8217;re good to go! I&#8217;ve posted some sample code below to show you what I&#8217;m talking about.</p>
<p><pre class="brush: java;">

private static final int CAMERA_IMAGE_CAPTURE = 0;

public void btnTakePhoto_onClick(View view){
 Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
 startActivityForResult(intent, CAMERA_IMAGE_CAPTURE);
 }

&amp;nbsp;

@Override
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
 super.onActivityResult(requestCode, resultCode, data);
 if(requestCode==CAMERA_IMAGE_CAPTURE &amp;&amp; resultCode==Activity.RESULT_OK){

// Describe the columns you'd like to have returned. Selecting from the Thumbnails location gives you both the Thumbnail Image ID, as well as the original image ID
String[] projection = {
 MediaStore.Images.Thumbnails._ID,  // The columns we want
 MediaStore.Images.Thumbnails.IMAGE_ID,
 MediaStore.Images.Thumbnails.KIND,
 MediaStore.Images.Thumbnails.DATA};
 String selection = MediaStore.Images.Thumbnails.KIND + &quot;=&quot;  + // Select only mini's
 MediaStore.Images.Thumbnails.MINI_KIND;

 String sort = MediaStore.Images.Thumbnails._ID + &quot; DESC&quot;;

//At the moment, this is a bit of a hack, as I'm returning ALL images, and just taking the latest one. There is a better way to narrow this down I think with a WHERE clause which is currently the selection variable
Cursor myCursor = this.managedQuery(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, projection, selection, null, sort);

long imageId = 0l;
long thumbnailImageId = 0l;
String thumbnailPath = &quot;&quot;;

try{
 myCursor.moveToFirst();
imageId = myCursor.getLong(myCursor.getColumnIndexOrThrow(MediaStore.Images.Thumbnails.IMAGE_ID));
thumbnailImageId = myCursor.getLong(myCursor.getColumnIndexOrThrow(MediaStore.Images.Thumbnails._ID));
thumbnailPath = myCursor.getString(myCursor.getColumnIndexOrThrow(MediaStore.Images.Thumbnails.DATA));
}
finally{myCursor.close();}

 //Create new Cursor to obtain the file Path for the large image

 String[] largeFileProjection = {
 MediaStore.Images.ImageColumns._ID,
 MediaStore.Images.ImageColumns.DATA
 };

 String largeFileSort = MediaStore.Images.ImageColumns._ID + &quot; DESC&quot;;
 myCursor = this.managedQuery(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, largeFileProjection, null, null, largeFileSort);
String largeImagePath = &quot;&quot;;

try{
 myCursor.moveToFirst();

//This will actually give yo uthe file path location of the image.
largeImagePath = myCursor.getString(myCursor.getColumnIndexOrThrow(MediaStore.Images.ImageColumns.DATA));
}
finally{myCursor.close();}
 // These are the two URI's you'll be interested in. They give you a handle to the actual images
 Uri uriLargeImage = Uri.withAppendedPath(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, String.valueOf(imageId));
 Uri uriThumbnailImage = Uri.withAppendedPath(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, String.valueOf(thumbnailImageId));

// I've left out the remaining code, as all I do is assign the URI's to my own objects anyways...

}
}

</pre></p>
<p>I hope this helps someone else out there, cause this had me baffeled for a while. I don&#8217;t know what this just can&#8217;t be easier. Surely there&#8217;s no need to have to jump through hoops like this. Anyhoo, I&#8217;m working on getting the better managed query working, and I&#8217;ll just use this when I need it. It seems to work for the most part anyway.</pre>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kevinpotgieter.wordpress.com/66/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kevinpotgieter.wordpress.com/66/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/kevinpotgieter.wordpress.com/66/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kevinpotgieter.wordpress.com/66/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/kevinpotgieter.wordpress.com/66/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/kevinpotgieter.wordpress.com/66/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/kevinpotgieter.wordpress.com/66/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/kevinpotgieter.wordpress.com/66/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/kevinpotgieter.wordpress.com/66/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kevinpotgieter.wordpress.com/66/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/kevinpotgieter.wordpress.com/66/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kevinpotgieter.wordpress.com/66/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/kevinpotgieter.wordpress.com/66/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kevinpotgieter.wordpress.com/66/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kevinpotgieter.wordpress.com&amp;blog=13357298&amp;post=66&amp;subd=kevinpotgieter&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://kevinpotgieter.wordpress.com/2011/03/30/null-intent-passed-back-on-samsung-galaxy-tab/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/983c19a93cd267db1d401818c29f6363?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">kevinpotgieter</media:title>
		</media:content>
	</item>
		<item>
		<title>Different Responses with Spring REST</title>
		<link>http://kevinpotgieter.wordpress.com/2011/03/04/different-responses-with-spring-rest/</link>
		<comments>http://kevinpotgieter.wordpress.com/2011/03/04/different-responses-with-spring-rest/#comments</comments>
		<pubDate>Fri, 04 Mar 2011 08:15:34 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Spring MVC]]></category>
		<category><![CDATA[HTTP Headers]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[Response Formats]]></category>
		<category><![CDATA[Spring]]></category>

		<guid isPermaLink="false">http://kevinpotgieter.wordpress.com/?p=20</guid>
		<description><![CDATA[So lately I&#8217;ve been delving into Spring REST, and playing around with a few things, and something dawned on me which hadn&#8217;t occurred to me until I was actually messing around with a side project I have going on at home. Spring provides you the capability to return content in 2 different fashions: Either as [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kevinpotgieter.wordpress.com&amp;blog=13357298&amp;post=20&amp;subd=kevinpotgieter&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>So lately I&#8217;ve been delving into Spring REST, and playing around with a few things, and something dawned on me which hadn&#8217;t occurred to me until I was actually messing around with a side project I have going on at home. Spring provides you the capability to return content in 2 different fashions:</p>
<ol>
<li>Either as a representation of the Model Object OR</li>
<li>Either as the actual formatted content in the <strong>response body</strong> in whatever format(xml, json etc)</li>
</ol>
<p>It&#8217;s important to draw the distinction between information being returned to you directly via the response body, and the model object. An example is probably in order.</p>
<p>Let&#8217;s say we have our standard Spring MVC project set up, and we have the controller class <code>HomeController</code></p>
<p><pre class="brush: java;">
@Controller
public class HomeController {
private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
@RequestMapping(value=&quot;/home&quot;, method=RequestMethod.GET)
public String home(ModelMap model) {
logger.info(&quot;Welcome home!&quot;);
model.addAttribute(&quot;attribute&quot;, &quot;home-gerome&quot;);
return &quot;home&quot;;
}
}
</pre></p>
<p>and the relevant xml for the spring configuration looks like this:</p>
<p><pre class="brush: xml; collapse: true; light: false; toolbar: true; wrap-lines: false;">
&lt;bean id=&quot;xStreamMarshaller&quot; class=&quot;org.springframework.oxm.xstream.XStreamMarshaller&quot;&gt;
&lt;property name=&quot;autodetectAnnotations&quot; value=&quot;true&quot;/&gt;
&lt;!--&lt;span class=&quot;hiddenSpellError&quot; pre=&quot;&quot;--&gt;bean&gt;
&lt;bean class=&quot;org.springframework.web.servlet.view.ContentNegotiatingViewResolver&quot;&gt;
&lt;property name=&quot;order&quot; value=&quot;1&quot;/&gt;
&lt;property name=&quot;mediaTypes&quot;&gt;
&lt;map&gt;
json&quot; value=&quot;#{T(org.springframework.web.servlet.view.json.MappingJacksonJsonView).DEFAULT_CONTENT_TYPE}&quot;/&gt;
&lt;entry key=&quot;xml&quot; value=&quot;#{T(org.springframework.web.servlet.view.xml.MarshallingView).DEFAULT_CONTENT_TYPE}&quot;/&gt;
&lt;/map&gt;

&lt;/property&gt;
&lt;property name=&quot;defaultViews&quot;&gt;
&lt;list&gt;
&lt;bean class=&quot;org.springframework.web.servlet.view.json.MappingJacksonJsonView&quot;/&gt;
&lt;bean class=&quot;org.springframework.web.servlet.view.xml.MarshallingView&quot;&gt;
&lt;constructor-arg name=&quot;marshaller&quot; ref=&quot;xStreamMarshaller&quot;/&gt;
&lt;/bean&gt;
&lt;/list&gt;
&lt;/property&gt;
&lt;property name=&quot;ignoreAcceptHeader&quot; value=&quot;true&quot;/&gt;
&lt;/bean&gt;
</pre></p>
<p>There&#8217;s nothing special about this configuration, its pretty standard, and I managed to gleam most of it off of the <a href="http://static.springsource.org/spring/docs/3.0.0.M3/spring-framework-reference/html/ch18s02.html#rest-multiple-representations">Spring documentation</a>, and the API docs on the <code><a href="http://static.springsource.org/spring/docs/3.1.0.M1/javadoc-api/org/springframework/web/servlet/view/ContentNegotiatingViewResolver.html">ContentNegotiatingViewResolver</a></code></p>
<p>Notice how there&#8217;s only a <code>@RequestMapping</code> annotation on the method, nothing else, and the <code>ModelMap</code> parameter being passed in. If you build your HTTP GET request ( I use an add-on called REST Client for Firefox), for the home.<strong>json</strong> resource, you&#8217;ll notice that the response body actually returns like this:</p>
<p><code>{"attribute":"home-gerome"}</code></p>
<p>No surprises here that is looks just like the content of the Model, with the key-value pair.</p>
<p>I&#8217;d just like to mention that if I made a request for <code>home.html</code>, instead of <code>home.json</code>, I&#8217;d actually get the HTML content of the <code>home.jsp</code> page in the response body, and there will be no trace of the <code>ModelMap</code> data here. This is purely down to the ViewResolver chaining where the <code>ContentNegotiatingViewResolver</code> wouldn&#8217;t be able to satisfy my request for my <code>.html</code> request, and would then move onto the 2nd ViewResolver I had configured which can. Seeing as though I made the request for <code>home.json</code>, the <code>ContentNegotiatingViewReolver</code> finds a class that can resolve a view for the request, and it uses the <code>MappingJacksonJsonView</code> to resolve the request and format a response, which looks at the <code>ModelMap</code>, to return data back to the calling client. Requests ending in <code>.json</code>, or <code>.xml</code> etc are preferred over the Accept Headers in the request, although this is also configurable in the <code>ContentNegotiatingViewResolver</code>.</p>
<p>Also, you&#8217;ll see I&#8217;ve added the property <em>ignoreAcceptHeader=true</em>, and I did that because of another &#8220;problem&#8221; I faced while working with HTTP requests and how Spring uses them to make certain choices, and subsequently learnt that HTTP Headers can be evil&#8230; but more on that in another post. So for now, I&#8217;ve actually set this property in my project to ignore Accept Headers for now, and just use the extensions on the request to determine how content should be delivered.</p>
<p>Now, having spring deliver content via the <code>@ResponseBody</code> opens up another can of worms. In fact, I was going to try and give you an example here, but after I finished I felt that this post actually ended up being way too massive so I&#8217;ll possibly address <code>@ResponseBody</code> use and configuration in an upcoming post. Suffice to say though, that although it is nice to have your objects returned directly via the response body when using the <code>@ResponseBody</code> annotation, doing so doesn&#8217;t come without its fair share of additional configuration and hacking about.</p>
<p>In chatting to some others who have used Spring REST, and all the goodness it offers, I&#8217;ve come to the conclusion that many are left with the question of when to use <code>@ResponseBody</code> as opposed to just the traditional way before <code>@ResponseBody</code> came onto the scene. From what I&#8217;ve seen so far, I&#8217;d make the decision based on the following</p>
<h3>You have an existing Spring MVC website in place, and you want to make it deliver content in json and xml format.</h3>
<p>Well, if this is the case, I&#8217;d avoid using <code>@ResponseBody</code>, and I&#8217;d just populate the ModelMap object with the content I want to send back to the client. The reason for this being that, I can still then make use of the view resolving that happens for me when I return a string to lookup the <code>.jsp</code> page and render that content back. However if I stick a <code>@ResponseBody</code> tag on my method, I&#8217;m effectively responsible for doing all of that myself, i.e. returning the actual content to the response, and I lose all that spring automagic that happened before. So for situations where you want to run your website <em>and</em> your REST requests/responses off of the same MVC controller, then I&#8217;d stay away from <code>@ResponseBody</code>.</p>
<p>Another good reason for avoiding the <code>@ResponseBody</code>, is that for GET requests, Spring doesn&#8217;t seem to be able to work out (yet) which formatter to correctly pick other than looking at the accept headers. When you use <code>@ResponseBody</code>, as part of the configuration, you&#8217;ll setup HTTPConverters responsible for formatting the content, and you&#8217;ll configure them to only listen for certain accept headers by populating the <code>supportedMediaTypes</code> property. As I&#8217;ve mentioned just previously, I&#8217;ve just recently learnt that when relying on browsers coming to your website, accept headers can be evil.. so stay away! <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h3>You don&#8217;t have to service browser requests, and will only be serving content to clients to have control the accept header.</h3>
<p>If all you need is something that interacts with a representations of your domain objects, then I&#8217;d say go for the <code>@ResponseBody</code> annotation. Purely because clients are more than likely in control of setting things like HTTP headers, and when using <code>@ResponseBody</code> with GET requests especially, you have to add the headers property of the <code>@ResponseBody</code> annotation to tell spring which method to effectively call for which type or representation. So your controller would look something like this:</p>
<p>These are my experiences so fat while using <code>@ResponseBody</code>. I&#8217;ve only just started realising its benefits, but I think it needs to be said that if you;rethinking about using the <code>@ResponseBody</code> feature, think carefully about where, and how you want to use it, because it can give you more headaches than its worth.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kevinpotgieter.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kevinpotgieter.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/kevinpotgieter.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kevinpotgieter.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/kevinpotgieter.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/kevinpotgieter.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/kevinpotgieter.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/kevinpotgieter.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/kevinpotgieter.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kevinpotgieter.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/kevinpotgieter.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kevinpotgieter.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/kevinpotgieter.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kevinpotgieter.wordpress.com/20/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kevinpotgieter.wordpress.com&amp;blog=13357298&amp;post=20&amp;subd=kevinpotgieter&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://kevinpotgieter.wordpress.com/2011/03/04/different-responses-with-spring-rest/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/983c19a93cd267db1d401818c29f6363?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">kevinpotgieter</media:title>
		</media:content>
	</item>
		<item>
		<title>Mobile Workforce on Android</title>
		<link>http://kevinpotgieter.wordpress.com/2011/02/16/mobile-workforce-on-android/</link>
		<comments>http://kevinpotgieter.wordpress.com/2011/02/16/mobile-workforce-on-android/#comments</comments>
		<pubDate>Wed, 16 Feb 2011 15:44:50 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Android GPS Tagging]]></category>
		<category><![CDATA[mobile development]]></category>
		<category><![CDATA[Mobile workforce]]></category>

		<guid isPermaLink="false">http://kevinpotgieter.wordpress.com/?p=7</guid>
		<description><![CDATA[So, just recently my company, G3 Global, tasked me with investigating mobile application development, with the intention to integrate into SAP. So as a proof of concept, I managed to put together a prototype mobile application that simply mimics the role of your mobile engineering workforce out in the field. The idea simply demonstrates a job listing for an [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kevinpotgieter.wordpress.com&amp;blog=13357298&amp;post=7&amp;subd=kevinpotgieter&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>So, just recently my company, G3 Global, tasked me with investigating mobile application development, with the intention to integrate into SAP. So as a proof of concept, I managed to put together a prototype mobile application that simply mimics the role of your mobile engineering workforce out in the field.</p>
<p>The idea simply demonstrates a job listing for an engineer, allowing them to review the job details, and contains the ability to take before and after photos of the job, as well as geo tagging the images with their current GPS location, to pin point where the images were taken. I believe <a title="Drew's Blog" href="http://drewpreston.wordpress.com/" target="_blank">Drew</a> has already beaten me to the <a title="Android App For Mobile Workforce Management" href="http://drewpreston.wordpress.com/2011/02/16/android-app-for-mobile-workforce-management/" target="_blank">post</a> (no pun intended) but if you haven&#8217;t seen it there yet, then check out the cool video we put together:</p>
<div class='embed-vimeo' style='text-align:center;'><iframe src='http://player.vimeo.com/video/20016516' width='400' height='300' frameborder='0'></iframe></div>
<p>You can also find the original post on my company blog here: &#8216;<a title="Mobile Workforce On Android" href="http://www.g3it.com/labs/mobile-workforce-management-on-android/" target="_blank">Mobile Workforce On Android</a>&#8216;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kevinpotgieter.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kevinpotgieter.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/kevinpotgieter.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kevinpotgieter.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/kevinpotgieter.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/kevinpotgieter.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/kevinpotgieter.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/kevinpotgieter.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/kevinpotgieter.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kevinpotgieter.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/kevinpotgieter.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kevinpotgieter.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/kevinpotgieter.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kevinpotgieter.wordpress.com/7/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kevinpotgieter.wordpress.com&amp;blog=13357298&amp;post=7&amp;subd=kevinpotgieter&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://kevinpotgieter.wordpress.com/2011/02/16/mobile-workforce-on-android/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/983c19a93cd267db1d401818c29f6363?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">kevinpotgieter</media:title>
		</media:content>
	</item>
		<item>
		<title>The beginnings of my new journey</title>
		<link>http://kevinpotgieter.wordpress.com/2011/02/15/the-beginnings-of-my-new-journey/</link>
		<comments>http://kevinpotgieter.wordpress.com/2011/02/15/the-beginnings-of-my-new-journey/#comments</comments>
		<pubDate>Tue, 15 Feb 2011 22:05:09 +0000</pubDate>
		<dc:creator>Kevin</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://kevinpotgieter.wordpress.com/?p=4</guid>
		<description><![CDATA[So, after a very very long time, I&#8217;ve decided to pick up blogging again. Hopefully this time I&#8217;ll be able to find the time I seemed to have lost previously, to blog my software development musings as well as some other cool interests I have including my motorcycle and photography! So without taking up too [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kevinpotgieter.wordpress.com&amp;blog=13357298&amp;post=4&amp;subd=kevinpotgieter&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>So, after a very very long time, I&#8217;ve decided to pick up blogging again. Hopefully this time I&#8217;ll be able to find the time I seemed to have lost previously, to blog my software development musings as well as some other cool interests I have including my motorcycle and photography!</p>
<p>So without taking up too much time on the first post, I just wanted to say, &#8220;I&#8217;m back!&#8221;</p>
<p>Expect great things on this here blog over time, as I plan to plot my journey ,traversing the world of .NET and Microsoft and into the unknown world of Java and all of its open source goodness!</p>
<p>Until next time&#8230;.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/kevinpotgieter.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/kevinpotgieter.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/kevinpotgieter.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/kevinpotgieter.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/kevinpotgieter.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/kevinpotgieter.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/kevinpotgieter.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/kevinpotgieter.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/kevinpotgieter.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/kevinpotgieter.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/kevinpotgieter.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/kevinpotgieter.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/kevinpotgieter.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/kevinpotgieter.wordpress.com/4/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=kevinpotgieter.wordpress.com&amp;blog=13357298&amp;post=4&amp;subd=kevinpotgieter&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://kevinpotgieter.wordpress.com/2011/02/15/the-beginnings-of-my-new-journey/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/983c19a93cd267db1d401818c29f6363?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">kevinpotgieter</media:title>
		</media:content>
	</item>
	</channel>
</rss>
