<?xml version="1.0" encoding="iso-8859-1"?><!-- generator="b2evolution/4.1.4" -->
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:admin="http://webns.net/mvcb/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Carnets de bord</title>
		<link>http://www.ebpml.org/blog2/index.php</link>
		<atom:link rel="self" type="application/rss+xml" href="http://www.ebpml.org/blog2/index.php?tempskin=_rss2" />
		<description></description>
		<language>en-US</language>
		<docs>http://blogs.law.harvard.edu/tech/rss</docs>
		<admin:generatorAgent rdf:resource="http://b2evolution.net/?v=4.1.4"/>
		<ttl>60</ttl>
				<item>
			<title>Data is (Mostly) Flat</title>
			<link>http://www.ebpml.org/blog2/index.php/2012/04/22/data-is-mostly-flat</link>
			<pubDate>Mon, 23 Apr 2012 02:54:00 +0000</pubDate>			<dc:creator>jdubray</dc:creator>
			<category domain="main">android</category>			<guid isPermaLink="false">110@http://www.ebpml.org/blog2/</guid>
						<description>&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;http://www.ebpml.org/blog2/index.php/2012/04/22/data-is-mostly-flat&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<div class="item_footer"><p><small><a href="http://www.ebpml.org/blog2/index.php/2012/04/22/data-is-mostly-flat">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>http://www.ebpml.org/blog2/index.php/2012/04/22/data-is-mostly-flat#comments</comments>
			<wfw:commentRss>http://www.ebpml.org/blog2/index.php?tempskin=_rss2&#38;disp=comments&#38;p=110</wfw:commentRss>
		</item>
				<item>
			<title>The Platform</title>
			<link>http://www.ebpml.org/blog2/index.php/2012/04/12/the-platform</link>
			<pubDate>Thu, 12 Apr 2012 12:36:00 +0000</pubDate>			<dc:creator>jdubray</dc:creator>
			<category domain="main">News</category>
<category domain="alt">SOA</category>
<category domain="alt">Mobile</category>			<guid isPermaLink="false">109@http://www.ebpml.org/blog2/</guid>
						<description>&lt;div style=&quot;float: left; margin-right: 20px;&quot;&gt;&lt;/div&gt;
&lt;div style=&quot;float: left;&quot;&gt;&lt;a class=&quot;twitter-share-button&quot; href=&quot;http://twitter.com/share&quot;&gt;Tweet&lt;/a&gt;
&lt;script src=&quot;http://platform.twitter.com/widgets.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;div style=&quot;float: left;&quot;&gt;&lt;/div&gt;
&lt;p&gt;The purchase of Instagram is no less than an attempt to redefine the landscape of our industry, today, you are either an app, a service or a platform. For instance, RIM will become an &quot;app&quot;. No disrespect, it can be a formidable app, opening the doors to the Enterprise to an Apple or a Google, but the window of opportunity for RIM to be a platform is gone. In this new world, search is an &lt;span style=&quot;text-decoration: line-through;&quot;&gt;app&lt;/span&gt;, actually the feature of an app which sets the search context (yelp, UrbanSpoon...), ads is a service and the old WWW amounts to the Yellow Pages (&lt;span style=&quot;text-decoration: line-through;&quot;&gt;paper&lt;/span&gt; HTML edition). Content is now produced, delivered and accessed in a completely different way, e.g. Instagram: we have entered the social:// era and left http:// behind. The circle is the new DNS.&lt;/p&gt;
&lt;div class=&quot;huFEdf rXnUBd&quot;&gt;Apple has already shaped what a platform should be: store, privacy/trust, cloud ... vertically integrated and ... &lt;span style=&quot;text-decoration: line-through;&quot;&gt;user&lt;/span&gt; family centric. Apple has even successfully established purchases as the primary business model, a&lt;em&gt; &lt;/em&gt;real&lt;em&gt; tour de force&lt;/em&gt;, and ads as a secondary. Everything the Web was not, Apple baked it into its plaform and created a tectonic shift in our industry. You can argue that Apple has still room for improvement here and there, but the shape is pretty much defined. &lt;br /&gt;&lt;br /&gt;Facebook of course tells us, &quot;not so fast&quot;, you are missing the social component, Facebook is not an app, it buys apps. In our industry it is, position or be positioned. With close to a billion users, Facebook IS-A platform, or at least, soon to be. Make no mistake, the clueless statement of Facebook IPO&#039;s filing where Zuckerberg states that he doesn&#039;t need any money nor does he know what to do with it, including spending $1B for Instagram is just smoking mirrors. &lt;br /&gt;&lt;br /&gt;At this point, you probably understand that the Microsoft and Android ecosystems are not&amp;#160; &quot;platform oriented&quot;: hardware vendors and ISVs are too loosely coupled to deliver products that customers want to buy. That model is gone. The musical chair game has started.&lt;br /&gt;&lt;br /&gt;So, where does it leave us? well, we have 3 and 1/2 incumbents to the platform game. &lt;br /&gt; 
&lt;ul&gt;
&lt;li&gt;(good old) Microsoft/Facebook&lt;/li&gt;
&lt;li&gt;(fearless) Google&lt;/li&gt;
&lt;li&gt;(mighty) Apple/Twitter&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;... and maybe (always smiling) Amazon. The problem with Amazon is that they&#039;ll have to chose between being a commerce platform (and compete with WalMart) or an industry platform and play with the big boyz. I don&#039;t think these two things work well together and eventually Amazon will return to its commerce roots mainly because of the lack of social capability. Amazon is a formidable company, but they are too late to the&amp;#160; game, with no money in the bank to acquire what they need to compete. As (Microsoft), Google and Apple know, there are only so many social networks that can fuel a healthy platform. Most likely Amazon will become a substrate to support services with AWS, and of course, an &quot;app&quot;, the kindle, assuming the platform guys leave these holes open (far from a given).&lt;/p&gt;
&lt;p&gt;Yet, Amazon was a decisive factor in establishing the architecture of the platform. It reinforced the power of the vertical integration pioneered by Apple. If you come with a great device or set of devices, and an app store, customers will come. Something that Google is still struggling to emulate with an open ecosystem, and I am not even talking about Microsoft. &lt;br /&gt;&lt;br /&gt;If the social integration is pretty much a given, the game gets really interesting when it comes to the vertical integration. As we have seen with Apple, customers don&#039;t see &quot;choice&quot; (or price) as a competitive advantage. Customers want simple product lines, that offer great consumer oriented products, with clear and real innovation at each cycle, built by thoughtful product teams: selling incremental junk is no longer an option. And yes, TV or Game consoles will be engulfed in the platform. How could the platform guys leave them on the table? Any consumer device that can run an app will be vertically integrated in the platform (or replaced by one). &lt;br /&gt;&lt;br /&gt;My best guess is that:&lt;br /&gt;&lt;br /&gt;- MS/FB will partner strongly with or even purchase Nokia and HP.&lt;br /&gt;- Google/Motorola will swallow HTC and/or LG, possibly bring Dell in its ecosystem&lt;br /&gt;- Apple ... huh ... will buy Twitter, and RIM for its Enterprise App&lt;br /&gt;&lt;br /&gt;Samsung could team up with Amazon, but most likely it will become the component provider of the platform guys. SONY&#039;s or Nintendo&#039;s trouble simply show that there is no more room for independent Hardware Vendors: you are either a (vertically integrated) platform or you supply the platform with components, not even devices. It is essential to understand that the touch points to consumers is going to be completely locked down by the platform. &lt;br /&gt;&lt;br /&gt;Even Telco providers will be suppliers to the platform guys, with the Skype/Hangout/Facetime apps being the new face of telephony. &lt;br /&gt;&lt;br /&gt;The interesting thing here is that unless social networks are just a fad, MS/FB is the most likely winner of that game. Even Ballmer could pull that off and retire on a -real - visionary success. There is a large probability that MS/FB/NOK/HP will take on 80% of a vertically integrated, consumer oriented market. Google will lose that game (this is not an engineers game, let alone using corny&amp;#160;&quot;Web&quot; paradigms and UX, in any case they will take the decision to move to a vertically integrated model too late without any muscle behind it). Apple will take on a 20% &quot;think different&quot; crowd. Apple is not aggressive enough to win that game, they&#039;ll look back to their $100 B in the bank and ask themselves, if they could have used it more &quot;wisely&quot;.&lt;/p&gt;
&lt;p&gt;Facebook spent a billion, not to buy Instagram but to hold our industry by the balls. With its IPO behind, it will call the shots for years. And yes ... Zuckerberg is next CEO of &quot;The Platform&quot;.&lt;/p&gt;
&lt;p&gt;Fascinating times ... it&#039;s a shame that Steve is no longer with us.&lt;/p&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;http://www.ebpml.org/blog2/index.php/2012/04/12/the-platform&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<div style="float: left; margin-right: 20px;"></div>
<div style="float: left;"><a class="twitter-share-button" href="http://twitter.com/share">Tweet</a>
<script src="http://platform.twitter.com/widgets.js" type="text/javascript"></script>
</div>
<div style="float: left;"></div>
<p>The purchase of Instagram is no less than an attempt to redefine the landscape of our industry, today, you are either an app, a service or a platform. For instance, RIM will become an "app". No disrespect, it can be a formidable app, opening the doors to the Enterprise to an Apple or a Google, but the window of opportunity for RIM to be a platform is gone. In this new world, search is an <span style="text-decoration: line-through;">app</span>, actually the feature of an app which sets the search context (yelp, UrbanSpoon...), ads is a service and the old WWW amounts to the Yellow Pages (<span style="text-decoration: line-through;">paper</span> HTML edition). Content is now produced, delivered and accessed in a completely different way, e.g. Instagram: we have entered the social:// era and left http:// behind. The circle is the new DNS.</p>
<div class="huFEdf rXnUBd">Apple has already shaped what a platform should be: store, privacy/trust, cloud ... vertically integrated and ... <span style="text-decoration: line-through;">user</span> family centric. Apple has even successfully established purchases as the primary business model, a<em> </em>real<em> tour de force</em>, and ads as a secondary. Everything the Web was not, Apple baked it into its plaform and created a tectonic shift in our industry. You can argue that Apple has still room for improvement here and there, but the shape is pretty much defined. <br /><br />Facebook of course tells us, "not so fast", you are missing the social component, Facebook is not an app, it buys apps. In our industry it is, position or be positioned. With close to a billion users, Facebook IS-A platform, or at least, soon to be. Make no mistake, the clueless statement of Facebook IPO's filing where Zuckerberg states that he doesn't need any money nor does he know what to do with it, including spending $1B for Instagram is just smoking mirrors. <br /><br />At this point, you probably understand that the Microsoft and Android ecosystems are not&#160; "platform oriented": hardware vendors and ISVs are too loosely coupled to deliver products that customers want to buy. That model is gone. The musical chair game has started.<br /><br />So, where does it leave us? well, we have 3 and 1/2 incumbents to the platform game. <br /> 
<ul>
<li>(good old) Microsoft/Facebook</li>
<li>(fearless) Google</li>
<li>(mighty) Apple/Twitter</li>
</ul>
</div>
<p>... and maybe (always smiling) Amazon. The problem with Amazon is that they'll have to chose between being a commerce platform (and compete with WalMart) or an industry platform and play with the big boyz. I don't think these two things work well together and eventually Amazon will return to its commerce roots mainly because of the lack of social capability. Amazon is a formidable company, but they are too late to the&#160; game, with no money in the bank to acquire what they need to compete. As (Microsoft), Google and Apple know, there are only so many social networks that can fuel a healthy platform. Most likely Amazon will become a substrate to support services with AWS, and of course, an "app", the kindle, assuming the platform guys leave these holes open (far from a given).</p>
<p>Yet, Amazon was a decisive factor in establishing the architecture of the platform. It reinforced the power of the vertical integration pioneered by Apple. If you come with a great device or set of devices, and an app store, customers will come. Something that Google is still struggling to emulate with an open ecosystem, and I am not even talking about Microsoft. <br /><br />If the social integration is pretty much a given, the game gets really interesting when it comes to the vertical integration. As we have seen with Apple, customers don't see "choice" (or price) as a competitive advantage. Customers want simple product lines, that offer great consumer oriented products, with clear and real innovation at each cycle, built by thoughtful product teams: selling incremental junk is no longer an option. And yes, TV or Game consoles will be engulfed in the platform. How could the platform guys leave them on the table? Any consumer device that can run an app will be vertically integrated in the platform (or replaced by one). <br /><br />My best guess is that:<br /><br />- MS/FB will partner strongly with or even purchase Nokia and HP.<br />- Google/Motorola will swallow HTC and/or LG, possibly bring Dell in its ecosystem<br />- Apple ... huh ... will buy Twitter, and RIM for its Enterprise App<br /><br />Samsung could team up with Amazon, but most likely it will become the component provider of the platform guys. SONY's or Nintendo's trouble simply show that there is no more room for independent Hardware Vendors: you are either a (vertically integrated) platform or you supply the platform with components, not even devices. It is essential to understand that the touch points to consumers is going to be completely locked down by the platform. <br /><br />Even Telco providers will be suppliers to the platform guys, with the Skype/Hangout/Facetime apps being the new face of telephony. <br /><br />The interesting thing here is that unless social networks are just a fad, MS/FB is the most likely winner of that game. Even Ballmer could pull that off and retire on a -real - visionary success. There is a large probability that MS/FB/NOK/HP will take on 80% of a vertically integrated, consumer oriented market. Google will lose that game (this is not an engineers game, let alone using corny&#160;"Web" paradigms and UX, in any case they will take the decision to move to a vertically integrated model too late without any muscle behind it). Apple will take on a 20% "think different" crowd. Apple is not aggressive enough to win that game, they'll look back to their $100 B in the bank and ask themselves, if they could have used it more "wisely".</p>
<p>Facebook spent a billion, not to buy Instagram but to hold our industry by the balls. With its IPO behind, it will call the shots for years. And yes ... Zuckerberg is next CEO of "The Platform".</p>
<p>Fascinating times ... it's a shame that Steve is no longer with us.</p><div class="item_footer"><p><small><a href="http://www.ebpml.org/blog2/index.php/2012/04/12/the-platform">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>http://www.ebpml.org/blog2/index.php/2012/04/12/the-platform#comments</comments>
			<wfw:commentRss>http://www.ebpml.org/blog2/index.php?tempskin=_rss2&#38;disp=comments&#38;p=109</wfw:commentRss>
		</item>
				<item>
			<title>A fully functional multiplaform app in less than 140 chars</title>
			<link>http://www.ebpml.org/blog2/index.php/2012/03/28/a-fully-functional-multiplaform-app</link>
			<pubDate>Wed, 28 Mar 2012 22:13:00 +0000</pubDate>			<dc:creator>jdubray</dc:creator>
			<category domain="alt">MDE</category>
