<?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>Bime - SaaS Business Intelligence &#124; Analytics &#38; Dashboards &#187; flex</title>
	<atom:link href="http://bimeanalytics.com/tag/flex/feed/" rel="self" type="application/rss+xml" />
	<link>http://bimeanalytics.com</link>
	<description></description>
	<lastBuildDate>Wed, 08 Feb 2012 17:23:58 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Slicing and dicing 3 millions of rows in a web browser&#8230;</title>
		<link>http://bimeanalytics.com/blog/slicing-dicing-3-millions-rows-web-browser/</link>
		<comments>http://bimeanalytics.com/blog/slicing-dicing-3-millions-rows-web-browser/#comments</comments>
		<pubDate>Tue, 21 Jul 2009 09:54:07 +0000</pubDate>
		<dc:creator>nicolas</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[bime]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[optimization]]></category>

		<guid isPermaLink="false">http://bimehq.com/?p=401</guid>
		<description><![CDATA[<p>...well not precisely a web browser. The video below uses the desktop version of Bime, it is an Air Application and it runs the exact same code as the web version.]]></description>
			<content:encoded><![CDATA[<p>&#8230;well not precisely a web browser. The video below uses the desktop version of Bime, it is an Air Application and it runs the exact same code as the web version. So all you see in this video is possible in the browser. We only used the desktop version to be able to connect directly to the relational database. With &#8220;déjà vu&#8221;, our distributed cache, deployed in the coming weeks, we&#8217;ll be able to do the exact same test within a true web browser environment.  The test was done on the following configuration:</p>
<ul>
<li>standard mac book pro 2Gb of Rams.</li>
<li>Database is Sql Server 2005 that runs in a virtual machine on the same machine.</li>
<li>3,5 millions of rows. The dataset has dimensions with a pretty low cardinality.</li>
<li>We skipped data retrieve time. We use standard JDBC here. However, we have a small performance impact above JDBC as we need to marshal data between Flex and Java.</li>
</ul>
<p>For Flex developers interested in what&#8217;s happening under the wood, we used heavily vectors to build the OLAP engine. It would be impossible to achieve this level of performance with standard Array. We used green thread to optimize the rendering. Merapi is used for the bridge between Java and Air&#8230; </p>
<div class="spacer"></div>
<p> <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="590" height="350" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="flashvars" value="file=http%3A%2F%2Fvideos.bimeapp.com.s3.amazonaws.com%2F3Mrows.f4v&amp;autostart=false&amp;plugins=viral-1d" /><param name="src" value="http://d32p8igxdo0gkd.cloudfront.net/mediaplayer.swf?file=http://d32p8igxdo0gkd.cloudfront.net/3Mrows.f4v&amp;autostart=false" /><embed type="application/x-shockwave-flash" width="590" height="350" src="http://d32p8igxdo0gkd.cloudfront.net/mediaplayer.swf?file=http://d32p8igxdo0gkd.cloudfront.net/3Mrows.f4v&amp;autostart=false" flashvars="file=http%3A%2F%2Fvideos.bimeapp.com.s3.amazonaws.com%2F3Mrows.f4v&amp;autostart=false&amp;plugins=viral-1d"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://bimeanalytics.com/blog/slicing-dicing-3-millions-rows-web-browser/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How to compile a Flex project with RSL using Ant</title>
		<link>http://bimeanalytics.com/blog/compile-flex-project-rsl-ant/</link>
		<comments>http://bimeanalytics.com/blog/compile-flex-project-rsl-ant/#comments</comments>
		<pubDate>Fri, 06 Mar 2009 10:30:26 +0000</pubDate>
		<dc:creator>Yannick Chaze</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[RIA]]></category>

		<guid isPermaLink="false">http://bimehq.com/?p=820</guid>
		<description><![CDATA[<p>Recently, we had to write an Ant script to build our application and put it under continuous integration. At the beginning, we passed the minimum arguments to the compiler to build the SWF file and it compiled the project, including the framework classes, in the application SWF file.</p>]]></description>
			<content:encoded><![CDATA[<p>Recently, we had to write an Ant script to build our application and put it under continuous integration. At the beginning, we passed the minimum arguments to the compiler to build the SWF file and it compiled the project, including the framework classes, in the application SWF file.</p>
<p>So, how to use RSL winthin an ant script to reduce the size of the swf result file ?</p>
<p>Firs of all, you have to use a configuration file witch specifies a lots of information to the compiler about your application like the name, the player version, etc. So, you can create your own configuration file and specify all the informations needed. A sample of the file is in the flex sdk named &#8220;flex-config.xml&#8221;. Inside this file, you can write a tag <code>runtime-shared-library-path</code> witch specify the SWC file you want to use as an RSL.</p>
<p>An example of the config file may be:</p>
<p><code>&lt;flex-config&gt;<br />
&lt;compiler&gt;<br />
...<br />
&lt;/compiler&gt;</p>
<p>&lt;runtime-shared-library-path&gt;</p>
<p>&lt;path-element&gt;libs/framework.swc&lt;/path-element&gt;</p>
<p>&lt;rsl-url&gt;framework_3.2.0.3958.swz&lt;/rsl-url&gt;</p>
<p>&lt;policy-file-url&gt;&lt;/policy-file-url&gt;</p>
<p>&lt;rsl-url&gt;framework_3.2.0.3958.swf&lt;/rsl-url&gt;</p>
<p>&lt;policy-file-url&gt;&lt;/policy-file-url&gt;</p>
<p>&lt;/runtime-shared-library-path&gt;<br />
...</p>
<p>&lt;/flex-config&gt;</code></p>
<p>The <code>&lt;path-element&gt; </code>tag is the relative path to the library file, the <code>&lt;rsl-url&gt;</code> is the relative url of the RSL relatively to the root server path and the <code>&lt;policy-file-url&gt; </code> is the relative URL for the crossdomain.xml file. If not specify, flash will try to find it at the root of the server.</p>
<p>Now we can use this file in our ant task as a config file for the compiler. Therefore, the compiler will create correct links to the RSL in the project SWF file.</p>
<p>This is a sample how to use the config file:</p>
<p><code>&lt;mxmlc file="..." &gt;<br />
...</p>
<p>&lt;load-config filename="${basedir}/flex-config.xml"/&gt;<br />
...<br />
&lt;/mxmlc&gt;</code></p>
<p>After the build, the SWF file of the project is smaller than before and you have just to put the framework.swz and framework.swf file at the correct location on the server to use them as Runtime Shared Libraries !</p>
]]></content:encoded>
			<wfw:commentRss>http://bimeanalytics.com/blog/compile-flex-project-rsl-ant/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Introducing a Flex Charting trend line component</title>
		<link>http://bimeanalytics.com/blog/introducing-flex-charting-trend-line-component/</link>
		<comments>http://bimeanalytics.com/blog/introducing-flex-charting-trend-line-component/#comments</comments>
		<pubDate>Mon, 09 Feb 2009 13:33:40 +0000</pubDate>
		<dc:creator>nicolas</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Data Visualization]]></category>
		<category><![CDATA[charting]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[RIA]]></category>

		<guid isPermaLink="false">http://bimehq.com/?p=866</guid>
		<description><![CDATA[<p>How to draw trend lines on Flex Charts? Actually, you just have to add the trendline drawer component</a> on the annotation section of your charts.</p>]]></description>
			<content:encoded><![CDATA[<p>How to draw trend lines on Flex Charts? Actually, you just have to add the trendline drawer component</a> on the annotation section of your charts.</p>
<div class="spacer"></div>
<pre lang="Ruby">
<chartsExtention:ColoredAndSizedColumnChart id="chart" width="100%" height="100%">
  <chartsExtention:annotationElements>
	<dataCanvas:TrendCartesianDataCanvas id="trendCanvas" includeInRanges="true"/>
   </chartsExtention:annotationElements>
...
</pre>
<p>Now you can call method like drawLinearTrend() or drawPolynomialTrend(). It&#8217;s that easy and should work with all cartesian charts (column / bar / plot etc&#8230;) without extra work.</p>
<p>Have a look <a href="http://businessintelligence.me/projects/trendLineDrawer/TrendLineDrawer.html">here</a> for a demo. View source enabled. </p>
<p>Let us know for any trouble. Huge credits to the <a href="http://code.google.com/p/as3mathlib/">as3mathlib</a> for the maths. </p>
<p>We don&#8217;t stop to add features like this in Bime so if you are interested in, register above to the Beta. It should come very soon: jump on the bandwagon!</p>
]]></content:encoded>
			<wfw:commentRss>http://bimeanalytics.com/blog/introducing-flex-charting-trend-line-component/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>A richer Flex Charting Framework</title>
		<link>http://bimeanalytics.com/blog/richer-flex-charting-framework/</link>
		<comments>http://bimeanalytics.com/blog/richer-flex-charting-framework/#comments</comments>
		<pubDate>Mon, 12 Jan 2009 14:07:53 +0000</pubDate>
		<dc:creator>nicolas</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Data Visualization]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[info visualization]]></category>
		<category><![CDATA[RIA]]></category>

		<guid isPermaLink="false">http://bimehq.com/?p=883</guid>
		<description><![CDATA[<p>I spent last week to extract and cleanup the extensions of the flex charting framework we did for <a href="http://businessintelligence.me">Bime</a>.</p>
<p>Design goals were to:</p>]]></description>
			<content:encoded><![CDATA[<p>I spent last week to extract and cleanup the extensions of the flex charting framework we did for <a href="http://businessintelligence.me">Bime</a>.</p>
<p>Design goals were to:</p>
<p>1) add more encoding variables to the standard charts: size, color and shape are used to convey more meaning to visualizations.</p>
<p>2) charts should be as easy to use as the flex ones and require no extra work.</p>
<p> Click on the image below to see some sample (but be warned that it is just technical examples:  axis are not properly formated, titles are missing etc&#8230;)</p>
<div class="spacer"></div>
<p>We used extensively <a href="http://degrafa.org">degrafa</a>. Almost all data renderers are rewritten using it. Thanks to the <a href="http://degrafa.org/about/">degrafa team</a> for the good work. We only scratched the surface and it opens already a lot of opportunities for innovations in the data visualization field. We also used examples written by <a href="http://www.quietlyscheming.com">Ely Greenfield</a>. Once again, I can&#8217;t imagine doing this kind of work without Flex being open source.</p>
<p><a href="http://businessintelligence.me">Bime</a> will help end users to create easily this type of visualization (+ treemap, sparkline etc&#8230;) on the fly. With a simple drag and drop user interface, they&#8217;ll be able to visually analyze their data from almost anywhere: web services, cloud databases, relational databases, spreadsheets&#8230;</p>
<p>If we see some interest, we plan to open source these extensions soon after the official launch of bime in March. So, if you are interested drop us a line in a comment below!</p>
]]></content:encoded>
			<wfw:commentRss>http://bimeanalytics.com/blog/richer-flex-charting-framework/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Stealing Gumbo&#8217;s templates: the fastest way to use SWFObject to embed all your flex 3 apps</title>
		<link>http://bimeanalytics.com/blog/stealing-gumbos-templates-fastest-swfobject-embed-flex-3-apps/</link>
		<comments>http://bimeanalytics.com/blog/stealing-gumbos-templates-fastest-swfobject-embed-flex-3-apps/#comments</comments>
		<pubDate>Fri, 19 Dec 2008 14:43:05 +0000</pubDate>
		<dc:creator>nicolas</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Data Visualization]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[RIA]]></category>

		<guid isPermaLink="false">http://bimehq.com/?p=893</guid>
		<description><![CDATA[<p>Do you want to know the fastest way to use <a href="http://code.google.com/p/swfobject/">SWFObject</a> to embed all your flex 3 apps? We have a solution that takes 30 seconds. But before...</p>
<div class="spacer"></div>]]></description>
			<content:encoded><![CDATA[<p>Do you want to know the fastest way to use <a href="http://code.google.com/p/swfobject/">SWFObject</a> to embed all your flex 3 apps? We have a solution that takes 30 seconds. But before&#8230;</p>
<div class="spacer"></div>
<h3>Why?</h3>
<p>Try to validate your default flex 3 html wrapper against <a href="http://validator.w3.org/">this validator</a>. You should get a bunch of errors. For the full rational look at <a href="http://blog.deconcept.com/swfobject/#whyitsbetter">here</a> and at <a href="http://www.onflex.org/ted/archive/2008_10_01_archive.php">Ted Patrick.</a></p>
<div class="spacer"></div>
<h3>How?</h3>
<p>Gumbo, Flex 4, will include templates based on SWFObject. Steal them and use them today!</p>
<p>1) Download Gumbo SDK <a href="http://opensource.adobe.com/wiki/display/flexsdk/Download+Flex+4">here</a>. Choose the latest milestone release and the Open Source Flex SDK (the small one).</p>
<p>2) Look for a &#8220;templates&#8221; folder in the unziped directory. Copy it. 10 seconds&#8230;</p>
<p>3) Go to your SDK home. On Mac os: Applications > Adobe Flex Builder 3 (plug-in) > sdks > 3.x.x . Rename the &#8220;templates&#8221; directory as &#8220;templates bak&#8221;. Paste the new one. 20 seconds&#8230;</p>
<p>4) Open Flex Builder / Eclipse. Force the refresh by making a change on the project settings of the html wrapper. Build. 30 seconds: you are done.</p>
<p>By the way, validate your new page against <a href="http://validator.w3.org/">the validator</a>. Woow, no error. Thanks Gumbo.</p>
<p>Disclaimer: I didn&#8217;t test extensively with history enabled. But we use that for our main app and some projects for several weeks and so far it works great. Let me know if you face any trouble.</p>
<div class="super_spacer"></div>
]]></content:encoded>
			<wfw:commentRss>http://bimeanalytics.com/blog/stealing-gumbos-templates-fastest-swfobject-embed-flex-3-apps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Optimize your Flex / Flash app with the AS3 performance explorer</title>
		<link>http://bimeanalytics.com/blog/optimize-flex-flash-app-as3-performance-explorer/</link>
		<comments>http://bimeanalytics.com/blog/optimize-flex-flash-app-as3-performance-explorer/#comments</comments>
		<pubDate>Sat, 06 Dec 2008 07:05:36 +0000</pubDate>
		<dc:creator>nicolas</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Data Visualization]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[optimization]]></category>

		<guid isPermaLink="false">http://bimehq.com/?p=914</guid>
		<description><![CDATA[<p>For one week, Lucy and Martim are changing the algorithm used to calculate the OLAP cube in <a href='http://businessintelligence.me'>bime</a>. In this task, performance is everything as the same line of code can be executed millions of times.</p>]]></description>
			<content:encoded><![CDATA[<p>For one week, Lucy and Martim are changing the algorithm used to calculate the OLAP cube in <a href='http://businessintelligence.me'>bime</a>. In this task, performance is everything as the same line of code can be executed millions of times.</p>
<div class="spacer"></div>
<p>To help us, we build an application, open source (MIT), the &#8220;AS3 performance tester&#8221;, that takes some operations (such as incrementing a variable) and measure the time consumed by the different options you can use to achieve the operation.</p>
<div class="spacer"></div>
<p>There are a lot of resources on the web about AS3 performance but none seem to embrace the whole problem. Enter the AS3 performance tester. With it, we are trying to build a comprehensive tool that demonstrates (with tests) which syntax for a particular task is the most performant in AS3.</p>
<div class="spacer"></div>
<p>But first things first with the usuals:</p>
<blockquote><p>More Computing sins are committed in the name of efficiency than any other reason including blind stupidity”–W.A. Wulf </p></blockquote>
<blockquote><p>“Premature Optimization is the root of all evil.”-Hoare and Knuth </p></blockquote>
<blockquote><p>“Bottlenecks occur in surprising places, so don’t try to second guess and<br />
put in a speed hack until you have proven that’s where the bottleneck is.”-<br />
Rob Pike</p></blockquote>
<p>Nevertheless, here we talk of the basic of the AS3 language. Things you do in your everyday programming. Do you know the faster way to loop over an array ? Do you know that division is slower than multiplication and slower than bitwise operations ?</p>
<div class="spacer"></div>
<p>Most of the time, to provide accurate metrics, we loop on the operation a number of times and we calculate the mean. This application will evolve to include more robust tests.</p>
<p>We also used the <a href="http://www.riaone.com/products/deval/index.html">D.eval</a> library to allow the user to enter 2 scripts and compare performance on the fly. It uses a kind of eval() function so the code is <strong>much slower</strong> than actual compiled code. Nevertheless, our tests, so far, show that the proportions are right: a script slower with the eval() will be slower when compiled. Nevertheless, we mark this feature as highly experimental as my understanding of what the D.eval do can give improper results.</p>
<div class="spacer"></div>
<p><a href="http://businessintelligence.me/projects/performance_tester/performanceTester.html">the application</a></p>
<p><a href="http://github.com/nicolas/as3-performance--tester/tree/master">the source</a></p>
<p><a href="http://wac.lighthouseapp.com/projects/21165-as3-performance-explorer/overview">the lighthouse project</a></p>
]]></content:encoded>
			<wfw:commentRss>http://bimeanalytics.com/blog/optimize-flex-flash-app-as3-performance-explorer/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Streaming video from Amazon S3 to a Flex application</title>
		<link>http://bimeanalytics.com/blog/streaming-video-amazon-s3-flex-application/</link>
		<comments>http://bimeanalytics.com/blog/streaming-video-amazon-s3-flex-application/#comments</comments>
		<pubDate>Thu, 04 Dec 2008 07:11:02 +0000</pubDate>
		<dc:creator>nicolas</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Start me Up]]></category>
		<category><![CDATA[amazon s3]]></category>
		<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[RIA]]></category>

		<guid isPermaLink="false">http://bimehq.com/?p=920</guid>
		<description><![CDATA[<p>Let's say, you want to stream videos into your RIA (Flex or Silverlight). Indeed, with that in your toolkit you can deliver crazy contextual video tutorials or build the latest youtube on steroid. Nevertheless, you should face many problems involving crossdomain security, more servers to manage, deployment issues etc... Hopefully, we have a simple solution for you.</p>]]></description>
			<content:encoded><![CDATA[<p>Let&#8217;s say, you want to stream videos into your RIA (Flex or Silverlight). Indeed, with that in your toolkit you can deliver crazy contextual video tutorials or build the latest youtube on steroid. Nevertheless, you should face many problems involving crossdomain security, more servers to manage, deployment issues etc&#8230; Hopefully, we have a simple solution for you.</p>
<div class="spacer"></div>
<h3>Solution 1: the wrong way</h3>
<p>You take care of hosting the videos file on a server behind the same domain you served your RIA application. This is important because you can&#8217;t stream videos (or anything for that it matters) from <a href="http://www.adobe.com/products/flashplayer/security/">another domain</a> unless it has a liberal crossdomain.xml file in the root or unless you proxy request (a pain). Forget YouTube, Vimeo and any major video delivering solution.
</p>
<p><strong>Problems</strong>: all rely in the solution= &#8220;you need to take care of the files&#8221;. Here come a bunch of problems: files are most of the time pretty big. You will need to back them up, you can&#8217;t check them in your source control or they slow down your deploy to a new server and explode your repository size, you can, of course, host them on a separate server but, hey, it&#8217;s a new server to manage etc&#8230;</p>
<div class="spacer"></div>
<h3>Solution 2: the easy way</h3>
<p>You can simply put your videos (and all your static files by the way) on Amazon S3. I hear your inner geek: &#8220;but Amazon S3 don&#8217;t have a a liberal crossdomain.xml file!&#8221;. Yes but they have <a href="http://docs.amazonwebservices.com/AmazonS3/2006-03-01/index.html?UsingBucket.html">virtual hosting of bucket</a>. It means you can have a cname that points to S3 in your domain.</p>
<p>For example: videos.wearecloud.com can point  to a S3 bucket available at videos.wearecloud.com.s3.amazonaws.com. For the Flashplayer it is exactly the same domain that served the RIA application, hence no security error. For you, it is a whole new world of easy video streaming in your RIA with nothing to worry about.</p>
<div class="spacer"></div>
<h3>The steps</h3>
<p>1) Create a bucket that matches the hostname you want. Let&#8217;s say &#8220;videos.wearecloud.com&#8221;</p>
<p>2) Create a CNAME on your domain like that:</p>
<p>videos.wearecloud.com CNAME videos.wearecloud.com.s3.amazonaws.com
<p>nota: the exact process depends of your DNS hosting but it should be pretty easy and, in general, involves a DNS zone file.</p>
<p>That&#8217;s it. In your Flex app you can:</p>
<pre lang="Ruby"><mx:VideoDisplay autoPlay="true"  source="http://videos.wearecloud.com/yourvideo.flv" /></pre>
<h3>Going further</h3>
<p>On the performance side, we are so far pretty happy with this solution. But let&#8217;s face it: it is not yet as fast as with a <a href="http://en.wikipedia.org/wiki/Adobe_Flash_Media_Server">FMS</a> in the basement. Nevertheless, amazon annouced a few weeks ago <a href=https://aws.amazon.com/cloudfront/">CloudFront</a>, that is basically a <a href="http://en.wikipedia.org/wiki/Content_Delivery_Network">Content Delivery Network (CDN)</a> on top of S3. An simple API call make your bucket redundant across the globe for faster delivery.</p>
<p>We didn&#8217;t test this yet, but it should be an effective way to speed up the solution. Let us know if you test this out or if you have any trouble with the steps above.</p>
]]></content:encoded>
			<wfw:commentRss>http://bimeanalytics.com/blog/streaming-video-amazon-s3-flex-application/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Puremvc, Pipes and taking Paperboy to the next level</title>
		<link>http://bimeanalytics.com/blog/puremvc-pipes-paperboy-level/</link>
		<comments>http://bimeanalytics.com/blog/puremvc-pipes-paperboy-level/#comments</comments>
		<pubDate>Thu, 24 Jul 2008 08:02:10 +0000</pubDate>
		<dc:creator>nicolas</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Data Visualization]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[RIA]]></category>

		<guid isPermaLink="false">http://bimehq.com/?p=948</guid>
		<description><![CDATA[<p>The previous iteration was focused on supporting new data sources. From the beginning, we tried to have a clean architecture, to leverage design patterns in order to improve maintainability so on and so forth. Nevertheless, when we tried to tackle the challenge of supporting new data sources, something cried in the code base: lack of isolation.</p>]]></description>
			<content:encoded><![CDATA[<p>The previous iteration was focused on supporting new data sources. From the beginning, we tried to have a clean architecture, to leverage design patterns in order to improve maintainability so on and so forth. Nevertheless, when we tried to tackle the challenge of supporting new data sources, something cried in the code base: lack of isolation.</p>
<p>For the flex part of the application (that is 75% of the code base), we use <a href="http://puremvc.org/">Puremvc</a> as a micro architecture framework. It is heavily based on <a href="http://www.amazon.com/gp/product/0201633612/ref=s9subs_c2_at1-rfc_p?pf_rd_m=ATVPDKIKX0DER&amp;pf_rd_s=center-1&amp;pf_rd_r=0YMBK4RCBTSC17YK3849&amp;pf_rd_t=101&amp;pf_rd_p=278240701&amp;pf_rd_i=507846">G.O.F design patterns</a> : observers, proxy, mediator, command and MVC separation of concerns. It allows you to organize your code in a loosely coupled way with a minimal boiler plate code set up. But it had one drawback: it was based on a singleton facade. The 2 side effects of that:</p>
<p>1) It was hard to test because you can&#8217;t have a fresh instance for each test</p>
<p>2) Even if separation of concerns between Model / View / controller (let&#8217;s call it &#8220;vertical separation&#8221;) was great, the code base will have too much intimacy between the different parts of your application as it gets bigger almost inevitably (let&#8217;s call it lack of &#8216;Horizontal separation&#8217;). In our example of generalizing data sources, the model building engine knew too much about Google Spreadsheet, our first data source.</p>
<p>Enter the multi-core version of Puremvc and its pipe utility. Multicore version of Puremvc framework allows you to have several MVC stacks, called cores, in your application. It is not anymore singleton based. This allows you to really isolate the different functions of your applications. In our case study about data sources, we used multicore as a kind of giant strategy pattern: we encapsulated all the knowledge of a data source (including UI like forms) in a core. We can swap between them at runtime. The shell application knows nothing of the data source except its name and a set of message it can send or receive. The same is true for the data source core.</p>
<p>
The sequence looks like this:
<ul>
<li>As soon as the shell core needs something from a data source, it sends a notification with the action it wants to perform.</li>
<li>This notification will be catched by a command that will look if we need to load the data source core
<li>
<li>If the core is already loaded, it will pass the notification to a junction Mediator that will send a message to the data source core (using the pipes utility).
<li>
</ul>
<p>This means our data sources’ cores are completely dynamic. They are only loaded when needed. This means faster initialization when starting up. The long term aim is to allow you, our users, to define data sources’ connectors the same way we do. That is, you register a new data source in <del datetime="2008-12-06T07:36:14+00:00">Paperboy</del> bime, point to an url where you module is hosted and that&#8217;s it. You have a new data source supported in <del datetime="2008-12-06T07:36:14+00:00">Paperboy</del> bime. It is like in the old world of database connectivity (JDBC, ODBC etc..) but with the power of the new web world and distributed systems: the source file is hosted on only one computer, it is always up to date, no installation needed&#8230;</p>
<p>We really feel good with this plug-in architecture because supporting a new data source is now really easy, can be done in parallel, won&#8217;t break anything and won’t increase startup time. Moreover, we laid down foundation to let our users define their own custom data sources</p>
]]></content:encoded>
			<wfw:commentRss>http://bimeanalytics.com/blog/puremvc-pipes-paperboy-level/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Day 10 : Papervision + Adobe AIR fun</title>
		<link>http://bimeanalytics.com/blog/day-10-papervision-adobe-air-fun/</link>
		<comments>http://bimeanalytics.com/blog/day-10-papervision-adobe-air-fun/#comments</comments>
		<pubDate>Mon, 17 Mar 2008 08:23:27 +0000</pubDate>
		<dc:creator>nicolas</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Data Visualization]]></category>
		<category><![CDATA[adobe air]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[RIA]]></category>

		<guid isPermaLink="false">http://bimehq.com/?p=965</guid>
		<description><![CDATA[<p>Sunday : design time in order to do a much needed upgrade of the WAC website.</p>

<p>Problem : need to distort some screenshots with a 3D effects for the home page.</p>]]></description>
			<content:encoded><![CDATA[<p>Sunday : design time in order to do a much needed upgrade of the WAC website.</p>
<p>Problem : need to distort some screenshots with a 3D effects for the home page.</p>
<p>Possible solutions : photo editor trick, expensive plugin&#8230;but wait. Can&#8217;t Papervision do the trick ? But I would need to access the file system&#8230;hum can&#8217;t Adobe Air do the trick ?</p>
<p>Result: One hour later =&gt; welcome the image3D utility (I seriously run out of creativity for the name, I know). Drop an image on it, distort it in 3D, and press capture to get a brand new distorted image on your desktop.</p>
<p>Credits to <a href="http://www.flex-info.fr/integration-de-papervision3d-dans-un-projet-mxml/20080216/">Mickael Ruellan</a> who made the papervision/flex bridge easy.</p>
<p>Playtime is over. Back to <del datetime="2008-12-06T07:39:47+00:00">Paperboy</del> bime now.</p>
]]></content:encoded>
			<wfw:commentRss>http://bimeanalytics.com/blog/day-10-papervision-adobe-air-fun/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Day 1: Open source frenzy</title>
		<link>http://bimeanalytics.com/blog/day-1-open-source-frenzy/</link>
		<comments>http://bimeanalytics.com/blog/day-1-open-source-frenzy/#comments</comments>
		<pubDate>Fri, 07 Mar 2008 08:33:23 +0000</pubDate>
		<dc:creator>nicolas</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Start me Up]]></category>
		<category><![CDATA[flex]]></category>

		<guid isPermaLink="false">http://bimehq.com/?p=975</guid>
		<description><![CDATA[<p>Day 1 of the last 30 days before the Preview mode launch of our product</p>]]></description>
			<content:encoded><![CDATA[<p>Day 1 of the last 30 days before the Preview mode launch of our product</p>
<p>Maybe some background before. Our product is called <del datetime="2008-12-07T08:26:54+00:00">PaperBoy</del> bime. The aim of <del datetime="2008-12-07T08:26:54+00:00">paperboy</del>bime is to be the decision maker home page. The philosophy is to provide all the tools someone involved in a decision making process should need for making the best decision. The right information at the right time. It lays down on a hype concept called <strong>Coportate Performance Management</strong>. Here is the definition of Gartner :</p>
<p>&#8220;Combination of management methodologies , metrics and IT (application, tools and infrastructure) that enables users to define, monitor and optimize results and outcomes to personal or departement objectives while enabling alignment with strategic objectives across multiple organizational levels (personal, process, group, departemental, corporate or business ecosystem”</p>
<p>Wow. From that, <del datetime="2008-12-07T08:26:54+00:00">Paperboy</del> bime is organized in three parts, each corresponding to a step in the life cycle of the performance management.</p>
<p>* <strong>Planing</strong>. what will be my goal for the next time periods ?</p>
<p>* <strong>Monitoring</strong>. How well i am doing regarding to my forecasts ?</p>
<p>* <strong>Analysing</strong>. What happened ?</p>
<p>Yesterday, we worked on the analysing part, the &#8216;analyser&#8217; as we call it.</p>
<p><strong>Analyser</strong>, is made of three parts (again) :</p>
<p>* the <strong>library</strong> where all models and queries are stored and retrieved.</p>
<p>* the <strong>model builder</strong> where you can define how you want to analyse your business.</p>
<p>* the <strong>pivot table</strong> where you navigate through your data.</p>
<p>We tackled some long postponed work on the pivot table.</p>
<p>We use <strong>Adobe flex</strong> for all the user interface. Flex 3 was launched 2 Weeks ago. One of the major change in this release is the fact that all the framework is now open source. Enter your serial and all the pieces of code that were obfuscated before (all the data visualization part ) are now in clear. It is in my opinion a very smart move from Adobe because now it is a blast for developper to use Flex. &#8216;Be kind with the developper that use your technologies&#8217; is something Microsoft know for a long time, but open sourcing a framework such as Flex (300 000 lines of code) is a new leap in the way software framework are delivered.</p>
<p>From a developper point of view, it means :</p>
<p>* no guess. Even if it breaks encapsulation and other OOP rules, it is often desirable to understand and debug code that you didn&#8217;t write. It is the best documentation ever.</p>
<p>* learning curve. The best way to learn is to read code. You have 300 000 of very well written lines of code to start with.</p>
<p>* extensibility. You wonder how they did something in the framework. Look at it!</p>
<p>From a practical point of view, we use in the pivot table a new component called OlapDataGrid that takes a result from an Olap query and display it in a grid. We had to write something that do something similar but for displaying in a chart. We didn&#8217;t have the source of the component to look how they did, so we built our own. Yesterday, I finally looked at the source. I learnt at least 3 things to improve our custom component. Love that.</p>
<p>So back to our pivot table, it still misses 4 important features but it will go like that for the first version :</p>
<p>* fitering columns and rows.</p>
<p>* Excel export</p>
<p>* print support</p>
<p>* Drill down</p>
]]></content:encoded>
			<wfw:commentRss>http://bimeanalytics.com/blog/day-1-open-source-frenzy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

