<?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>Armin Coralic</title>
	<atom:link href="http://blog.coralic.nl/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.coralic.nl</link>
	<description>This is my blog</description>
	<lastBuildDate>Wed, 12 Oct 2011 11:13:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Source Code is the documentation</title>
		<link>http://blog.coralic.nl/2011/10/10/source-code-is-the-documentation/</link>
		<comments>http://blog.coralic.nl/2011/10/10/source-code-is-the-documentation/#comments</comments>
		<pubDate>Mon, 10 Oct 2011 15:00:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Other]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[agile architecture]]></category>
		<category><![CDATA[boy scout rule]]></category>
		<category><![CDATA[clean code]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[SOLID]]></category>
		<category><![CDATA[source]]></category>
		<category><![CDATA[source code]]></category>

		<guid isPermaLink="false">http://blog.coralic.nl/?p=487</guid>
		<description><![CDATA[Original post can be found at It-Eye In an Agile environment we try to creat “just enough documentation” and “just enough architecture”. To achieve this we need our source code to become a part of the documentation. At this point most developers will jump in the air and all others will go “oooh NO”. The [...]]]></description>
			<content:encoded><![CDATA[<p>Original post can be found at <a href="http://www.it-eye.nl/2011/10/10/source-code-is-the-documentation/" class="aga aga_4">It-Eye</a></p>
<p>In an Agile environment we try to creat “just enough documentation” and “just enough architecture”. To achieve this we need our source code to become a part of the documentation.<br />
At this point most developers will jump in the air and all others will go “oooh NO”. The reason why we have such reactions is because developers think they don&#8217;t need to do anything and all others think the code is not readable. I must say that in the past the last argument was pretty much true, but all of this has changed or it needs to change fast. <span id="more-487"></span><br />
Developers need to start creating more clean and readable code. The first reason why they need to do this is because the code gets better and is easier to maintain. The second reason is Developers need to be aware that the source code is part of the documentation, because they are not the only ones that need to be able to read it. But it&#8217;s not only the Developers that need to change, others in the project need to accept that the source code is a part of the documentation as well.</p>
<p>There are enough books, tips and principles to achieve this clean and readable code, some examples <a href="http://en.wikipedia.org/wiki/SOLID_(object-oriented_design)" class="aga aga_5">SOLID principles</a>, <a href="http://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882" class="aga aga_6">Clean Code</a>, <a href="http://programmer.97things.oreilly.com/wiki/index.php/The_Boy_Scout_Rule" class="aga aga_7">Boy scout rule</a>. To show what I mean here is an example.</p>
<p>Bad example, we can all conclude that this peace of code is not easy to read.</p>
<pre class="brush: java; title: ; notranslate">
@Override
    public void onCreate(Bundle savedInstanceState)
    {
	context = getApplicationContext();

	// TODO: check for incoming intent?
	intentValue = null;
	checkForIntent(getIntent());
	super.onCreate(savedInstanceState);
	properties = PreferenceManager.getDefaultSharedPreferences(Beta_SMS.this);
	// Check if the account is valid, if not open the wizard (should happen only the first time you open the app
	if (!Utils.checkForValidAccount(properties))
	{
	    startActivity(new Intent(this, Wizard.class));
	}

	// Set the view
	Log.d(Const.TAG_MAIN, &quot;Creating the view and the rest of the GUI.&quot;);
	super.onCreate(savedInstanceState);

	//allow custom title
	requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);

	setContentView(R.layout.betasms);

	//set custom title
	getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.title);
	txtTitleSaldoValue = (TextView) findViewById(R.id.txtTitleSaldoValue);
	txtTitleSaldo = (TextView) findViewById(R.id.txtTitleSaldo);	

	//show providers
	providers = getResources().getStringArray(R.array.providers);

	//get the rest of the ui components
	to = (AutoCompleteTextView) findViewById(R.id.txtTo);
	txtTextCount = (TextView) findViewById(R.id.txtTextCount);
	txtSmsText = (EditText) findViewById(R.id.txtSmsText);
	send = (Button) findViewById(R.id.btnSend);
	contact = (Button) findViewById(R.id.btnContact);

	// get the balance
	showBalance();

	txtSmsText.addTextChangedListener(new SmsTextCounter(txtTextCount));

	if (intentValue != null)
	{
	    to.setText(intentValue);
	}

	// auto complete contacts, show all phones
	phoneHandler = new PhonesHandler();
	to.setAdapter(phoneHandler.getContactsPhonesListAdapter(getContentResolver(), this));

	// Set the intent for selecting the contact
	intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);

	// When taped it will fire up an intent for showing Contacts,
	// when a contact is selected it will return and fire up
	// onActivityResult function
	contact.setOnClickListener(new View.OnClickListener()
	{
	    public void onClick(View v)
	    {
		Log.d(Const.TAG_MAIN, &quot;Double taped, show contacts&quot;);
		startActivityForResult(intent, Const.PICK_CONTACT);
	    }
	});

	// when send clicked
	send.setOnClickListener(new View.OnClickListener()
	{
	    public void onClick(View v)
	    {
		onSend();
	    }
	});

	// set focus on the sms text field
	txtSmsText.requestFocus();
    }