<category domain="main">Mobile</category>
<category domain="alt">iPhone</category>
<category domain="alt">MOP</category>
<category domain="alt">iPAd</category>
<category domain="alt">android</category>			<guid isPermaLink="false">108@http://www.ebpml.org/blog2/</guid>
						<description>&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;http://www.ebpml.org/blog2/index.php/2012/03/28/a-fully-functional-multiplaform-app&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<div class="item_footer"><p><small><a href="http://www.ebpml.org/blog2/index.php/2012/03/28/a-fully-functional-multiplaform-app">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>http://www.ebpml.org/blog2/index.php/2012/03/28/a-fully-functional-multiplaform-app#comments</comments>
			<wfw:commentRss>http://www.ebpml.org/blog2/index.php?tempskin=_rss2&#38;disp=comments&#38;p=108</wfw:commentRss>
		</item>
				<item>
			<title>Ten things Canappi does that Interface Builder can't do</title>
			<link>http://www.ebpml.org/blog2/index.php/2012/03/26/the-ten-things-canappi-does</link>
			<pubDate>Mon, 26 Mar 2012 12:04:00 +0000</pubDate>			<dc:creator>jdubray</dc:creator>
			<category domain="alt">MDE</category>
<category domain="main">Mobile</category>
<category domain="alt">iPhone</category>
<category domain="alt">iPAd</category>
<category domain="alt">android</category>			<guid isPermaLink="false">107@http://www.ebpml.org/blog2/</guid>
						<description>&lt;div style=&quot;float: left; margin-right: 20px;&quot;&gt;
