<?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>Rich Internet Applications (RIA)</title>
	<atom:link href="http://www.canoo.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.canoo.com/blog</link>
	<description></description>
	<lastBuildDate>Wed, 22 May 2013 08:53:53 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>New version of the CanooNet app for iPhone</title>
		<link>http://www.canoo.com/blog/2013/05/17/new-version-of-the-canoonet-app-for-iphone/</link>
		<comments>http://www.canoo.com/blog/2013/05/17/new-version-of-the-canoonet-app-for-iphone/#comments</comments>
		<pubDate>Fri, 17 May 2013 08:39:18 +0000</pubDate>
		<dc:creator>allin</dc:creator>
				<category><![CDATA[www.canoo.com]]></category>
		<category><![CDATA[Canoo.net]]></category>
		<category><![CDATA[mobile application]]></category>

		<guid isPermaLink="false">http://www.canoo.com/blog/?p=7753</guid>
		<description><![CDATA[Great news for all fans of the CanooNet app &#8211; the new version makes your iPhone even more eloquent. The comprehensive reference for the German language contains around 5,000 new dictionary entries and returns supplementary information on over 10,000 search results. What’s more, the offline app is now compatible with iOS 6. You can acquire [...]]]></description>
				<content:encoded><![CDATA[<p>Great news for all fans of the CanooNet app &#8211; the new version makes your iPhone even more eloquent. The comprehensive reference for the German language contains around 5,000 new dictionary entries and returns supplementary information on over 10,000 search results. What’s more, the offline app is now compatible with iOS 6. You can acquire the <a title="open App Store" href="https://itunes.apple.com/de/app/canoonet/id294330973?l=de&amp;ls=1&amp;mt=8" target="_blank">latest version 3.2 of the CanooNet app</a> quickly and easily in the app store. We trust you will enjoy trying out the enhanced features!</p>
<p>And please note: the CanooNet app is available for 5.99 € until June 30, 2013. You save 60%!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.canoo.com/blog/2013/05/17/new-version-of-the-canoonet-app-for-iphone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AfterburnerDolphin – Effective enterprise JavaFX development</title>
		<link>http://www.canoo.com/blog/2013/05/17/afterburnerdolphin-effective-enterprise-javafx-development/</link>
		<comments>http://www.canoo.com/blog/2013/05/17/afterburnerdolphin-effective-enterprise-javafx-development/#comments</comments>
		<pubDate>Fri, 17 May 2013 05:27:37 +0000</pubDate>
		<dc:creator>Markus Schlichting</dc:creator>
				<category><![CDATA[RIA Blog]]></category>
		<category><![CDATA[Afterburner.fx]]></category>
		<category><![CDATA[AfterburnerDolphin]]></category>
		<category><![CDATA[DependencyInjection]]></category>
		<category><![CDATA[DI]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JavaEE]]></category>
		<category><![CDATA[JavaFX]]></category>
		<category><![CDATA[OpenDolphin]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[ria]]></category>

		<guid isPermaLink="false">http://www.canoo.com/blog/?p=7758</guid>
		<description><![CDATA[OpenDolphin During the last JavaOne, Canoo announced the open sourcing of Dolphin. OpenDolphin is a library that provides a remoting solution to bridge the world of Enterprise Java and Desktop Java or other client technologies (mobile, web). Since then, a lot has happened around OpenDolphin and it keeps gaining more and more attention. For me [...]]]></description>
				<content:encoded><![CDATA[<p><strong>OpenDolphin</strong></p>
<p>During the last JavaOne, <a href="http://www.canoo.com/blog/2012/10/01/canoo-announces-open-sourcing-of-dolphin/">Canoo announced the open sourcing of Dolphin</a>.<br />
<a href="http://www.open-dolphin.org">OpenDolphin</a> is a library that provides a remoting solution to bridge the world of Enterprise Java and Desktop Java or other client technologies (mobile, web).</p>
<p>Since then, a lot has happened around OpenDolphin and it keeps gaining more and more attention.<br />
For me personally, it was from the first time I heard of it a very interesting project, but due to daily business and other projects I didn&#8217;t have the time to get into it.<br />
Using JavaFx as the first client technology to be implemented was also a little hurdle as I haven&#8217;t done any serious work with JavaFX, yet. But now, I&#8217;ve finally found some time to play with JavaFx and OpenDolphin <img src='http://www.canoo.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> .<br />
<small>(Besides, there is an <a href="http://www.canoo.com/blog/2013/05/13/dolphin-js-going-multi-channel-with-opendolphin/">JS implementation of OpenDolphin</a> &#8211; it proves that OpenDolphin doesn&#8217;t tie you to a client UI technology.)</small> </p>
<p><strong>Afterburner.fx</strong></p>
<p>As I attended to Adam Bien&#8217;s <a href="http://airhacks.com/">Airhacks Workshops</a> in March, he introduced the <a href="http://afterburner.adam-bien.com/">Afterburner.fx mini-framework</a> to the audience and released it a few days later.</p>
<p>Afterburner.fx is a minimalistic MVP framework for JavaFX that provides<br />
<em>&#8220;Zero-Configuration&#8221; dependency injection (DI) of models and services</em><br />
and<br />
<em>Convention-based unification of presenter, view, FXML and css.</em></p>
<p><a href="http://www.canoo.com/blog/wp-content/uploads/2013/05/ScenceBuilder.png"><img src="http://www.canoo.com/blog/wp-content/uploads/2013/05/ScenceBuilder-150x150.png" alt="ScenceBuilder" width="150" height="150" class="alignleft size-thumbnail wp-image-2623 thumb" style="padding-right: 10px" /></a></p>
<p>Thus it enables the usage of the <a href="http://www.oracle.com/technetwork/java/javafx/tools/index.html">JavaFX scene builder</a> (a UI design tool) to implement a clear seperation of layout and logic (as the layout is encapsulted in the xml). In his talk <a href="http://www.youtube.com/watch?v=Yh03cziYdp8&#038;list=WLAA233F4B4A6A708D"> &#8220;Enterprise JavaFX 8&#8243;</a> Adam describes it as an implementation of &#8220;inversion of control&#8221;.<br />
The outcome is a very powerful set of lightweight technologies to build JavaFx applications.</p>
<p>The wiring between the UI XML and the code a pretty minimal. On the one hand, in XML, you just need to define the controller class:</p>
<p></p><pre class="crayon-plain-tag">&lt;AnchorPane id=&quot;AnchorPane&quot; ... fx:controller=&quot;de.mynethome.presentation.DemoPresenter&quot;&gt;</pre><p></p>
<p>And optionally, event handler methods can also be set via XML with</p>
<p></p><pre class="crayon-plain-tag">&lt;Button ... fx:id=&quot;button&quot; onAction=&quot;#buttonClicked&quot;  /&gt;</pre><p></p>
<p>In the code, the UI components get injected by the <em>@FXML</em> annotation and the name used as <em>fx:id</em> :</p><pre class="crayon-plain-tag">@FXML
  Button button;</pre><p></p>
<p><strong>Combine the power</strong></p>
<p>My idea on the moment I saw it was to bring those two projects together to benefit from the features of both projects:</p>
<ul>
<li>
A clean and easy way to create the UI and build up the client</li>
<li>a powerful and non the less easy to use library for client-server communication and clear speration between logic on the server-side and UI-related code on the client with open-dolphin.</li>
</ul>
<p><strong>AfterburnerDolphin</strong></p>
<p>You can find the outcome of this idea at my <a href="https://github.com/madmarkus/AfterburnerDolphin">AfterburnerDolphin project at github</a>.</p>
<p>It demonstrates the things mentioned above: </p>
<p><a href="http://www.canoo.com/blog/wp-content/uploads/2013/05/client_structure.png" rel="lightbox"><img src="http://www.mynethome.de/wp-content/uploads/2013/05/client_structure.png" alt="client structure" width="216" height="179" class="alignleft size-full wp-image-2611 thumb" /></a></p>
<p>In the client module, you can find a clearly structured app, the design and layout clearly seperated (as extracted to xml and css files) from the logic (look at the App class and the DemoPresenter).</p>
<p>It&#8217;s all tied together via DI and convention-based confguration of afterburner.fx .</p>
<p>The client creates a PresentationModel and binds the button text value to the value of that model.<br />
<small>(DemoPresenter, Line 43)</small></p>
<p></p><pre class="crayon-plain-tag">public void initialize(URL location, ResourceBundle res){
    JFXBinder.bind(ATT_ATTR_ID).of(textAttributeModel).to(&quot;text&quot;).of(button);
}</pre><p></p>
<p>On a button click, the client communicates via OpenDolphin with the server (server module, ApplicationAction) where the command for a new value (current date) of the presentation model&#8217;s attribute is created and send as a response.</p>
<p><small>(ApplicationAction, Line 17)</small></p>
<p></p><pre class="crayon-plain-tag">actionRegistry.register(ApplicationConstants.COMMAND_ID, new CommandHandler&lt;Command&gt;() {
      public void handleCommand(Command command, List&lt;Command&gt; response) {
        ServerAttribute date = getServerDolphin().getAt(PM_APP).getAt(ATT_ATTR_ID);
        ServerDolphin.changeValue(response, date, new Date());
      }
    });</pre><p></p>
<p>That demonstrates how easy this set of technologies lets you set up a well structured multi-tier application <img src='http://www.canoo.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  and implement a roundtrip between client and server.</p>
<p>Any business logic can be handled on the server, the client only need to implement the presentation. And the implementation and maintenance of the client UI is eased up by the clear structure implemented with the help of afterburner.fx . </p>
<p>The UI of this sample application is very simple, as you can see from the screen shot &#8211; before and after click on the button. The date used as die new button text is set on server side.</p>
<p><img src="http://www.canoo.com/blog/wp-content/uploads/2013/05/demo-beforeclick.png" alt="demo-beforeclick" width="294" height="172" class="size-full wp-image-2630" style="padding-right: 5px;"/><img src="http://www.canoo.com/blog/wp-content/uploads/2013/05/demo-afterclick.png" alt="demo-afterclick" width="296" height="174" class="size-full wp-image-2643" /></p>
<p><strong>Conclusion</strong></p>
<p>I think, the combination of AfterBurner.fx and OpenDolphin provides a very powerful featureset.<br />
At first, it&#8217;s easy and quick to setup and design UI Layout with Scence Builder.<br />
After that, AfterBurner.fx and OpenDolphin allow you to build an application with clear, distinct seperation between layers:<br />
<uL></p>
<li>UI layout (in XML)</li>
<li>UI logic (in client code)</li>
<li>Business Logic (and more) (in server code)</li>
</ul>
<p>You can be up and running very quickly with a short time to initiate application development. With the clear seperation, I would expected the  setup to provide the foundation for a very maintainable project.<br />
And with <a href="http://open-dolphin.org">OpenDolphin</a> you protect your investment as you can very quickly provide an multi-channel application (providing an mobile app UI based on the already developed server code) or switch to another UI technology and reuse the business logic implemented on server side.</p>
<p><strong>Further steps</strong></p>
<p>Fork <a href="https://github.com/madmarkus/AfterburnerDolphin">AfterburnerDolphin on github</a>.</p>
<p>Find out more about Afterburner.fx, visit the <a href="http://afterburner.adam-bien.com/">Afterburner.fx Homepage</a>.</p>
<p>Get more information on OpenDolphin with  the <a href="http://open-dolphin.org/download/guide/guide/">OpenDolphin documentation</a>.<br />
Or look at the <a href="http://www.youtube.com/playlist?list=PLDyDwvGQuHSj2fBhuaWADJj8cKVbqBrYI">OpenDolphin videos on youtube</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.canoo.com/blog/2013/05/17/afterburnerdolphin-effective-enterprise-javafx-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>dolphin.js &#8211; going multi-channel with OpenDolphin</title>
		<link>http://www.canoo.com/blog/2013/05/13/dolphin-js-going-multi-channel-with-opendolphin/</link>
		<comments>http://www.canoo.com/blog/2013/05/13/dolphin-js-going-multi-channel-with-opendolphin/#comments</comments>
		<pubDate>Mon, 13 May 2013 14:03:52 +0000</pubDate>
		<dc:creator>Andreas Holzl</dc:creator>
				<category><![CDATA[RIA Blog]]></category>
		<category><![CDATA[andreas]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[JavaFX]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[OpenDolphin]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.canoo.com/blog/?p=7716</guid>
		<description><![CDATA[The OpenDolphin approach to client-server applications has many known benefits, here are just the most important ones: clear separation of what to display (server) and how to display (client) application logic on the server (efficiency and protection of investment) full exploitation of the native clients capabilities (fidelity) generic presentation models (independence of client and server) [...]]]></description>
				<content:encoded><![CDATA[<p>The <a href="http://open-dolphin.org">OpenDolphin</a> approach to client-server applications has many known benefits, here are just the most important ones:</p>
<ul>
<li>clear separation of <em>what to display (server)</em> and <em>how to display (client)</em></li>
<li>application logic on the server <em>(efficiency and protection of investment)</em></li>
<li>full exploitation of the native clients capabilities <em>(fidelity)</em></li>
<li>generic presentation models <em>(independence of client and server)</em></li>
</ul>
<p>These benefits derive mainly from a client-server split at the presentation model layer.</p>
<p>Read more about the architecture and concepts in the <a href="http://open-dolphin.org/download/guide/index.html">online documentation</a> or have a look at <span style="font-size: 13px; line-height: 19px;">the extensive set of sample applications:</span></p>
<ul>
<li><a href="https://github.com/canoo/open-dolphin">OpenDolphin library</a> (multiple demos)</li>
<li><a href="https://github.com/canoo/DolphinJumpStart">Dolphin jump start project</a> (step-by-step introduction)</li>
<li><a href="https://github.com/canoo/dolphin_train_station">train station demo project</a> (complex showcase app)</li>
</ul>
<p>JavaFX as a modern Java UI toolkit is certainly a natural choice to go along with OpenDolphin on the Java client. But the clear separation of concerns (<em>what</em> and <em>how</em> to display) makes it easy to deploy any UI framework on the client. <strong><span style="font-size: 13px; line-height: 19px;">In the demos you&#8217;ll find examples of JavaFX and Swing clients that happily coexist with exactly the same server code.</span></strong></p>
<p>Since the costs to switch the client technology are fairly low with OpenDolphin, <strong>going web and mobile is the next logic step</strong>. <a href="http://github.com/canoo/dolphin.js">Dolphin.js</a> leverages exactly that potential.</p>
<p><a href="http://www.canoo.com/blog/wp-content/uploads/2013/05/multichannel-dolphin1.png"><img class="alignnone  wp-image-7726" title="multichannel-dolphin" alt="" src="https://www.canoo.com:443/blog/wp-content/uploads/2013/05/multichannel-dolphin1-1024x634.png" width="614" height="380" /></a></p>
<p><strong>Dolphin.js is an OpenDolphin client implementation in JavaScript</strong> allowing you to connect your web application to an OpenDolphin server. It follows the same concept as the Java implementation, therefor most of your OpenDolphin knowledge is applicable to it.</p>
<p>The usage of Dolphin.js is best introduced with an example. You&#8217;ll find the <a href="https://github.com/canoo/DolphinJSJumpStart/">Dolphin.js jump start project</a> in <a href="https://github.com/canoo/">Canoo&#8217;s github account</a>. A video of the jump start application can be found <a href="https://plus.google.com/u/0/117890567170892500727/posts/X86QmP9N2nW">here</a>.</p>
<p>Dolphin.js uses <a href="http://requirejs.org/">require.js</a> for modularization which is an <a href="https://github.com/amdjs/amdjs-api/wiki/AMD">AMD implementation</a>. Dolphin.js integrates into your JavaScript project as follows (head section):</p>
<blockquote><p>&lt;script type=&#8221;text/javascript&#8221; src=&#8221;../scripts/require.js&#8221;&gt;&lt;/script&gt;<br />
&lt;script type=&#8221;text/javascript&#8221; src=&#8221;../scripts/dolphin.min.js&#8221;&gt;&lt;/script&gt;<br />
&lt;script type=&#8221;text/javascript&#8221; src=&#8221;config.js&#8221;&gt;&lt;/script&gt;</p></blockquote>
<p>It is important to list the require.js dependency first. In config.js you can define external dependencies to third party libraries. Your application runs as an AMD module (body section).</p>
<p>Any dolphin.js app is structured as follows:</p>
<div>
<blockquote>
<div id="LC4">require([</div>
<div id="LC5">    'Dolphin',</div>
<div id="LC6">    'comm/ClientAttribute'</div>
<div id="LC7">], function (Dolphin, ClientAttribute) {</div>
<div id="LC8"></div>
<div id="LC9">    var url = window.location.protocol + &#8216;//&#8217; + window.location.host + &#8220;/dolphinServer/tutorial/&#8221;;</div>
<div id="LC10">    var dolphin = new Dolphin({ serverUrl: url, clearSession: true });</div>
<div>     // your app code here</div>
<div> }</div>
</blockquote>
</div>
<p>&#8216;Dolphin&#8217; is the core module and required for any app. Typically you want to create a presentation model with client attributes, therefor you need &#8216;comm/ClientAttribute&#8217; as well. The Dolphin constructor takes the (Dolphin) server URL and optionally a flag if the browser session should be cleared upon reload. Once you have a Dolphin instance you are ready to create and bind your UI to the presentation model.</p>
<p>The following snippet creates a presentation model with a &#8216;temperature&#8217; client attribute and binds it to an HTML input field:</p>
<blockquote>
<div id="LC13"><span style="font-size: 13px; line-height: 19px;">        var tempAttr = new ClientAttribute(&#8220;temperature&#8221;);</span></div>
<div id="LC16">        var weatherMold = dolphin.getClientDolphin().presentationModel(</div>
<div id="LC17">            &#8221;weatherMold&#8221;,</div>
<div id="LC18">            &#8221;weather&#8221;,</div>
<div id="LC19">            tempAttr</div>
<div id="LC20">        );</div>
<div id="LC22"><span style="font-size: 13px; line-height: 19px;">        var tempInput = document.getElementById(&#8220;tempInput&#8221;);</span></div>
<div id="LC25">        tempInput.addEventListener(&#8220;input&#8221;, function () {</div>
<div id="LC26">            var value = tempInput.value;</div>
<div id="LC27">            tempAttr.setValue(value);</div>
<div id="LC28">        });</div>
<div id="LC30">        tempAttr.on(&#8220;valueChange&#8221;, function(data) {</div>
<div id="LC31">            tempInput.value = data.newValue;</div>
<div id="LC32">        });</div>
</blockquote>
<p>The binding to the temperature attribute is stable and reflects any changes in the input field or model vice verse.<br />
Binding to individual HTML elements is the most basic integration which works with any JavaScript framework.</p>
<p>Future version of dolphin.js will support direct integration in JS frameworks such as <a href="http://backbonejs.org/">backbone.js</a> and <a href="http://angularjs.org/">angular.js</a> which provide model-view bindings out of the box.</p>
<p>The code example shown is only the most basic usage of Dolphin.js. For a master-detail and a server push implementation have a look at the jump start project code. Dolphin.js is very lean (currently around 700 lines of code) so it&#8217;s straightforward to read through the source code. The jump start project also features a mobile (JavaScript) client.</p>
<p>Our experience in porting the Dolphin from Java to JavaScript shows that specific ports to native mobile plattforms as iOS and Android are feasible and the next step.</p>
<p>Dolphin.js demonstrates the inherent multi-channel capabilities of OpenDolphin. With such an approach you no longer have to bet on the next UI client technology, but rather are able to react quickly to changing UI demands at the least possible costs.</p>
<p>Get in touch with us for more information on OpenDolphin and it&#8217;s multi-channel capabilities.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.canoo.com/blog/2013/05/13/dolphin-js-going-multi-channel-with-opendolphin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JUGS Event &#8211; Talk Open Dolphin &#124; Apr 30, 2013 &#124; Basel</title>
		<link>http://www.canoo.com/blog/2013/04/30/jugs-event-open-dolphin-apr-30-2013-basel/</link>
		<comments>http://www.canoo.com/blog/2013/04/30/jugs-event-open-dolphin-apr-30-2013-basel/#comments</comments>
		<pubDate>Tue, 30 Apr 2013 10:00:15 +0000</pubDate>
		<dc:creator>allin</dc:creator>
				<category><![CDATA[RIA Blog - Events]]></category>

		<guid isPermaLink="false">http://www.canoo.com/blog/?p=7544</guid>
		<description><![CDATA[Open Dolphin was first announced by Canoo at the JavaOne keynote 2012. Those for whom San Francisco was too far to travel, however, now have the chance to find out more about the open source project at the end of April right on our doorstep. Dierk König will be providing a fascinating insight into the [...]]]></description>
				<content:encoded><![CDATA[<table border="0">
<tbody>
<tr>
<td dir="" scope="" align="" valign="middle"><a href="http://www.canoo.com/blog/wp-content/uploads/2013/04/Logo_JUGS_200px.png"><img title="Logo_JUGS_200px" src="https://www.canoo.com:443/blog/wp-content/uploads/2013/04/Logo_JUGS_200px.png" alt="" width="200" height="112" /></a></td>
<td><a title="Website" href="http://open-dolphin.org/dolphin_website/Home.html" target="_blank">Open Dolphin</a> was first announced by Canoo at the JavaOne keynote 2012. Those for whom San Francisco was too far to travel, however, now have the chance to find out more about the open source project at the end of April right on our doorstep. <a title="Twitter @mittie" href="https://twitter.com/mittie" target="_blank">Dierk König</a> will be providing a fascinating insight into the concept and architecture of Open Dolphin at the <a title="More information about the event" href="http://www.jug.ch/html/events/2013/dolphin.html" target="_blank">JUGS Event in Basel</a>. Be sure to be there!</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.canoo.com/blog/2013/04/30/jugs-event-open-dolphin-apr-30-2013-basel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CanooNow: an embedded room allocation dashboard with JavaFx and OpenDolphin</title>
		<link>http://www.canoo.com/blog/2013/04/26/canoonow-an-embedded-room-allocation-dashboard-with-javafx-and-opendolphin/</link>
		<comments>http://www.canoo.com/blog/2013/04/26/canoonow-an-embedded-room-allocation-dashboard-with-javafx-and-opendolphin/#comments</comments>
		<pubDate>Fri, 26 Apr 2013 08:53:08 +0000</pubDate>
		<dc:creator>Detlef</dc:creator>
				<category><![CDATA[RIA Blog]]></category>
		<category><![CDATA[JavaFX]]></category>
		<category><![CDATA[OpenDolphin]]></category>
		<category><![CDATA[RaspberryPi]]></category>

		<guid isPermaLink="false">http://www.canoo.com/blog/?p=7661</guid>
		<description><![CDATA[Where is my meeting? At Canoo, we have a lot of meeting rooms. They can be booked using our corporate calendar (Zimbra). In your organization it may be the case that all meetings always have a proper room reservation, every participant is fully aware where his next meeting will take place, and no spontaneous meetings [...]]]></description>
				<content:encoded><![CDATA[<p><strong>Where is my meeting?</strong></p>
<p>At Canoo, we have a lot of meeting rooms. They can be booked using our corporate calendar (Zimbra).</p>
<p>In <em>your</em> organization it may be the case that all meetings always have a proper room reservation, every participant is fully aware where his next meeting will take place, and no spontaneous meetings ever occur.</p>
<p>Well, it is different at Canoo. We may stand in front of the meeting rooms asking ourselves:</p>
<ul>
<li>Where will my meeting be?</li>
<li>Who is currently in which meeting?</li>
<li>Where can I go without a reservation?</li>
</ul>
<p>We <em>could</em> go back to the workplace, fire up the corporate calendar and find that information but we had the idea that it would be much nicer to have the information readily available right where we need it: on a screen in front of the meeting rooms.</p>
<p>In the future, we may want to extend the information to corporate news, pictures, blog posts, build status, welcoming visitors, and so on. We were bold enough to call that project <strong>CanooNow</strong> and implemented it as part of the infamous<strong><a title="OpenDolphin code camp" href="http://www.canoo.com/blog/2013/04/16/opendolphin-code-camp/" target="_blank"> Canoo code camp</a></strong>.</p>
<p><strong>Technologies and Hardware</strong></p>
<p>We wanted to experience how such an application could be implemented on a <a href="http://www.raspberrypi.org/" target="_blank"><strong>Raspberry Pi</strong></a>. The Pi is an inexpensive mini computer with limited resources, but still is capable to run Java &#8211; a special <strong><a href="http://jdk8.java.net/fxarmpreview/index.html" target="_blank">JDK</a></strong> provided by Oracle for <a href="http://www.raspberrypi.org/" target="_blank"><strong>Raspberry Pi</strong></a>. Additionally, the plan was to put the application logic on a server and let the embedded device be the display. We decided to use <strong><a title="Open Dolphin" href="http://www.open-dolphin.org" target="_blank">open-dolphin</a></strong> to this end.</p>
<p>We were also eager to make use of the attractive view controls of the <strong><a title="jfxtras" href="http://jfxtras.org/" target="_blank">jfxtras.com</a></strong> project for <strong><a title="JavaFx" href="www.javafx.com" target="_blank">JavaFx</a></strong> application. The Agenda control seemed to be a perfect match to our application.</p>
<p><strong>Experiences with <a title="JavaFx" href="www.javafx.com" target="_blank">JavaFx</a> and <a title="Open Dolphin" href="http://www.open-dolphin.org" target="_blank">open-dolphin</a></strong></p>
<p>Our first goal was to adjust the Agenda control so that it does not show days per column, but shows a room within each column. The Agenda control is made from the Agenda model class and the AgendaWeekSkin, that handles the visualization of the control. For that we built a new Skin class that is capable in achieving the desired effect.</p>
<p>We had reached this intermediate step with almost full functionality after an intense coding session with the result below:</p>
<p><a href="http://www.canoo.com/blog/wp-content/uploads/2013/04/meeting-room-titles.png"><img class="alignnone size-medium wp-image-7666" title="meeting-room-titles" alt="" src="https://www.canoo.com:443/blog/wp-content/uploads/2013/04/meeting-room-titles-300x21.png" width="300" height="21" /></a></p>
<p>This application shows our meeting rooms (which have got country names) and our breakroom.</p>
<p>After this milestone, we targeted to integrate open-dolphin into the application. If you would like to know more about open-dolphin, please check out the official website <strong><a title="Open Dolphin" href="http://www.open-dolphin.org" target="_blank">www.open-dolphin.org</a></strong>.</p>
<p>It didn&#8217;t take long to &#8216;<strong>dolphinize</strong>&#8216; our app. We needed a reference to the client dolphin:</p><pre class="crayon-plain-tag">class MainView extends javafx.Application {
   static ClientDolphin clientDolphin
   ...
}</pre><p></p>
<p>The clientDolphin property will be set in the Application starter classes. We have it in two flavors: one for a development scenario where the dolphin server runs in the same VM as the client, and one for a real client server separation scenario. In case of development the starter looks like:</p>
<p></p><pre class="crayon-plain-tag">public class ApplicationInMemoryStarter {
	public static void main(String[] args) throws Exception {
		DefaultInMemoryConfig config = new DefaultInMemoryConfig();
		config.getServerDolphin().registerDefaultActions();
		config.getClientDolphin().getClientConnector().setUiThreadHandler(new JavaFXUiThreadHandler());
		registerApplicationActions(config);
		MainView.clientDolphin = config.getClientDolphin();
		Application.launch(MainView.class);
	}
}</pre><p></p>
<p>When the main view is initialized, a command for data retrieving must be sent by the clientDolphin:</p>
<p>clientDolphin.send(Commands.CMD_PULL, new OnFinishedHandlerAdapter() {&#8230;}</p>
<p>This will be mapped to a server side action where the data access to our room reservation system takes place. It loads the appointments and returns the required data to the client.</p>
<p><strong>Get our heads around the model</strong></p>
<p>In order to get the Agenda control do the things that we want it to do, we had to design the presentation models properly. We came up with three types of presentation models:</p>
<ul>
<li><strong>Appointment</strong>: This type holds the neccessary data for a single appointment such as startDate, endDate, title, organizer, attendee</li>
<li><strong>Room</strong>: Type for the columns of the Agenda control.</li>
<li><strong>Person</strong>: Type for the organizer and the attendees  of an appointment.</li>
</ul>
<p>The Main View registers as a ModelStoreListener on presentation models of type Appointment and finally adds/remove an appointment instance to the Agenda.</p><pre class="crayon-plain-tag">clientDolphin.getModelStore().addModelStoreListener(Appointment.TYPE, new ModelStoreListener() {
	@Override
	public void modelStoreChanged(ModelStoreEvent event) {
		PresentationModel presentationModel = event.getPresentationModel();
		switch (event.getType()) {
		case ADDED: // map presentation model to appointment and add it to the agenda control.
			mapAppointment(presentationModel);
			break;
		case REMOVED: // remove appointment from agenda control
			removeAppointment(presentationModel);
			break;
		}
	}
});</pre><p></p>
<p>Also the skin class of the agenda control must react on Room model changes. It must add or remove columns accordingly.</p>
<p><strong>Here it is</strong></p>
<p>Finally &#8211; after two days of work (including the nights) CanooNow stands in front of the meeting rooms, displaying live data, and giving directions to employees and guests:</p>
<p><a href="http://www.canoo.com/blog/wp-content/uploads/2013/04/meeting-rooms.png"><img class="alignnone size-medium wp-image-7668" title="meeting-rooms" alt="" src="https://www.canoo.com:443/blog/wp-content/uploads/2013/04/meeting-rooms-300x154.png" width="300" height="154" /></a></p>
<p>The screen shows all appointments that take place in the various meeting rooms. On the left hand side, a time scale of 6 hours is shown. It moves up every full hour automatically. The red line visualizes the current time and moves along. Completed appointments are greyed out.</p>
<p>At Canoo we deployed the application to a Raspberry Pi that is connected to a flat screen. This flat screen is positioned at the entrance allowing everybody to check  whats going on in our meeting rooms.</p>
<p><a href="http://www.canoo.com/blog/wp-content/uploads/2013/04/IMG_2955.jpg"><img class="alignnone  wp-image-7697" title="Canoo Raspberry Pi" alt="" src="https://www.canoo.com:443/blog/wp-content/uploads/2013/04/IMG_2955-576x1024.jpg" width="282" height="502" /></a></p>
<p><strong>Lessons Learned</strong></p>
<p><a href="www.javafx.com" target="_blank"><strong>JavaFx</strong></a></p>
<p>With <a href="www.javafx.com" target="_blank"><strong>JavaFx</strong></a> it is very easy to develop complex UIs. Binding properties is a slick way of having one property that controls all bound objects. There is no repaint() required like in Swing. Another neat thing about <a href="www.javafx.com" target="_blank"><strong>JavaFx</strong></a> is the CSS style definitions. Most of the CSS style definitions worked, a very few we had to set through the component API.</p>
<p><a href="http://www.open-dolphin.org" target="_blank"><strong>Open-dolphin</strong></a></p>
<p><a href="http://www.open-dolphin.org" target="_blank"><strong>Open-dolphin</strong></a> is a tiny piece of software that can be easily integrated into any application. For us, the time spent for getting dolphin working as we wanted was less than a third of the whole project development time.</p>
<p><a href="http://www.raspberrypi.org/" target="_blank"><strong>Raspberry Pi</strong></a></p>
<p>The <a href="http://www.raspberrypi.org/" target="_blank"><strong>Raspberry Pi</strong></a> mini computer has got everything that is required for running <a href="www.javafx.com" target="_blank"><strong>JavaFx</strong></a> applications. With raspbian linux and a specially baked Java version from Oracle, the application runs perfect &#8211; even the performance is acceptable. The performance was our biggest initial concern, but it turned out not to be an issue. Of course we did not use complex UI transitions that would certainly bring the <a href="http://www.raspberrypi.org/" target="_blank"><strong>Raspberry Pi</strong></a> to its boundaries.</p>
<p>The CanooNow Team,</p>
<p>Fabian Dreier, Franz-Josef Wiszniewsky, Johannes Porzelt, Martin Huber, Detlef Brendle</p>
]]></content:encoded>
			<wfw:commentRss>http://www.canoo.com/blog/2013/04/26/canoonow-an-embedded-room-allocation-dashboard-with-javafx-and-opendolphin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dolphin Train Station</title>
		<link>http://www.canoo.com/blog/2013/04/17/dolphin-train-station/</link>
		<comments>http://www.canoo.com/blog/2013/04/17/dolphin-train-station/#comments</comments>
		<pubDate>Wed, 17 Apr 2013 09:02:36 +0000</pubDate>
		<dc:creator>sven</dc:creator>
				<category><![CDATA[RIA Blog]]></category>
		<category><![CDATA[JavaFX]]></category>
		<category><![CDATA[OpenDolphin]]></category>
		<category><![CDATA[presentation model]]></category>

		<guid isPermaLink="false">http://www.canoo.com/blog/?p=7621</guid>
		<description><![CDATA[During the 2013 Spring Canoo Code Camp Dieter and myself with a lot of support from Mittie implemented an Application which we called Dolphin Train Station. Use-Case Here is the situation: on the platforms of a train station, say Olten in Switzerland there are many departure boards informing people about trains starting from this station in [...]]]></description>
				<content:encoded><![CDATA[<p>During the 2013 Spring Canoo Code Camp Dieter and myself with a lot of support from Mittie implemented an Application which we called <em>Dolphin Train Station</em>.</p>
<p><strong>Use-Case</strong></p>
<p>Here is the situation: on the platforms of a train station, say Olten in Switzerland there are many departure boards informing people about trains starting from this station in the near future.</p>
<p><strong>GUI Overview</strong></p>
<p>The application implements such a departure board in form of a window with a table showing the next 5 trains. One goal was that the departure boards are displayed on a <strong>Raspberry Pi</strong>. In addition the application contains a so called admin GUI to maintain information about trains and simulate arrivals and departures of trains. The Admin GUI uses the <strong>master-detail</strong> paradigm.</p>
<p>The following screenshots of the Admin GUI and the Departure Board should give you an impression on how the two GUIs look like.</p>
<p><a href="http://www.canoo.com/blog/wp-content/uploads/2013/04/admin_gui.png"><img class="alignnone size-medium wp-image-7626" title="admin_gui" src="https://www.canoo.com:443/blog/wp-content/uploads/2013/04/admin_gui1-300x127.png" alt="" width="300" height="127" /></a></p>
<p><a href="http://www.canoo.com/blog/wp-content/uploads/2013/04/departure_board.png"><img class="alignnone size-medium wp-image-7627" title="departure_board" src="https://www.canoo.com:443/blog/wp-content/uploads/2013/04/departure_board-300x96.png" alt="" width="300" height="96" /></a></p>
<p>To make this post not too boring I will just describe the important things from a concept point of view.</p>
<p><strong>Project Setup</strong></p>
<p>We started with an empty directory and created the initial open dolphin project structure with the <a title="Open Dolphin gdt template" href="https://github.com/svene/dt_java" target="_blank">open dolphin gdt template</a> which meant our project was up and running within minutes. As GUI technology we decided to use JavaFX and also GroovyFX to make working with JavaFX even easier.</p>
<p><strong>Admin GUI</strong></p>
<p>When the Admin GUI shows up a so called named command (COMMAND_GET_ALL_DEPARTURES) is sent to the server asking for all train departure data. The server creates presentation models (PMs) which are sent to the client by dolphin automatically.  When the PMs arrive on the client a callback is invoked so that it can bind the PMs to the table on the GUI.</p>
<p>After having put the details view (which we also called editor) next to the table the goal was that it shows the data of the currently selected row in the table. Here the PMs start to shine. We simply created a separate PM which we called selectedDeparturePM.<br />
Note that this selectedDeparturePM is nothing visible by itself. It is simply a placeholder for the concept of the currently selected PM. Whenever the selection in the table changes the newly selected PM of the table got applied to the selectedDeparturePM.</p>
<p>Then we bound the editor&#8217;s widgets to selectedDeparturePM. This means the table and the editor are completely decoupled. And if you start typing changes in the editor fields you immediately see the changes in the table while typing (that&#8217;s done by open-dolphin in the background). You could easily think of putting a second version or instance of the editor on the GUI (also bound to selectedDeparturePM) and the three views would all be in sync.</p>
<p>When we noticed that the table as a widget was still too much in control we created another &#8220;invisible&#8221; PM: selectedDepartureIdPM which we bound to the table. This means whenever the selected row in the table changes selectedDepartureIdPM is adapted and vice versa. Now you will ask why is it necessary that the table listens to changes of selectedDepartureIdPM The use case for this was the <strong>undo/redo</strong> support. We wanted that a change of the selected row in the table is also undoable. Changing the selected row in the table say from row 5 to row 6 now causes a normal value change of selectedDepartureIdPM from 5 to 6. When the user presses undo selectedDepartureIdPM changes back from 6 to 5 and since the table is bound to selectedDepartureIdPM the selection of the table also changes back to row 5. Nice, isn&#8217;t it?</p>
<p>And then of course we had to bind selectedDepartureIdPM to selectedDeparturePM and vice versa. This appeared like a best practice to us: views like the editor which are interested in all details of the selected PM bind to the selectedDeparturePM, those (like the master/table view) which are only interested in the id bind to the selectedDepartureIdPM. That&#8217;s all.</p>
<p><strong>Departure Board</strong></p>
<p>Now to the Departure Board. This is basically a second client to the same application. You have to know that the server side PMs of the AdminGUI and those of the Departure Board live in their own separate worlds (sessions). Also note that there is no concept of a shared PM. So if we want to show data visible on the Admin GUI on the Departure GUI you have to send the data to it. This is issued by pressing the button &#8216;erster Eintrag auf Abfahrtstafel&#8217; which sends the PM&#8217;s data to the other client(s) by making use of Open Dolphin&#8217;s event bus.</p>
<p>The Departure Board clients use a <strong>long polling</strong> approach to be able to display changes immedately. This means whenever the AdminGUI presses the button they new 5 records appear immediately on the Departure board. And what&#8217;s more if you change data in the editor the changes appear on the Departures board which typing. We found that quite impressing.</p>
<p>During the code camp we wanted to use @hansolo_&#8217;s very nice departure board custom control on the Raspberry PI. It turned out that some adaptions have to be made first in order to make it PI ready. This is currently on the way. So for the PI we used a normal table for the time being. On the desktop we created a second version of the Departure Board using Swing as GUI technology. See for yourself how nice the result looks like:</p>
<p><a href="http://www.canoo.com/blog/wp-content/uploads/2013/04/departure_board_swing.png"><img class="alignnone size-medium wp-image-7629" title="departure_board_swing" src="https://www.canoo.com:443/blog/wp-content/uploads/2013/04/departure_board_swing-300x131.png" alt="" width="300" height="131" /></a></p>
<p>It was really easy to add input validation to the Editor using tags of the PM&#8217;s attributes. We also made use of tags for the labels of intput fields so that validation and labels (think of internationalization) are defined by the server.</p>
<p>Altogether we were positively surprised how far we got in just a couple of days. It was a real joy to develop this application. If you&#8217;re interested you can find it on <a title="https://github.com/canoo/dolphin_train_station" href="https://github.com/canoo/dolphin_train_station">https://github.com/canoo/dolphin_train_station</a> . The readme file appearing on the github page explains how to build and run the application.</p>
<p>My personal conclusions are:</p>
<ul>
<li>Using the presentation model approach with Open Dolphin is the way I want to build GUIs from now on.</li>
<li>It will be hard if I have to go back and use other paradigms now that I know how to do it right.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.canoo.com/blog/2013/04/17/dolphin-train-station/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenDolphin code camp</title>
		<link>http://www.canoo.com/blog/2013/04/16/opendolphin-code-camp/</link>
		<comments>http://www.canoo.com/blog/2013/04/16/opendolphin-code-camp/#comments</comments>
		<pubDate>Mon, 15 Apr 2013 23:12:31 +0000</pubDate>
		<dc:creator>Dierk</dc:creator>
				<category><![CDATA[RIA Blog]]></category>
		<category><![CDATA[CodeCamp]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[JavaFX]]></category>
		<category><![CDATA[OpenDolpin]]></category>
		<category><![CDATA[RaspberryPi]]></category>

		<guid isPermaLink="false">http://www.canoo.com/blog/?p=7600</guid>
		<description><![CDATA[It is now six years that Canoo developers and friends go &#8220;Canoo Camping&#8221; twice a year. We enjoy the break from our everyday work and explore new and exciting fields by means of collaborative learning by doing. These are the ground rules: you have to be there all three days we work in small groups [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.canoo.com/blog/wp-content/uploads/2013/04/IMG_0769.jpg"><img src="https://www.canoo.com:443/blog/wp-content/uploads/2013/04/IMG_0769-300x224.jpg" alt="Schwenden" title="Schwenden" width="300" height="224" class="alignright size-medium wp-image-7602" /></a>It is now six years that Canoo developers and friends go &#8220;Canoo Camping&#8221; twice a year.<br />
We enjoy the break from our everyday work and explore new and exciting fields by means of<br />
collaborative learning by doing. </p>
<p>These are the ground rules:</p>
<ul>
<li>you have to be there all three days</li>
<li>we work in small groups</li>
<li>you have to present your achievements Saturday afternoon</li>
</ul>
<p><strong>What happens in code camp doesn&#8217;t stay in code camp!</strong></p>
<p>This spring, we decided to work on <a href="http://open-dolphin.org" title="open-dolphin home" target="_blank">OpenDolphin</a> in connection with <strong>JavaFX</strong>, <strong>Raspberry Pi</strong>, and <strong>HTML5</strong> with 10 developers in three projects.</p>
<p><a href="http://www.canoo.com/blog/wp-content/uploads/2013/04/IMG_0784.jpg"><img src="https://www.canoo.com:443/blog/wp-content/uploads/2013/04/IMG_0784-300x224.jpg" alt="Canoo Campers" title="Canoo Campers" width="300" height="224" class="aligncenter size-medium wp-image-7601" /></a></p>
<p>Detailed blog posts about all three projects will follow and I wouldn&#8217;t want to reveal too much in advance beside that we have all been thrilled by the achievements.</p>
<p>We were not surprised to see JavaFX living up to its promise of allowing great user interface development from desktop down to small embedded devices. It worked like a charm.<br />
The cool thing was to hook these user interfaces up with OpenDolphin presentation models and to control the application from a remote server &#8211; even synchronizing the views.</p>
<p>We were able to extend OpenDolphin&#8217;s reach to multi-client / multi-channel HTML5 applications working in perfect harmony with JavaFX views, which triggered a <a href="https://plus.google.com/117890567170892500727/posts/anQuvA8LZjx?cfem=4" title="Google+ discussion" target="_blank">bit of discussion on Google+</a>.</p>
<p>Most of all, the OpenDolphin approach passed a most scrutinizing test: being used in anger by a Canoo team. We identified a few possibilities for improvement along the way but the general assessment concluded that OpenDolphin was </p>
<p><a href="http://open-dolphin.org"><img src="https://www.canoo.com:443/blog/wp-content/uploads/2013/04/dolphin.png" alt="dolphin" title="dolphin" width="156" height="100" class="alignright size-full wp-image-7603" /></a>- <em>&#8220;quick to get into&#8221;</em>  in a day or so<br />
- <em>&#8220;made from a few simple, reliable concepts&#8221; </em><br />
- <em>&#8220;versatile and powerful&#8221;</em><br />
- <em>&#8220;the best way to structure UIs&#8221;</em>. </p>
<p>Even advanced tasks like supporting reliable undo/redo (even rollback of selections) and scaffolding complex forms with three lines of code suddenly became possible in this very short time frame.</p>
<p>You bet that beside the exciting work &#8211; which sometimes almost led us to being late for the delicious catering &#8211; we had a tremendous amount of fun.<br />
Late in the night, we even defined a new software development methodology:<br />
beer programming.</p>
<p><img src="https://www.canoo.com:443/blog/wp-content/uploads/2013/04/IMG_0774-300x224.jpg" alt="beer programming" title="beer programming" width="300" height="224" class="aligncenter size-medium wp-image-7604" /></p>
<p>Stay tuned!<br />
There is more to come soon.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.canoo.com/blog/2013/04/16/opendolphin-code-camp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JUGS Event &#8211; Talk Open Dolphin &#124; Apr 30, 2013 &#124; Basel</title>
		<link>http://www.canoo.com/blog/2013/04/12/jugs-event-talk-open-dolphin-apr-30-2013-basel/</link>
		<comments>http://www.canoo.com/blog/2013/04/12/jugs-event-talk-open-dolphin-apr-30-2013-basel/#comments</comments>
		<pubDate>Fri, 12 Apr 2013 21:37:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[RIA Blog]]></category>
		<category><![CDATA[Dierk König]]></category>
		<category><![CDATA[dolphin]]></category>
		<category><![CDATA[JavaFX]]></category>
		<category><![CDATA[OpenDolphin]]></category>

		<guid isPermaLink="false">http://www.canoo.com/blog/?p=7596</guid>
		<description><![CDATA[Open Dolphin was first announced by Canoo at the JavaOne keynote 2012. Those for whom San Francisco was too far to travel, however, now have the chance to find out more about the open source project at the end of April right on our doorstep. Dierk König will be providing a fascinating insight into the [...]]]></description>
				<content:encoded><![CDATA[<table border="0">
<tbody>
<tr>
<td dir="" scope="" align="" valign="middle"><a href="http://www.canoo.com/blog/wp-content/uploads/2013/04/Logo_JUGS_200px.png"><img title="Logo_JUGS_200px" src="https://www.canoo.com:443/blog/wp-content/uploads/2013/04/Logo_JUGS_200px.png" alt="" width="200" height="112" /></a></td>
<td><a title="Website" href="http://open-dolphin.org/dolphin_website/Home.html" target="_blank">Open Dolphin</a> was first announced by Canoo at the JavaOne keynote 2012. Those for whom San Francisco was too far to travel, however, now have the chance to find out more about the open source project at the end of April right on our doorstep. <a title="Twitter @mittie" href="https://twitter.com/mittie" target="_blank">Dierk König</a> will be providing a fascinating insight into the concept and architecture of Open Dolphin at the <a title="More information about the event" href="http://www.jug.ch/html/events/2013/dolphin.html" target="_blank">JUGS Event in Basel</a>. Be sure to be there!</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.canoo.com/blog/2013/04/12/jugs-event-talk-open-dolphin-apr-30-2013-basel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>No end to the mobile hype</title>
		<link>http://www.canoo.com/blog/2013/03/22/der-mobile-hype-halt-an/</link>
		<comments>http://www.canoo.com/blog/2013/03/22/der-mobile-hype-halt-an/#comments</comments>
		<pubDate>Fri, 22 Mar 2013 16:57:34 +0000</pubDate>
		<dc:creator>allin</dc:creator>
				<category><![CDATA[www.canoo.com]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[crossplatform]]></category>
		<category><![CDATA[mobile development]]></category>
		<category><![CDATA[MobileTech Conference]]></category>
		<category><![CDATA[Tablet]]></category>
		<category><![CDATA[UI]]></category>

		<guid isPermaLink="false">http://www.canoo.com/blog/?p=7533</guid>
		<description><![CDATA[The topic mobile is on everyone’s lips – indeed throughput the year! The MobileTech Conference is therefore the biannual venue for captivated visitors. Following the successful spring edition in Munich, preparations are now in full swing for its autumn counterpart. Andreas Hölzl was a speaker at the conference and presented concepts in his talk “Andriod-UIs [...]]]></description>
				<content:encoded><![CDATA[<p>The topic <em>mobile</em> is on everyone’s lips – indeed throughput the year! The <a title="homepage" href="http://mobiletechcon.de/" target="_blank">MobileTech Conference</a> is therefore the biannual venue for captivated visitors. Following the successful spring edition in Munich, preparations are now in full swing for its autumn counterpart.<br />
Andreas Hölzl was a speaker at the conference and presented concepts in his talk <a title="topics of the talk" href="http://entwickler.com/konferenzen/ext_scripts/v2/php/sessions-popup.php?module=mobiletechcon2013spring&amp;id=24758" target="_blank">“Andriod-UIs für alle(s)”</a> for the efficient realization of user interfaces for all conceivable Android-smartphones and tablets. On the conference sidelines, Claudia Fröhling invited the mobile expert for <a title="interview Andreas Hölzl" href="http://webmagazin.de/mobile/android/Andreas-Hoelzl-ueber-Mobile-Business-Apps-Wikihood-Tablet-UIs" target="_blank">an interview</a> and chatted with him about mobile business apps, Wikihood and tablet UIs. The main message was: due to the expanding bandwidth of mobile end devices, platform-independent mobile development expertise is in demand as never before.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.canoo.com/blog/2013/03/22/der-mobile-hype-halt-an/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MobileTech Conference &#124; Mar 11-14, 2013 &#124; Munich</title>
		<link>http://www.canoo.com/blog/2013/03/14/mobiletech-conference-mar-11-14-2013-munich/</link>
		<comments>http://www.canoo.com/blog/2013/03/14/mobiletech-conference-mar-11-14-2013-munich/#comments</comments>
		<pubDate>Thu, 14 Mar 2013 17:00:28 +0000</pubDate>
		<dc:creator>allin</dc:creator>
				<category><![CDATA[RIA Blog - Events]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[mobile application]]></category>
		<category><![CDATA[mobile web]]></category>
		<category><![CDATA[MobileTech 2013]]></category>
		<category><![CDATA[UI]]></category>

		<guid isPermaLink="false">http://www.canoo.com/blog/?p=7266</guid>
		<description><![CDATA[When it comes to the development of sustainable mobile strategies and the development of apps on various platforms then a visit to the MobileTech Conference is a must for your 2013 todo-list. Canoo’s mobile expert Andreas Hölzl will be a speaker at the conference. In his talk &#8220;Android-UIs für alle(s)&#8221; [Android UIs for everyone &#38; everything] he will [...]]]></description>
				<content:encoded><![CDATA[<table border="0">
<tbody>
<tr>
<td dir="" scope="" align="" valign="middle"><a href="http://www.canoo.com/blog/wp-content/uploads/2013/02/mobiletech2013_200px1.png"><img title="mobiletech2013_200px" src="https://www.canoo.com:443/blog/wp-content/uploads/2013/02/mobiletech2013_200px1.png" alt="" width="200" height="125" /></a></td>
<td><strong></strong>When it comes to the development of sustainable mobile strategies and the development of apps on various platforms then a visit to the <a title="www.mobiletechcon.de" href="http://mobiletechcon.de/" target="_blank">MobileTech Conference</a> is a must for your 2013 todo-list. Canoo’s mobile expert <a title="Twitter @andywoodly" href="https://twitter.com/andywoodly?uid=14796854&amp;iid=7a83f5cb-cb6a-485b-b875-c58f8335767d&amp;nid=64+697+20121212" target="_blank">Andreas Hölzl</a> will be a speaker at the conference. In his talk <a title="topics and dates" href="http://entwickler.com/konferenzen/ext_scripts/v2/php/sessions-popup.php?module=mobiletechcon2013spring&amp;id=24758" target="_blank">&#8220;Android-UIs für alle(s)&#8221;</a> [Android UIs for everyone &amp; everything] he will be presenting concepts that enable the efficient realization of user interfaces for all imaginable Android smartphones and tablets. Why not pay a visit?</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.canoo.com/blog/2013/03/14/mobiletech-conference-mar-11-14-2013-munich/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
