<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>MDPauley.Com</title>
	<atom:link href="http://mdpauley.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://mdpauley.com</link>
	<description>apps and ideas by me</description>
	<lastBuildDate>Wed, 16 May 2012 17:54:09 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>From the Appcelerator Engine Room: Engineering Update</title>
		<link>http://developer.appcelerator.com/blog/2012/05/engupdate0512.html?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=from-the-appcelerator-engine-room-engineering-update</link>
		<comments>http://developer.appcelerator.com/blog/2012/05/engupdate0512.html#comments</comments>
		<pubDate>Wed, 16 May 2012 17:54:09 +0000</pubDate>
		<dc:creator>Carl Orthlieb</dc:creator>
				<category><![CDATA[@en]]></category>

		<guid isPermaLink="false">http://developer.appcelerator.com/blog/?p=18958</guid>
		<description><![CDATA[It’s been a couple of months since my last update and I’m happy to announce that we delivered our 2.0 release on schedule. This was a significant release and there are a number of things you should be aware of as developers: A new layout engine that minimizes cross-platform discrepancies: if you are using absolute [...]]]></description>
			<content:encoded><![CDATA[<p><img style="float: right; margin: 0 0 10px 10px;" src="http://img.skitch.com/20120516-e64gcg9sa18a7hiubqfa1nh19a.png" alt="" />It’s been a couple of months since my last update and I’m happy to announce that we delivered our <a href="http://www.appcelerator.com/platform/titanium-sdk">2.0 release</a> on schedule. This was a significant release and there are a number of things you should be aware of as developers:</p>
<ol>
<li>A new layout engine that minimizes cross-platform discrepancies: if you are using absolute positioning in your app and are updating to 2.0 then you need to read <a href="http://docs.appcelerator.com/titanium/2.0/index.html#!/guide/Transitioning_to_the_New_UI_Layout_System">this</a>. You basically need to excise almost all uses of ‘auto’ or 0 for your width and height fields and use Ti.UI.SIZE or Ti.UI.FILL appropriately. You may have also worked around some issues with the older platform that you have to now discard.</li>
<li>Mobile Web: a new platform increases your reach as a developer and allows you to make your application available to Windows Mango and Blackberry 7 users through the web (2.1 CI build). Check it out <a href="http://docs.appcelerator.com/titanium/2.0/index.html#!/guide/Mobile_Web_Platform_Overview">here</a>.</li>
<li>Cloud Services: we had a surge in use after just a few short days after launch for <a href="http://www.appcelerator.com/cloud">ACS</a>. We currently have over <strong></strong>23,000 apps that have been enabled for ACS usage. The tremendous demand shows that we have hit a  nerve here with developers wanting to cloud enable their applications with minimal setup and overhead.</li>
<li> New look and feel for our <a href="http://docs.appcelerator.com/">documentation</a>. We borrowed from an open source engine to provide quick look up, open tabs of items that you’ve viewed, and a snappy new look and feel. Arthur has been very diligent about reviewing every API, checking with the developers, and rewriting and adding samples for clarity.</li>
</ol>
<p>Last time I mentioned our plans to build a rock solid platform, establish a predicable release cadence, and create a scalable QA organization. I believe we have made good progress in each of these areas:</p>
<ol>
<ol>
<li>We have fixed over 640 platform bugs since the start of the year. That’s not unexpected given that we scaled out QA (see below). We’ll continue to emphasize this moving forward&#8211;we want to provide you with a platform that you can count on!</li>
<li>We delivered the 1.8.1 and 1.8.2 services packs at the end of January and February respectively. The 2.0 release was officially launched on 4/17 although the software was ready to go and out on github on 3/31. We delayed while we revamped the web site and got our billing back end polished off for launch. The next service pack (2.0.2) is on track for the end of this month and 2.1 is in active development. Note that with the launch of 2.0 we have officially stopped supporting 1.7.x. If you haven’t already considered upgrading your app to the latest 2.0 release then now is the time. I want to thank the team and especially my leadership: Chung, Ingo, Neeraj, Thomas, and Wei for pulling out the stops and marching everyone to the same drumbeat. It isn’t always easy!</li>
<li>Thomas has been busy scaling out QA and has established a partnership to do regression testing which has resulted in a surge of bug reports. This is a good thing as I’d rather know what bugs we have rather than not. We’ve done more testing than ever before on our applications and platform and put in place an awesome test case management system in order to measure and manage our work.</li>
</ol>
</ol>
<p>What’s going on with our platform support? Jeff stood up on stage at <a href="http://thinkmobile.appcelerator.com/blog/bid/145236/Thoughts-from-BlackBerry-World-2012">BlackBerry world</a> and announced support for BlackBerry 10 OS. We’re furiously at work on this and are integrating UI functionality as fast as RIM can throw SDKs at us. What about Windows Apollo, you ask? It’s very strategic for us so stay tuned.</p>
<p>In the end, I still have a burning need for talent here in the Bay Area. We’ve added many folks but are still eager to expand our team. I need iOS, Android, Blackberry Playbook, or Javascript developers and cloud, mobile, and automation QA engineers, and admins for ITOps. Snacks and drinks are free, the fun is liberally available, and we work hard on good code. <a href="http://www.appcelerator.com/company/jobs/">Send us your resume</a>. Did I mention the fresh churros at the last beer bash?</p>
<p><em>Carl Orthlieb is Vice President of Engineering at Appcelerator.  Carl is responsible for all product engineering for Appcelerator including the Titanium SDK and Studio, Analytics, Cloud Services, and IT Operations.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://developer.appcelerator.com/blog/2012/05/engupdate0512.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mobilize Your MongoDB! (Part One)</title>
		<link>http://developer.appcelerator.com/blog/2012/05/mobilize-your-mongodb-part-one.html?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=mobilize-your-mongodb-part-one</link>
		<comments>http://developer.appcelerator.com/blog/2012/05/mobilize-your-mongodb-part-one.html#comments</comments>
		<pubDate>Wed, 16 May 2012 17:14:05 +0000</pubDate>
		<dc:creator>Kevin Whinnery</dc:creator>
				<category><![CDATA[@en]]></category>

		<guid isPermaLink="false">http://developer.appcelerator.com/blog/?p=18967</guid>
		<description><![CDATA[Editor&#8217;s Note: Reposted with permission from the OpenShift developer blog, and author Grant Shipley. Summary: This is the first part of a blog series that details how to develop a mobile application that is backed by MongoDB and a PaaS. &#160;MongoDB makes a great companion to this mobile application given its ability to shard and [...]]]></description>
			<content:encoded><![CDATA[<p><small><strong>Editor&#8217;s Note:</strong> Reposted with permission from the <a href="https://openshift.redhat.com/community/blogs/mobilize-your-mongodb-developing-iphone-and-android-apps-in-the-cloud-part-1">OpenShift developer blog</a>, and author Grant Shipley.</small></p>
<p><strong>Summary:</strong> </p>
<p>
    This is the first part of a blog series that details how to develop a mobile application that is backed by MongoDB and a PaaS. &nbsp;MongoDB makes a great companion to this mobile application given its ability to shard and the nature of being able to store JSON documents with little data manipulation required. &nbsp;In this blog post, part one of the series, we will go over the background of the application and discuss the features we are going to build.
</p>
<p>
<strong>Background:</strong>
</p>
<p>
    I started developing iOS based applications shortly after the arrival of the iPhone on the market.&nbsp; Having been a Java and PHP developer for my entire career, switching to objective-c was a tough challenge for me.&nbsp; I had to remember basic programming methodologies and patterns that I haven&rsquo;t used since college.&nbsp; I had to remember that when using the C programming language, that garbage collection doesn&rsquo;t happen automagically.&nbsp; You have to allocate your memory and then when you are done, free that memory up.&nbsp; I also had to learn a new IDE (XCode) to take advantage of the profiling tools and other features that is required when doing native iOS development.&nbsp; XCode has improved significantly over the years, but in my opinion, it&rsquo;s still a far cry from what I expect from an IDE.
</p>
<p>
    To write my first iOS application, it required nearly two months of work at the cadence of 30-40 hours per week.&nbsp; To my delight, after releasing the application, the market for the application was larger that I had anticipated.&nbsp; Users were writing great reviews and requesting more features.&nbsp;
</p>
<p>
    Shortly after releasing my first iOS based application, Google decided to enter the smartphone market with their android based sdk and devices.&nbsp; This should have been great news for most software developers but for me, a part time mobile developer, it wasn&rsquo;t.&nbsp; I now had users requesting my application for android devices as well as for the new iPad and other tablets that were hitting the market.&nbsp; I didn&rsquo;t have the free time to port my application to the android sdk as it would have required another two months of software development as well as maintaining two separate code streams for patches and updates.
</p>
<p>
    About 8 months ago, I heard about a company called <a href="http://www.appcelerator.com/">Appcelerator</a> and their<a href="http://www.appcelerator.com/platform/titanium-sdk"> Titanium SDK</a>.&nbsp; This <a href="http://www.appcelerator.com/platform/titanium-sdk">SDK</a> would allow me to code using javascript but target native UI controls for an array of devices.&nbsp; This sounded like heaven as most of the applications that I write are productivity or novelty based applications that don&rsquo;t rely heavily on 3D graphics.&nbsp; I set out to learn the <a href="http://www.appcelerator.com/platform/titanium-sdk">titanium SDK</a> and was able to develop the <a href="https://github.com/gshipley/BeerShift">BeerShift</a> sample application over a period of two days.
</p>
<p>
<strong>About BeerShift:</strong>
</p>
<p>
    At <a href="http://openshift.com">OpenShift</a>, we enjoy local craft beers and the social aspects of having a pint while discussing the latest trends in software development and deployment.&nbsp; One night, over a pint, we thought it would be cool if we could quickly read a description of the beer and brewery before ordering.&nbsp; We kept discussing the app and of course feature creep started setting in.&nbsp; Before we ended the night, we decided to develop a mobile-based application that would allow a user to search for beers, and then log when and where they drank it.&nbsp; Because the team was split between using iOS and Android based phones, we needed it to work on both devices and sync the information via a backend service.&nbsp; Of course, all of this had to be available via the web as well.
</p>
<p>
    This was a great opportunity for me to start learning Titanium so I set out to develop the application.&nbsp; The biggest unknown was where to get a freely available database of beers that I could search.&nbsp; I researched this question and did some google searching but didn&rsquo;t really come up with any providers that met my needs.&nbsp; Luckily, while speaking at a PHP Users Group in Raleigh, NC, I met a couple of guys who owned a startup called thebrewerydb.com.&nbsp; They had all of the information that I needed in order to develop the fun little sample app.&nbsp; I invited them out for a pint after the user group and we discussed the details.&nbsp; A few days later I had an API key and was ready to get my Titanium Javascript on.
</p>
<p>
    Want a quick preview of what we will be building?&nbsp; Check out the <a href="https://openshift.redhat.com/community/videos/mobilize-your-mongodb-developing-iphone-and-android-apps-in-the-cloud-part-1">video showing the application.</a>
</p>
<p>
    BeerShift has a tabbed based UI that consists for 4 main screens.&nbsp; Drink, Drank, Kegstand, and Settings.
</p>
<p><img alt="" height="716" src="https://openshift.redhat.com/community/sites/default/files/image1_2.png" title="" width="368" />
</p>
<p>
    The settings tab presents the user with username and password input fields.&nbsp; If the username does not exist in the MongoDB database, the user will be prompted if they want to create a new user.
</p>
<p><img alt="" height="716" src="https://openshift.redhat.com/community/sites/default/files/image3_0.png" title="" width="368" />
</p>
<p>
    The drink tab is the heart of the application.&nbsp; This tab allows the uses to enter in a beer name and will return a result of all beers and breweries that match the search string.&nbsp; The results are retrieved via a REST API call to the openshift server and presented to the user in a table view.&nbsp; The user can select a a beer from the list and then select to &ldquo;Drink It&rdquo;.
</p>
<p><img alt="" height="716" src="https://openshift.redhat.com/community/sites/default/files/image6_0.png" title="" width="368" />
</p>
<p>
    Once the user has decided to log drinking a beer, the drinking event will be recorded on both the drank tab and the keg stand tab.
</p>
<p><img alt="" height="716" src="https://openshift.redhat.com/community/sites/default/files/image4_0.png" title="" width="368" />
</p>
<p>
    The keg stand tab will allow the user of the application to view the 50 most recent beers drank by any user of the application.
</p>
<p><img alt="" height="716" src="https://openshift.redhat.com/community/sites/default/files/image5_0.png" title="" width="368" />
</p>
<p>
    In the next blog post of this series, I will detail the installation of applications and tools needed to begin with development of the BeerShift application.
</p>
<div class="field-items">
<div class="field-item odd">
<div class="emvideo emvideo-video emvideo-youtube">
<div class="media-youtube" id="media-youtube-1">
<div id="media-youtube-default-external-1">
<strong>Source Code:</strong>
</div>
</div>
</div>
</div>
</div>
<p>
    All of the&nbsp;source code for this application, including the backend REST API and <a href="http://mongodb.org">MongoDB</a> integration, is available on <a href="https://github.com/gshipley/BeerShift">github.com/gshipley</a></p>
]]></content:encoded>
			<wfw:commentRss>http://developer.appcelerator.com/blog/2012/05/mobilize-your-mongodb-part-one.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Titanium Command Line Interface (CLI) Specification</title>
		<link>http://developer.appcelerator.com/blog/2012/05/titanium-command-line-interface-cli-specification.html?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=titanium-command-line-interface-cli-specification</link>
		<comments>http://developer.appcelerator.com/blog/2012/05/titanium-command-line-interface-cli-specification.html#comments</comments>
		<pubDate>Mon, 14 May 2012 06:27:42 +0000</pubDate>
		<dc:creator>Neeraj Gupta</dc:creator>
				<category><![CDATA[@en]]></category>

		<guid isPermaLink="false">http://developer.appcelerator.com/blog/?p=18954</guid>
		<description><![CDATA[We have a suite of existing tools for operating from the command line - titanium.py, builder.py, etc. Some of these tools are used for direct user interaction to create, run, package, or distribute projects (titanium.py) while others are designed for meaningful interactions only with an IDE such as Titanium Studio. Over time, the scope and requirements for [...]]]></description>
			<content:encoded><![CDATA[<p>We have a suite of existing tools for operating from the command line - titanium.py, builder.py, etc. Some of these tools are used for direct user interaction to create, run, package, or distribute projects (titanium.py) while others are designed for meaningful interactions only with an IDE such as Titanium Studio.</p>
<p>Over time, the scope and requirements for these tools have increased significantly so we have decided to evaluate the the structure of the build system itself. We have put together a specification to overhaul the existing build system and make it more extensible. We have also decided to move away from Python based tooling to node.js based tooling. We had a good debate internally about the technology choice and, in the end, it made sense for us to adopt node.js as we are a Java Script platform company. Node.js is young and has few short comings so we will write modules to overcome these limitations and contribute them back to the community.</p>
<p>Please review and provide your feedback (leave it on the wiki page itself) on the specification. We are on a tight deadline so your early feedback is appreciated. We will review and incorporate the feedback by the end of this week.</p>
<p><a href="https://wiki.appcelerator.org/display/community/Titanium+Command+Line+Utility+Specification">https://wiki.appcelerator.org/display/community/Titanium+Command+Line+Utility+Specification</a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://developer.appcelerator.com/blog/2012/05/titanium-command-line-interface-cli-specification.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Comparing Titanium and PhoneGap</title>
		<link>http://developer.appcelerator.com/blog/2012/05/comparing-titanium-and-phonegap.html?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=comparing-titanium-and-phonegap</link>
		<comments>http://developer.appcelerator.com/blog/2012/05/comparing-titanium-and-phonegap.html#comments</comments>
		<pubDate>Sun, 13 May 2012 04:52:15 +0000</pubDate>
		<dc:creator>Kevin Whinnery</dc:creator>
				<category><![CDATA[@en]]></category>

		<guid isPermaLink="false">http://developer.appcelerator.com/blog/?p=18949</guid>
		<description><![CDATA[Original article can be found here. A common question I get asked at developer events and conferences is how Titanium compares to PhoneGap. I thought I would take some time to explain how each technology works at a high level, and assess how the two technologies compare to one another. From 10,000 feet, PhoneGap and [...]]]></description>
			<content:encoded><![CDATA[<p><small>Original article can be found <a href="http://kevinwhinnery.com/post/22764624253/comparing-titanium-and-phonegap">here</a>.</small></p>
<div class="copy">
<p>A common question I get asked at developer events and conferences is how <a href="http://www.appcelerator.com/download" >Titanium</a> compares to <a href="http://www.phonegap.com" >PhoneGap</a>.  I thought I would take some time to explain how each technology works at a high level, and assess how the two technologies compare to one another.</p>
<p>From 10,000 feet, PhoneGap and Titanium appear to be similar. They both provide tools for cross-platform mobile development.  Both also require the use of JavaScript and web technologies in some capacity.  Both Titanium and PhoneGap are open source software with permissive licenses (the Titanium Mobile SDK is released under the <a href="http://www.apache.org/licenses/LICENSE-2.0" >Apache 2.0 license</a> &#8211; PhoneGap, which might also be called a “distro” of the <a href="http://incubator.apache.org/cordova/" >Apache Software Foundation-governed project “Cordova”</a>, is similarly licensed).</p>
<p>But that’s really where the similarities end.  While both technologies exist to enable cross-platform mobile development, the philosophies and approaches to solving this problem have very little in common.  Also, the business goals driving each project from the perspective of the sponsoring companies (<a href="http://www.adobe.com" >Adobe</a> for PhoneGap and <a href="http://www.appcelerator.com" >Appcelerator</a> for Titanium) are very different.  I will attempt, from my perspective, to describe these technical, philosophical, and business model differences in some detail in the text to follow.</p>
<p>Also, if you weren’t already aware, I am a long time Appcelerator contributor and employee.  That said, I have worked hard to keep my technical and philosophical assessments based in technical fact and the explicitly expressed goals of the teams involved.  If you feel I have made any points that are factually incorrect or misleading in some way, please let me know in the comments and I will update this post as appropriate.</p>
<p>I will first describe at a high level how both technologies work.  I will also describe how both technologies are extended with additional native functionality.  For each technology, I will also summarize the key strengths and weaknesses with their chosen approach to cross-platform.  The technical differences will quickly become obvious, but after these overviews and comparisons, I will also describe what I feel are the philosophical and strategic differences between the platforms and where they are going.</p>
<p>Let’s start by exploring PhoneGap and how it works.</p>
<h3>What is PhoneGap Trying To Accomplish?</h3>
<p>The purpose of PhoneGap is to allow HTML-based web applications to be deployed and installed as native applications.  PhoneGap web applications are wrapped in a native application shell, and can be installed via the native app stores for multiple platforms.  Additionally, PhoneGap strives to provide a common native API set which is typically unavailable to web applications, such as basic camera access, device contacts, and sensors not already exposed in the browser.</p>
<p>At a higher level, PhoneGap might be considered the vanguard of the emerging <a href="http://www.w3.org/2009/dap/" >W3C Device API standards</a>, as they attempt to bring that future to web developers in the present.  Today, no platform makes web applications first class citizens, though  <a href="http://www.mozilla.org/en-US/b2g/" >Mozilla’s promising Boot To Gecko platform</a> has a chance to change that.  Microsoft is also making interesting strides for Windows 8 with regard to first-class API access to web applications.  But the goal of PhoneGap is to seize a subset of these rights for web applications today.</p>
<h3>End User Workflow, Tooling and Interface for PhoneGap</h3>
<p>To develop PhoneGap applications, developers will create HTML, CSS, and JavaScript files in a local directory, much like developing a static website.  In fact, some PhoneGap developers cite as a bonus of the tool that they can develop in a desktop web browser most of the time, without needing the native toolchain at all.</p>
<p>To run a PhoneGap application on a native emulator/simulator, developers will generate a project for each of the native platforms they wish to support, configure that project’s “web root” directory in Xcode, Eclipse, or whatever native toolchain is needed, and then run the project using that tool.  The precise steps are <a href="http://phonegap.com/start" >outlined in their getting started guides, per platform</a>.  Often, symbolic links are used to route the “www” folder across multiple native projects to a common directory location.</p>
<p>Installing a native-wrapped PhoneGap application to a device requires a similar workflow.  However, to augment that process and alleviate the need to have native SDKs installed locally, Nitobi (recently acquired by Adobe) had created a service called <a href="https://build.phonegap.com/" >PhoneGap Build</a>, which will generate installable applications in the cloud.  Functionality to support PhoneGap build deployment has recently been integrated into Adobe’s Dreamweaver tool.</p>
<p>The tools used with PhoneGap are the standard tools of web development, such as Firebug, Web Inspector, and your text editor of choice.  There is also an emerging tool for remote debugging <a href="http://people.apache.org/~pmuellr/weinre/" >known as Weinre</a> that is becoming more commonly used.  Overall, the fact that you are developing a native application at all is mostly abstract during the development process.</p>
<h3>How PhoneGap Works</h3>
<p>As we mentioned previously, a PhoneGap application is a “native-wrapped” web application.  Let’s explore how the web application is “wrapped”.</p>
<p>Many native mobile development SDKs provide a web browser widget (a “web view”) as a part of their UI framework (<a href="http://developer.apple.com/library/ios/#documentation/uikit/reference/UIWebView_Class/" >iOS</a> and <a href="http://developer.android.com/reference/android/webkit/WebView.html" >Android</a>, for example).  In purely native applications, web view controls are used to display HTML content either from a remote server, or local HTML packaged along with the native application in some way.  The native “wrapper” application generated by PhoneGap loads the end developer’s HTML pages into one of these web view controls, and displays the resulting HTML as the UI when the application is launched.</p>
<p>If JavaScript files are included in a page loaded by a web view, this code is evaluated on the page as normal.  However, the native application which creates the web view is able to (in different ways, depending on the platform) asynchronously communicate with JavaScript code running inside of the web view.  This technology is usually referred to as “the bridge” in the context of PhoneGap architecture &#8211; the “bridge” means something slightly different in Titanium, as we will see later.</p>
<p>PhoneGap takes advantage of this to create a JavaScript API inside a web view which is able to send messages to and receive messages from native code in the wrapper application asynchronously.  The way the bridge layer is implemented is different per platform, but on iOS, when you call for <a href="http://docs.phonegap.com/en/1.7.0/cordova_contacts_contacts.md.html#contacts.find" >a list of contacts</a>, your native method invocation goes into a <a href="https://github.com/apache/incubator-cordova-ios/blob/master/CordovaLib/javascript/cordova.ios.js#L994" >queue of requests to be sent over the bridge</a>.  PhoneGap will then create an iframe which loads a URI scheme (“gap://”) that the native app is configured to handle, at which point <a href="https://github.com/apache/incubator-cordova-ios/blob/master/CordovaLib/Classes/CDVViewController.m#L461" >all the queued commands will be executed</a>.  Communication back into the web view is done by evaluating a string of JavaScript in the context of the web view from native code.</p>
<p>There is much more to PhoneGap than that, but the messaging from web view to native code via the bridge implementation is the key piece of technology which allows local web applications to call native code.</p>
<h3>Extending PhoneGap</h3>
<p>Writing native extensions for PhoneGap requires that you:</p>
<ol>
<li>Write a JavaScript interface for your extension which will use PhoneGap’s API to queue up messages to be sent to native code.</li>
<li>Register your extension with the native project in some way &#8211; on iOS this is done in the <a href="http://wiki.phonegap.com/w/page/36753496/How%20to%20Create%20a%20PhoneGap%20Plugin%20for%20iOS#EditCordovaplist" >Cordova.plist file</a>.</li>
<li>Write native code that PhoneGap will route requests to from the web view, and implement any native code needed</li>
</ol>
<p>Basically, developers can participate in the same asynchronous messaging system which powers the core PhoneGap native APIs.</p>
<h3>Strengths of the PhoneGap Approach</h3>
<p>In my estimation, PhoneGap’s primary architectural strength is that it is so small and simple.  It does what it does, and it does that well.  The PhoneGap team has intentionally implemented only the lowest common denominator of native APIs for the web browser-based app.  Because the native API set is so small, it has been relatively easy to port PhoneGap to many different environments.  Basically any native platform that supports a web view or web runtime can be a PhoneGap platform.</p>
<p>Non-visual native extensions in PhoneGap are also very simple.  The requirements for registering native code to receive messages from the web view are very modest.  Simple native extensions can be developed rapidly.  This plug-in architecture was also well executed in my opinion.</p>
<p>There is also strength in the fact that native APIs and native app development are almost completely abstract to the end developer.  Anyone who can write HTML, CSS, and even a small bit of JavaScript can wrap up a web page in a native app and distribute it as such.  The barrier to entry in using PhoneGap to package web pages as native apps is extremely low.</p>
<h3>Weaknesses of the PhoneGap Approach</h3>
<p>The quality of the user interface in a PhoneGap application will vary based on the quality of the web view and rendering engine on the platform.  The Webkit-based rendering engine on iOS is strong, and provides the best performance.  The Android web view is functional, <a href="http://simonmacdonald.blogspot.com/2012/02/android-issues-all-phonegap-developers.html" >but has some notable limitations</a>.  On other platforms, the web view performance can be suspect depending on the OS version.</p>
<p>There are also the standard cross-browser issues web developers have always had to deal with.  UIs will need to employ progressive enhancement, media queries, and that entire bag of tricks to remain usable on multiple platforms.  It helps that many mobile platforms are adopting Webkit, but there are <a href="http://westcoastlogic.com/slides/debug-mobile/#/17" >still significant differences even in Webkit based environments</a>.</p>
<p>Mobile browsers are getting better all the time, which will help mitigate those problems.  But approaching native-quality UI performance in the browser is a non-trivial task &#8211; <a href="http://www.sencha.com" >Sencha</a> employs a large team of web programming experts dedicated full-time to solving this problem.  Even so, on most platforms, in most browsers today, reaching native-quality UI performance and responsiveness is simply not possible, even with a framework as advanced as Sencha Touch.  Is the browser already “good enough” though?  It depends on your requirements and sensibilities, but it is unquestionably less good than native UI.  Sometimes much worse, depending on the browser.</p>
<p>PhoneGap also cannot be extended with native user interface.  The end developer’s application its self lives inside a web view, and user interface is rendered in HTML.  One can message to native code and create native UI that goes on, over, above, or adjacent to the web view, but it’s difficult or impossible to integrate a dynamic, HTML DOM-based UI with native UI components.  <a href="https://github.com/appcelerator/titanium_mobile/tree/0_8_X" >Appcelerator would know</a> &#8211; we tried to associate native UI with DOM elements early on, and needed to scrap that effort as the results were unpredictable and of insufficient quality.</p>
<p>There is also the other edge of the “lowest common denominator” sword.  Very few native APIs are exposed to PhoneGap applications by default, which makes platform integration limited.  There are a <a href="https://github.com/phonegap/phonegap-plugins" >variety of plug-ins that exist to plug some of these holes</a>, but in my personal experience they have varied in quality and maintenance.  This could very well continue to improve over time though &#8211; there is a strong community around PhoneGap.</p>
<p>We’ll dive more into the philosophical aspects of PhoneGap soon, but let’s explore these same technical areas for Titanium first.</p>
<h3>What is Titanium Trying to Accomplish?</h3>
<p>The goal of Titanium Mobile is to provide a high level, cross-platform JavaScript runtime and API for mobile development (today we support iOS, Android, and the browser, with BlackBerry 10 and Windows Phone coming soon and eventually, respectively).  Titanium actually has more in common with MacRuby/Hot Cocoa, PHP, or <a href="http://nodejs.org" >node.js</a> than it does with PhoneGap, Adobe AIR, Corona, or Rhomobile.  Titanium is built on two assertions about mobile development:</p>
<ul>
<li>There is a core of mobile development APIs which can be normalized across platforms.  These areas should be targeted for code reuse.</li>
<li>There are platform-specific APIs, UI conventions, and features which developers should incorporate when developing for that platform.  Platform-specific code should exist for these use cases to provide the best possible experience.</li>
</ul>
<p>So for those reasons, Titanium is not an attempt at “write once, run everywhere”.  We think there are great, user-experience enhancing features across multiple platforms that developers should be using.  We think that native apps should, where appropriate, take advantage of familiar, high-performance native UI widgets.  However, we think it is unnecessary that native developers need to learn platform-specific APIs to draw a rectangle, or make an HTTP request.</p>
<p>Titanium is an attempt to achieve code reuse with a unified JavaScript API, with platform-specific features and native performance to meet user expectations.  When you write a Titanium application, you are writing a native application in JavaScript.  Titanium should be considered a framework for writing native apps, versus an abstraction from the actual platform you are targeting.</p>
<h3>End User Workflow, Tooling, and Interface for Titanium</h3>
<p>To <a href="http://docs.appcelerator.com/titanium/2.0/index.html#!/guide/Quick_Start" >develop native applications with Titanium</a>, the developer is required to install the native tool chains for iOS and Android.  After those tools are installed, however, the developer usually only interacts with the Titanium SDK’s scripting interface (today Python based).  This is done either directly through the command line or (more commonly) through Titanium Studio, our Eclipse-based IDE.</p>
<p>Using the Titanium tool set, you will generate an application project directory which contains a configuration file, localization files, and a directory to contain the images, assets, and JavaScript source you will be writing to power your application.  You will not, by default, be editing HTML and CSS files, unless you intend to create a hybrid-type application which contains <a href="http://docs.appcelerator.com/titanium/2.0/index.html#!/guide/Communication_Between_WebViews_and_Titanium" >both native and HTML-based UI</a>.  Titanium applications can and often do employ a “hybrid” (native and web) UI, like Facebook’s native application for instance.  In this way, one could actually implement PhoneGap with Titanium, but that’s out of scope for this discussion.</p>
<p>Using this toolchain, your application is run using the actual em/simulators for the platforms you’re targeting.  Titanium Studio also provides step-through debugging, code completion, and other IDE-level features.</p>
<p>Installing to a device for testing is also typically done using our build system.  In Studio we provide a wizard interface to configure any code-signing dependencies, and then handle the deployment of your application to a connected device.  You can also use the native toolchains to deploy or package your applications, if that is your preference.</p>
<p>When it comes time to ship your application to the stores, our build system will handle the creation of the final application packages for you.  This is done locally on the developer’s machine using the native toolchains.  The upload process will be the same as it is for native-only developers.</p>
<p>While developing a Titanium application, the underlying tool chains are mostly abstract.  They must be present for development, but the end developer is rarely required to use them directly.  The fact that native apps are being developed, however, is not abstract.  User interfaces are created with cross-platform AND platform-specific components, and your applications should be dealing with things like background services, local notifications, app badges, configuration, activities/intents (on Android)… all things that are exposed via the Titanium JavaScript API.</p>
<h3>How Titanium Works</h3>
<p>There’s quite a bit happening behind the scenes in a Titanium application.  But basically, at runtime, your application consists of three major components &#8211; your JavaScript source code (inlined into a Java or Objective-C file and compiled as an encoded string), the platform-specific implementation of the Titanium API in the native programming language, and a JavaScript interpreter that will be used to evaluate your code at runtime (<a href="https://github.com/appcelerator/v8_titanium" >V8 (default)</a> or <a href="http://www.mozilla.org/rhino/" >Rhino</a> for Android, or <a href="https://github.com/appcelerator/tijscore" >JavaScriptCore</a> for iOS).  Except in the browser, of course, where the built-in JavaScript engine will be used.</p>
<p>When your application is launched, a JavaScript execution environment is created in native code, and your application source code is evaluated.  Injected into the JavaScript runtime environment of your application is <a href="http://docs.appcelerator.com/titanium/2.0/index.html#!/guide/iOS_Module_Development_Guide-section-29004946_iOSModuleDevelopmentGuide-Step2:BasicModuleArchitecture" >what we call “proxy” objects</a> &#8211; basically, a JavaScript object which has a paired object in native code.  Colloquially we will often refer to “JavaScript land” and “native land” in a Titanium application, as they are kind of parallel universes to one another.  The proxy object exists both in JavaScript land and native land, and serves as the “bridge” between the two.</p>
<p>In your JavaScript code, when you call a function on the global <code>Titanium</code> or <code>Ti</code> object, such as <code>var b = Ti.UI.createButton({title:'Poke Me'});</code>, that will invoke a native method that will create a native UI object, and create a “proxy” object (<code>b</code>) which exposes properties and methods on the underlying native UI object to JavaScript.</p>
<p>UI components (view proxies) can be arranged <a href="http://docs.appcelerator.com/titanium/2.0/index.html#!/guide/User_Interface_Fundamentals" >hierarchically to create complex user interfaces</a>.  Proxy objects which represent an interface to non-visual APIs (like filesystem I/O or database access) execute in native code, and synchronously (or asynchronously for APIs like network access) return a result to JavaScript.</p>
<p>Hopefully this helps directly address two common misconceptions about Titanium &#8211; at no point does Titanium require the use of a web view component.  The developer can create a web view as a native UI widget, but the web view is not used to evaluate Titanium source code.  Nor is JavaScript code cross-compiled to Objective-C or Java in Titanium.  Your JavaScript source is evaluated at runtime.</p>
<h3>Extending Titanium</h3>
<p>Titanium is extensible with both non-visual and UI capabilities in native code.  By implementing a Proxy and/or View Proxy interface in native code, developers can create new native functionality for Titanium applications exposed in JavaScript.  We expose the same interface we use to create Titanium’s own internal interface to module developers both on <a href="http://docs.appcelerator.com/titanium/2.0/index.html#!/guide/iOS_Module_Development_Guide" >iOS</a> and <a href="http://docs.appcelerator.com/titanium/2.0/index.html#!/guide/Android_Module_Development_Guide" >Android</a>.</p>
<h3>Strengths of the Titanium Approach</h3>
<p>Since the goal of Titanium is to provide a higher level API for native mobile development across platforms, you will get access to a wide array of native features and functionality out of the box, from user interface components to socket interfaces to notification system integration.  The goal of Titanium is to reduce the functionality gap between Titanium and pure native apps to something approaching zero.  We’re likely to never support an entire platform’s API out of the box, but we want to cover 90% of the most common use cases and provide a platform where the other 10% can be added by people that need it.</p>
<p>Since Titanium can be extended with visual components that plug into the same view hierarchy as the rest of the application, you’re able to (ultimately) implement any user interface that is possible on the underlying native platform.  Need a TableView to scroll at 60fps with special native code?  You can do that.  Want to seamlessly integrate an <a href="http://code.google.com/p/quicktigame2d/" >OpenGL drawing surface for a game, and keep the logic for the run loop in JavaScript</a>? You can do that.  You can integrate these UI extensions directly into the rest of your application built with the core Titanium APIs.</p>
<p>The look and feel of a Titanium application, when using common UI widgets, is also a strength of the platform.  There is no visual emulation going on (either through the application of CSS, or rendering of UI widgets using OpenGL or Flash).  When you create a <a href="http://docs.appcelerator.com/titanium/2.0/index.html#!/api/Titanium.UI.iPhone.NavigationGroup" >NavigationGroup</a>, it is backed by an actual UINavigationController on iOS.  The animations and behavior match what a native app user will expect, because you’re using the same UI control.</p>
<p>Since Titanium provides a high level native programming API in JavaScript, the barrier to entry for native programming is significantly reduced for anyone who has used an ECMAScript based language (which is a lot of developers).  <a href="http://www.codinghorror.com/blog/2007/07/the-principle-of-least-power.html" >Atwood’s Law is alive and well through Titanium</a>.</p>
<h3>Weaknesses of the Titanium Approach</h3>
<p>The scope of the Titanium API makes the addition of new platforms difficult &#8211; implementing the Titanium API on a new native platform is a massive undertaking.  For that reason, the Titanium platform is only available on what have been deemed the most critical mobile platforms at present: iOS, Android, and the web.</p>
<p>Our mobile web browser support is not yet of GA quality &#8211; we are continuing to work on the performance and feel of our UI widget set, as well as rounding out the implementation of our core Titanium APIs.</p>
<p>Because the layer of abstraction provided by Titanium is large, sub-optimal API implementations remain in our own internal framework.  Some user interface components do not yet perform as well as their native counterparts under some circumstances, such as very large table views with highly customized layouts.  Optimizing our core user interface components remains the primary engineering task for our team.  As we fix bugs and hardware improves, we are seeing this become less of an issue.  We also find that information architecture, especially for large data sets, needs to be applied in many cases.</p>
<p>Also owing to the ambitiousness of the Titanium platform, extending Titanium is non-trivial.  A good working knowledge of Titanium’s architecture and the environment is necessary to effectively integrate a new native control or API.  The <a href="http://docs.appcelerator.com/titanium/2.0/index.html#!/guide/Extending_Titanium_Mobile" >developer experience, API docs, and high level guides for module developers</a> were improved a lot with our latest 2.0 release, but remain an area of focus for us.</p>
<h3>Philosophical Differences</h3>
<p>By now, I would hope that the technical differences between PhoneGap and Titanium are pretty clear.  But beyond those differences, the goals and direction of each project are different as well.  The stated goal of the PhoneGap project is to, eventually, <a href="http://phonegap.com/2012/05/09/phonegap-beliefs-goals-and-philosophy/" >cease to exist</a>.  As stated earlier, PhoneGap is intended to be the leading implementation of emerging browser standards around device APIs.  In theory, once browser vendors implement the features of PhoneGap, the platform will no longer be necessary.  PhoneGap its self isn’t intended to be a platform &#8211; it’s a shim to add native app-like functionality to web applications.  The web is intended to be the platform.</p>
<p>PhoneGap’s new sponsoring organization, Adobe, is also very much interested in the advancement of the web as a platform.  In recent months, Adobe has been aggressively building out tools to enable the development of HTML 5/CSS 3 web applications.  It seems obvious to me (and many others) that Adobe sees a diminishing role for Flash as standard web technologies evolve.</p>
<p>At it’s core, Adobe is a tools business.  Platforms are a channel through which Adobe can sell tools.  Once, that platform was Flash.  Now, that platform is the web browser (in addition to Flash).  I don’t know precisely how PhoneGap factors into Adobe’s product roadmap, but in a lot of ways it serves a similar purpose as Flash.  PhoneGap is an attempt to create an abstract runtime environment to enable cross-platform deployment.</p>
<p>If Adobe can sell tools to develop for the web, and the web can be used to develop more types of applications, then that’s a clear win for Adobe.  Which is fine, by the way &#8211; nothing wrong with selling tools.</p>
<p>It’s worth noting, however, that Adobe is not the governing body of the Cordova project, on which PhoneGap is now based.  That project is owned and governed by the Apache Software Foundation.  It remains to be seen what the interplay is going to be between the two projects, but my gut instinct is that they won’t diverge much.  I think their goals will remain philosophically aligned.</p>
<p>Appcelerator is also interested in and supportive of the advancement of the web as a platform.  Everyone wins when the web gets stronger as an application platform.  The difference is that we view the web as one great platform among others, with a unique character and set of strengths and weaknesses. We don’t expect the web to become the only mobile application platform.  We think that platforms like iOS, Android, BlackBerry, Windows Phone, and the like will continue to be influential, and will provide great experiences for users.  That choice and competition will be a good thing for consumers, but will remain a problem for developers.</p>
<p>What we expect to provide for developers through Titanium is a way to target the web and native platforms from a single codebase, while retaining the features, performance, and tight platform integration that the users of that platform expect.  We expect to build an enduring platform for mobile client development, with services and tools to <a href="http://www.appcelerator.com/products/appcelerator-cloud-services" >speed up that process</a>.  We are not a tools company &#8211; we are a platform company, and our success will be linked to the success of developers on top of our platform.  Over time, we hope to build an open source platform company in the spirit of <a href="http://www.redhat.com/" >Red Hat</a> and other giants in that space.</p>
<p>Which tool or approach is right for you?  Like all things in software development, it depends.  There are no silver bullets.  But hopefully this description and comparison will help you make the right choice for your situation.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://developer.appcelerator.com/blog/2012/05/comparing-titanium-and-phonegap.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Appcelerator Titanium Docs Update, May 2012</title>
		<link>http://developer.appcelerator.com/blog/2012/05/appcelerator-titanium-docs-update-may-2012.html?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=appcelerator-titanium-docs-update-may-2012</link>
		<comments>http://developer.appcelerator.com/blog/2012/05/appcelerator-titanium-docs-update-may-2012.html#comments</comments>
		<pubDate>Wed, 02 May 2012 16:28:22 +0000</pubDate>
		<dc:creator>Arthur Evans</dc:creator>
				<category><![CDATA[release_2.0]]></category>

		<guid isPermaLink="false">http://developer.appcelerator.com/blog/?p=18820</guid>
		<description><![CDATA[If you&#8217;ve started using Release 2.0, you&#8217;ve probably already seen the new Appcelerator Titanium documentation site, docs.appcelerator.com. Our goal for Release 2.0 focused on improving the Titanium Mobile API documentation, updating and organizing the guides, and making everything easy to find on a single site: The options to show or hide inherited members and property accessors on [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;ve started using Release 2.0, you&#8217;ve probably already seen the new Appcelerator Titanium documentation site, <a href="http://docs.appcelerator.com">docs.appcelerator.com</a>. Our goal for Release 2.0 focused on improving the Titanium Mobile API documentation, updating and organizing the guides, and making everything easy to find on a <a href="http://docs.appcelerator.com">single site</a>:</p>
<p><img class="alignnone" title="Titanium Docs" src="http://www.appcelerator.com.s3.amazonaws.com/blog/www/doc_update_screenshot_1.png" alt="" width="646" height="175" /></p>
<p>The options to show or hide inherited members and property accessors on the API Docs are still there, but now they&#8217;re now in the <strong>Show</strong> menu over on the right.</p>
<p><img class="alignnone" title="Show Menu" src="http://www.appcelerator.com.s3.amazonaws.com/blog/www/doc_update_screenshot_2.png" alt="" width="448" height="167" /></p>
<p>The <strong>Filter class members</strong> box is a very handy way of finding that elusive property or method. You&#8217;ll also find an <strong>Expand All</strong> button if you want to scroll through all of the properties, methods and events without manually expanding each item.</p>
<p>There are still many things to improve, but I&#8217;m happy to have the first version of our <a href="http://docs.appcelerator.com">new doc site</a> in the wild, and I&#8217;m proud of the work the documentation team has done over the last six months:</p>
<ul>
<li>Completely revised the API docs for about 2/3 of the modules and objects in the Titanium Mobile API.</li>
<li>Updated existing guides, added new guides sections, and removed obsolete material.</li>
<li>Fixed almost 300 doc bugs.</li>
</ul>
<p></p>
<p>For a before-and-after comparison, see the VideoPlayer doc <a href="http://developer.appcelerator.com/apidoc/mobile/1.7.5/Titanium.Media.VideoPlayer-object.html">then</a> and <a href="http://docs.appcelerator.com/titanium/2.0/index.html#!/api/Titanium.Media.VideoPlayer">now.</a></p>
<p>We&#8217;ve made a good start, but we need your help. If you find a doc that&#8217;s wrong or missing information, or if you just feel it could be improved, please let us know. We always encourage <a href="https://jira.appcelerator.org/browse/TC">filing bugs</a>. For questions and general feedback, feel free to contact <a href="https://twitter.com/#!/devdocdude">myself</a>, <a href="https://twitter.com/#!/skypanther">Tim Poulsen</a> or <a href="https://twitter.com/#!/pauldowsett">Paul Dowsett</a>.</p>
<h3>Behind the Scenes</h3>
<p>We really liked the navigation in <a href="http://https:0//github.com/senchalabs/jsduck">JSDuck</a>, Sencha&#8217;s open-source documentation tool, so we used it as the front end for our Titanium documentation site. Our API documentation source format hasn&#8217;t changed: API docs are written in the <a href="http://docs.appcelerator.com/titanium/2.0/index.html#!/guide/TDoc_Specification">TDoc format</a> we rolled out with Release 1.8. The TDoc tools were designed to generate multiple formats, so we added a generator for JSDuck.</p>
<p>The guides content is authored in our wiki and exported for the doc site using a custom script.</p>
<h3>What&#8217;s Next?</h3>
<p>So what&#8217;s next for the Appcelerator documentation team? Here&#8217;s what we have on our roadmap for 2.1.0:</p>
<div></div>
<div>
<ul>
<li>Continuing to work through the API pages we didn&#8217;t get a chance to revise for 2.0.</li>
<li>More sample code.</li>
<li>Improved search for the documentation site.</li>
<li>Continued bug fixes for the docs and documentation site.</li>
</ul>
<p></p>
<p>What changes would YOU like to see? Let us know &#8212; comment on this post, <a href="https://jira.appcelerator.org/browse/TC">file a ticket</a>, <a href="https://twitter.com/#!/pauldowsett">send</a> <a href="https://twitter.com/#!/skypanther">us</a> a <a href="https://twitter.com/#!/devdocdude">tweet</a>, a carrier pigeon, you name it.</div>
</p>
<p>If you&#8217;d like to contribute to the Titanium documentation effort, there are many ways to help:</p>
<ul>
<li>If you find something wrong, or a page that needs more information, <a href="https://jira.appcelerator.org/browse/TC">file a bug</a>.</li>
<li>Take it to the next level and <a href="http://docs.appcelerator.com/titanium/2.0/index.html#!/guide/Contributing_APIDocs">submit a fix</a> for an API doc issue.</li>
<li>Join the crew: the Appcelerator documentation team <a href="http://www.appcelerator.com/company/jobs">is hiring</a>.</li>
</ul>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://developer.appcelerator.com/blog/2012/05/appcelerator-titanium-docs-update-may-2012.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Native BlackBerry 10 Support Coming To Titanium</title>
		<link>http://developer.appcelerator.com/blog/2012/05/native-blackberry-10-support-coming-to-titanium.html?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=native-blackberry-10-support-coming-to-titanium</link>
		<comments>http://developer.appcelerator.com/blog/2012/05/native-blackberry-10-support-coming-to-titanium.html#comments</comments>
		<pubDate>Tue, 01 May 2012 20:32:10 +0000</pubDate>
		<dc:creator>Kevin Whinnery</dc:creator>
				<category><![CDATA[@en]]></category>

		<guid isPermaLink="false">http://developer.appcelerator.com/blog/?p=18886</guid>
		<description><![CDATA[Earlier today, Fearless Leader announced Appcelerator&#8217;s plans to support native application development for the BlackBerry 10.  Work is already underway to implement the Titanium JavaScript API on BlackBerry 10 devices using BlackBerry&#8217;s NDK. Unlike previous versions of the BlackBerry OS, development tools will be available for Mac, Linux, and Windows users.  In a few hours, [...]]]></description>
			<content:encoded><![CDATA[<p><img style="float:right;margin:0 0 10px 10px" title="playbook" src="https://img.skitch.com/20120501-ks3u3pkun9nxjhgwmfe7u495t1.png" alt="" width="287" height="189" />Earlier today, <a href="https://twitter.com/#!/jhaynie" >Fearless Leader</a> announced Appcelerator&#8217;s plans to <a href="http://www.appcelerator.com/company/news/press/release-05-2012-rim" >support native application development for the BlackBerry 10</a>.  Work is already underway to implement the Titanium JavaScript API on BlackBerry 10 devices using BlackBerry&#8217;s NDK.</p>
<p>Unlike previous versions of the BlackBerry OS, development tools will be available for Mac, Linux, and Windows users.  In a few hours, I will be demoing a very early version of this tooling integration within Titanium Studio.  The BlackBerry 10 simulator is a VMWare machine image, which runs on your machine via VMWare Fusion or the VMWare Player.  The Titanium build scripts interface with this virtual machine to deploy application updates.  The application its self is built using the BB 10 NDK tools, resulting in the same .bar application archive you&#8217;d get in the native development workflow.</p>
<p>We will be looking to share updates on our progress with the community ASAP, once we have a stable build.  BB 10, by everything we have seen here at <a href="http://www.blackberryworld.com/" >BlackBerry World 2012</a>, looks to be a very strong entry into the competitive mobile OS market.  To Appcelerator and our developer community, it underscores the importance of maintaining cross-platform agility, while still taking advantage of rich native platform features &#8211; the mobile platform war is far from over.  We look forward to helping all our developers succeed on BlackBerry 10!</p>
]]></content:encoded>
			<wfw:commentRss>http://developer.appcelerator.com/blog/2012/05/native-blackberry-10-support-coming-to-titanium.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Featured Developers – William Martinez &amp; Kosuke Isobe</title>
		<link>http://developer.appcelerator.com/blog/2012/04/featured-developers-fabian-martinez-kosuke-isobe.html?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=featured-developers-william-martinez-kosuke-isobe</link>
		<comments>http://developer.appcelerator.com/blog/2012/04/featured-developers-fabian-martinez-kosuke-isobe.html#comments</comments>
		<pubDate>Wed, 25 Apr 2012 15:22:03 +0000</pubDate>
		<dc:creator>Sharry Stowell</dc:creator>
				<category><![CDATA[Community Projects]]></category>
		<category><![CDATA[FaceTouch]]></category>
		<category><![CDATA[Kosuke Isobe]]></category>
		<category><![CDATA[TiPlatformConnect]]></category>

		<guid isPermaLink="false">http://developer.appcelerator.com/blog/?p=18750</guid>
		<description><![CDATA[Editor&#8217;s note: Sharry Stowell is the editor of Learning Titanium, where he frequently comments on the latest contributions of the Titanium community. Hey guys, hope you&#8217;re playing with the latest release of Titanium as there are have been some great features added including ACS (Appcelerator Cloud Services). This week my featured developers are from different [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Editor&#8217;s note: Sharry Stowell is the editor of <a href="http://www.learningtitanium.com/" >Learning Titanium</a>, where he frequently comments on the latest contributions of the Titanium community.</strong></p>
<p>Hey guys, hope you&#8217;re playing with the latest release of Titanium as there are have been some great features added including ACS (Appcelerator Cloud Services). This week my featured developers are from different sides of the globe; William Martinez is based in the US and Kosuke Isobe is from Japan.</p>
<p>They have stood out from the crowd with their app development skills and helping to contribute to the Ti community. I&#8217;ll talk about William &amp; his <a href="http://www.builtwithtitanium.com/?portfolio=facetouch">FaceTouch</a> App and then I&#8217;ll discuss Kosuke&#8217;s contribution of the <a href="https://github.com/k0sukey/TiPlatformConnect">TiPlatformConnect</a> OAuth library.</p>
<p><img class="aligncenter" src="http://img853.imageshack.us/img853/563/mza6160181102774877911.png" alt=" " /><img class="aligncenter" src="http://img201.imageshack.us/img201/8608/mza2025416957034817143.jpg" alt=" " /></p>
<p>I noticed the FaceTouch App a number of months ago via the <a href="http://developer.appcelerator.com/questions">Q&amp;A section</a>, I downloaded it &amp; had a little play &#8211; I loved it, my 3 year old even loved it! I updated to the full version a few weeks ago &amp; noticed a number of new features, the great UI is so easy to use. If you haven&#8217;t already, I advise downloading it free from the <a href="http://itunes.apple.com/us/app/id475172259?mt=8">AppStore</a>.</p>
<h4><em>&#8220;Facetouch is a really funny photo booth studio! You have hats, wigs, glasses, hair, beards and a lot of fashion accessories to make people or pets look just awesome in your pictures! Transform your pictures in a fancy and simple way. Facetouch has a lot of real-like high definition, carefully and well-designed objects that include even shadow &#8230; Just chose an object and zoom it, rotate it, move it and scale it to make it fit in your picture!&#8221;</em></h4>
<p>William&#8217;s team (<a href="https://twitter.com/#!/InzoriInc">@inzori</a>) has worked with clients from all around the world for the last 15 years. They speak English, Spanish and Swedish fluently.</p>
<h3>Interview with William Martinez</h3>
<blockquote><p><strong>1) What gave you the idea to create your FaceTouch app?</strong><br />
We&#8217;ve created a small puzzle game for my kid where you have to place shapes where they belong, recognize objects like forks, knives and glasses and arrange them on the table, etc&#8230; That was the kick off of FaceTouch.<br />
Once we learned how the <em>drag and drop, scale, rotate, flip, place, etc any object with Titanium</em>, we found that we had built a nice engine to &#8216;easily&#8217; build these kind of applications over it.</p>
<p>We wanted to create some realistic face booth application. We found that most of the existing similar applications at the appStore work with cartoons, drawings and poor quality graphics… no real life pictures or accessories… some are funny but you get no real looking results. &#8230; we decided to go for it.</p></blockquote>
<blockquote><p><strong>2) Why did you choose the Appcelerator Titanium route?</strong><br />
Titanium is the easiest and fastest way to create an iPhone/iPad high quality application. Although the iOS SDK is not 100% mapped, you have almost everything you may need to deliver your application to the AppStore, and you may find or create a module if you don&#8217;t.</p></blockquote>
<blockquote><p><strong>3) How long did it take to design, create, test &amp; deploy the app?</strong><br />
We decided to co-work with a professional design this time.<br />
The results are amazing as you can see, a full HD application ready for iPhone and iPad, however, it took a lot more time to finish the application as designers are really … how to say it… they like their work to look not just good but perfect.<br />
As you know we (developers) are not that kind of person, we want things to be finished fast and it&#8217;s ok as long as they work as supposed :) … so … as the designer went over and over again through the same screens, changing colors, changing buttons and moving a pixel from here to there… we had the time to create more and more features, create ObjectiveC modules, etc.</p>
<p>So, it took almost 2 months to finish the first version. Our beta testers did a great job! They were our friend&#8217;s kids, my kid and ourselves that had a funny time doing our &#8220;job&#8221;.</p>
<p>After 3 months we decided to go live at the AppStore and continue working with a lot of new objects and functionality for a new version.</p></blockquote>
<blockquote><p><strong>4) What parts of the Ti API did you use to create the user interaction?</strong><br />
Well&#8230; I can tell you which parts we did not use… that would be easier! I think we have used almost every part of the API but Android specific parts.</p></blockquote>
<blockquote><p><strong>5) Have you developed any other apps in Titanium if so, what are they?</strong><br />
We have developed two other public applications:</p>
<ul>
<li><a href="http://itunes.apple.com/uy/app/undercover-media/id471366587?mt=8">Undercover Media</a> &#8211; a highly customizable application that records audio/video and takes pictures without being noticed. You can even browse the web while you are recording video!</li>
<li><a href="http://itunes.apple.com/uy/app/visual-noise-free/id509177266?mt=8">Visual Noise</a> &#8211; a free application that is part of a bigger project that may help people with hearing problems. This application is really a rip of the alert system where a vibration/visual alert is raised when a noise peak is detected. We decided to deploy it to the appstore and see if we could get some feedback and suggestions from users.</li>
<li>Private applications &#8211; we have also developed three private applications like a payment gateway for a mayor online payment company and two other very specific applications requested by clients.</li>
<li>MarketPlace &#8211; we have developed some Ti modules that you may find <a href="https://marketplace.appcelerator.com/listing?q=inzori">here</a>.</li>
</ul>
</blockquote>
<h4>Real world app code example</h4>
<p>William has kindly sampled some of his code from within the actual help to other Ti Devs:</p>
<p>[<a href="https://gist.github.com/2473568">app.js gist</a>]</p>
<pre style="background-color: #ffffff;padding: 10px;overflow: scroll" lang="javascript">Titanium.App.ISIPAD = Ti.Platform.osname == 'ipad';
Ti.include('/programs/main.js');

var ff = {};
ff.app = {};
ff.ui = {};

// create tab group
ff.app.tabGroup = Titanium.UI.createTabGroup({
backgroundColor: '#000'
});

// create the main home screen (this function creates the home screen and is defined in main.js)
ff.app.mainwin = ff.ui.createMainWindow();

// create loading window "splash"
ff.app.loadWin = Ti.UI.createWindow({
top:0,left:0,right:0,bottom:0,
tabBarHidden: true,
navBarHidden: true,
backgroundImage: Titanium.App.ISIPAD ? 'images/background_splash_ipad.jpg' : 'images/background_splash.jpg' ,
fullscreen: true,
url: 'programs/splash.js',
tabGroup: ff.app.tabGroup, // pass the main tabgroup
mainTab: tabMain // pass the tab where main is
});

var tabLoad = Titanium.UI.createTab({
window:ff.app.loadWin
});
var tabMain = Titanium.UI.createTab({
window:ff.app.mainwin
});

ff.app.tabGroup.addTab(tabLoad);
ff.app.tabGroup.addTab(tabMain);

ff.app.tabGroup.setActiveTab(tabLoad);
ff.app.tabGroup.open();</pre>
<p>[<a href="https://gist.github.com/2473590">programs/splash.js gist</a>]</p>
<pre style="background-color: #ffffff;padding: 10px;overflow: scroll" lang="javascript">var splash = Ti.UI.currentWindow;

// do whatever you want.. animations.. put a label "loading..." and animate it (remember to play with delays and durations to make this screen last longer)

// and when you finish loading, just change the active tab.

splash.tabGroup.setActiveTab(splash.mainTab);</pre>
<hr width="90%" />
<h3>Kosuke Isobe &#8211; TiPlatformConnect OAuth Library</h3>
<p>Kosuke&#8217;s a web programmer for internet media business called <a href="http://www.opensmile.co.jp/">OpenSmile</a> based in Japan. He&#8217;s only been invovled in Titanium for a year after he got introduced to the Donayama <a href="http://d.hatena.ne.jp/donayama/">blog</a>. He has worked on a few Titanium Apps (Japanese Only), such as <a href="http://itunes.apple.com/jp/app/id433359093">Prize info</a> and <a href="http://itunes.apple.com/jp/app/id448248399">Rock-paper-scissors game</a>.</p>
<p><img src="http://img688.imageshack.us/img688/8702/tiplatformconnectappcbl.jpg" alt=" " /></p>
<p>Have you ever wanted to allow a user to grant a third party site access to their information stored with another service provider, without sharing their access permissions or the full extent of their data, well read on&#8230;.</p>
<p>I came across <a href="https://github.com/k0sukey/TiPlatformConnect">TiPlatformConnect</a> on Twitter, it was a fork of <a href="http://twitter.com/ebryn">@ebryn</a>&#8216;s great twitter-titanium library on <a href="https://github.com/ebryn/twitter-titanium">Github</a>. Kosuke explained to me that he <em>&#8220;required OAuth of Twitter in my app. At such time, I found twitter-titanium. This library is very easy learn, I was able to incorporate my app immediately. Then, when connecting to other platforms, I have continued to use this to extend the library&#8221;.</em></p>
<p>He has expanded it front a Twitter OAuth library to the following:</p>
<ul>
<li>Tumblr</li>
<li>Mixi (Japanese SNS)</li>
<li>Foursquare</li>
<li>Flickr (in development)</li>
<li>Github</li>
<li>Linkedin</li>
<li>Google</li>
<li>Etsy</li>
<li>Hatena</li>
</ul>
<p>If you want to expand the usage of this great resource, please fork it and share all your findings with the Ti community.</p>
<p>A big thanks to my featured developers!</p>
<p><strong>Code Strong</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://developer.appcelerator.com/blog/2012/04/featured-developers-fabian-martinez-kosuke-isobe.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Launch Day Event Schedule and Webinar Links</title>
		<link>http://developer.appcelerator.com/blog/2012/04/launch-day-event-schedule.html?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=launch-day-event-schedule-and-webinar-links</link>
		<comments>http://developer.appcelerator.com/blog/2012/04/launch-day-event-schedule.html#comments</comments>
		<pubDate>Thu, 19 Apr 2012 02:34:34 +0000</pubDate>
		<dc:creator>Kevin Whinnery</dc:creator>
				<category><![CDATA[@en]]></category>

		<guid isPermaLink="false">http://developer.appcelerator.com/blog/?p=18828</guid>
		<description><![CDATA[2.0 has launched, and Titanium developers are starting to play around with the new features in this release. We&#8217;d like to invite you once again to join us for some online events, coordinated with several of our live developer meetups. Welcome to Titanium 2.0! Thursday, April 19, 9am PST Register for the webinar! In this [...]]]></description>
			<content:encoded><![CDATA[<p>2.0 has launched, and Titanium developers are starting to play around with the new features in this release. We&#8217;d like to invite you once again to join us for some online events, <a href="https://wiki.appcelerator.org/display/community/Titanium+2.0+Launch+Events" >coordinated with several of our live developer meetups</a>.</p>
<h3>Welcome to Titanium 2.0!</h3>
<p>Thursday, April 19, 9am PST</p>
<p><a href="https://appcelerator.webex.com/appcelerator/onstage/g.php?t=a&amp;d=923497685" >Register for the webinar!</a></p>
<p>In this session, Appcelerator CTO Nolan Wright, Product Manager Jo Ann Bucker, and Platform Evangelist Kevin Whinnery will be on hand to discuss and demo the new features in Titanium 2.0, and discuss what&#8217;s next for Appcelerator in 2012.</p>
<h3>Titanium 2.0 Overview (Europe)</h3>
<p>Thursday, April 19, 10am PST</p>
<p><a href="https://www3.gotomeeting.com/register/833786574" >Register for the webinar!</a></p>
<p>In this session, Appcelerator Platform Evangelist Kevin Whinnery will present on what&#8217;s new in Titanium 2.0 for European developers.  Please stop in after your work day is through and ask your questions live!</p>
<h3>Titanium 2.0 Overview (US East Coast)</h3>
<p>Thursday, April 19, 4pm PST</p>
<p><a href="https://www3.gotomeeting.com/register/289172494" >Register for the webinar!</a></p>
<p>In this session, the Washington D.C. Titanium developer community will present on Titanium at a high level, and brief developers on the new features in 2.0 alongside Appcelerator engineers.  Drop in, learn, and ask your questions live!</p>
<h3>Titanium 2.0 Q&amp;A (Spanish)</h3>
<p>Thursday, April 19, 6:30pm PST</p>
<p><a href="https://www3.gotomeeting.com/register/476289318" >Register for the webinar!</a></p>
<p>In this session, Appcelerator developers (in conjunction with the Mexico City Titanium Meetup) will answer questions specifically for Spanish language speakers. Si hablas español, únete a nosotros para este evento.</p>
<h3>Titanium 2.0 Overview (West Coast)</h3>
<p>Thursday, April 19, 7:30pm PST</p>
<p><a href="https://www3.gotomeeting.com/register/965677558" >Register for the webinar!</a></p>
<p>Live from our developer meetup in Mountain View, Appcelerator celebrates the release of 2.0 with our local developer community.  Presentations on what&#8217;s new in version 2.0 will be shared with the local crowd, and with other west coast audiences via webinar.  Join us to celebrate and learn about 2.0!</p>
<h3>Titanium 2.0 Q&amp;A (Japanese)</h3>
<p>Friday, April 20, 4:30am PST</p>
<p><a href="https://www3.gotomeeting.com/register/580959046" >Register for the webinar!</a></p>
<p>Live from Tokyo, one of the most active meetup groups in the world will field Titanium questions in Japanese.  Please join us to ask your question live!</p>
<p>Thanks, and we hope to see you tomorrow!</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://developer.appcelerator.com/blog/2012/04/launch-day-event-schedule.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Announcing Titanium Studio 2.0.1</title>
		<link>http://developer.appcelerator.com/blog/2012/04/announcing-titanium-studio-2-0-1.html?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=announcing-titanium-studio-2-0-1</link>
		<comments>http://developer.appcelerator.com/blog/2012/04/announcing-titanium-studio-2-0-1.html#comments</comments>
		<pubDate>Tue, 17 Apr 2012 15:00:29 +0000</pubDate>
		<dc:creator>Ingo Muschenetz</dc:creator>
				<category><![CDATA[@en]]></category>
		<category><![CDATA[release_2.0]]></category>

		<guid isPermaLink="false">http://developer.appcelerator.com/blog/?p=18774</guid>
		<description><![CDATA[We&#8217;re proud and excited to announce the newest version of Titanium Studio. Version 2.0.1 not only integrates our newest cloud services directly into Studio, but includes hundreds of fixes, enhancements and improvements designed to make your development experience more enjoyable. Studio 2.0.1 highlights Appcelerator Cloud Services. Add cloud services either from the new project wizard [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;re proud and excited to announce the newest version of Titanium Studio. Version 2.0.1 not only integrates our newest cloud services directly into Studio, but includes hundreds of fixes, enhancements and improvements designed to make your development experience more enjoyable.</p>
<h3>Studio 2.0.1 highlights</h3>
<ul>
<li>Appcelerator Cloud Services. Add cloud services either from the new project wizard or to an existing project.</li>
<li>Module Management: Manage directly from within the Titanium Studio GUI via the tiapp.xml editor.</li>
<li>App support: Third-party providers can now hook into our publishing workflow. App stores can register within the interface and allow simplified deployment from inside Titanium Studio to an online location.</li>
<li>Content Assist: No need to be save files in order to get content assist for your user-defined functions.  We&#8217;ve also added content assist on both hover and Dynamic Help for the Titanium API.</li>
<li>Xcode 4.3 support.</li>
</ul>
<h3>Other Useful Functionality</h3>
<ul>
<li>Type /** before a JavaScript function to automatically add a documentation header.</li>
<li>Jump from a function to its definition via the F3 key.</li>
<li>Right-click on a project to open the analytics for that application.</li>
<li>Scroll away from the bottom of the console to auto-lock.</li>
</ul>
<h3>New Views</h3>
<ul>
<li>A Snippets view that provides easy access to the complete list of snippets shipped with Studio, as well as simple ways to filter, preview and edit the list.</li>
<li>A Servers view for stopping, starting and restarting external servers used for preview.</li>
</ul>
<h3>Additional Changes</h3>
<ul>
<li>We&#8217;ve reworked the publishing workflow to make iOS and Android distribution more intuitive. Recently-run configurations will be added to the Run history so you can easily re-run them without needing to configure the wizard once again.</li>
<li>Emulators and Simulators now support custom launch arguments.</li>
<li>We now validate the whole project (as opposed to just the current file) as part of the build step, and we&#8217;ll warn you before launching if the current project has errors.</li>
<li>Studio also won&#8217;t index or validate any files under the &#8220;builds&#8221; folder.</li>
<li>Studio 2.0 is now built on top of Eclipse 3.7.2.</li>
</ul>
<p></p>
<p><a  href="http://docs.appcelerator.com/titanium/2.0/index.html#!/guide/Titanium_Studio_Release_Notes">Read the Release Notes</a> for additional details on all improvements available in this release.</p>
<h3>Updating Titanium Studio</h3>
<p>You should be automatically prompted to update your Titanium Studio software. If you do not see the prompt, you can select “Check for Updates” from the “Help” menu from within Titanium Studio.</p>
<p><img src="http://img.skitch.com/20111221-jj7c373u5wp84mecs5gj97k7cn.jpg" alt="" /></p>
<p>Once you&#8217;ve updated Titanium Studio, you&#8217;ll then get an update for the Titanium Mobile SDK.</p>
]]></content:encoded>
			<wfw:commentRss>http://developer.appcelerator.com/blog/2012/04/announcing-titanium-studio-2-0-1.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Titanium Mobile SDK 2.0.1 is available now</title>
		<link>http://developer.appcelerator.com/blog/2012/04/titanium-mobile-sdk-2-0-1-is-available-now.html?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=titanium-mobile-sdk-2-0-1-is-available-now</link>
		<comments>http://developer.appcelerator.com/blog/2012/04/titanium-mobile-sdk-2-0-1-is-available-now.html#comments</comments>
		<pubDate>Tue, 17 Apr 2012 15:00:12 +0000</pubDate>
		<dc:creator>Neeraj Gupta</dc:creator>
				<category><![CDATA[@en]]></category>
		<category><![CDATA[release_2.0]]></category>

		<guid isPermaLink="false">http://developer.appcelerator.com/blog/?p=18758</guid>
		<description><![CDATA[Update: We released Titanium Mobile SDK GA Revision 2 earlier today as the initial 2.0.1 GA release was missing the Appcelerator Cloud Services modules (Titanium.Cloud and Titanium.CloudPush). Please install this version to receive the ACS modules if you installed the initial GA release. Brace yourselves, Titanium fans. The latest helping of Titanium goodness, is now available hot [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Update: </strong>We released Titanium Mobile SDK GA Revision 2 earlier today as the initial 2.0.1 GA release was missing the Appcelerator Cloud Services modules (Titanium.Cloud and Titanium.CloudPush)<em>. </em>Please install this version to receive the ACS modules if you installed the initial GA release.</p>
<p>Brace yourselves, Titanium fans. The latest helping of Titanium goodness, is now available hot off the update servers.</p>
<p>Titanium Mobile SDK 2.0.1 is now available.</p>
<p>We&#8217;ve been working on this feature release for last few months and I&#8217;m sure that you&#8217;ll find this release as exciting as I do.</p>
<p>Titanium Mobile SDK 2.0.1 builds on the strengths of Release 1.8, adding numerous new features, improving parity across different platforms and addressing over 700 issues. This release takes the Titanium platform to the next level but I will let you be the judge.</p>
<p>Highlights of the SDK 2.0.1 feature set include:</p>
<ul>
<li><a href="http://docs.appcelerator.com/titanium/latest#!/guide/Integrating_with_Appcelerator_Cloud_Services" >Integration with Appcelerator Cloud Services</a> (formerly CocoaFish) to cloud-enable Titanium applications.</li>
<li>Mobile Web (formerly HTML5 platform) release candidate.</li>
<li><a href="http://docs.appcelerator.com/titanium/latest/" >New Titanium Documentation Site</a> with much improved documentation and examples</li>
<li>Composite layouts to address UI parity issues across different platforms. A <a href="http://docs.appcelerator.com/titanium/latest/#!/guide/Transitioning_to_the_New_UI_Layout_System" >migration guide</a> is available to help you migrate your applications.</li>
<li><a href="http://docs.appcelerator.com/titanium/latest/#!/guide/Titanium_Mobile_Module_API" >Well-defined module API</a> for module developers.</li>
<li>More flexible geolocation functionality.</li>
<li>Xcode 4.3 and iOS 5.1 support.</li>
<li>Android V8 &#8211; Better memory management</li>
<li>Android r19 toolset support</li>
</ul>
<p>We also processed quite a few community pull requests for this release. We appreciate the effort and commitment from our wonderful community and this release would not have been possible without your support.</p>
<p><a href="http://docs.appcelerator.com/titanium/release-notes/?version=2.0.1.GA" >Read the Release Notes</a> for additional details on all improvements available in this release.</p>
<h3>Download and Installation</h3>
<div>
<h3>Updating Titanium Studio</h3>
<p>You should be automatically prompted to update your Titanium Studio software. If you do not see the prompt, you can select “Check for Updates” from the “Help” menu from within Titanium Studio.</p>
<p><img src="http://img.skitch.com/20111221-jj7c373u5wp84mecs5gj97k7cn.jpg" alt="" /></p>
<h3>Updating the Mobile SDK</h3>
<p>Similarly, you should be prompted to automatically upgrade your Titanium Mobile SDK from within Titanium Studio. If you do not see the prompt below, you can manually check for updates by selecting “Check for Titanium SDK Updates” from the “Help” menu within Titanium Studio.</p>
<p><img src="http://img.skitch.com/20111018-esyd4rwam2na5intjxai9r15mn.jpg" alt="" /></p>
</div>
<h3>For More Information</h3>
<p>For more information, you may view the related API Documentation: <a href="http://docs.appcelerator.com/titanium/2.0/index.html#!/api" >Titanium Mobile SDK 2.0.1 API docs</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://developer.appcelerator.com/blog/2012/04/titanium-mobile-sdk-2-0-1-is-available-now.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