&lt;div class=&quot;addthis_toolbox addthis_default_style &quot;&gt;&lt;a class=&quot;addthis_counter addthis_pill_style&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;script src=&quot;http://s7.addthis.com/js/250/addthis_widget.js#username=xa-4cf41f0f23f56dc2&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;div style=&quot;float: left;&quot;&gt;&lt;a class=&quot;twitter-share-button&quot; href=&quot;http://twitter.com/share&quot;&gt;Tweet&lt;/a&gt;
&lt;script src=&quot;http://platform.twitter.com/widgets.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;div style=&quot;float: left;&quot;&gt;
&lt;script src=&quot;http://connect.facebook.net/en_US/all.js#xfbml=1&quot;&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Interface_Builder&quot;&gt;Interface Builder&lt;/a&gt; is one of the most amazing software ever written. After 25 years (and hardly anything added to it), it is still relevant and still a GUI designer far ahead of the competion. Just let me know if you know any other piece of software that was designed 25 years ago and is still relevant today, pretty much unchanged.&lt;/p&gt;
&lt;p&gt;When I discovered IB in 1990, I was in owe. Not only could you build incredible GUIs effortlessly (at least for the time), but IB was also an Injection Dependency Framework more than a decade ahead of Spring. It forever set the tone of my career, anchoring it in the model-driven world, building software that builts software.&lt;/p&gt;
&lt;p&gt;That being said, I built &lt;a href=&quot;http://www.canappi.com&quot;&gt;Canappi&lt;/a&gt; to address a number of shortcomings which would be expected since IB was never designed to build mobile solutions and to a large extend it shows.&lt;/p&gt;
&lt;p&gt;1. &lt;em&gt;Canappi&#039;s mdsl describes the entire application &lt;a href=&quot;http://www.canappi.com/pages/mdsl-kitchensink&quot;&gt;in a single file&lt;/a&gt;&lt;/em&gt;: XIB files have all kinds of granularity and are generally loaded individually at different locations, directly from the code. It makes it quite dificult to have a comprehensive view of the application.&lt;/p&gt;
&lt;p&gt;2. &lt;em&gt;Canappi introduces the concept of &lt;a href=&quot;http://www.canappi.com/pages/layout&quot;&gt;Layout&lt;/a&gt;, as a set of controls, which can be reused across different views&lt;/em&gt;: IB does not allow you to reuse groups of controls easily, this has to be dealt in code, not at the view definition time.&lt;/p&gt;
&lt;p&gt;3. &lt;em&gt;Canappi offers &lt;a href=&quot;http://www.canappi.com/pages/action&quot;&gt;standard actions&lt;/a&gt; (call a number, send an email, navigate to a view, present/dismiss a view...)&lt;/em&gt;: IB doesn&#039;t have any notion of standard actions, in particular navigation actions, so you have to go back in code to implement things that could be easily dealt with at the model level, in the GUI definition&lt;/p&gt;
&lt;p&gt;4. &lt;em&gt;Canappi has introduced the concept of &lt;a href=&quot;http://www.canappi.com/pages/style&quot;&gt;stylesheets&lt;/a&gt;&lt;/em&gt;: IB does not have a simple way to reuse a set of properties across the definition of several controls (TextField, Label, Button...)&lt;/p&gt;
&lt;p&gt;5. &lt;em&gt;Canappi&#039;s programming model include &lt;a href=&quot;http://www.canappi.com/pages/connection&quot;&gt;Web API definitions&lt;/a&gt; which can be bound to layout and actions&lt;/em&gt;: How many mobile apps need to talk to some kind of Web API? Unfortunately IB, which was build 25 years ago, knows nothing about them. With Canappi you can create a client view of a Web API (Connection), and bind operations to individual layouts, including tables and actions. Canappi generates the code to assemble the Web API request, parse the response (XML or JSON) and bind it to the controls of a View.&lt;/p&gt;
&lt;p&gt;6. &lt;em&gt;Canappi&#039;s can easily specify the layout of a table&lt;/em&gt;: When you drag and drop a table in a XIB file, you get, a table. You have no way to declaratively define what the table row is made of.&lt;/p&gt;
&lt;p&gt;7. &lt;em&gt;Canappi defines the whole wiring of an application, from Splash screen to Menu to every aspect of Navigation (navigation bar, navigation actions, dialogs...):&lt;/em&gt; Apple recently added &lt;a href=&quot;http://mobile.tutsplus.com/tutorials/iphone/ios-5-sdk-storyboards/&quot;&gt;Storyboards&lt;/a&gt;, but that mechanism doesn&#039;t scale very well if you application is more than a few views.&lt;/p&gt;
&lt;p&gt;8. &lt;em&gt;Canappi makes the process of designing Universal Binary easy, you can define both the &lt;a href=&quot;http://www.canappi.com/pages/layout&quot;&gt;iPhone and iPad layouts&lt;/a&gt;. Each layout is independent of each other which allows you to define different navigation schemes as well&lt;/em&gt; (of course the remainder of the definitions are shared between the two: connections, styles, ...): IB knows nothing about different form factors running the same application. Again, 25 years ago, this was not a common usage pattern.&lt;/p&gt;
&lt;p&gt;9. &lt;em&gt;Canappi has a much richer palette of controls&lt;/em&gt;: Graph (Core-Plot), Gallery, RadioButtons (yes IB doesn&#039;t have radio buttons for iOS), Button Triggered Pickers and Date Pickers, Video Player, ...&lt;/p&gt;
&lt;p&gt;10. With &lt;em&gt;Canappi you can use Interface Builder to create Android layouts&lt;/em&gt;. We convert Interface Builder files into mdsl, which can be used to generate both iOS and Android applications.&lt;/p&gt;
&lt;p&gt;Canappi&#039;s mdsl is also a textual language which you can easily  version, compare and merge, even create libraries of resuable  application definition. IB on the other hand is a graphical tool which is ideal to position controls on a view, but far less than ideal to manage an entire application.&lt;/p&gt;
&lt;p&gt;In fact, mdsl, Canappi&#039;s programming model, is so complete today that you can now write entire applications from it, something that is impossible to do with Interface Builder. &lt;a href=&quot;http://itunes.apple.com/us/app/rise-global/id509266027?mt=8&quot;&gt;This app&lt;/a&gt; was built with 700 lines of mdsl and less than 50 lines of custom code.&lt;/p&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;http://www.ebpml.org/blog2/index.php/2012/03/26/the-ten-things-canappi-does&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<div style="float: left; margin-right: 20px;">
<div class="addthis_toolbox addthis_default_style "><a class="addthis_counter addthis_pill_style"></a></div>
<script src="http://s7.addthis.com/js/250/addthis_widget.js#username=xa-4cf41f0f23f56dc2" type="text/javascript"></script>
</div>
<div style="float: left;"><a class="twitter-share-button" href="http://twitter.com/share">Tweet</a>
<script src="http://platform.twitter.com/widgets.js" type="text/javascript"></script>
</div>
<div style="float: left;">
<script src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script>
</div>
<p><a href="http://en.wikipedia.org/wiki/Interface_Builder">Interface Builder</a> is one of the most amazing software ever written. After 25 years (and hardly anything added to it), it is still relevant and still a GUI designer far ahead of the competion. Just let me know if you know any other piece of software that was designed 25 years ago and is still relevant today, pretty much unchanged.</p>
<p>When I discovered IB in 1990, I was in owe. Not only could you build incredible GUIs effortlessly (at least for the time), but IB was also an Injection Dependency Framework more than a decade ahead of Spring. It forever set the tone of my career, anchoring it in the model-driven world, building software that builts software.</p>
<p>That being said, I built <a href="http://www.canappi.com">Canappi</a> to address a number of shortcomings which would be expected since IB was never designed to build mobile solutions and to a large extend it shows.</p>
<p>1. <em>Canappi's mdsl describes the entire application <a href="http://www.canappi.com/pages/mdsl-kitchensink">in a single file</a></em>: XIB files have all kinds of granularity and are generally loaded individually at different locations, directly from the code. It makes it quite dificult to have a comprehensive view of the application.</p>
<p>2. <em>Canappi introduces the concept of <a href="http://www.canappi.com/pages/layout">Layout</a>, as a set of controls, which can be reused across different views</em>: IB does not allow you to reuse groups of controls easily, this has to be dealt in code, not at the view definition time.</p>
<p>3. <em>Canappi offers <a href="http://www.canappi.com/pages/action">standard actions</a> (call a number, send an email, navigate to a view, present/dismiss a view...)</em>: IB doesn't have any notion of standard actions, in particular navigation actions, so you have to go back in code to implement things that could be easily dealt with at the model level, in the GUI definition</p>
<p>4. <em>Canappi has introduced the concept of <a href="http://www.canappi.com/pages/style">stylesheets</a></em>: IB does not have a simple way to reuse a set of properties across the definition of several controls (TextField, Label, Button...)</p>
<p>5. <em>Canappi's programming model include <a href="http://www.canappi.com/pages/connection">Web API definitions</a> which can be bound to layout and actions</em>: How many mobile apps need to talk to some kind of Web API? Unfortunately IB, which was build 25 years ago, knows nothing about them. With Canappi you can create a client view of a Web API (Connection), and bind operations to individual layouts, including tables and actions. Canappi generates the code to assemble the Web API request, parse the response (XML or JSON) and bind it to the controls of a View.</p>
<p>6. <em>Canappi's can easily specify the layout of a table</em>: When you drag and drop a table in a XIB file, you get, a table. You have no way to declaratively define what the table row is made of.</p>
<p>7. <em>Canappi defines the whole wiring of an application, from Splash screen to Menu to every aspect of Navigation (navigation bar, navigation actions, dialogs...):</em> Apple recently added <a href="http://mobile.tutsplus.com/tutorials/iphone/ios-5-sdk-storyboards/">Storyboards</a>, but that mechanism doesn't scale very well if you application is more than a few views.</p>
<p>8. <em>Canappi makes the process of designing Universal Binary easy, you can define both the <a href="http://www.canappi.com/pages/layout">iPhone and iPad layouts</a>. Each layout is independent of each other which allows you to define different navigation schemes as well</em> (of course the remainder of the definitions are shared between the two: connections, styles, ...): IB knows nothing about different form factors running the same application. Again, 25 years ago, this was not a common usage pattern.</p>
<p>9. <em>Canappi has a much richer palette of controls</em>: Graph (Core-Plot), Gallery, RadioButtons (yes IB doesn't have radio buttons for iOS), Button Triggered Pickers and Date Pickers, Video Player, ...</p>
<p>10. With <em>Canappi you can use Interface Builder to create Android layouts</em>. We convert Interface Builder files into mdsl, which can be used to generate both iOS and Android applications.</p>
<p>Canappi's mdsl is also a textual language which you can easily  version, compare and merge, even create libraries of resuable  application definition. IB on the other hand is a graphical tool which is ideal to position controls on a view, but far less than ideal to manage an entire application.</p>
<p>In fact, mdsl, Canappi's programming model, is so complete today that you can now write entire applications from it, something that is impossible to do with Interface Builder. <a href="http://itunes.apple.com/us/app/rise-global/id509266027?mt=8">This app</a> was built with 700 lines of mdsl and less than 50 lines of custom code.</p><div class="item_footer"><p><small><a href="http://www.ebpml.org/blog2/index.php/2012/03/26/the-ten-things-canappi-does">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>http://www.ebpml.org/blog2/index.php/2012/03/26/the-ten-things-canappi-does#comments</comments>
			<wfw:commentRss>http://www.ebpml.org/blog2/index.php?tempskin=_rss2&#38;disp=comments&#38;p=107</wfw:commentRss>
		</item>
				<item>
			<title>Developing Mobile Applications with MongoDB, MongoLab and Canappi</title>
			<link>http://www.ebpml.org/blog2/index.php/2012/03/18/developing-mobile-applications-with-mongodb</link>
			<pubDate>Mon, 19 Mar 2012 03:55:00 +0000</pubDate>			<dc:creator>jdubray</dc:creator>
			<category domain="main">android</category>			<guid isPermaLink="false">105@http://www.ebpml.org/blog2/</guid>
						<description>&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;http://www.ebpml.org/blog2/index.php/2012/03/18/developing-mobile-applications-with-mongodb&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<div class="item_footer"><p><small><a href="http://www.ebpml.org/blog2/index.php/2012/03/18/developing-mobile-applications-with-mongodb">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>http://www.ebpml.org/blog2/index.php/2012/03/18/developing-mobile-applications-with-mongodb#comments</comments>
			<wfw:commentRss>http://www.ebpml.org/blog2/index.php?tempskin=_rss2&#38;disp=comments&#38;p=105</wfw:commentRss>
		</item>
				<item>
			<title>Mobile Diet</title>
			<link>http://www.ebpml.org/blog2/index.php/2012/03/10/mobile-diet</link>
			<pubDate>Sat, 10 Mar 2012 22:26:00 +0000</pubDate>			<dc:creator>jdubray</dc:creator>
			<category domain="main">android</category>			<guid isPermaLink="false">104@http://www.ebpml.org/blog2/</guid>
						<description>&lt;div&gt;&lt;div&gt;&lt;a href=&quot;http://www.ebpml.org/blog2/media/blogs/CarnetsdeBord/IMG_0168.jpg?mtime=1331415479&quot; rel=&quot;lightbox[p104]&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ebpml.org/blog2/media/blogs/CarnetsdeBord/./.evocache/IMG_0168.jpg/fit-320x320.jpg?mtime=1331415479&quot; width=&quot;320&quot; height=&quot;240&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://www.ebpml.org/blog2/media/blogs/CarnetsdeBord/IMG_0169.jpg?mtime=1331415465&quot; rel=&quot;lightbox[p104]&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ebpml.org/blog2/media/blogs/CarnetsdeBord/./.evocache/IMG_0169.jpg/fit-320x320.jpg?mtime=1331415465&quot; width=&quot;320&quot; height=&quot;240&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;float: left; margin-right: 20px;&quot;&gt;
&lt;div class=&quot;addthis_toolbox addthis_default_style &quot;&gt;&lt;a class=&quot;addthis_counter addthis_pill_style&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;script src=&quot;http://s7.addthis.com/js/250/addthis_widget.js#username=xa-4cf41f0f23f56dc2&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;div style=&quot;float: left;&quot;&gt;&lt;a class=&quot;twitter-share-button&quot; href=&quot;http://twitter.com/share&quot;&gt;Tweet&lt;/a&gt;
&lt;script src=&quot;http://platform.twitter.com/widgets.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;div style=&quot;float: left;&quot;&gt;
&lt;script src=&quot;http://connect.facebook.net/en_US/all.js#xfbml=1&quot;&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;p&gt;No, I am not going to leave my iPhone or iPad alone for some months or scale down on using them. I am really talking about food diets. A completely different topic. As most people probably guessed by now, I am a gadget junky. I don&#039;t buy big toys (like cars), but occasionally, I like to have the latest gadget, just because it&#039;s cool.   So I invested last June in a &lt;a href=&quot;http://www.withings.com&quot;&gt;Withings&lt;/a&gt; scale. This is a beautiful equipment, easy to set up and completely seamless to operate for the whole family. You step on the scale and it wirelessly sends you data to their server. You can diplay graphs and data on your favorite mobile phone or tablet.&lt;/p&gt;
&lt;p&gt;Last November I reached 240 pounds (109 Kg). I never weighted as much before and when I saw &lt;a href=&quot;http://imedia.emn.fr/podcast/JeudisModeles/jeanjaquesdubray-by.m4v&quot;&gt;the video of a talk I gave&lt;/a&gt; at l&#039;Ecole des Mines de Nantes, I felt it was time to do something. But What ? yes eat less / better, exercise, ...&lt;/p&gt;
&lt;p&gt;I have lost lots of weight twice in my life: by exercising for a whole summer and after I got maried when my wife cooked specials low cal meals. Today with two kids, jobs, and other stuff going on, we tried, but neither were really an option. Sure there are millions of diets out there and nothing I could do really worked.&lt;/p&gt;
&lt;p&gt;I even bought a &lt;a href=&quot;http://www.fitbit.com&quot;&gt;fitbit&lt;/a&gt; to understand how much more I would have to exercise.&amp;#160; I would not recommend anyone buying this device, this is the most expensive useless gadget I ever bought ($99). It is basically a glorified pedometer and nothing more.&lt;/p&gt;
&lt;p&gt;So since the end of November, in about 3 months, I lost 22 pounds (10 kg), but what&#039;s most important is that the withings scale taught me how to eat and ultimately how to control my weight. So basically I dropped calories from my meals until my weight started going south. I lost all this weight without going to the gym or starving. As you can see in the graph below, when I got the scale in June, I somehow eat a bit less, but my weight crawled up until November without really understanding why. I was fighting it, but without much success.&lt;/p&gt;
&lt;p&gt;So here is my diet (I am sure you can find yours):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I eat the same thing at Breakfast and Lunch everyday: &lt;br /&gt; 
&lt;ul&gt;
&lt;li&gt;An 8 grain roll and a coffee at Starbucks and a Honey Oat Veggy sandwich at Subway. &lt;/li&gt;
&lt;li&gt;When I get home around five I eat a fruit or a yogurt. &lt;/li&gt;
&lt;li&gt;I eat whatever on the table (but small portions) with the family in the evening. &lt;/li&gt;
&lt;li&gt;If I can also do a veggy sandwich in the evening I do it (in case we are out running errands). &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Weigh yourself everyday, my weight curve was a huge motivator &lt;/li&gt;
&lt;li&gt;Walk a bit more here and there&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I never felt hungry the whole time.&lt;/p&gt;
&lt;p&gt;That&#039;s it, nothing else, nothing more. No need to buy a book or tapes, cook special meals, kill yourself at the gym, weight anything. Each time I did a &quot;real meal&quot; you can see a step in the curve. This is when we had friends at home or we went out.&lt;/p&gt;
&lt;p&gt;Yes, and my blood pressure went down too. I am still heavy (99 Kg) so I expected it will drop more on my way to 80 Kg.&lt;/p&gt;
&lt;p&gt;So what I learned?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Eating out is bad, really bad for your health. We used to eat out at least twice a week, not to mention lunch. I am sorry to say that to the millions of restaurant and fast food owner, but what is convenient and fun is basically a silent killer. &lt;br /&gt; 
&lt;ul&gt;
&lt;li&gt;SCHOOLS MUST ABSOLUTELY OFFER A LOW CAL ALTERNATIVE TO BREAKFAST AND LUNCH&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;It is amazing to see how few resources the human body can use to run all day  
&lt;ul&gt;
&lt;li&gt;I can&#039;t imagine how much food is wasted each day for absolutely no reason&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Salt does bring your blood pressure up&lt;/li&gt;
&lt;li&gt;I know today how to control my weight for life. &lt;strong&gt;This is priceless. &lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Yes, my energy levels are very high, I feel really good and every morning I can&#039;t &quot;weight&quot; to jump on the scale.&lt;/p&gt;
&lt;p&gt;I hope you&#039;ll find that helpful.&lt;/p&gt;
&lt;p&gt;Just in case you wonder, I am the biggest loser in the family and I am trying to convince my kids and wife to do the same thing.&lt;/p&gt;&lt;a href=&quot;http://www.ebpml.org/blog2/index.php/2012/03/10/mobile-diet#more104&quot;&gt;Full story &amp;raquo;&lt;/a&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;http://www.ebpml.org/blog2/index.php/2012/03/10/mobile-diet&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<div><div><a href="http://www.ebpml.org/blog2/media/blogs/CarnetsdeBord/IMG_0168.jpg?mtime=1331415479" rel="lightbox[p104]"><img alt="" src="http://www.ebpml.org/blog2/media/blogs/CarnetsdeBord/./.evocache/IMG_0168.jpg/fit-320x320.jpg?mtime=1331415479" width="320" height="240" /></a></div><div><a href="http://www.ebpml.org/blog2/media/blogs/CarnetsdeBord/IMG_0169.jpg?mtime=1331415465" rel="lightbox[p104]"><img alt="" src="http://www.ebpml.org/blog2/media/blogs/CarnetsdeBord/./.evocache/IMG_0169.jpg/fit-320x320.jpg?mtime=1331415465" width="320" height="240" /></a></div></div><div style="float: left; margin-right: 20px;">
<div class="addthis_toolbox addthis_default_style "><a class="addthis_counter addthis_pill_style"></a></div>
<script src="http://s7.addthis.com/js/250/addthis_widget.js#username=xa-4cf41f0f23f56dc2" type="text/javascript"></script>
</div>
<div style="float: left;"><a class="twitter-share-button" href="http://twitter.com/share">Tweet</a>
<script src="http://platform.twitter.com/widgets.js" type="text/javascript"></script>
</div>
<div style="float: left;">
<script src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script>
</div>
<p>No, I am not going to leave my iPhone or iPad alone for some months or scale down on using them. I am really talking about food diets. A completely different topic. As most people probably guessed by now, I am a gadget junky. I don't buy big toys (like cars), but occasionally, I like to have the latest gadget, just because it's cool.   So I invested last June in a <a href="http://www.withings.com">Withings</a> scale. This is a beautiful equipment, easy to set up and completely seamless to operate for the whole family. You step on the scale and it wirelessly sends you data to their server. You can diplay graphs and data on your favorite mobile phone or tablet.</p>
<p>Last November I reached 240 pounds (109 Kg). I never weighted as much before and when I saw <a href="http://imedia.emn.fr/podcast/JeudisModeles/jeanjaquesdubray-by.m4v">the video of a talk I gave</a> at l'Ecole des Mines de Nantes, I felt it was time to do something. But What ? yes eat less / better, exercise, ...</p>
<p>I have lost lots of weight twice in my life: by exercising for a whole summer and after I got maried when my wife cooked specials low cal meals. Today with two kids, jobs, and other stuff going on, we tried, but neither were really an option. Sure there are millions of diets out there and nothing I could do really worked.</p>
<p>I even bought a <a href="http://www.fitbit.com">fitbit</a> to understand how much more I would have to exercise.&#160; I would not recommend anyone buying this device, this is the most expensive useless gadget I ever bought ($99). It is basically a glorified pedometer and nothing more.</p>
<p>So since the end of November, in about 3 months, I lost 22 pounds (10 kg), but what's most important is that the withings scale taught me how to eat and ultimately how to control my weight. So basically I dropped calories from my meals until my weight started going south. I lost all this weight without going to the gym or starving. As you can see in the graph below, when I got the scale in June, I somehow eat a bit less, but my weight crawled up until November without really understanding why. I was fighting it, but without much success.</p>
<p>So here is my diet (I am sure you can find yours):</p>
<ul>
<li>I eat the same thing at Breakfast and Lunch everyday: <br /> 
<ul>
<li>An 8 grain roll and a coffee at Starbucks and a Honey Oat Veggy sandwich at Subway. </li>
<li>When I get home around five I eat a fruit or a yogurt. </li>
<li>I eat whatever on the table (but small portions) with the family in the evening. </li>
<li>If I can also do a veggy sandwich in the evening I do it (in case we are out running errands). </li>
</ul>
</li>
<li>Weigh yourself everyday, my weight curve was a huge motivator </li>
<li>Walk a bit more here and there</li>
</ul>
<p>I never felt hungry the whole time.</p>
<p>That's it, nothing else, nothing more. No need to buy a book or tapes, cook special meals, kill yourself at the gym, weight anything. Each time I did a "real meal" you can see a step in the curve. This is when we had friends at home or we went out.</p>
<p>Yes, and my blood pressure went down too. I am still heavy (99 Kg) so I expected it will drop more on my way to 80 Kg.</p>
<p>So what I learned?</p>
<ul>
<li>Eating out is bad, really bad for your health. We used to eat out at least twice a week, not to mention lunch. I am sorry to say that to the millions of restaurant and fast food owner, but what is convenient and fun is basically a silent killer. <br /> 
<ul>
<li>SCHOOLS MUST ABSOLUTELY OFFER A LOW CAL ALTERNATIVE TO BREAKFAST AND LUNCH</li>
</ul>
</li>
<li>It is amazing to see how few resources the human body can use to run all day  
<ul>
<li>I can't imagine how much food is wasted each day for absolutely no reason</li>
</ul>
</li>
<li>Salt does bring your blood pressure up</li>
<li>I know today how to control my weight for life. <strong>This is priceless. </strong></li>
</ul>
<p>Yes, my energy levels are very high, I feel really good and every morning I can't "weight" to jump on the scale.</p>
<p>I hope you'll find that helpful.</p>
<p>Just in case you wonder, I am the biggest loser in the family and I am trying to convince my kids and wife to do the same thing.</p><a href="http://www.ebpml.org/blog2/index.php/2012/03/10/mobile-diet#more104">Full story &raquo;</a><div class="item_footer"><p><small><a href="http://www.ebpml.org/blog2/index.php/2012/03/10/mobile-diet">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>http://www.ebpml.org/blog2/index.php/2012/03/10/mobile-diet#comments</comments>
			<wfw:commentRss>http://www.ebpml.org/blog2/index.php?tempskin=_rss2&#38;disp=comments&#38;p=104</wfw:commentRss>
		</item>
				<item>
			<title>Arche</title>
			<link>http://www.ebpml.org/blog2/index.php/2012/02/23/software-what-architecture</link>
			<pubDate>Fri, 24 Feb 2012 05:13:00 +0000</pubDate>			<dc:creator>jdubray</dc:creator>
			<category domain="main">MDE</category>			<guid isPermaLink="false">103@http://www.ebpml.org/blog2/</guid>
						<description>&lt;div style=&quot;float: left; margin-right: 20px;&quot;&gt;
&lt;div class=&quot;addthis_toolbox addthis_default_style &quot;&gt;&lt;a class=&quot;addthis_counter addthis_pill_style&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;script src=&quot;http://s7.addthis.com/js/250/addthis_widget.js#username=xa-4cf41f0f23f56dc2&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;div style=&quot;float: left;&quot;&gt;&lt;a class=&quot;twitter-share-button&quot; href=&quot;http://twitter.com/share&quot;&gt;Tweet&lt;/a&gt;
&lt;script src=&quot;http://platform.twitter.com/widgets.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;div style=&quot;float: left;&quot;&gt;
&lt;script src=&quot;http://connect.facebook.net/en_US/all.js#xfbml=1&quot;&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;p&gt;Subbu wrote a post earlier this month on the &lt;a href=&quot;http://www.subbu.org/blog/2012/02/architect-overrated&quot;&gt;Architect role&lt;/a&gt;, here he goes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;You always talk about the big picture.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;You think you know how the system ought to be built.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;You are unhappy that the team is not executing your ideas the way you want them.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;You don&amp;#8217;t have a working build.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;You spend a lot of time on documents that are not code.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;You can prototype &amp;#8211; but your code is not production worthy.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;You spend too much time in meetings.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;The best code you wrote is a few years old.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;When asked for opinions you tend to speak in general terms.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Your team members secretly joke about you.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;You start to take analysts and tech blogs too seriously.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;You are a dinosaur.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It&#039;s hard to disagree, though I find the list widely incomplete, specially when it comes to &quot;everyone but your mum has an opinion on what the architecture should be&quot;, &quot;vendors tell your boss you suck at archicture (unless you buy their product)&quot;...&lt;/p&gt;
&lt;p&gt;I am a bit more at odds with his conclusion: &lt;strong&gt;Code. Don&amp;#8217;t wiki. Don&amp;#8217;t powerpoint.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;To code or not to code, that seems to be the question: in our industry these days, you code, therefore you are.&lt;/p&gt;
&lt;p&gt;Just take any interview with Microsoft, Amazon, Facebook, Google ... and you&#039;ll face insipid Comp Sci 101 questions such as: how do you compare two binary trees? So, you bring 25 years of experience and passion, and the best and first thing these companies can do is to have a 25 year old kid ask you to write 5 lines of code. Everything else you have done is irrelevant. That is &lt;a href=&quot;http://www.sesamestreet.org/parents/theshow/episodes/elmos-world&quot;&gt;Subbu&#039;s world&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Allow me to take a real example to illustrate how a &quot;coder&quot; architects. A few years ago I was invited at Microsoft for a pubic event, and in a rare insight, a Microsoft architect was proudly explaining why Windows 2003 (R1 if I recall correctly) did not scale as a web server? The developer in charge of the connection manager had used a&amp;#160; ... linked list to manage the connections. I bet this guy had brilliantly passed all the interview CS 101 questions ... Shall we also speak about the kids at Facebook &lt;a href=&quot;http://online.wsj.com/article/SB10001424052702304772804575558484075236968.html&quot;&gt;who code your privacy away&lt;/a&gt;? Isn&#039;t a primary key a convenient way to fetch your favorite piece of information?&lt;/p&gt;
&lt;p&gt;The reality, is that Subbu makes the deeply and totally erroneous assumption that we have reached a level of maturity that gives us the perfect communication tools and hence with that in mind of course, writing code shall be the answer.&lt;/p&gt;
&lt;p&gt;If you think that a) communicating, b) how and c) when you communicate is irrelevant, I would strongly suggest you watch &lt;a href=&quot;http://vimeo.com/36579366&quot;&gt;this presentation&lt;/a&gt; from start to finish. Don&#039;t get me wrong, coding is great, I love coding, specially &lt;a href=&quot;http://www.canappi.com&quot;&gt;metaprogramming&lt;/a&gt;, but the question still remains, is an architect, JUST-A developer, hence Archaic, or is his or her role more essential (as in essence), i.e an Archetype ?&lt;/p&gt;
&lt;p&gt;Why not think out of the &lt;span style=&quot;text-decoration: line-through;&quot;&gt;box&lt;/span&gt; slide for once? beyond the trees, and the queues, the arrays and the lists, the maps and the sets? Why not ask how Model Driven Engineering could shape the role of an architect and establish a strong and precise articulation between architecture and coding? and with it, enable architecture refactoring ...&lt;/p&gt;
&lt;p&gt;Let&#039;s review Subbu&#039;s list in the light of MDE:&lt;/p&gt;
&lt;table style=&quot;border: 0pt solid #000000;&quot; border=&quot;1&quot; cellpadding=&quot;5&quot; align=&quot;left&quot;&gt;
&lt;tbody&gt;
&lt;tr align=&quot;left&quot; valign=&quot;top&quot;&gt;
&lt;td align=&quot;left&quot; valign=&quot;top&quot;&gt;&lt;em&gt;You always talk about the big picture&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;In MDE, you talk about &lt;a href=&quot;http://www.ebpml.org/blog/130.htm&quot;&gt;the Solution Model&lt;/a&gt; with the highest degree of precision possible. There is no &quot;big&quot; picture, there is an objective, traceable representation of the blueprint of what you are building.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr align=&quot;left&quot; valign=&quot;top&quot;&gt;
&lt;td&gt;&lt;em&gt;You think you know how the system ought to be built&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;&lt;em&gt; &lt;/em&gt;You don&#039;t know, with MDE you rapidly try different technical architectures and enable &lt;a href=&quot;http://www.infoq.com/interviews/michael-stal-on-architecture-refactoring&quot;&gt;architecture refactoring&lt;/a&gt;, just in case.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr align=&quot;left&quot; valign=&quot;top&quot;&gt;
&lt;td&gt;&lt;em&gt;You are unhappy that the team is not executing your ideas the way you want them&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;A solution model can go a very long way in bringing people on the same  page and eventually, the quicker you get on the same page, the faster  you execute. Heck, you can even implement part of the solution model  yourself.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;left&quot; valign=&quot;top&quot;&gt;&lt;em&gt;You don&amp;#8217;t have a working build&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;With MDE, the build starts with the solution model&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr align=&quot;left&quot; valign=&quot;top&quot;&gt;
&lt;td&gt;&lt;em&gt;You spend a lot of time on documents that are not code&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;With MDE, you spend all your time having a meaningful impact on the code.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr align=&quot;left&quot; valign=&quot;top&quot;&gt;
&lt;td&gt;&lt;em&gt;You can prototype &amp;#8211; but your code is not production worthy&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;Your solution model is production worthy and drives the code of your team.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr align=&quot;left&quot; valign=&quot;top&quot;&gt;
&lt;td&gt;&lt;em&gt;You spend too much time in meetings &lt;/em&gt;&lt;/td&gt;
&lt;td&gt;you don&#039;t have to spend much time in meetings. With a clear solution  model, you facilitate meetings&amp;#160; and rapidly drive to the right  conclusion be it technical or functional. How many people &quot;scrumly&quot; hash  and rehash the same arguments for weeks, months and eventually request  to build something that is not what they had in mind while cutting the  scope to the bone, just to claim they shipped something? Who doesn&#039;t  want more precision in meetings?&lt;em&gt; &lt;/em&gt;Are PPTs or Wikis bringing that precision?&lt;em&gt; &lt;/em&gt;Is code bringing that precision?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr align=&quot;left&quot; valign=&quot;top&quot;&gt;
&lt;td&gt;&lt;em&gt;The best code you wrote is a few years old&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;Your best models are still ahead, you love what you do and you can&#039;t have enough of 24 hours per day.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr align=&quot;left&quot; valign=&quot;top&quot;&gt;
&lt;td&gt;&lt;em&gt;When asked for opinions you tend to speak in general terms&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;when asked your opinion, you can articulate your ideas and the ones of  others with the highest degree of precision, creating a clear  understanding of their architectural impact and the corresponding level  of effort.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr align=&quot;left&quot; valign=&quot;top&quot;&gt;
&lt;td&gt;&lt;em&gt;Your team members secretly joke about you&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;you feel part of the team and you communicate effectively your ideas.  The code developers write is 10x more interesting to write.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr align=&quot;left&quot; valign=&quot;top&quot;&gt;
&lt;td&gt;&lt;em&gt;You start to take analysts and tech blogs too seriously&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;Analysts and tech bloggers have not idea what MDE is, by the time they catch up, you&#039;ll be retired.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr align=&quot;left&quot; valign=&quot;top&quot;&gt;
&lt;td&gt;&lt;em&gt;You are a dinosaur&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;yeah right ...&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;Shall I also mention that the ultimate beauty of MDE is &quot;No Middleware&quot;?&lt;/p&gt;
&lt;p&gt;So, for a RESTafarian, &lt;a href=&quot;https://twitter.com/#!/sallamar/status/169293608405577728&quot;&gt;who recently admitted&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;Hypertext made a lot of sense when I was looking from the server. A few  months spent writing real-world client code changed all that.&lt;/blockquote&gt;
&lt;p&gt;I am not really sure that Subbu is in the position to teach us some lessons about what to do, or not to do. Very few &quot;Coders&quot; seek to understand the context in which they code, or poke up to the solution model, and I am not even talking about the problem model. So yes I am disappointed, but not surprised to see someone the caliber of Subbu, thinking that we have to return to the early sources (so to speak) of software engineering. The RESTafarians have already thrown us back 15 years, what&#039;s another 15 years on top of that?&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Arche&quot;&gt;It&#039;s time to let the Architect surface the Arche&lt;/a&gt; (In ancient Greek Philosophy, Aristotle foregrounded the meaning of &lt;strong&gt;arche&lt;/strong&gt; as the element or principle of a thing, which although undemonstrable  and intangible in itself, provides the conditions of the possibility of  that thing.)&lt;/p&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;http://www.ebpml.org/blog2/index.php/2012/02/23/software-what-architecture&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<div style="float: left; margin-right: 20px;">
<div class="addthis_toolbox addthis_default_style "><a class="addthis_counter addthis_pill_style"></a></div>
<script src="http://s7.addthis.com/js/250/addthis_widget.js#username=xa-4cf41f0f23f56dc2" type="text/javascript"></script>
</div>
<div style="float: left;"><a class="twitter-share-button" href="http://twitter.com/share">Tweet</a>
<script src="http://platform.twitter.com/widgets.js" type="text/javascript"></script>
</div>
<div style="float: left;">
<script src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script>
</div>
<p>Subbu wrote a post earlier this month on the <a href="http://www.subbu.org/blog/2012/02/architect-overrated">Architect role</a>, here he goes:</p>
<ul>
<li><em>You always talk about the big picture.</em></li>
<li><em>You think you know how the system ought to be built.</em></li>
<li><em>You are unhappy that the team is not executing your ideas the way you want them.</em></li>
<li><em>You don&#8217;t have a working build.</em></li>
<li><em>You spend a lot of time on documents that are not code.</em></li>
<li><em>You can prototype &#8211; but your code is not production worthy.</em></li>
<li><em>You spend too much time in meetings.</em></li>
<li><em>The best code you wrote is a few years old.</em></li>
<li><em>When asked for opinions you tend to speak in general terms.</em></li>
<li><em>Your team members secretly joke about you.</em></li>
<li><em>You start to take analysts and tech blogs too seriously.</em></li>
<li><em>You are a dinosaur.</em></li>
</ul>
<p>It's hard to disagree, though I find the list widely incomplete, specially when it comes to "everyone but your mum has an opinion on what the architecture should be", "vendors tell your boss you suck at archicture (unless you buy their product)"...</p>
<p>I am a bit more at odds with his conclusion: <strong>Code. Don&#8217;t wiki. Don&#8217;t powerpoint.</strong></p>
<p>To code or not to code, that seems to be the question: in our industry these days, you code, therefore you are.</p>
<p>Just take any interview with Microsoft, Amazon, Facebook, Google ... and you'll face insipid Comp Sci 101 questions such as: how do you compare two binary trees? So, you bring 25 years of experience and passion, and the best and first thing these companies can do is to have a 25 year old kid ask you to write 5 lines of code. Everything else you have done is irrelevant. That is <a href="http://www.sesamestreet.org/parents/theshow/episodes/elmos-world">Subbu's world</a>.</p>
<p>Allow me to take a real example to illustrate how a "coder" architects. A few years ago I was invited at Microsoft for a pubic event, and in a rare insight, a Microsoft architect was proudly explaining why Windows 2003 (R1 if I recall correctly) did not scale as a web server? The developer in charge of the connection manager had used a&#160; ... linked list to manage the connections. I bet this guy had brilliantly passed all the interview CS 101 questions ... Shall we also speak about the kids at Facebook <a href="http://online.wsj.com/article/SB10001424052702304772804575558484075236968.html">who code your privacy away</a>? Isn't a primary key a convenient way to fetch your favorite piece of information?</p>
<p>The reality, is that Subbu makes the deeply and totally erroneous assumption that we have reached a level of maturity that gives us the perfect communication tools and hence with that in mind of course, writing code shall be the answer.</p>
<p>If you think that a) communicating, b) how and c) when you communicate is irrelevant, I would strongly suggest you watch <a href="http://vimeo.com/36579366">this presentation</a> from start to finish. Don't get me wrong, coding is great, I love coding, specially <a href="http://www.canappi.com">metaprogramming</a>, but the question still remains, is an architect, JUST-A developer, hence Archaic, or is his or her role more essential (as in essence), i.e an Archetype ?</p>
<p>Why not think out of the <span style="text-decoration: line-through;">box</span> slide for once? beyond the trees, and the queues, the arrays and the lists, the maps and the sets? Why not ask how Model Driven Engineering could shape the role of an architect and establish a strong and precise articulation between architecture and coding? and with it, enable architecture refactoring ...</p>
<p>Let's review Subbu's list in the light of MDE:</p>
<table style="border: 0pt solid #000000;" border="1" cellpadding="5" align="left">
<tbody>
<tr align="left" valign="top">
<td align="left" valign="top"><em>You always talk about the big picture</em></td>
<td>In MDE, you talk about <a href="http://www.ebpml.org/blog/130.htm">the Solution Model</a> with the highest degree of precision possible. There is no "big" picture, there is an objective, traceable representation of the blueprint of what you are building.</td>
</tr>
<tr align="left" valign="top">
<td><em>You think you know how the system ought to be built</em></td>
<td><em> </em>You don't know, with MDE you rapidly try different technical architectures and enable <a href="http://www.infoq.com/interviews/michael-stal-on-architecture-refactoring">architecture refactoring</a>, just in case.</td>
</tr>
<tr align="left" valign="top">
<td><em>You are unhappy that the team is not executing your ideas the way you want them</em></td>
<td>A solution model can go a very long way in bringing people on the same  page and eventually, the quicker you get on the same page, the faster  you execute. Heck, you can even implement part of the solution model  yourself.</td>
</tr>
<tr>
<td align="left" valign="top"><em>You don&#8217;t have a working build</em></td>
<td>With MDE, the build starts with the solution model<br /></td>
</tr>
<tr align="left" valign="top">
<td><em>You spend a lot of time on documents that are not code</em></td>
<td>With MDE, you spend all your time having a meaningful impact on the code.</td>
</tr>
<tr align="left" valign="top">
<td><em>You can prototype &#8211; but your code is not production worthy</em></td>
<td>Your solution model is production worthy and drives the code of your team.</td>
</tr>
<tr align="left" valign="top">
<td><em>You spend too much time in meetings </em></td>
<td>you don't have to spend much time in meetings. With a clear solution  model, you facilitate meetings&#160; and rapidly drive to the right  conclusion be it technical or functional. How many people "scrumly" hash  and rehash the same arguments for weeks, months and eventually request  to build something that is not what they had in mind while cutting the  scope to the bone, just to claim they shipped something? Who doesn't  want more precision in meetings?<em> </em>Are PPTs or Wikis bringing that precision?<em> </em>Is code bringing that precision?</td>
</tr>
<tr align="left" valign="top">
<td><em>The best code you wrote is a few years old</em></td>
<td>Your best models are still ahead, you love what you do and you can't have enough of 24 hours per day.</td>
</tr>
<tr align="left" valign="top">
<td><em>When asked for opinions you tend to speak in general terms</em></td>
<td>when asked your opinion, you can articulate your ideas and the ones of  others with the highest degree of precision, creating a clear  understanding of their architectural impact and the corresponding level  of effort.</td>
</tr>
<tr align="left" valign="top">
<td><em>Your team members secretly joke about you</em></td>
<td>you feel part of the team and you communicate effectively your ideas.  The code developers write is 10x more interesting to write.</td>
</tr>
<tr align="left" valign="top">
<td><em>You start to take analysts and tech blogs too seriously</em></td>
<td>Analysts and tech bloggers have not idea what MDE is, by the time they catch up, you'll be retired.</td>
</tr>
<tr align="left" valign="top">
<td><em>You are a dinosaur</em></td>
<td>yeah right ...</td>
</tr>
</tbody>
</table>
<br />
<br />
<p>Shall I also mention that the ultimate beauty of MDE is "No Middleware"?</p>
<p>So, for a RESTafarian, <a href="https://twitter.com/#!/sallamar/status/169293608405577728">who recently admitted</a>:</p>
<blockquote>Hypertext made a lot of sense when I was looking from the server. A few  months spent writing real-world client code changed all that.</blockquote>
<p>I am not really sure that Subbu is in the position to teach us some lessons about what to do, or not to do. Very few "Coders" seek to understand the context in which they code, or poke up to the solution model, and I am not even talking about the problem model. So yes I am disappointed, but not surprised to see someone the caliber of Subbu, thinking that we have to return to the early sources (so to speak) of software engineering. The RESTafarians have already thrown us back 15 years, what's another 15 years on top of that?</p>
<p><a href="http://en.wikipedia.org/wiki/Arche">It's time to let the Architect surface the Arche</a> (In ancient Greek Philosophy, Aristotle foregrounded the meaning of <strong>arche</strong> as the element or principle of a thing, which although undemonstrable  and intangible in itself, provides the conditions of the possibility of  that thing.)</p><div class="item_footer"><p><small><a href="http://www.ebpml.org/blog2/index.php/2012/02/23/software-what-architecture">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>http://www.ebpml.org/blog2/index.php/2012/02/23/software-what-architecture#comments</comments>
			<wfw:commentRss>http://www.ebpml.org/blog2/index.php?tempskin=_rss2&#38;disp=comments&#38;p=103</wfw:commentRss>
		</item>
				<item>
			<title>Isn't it Time to Take another Look at MDE?</title>
			<link>http://www.ebpml.org/blog2/index.php/2012/02/13/isn-t-it-time-to</link>
			<pubDate>Mon, 13 Feb 2012 14:11:00 +0000</pubDate>			<dc:creator>jdubray</dc:creator>
			<category domain="main">MDE</category>