</pre>
<p>Good example, I hope we all agree when I say that this code is easy to read and to follow. </p>
<pre class="brush: java; title: ; notranslate">
@Override
    public void onCreate(Bundle savedInstanceState)
    {
	Log.d(Const.TAG_MAIN, &quot;Starting the application&quot;);
	// set context to a helper class
	ApplicationContextHelper.setContext(getApplicationContext());
	super.onCreate(savedInstanceState);
	setBroadcastReceiver();

	loadProperties();
	validateAcount();
	setView();
	assignUiComponentsToVariables();
	showBalance();
	checkIntent(getIntent());
	setListeners();
	// set focus on the sms text field
	txtSmsText.requestFocus();
    }
</pre>
<p>Both the first and the second example do exactly the same but the second one can be understood in seconds where the first one first needs to be interpreted. In the second example I left the “detailed” code out on purpose because it is not about the detailed code. When we talk about documentation we  want to know more about the flow and the relations not the details. If done correctly the details should already be tested and can be reviewed by looking at the test cases.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.coralic.nl%2F2011%2F10%2F10%2Fsource-code-is-the-documentation%2F&amp;title=Source%20Code%20is%20the%20documentation" class="aga aga_8" id="wpa2a_2"><img src="http://blog.coralic.nl/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.coralic.nl/2011/10/10/source-code-is-the-documentation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Coding size or language syntax, does it matter?</title>
		<link>http://blog.coralic.nl/2011/09/07/coding-size-or-language-syntax-does-it-matter/</link>
		<comments>http://blog.coralic.nl/2011/09/07/coding-size-or-language-syntax-does-it-matter/#comments</comments>
		<pubDate>Wed, 07 Sep 2011 09:38:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Other]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[code size]]></category>
		<category><![CDATA[syntax]]></category>

		<guid isPermaLink="false">http://blog.coralic.nl/?p=470</guid>
		<description><![CDATA[Original post can be found at It-Eye There are lot of programming languages in the world, there is one for everybody. All those languages have something in common and that is that they are trying to help you solve a problem. But they all try to do it there own way. Every company has struggled [...]]]></description>
			<content:encoded><![CDATA[<p>Original post can be found at <a href="http://www.it-eye.nl/2011/09/07/coding-size-or-language-syntax-does-it-matter/" class="aga aga_11">It-Eye</a></p>
<p>There are lot of programming languages in the world, there is one for everybody. All those languages have something in common and that is that they are trying to help you solve a problem. But they all try to do it there own way.<br />
Every company has struggled one way or another to chose what programming language to use for a project. If they haven&#8217;t then they probably chose what they already have been using. For those that have been choosing most of the time they were looking at things like, can we find experts, is the language fast, secure, does it help us solve our problems faster and tools for the language. But have we ever looked at code size or language syntax and decided on that as well? Probably not, but should we? <span id="more-470"></span></p>
<p>Let&#8217;s look at some “&#8217;Hello World” coding examples. <a href="http://www.roesler-ac.de/wolfram/hello.htm" class="aga aga_12">Source</a></p>
<p>Java</p>
<pre class="brush: java; title: ; notranslate">
class HelloWorld {
  static public void main( String args[] ) {
    System.out.println( &quot;Hello World!&quot; );
  }
}
</pre>
<p>C#</p>
<pre class="brush: csharp; title: ; notranslate">
class HelloWorld
{
    static void Main()
    {
        System.Console.WriteLine(&quot;Hello, World!&quot;);
    }
}
</pre>
<p>C++</p>
<pre class="brush: cpp; title: ; notranslate">
#include &lt;iostream.h&gt;

main()
{
    cout &lt;&lt; &quot;Hello World!&quot; &lt;&lt; endl;
    return 0;
}
</pre>
<p>Scala</p>
<pre class="brush: scala; title: ; notranslate">
object HelloWorld with Application {
     Console.println(&quot;Hello world!&quot;);
}
</pre>
<p>Python</p>
<pre class="brush: python; title: ; notranslate">
print &quot;Hello World&quot;
</pre>
<p>We can see that Java, C# and C++ pretty much look the same, Scala is a little bit smaller and python the smallest. Warning: This is not a scientific comparison but one to help understand the point.</p>
<p>So would it matter that a software engineer only needs to write one line instead of 3 or 4? Is he going to be more productive, more creative? How about code maintainability, readability? </p>
<p>Does the code size and syntax really matter? </p>
<p>I would say, in most cases it does not. The reason why I think that is because for most languages we have great tools that do a lot for the software engineer so you don&#8217;t need to write all those lines, most of them get generated or added on the fly anyway. Regarding code maintainability and readability, no programming language has yet been discovers that makes a bad software engineer do those things good.<br />
What matters is that the programming language should allow the software engineer to focus on his problem instead of breaking his mind about programming details. This is also the reason why languages like Scala, Groovy, Ruby are getting popular.  Looking at these languages you could conclude that it seems that syntax definitely can matter sometimes. </p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.coralic.nl%2F2011%2F09%2F07%2Fcoding-size-or-language-syntax-does-it-matter%2F&amp;title=Coding%20size%20or%20language%20syntax%2C%20does%20it%20matter%3F" class="aga aga_13" id="wpa2a_4"><img src="http://blog.coralic.nl/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.coralic.nl/2011/09/07/coding-size-or-language-syntax-does-it-matter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java 7, this is it?</title>
		<link>http://blog.coralic.nl/2011/09/06/java-7-this-is-it/</link>
		<comments>http://blog.coralic.nl/2011/09/06/java-7-this-is-it/#comments</comments>
		<pubDate>Tue, 06 Sep 2011 09:32:06 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[java 7]]></category>

		<guid isPermaLink="false">http://blog.coralic.nl/?p=466</guid>
		<description><![CDATA[Original post can be found at It-Eye Java 7 was released, so I gave it a spin to see what kind of improvements were made. While testing some new features I went online to look for not so obvious changes as well. Here is a short list of the new features and improvements in Java [...]]]></description>
			<content:encoded><![CDATA[<p>Original post can be found at <a href="http://www.it-eye.nl/2011/09/06/java-7-this-is-it/" class="aga aga_15">It-Eye</a></p>
<p>Java 7 was released, so I gave it a spin to see what kind of improvements were made. While testing some new features I went online to look for not so obvious changes as well. Here is a short list of the new features and improvements in Java 7.<span id="more-466"></span></p>
<ul>
<li>Strings in switch
</li>
<li>try-with-resources statement
</li>
<li>More precise rethrow
</li>
<li>Multi-catch
</li>
<li>Binary integral literals
</li>
<li>Underscores in numeric literals
</li>
<li>Improved type inference for generic instance creation
</li>
<li>More new I/O APIs for the Java platform (NIO.2)
</li>
<li>Support for dynamic languages
</li>
<li>Better multicore and parallelism support
</li>
</ul>
<p>The list is not that big but still it has some handy improvements. Looking at the list it struck me: How long have I been using Java 6? Looking at the table below you can see that Java has been updated every year or two but the gap between Java 6 and 7 is five years. </p>
<table>
<th>Version</th>
<th>Release Date</th>
<tr>
<td>Java 1.0</td>
<td>1996</td>
</tr>
<tr>
<td>Java 1.1</td>
<td>1997</td>
</tr>
<tr>
<td>Java 1.2</td>
<td>1998</td>
</tr>
<tr>
<td>Java 1.3</td>
<td>2000</td>
</tr>
<tr>
<td>Java 1.4</td>
<td>2002</td>
</tr>
<tr>
<td>Java 5</td>
<td>2004</td>
</tr>
<tr>
<td>Java 6</td>
<td>2006</td>
</tr>
<tr>
<td>Java 7</td>
<td>2011</td>
</tr>
<tr>
<td>Java 8</td>
<td>2012</td>
</tr>
</table>
<p>Time does not tell the whole story but looking at the time frame of five years it took to release Java 7 and the feature/improvement list it makes me say “This is it?” Sure Java 6 has been updated a lot but still it doesn&#8217;t fit. We all talk about Agile, iterative development and try to convince people how it improves software but when we need to improve a programming language we throw everything over board. But not all is lost, if you look at the table you can see that Java 8 is scheduled for 2012. So let me be optimistic and believe that this was just a hick up in the Java improvement process.  </p>
<p>I am looking forward to Java 8.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.coralic.nl%2F2011%2F09%2F06%2Fjava-7-this-is-it%2F&amp;title=Java%207%2C%20this%20is%20it%3F" class="aga aga_16" id="wpa2a_6"><img src="http://blog.coralic.nl/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.coralic.nl/2011/09/06/java-7-this-is-it/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Security experts are in the old Testers position?</title>
		<link>http://blog.coralic.nl/2011/09/06/security-experts-are-in-the-old-testers-position/</link>
		<comments>http://blog.coralic.nl/2011/09/06/security-experts-are-in-the-old-testers-position/#comments</comments>
		<pubDate>Tue, 06 Sep 2011 09:30:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Other]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[scrum]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://blog.coralic.nl/?p=462</guid>
		<description><![CDATA[Original post can be found at It-Eye We all know that testing is important and since more and more companies started doing agile we all have learned that testing needs to be done on the go and not at the end of our software development. Where couple of years ago it was very hard to [...]]]></description>
			<content:encoded><![CDATA[<p>Original post can be found at <a href="http://www.it-eye.nl/2011/09/05/security-experts-are-in-the-old-testers-position/" class="aga aga_21">It-Eye</a></p>
<p>We all know that testing is important and since more and more companies started doing agile we all have learned that testing needs to be done on the go and not at the end of our software development. Where couple of years ago it was very hard to find teams with testers in them now you can find a lot of them. Besides that it was very hard to convince companies why you needed a tester on the go and why that was better and cheaper than doing “some” testing at the end. Now days it&#8217;s all much easier and companies understand the benefit of testing on the go instead of doing bulk testing at the end of the software development.<span id="more-462"></span> </p>
<p>By doing agile software development we have learned that working with a well balanced team is a must. So adding developers, architects, designers and testers to the team is not an “real” issue anymore. But how about adding security specialists?</p>
<p>Following the security news here are 3 hacks that happened in a weak. </p>
<ul>
<li><a href="http://www.ubergizmo.com/2011/08/nokia-developer-forum-hacked/" class="aga aga_22">Nokia Developer forum hacked</a></li>
<li><a href="http://www.securityweek.com/linux-source-code-repository-kernelorg-gets-hacked" class="aga aga_23">Linux Source Code Repository Kernel.Org Gets Hacked</a>
<li><a href="https://blog.torproject.org/blog/diginotar-damage-disclosure" class="aga aga_24">DigiNotar Damage Disclosure</a></li>
</ul>
<p>It&#8217;s not just those 3 there are many of them. As we go online in to the cloud and start exposing more and more services to the outside world we need to know that our applications are safe. This kind of responsibility can not be given to a software engineer or an architect it needs to be given to a specialist aka the security experts.</p>
<p>We struggled to get the tester in to the team and now that we have achieved that goal it seems we need to struggle again to do the same for the security specialist. </p>
<p>That&#8217;s why I asked my self: “Aren&#8217;t security experts in the old testers position?” </p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.coralic.nl%2F2011%2F09%2F06%2Fsecurity-experts-are-in-the-old-testers-position%2F&amp;title=Security%20experts%20are%20in%20the%20old%20Testers%20position%3F" class="aga aga_25" id="wpa2a_8"><img src="http://blog.coralic.nl/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.coralic.nl/2011/09/06/security-experts-are-in-the-old-testers-position/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java Is A Dead-End For Enterprise App Development</title>
		<link>http://blog.coralic.nl/2011/08/18/java-is-a-dead-end-for-enterprise-app-development/</link>
		<comments>http://blog.coralic.nl/2011/08/18/java-is-a-dead-end-for-enterprise-app-development/#comments</comments>
		<pubDate>Thu, 18 Aug 2011 07:58:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://blog.coralic.nl/?p=447</guid>
		<description><![CDATA[Original post can be found at It-Eye Last day I got a tip about this old article “Java Is A Dead-End For Enterprise App Development”. My first thought was: “Here we go again, someone who is claiming a programming language is dying. The never ending returning discussion.” But I read it never the less and [...]]]></description>
			<content:encoded><![CDATA[<p>Original post can be found at <a href="http://www.it-eye.nl/2011/08/17/java-is-a-dead-end-for-enterprise-app-development/" class="aga aga_28">It-Eye</a></p>
<p>Last day I got a tip about this old article “<a href="http://blogs.forrester.com/mike_gualtieri/10-11-23-java_is_a_dead_end_for_enterprise_app_development" class="aga aga_29">Java Is A Dead-End For Enterprise App Development</a>”. My first thought was: “Here we go again, someone who is claiming a programming language is dying. The never ending returning discussion.” But I read it never the less <span id="more-447"></span>and this is the summery of the article as I interpreted it: “Java was good but now we need a new better programming language that fits all and can be used to serve the business better. Java now days is just to complex to allow business to be agile (aka change).” The original author doesn’t give us any alternatives but just tells us that the new language should provide us with the following: “Dramatically increase developer productivity.” and “Allow developers to delegate change to business end users.”.<br />
There is nothing wrong with wanting a better programming language or wanting the business to be able to change quickly, but blaming it all on to Java or any other programming language in this matter is in my opinion just wrong. If you want to achieve these two things you should try this:</p>
<ul>
<li>Stop working the old fashioned way and start working agile. Let the business be in control and decide where to go and guide the “development team” to achieve this as fast as possible.</li>
<li>Use the right technologies for the job, don’t be afraid to mix there is nothing wrong with that. If the server side can be done in Java and the front end in Javascript then let it be.</li>
<li>Build small blocks that can be added, removed or changed easily if necessary. Trying to build big piles of unified software is not good.</li>
<li>Believing that the today’s 4GL will solve all your problems is just a dream, as with every language you need flexibility to be an innovator.</li>
</ul>
<p>These four are just a small set of what to do to achieve what the original author was preaching. Who knows maybe someday ruby or a new X language will step up to the plate and the businesses will leave Java alone but for now Java is here to stay. At the end a programming language is just a tool to perform what you want, changing the name will not solve your now day’s problems. Until the new perfect language comes out the four guidelines mentioned above can help to achieve the goal.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.coralic.nl%2F2011%2F08%2F18%2Fjava-is-a-dead-end-for-enterprise-app-development%2F&amp;title=Java%20Is%20A%20Dead-End%20For%20Enterprise%20App%20Development" class="aga aga_30" id="wpa2a_10"><img src="http://blog.coralic.nl/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.coralic.nl/2011/08/18/java-is-a-dead-end-for-enterprise-app-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>10 Minutes Hands-On: Apache Camel</title>
		<link>http://blog.coralic.nl/2011/03/18/10-minutes-hands-on-apache-camel/</link>
		<comments>http://blog.coralic.nl/2011/03/18/10-minutes-hands-on-apache-camel/#comments</comments>
		<pubDate>Fri, 18 Mar 2011 17:47:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[apache camel]]></category>
		<category><![CDATA[camel]]></category>
		<category><![CDATA[integration]]></category>

		<guid isPermaLink="false">http://blog.coralic.nl/?p=441</guid>
		<description><![CDATA[Original post can be found at It-Eye Integration frameworks are getting more popular because you can easily integrate services or you can use them to integrate partial application parts to one application. To show you how easy it has become to integrate we did a 10 Minutes Hands-On at the It-Eye open space and this [...]]]></description>
			<content:encoded><![CDATA[<p>Original post can be found at <a href="http://www.it-eye.nl/2011/03/18/10-minutes-hands-on-apache-camel/" class="aga aga_37">It-Eye</a></p>
<p>Integration frameworks are getting more popular because you can easily integrate services or you can use them to integrate partial application parts to one application. To show you how easy it has become to integrate we did a 10 Minutes Hands-On at the It-Eye open space and this was the working result of that.</p>
<p><span id="more-441"></span><br />
<strong>What is Apache Camel?</strong><br />
Apache Camel is a powerful open source integration framework based on known Enterprise Integration Patterns with powerful Bean Integration.</p>
<p>Camel lets you create the Enterprise Integration Patterns to implement routing and mediation rules in either a Java based Domain Specific Language (or Fluent API), via Spring based Xml Configuration files or via the Scala DSL. This means you get smart completion of routing rules in your IDE whether in your Java, Scala or XML editor. <a href="http://camel.apache.org/" class="aga aga_38">source</a></p>
<p><a href="http://files.coralic.nl/jpg/camel-components.png" ><img src="http://files.coralic.nl/jpg/camel-components.png" alt="" title="Business_Model_Canvas_1024" width="1024" height="683" class="aligncenter size-full wp-image-1061" /></a></p>
<p><strong>What did we produce?</strong></p>
<p>As always a POM file:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
  xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd&quot;&gt;
    &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;

    &lt;groupId&gt;nl.iteye&lt;/groupId&gt;
    &lt;artifactId&gt;camel-example&lt;/artifactId&gt;
    &lt;version&gt;1.0-SNAPSHOT&lt;/version&gt;
    &lt;packaging&gt;jar&lt;/packaging&gt;

    &lt;name&gt;camel-example&lt;/name&gt;
    &lt;url&gt;http://maven.apache.org&lt;/url&gt;

    &lt;properties&gt;
        &lt;project.build.sourceEncoding&gt;UTF-8&lt;/project.build.sourceEncoding&gt;
    &lt;/properties&gt;

    &lt;dependencies&gt;
        &lt;dependency&gt;
            &lt;groupId&gt;junit&lt;/groupId&gt;
            &lt;artifactId&gt;junit&lt;/artifactId&gt;
            &lt;version&gt;4.8.1&lt;/version&gt;
            &lt;scope&gt;test&lt;/scope&gt;
        &lt;/dependency&gt;
        &lt;dependency&gt;
            &lt;groupId&gt;org.apache.camel&lt;/groupId&gt;
            &lt;artifactId&gt;camel-core&lt;/artifactId&gt;
            &lt;version&gt;2.6.0&lt;/version&gt;
        &lt;/dependency&gt;
        &lt;dependency&gt;
            &lt;groupId&gt;org.apache.camel&lt;/groupId&gt;
            &lt;artifactId&gt;camel-test&lt;/artifactId&gt;
            &lt;version&gt;2.6.0&lt;/version&gt;
            &lt;scope&gt;test&lt;/scope&gt;
        &lt;/dependency&gt;
    &lt;/dependencies&gt;
&lt;/project&gt;
</pre>
<p>And of course we created some code:</p>
<pre class="brush: java; title: ; notranslate">
package nl.iteye.camelexample;

import org.apache.camel.Exchange;
import org.apache.camel.Processor;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.test.junit4.CamelTestSupport;
import org.junit.Test;

public class CamelExampleTest extends CamelTestSupport {

    @Override
    protected RouteBuilder createRouteBuilder() throws Exception {
        return new RouteBuilder() {

            @Override
            public void configure() throws Exception {
                from(&quot;direct:startpoint&quot;).id(&quot;route1&quot;) //
                        .to(&quot;log:ex1.1?showAll=true&quot;) //
                        .convertBodyTo(String.class) //
                        .process(new Processor() {

                    @Override
                    public void process(Exchange exchng) throws Exception {
                        String body = exchng.getIn().getBody(String.class);
                        exchng.getOut().setBody(body.replaceAll(&quot;root&quot;, &quot;testroot&quot;));
                        exchng.getOut().setHeader(&quot;IS_PAYMENT&quot;, 1);

                    }
                }).to(&quot;log:ex1.2?showAll=true&quot;) //
                        .choice().when(header(&quot;IS_PAYMENT&quot;)//
                        .isEqualTo(1)).to(&quot;mock:endpoint2&quot;) //
                        .otherwise().to(&quot;mock:endpoint&quot;);
            }
        };
    }

    @Test
    public void test() throws InterruptedException {
        log.info(&quot;running test&quot;);
        MockEndpoint resultEndpoint = context.getEndpoint(&quot;mock:endpoint&quot;, MockEndpoint.class);
        MockEndpoint resultEndpoint2 = context.getEndpoint(&quot;mock:endpoint2&quot;, MockEndpoint.class);
        resultEndpoint2.expectedMessageCount(0);
        resultEndpoint2.expectedMessageCount(1);
        template.requestBody(&quot;direct:startpoint&quot;, &quot;&lt;root&gt;&lt;name&gt;abc&lt;/name&gt;&lt;/root&gt;&quot;);
        resultEndpoint.assertIsSatisfied();
        resultEndpoint2.assertIsSatisfied();
    }
}
</pre>
<p>And that&#8217;s it, but what does this example do.</p>
<ol>
<li>It Starts with a direct endpoint that receives a message</li>
<li>t ads an id to the route, this can be used to manipulate the route with JMX</li>
<li>Logs the message</li>
<li>Converts the incoming message body to string</li>
<li>It creates a custom processor</li>
<ol>
<li>Replaces the root element name</li>
<li>Sets a header</li>
</ol>
<li>Logs the message</li>
<li>Dispatches the messages to a endpoint based on the header</li>
</ol>
<p>As you can see it is very simple to create routes, you can use a lot of pre build components and if those are not sufficient enough you can create your own. And for those that don&#8217;t like to do this in java you can do the same in xml.</p>
<p>For more information look at:</p>
<p><a href="http://camel.apache.org/" class="aga aga_39">Apache Camel</a><br />
<a href="http://maven.apache.org/" class="aga aga_40">Maven</a><br />
<a href="http://netbeans.org/community/releases/70/" class="aga aga_41">Netbeans 7</a><br />
<a href="http://www.junit.org/" class="aga aga_42">Junit</a> </p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.coralic.nl%2F2011%2F03%2F18%2F10-minutes-hands-on-apache-camel%2F&amp;title=10%20Minutes%20Hands-On%3A%20Apache%20Camel" class="aga aga_43" id="wpa2a_12"><img src="http://blog.coralic.nl/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.coralic.nl/2011/03/18/10-minutes-hands-on-apache-camel/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>The Business Model Canvas</title>
		<link>http://blog.coralic.nl/2011/03/18/the-business-model-canvas/</link>
		<comments>http://blog.coralic.nl/2011/03/18/the-business-model-canvas/#comments</comments>
		<pubDate>Fri, 18 Mar 2011 12:36:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Other]]></category>
		<category><![CDATA[Business Model Canvas]]></category>

		<guid isPermaLink="false">http://blog.coralic.nl/?p=438</guid>
		<description><![CDATA[I totally forgot to post this on my own blog so here it is, the original one can be read at It-Eye On our last IT-Eye openspace meeting we got a great explanation of The Business Model Canvas from our colleague Tim Pinchetti. I found it very interesting to see how simple The Business Model [...]]]></description>
			<content:encoded><![CDATA[<p>I totally forgot to post this on my own blog so here it is, the original one can be read at <a href="http://www.it-eye.nl/2011/02/18/the-business-model-canvas/" class="aga aga_48">It-Eye</a></p>
<p>On our last IT-Eye openspace meeting we got a great explanation of The Business Model Canvas from our colleague Tim Pinchetti. I found it very interesting to see how simple The Business Model Canvas is for sketching new or existing business models. As this was not a presentation but an open discussion we soon ended up in sketching a real life business model. While we discussed our new business model it was clear to me that the only thing you needed to know to be able to fully understand what the model meant were the 9 blocks on the canvas. When you know the meaning of those 9 blocks you are capable to sketch, understand or discuss The Business Model Canvas.<span id="more-438"></span></p>
<p><a href="http://files.coralic.nl/jpg/Business_Model_Canvas_1024.png" ><img class="aligncenter size-full wp-image-1061" title="Business_Model_Canvas_1024" src="http://files.coralic.nl/jpg/Business_Model_Canvas_1024.png" alt="" width="1024" height="683" /></a></p>
<p>Here are the 9 blocks (<a href="http://en.wikipedia.org/wiki/Business_Model_Canvas" class="aga aga_49">source</a>):</p>
<blockquote><p>Infrastructure</p>
<ul>
<li>Key Activities: The activities necessary to execute a company’s business model.</li>
<li>Key Resources: The resources that are necessary to create value for the customer.</li>
<li>Partner Network: The business alliances which complement other aspects of the business model.</li>
</ul>
<p>Offering</p>
<ul>
<li>Value Proposition: The products and services a business offers. Quoting Osterwalder (2004), a value proposition “is an overall view of .. products and services that together represent value for a specific customer segment. It describes the way a firm differentiates itself from its competitors and is the reason why customers buy from a certain firm and not from another.”</li>
</ul>
<p>Customers</p>
<ul>
<li>Customer Segments: The target audience for a business’ products and services.</li>
<li>Channels: The means by which a company delivers products and services to customers. This includes the company’s marketing and distribution strategy.</li>
<li>Customer Relationship: The links a company establishes between itself and its different customer segments. The process of managing customer relationships is referred to as customer relationship management.</li>
</ul>
<p>Finances</p>
<ul>
<li>Cost Structure: The monetary consequences of the means employed in the business model. A company’s DOC.</li>
<li>Revenue Streams: The way a company makes money through a variety of revenue flows. A company’s income.</li>
</ul>
</blockquote>
<p>I found The Business Model Canvas very easy to read, easy to draw and the most important it gave me the chance to quickly understand a business. Besides understanding the business you are also able to see the relations between your customers and partners, you can maybe even figure out where your new opportunities are or where your business needs improvement. While sketching a new business you don’t loose any time in trying to create a right picture because the canvas has a small set of rules. This way you are free and have the opportunity to focus on you creativity like a true painter that is drawing on a canvas.</p>
<p>More info:</p>
<ul>
<li>Book: <a href="http://www.businessmodelgeneration.com/" class="aga aga_50">Business Model Generation</a></li>
<li>Blog: <a href="http://www.businessmodelalchemist.com/" class="aga aga_51">Business Model Alchemist</a></li>
</ul>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.coralic.nl%2F2011%2F03%2F18%2Fthe-business-model-canvas%2F&amp;title=The%20Business%20Model%20Canvas" class="aga aga_52" id="wpa2a_14"><img src="http://blog.coralic.nl/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.coralic.nl/2011/03/18/the-business-model-canvas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to: iPad 4.2.1 jaibreak on windows in 5 steps</title>
		<link>http://blog.coralic.nl/2011/02/17/how-to-ipad-4-2-1-jaibreak-on-windows-in-5-steps/</link>
		<comments>http://blog.coralic.nl/2011/02/17/how-to-ipad-4-2-1-jaibreak-on-windows-in-5-steps/#comments</comments>
		<pubDate>Thu, 17 Feb 2011 17:33:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Other]]></category>
		<category><![CDATA[4.2.1]]></category>
		<category><![CDATA[greenpois0n]]></category>
		<category><![CDATA[ipad]]></category>
		<category><![CDATA[jailbreak]]></category>

		<guid isPermaLink="false">http://blog.coralic.nl/?p=435</guid>
		<description><![CDATA[For those who want to jaibreak there iPad this is the fastest and the easiest way to do. All the thanks go to the greenpois0n developers, cheers for the good work. Step 1: Connect your iPad to your PC and make a backup with your lovely (sarcasm) itunes. Step 2: Download “greenpois0n” from here Step [...]]]></description>
			<content:encoded><![CDATA[<p>For those who want to jaibreak there iPad this is the fastest and the easiest way to do. All the thanks go to the   greenpois0n developers, cheers for the good work.<span id="more-435"></span></p>
<p>Step 1:<br />
Connect your iPad to your PC and make a backup with your lovely (sarcasm) itunes.</p>
<p>Step 2:<br />
Download “greenpois0n” from <a href="http://greenpois0n.com" class="aga aga_54">here</a></p>
<p>Step 3:<br />
Start greenpois0n and connect your iPad to your PC if it wasn&#8217;t connected already</p>
<p>Step 4:<br />
Press the “Prepare to Jailbreak” button and follow the instructions.</p>
<p>Step 5:<br />
Press the “Jailbreak” button. When the iPad reboots it will show commandline text on the screen don&#8217;t panic let it finish.</p>
<p>That&#8217;s it you have just jailbroken your iPad, have fun.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.coralic.nl%2F2011%2F02%2F17%2Fhow-to-ipad-4-2-1-jaibreak-on-windows-in-5-steps%2F&amp;title=How%20to%3A%20iPad%204.2.1%20jaibreak%20on%20windows%20in%205%20steps" class="aga aga_55" id="wpa2a_16"><img src="http://blog.coralic.nl/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.coralic.nl/2011/02/17/how-to-ipad-4-2-1-jaibreak-on-windows-in-5-steps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I bought an iPad :(</title>
		<link>http://blog.coralic.nl/2011/02/17/i-bought-an-ipad/</link>
		<comments>http://blog.coralic.nl/2011/02/17/i-bought-an-ipad/#comments</comments>
		<pubDate>Thu, 17 Feb 2011 17:15:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Other]]></category>
		<category><![CDATA[ipad]]></category>

		<guid isPermaLink="false">http://blog.coralic.nl/?p=432</guid>
		<description><![CDATA[I know some of you may start calling booo booo and I must admit I never thought I would buy one either, but it did happen. So let me tell you how it happened and for those interested I will tell something about what I like and dislike on the iPad. More than a month [...]]]></description>
			<content:encoded><![CDATA[<p>I know some of you may start calling booo booo and I must admit I never thought I would buy one either, but it did happen. So let me tell you how it happened and for those interested I will tell something about what I like and dislike on the iPad.<span id="more-432"></span></p>
<p>More than a month ago I decided I wanted to buy a tablet so I went searching for an android one. I found two candidates that suited my needs and those were the Archos and Point of View. Yes there was also the galaxy tab but I have plaid with it and in my opinion the screen is to small for my needs. At the end I just  wanted a 10inch tablet. Besides that I already have the Galaxy S so buying the galaxy tab would feel like I was buying my phone with a bigger screen.<br />
Because Archos was not available at that moment I went for the Point of View. The speed and the external connections of the POV(Point of View) were great but there was a BIG draw back. And that draw back, you may call it game spoiler was the screen. I compared the POV against my Galaxy S and I could not live with such a bad screen, so eventually I just decided to return it.<br />
Now there I was wanting a tablet but was left with no options. Because I hate waiting I just sad F&#8230; it and went and bought an iPad. The biggest reasons for buying an iPad were the screen and the fact it was available.</p>
<p>The iPad it self is great, it does what it needs to do and does it well. The screen and the speed of the device are great. I must say I am also surprised by the amount of the applications and the games that are available for it. There a lot of high quality games and apps that are really worth of having an iPad. </p>
<p>But not everything is that great on the iPad. Although people may say you don&#8217;t need flash my experience with the iPad was that there where a lot of times when I really need it. I also hate the fact that when I press install on an application the App store shuts it self down. The 256mb of memory is just not enough, I experience a lot of force closes because of the insufficient memory.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.coralic.nl%2F2011%2F02%2F17%2Fi-bought-an-ipad%2F&amp;title=I%20bought%20an%20iPad%20%3A%28" class="aga aga_56" id="wpa2a_18"><img src="http://blog.coralic.nl/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.coralic.nl/2011/02/17/i-bought-an-ipad/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to install OS X in Virtualbox</title>
		<link>http://blog.coralic.nl/2010/12/21/how-to-install-os-x-in-virtualbox/</link>
		<comments>http://blog.coralic.nl/2010/12/21/how-to-install-os-x-in-virtualbox/#comments</comments>
		<pubDate>Tue, 21 Dec 2010 22:31:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Other]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[os x]]></category>
		<category><![CDATA[osx]]></category>
		<category><![CDATA[virtualbox]]></category>

		<guid isPermaLink="false">http://blog.coralic.nl/?p=419</guid>
		<description><![CDATA[If you are like me and like experimenting with technology then on some point it must have crossed your mind to try out the OS X. If so then this is the way to play with it without owning an mac. There are couple of things that you need for this: CPU that has hardware [...]]]></description>
			<content:encoded><![CDATA[<p>If you are like me and like experimenting with technology then on some point it must have crossed your mind to try out the OS X. If so then this is the way to play with it without owning an mac.<span id="more-419"></span></p>
<p>There are couple of things that you need for this:</p>
<ul>
<li>CPU that has hardware virtualization</li>
<li>Virtualbox v3+</li>
</ul>
<p>I am using the following:</p>
<ul>
<li>Ubuntu 10.04 64bit</li>
<li>Intel CPU</li>
<li>Virtualbox 3.2</li>
</ul>
<p>To be able to install OS X you need OS X installation files, to make things easier there are OSX86  installation DVD&#8217;s going around provided by our lovely people at ihackintosh. I personaly used the iDeneb v1.5. To find these DVD&#8217;s just use Google.</p>
<p><strong>Step 1:</strong><br />
Create an virtualbox image with the following options:</p>
<ul>
<li>OS as MAC OS X and sub option MAX OS X Server</li>
<li>1gig+ memory</li>
<li>20gig+ disk space</li>
</ul>
<p><img src="http://files.coralic.nl/osxscreens/osx1.png" alt="" /></p>
<p><strong>Step 2:</strong><br />
After creating the virtualbox image you need to change some settings on it:</p>
<ul>
<li>In “System” setting turn of the “Enable EFI (special Oses only)”</li>
<li>In “Storage” setting change the IDE Controller to type = “ICH6”</li>
<li>In “Storage” add the ideneb iso as CD-ROM</li>
</ul>
<p><img src="http://files.coralic.nl/osxscreens/osx2.png" alt="" /></p>
<p><strong>Step 3:</strong><br />
Boot in to your OS X installation</p>
<p><img src="http://files.coralic.nl/osxscreens/osx3.png" alt="" /></p>
<p><strong>Step 4:</strong><br />
On the &#8220;Select a Destination&#8221; screen you need to prepare the disk for OS X otherwise you will not able to select it, to do so do the following:</p>
<ul>
<li>Got to “Utilities” → “Disk utility”</li>
<li>Select the harddrive and erase it with the format option &#8220;Mac OS Extended (Journaled)&#8221;</li>
</ul>
<p><img src="http://files.coralic.nl/osxscreens/osx4.png" alt="" /></p>
<p><strong>Step 5:</strong><br />
On the &#8220;Install Summary&#8221; screen select Customize to add some additional settings to let it work, under iDeneb Patches 10.5.7 Ready -> Bootloaded and DSDT select the following:</p>
<ul>
<li>Chameleon V2</li>
<li>DSDT Patcher</li>
</ul>
<p><img src="http://files.coralic.nl/osxscreens/osx5.png" alt="" /></p>
<p><strong>Step 6:</strong><br />
Proceed with the installation, after the installation is done before rebooting unmont the cd-rom in virtualbox.</p>
<p><strong>Step 7:</strong><br />
Reboot and finish the post installation.</p>
<p><strong>Step 8:</strong><br />
You have your self an OS X runing <img src='http://blog.coralic.nl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Have fun&#8230;.</p>
<p><img src="http://files.coralic.nl/osxscreens/osx6.png" alt="" /></p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.coralic.nl%2F2010%2F12%2F21%2Fhow-to-install-os-x-in-virtualbox%2F&amp;title=How%20to%20install%20OS%20X%20in%20Virtualbox" class="aga aga_57" id="wpa2a_20"><img src="http://blog.coralic.nl/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.coralic.nl/2010/12/21/how-to-install-os-x-in-virtualbox/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

