<?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>Technofinancial Singularity</title>
	<atom:link href="http://jfaleiro.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://jfaleiro.wordpress.com</link>
	<description>...more notes on information technology and finance</description>
	<lastBuildDate>Tue, 15 Dec 2009 21:06:17 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='jfaleiro.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/be8f7512117d6b1f4dff15047ffba8ee?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Technofinancial Singularity</title>
		<link>http://jfaleiro.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://jfaleiro.wordpress.com/osd.xml" title="Technofinancial Singularity" />
		<item>
		<title>RMS and Protocol Buffers</title>
		<link>http://jfaleiro.wordpress.com/2009/12/03/rms-and-protocol-buffers/</link>
		<comments>http://jfaleiro.wordpress.com/2009/12/03/rms-and-protocol-buffers/#comments</comments>
		<pubDate>Thu, 03 Dec 2009 21:21:58 +0000</pubDate>
		<dc:creator>jfaleiro</dc:creator>
				<category><![CDATA[EDA]]></category>
		<category><![CDATA[Large Scale Computing]]></category>
		<category><![CDATA[Software Frameworks]]></category>
		<category><![CDATA[Software Patterns]]></category>
		<category><![CDATA[Protocol Buffers]]></category>
		<category><![CDATA[quantlet]]></category>
		<category><![CDATA[RMS]]></category>

		<guid isPermaLink="false">http://jfaleiro.wordpress.com/?p=249</guid>
		<description><![CDATA[I was looking into Protocol Buffers as an alternative to represent events in RMS architectures and trying to figure out which of its features are a match for RMS requirements, and which ones might be a drag.
As a reminder, RMS is a collection of patterns that are ideal for event-driven, low-latency applications, especially useful in [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jfaleiro.wordpress.com&blog=452976&post=249&subd=jfaleiro&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I was looking into Protocol Buffers as an alternative to represent events in <a href="http://jfaleiro.wordpress.com/2007/07/01/rms-architectures/">RMS architectures</a> and trying to figure out which of its features are a match for RMS requirements, and which ones might be a drag.</p>
<p>As a reminder, RMS is a collection of patterns that are ideal for event-driven, low-latency applications, especially useful in high-frequency finance. <a href="http://jfaleiro.wordpress.com/2009/03/15/rms-event-handling-patterns/">Events in RMS</a> are described in terms of a header and a body. The header is usually a dictionary, and the body must support the representation of elaborate graphs of objects, representing real world analytical use cases. <a href="http://quantlet.net/">QuantLET </a>is an open source RMS framework.</p>
<h2>Protocol Buffers</h2>
<p>“Protocol buffers are a flexible, efficient, automated mechanism for serializing structured data”. Comparisons with other alternatives like XML or JSON come to mind immediately, but just let’s say for now that Protocol Buffer translates to a smaller binary wire format, and therefore transfers are usually done in a fraction of a time of alternatives like XML or JSON.</p>
<h2>Benefits?</h2>
<p>A few features of Protocol Buffers are a great match to represent RMS events and high frequency applications</p>
<h3>Fast</h3>
<p>The transport format is based in a binary format, compact, and therefore really fast for transfers and serialization. It is ideal for high frequency solutions where the expected latency is less than a millisecond.</p>
<h3>Backward Compatible</h3>
<p>We can see that backward compatibility is a notion that is present from the grounds up. The notion of optional attributes and unique identification of fields through a number allow messages to be consumed by older clients as you roll out new versions of your information model.</p>
<h2>Drawbacks?</h2>
<p>A few features of Protocol Buffers that speak against its use as a transport protocol in RMS architectures.</p>
<h3>Not Plain Objects</h3>
<p>In RMS lingo we define ‘plain object’ as a structure capable of describing cyclical graphs of objects, in which objects are represented through an interface allowing access to its members either directly or through getters and setters.</p>
<p>With that definition in mind, Protocol Buffer objects cannot be seen as RMS plain objects. Protocol Buffers objects carry programmatic features – like fluent builders, and binding to language specific structures (like streams in Java or C++).</p>
<p>While bringing benefits, these same features make objects dependent on the framework when Protocol Buffers are not really necessary (in RMS a transport format is only necessary on endpoints, usually during marshalling/unmarshalling and transformation).</p>
<h3>Lacks Inheritance Support</h3>
<p>Ok, I know – Protocol Buffers allows the representation of a quasi inheritance in a few different ways, depending on how you intend on using it.</p>
<p>When a consumer knows in advance the expected subtype of a message, you can simply embed an instance of your base type on the derived type, you can embed subtypes as optional aggregated messages:</p>
<pre>message Animal { // General animal properties.</pre>
<pre style="padding-left:30px;">optional double weight = 1;
extensions 1000 to max;
}</pre>
<pre>message Dog { // Dog-specific properties.
optional float average_bark_frequency = 1; }</pre>
<pre>message Cat { // Cat-specific properties.
enum Breed { TABBY = 1; CALICO = 2; ... }
optional Breed breed = 1;
}</pre>
<pre>extend Animal {
optional Dog dog = 1000;
optional Cat cat = 1001;
}</pre>
<p>Ok, it might work. The problem with that is that you will need to know all the possible derived types in advance, for anything that is a bit more than really trivial use cases this is an impediment. Here is the alternative, for when a  consumer does not know in advance what types to expect, you have to play with a mix of features.</p>
<pre>message Animal reserved 10 {
optional double weight = 1;
optional Color color = 2;
}</pre>
<pre>message Dog extends Animal reserved 10 {
optional float average_bark_frequence = 1;
}</pre>
<pre>message Cat extends Animal reserved 10 {
optional Breed breed = 1;
}</pre>
<pre>message Lion extends Cat reserved 10 {
optional boolean isAlphaMale = 1;
}</pre>
<p>Now the dirty details: the description above is made in a &#8216;protoext&#8217; file, and in order to give you something useful it has to be compiled to produce a proto file like this:</p>
<pre>//@Hierarchi Lion:Cat:Animal
message Lion {
//-- Animal's indices start at 1 because it is the base class (Lifeform does not count since it is an interface)
//@Class Animal
optional double weight = 1;
//@Class Animal
optional Color color = 2;</pre>
<pre>//-- Cat's indices starts at 11 because reserved is set to 10: 10+1
//@Class Cat
optional Breed breed = 11;</pre>
<pre>//-- Lion's indices starts at 21 because reserved is set to 10: 10+10+1
//@Class Lion
optional boolean isAlphaMale = 21;
}</pre>
<pre>//@Hierarchi Dog:Animal
message Dog {
//-- See comments for Lion above
//@Class Animal
optional double weight = 1;
//@Class Animal
optional Color color = 2;</pre>
<pre>//-- See comments for Cat above
//@Class Dog
optional float aveage_bark_frequence = 11;
}</pre>
<p>So you have already compiled it once, and this thing here will have to be compiled again, to give you something you can finally use. You got the picture: yes, it is complicated.</p>
<h2>Alternatives</h2>
<p>So are there any alternatives to Protocol Buffers out there? Yes there are a few, each bringing their own benefits and drawbacks:</p>
<h3>Specialized Types</h3>
<p>You can use a set of collection type of your language of choice to represent graphs through keys and values. Some examples are maps of maps in Java, or dictionary sets in Python. Expensive and loosely typed, I just can’t think of any good reason to use it, you should avoid it if you can.</p>
<h3>Native Serialization</h3>
<p>This is language dependent, and brings its obvious and critical drawbacks. Java’s serialization, Python pickles, C++ streams, and so forth. Of course those formats are hardly interchangeable. In some cases (Java) the format is so large and cumbersome that makes it a hard fit for any serious low-latency application.</p>
<h3>XML</h3>
<p>Large, slow, over engineered, over complicated, human readable (why if it is intended to be used by computers?). I still did not figure out why people seem to like it and its use is so overspread. I can only see justification for XML use away from low-latency solutions, representing maybe complex and text-driven structures like documents.</p>
<h3>JSON</h3>
<p><strong>JSON</strong> (JavaScript Object Notation) is a lightweight data-interchange format, based on a subset of JavaScript. Again, human readable (can someone explain me why this is a good thing?) and supported by virtually any major platform out there. Faster and a bit smarter than XML, JSON is still too slow for low-latency applications.</p>
<h3>SLICE</h3>
<p>SLICE (Specification Language for ICE) is the abstraction mechanism for separating ICE object interfaces from their implementations, on various languages. Really fast and lightweight, the problem is that it forces in the ICE paraphernalia. It is an option if you plan on using the whole stack.</p>
<h2>So?</h2>
<p>Overall, as long as you clearly understand its limitations and pitfalls, and plan a work around them, given the alternatives and pros and cons, Protocol Buffers is a reasonable option to define and transport events and the information model in RMS systems.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jfaleiro.wordpress.com/249/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jfaleiro.wordpress.com/249/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jfaleiro.wordpress.com/249/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jfaleiro.wordpress.com/249/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jfaleiro.wordpress.com/249/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jfaleiro.wordpress.com/249/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jfaleiro.wordpress.com/249/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jfaleiro.wordpress.com/249/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jfaleiro.wordpress.com/249/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jfaleiro.wordpress.com/249/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jfaleiro.wordpress.com&blog=452976&post=249&subd=jfaleiro&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://jfaleiro.wordpress.com/2009/12/03/rms-and-protocol-buffers/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6ca0d385397734ad0b738b28723e1e06?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jfaleiro</media:title>
		</media:content>
	</item>
		<item>
		<title>Fink or MacPorts?</title>
		<link>http://jfaleiro.wordpress.com/2009/09/27/fink-or-macports/</link>
		<comments>http://jfaleiro.wordpress.com/2009/09/27/fink-or-macports/#comments</comments>
		<pubDate>Sun, 27 Sep 2009 14:50:36 +0000</pubDate>
		<dc:creator>jfaleiro</dc:creator>
				<category><![CDATA[Toolbox]]></category>
		<category><![CDATA[fink]]></category>
		<category><![CDATA[mac os]]></category>
		<category><![CDATA[macports]]></category>

		<guid isPermaLink="false">http://jfaleiro.wordpress.com/?p=242</guid>
		<description><![CDATA[Finally found some time to get out of my bubble and go over the configuration of a new Snow Leopard installation. Time to make a choice: Fink or MacPorts? For some reason I have *both* wondering around on my hard disk.
First of all, they both have to be upgraded to Mac OS X 10.6.1 &#8211; [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jfaleiro.wordpress.com&blog=452976&post=242&subd=jfaleiro&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Finally found some time to get out of my bubble and go over the configuration of a new Snow Leopard installation. Time to make a choice: Fink or MacPorts? For some reason I have *both* wondering around on my hard disk.</p>
<p>First of all, they both have to be upgraded to Mac OS X 10.6.1 &#8211; so, to the uninstall:</p>
<p>Fink:</p>
<pre style="padding-left:30px;"><code>%%</code> <strong><code>sudo rm -rf /sw</code></strong></pre>
<p>and MacPort:</p>
<pre style="padding-left:30px;"><code>%%</code> <strong><code>sudo rm -rf \
    /opt/local \
    /Applications/DarwinPorts \
    /Applications/MacPorts \
    /Library/LaunchDaemons/org.macports.* \
    /Library/Receipts/DarwinPorts*.pkg \
    /Library/Receipts/MacPorts*.pkg \
    /Library/StartupItems/DarwinPortsStartup \
    /Library/Tcl/darwinports1.0 \
    /Library/Tcl/macports1.0 \
    ~/.macports</code></strong></pre>
<p>Finally the installation: I decided to stay with MacPort, seems to provide more packages and most of the tools I usually look for are included &#8211; downloaded the 10.6.1 DMG for it and</p>
<pre style="padding-left:30px;"><code>%%</code> <strong><code>sudo port -v selfupdate

</code></strong></pre>
<p>Simple and straightforward, all works like a breeze.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jfaleiro.wordpress.com/242/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jfaleiro.wordpress.com/242/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jfaleiro.wordpress.com/242/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jfaleiro.wordpress.com/242/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jfaleiro.wordpress.com/242/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jfaleiro.wordpress.com/242/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jfaleiro.wordpress.com/242/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jfaleiro.wordpress.com/242/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jfaleiro.wordpress.com/242/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jfaleiro.wordpress.com/242/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jfaleiro.wordpress.com&blog=452976&post=242&subd=jfaleiro&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://jfaleiro.wordpress.com/2009/09/27/fink-or-macports/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6ca0d385397734ad0b738b28723e1e06?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jfaleiro</media:title>
		</media:content>
	</item>
		<item>
		<title>RMS Event Handling Patterns</title>
		<link>http://jfaleiro.wordpress.com/2009/03/15/rms-event-handling-patterns/</link>
		<comments>http://jfaleiro.wordpress.com/2009/03/15/rms-event-handling-patterns/#comments</comments>
		<pubDate>Sun, 15 Mar 2009 16:20:00 +0000</pubDate>
		<dc:creator>jfaleiro</dc:creator>
				<category><![CDATA[EDA]]></category>
		<category><![CDATA[Financial Engineering]]></category>
		<category><![CDATA[Large Scale Computing]]></category>
		<category><![CDATA[Software Patterns]]></category>
		<category><![CDATA[cep]]></category>
		<category><![CDATA[EQL]]></category>
		<category><![CDATA[patterns]]></category>
		<category><![CDATA[quantlet]]></category>
		<category><![CDATA[RETE]]></category>

		<guid isPermaLink="false">http://jfaleiro.wordpress.com/?p=186</guid>
		<description><![CDATA[In event driven architectures following RMS patterns you have a few different ways of handling incoming events &#8211; we can think of four different patterns, three of them supported in QuantLET:
Specialized Declarative
Mostly through a declarative language (CEP guys/gals love that) like EQL or dialects. In other words, a language specialized for event handling (DSL). But [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jfaleiro.wordpress.com&blog=452976&post=186&subd=jfaleiro&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>In event driven architectures following <a href="http://jfaleiro.wordpress.com/2007/07/01/rms-architectures/">RMS patterns</a> you have a few different ways of handling incoming events &#8211; we can think of four different patterns, three of them supported in <a href="http://quantlet.net/">QuantLET</a>:</p>
<h5>Specialized Declarative</h5>
<p>Mostly through a declarative language (<a href="http://jfaleiro.wordpress.com/2007/04/02/event-processing-patterns/">CEP</a> guys/gals love that) like EQL or dialects. In other words, a language specialized for event handling (DSL). But be advised &#8211; despite of its &#8216;coolness&#8217; and being (most times at least) a time saver and a shortcut it requires specialized skills and tools not available on every corner (translation: lots of $$$).</p>
<h5>Functional Declarative</h5>
<p>Similar to above, one example would be something like a lisp-like dialect. Another example are constructs based on paradigms like map-reduction for large data fabric clusters. All as above applies</p>
<h5>Second-Order Declarative</h5>
<p>Based on inferences derived from second-order logic descriptions. You: &#8220;What? Why are you bringing this up here?&#8221; Me: Well, inference engines, specially <a href="http://en.wikipedia.org/wiki/Rete_algorithm">RETE engines</a>, are basically a correlated forwarded-chain of rules and facts, optimized in a tree-like fashion for speed in which &#8220;triggering&#8221; can be seen as an event&#8217;s action.</p>
<p>A time saver, flexible, and ideal when proper tools and resources are not available.</p>
<p style="text-align:center;"><a href="http://upload.wikimedia.org/wikipedia/commons/9/92/Rete.JPG"><img class="aligncenter" title="RETE Engine" src="http://upload.wikimedia.org/wikipedia/commons/9/92/Rete.JPG" alt="" width="516" height="358" /></a></p>
<h5>Finite State Machines</h5>
<p>Actions are associated to changes in state represented by a directed graph. Conditional transitions are also supported by &#8216;guards&#8217;. Incoming events carry either a next state of the graph, or the indication of a transition. Different types of actions are then performed based on the transition and the association, i.e: actions performed when entering a state (entry), leaving a state (exit), or when changed from one specific state to another (transition).</p>
<h5>Observer-Observable Imperative</h5>
<p>Simplest, but can lead to a lot of code to write that *will* turn into spaghetti if done by the uninitiated. Base yourself on proven paradigms that enforce separation of control and state to avoid adding to your own pain.</p>
<h5>Procedural Imperative</h5>
<p>Read &#8216;anything-else-imperative-except-the-observer-pattern-mentioned-above&#8217; &#8211; Don&#8217;t even think about trying that unless your model is *really* simple&#8230;</p>
<p>Ok &#8212; Now, pick one, any one&#8230;</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jfaleiro.wordpress.com/186/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jfaleiro.wordpress.com/186/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jfaleiro.wordpress.com/186/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jfaleiro.wordpress.com/186/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jfaleiro.wordpress.com/186/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jfaleiro.wordpress.com/186/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jfaleiro.wordpress.com/186/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jfaleiro.wordpress.com/186/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jfaleiro.wordpress.com/186/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jfaleiro.wordpress.com/186/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jfaleiro.wordpress.com&blog=452976&post=186&subd=jfaleiro&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://jfaleiro.wordpress.com/2009/03/15/rms-event-handling-patterns/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6ca0d385397734ad0b738b28723e1e06?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jfaleiro</media:title>
		</media:content>

		<media:content url="http://upload.wikimedia.org/wikipedia/commons/9/92/Rete.JPG" medium="image">
			<media:title type="html">RETE Engine</media:title>
		</media:content>
	</item>
		<item>
		<title>RIA Visualization Frameworks</title>
		<link>http://jfaleiro.wordpress.com/2008/08/08/ria-visualization-frameworks/</link>
		<comments>http://jfaleiro.wordpress.com/2008/08/08/ria-visualization-frameworks/#comments</comments>
		<pubDate>Fri, 08 Aug 2008 16:40:38 +0000</pubDate>
		<dc:creator>jfaleiro</dc:creator>
				<category><![CDATA[Financial Engineering]]></category>
		<category><![CDATA[System Architecture]]></category>
		<category><![CDATA[Toolbox]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[gwt]]></category>
		<category><![CDATA[javafx]]></category>
		<category><![CDATA[moonlight]]></category>
		<category><![CDATA[openlaszlo]]></category>
		<category><![CDATA[ria]]></category>
		<category><![CDATA[silverlight]]></category>
		<category><![CDATA[visualization]]></category>

		<guid isPermaLink="false">http://jfaleiro.wordpress.com/?p=76</guid>
		<description><![CDATA[In finance (and in most domains for that matter) your information is as good as the way it is presented. Few features on your applications will be more critical than the function of visualization.
The example above from MIT&#8217;s financial visualization lab shows price, volume over a time series and instantaneous gain/loss. As you can see [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jfaleiro.wordpress.com&blog=452976&post=76&subd=jfaleiro&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>In finance (and in most domains for that matter) your information is as good as the way it is presented. Few features on your applications will be more critical than the function of visualization.</p>
<div class="wp-caption aligncenter" style="width: 489px"><img src="http://lineplot.com/gallery/media/ticks-42.jpg" alt="Price and Volume, 3D" width="479" height="331" /><p class="wp-caption-text">Price, Volume, Gain &amp; Loss in 3D</p></div>
<p>The example above from <a href="http://lfe.mit.edu/research/visualization.htm">MIT&#8217;s financial visualization</a> lab shows price, volume over a time series and instantaneous gain/loss. As you can see this and other similar applications out there resemble a neat 3D gaming interface and not grandpa&#8217;s trading blotter.</p>
<p>Anyway, needless to say, the choice of a framework to support your user experience can go as far as determining the success or failure of your application &#8211; in some cases it can even balance for limitations on other functions  performed in the back-end.</p>
<p>As of now thankfully there are many good options out there. Hands down RIA (rich internet [or interactive in MS parlance] applications) frameworks are best suited for the task. In essence RIA frameworks allow thick, full featured clients to be deployed and launched over the internet. The main current players are JavaFX, Silverlight, Flex, GWT and Openlazslo.</p>
<h2>JavaFX</h2>
<p>The <a href="http://www.javafx.com/">JavaFX</a> platform was announced by Sun about a year ago. A long waited response to something to counter balance deficiencies in the standard Swing/AWT. It is available by default on JRE 6 and can optionally rely on battle tested JNLP for remote deployment, execution and security.</p>
<p>Some of its major limitations come from the fact that even after one year, good development tools are still  not available. Most common development tools are provided as part of the NetBeans IDE, some limited plugins are available for Eclipse IDE. We could not find many commercial applications relying on the framework as well.</p>
<p>Strong points are embedded JDK support, reliance on stable Java protocols and Java language binding and a neat scripting language for view definition, for example:</p>
<pre>Button {
  text: "Click Me"
  action:
    function():Void {
      MessageDialog {
        title: "JavaFX Script Rocks!"
        // This string has a newline in the source code
        message: "JavaFX Script is Simple, Elegant,
         and Leverages the Power of Java"
        visible: true
       }
     }
}</pre>
<p>Defines a button, and a function to be triggered after an action to that button &#8211; this sample code is an exact copy of code found in the <a href="http://java.sun.com/developer/technicalArticles/scripting/javafx/ria_1/#4">scripting tutorial</a>.</p>
<h2>Silverlight</h2>
<p><a href="http://silverlight.net/">Silverlight</a> is MIcrosoft&#8217;s RIA framework for .NET, very popular in financial software shops. Runtime is  supported for Mac and Windows, development environment in Visual Studio requires Windows. Views are declared following XML descriptors as well.</p>
<pre>&lt;UserControl x:Class="DiggSample.Page"
    xmlns="http://schemas.microsoft.com/client/2007"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:Digg="clr-namespace:DiggSample;assembly=DiggSample"&gt;
    &lt;Grid Style="{StaticResource TopGrid}"&gt;
            &lt;Button x:Name="btnSearch"
                    Content="Search"
                    Click="SearchBtn_Click"
                    Style="{StaticResource SearchButton}" /&gt;
    &lt;/Grid&gt;
&lt;/UserControl&gt;</pre>
<p>Again, the same usage sample: a button and an action. This code snippet &#8211; reduced for simplicity &#8211; is from Silverlight&#8217;s <a href="http://weblogs.asp.net/scottgu/pages/silverlight-tutorial-part-1-creating-quot-hello-world-quot-with-silverlight-2-and-vs-2008.aspx">tutorial and samples</a>. Silverlight is target mainly at Windows platforms, Mac is supported as a run time as well. For an open source implementation covering other OSes as of this moment you will have to rely on <a href="http://www.mono-project.com/Moonlight">Moonlight</a>, <a href="http://www.mono-project.com/Main_Page">Mono</a>&#8217;s implementation.</p>
<h2>Flex</h2>
<p>Adobe&#8217;s <a href="http://www.adobe.com/products/flex/">Flex</a> has a commercial and an <a href="http://opensource.adobe.com/wiki/display/flexsdk/Flex+SDK;jsessionid=BA63103FBCDA56106EBC3D658186DE7B">open source SDK</a> distribution. Since it was one of the early products on this arena, is the most widely used, specially for public web applications.</p>
<p>It is not an exception when it comes to XML-like language for UI definition called MXML and a &#8220;powerful object-oriented language&#8221; called ActionScript (yes, we need yet another). Below is a sample MXML and script of a Flickr-like photo application.</p>
<pre class="code-java">&lt;?xml version=<span class="code-quote">"1.0"</span> encoding=<span class="code-quote">"utf-8"</span>?&gt;
&lt;mx:Application xmlns:mx=<span class="code-quote">"http:<span class="code-comment">//www.adobe.com/2006/mxml"</span>
</span>    backgroundGradientColors=<span class="code-quote">"[0xFFFFFF, 0xAAAAAA]"</span>
    horizontalAlign=<span class="code-quote">"left"</span>
    verticalGap=<span class="code-quote">"15"</span>
    horizontalGap=<span class="code-quote">"15"</span>&gt;

    &lt;mx:Script&gt;
        &lt;![CDATA[
            <span class="code-keyword">import</span> mx.collections.ArrayCollection;
            <span class="code-keyword">import</span> mx.rpc.events.ResultEvent;

            [Bindable]
            <span class="code-keyword">private</span> <span class="code-keyword">var</span> photoFeed:ArrayCollection;

            <span class="code-keyword">private</span> function requestPhotos():void {
                photoService.cancel();
                <span class="code-keyword">var</span> params:<span class="code-object">Object</span> = <span class="code-keyword">new</span> <span class="code-object">Object</span>();
                params.format = 'rss_200_enc';
                params.tags = searchTerms.text;
                photoService.send(params);
            }

            <span class="code-keyword">private</span> function photoHandler(event:ResultEvent):void {
                 photoFeed = event.result.rss.channel.item as ArrayCollection;
            }
         ]]&gt;
    &lt;/mx:Script&gt;

    &lt;mx:HTTPService id=<span class="code-quote">"photoService"</span>
        url=<span class="code-quote">"http:<span class="code-comment">//api.flickr.com/services/feeds/photos_public.gne"</span>
</span>        result=<span class="code-quote">"photoHandler(event)"</span> /&gt;

	&lt;mx:HBox&gt;
		&lt;mx:Label text=<span class="code-quote">"Flickr tags or search terms:"</span> /&gt;
		&lt;mx:TextInput id=<span class="code-quote">"searchTerms"</span> /&gt;
		&lt;mx:Button label=<span class="code-quote">"Search"</span>
			click=<span class="code-quote">"requestPhotos()"</span> /&gt;
	&lt;/mx:HBox&gt;

	&lt;mx:TileList width=<span class="code-quote">"100%"</span> height=<span class="code-quote">"100%"</span>
		dataProvider=<span class="code-quote">"{photoFeed}"</span>
		itemRenderer=<span class="code-quote">"FlickrThumbnail"</span>&gt;
	&lt;/mx:TileList&gt;

&lt;/mx:Application&gt;</pre>
<p>There is extensive documentation and tutorials <a href="http://learn.adobe.com/wiki/display/Flex/1b.+Code+Files">available</a>. This code snippet came from there as well.</p>
<p>It is interesting to note the recent swap of designers and developers working on JavaFX and Flex SDK &#8211; some <a href="http://www.artima.com/lejava/articles/javaone_2007_james_ward.html">common strategies</a> on these two arenas started to take shape. It would not come as a surprise if these platforms converge in the near future.</p>
<h2>GWT</h2>
<p>The <a href="http://code.google.com/webtoolkit/">GWT</a> platform from all powerful Google is basically a set of development tools and IDE plugins that allow you to use Java to define RIA solutions. No surprises here as well, although you should not need to manipulate them directly, XML is used again to define GWT &#8220;modules&#8221;. You can find plenty of examples and documentation on GWT&#8217;s <a href="http://code.google.com/webtoolkit/gettingstarted.html">tutorial</a> resources.</p>
<h2>OpenLaszlo</h2>
<p>My favorite, an DHTML (optionally FLASH) based framework, many strong points: stable, open source, simple to deploy, test. A variety of resources to support data biding and scripting. My only comment would be once more, the over use of XML as a language called LZX:</p>
<pre class="programlisting"><span><span class="markup">&lt;</span><code class="sgmltag-element">canvas</code> <code class="sgmltag-attribute">height</code>="<code class="sgmltag-attvalue">200</code>" <code class="sgmltag-attribute">width</code>="<code class="sgmltag-attvalue">500</code>"<span class="markup">&gt;</span>
  <span class="markup">&lt;</span><code class="sgmltag-element">window</code> <code class="sgmltag-attribute">x</code>="<code class="sgmltag-attvalue">20</code>" <code class="sgmltag-attribute">y</code>="<code class="sgmltag-attvalue">20</code>" <code class="sgmltag-attribute">width</code>="<code class="sgmltag-attvalue">150</code>" <code class="sgmltag-attribute">title</code>="<code class="sgmltag-attvalue">Simple Window</code>" <code class="sgmltag-attribute">resizable</code>="<code class="sgmltag-attvalue">true</code>"<span class="markup">&gt;</span>
    <span class="markup">&lt;</span><code class="sgmltag-element">button</code> <code class="sgmltag-attribute">text</code>="<code class="sgmltag-attvalue">My button</code>" <code class="sgmltag-attribute">onclick</code>="<code class="sgmltag-attvalue">this.parent.setAttribute('title', 'You clicked it');</code>"<span class="markup">/&gt;</span>
  <span class="markup">&lt;/</span><code class="sgmltag-element">window</code><span class="markup">&gt;</span>
<span class="markup">&lt;/</span><code class="sgmltag-element">canvas</code><span class="markup">&gt;
</span></span></pre>
<p>Well, self explanatory. A button again and an action. You can embed scripts in LZX as well:</p>
<pre class="programlisting">&lt;canvas height="120"&gt;
   &lt;script&gt;
     <span class="em">&lt;![CDATA[</span>
     for (var i = 0; i &lt; 11; i++) {
       Debug.write(i);
     }
     <span class="em">]]&gt;</span>
   &lt;/script&gt;
&lt;/canvas&gt;</pre>
<p>Again, these examples and many others can be found in <a href="http://www.openlaszlo.org/lps4.1/docs/developers/tutorials/scripting-tutorial.html">Openlaszlo&#8217;s scripting tutorial</a>.</p>
<h2>Finally</h2>
<p>Great options, you might want to try these tutorials and find out which ones fit your use cases better. Sorry if you were expecting this article to provide a definitive answer here, far from that.</p>
<p>This is an active area of development currently, so you should expect many improvements for each of these contenders over the upcoming months.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/jfaleiro.wordpress.com/76/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/jfaleiro.wordpress.com/76/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jfaleiro.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jfaleiro.wordpress.com/76/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jfaleiro.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jfaleiro.wordpress.com/76/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jfaleiro.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jfaleiro.wordpress.com/76/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jfaleiro.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jfaleiro.wordpress.com/76/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jfaleiro.wordpress.com/76/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jfaleiro.wordpress.com/76/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jfaleiro.wordpress.com&blog=452976&post=76&subd=jfaleiro&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://jfaleiro.wordpress.com/2008/08/08/ria-visualization-frameworks/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6ca0d385397734ad0b738b28723e1e06?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jfaleiro</media:title>
		</media:content>

		<media:content url="http://lineplot.com/gallery/media/ticks-42.jpg" medium="image">
			<media:title type="html">Price and Volume, 3D</media:title>
		</media:content>
	</item>
		<item>
		<title>C++ as a System Language</title>
		<link>http://jfaleiro.wordpress.com/2008/08/05/c-plusplus-as-a-system-language/</link>
		<comments>http://jfaleiro.wordpress.com/2008/08/05/c-plusplus-as-a-system-language/#comments</comments>
		<pubDate>Tue, 05 Aug 2008 17:56:06 +0000</pubDate>
		<dc:creator>jfaleiro</dc:creator>
				<category><![CDATA[Software Frameworks]]></category>
		<category><![CDATA[System Architecture]]></category>
		<category><![CDATA[Toolbox]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://jfaleiro.wordpress.com/?p=67</guid>
		<description><![CDATA[I like the simple approach taken by John Ousternhout on something that people fancily refer to as &#8220;Ousterhout&#8217;s Dichotomy&#8221;. In essence: high-level computer programming languages are separated into two groups: &#8220;system programming languages&#8221; and &#8220;scripting languages&#8221;.
The thing is that it is difficult to define something as a &#8220;script&#8221; &#8211; is C# or Java a scripting [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jfaleiro.wordpress.com&blog=452976&post=67&subd=jfaleiro&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I like the simple approach taken by John Ousternhout on something that people fancily refer to as <a href="http://home.pacbell.net/ouster/scripting.html">&#8220;Ousterhout&#8217;s Dichotomy&#8221;</a>. In essence: high-level computer programming languages are separated into two groups: &#8220;system programming languages&#8221; and &#8220;scripting languages&#8221;.</p>
<p>The thing is that it is difficult to define something as a &#8220;script&#8221; &#8211; is C# or Java a scripting language?</p>
<p>On a correlated subject I came across a rather old <a href="http://thread.gmane.org/gmane.comp.version-control.git/57643/focus=57918">post</a> from Linus Torvalds in which, despite of the tone, some interesting points came through -</p>
<p>If you have to be concerned with numbers and numbers of abstraction layers, a language is not adequate as a system programming language. Even though abstraction layers simplify programmatic representation, they of course reduce traceability (why is this not working?) and performance. That would rule out C++ as a system programming language, and any other object-oriented ones. We could rewrite that and create our very own &#8220;Quick and Dirty Dichotomy&#8221;:</p>
<ul>
<li>System programming languages: fast, real-time, strongly typed, natively compiled, features designed towards interaction with lower-level assembly and hardware drivers: C, Pascal, Fortran</li>
<li>Application programming languages: fast &#8211; although not real-time, just in time compilation, features designed towards productivity and code production in large scale, support abstraction enhancing features like object orientation and loose-typing: Java, Python, Ruby, C#</li>
</ul>
<p>Where exactly does C++ fit in? &#8212; I hope that does not qualify me as a dinosaur&#8230;</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/jfaleiro.wordpress.com/67/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/jfaleiro.wordpress.com/67/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jfaleiro.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jfaleiro.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jfaleiro.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jfaleiro.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jfaleiro.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jfaleiro.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jfaleiro.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jfaleiro.wordpress.com/67/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jfaleiro.wordpress.com/67/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jfaleiro.wordpress.com/67/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jfaleiro.wordpress.com&blog=452976&post=67&subd=jfaleiro&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://jfaleiro.wordpress.com/2008/08/05/c-plusplus-as-a-system-language/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6ca0d385397734ad0b738b28723e1e06?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jfaleiro</media:title>
		</media:content>
	</item>
		<item>
		<title>Quantlet Models</title>
		<link>http://jfaleiro.wordpress.com/2008/07/25/quantlet-models/</link>
		<comments>http://jfaleiro.wordpress.com/2008/07/25/quantlet-models/#comments</comments>
		<pubDate>Fri, 25 Jul 2008 14:47:01 +0000</pubDate>
		<dc:creator>jfaleiro</dc:creator>
				<category><![CDATA[EDA]]></category>
		<category><![CDATA[EIP]]></category>
		<category><![CDATA[Financial Engineering]]></category>
		<category><![CDATA[Software Frameworks]]></category>
		<category><![CDATA[Toolbox]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[EWMA]]></category>
		<category><![CDATA[grammatical evolution]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[q-let]]></category>
		<category><![CDATA[quantlet]]></category>
		<category><![CDATA[random walk]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[volatility]]></category>

		<guid isPermaLink="false">http://jfaleiro.wordpress.com/?p=59</guid>
		<description><![CDATA[Models are deployment bundles in Quantlet. The bundle is a &#8220;jar&#8221; file &#8211; defining:

a set of reusable, lightweight, simplified processing components called Q-Lets;
abstract endpoints (in EIP sense)
configuration rules providing routes (DSL and EQL) for stream of events
configuration of datasets for each of the execution modes (runtime, simulation, back-testing).

The following models have been implemented experimentally:

Generation of [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jfaleiro.wordpress.com&blog=452976&post=59&subd=jfaleiro&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Models are deployment bundles in <a href="http://quantlet.net/">Quantlet</a>. The bundle is a &#8220;jar&#8221; file &#8211; defining:</p>
<ul>
<li>a set of reusable, lightweight, simplified processing components called Q-Lets;</li>
<li>abstract endpoints (in <a href="http://www.enterpriseintegrationpatterns.com/MessageEndpoint.html">EIP</a> sense)</li>
<li>configuration rules providing routes (<a href="http://en.wikipedia.org/wiki/Domain-specific_programming_language">DSL</a> and <a href="http://esper.sourceforge.net/esper-0.7.5/doc/reference/en/html/EQL.html">EQL</a>) for stream of events</li>
<li>configuration of datasets for each of the execution modes (runtime, simulation, <a href="http://en.wikipedia.org/wiki/Backtesting">back-testing</a>).</li>
</ul>
<p>The <a href="http://www.editgrid.com/user/jmfj">following models</a> have been implemented experimentally:</p>
<ul>
<li>Generation of a stream of events simulating a Random Walk (model is <a href="http://www.editgrid.com/user/jmfj/RandomWalk">here</a>)</li>
<li>Historical volatility through exponentially weighted moving average (model is <a href="http://www.editgrid.com/user/jmfj/EWMA">here</a>)</li>
<li>Trading engine using biologically inspired heuristics based on <a href="http://en.wikipedia.org/wiki/Grammatical_evolution">Grammatical Evolution</a></li>
</ul>
<p>To learn more about the Quantlet idea, take a look on the <a href="http://quantlet.wordpress.com/quantlet-mill/">process</a> (”The Mill”) defining how analytical units should be conceptualized, implemented, tested and deployed.</p>
<p>Next, check how the <a href="http://quantlet.wordpress.com/box/">runtime framework</a> (aka “The Box” until we find a better name) was designed.</p>
<p>You can have a look at the <a href="http://www.assembla.com/wiki/show/quantletbox">source code</a> as well (you will need at least Subversion and Maven; an IDE like Eclipse will definitely help).</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/jfaleiro.wordpress.com/59/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/jfaleiro.wordpress.com/59/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jfaleiro.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jfaleiro.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jfaleiro.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jfaleiro.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jfaleiro.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jfaleiro.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jfaleiro.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jfaleiro.wordpress.com/59/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jfaleiro.wordpress.com/59/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jfaleiro.wordpress.com/59/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jfaleiro.wordpress.com&blog=452976&post=59&subd=jfaleiro&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://jfaleiro.wordpress.com/2008/07/25/quantlet-models/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6ca0d385397734ad0b738b28723e1e06?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jfaleiro</media:title>
		</media:content>
	</item>
		<item>
		<title>Eclipse Trader: Developer&#8217;s Quick Start</title>
		<link>http://jfaleiro.wordpress.com/2008/06/20/eclipse-trader-developer-quick-start/</link>
		<comments>http://jfaleiro.wordpress.com/2008/06/20/eclipse-trader-developer-quick-start/#comments</comments>
		<pubDate>Fri, 20 Jun 2008 18:37:00 +0000</pubDate>
		<dc:creator>jfaleiro</dc:creator>
				<category><![CDATA[Toolbox]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[eclipse trader]]></category>
		<category><![CDATA[equinox]]></category>
		<category><![CDATA[marketcetera]]></category>
		<category><![CDATA[osgi]]></category>
		<category><![CDATA[quantlet]]></category>
		<category><![CDATA[rcp]]></category>
		<category><![CDATA[subversion]]></category>

		<guid isPermaLink="false">http://jfaleiro.wordpress.com/?p=54</guid>
		<description><![CDATA[Eclipse Trader is an Eclipse RCP application for online stock trading with many interesting features. It differs from other financial frameworks like  Marketcetera and Quantlet in a way that it is a single-tiered desktop application. This, and the fact that it uses the elegant OSGi based Equinox framework, adds simplicity and allows for quick [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jfaleiro.wordpress.com&blog=452976&post=54&subd=jfaleiro&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a href="http://eclipsetrader.sourceforge.net/">Eclipse Trader</a> is an Eclipse RCP application for online stock trading with many interesting features. It differs from other financial frameworks like  <a href="http://www.marketcetera.com/">Marketcetera</a> and <a href="http://quantlet.net/box">Quantlet</a> in a way that it is a single-tiered desktop application. This, and the fact that it uses the elegant <a href="http://www.osgi.org/Main/HomePage">OSGi</a> based <a href="http://www.eclipse.org/equinox/">Equinox</a> framework, adds simplicity and allows for quick extension through plug-ins and add-ons.</p>
<p>Follow these steps to work on it through your Eclipse IDE.</p>
<h2>Tool Set</h2>
<p>You will need Eclipse of course, and the following plug-ins:</p>
<ul>
<li>Eclipse Project SDK &#8211; from Eclipse Project Updates</li>
<li>Subclipse (a Subversion plugin) &#8211; Remote site http://subclipse.tigris.org/update_1.2.</li>
</ul>
<h2>Getting the Source</h2>
<p>After you restart your IDE, go to your SVN perspective, right-click on the list of repositories, and select New-&gt;New Repository Location. Add the following Subversion HTTPS URL:</p>
<pre>https://eclipsetrader.svn.sourceforge.net/svnroot/eclipsetrade</pre>
<p>Right click on the folder &#8220;trunk&#8221;, and select &#8220;Checkout&#8230;&#8221; and the &#8220;Checkout as a project in the workspace&#8221;. On the next dialog box, type a name for your project, say &#8220;eclipsetrader-trunk&#8221;</p>
<p>Let the checkout finish and move to the next step.</p>
<h2>Configuring your project</h2>
<p>Switch to your Java perspective and delete your recently created project &#8211; do not delete the contents.</p>
<p>On the main menu, select &#8220;Import&#8221;, and then &#8220;Plug-ins and Fragments&#8221;. Select &#8220;Next&#8221;</p>
<p>On the &#8220;Import Plug-ins and Fragments&#8221;, select your previous project location (under your workspace), like in this example:</p>
<p><a href="http://jfaleiro.files.wordpress.com/2008/06/picture-3.png"><img class="alignnone size-medium wp-image-55" src="http://jfaleiro.files.wordpress.com/2008/06/picture-3.png?w=300&#038;h=250" alt="" width="300" height="250" /></a></p>
<p>On the next screen, select &#8220;Add All &#8211;&gt;&#8221;. Click Finish and wait for completion.</p>
<h2>Starting Your Project</h2>
<p>Right click on net.sourceforge.eclipsetrader, select &#8220;Run As&#8221; and then &#8220;Eclipse Application&#8221;.</p>
<p>You should see Eclipse Trader starting from your IDE, You can now edit, investigate, debug as you would do with any other application.</p>
<p>Enjoy.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/jfaleiro.wordpress.com/54/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/jfaleiro.wordpress.com/54/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jfaleiro.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jfaleiro.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jfaleiro.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jfaleiro.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jfaleiro.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jfaleiro.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jfaleiro.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jfaleiro.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jfaleiro.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jfaleiro.wordpress.com/54/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jfaleiro.wordpress.com&blog=452976&post=54&subd=jfaleiro&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://jfaleiro.wordpress.com/2008/06/20/eclipse-trader-developer-quick-start/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6ca0d385397734ad0b738b28723e1e06?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jfaleiro</media:title>
		</media:content>

		<media:content url="http://jfaleiro.files.wordpress.com/2008/06/picture-3.png?w=300" medium="image" />
	</item>
		<item>
		<title>Javadoc Inheritance and {@inheritDoc}</title>
		<link>http://jfaleiro.wordpress.com/2008/06/16/javadoc-inheritance-and-inheritdoc/</link>
		<comments>http://jfaleiro.wordpress.com/2008/06/16/javadoc-inheritance-and-inheritdoc/#comments</comments>
		<pubDate>Tue, 17 Jun 2008 02:27:21 +0000</pubDate>
		<dc:creator>jfaleiro</dc:creator>
				<category><![CDATA[Toolbox]]></category>
		<category><![CDATA[checkstype]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[javadoc]]></category>

		<guid isPermaLink="false">http://jfaleiro.wordpress.com/?p=52</guid>
		<description><![CDATA[Ever wondered how to reconcile the way eclipse, javadoc and verification tools like checkstyle or PMD/CPD handle the validation of javadoc entries?
Use the tag {@inheritDoc} as in the example below:
public class DefaultRouteBuilder extends RouteBuilder {

	/** {@inheritDoc}
	 */
	@Override
	public void configure() throws Exception {
		// TODO Auto-generated method stub
	}

}
This will make all tools happy and will show whatever [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jfaleiro.wordpress.com&blog=452976&post=52&subd=jfaleiro&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Ever wondered how to reconcile the way <a href="http://www.eclipse.org/">eclipse</a>, <a href="http://java.sun.com/j2se/javadoc/">javadoc</a> and verification tools like <a href="http://checkstyle.sourceforge.net/">checkstyle</a> or <a href="http://pmd.sourceforge.net/">PMD/CPD</a> handle the validation of javadoc entries?</p>
<p>Use the tag <code>{@inheritDoc}</code> as in the example below:</p>
<pre>public class DefaultRouteBuilder extends RouteBuilder {

	/** {@inheritDoc}
	 */
	@Override
	public void configure() throws Exception {
		// TODO Auto-generated method stub
	}

}</pre>
<p>This will make all tools happy and will show whatever documentation the interface provides. This guy puts out a good <a href="http://jtauber.com/blog/2004/05/11/inheriting_doc_in_javadoc_and_eclipse/">explanation</a> together with all alternatives, pros end cons.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/jfaleiro.wordpress.com/52/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/jfaleiro.wordpress.com/52/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jfaleiro.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jfaleiro.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jfaleiro.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jfaleiro.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jfaleiro.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jfaleiro.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jfaleiro.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jfaleiro.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jfaleiro.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jfaleiro.wordpress.com/52/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jfaleiro.wordpress.com&blog=452976&post=52&subd=jfaleiro&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://jfaleiro.wordpress.com/2008/06/16/javadoc-inheritance-and-inheritdoc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6ca0d385397734ad0b738b28723e1e06?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jfaleiro</media:title>
		</media:content>
	</item>
		<item>
		<title>Mac OS port</title>
		<link>http://jfaleiro.wordpress.com/2008/06/13/mac-os-port/</link>
		<comments>http://jfaleiro.wordpress.com/2008/06/13/mac-os-port/#comments</comments>
		<pubDate>Fri, 13 Jun 2008 18:25:45 +0000</pubDate>
		<dc:creator>jfaleiro</dc:creator>
				<category><![CDATA[Toolbox]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[gmake]]></category>
		<category><![CDATA[mac os]]></category>
		<category><![CDATA[macports]]></category>
		<category><![CDATA[make]]></category>

		<guid isPermaLink="false">http://jfaleiro.wordpress.com/2008/06/13/mac-os-port/</guid>
		<description><![CDATA[Looking for a make (gmake?) installation in Mac OS I came across macports.
itacoatiara-2:~ jfaleiro$ sudo port -d selfupdate
sudo: port: command not found
Despite of what the documentation says, seems like the shell environment is not set properly and the selfupdate command is not executed in the post-install. Try this:
itacoatiara-2:~ jfaleiro$ env &#124; grep SHELL
SHELL=/bin/bash
If you are [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jfaleiro.wordpress.com&blog=452976&post=50&subd=jfaleiro&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Looking for a make (gmake?) installation in Mac OS I came across <a href="http://www.macports.org">macports</a>.</p>
<p><span style="font-family:Courier New;">itacoatiara-2:~ jfaleiro$ sudo port -d selfupdate<br />
sudo: port: command not found</span></p>
<p><span style="font-family:Courier New;"><span style="font-family:sans-serif;">Despite of what the <a href="http://guide.macports.org/#installing.binary">documentation</a> says, seems like the shell environment is not set properly and the selfupdate command is not executed in the post-install. Try this:</span></span></p>
<p><span style="font-family:Courier New;"><span style="font-family:sans-serif;"><span style="font-family:Courier New;">itacoatiara-2:~ jfaleiro$ env | grep SHELL<br />
SHELL=/bin/bash</span></span></span></p>
<p><span style="font-family:Courier New;"><span style="font-family:sans-serif;"><span style="font-family:Courier New;"><span style="font-family:sans-serif;">If you are using bash, create a file .bash_profile on your home directory (or add to it if you already have it) with the following content:<br />
<span style="font-family:Courier New;"><br />
export PATH=$PATH:/opt/local/bin<br />
export MANPATH=$MANPATH:/opt/local/share/man<br />
export INFOPATH=$INFOPATH:/opt/local/share/info</span></span></span></span></span></p>
<p>This is <a href="http://guide.macports.org/#installing.shell">there</a> as well, just in case you missed it in a first pass&#8230;</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/jfaleiro.wordpress.com/50/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/jfaleiro.wordpress.com/50/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jfaleiro.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jfaleiro.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jfaleiro.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jfaleiro.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jfaleiro.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jfaleiro.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jfaleiro.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jfaleiro.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jfaleiro.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jfaleiro.wordpress.com/50/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jfaleiro.wordpress.com&blog=452976&post=50&subd=jfaleiro&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://jfaleiro.wordpress.com/2008/06/13/mac-os-port/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6ca0d385397734ad0b738b28723e1e06?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jfaleiro</media:title>
		</media:content>
	</item>
		<item>
		<title>CJAR</title>
		<link>http://jfaleiro.wordpress.com/2008/06/04/cjar/</link>
		<comments>http://jfaleiro.wordpress.com/2008/06/04/cjar/#comments</comments>
		<pubDate>Wed, 04 Jun 2008 21:03:45 +0000</pubDate>
		<dc:creator>jfaleiro</dc:creator>
				<category><![CDATA[Toolbox]]></category>
		<category><![CDATA[ant]]></category>
		<category><![CDATA[ivy]]></category>
		<category><![CDATA[maven]]></category>

		<guid isPermaLink="false">http://jfaleiro.wordpress.com/?p=48</guid>
		<description><![CDATA[Finally&#8230; CJAR &#8211; Comprehensive Java Artifacts Repository. Just type what you are looking for, and follow the links for customized XML snippets for ant, maven or ivy configuration files.
Alternatives for the same purpose are mvnrepository.com and Maven Repo Search.
       <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jfaleiro.wordpress.com&blog=452976&post=48&subd=jfaleiro&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Finally&#8230; <a href="http://www.searchj.org/">CJAR</a> &#8211; Comprehensive Java Artifacts Repository. Just type what you are looking for, and follow the links for customized XML snippets for ant, maven or ivy configuration files.</p>
<p>Alternatives for the same purpose are <a href="http://mvnrepository.com/">mvnrepository.com</a> and <a href="http://maven.ozacc.com/">Maven Repo Search</a>.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/jfaleiro.wordpress.com/48/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/jfaleiro.wordpress.com/48/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/jfaleiro.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/jfaleiro.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/jfaleiro.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/jfaleiro.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/jfaleiro.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/jfaleiro.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/jfaleiro.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/jfaleiro.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/jfaleiro.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/jfaleiro.wordpress.com/48/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=jfaleiro.wordpress.com&blog=452976&post=48&subd=jfaleiro&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://jfaleiro.wordpress.com/2008/06/04/cjar/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/6ca0d385397734ad0b738b28723e1e06?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jfaleiro</media:title>
		</media:content>
	</item>
	</channel>
</rss>