<category domain="alt">News</category>
<category domain="alt">Mobile</category>
<category domain="alt">Xtext</category>
<category domain="alt">iPhone</category>
<category domain="alt">MOP</category>
<category domain="alt">iPAd</category>			<guid isPermaLink="false">102@http://www.ebpml.org/blog2/</guid>
						<description>&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;div style=&quot;float: left; margin-right: 20px;&quot;&gt;
&lt;div class=&quot;addthis_toolbox addthis_default_style &quot;&gt;&lt;a class=&quot;addthis_counter addthis_pill_style&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;script src=&quot;http://s7.addthis.com/js/250/addthis_widget.js#username=xa-4cf41f0f23f56dc2&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;div style=&quot;float: left;&quot;&gt;&lt;a class=&quot;twitter-share-button&quot; href=&quot;http://twitter.com/share&quot;&gt;Tweet&lt;/a&gt;
&lt;script src=&quot;http://platform.twitter.com/widgets.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;div style=&quot;float: left;&quot;&gt;
&lt;script src=&quot;http://connect.facebook.net/en_US/all.js#xfbml=1&quot;&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;p&gt;I must admit, MDE is a joy to work with, especially as an architect. MDE allows you to express how a certain class of solutions should be built, far away from the intricacies of general purpose languages, conventional type systems and SDKs. It allows you to solve problems, in ways that simply would never have any room in a GPL world. I may never know if MDE would have changed the face of software engineering, but for an industry that has looked for the holy grail of programming languages for so long, a paradigm shift seems innevitable. If for nothing else, all our software development technologies and processes have been aligned along a &quot;monolithic&quot; assumption, when today solutions are composite and often requires several architecture variants to support to different use cases.&lt;/p&gt;
&lt;p&gt;Let me take 3 examples from the Canappi &lt;a href=&quot;http://www.canappi.com/pages/releases?t=announcing-canappi-12_02%2F12%2F2012_05%3A52_PM&quot; target=&quot;_blank&quot;&gt;1.2 release&lt;/a&gt;.  to show where and how MDE makes a powerful difference.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1) &lt;/strong&gt;&lt;strong&gt;MDE enables solution architecture variants&lt;/strong&gt; : one of the key features of 1.2 is an enhanced level of support for Universal   Binary iPad/iPhone applications. You can now define device specific   layouts which will be displayed when the application runs on that type   of device. The &lt;a href=&quot;http://www.canappi.com/pages/mdsl-kitchensink?t=announcing-canappi-12_02%2F12%2F2012_05%3A52_PM&quot; target=&quot;_blank&quot;&gt;kitchensink&lt;/a&gt; demo has been updated to take advantage of that feature. Here Canappi uses tablet variants, but it would be just as easy to add it for different orientations.&lt;/p&gt;
&lt;pre&gt;layout sessionDetailLayout_iPad {
    // iPad specific layout

}

layout sessionDetailLayout {
	text  sessionId	&#039;&#039; (-20,-20, 10,20) //hidden parameter
	text  sessionTitle &#039;&#039; (7, 45, 305, 65) { Left ; }
	text  sessionPresenter &#039;&#039; (7, 110,290, 20) { Left ; }
	
	tablet sessionDetailLayout_iPad ;
}

&lt;/pre&gt;
&lt;p&gt;There is simply no other mechanism that allows you to do that so elegantly because you are constrained by the underlying architecture of the&amp;#160; SDK you are building your solution onto. When you look at Apple and Android SDKs, you can clearly see that the support for different form factors simultaneously is an &quot;after-thought&quot;, not a key architectural foundation.&lt;/p&gt;
&lt;p&gt;Furthermore, any architectural deviation from a given SDK translates into lots of boiler plate code, scattered across the entire solution&#039;s code base. MDE completely hides this boiler plate code from the solution model.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2) MDE enables the creation/addition of new logic semantics&lt;/strong&gt;. Mobile apps often need to call more than one API to get the data you need to populate a user interface. For instance, when you need to display the thumbnails of a &lt;a href=&quot;http://www.canappi.com/pages/flickr&quot;&gt;Flickr gallery&lt;/a&gt;, you would think Yahoo&#039;s Web API GET /gallery/{id} would return all you need? wrong, it only returns some gallery information with just the photo ids, you need then to make a second call for each photo_id to get the thumbnail URLs to download the thumbnail image files.&lt;/p&gt;
&lt;p&gt;So in this case, not only do you need a solution architecture variant (call 2-N APIs given a call to a single API), but you also need to express the logic of that call. No mystery here, that kind of logic is probably a few thousand of years old, and in modern day computing, this is simply called a join:&lt;/p&gt;
&lt;pre&gt;	
connection flickr {

	operation init getPhotos GET &#039;&lt;a href=&quot;http://api.flickr.com/services/rest/?method=flickr.galleries.getPhotos&amp;amp;api_key=API_KEY&amp;amp;format=rest&amp;amp;gallery_id=GALLERY_ID&quot; target=&quot;_blank&quot;&gt;http://api.flickr.com/services/rest/?method=flickr.galleries.getPhotos&amp;amp;api_key=API_KEY&amp;amp;format=rest&amp;amp;gallery_id=GALLERY_ID&lt;/a&gt;&#039; {
		resultSet &#039;photos&#039; ;
		join getSizes on photo_id = id where _label = &#039;Square&#039;;
	}

	operation getSizes  GET &#039;&lt;a href=&quot;http://api.flickr.com/services/rest/?method=flickr.photos.getSizes&amp;amp;api_key=API_KEY&amp;amp;format=rest&quot; target=&quot;_blank&quot;&gt;http://api.flickr.com/services/rest/?method=flickr.photos.getSizes&amp;amp;api_key=API_KEY&amp;amp;format=rest&lt;/a&gt;&#039; photo_id {
		resultSet &#039;sizes&#039; ;
	}
}

&lt;/pre&gt;
&lt;p&gt;Yes, it&#039;s that simple ! With just a bit of code written once for Flickr and abstracted a tiny bit, I can implement most mashups.&lt;/p&gt;
&lt;p&gt;But that&#039;s not all, a &quot;side effect&quot; of MDE, in this case, is the ability to refactor your architecture. I happen to believe that mashups should mostly run on the client, unless there are some reason not to bring the data on the client (e.g. the end user is not allowed to see part of the data, bandwidth constraints...), but this point is irrelevant, there will always be the need to do some mashup both on the server or the client. Subbu&#039;s team has come up with a nice way to do that on the server side, &lt;a href=&quot;http://ql.io&quot;&gt;ql.io.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;So how would I enable such a massive architecture refactoring? a simple keyword and a tiny bit of code in the code generator (that generates ql.io scripts and some code on the client that invokes the mashup). I&#039;ll try to illustrate that for the next release.&lt;/p&gt;
&lt;pre&gt;join getSizes on photo_id = id where _label = &#039;Square&#039; &lt;span style=&quot;color: #ff9900;&quot;&gt;with qlio &lt;/span&gt;;

&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;3) MDE enables you to create solution oriented type systems&lt;/strong&gt;. Many would argue that the main purpose of a computer is not to &quot;compute&quot;, but to manage state persistently. One essential aspect of managing state is data structures and the building blocks of data structures are described by a type system.&lt;/p&gt;
&lt;p&gt;One of the challenges when building apps and mobile apps in general is that the UI is quite varied. Take the example of a Map for instance, it often comes with points of interest. How do you bind a data set to a Map such that it displays push pins? just like you want to display rows of values in a table or pictures and picture information in a gallery?&lt;/p&gt;
&lt;p&gt;In the case of Canappi we built a simple binding framework that lets you express that the result set from a Web API call is bound to a &quot;layout&quot; (a set of controls).&amp;#160; You can optionally use a fromKey / toKey mapping when the attribute names of the result set are different from the names of the control.&lt;/p&gt;
&lt;pre&gt;layout myMap bindings pointOfInterest with mapping aSimpleDataMapping ; 

&lt;/pre&gt;
&lt;p&gt;In this statement,pointOfInterest points to one (or more) APIs that gather the data that is automatically bound to the map control which supports binding to a single push pin (lat, long, title and subtitle) or an array of pushpins. The reason why we make it that simple, is because we took the decision early to normalize the response before we bind it to the UI, i.e. we built an implicit type to which Web API response formats map to, on one end, and from which UI views (with any control) bind to.&lt;/p&gt;
&lt;p&gt;Ok, I understand this is quite basic, but incredibly productive for at least 95% of the data that moves from a server to a client and back: I don&#039;t know any programming language that allows this type of consision (e.g. &lt;a href=&quot;http://www.canappi.com/pages/twitter&quot;&gt;a twitter app in 30 lines of code&lt;/a&gt;). Yet, hundreds of thousands of developers, every day, write some code that picks up some data from some kind of back-end API call and puts it in some kind of UI element.&lt;/p&gt;
&lt;p&gt;These examples are the bread and butter of MDE, they are very easy to implement and I would argue that they add less than 20-30% overhead to your first implementation of a variant, type of business logic or data binding. That means on your second implementation you already gained overall 20-30% of your time. So next time you look at the architecture of your solution why not ask these questions:&lt;/p&gt;
&lt;p&gt;a) Is there any variant in your solution architecture?&lt;/p&gt;
&lt;p&gt;b) Does your architecture deviates from the architecture of the underlying SDK / Platfrom on which it is built?&lt;/p&gt;
&lt;p&gt;c) Are you using some business logic that is not easy to express with the programming language that you are using?&lt;/p&gt;
&lt;p&gt;d) Would you benefit from extending the type system of your underlying programming model?&lt;/p&gt;
&lt;p&gt;If you answer yes, to one or more of these questions, I would certainly take a good look at MDE.&lt;/p&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;http://www.ebpml.org/blog2/index.php/2012/02/13/isn-t-it-time-to&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<p>&#160;</p>
<div style="float: left; margin-right: 20px;">
<div class="addthis_toolbox addthis_default_style "><a class="addthis_counter addthis_pill_style"></a></div>
<script src="http://s7.addthis.com/js/250/addthis_widget.js#username=xa-4cf41f0f23f56dc2" type="text/javascript"></script>
</div>
<div style="float: left;"><a class="twitter-share-button" href="http://twitter.com/share">Tweet</a>
<script src="http://platform.twitter.com/widgets.js" type="text/javascript"></script>
</div>
<div style="float: left;">
<script src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script>
</div>
<p>I must admit, MDE is a joy to work with, especially as an architect. MDE allows you to express how a certain class of solutions should be built, far away from the intricacies of general purpose languages, conventional type systems and SDKs. It allows you to solve problems, in ways that simply would never have any room in a GPL world. I may never know if MDE would have changed the face of software engineering, but for an industry that has looked for the holy grail of programming languages for so long, a paradigm shift seems innevitable. If for nothing else, all our software development technologies and processes have been aligned along a "monolithic" assumption, when today solutions are composite and often requires several architecture variants to support to different use cases.</p>
<p>Let me take 3 examples from the Canappi <a href="http://www.canappi.com/pages/releases?t=announcing-canappi-12_02%2F12%2F2012_05%3A52_PM" target="_blank">1.2 release</a>.  to show where and how MDE makes a powerful difference.</p>
<p><strong>1) </strong><strong>MDE enables solution architecture variants</strong> : one of the key features of 1.2 is an enhanced level of support for Universal   Binary iPad/iPhone applications. You can now define device specific   layouts which will be displayed when the application runs on that type   of device. The <a href="http://www.canappi.com/pages/mdsl-kitchensink?t=announcing-canappi-12_02%2F12%2F2012_05%3A52_PM" target="_blank">kitchensink</a> demo has been updated to take advantage of that feature. Here Canappi uses tablet variants, but it would be just as easy to add it for different orientations.</p>
<pre>layout sessionDetailLayout_iPad {
    // iPad specific layout

}

layout sessionDetailLayout {
	text  sessionId	'' (-20,-20, 10,20) //hidden parameter
	text  sessionTitle '' (7, 45, 305, 65) { Left ; }
	text  sessionPresenter '' (7, 110,290, 20) { Left ; }
	
	tablet sessionDetailLayout_iPad ;
}

</pre>
<p>There is simply no other mechanism that allows you to do that so elegantly because you are constrained by the underlying architecture of the&#160; SDK you are building your solution onto. When you look at Apple and Android SDKs, you can clearly see that the support for different form factors simultaneously is an "after-thought", not a key architectural foundation.</p>
<p>Furthermore, any architectural deviation from a given SDK translates into lots of boiler plate code, scattered across the entire solution's code base. MDE completely hides this boiler plate code from the solution model.</p>
<p><strong>2) MDE enables the creation/addition of new logic semantics</strong>. Mobile apps often need to call more than one API to get the data you need to populate a user interface. For instance, when you need to display the thumbnails of a <a href="http://www.canappi.com/pages/flickr">Flickr gallery</a>, you would think Yahoo's Web API GET /gallery/{id} would return all you need? wrong, it only returns some gallery information with just the photo ids, you need then to make a second call for each photo_id to get the thumbnail URLs to download the thumbnail image files.</p>
<p>So in this case, not only do you need a solution architecture variant (call 2-N APIs given a call to a single API), but you also need to express the logic of that call. No mystery here, that kind of logic is probably a few thousand of years old, and in modern day computing, this is simply called a join:</p>
<pre>	
connection flickr {

	operation init getPhotos GET '<a href="http://api.flickr.com/services/rest/?method=flickr.galleries.getPhotos&amp;api_key=API_KEY&amp;format=rest&amp;gallery_id=GALLERY_ID" target="_blank">http://api.flickr.com/services/rest/?method=flickr.galleries.getPhotos&amp;api_key=API_KEY&amp;format=rest&amp;gallery_id=GALLERY_ID</a>' {
		resultSet 'photos' ;
		join getSizes on photo_id = id where _label = 'Square';
	}

	operation getSizes  GET '<a href="http://api.flickr.com/services/rest/?method=flickr.photos.getSizes&amp;api_key=API_KEY&amp;format=rest" target="_blank">http://api.flickr.com/services/rest/?method=flickr.photos.getSizes&amp;api_key=API_KEY&amp;format=rest</a>' photo_id {
		resultSet 'sizes' ;
	}
}

</pre>
<p>Yes, it's that simple ! With just a bit of code written once for Flickr and abstracted a tiny bit, I can implement most mashups.</p>
<p>But that's not all, a "side effect" of MDE, in this case, is the ability to refactor your architecture. I happen to believe that mashups should mostly run on the client, unless there are some reason not to bring the data on the client (e.g. the end user is not allowed to see part of the data, bandwidth constraints...), but this point is irrelevant, there will always be the need to do some mashup both on the server or the client. Subbu's team has come up with a nice way to do that on the server side, <a href="http://ql.io">ql.io.</a></p>
<p>So how would I enable such a massive architecture refactoring? a simple keyword and a tiny bit of code in the code generator (that generates ql.io scripts and some code on the client that invokes the mashup). I'll try to illustrate that for the next release.</p>
<pre>join getSizes on photo_id = id where _label = 'Square' <span style="color: #ff9900;">with qlio </span>;

</pre>
<p><strong>3) MDE enables you to create solution oriented type systems</strong>. Many would argue that the main purpose of a computer is not to "compute", but to manage state persistently. One essential aspect of managing state is data structures and the building blocks of data structures are described by a type system.</p>
<p>One of the challenges when building apps and mobile apps in general is that the UI is quite varied. Take the example of a Map for instance, it often comes with points of interest. How do you bind a data set to a Map such that it displays push pins? just like you want to display rows of values in a table or pictures and picture information in a gallery?</p>
<p>In the case of Canappi we built a simple binding framework that lets you express that the result set from a Web API call is bound to a "layout" (a set of controls).&#160; You can optionally use a fromKey / toKey mapping when the attribute names of the result set are different from the names of the control.</p>
<pre>layout myMap bindings pointOfInterest with mapping aSimpleDataMapping ; 

</pre>
<p>In this statement,pointOfInterest points to one (or more) APIs that gather the data that is automatically bound to the map control which supports binding to a single push pin (lat, long, title and subtitle) or an array of pushpins. The reason why we make it that simple, is because we took the decision early to normalize the response before we bind it to the UI, i.e. we built an implicit type to which Web API response formats map to, on one end, and from which UI views (with any control) bind to.</p>
<p>Ok, I understand this is quite basic, but incredibly productive for at least 95% of the data that moves from a server to a client and back: I don't know any programming language that allows this type of consision (e.g. <a href="http://www.canappi.com/pages/twitter">a twitter app in 30 lines of code</a>). Yet, hundreds of thousands of developers, every day, write some code that picks up some data from some kind of back-end API call and puts it in some kind of UI element.</p>
<p>These examples are the bread and butter of MDE, they are very easy to implement and I would argue that they add less than 20-30% overhead to your first implementation of a variant, type of business logic or data binding. That means on your second implementation you already gained overall 20-30% of your time. So next time you look at the architecture of your solution why not ask these questions:</p>
<p>a) Is there any variant in your solution architecture?</p>
<p>b) Does your architecture deviates from the architecture of the underlying SDK / Platfrom on which it is built?</p>
<p>c) Are you using some business logic that is not easy to express with the programming language that you are using?</p>
<p>d) Would you benefit from extending the type system of your underlying programming model?</p>
<p>If you answer yes, to one or more of these questions, I would certainly take a good look at MDE.</p><div class="item_footer"><p><small><a href="http://www.ebpml.org/blog2/index.php/2012/02/13/isn-t-it-time-to">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>http://www.ebpml.org/blog2/index.php/2012/02/13/isn-t-it-time-to#comments</comments>
			<wfw:commentRss>http://www.ebpml.org/blog2/index.php?tempskin=_rss2&#38;disp=comments&#38;p=102</wfw:commentRss>
		</item>
				<item>
			<title>Is HTML 5 losing mindshare?</title>
			<link>http://www.ebpml.org/blog2/index.php/2012/02/02/is-html-5-losing-mindshare</link>
			<pubDate>Thu, 02 Feb 2012 13:30:00 +0000</pubDate>			<dc:creator>jdubray</dc:creator>
			<category domain="main">android</category>			<guid isPermaLink="false">101@http://www.ebpml.org/blog2/</guid>
						<description>&lt;p&gt; 
&lt;div style=&quot;float: left; margin-right: 20px;&quot;&gt;
&lt;div class=&quot;addthis_toolbox addthis_default_style &quot;&gt;&lt;a class=&quot;addthis_counter addthis_pill_style&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;script src=&quot;http://s7.addthis.com/js/250/addthis_widget.js#username=xa-4cf41f0f23f56dc2&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;div style=&quot;float: left;&quot;&gt;&lt;a class=&quot;twitter-share-button&quot; href=&quot;http://twitter.com/share&quot;&gt;Tweet&lt;/a&gt;
&lt;script src=&quot;http://platform.twitter.com/widgets.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;div style=&quot;float: left;&quot;&gt;
&lt;script src=&quot;http://connect.facebook.net/en_US/all.js#xfbml=1&quot;&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://scobleizer.com/2012/02/01/html-5-pushback/&quot;&gt;Robert Scoble thinks so&lt;/a&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The new Path&lt;/strong&gt;? The one that won a Crunchie last night for great design? It&amp;#8217;s not done in HTML 5.&lt;/p&gt;
&lt;p&gt;This morning I saw something new coming soon from &lt;strong&gt;Storify&lt;/strong&gt;. Not done in HTML 5. This morning I visited &lt;strong&gt;Foodspotting&lt;/strong&gt; which just shipped hot new apps on iOS, Android, and Blackberry. Not done in HTML 5.&lt;/p&gt;
&lt;p&gt;More and more I&amp;#8217;m hearing that designers and developers are ignoring HTML 5, especially for the high end of apps.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;After building &lt;a href=&quot;http://www.canappi.com&quot;&gt;Canappi&lt;/a&gt;, I can only wholeheartedly agree with Bob. HTML5 has certainly a place in the mobile landscape, if for nothing else to &quot;mobilize&quot; your web site, but when it comes to user experience, we don&#039;t see how it can compete with Native Frameworks at least in the years to come: For every successful mobile web app, someone will build a superior native experience that users will adopt. There is simply no room to compete.&lt;/p&gt;
&lt;p&gt;I am currently building Canappi&#039;s jQuery Mobile code generator and from what I can tell, it is extremely limited compared to the native iOS and Android SDKs.&lt;/p&gt;
&lt;p&gt;The fundamental reason for Web Apps to emerge in the late 90s and 2000s was the &quot;client update&quot; problem and to a lesser degree the number of platforms on which the app should run. In the 90s, assistants used to roam the buildings with CD-ROM (and Floppy disks) to update every single client.&lt;/p&gt;
&lt;p&gt;Today, App Stores have completely solved the update client problem (for mobile and desktop apps), and running on multiple platforms really means running on iOS and Android (although the fragmentation of Android is a bit of a concern).&lt;/p&gt;
&lt;p&gt;Web Apps have many fundamental flaws, from flowing layouts which simply don&#039;t work in small form factors, to cluncky off line experience, not to mention bandwidth and power consumption.&lt;/p&gt;
&lt;p&gt;If you combine a horrible developer experience to a horrible user experience, (Mobile) Web Apps have simply no room to grow from here.&lt;/p&gt;&lt;/p&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;http://www.ebpml.org/blog2/index.php/2012/02/02/is-html-5-losing-mindshare&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<p> 
<div style="float: left; margin-right: 20px;">
<div class="addthis_toolbox addthis_default_style "><a class="addthis_counter addthis_pill_style"></a></div>
<script src="http://s7.addthis.com/js/250/addthis_widget.js#username=xa-4cf41f0f23f56dc2" type="text/javascript"></script>
</div>
<div style="float: left;"><a class="twitter-share-button" href="http://twitter.com/share">Tweet</a>
<script src="http://platform.twitter.com/widgets.js" type="text/javascript"></script>
</div>
<div style="float: left;">
<script src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script>
</div>
<p> </p><p><a href="http://scobleizer.com/2012/02/01/html-5-pushback/">Robert Scoble thinks so</a>.</p>
<blockquote>
<p><strong>The new Path</strong>? The one that won a Crunchie last night for great design? It&#8217;s not done in HTML 5.</p>
<p>This morning I saw something new coming soon from <strong>Storify</strong>. Not done in HTML 5. This morning I visited <strong>Foodspotting</strong> which just shipped hot new apps on iOS, Android, and Blackberry. Not done in HTML 5.</p>
<p>More and more I&#8217;m hearing that designers and developers are ignoring HTML 5, especially for the high end of apps.</p>
</blockquote>
<p>After building <a href="http://www.canappi.com">Canappi</a>, I can only wholeheartedly agree with Bob. HTML5 has certainly a place in the mobile landscape, if for nothing else to "mobilize" your web site, but when it comes to user experience, we don't see how it can compete with Native Frameworks at least in the years to come: For every successful mobile web app, someone will build a superior native experience that users will adopt. There is simply no room to compete.</p>
<p>I am currently building Canappi's jQuery Mobile code generator and from what I can tell, it is extremely limited compared to the native iOS and Android SDKs.</p>
<p>The fundamental reason for Web Apps to emerge in the late 90s and 2000s was the "client update" problem and to a lesser degree the number of platforms on which the app should run. In the 90s, assistants used to roam the buildings with CD-ROM (and Floppy disks) to update every single client.</p>
<p>Today, App Stores have completely solved the update client problem (for mobile and desktop apps), and running on multiple platforms really means running on iOS and Android (although the fragmentation of Android is a bit of a concern).</p>
<p>Web Apps have many fundamental flaws, from flowing layouts which simply don't work in small form factors, to cluncky off line experience, not to mention bandwidth and power consumption.</p>
<p>If you combine a horrible developer experience to a horrible user experience, (Mobile) Web Apps have simply no room to grow from here.</p></p><div class="item_footer"><p><small><a href="http://www.ebpml.org/blog2/index.php/2012/02/02/is-html-5-losing-mindshare">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>http://www.ebpml.org/blog2/index.php/2012/02/02/is-html-5-losing-mindshare#comments</comments>
			<wfw:commentRss>http://www.ebpml.org/blog2/index.php?tempskin=_rss2&#38;disp=comments&#38;p=101</wfw:commentRss>
		</item>
				<item>
			<title>Building (Mobile) Applications with AT&#38;T Network APIs</title>
			<link>http://www.ebpml.org/blog2/index.php/2012/01/19/building-mobile-applications-with-at</link>
			<pubDate>Thu, 19 Jan 2012 18:43:00 +0000</pubDate>			<dc:creator>jdubray</dc:creator>
			<category domain="alt">SOA</category>
<category domain="main">Mobile</category>			<guid isPermaLink="false">100@http://www.ebpml.org/blog2/</guid>
						<description>&lt;p&gt; 
&lt;div style=&quot;float: left; margin-right: 20px;&quot;&gt;
&lt;div class=&quot;addthis_toolbox addthis_default_style &quot;&gt;&lt;a class=&quot;addthis_counter addthis_pill_style&quot;&gt;&lt;/a&gt;&lt;/div&gt;
&lt;script src=&quot;http://s7.addthis.com/js/250/addthis_widget.js#username=xa-4cf41f0f23f56dc2&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;div style=&quot;float: left;&quot;&gt;&lt;a class=&quot;twitter-share-button&quot; href=&quot;http://twitter.com/share&quot;&gt;Tweet&lt;/a&gt;
&lt;script src=&quot;http://platform.twitter.com/widgets.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;div style=&quot;float: left;&quot;&gt;
&lt;script src=&quot;http://connect.facebook.net/en_US/all.js#xfbml=1&quot;&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;AT&amp;amp;T released last week at CES &lt;a href=&quot;http://developer.att.com/developer/apiLandingPage.jsp?passedItemId=9700218&quot;&gt;a new API platform&lt;/a&gt; that exposes a number of &lt;a href=&quot;http://developer.att.com/developer/apiCatalogPage.jsp?passedItemId=9700222&quot;&gt;Network APIs&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SMS/MMS&lt;/li&gt;
&lt;li&gt;Location&lt;/li&gt;
&lt;li&gt;Device Capability&lt;/li&gt;
&lt;li&gt;In-App Payment&lt;/li&gt;
&lt;li&gt;WAP Push&lt;/li&gt;
&lt;li&gt;...&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The APIs implements OAuth 2.0 and capture user consent wherever applicable. I think the in-app payment (that goes directly to thesubscriber&#039;s bill) is a game changer for mobile applications, in particular Web&amp;#160; based mobile apps.&lt;/p&gt;
&lt;p&gt;The APIs come with an &lt;a href=&quot;http://developer.att.com/developer/tierNpage.jsp?passedItemId=9700232&quot;&gt;SDK and some code samples&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In order to use these APIs, you need to &lt;a href=&quot;http://developer.att.com/developer/join.jsp&quot;&gt;join the developer program&lt;/a&gt; and create a developer account.&lt;/p&gt;
&lt;p&gt;You would then create an &quot;application&quot; which basically gives an application id, a shared secret and a short code (yes ! your own short code). These credentials are used to get an access token (See figure below).&lt;/p&gt;
&lt;p&gt;If you use the Java SDK (there are others available: PHP, Ruby...), all you have to do is to insert these values in the conf/att-api.properties file and build the project with Eclipse or Ant directly.&lt;/p&gt;
&lt;p&gt;Once it is built, you just start the server by executing run.sh and you deploy the Sencha client application in your web server. The API server aquires access tokens automatically.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.cloudsentinel.com/client/examples/sms&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.ebpml.org/overview.png&quot;&gt;&lt;img src=&quot;http://www.ebpml.org/overview.png&quot; alt=&quot;&quot; width=&quot;500&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Here is how I deployed my server:&lt;/p&gt;
&lt;p&gt;SDK -&amp;gt; /var/www/att/server -&amp;gt; sh run.sh&lt;/p&gt;
&lt;p&gt;Sample app -&amp;gt; /var/www/client -&amp;gt; open &lt;a href=&quot;http://www.yourdomain.com/client/examples/sms&quot;&gt;http://www.yourdomain.com/client/examples/sms&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you want to change the location of the application, just update the ResourceBase value in the com.sencha.jetty.EmbeddedServer class. In my case, it was set to&amp;#160; webapp.setResourceBase(&quot;../../client&quot;);&lt;/p&gt;
&lt;p&gt;That&#039;s it ! And if you wonder, with your very own shortcode, you can also receive SMS too.&lt;/p&gt;&lt;/p&gt;
&lt;p&gt;I have a few promo codes from AT&amp;amp;T that give you free access to the platform for one year.&lt;/p&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;http://www.ebpml.org/blog2/index.php/2012/01/19/building-mobile-applications-with-at&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<p> 
<div style="float: left; margin-right: 20px;">
<div class="addthis_toolbox addthis_default_style "><a class="addthis_counter addthis_pill_style"></a></div>
<script src="http://s7.addthis.com/js/250/addthis_widget.js#username=xa-4cf41f0f23f56dc2" type="text/javascript"></script>
</div>
<div style="float: left;"><a class="twitter-share-button" href="http://twitter.com/share">Tweet</a>
<script src="http://platform.twitter.com/widgets.js" type="text/javascript"></script>
</div>
<div style="float: left;">
<script src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script>
</div>
<p> </p>
<p>AT&amp;T released last week at CES <a href="http://developer.att.com/developer/apiLandingPage.jsp?passedItemId=9700218">a new API platform</a> that exposes a number of <a href="http://developer.att.com/developer/apiCatalogPage.jsp?passedItemId=9700222">Network APIs</a>:</p>
<ul>
<li>SMS/MMS</li>
<li>Location</li>
<li>Device Capability</li>
<li>In-App Payment</li>
<li>WAP Push</li>
<li>...</li>
</ul>
<p>The APIs implements OAuth 2.0 and capture user consent wherever applicable. I think the in-app payment (that goes directly to thesubscriber's bill) is a game changer for mobile applications, in particular Web&#160; based mobile apps.</p>
<p>The APIs come with an <a href="http://developer.att.com/developer/tierNpage.jsp?passedItemId=9700232">SDK and some code samples</a>.</p>
<p>In order to use these APIs, you need to <a href="http://developer.att.com/developer/join.jsp">join the developer program</a> and create a developer account.</p>
<p>You would then create an "application" which basically gives an application id, a shared secret and a short code (yes ! your own short code). These credentials are used to get an access token (See figure below).</p>
<p>If you use the Java SDK (there are others available: PHP, Ruby...), all you have to do is to insert these values in the conf/att-api.properties file and build the project with Eclipse or Ant directly.</p>
<p>Once it is built, you just start the server by executing run.sh and you deploy the Sencha client application in your web server. The API server aquires access tokens automatically.</p>
<p><a href="http://www.cloudsentinel.com/client/examples/sms"></a></p>
<p><a href="http://www.ebpml.org/overview.png"><img src="http://www.ebpml.org/overview.png" alt="" width="500" /></a></p>
<p>Here is how I deployed my server:</p>
<p>SDK -&gt; /var/www/att/server -&gt; sh run.sh</p>
<p>Sample app -&gt; /var/www/client -&gt; open <a href="http://www.yourdomain.com/client/examples/sms">http://www.yourdomain.com/client/examples/sms</a></p>
<p>If you want to change the location of the application, just update the ResourceBase value in the com.sencha.jetty.EmbeddedServer class. In my case, it was set to&#160; webapp.setResourceBase("../../client");</p>
<p>That's it ! And if you wonder, with your very own shortcode, you can also receive SMS too.</p></p>
<p>I have a few promo codes from AT&amp;T that give you free access to the platform for one year.</p><div class="item_footer"><p><small><a href="http://www.ebpml.org/blog2/index.php/2012/01/19/building-mobile-applications-with-at">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>http://www.ebpml.org/blog2/index.php/2012/01/19/building-mobile-applications-with-at#comments</comments>
			<wfw:commentRss>http://www.ebpml.org/blog2/index.php?tempskin=_rss2&#38;disp=comments&#38;p=100</wfw:commentRss>
		</item>
			</channel>
</rss>

