<?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>TylerBurton.ca &#187; iPhone</title>
	<atom:link href="http://www.tylerburton.ca/tag/iphone/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.tylerburton.ca</link>
	<description></description>
	<lastBuildDate>Wed, 25 Aug 2010 21:19:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>My 5 minute iOS 4 review</title>
		<link>http://www.tylerburton.ca/2010/06/my-5-minute-ios-4-review/</link>
		<comments>http://www.tylerburton.ca/2010/06/my-5-minute-ios-4-review/#comments</comments>
		<pubDate>Sat, 26 Jun 2010 19:26:25 +0000</pubDate>
		<dc:creator>Tyler Burton</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[iOS 4]]></category>

		<guid isPermaLink="false">http://www.tylerburton.ca/?p=300</guid>
		<description><![CDATA[There has been far too much iPhone related news lately but I feel as though I should at least weigh in with my thoughts on the new iPhone OS. I have been running iOS 4 on my iPhone 3GS since it was officially released about a week ago. Rather than write a lengthy review I [...]]]></description>
			<content:encoded><![CDATA[<p>There has been <em>far</em> too much iPhone related news lately but I feel as though I should at least weigh in with my thoughts on the new iPhone OS. I have been running <a href="http://www.apple.com/ipodtouch/ios4-software-update.html" target="_blank">iOS 4</a> on my <a href="http://en.wikipedia.org/wiki/IPhone_3GS" target="_blank">iPhone 3GS</a> since it was officially released about a week ago. Rather than write a lengthy review I figured I would simply add my short comments about the major new features. This should, hopefully, result in a very quick and informative review.</p>
<p><strong>Multitasking</strong></p>
<p><strong><a href="http://www.tylerburton.ca/files/wordpress/2010/06/img_0378.png"><img class="aligncenter size-medium wp-image-302" title="img_0378" src="http://www.tylerburton.ca/files/wordpress/2010/06/img_0378-200x300.png" alt="" width="200" height="300" /></a><br />
</strong></p>
<p>This is the big new feature and honestly the one that you&#8217;ll forget about the quickest. What do I mean by this? The multitasking implementation in iOS 4 is so seamless that the new double-tap on the home button paradigm works far better as a quick app switcher than as a task manager. Don&#8217;t read this as a negative however; all user interfaces should strive to do as good of a job at &#8216;hiding&#8217; such a fundamental change to the OS by building it into a user-centric design. Do all the apps on my phone multitask? Heck no, but I couldn&#8217;t even tell you which do and which don&#8217;t and that right there is the real genius behind this design.</p>
<p><strong>Folders</strong></p>
<p><strong><a href="http://www.tylerburton.ca/files/wordpress/2010/06/img_0379.png"><img class="aligncenter size-medium wp-image-304" title="img_0379" src="http://www.tylerburton.ca/files/wordpress/2010/06/img_0379-200x300.png" alt="" width="200" height="300" /></a><br />
</strong></p>
<p>Far from perfect, folders are a welcome change to the iPhone experience. I was able to cut down the number of app screens on my device from about 10 to only 2. My only real complaint about folders is the fixed limit to the number of apps you can put in each, a maximum of 12 per folder. I would almost prefer to have the option to put all of my games in a single folder and then scroll through them as a list instead.</p>
<p><strong>Wallpaper</strong></p>
<p><strong><a href="http://www.tylerburton.ca/files/wordpress/2010/06/img_0380.png"><img class="aligncenter size-medium wp-image-305" title="img_0380" src="http://www.tylerburton.ca/files/wordpress/2010/06/img_0380-200x300.png" alt="" width="200" height="300" /></a><br />
</strong></p>
<p>The background wallpaper is a nice addition. It&#8217;s obviously nothing groundbreaking but it does add a nice personalized feel to the phone. This &#8216;feature&#8217; will not work on the older 3G model because of the slower hardware. If that statement sounds ridiculous to you then you obviously haven&#8217;t played with the update enough to notice the new animations. iOS 4 literally vomits animation at you every chance it gets.</p>
<p><strong>Mail</strong></p>
<p><strong><a href="http://www.tylerburton.ca/files/wordpress/2010/06/img_0381.png"><img class="aligncenter size-medium wp-image-306" title="img_0381" src="http://www.tylerburton.ca/files/wordpress/2010/06/img_0381-200x300.png" alt="" width="200" height="300" /></a><br />
</strong></p>
<p>By far the best part of the upgrade, mail saw the addition of a unified inbox (where all of your accounts can filter into one place) and e-mail threading. I have four e-mail accounts on my device and switching between their individual inboxes was always a pain. But now with the unified inbox I can quickly get all of my updates and respond to all of the messages very quickly. Threaded e-mail is also awesome and is something sorely missing from many other phones and even desktop clients. Once you start using a threaded e-mail client, like Gmail or Thunderbird, it is very hard to go back to the old way of doing things. Now I don&#8217;t have to! I only encountered one issue with the new mail app. The first time I ran the app it seemed liked it was indexing all my stored mail which really slowed the app down. Since then however it works like a charm.</p>
<p><strong>Photo and Camera</strong></p>
<p><strong> </strong></p>
<div id="attachment_307" class="wp-caption aligncenter" style="width: 210px"><strong><strong><a href="http://www.tylerburton.ca/files/wordpress/2010/06/IMG_0391.png"><img class="size-medium wp-image-307" title="IMG_0391" src="http://www.tylerburton.ca/files/wordpress/2010/06/IMG_0391-200x300.png" alt="" width="200" height="300" /></a></strong></strong><p class="wp-caption-text">On an unrelated note I REALLY need to clean my phone&#39;s camera lens</p></div>
<p><strong> </strong></p>
<p>There is now a 5x digital zoom for the camera which is so easy to operate a child could use it. Simply tap on the screen and the control appears as a slider at the bottom. Sliding it to the right zooms in, to the left zooms out. Simple, easy, elegant. It&#8217;s just a shame that digital zoom sucks too much to be really useful.</p>
<p>Adding focus to the video camera is also nice but this feature might be put to better use on the new iPhone 4G hardware where the video camera is actually worth using.</p>
<p>A new tab for a geo-tagged map overlay has also been added to the photo app which will show you where you took each picture. It&#8217;s neat but not really something I think I&#8217;ll be using often.</p>
<p><strong>iPod</strong></p>
<p><a href="http://www.tylerburton.ca/files/wordpress/2010/06/img_0387.png"><img class="aligncenter size-medium wp-image-308" title="img_0387" src="http://www.tylerburton.ca/files/wordpress/2010/06/img_0387-200x300.png" alt="" width="200" height="300" /></a></p>
<p>The iPod app user interface got a bit of an overhaul and it now shows more information in a much more streamlined and effective way. It also lets you manage playlists (beyond the simple &#8216;on-the-go&#8217; ones) right on the device itself. Music playback has always been one of the great strengths of this platform and its nice to see Apple hasn&#8217;t forgotten where their success has come from.</p>
<p><strong>Others<br />
</strong></p>
<p>E-mail attachments can now be set up to be opened by any application, third-party or otherwise. This should make the e-mail experience far more flexible and help enterprise deployments open home-grown data sources. I&#8217;m also hoping to see a PGP application take advantage of this soon.</p>
<p>Calendar has had a couple of improvements but the biggest change is the addition of full support for .ics calendar entries. This has been a missing feature from day one and it is nice to see that the ability is finally here.</p>
<p>iBooks has been added the the iPhone which should help people who want to read a page or two on the bus to school or work. Other than that I just don&#8217;t see this as such a big deal. Afterall who would want to read a whole book on a device as small as a phone?</p>
<p>In both Spotlight (the device wide search) and Safari Wikipedia and your selected search engine will offer suggestions for what you are trying to find. While this feature is nice it does slow down the search results slightly as it tries to retrieve suggestions from the web in real time. If it becomes too annoying you can turn it off.</p>
<p>iOS 4 also brought some much needed security improvements including the option for a full text password (no longer just a 4-digit one) and full device encryption. Again this is a feature that was missing since the launch of the iPhone for no really good reason.</p>
<p><a href="http://www.tylerburton.ca/files/wordpress/2010/06/IMG_0393.png"><img class="aligncenter size-medium wp-image-310" title="IMG_0393" src="http://www.tylerburton.ca/files/wordpress/2010/06/IMG_0393-200x300.png" alt="" width="200" height="300" /></a></p>
<p>Spellcheck has also been added which offers some nice suggestions when the auto-complete isn&#8217;t quite sure what you meant to type. It works in a similar way to copy &amp; paste which makes it instantly accessible to anyone used to the phone.</p>
<p><a href="http://www.tylerburton.ca/files/wordpress/2010/06/IMG_0394.png"><img class="aligncenter size-medium wp-image-311" title="IMG_0394" src="http://www.tylerburton.ca/files/wordpress/2010/06/IMG_0394-200x300.png" alt="" width="200" height="300" /></a></p>
<p>A slew of enterprise features were added as well but seeing as I&#8217;m not in charge of any enterprise deployments most of these additions were lost on me.</p>
<p><strong>Overall</strong></p>
<p>Overall the iOS 4 feels faster in general but not without some slowdown in specific cases, such as mail above. Even with these oddities the update allows you to be much more productive than ever before and so on the whole it is still faster in almost every <em>practical</em> use case. As a computer science graduate I am far more interested in the addition of APIs and tweaks under the hood and from everything I have read or experienced it all looks very good.</p>
<p><strong>Conclusion</strong></p>
<p>The iOS 4, while not completely revolutionary in any way, is a strong evolutionary upgrade and well worth your time. Just be warned that if you are upgrading your 3G it may take a while.</p>
<p>Update size: 378MiB<br />
Time to install: about 10 minutes to update + phone restart + 10KiB carrier update + phone backup ~= 15 minutes total</p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
		<li class="shr-comfeed">
			<a href="http://www.tylerburton.ca/2010/06/my-5-minute-ios-4-review/feed" rel="nofollow" class="external" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://www.tylerburton.ca/2010/06/my-5-minute-ios-4-review/&amp;title=My+5+minute+iOS+4+review" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.tylerburton.ca/2010/06/my-5-minute-ios-4-review/&amp;title=My+5+minute+iOS+4+review" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.tylerburton.ca/2010/06/my-5-minute-ios-4-review/&amp;t=My+5+minute+iOS+4+review" rel="nofollow" class="external" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://www.tylerburton.ca/2010/06/my-5-minute-ios-4-review/&amp;imageurl=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-reddit">
			<a href="http://reddit.com/submit?url=http://www.tylerburton.ca/2010/06/my-5-minute-ios-4-review/&amp;title=My+5+minute+iOS+4+review" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-slashdot">
			<a href="http://slashdot.org/bookmark.pl?url=http://www.tylerburton.ca/2010/06/my-5-minute-ios-4-review/&amp;title=My+5+minute+iOS+4+review" rel="nofollow" class="external" title="Submit this to SlashDot">Submit this to SlashDot</a>
		</li>
		<li class="shr-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://www.tylerburton.ca/2010/06/my-5-minute-ios-4-review/&amp;title=My+5+minute+iOS+4+review" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=My+5+minute+iOS+4+review+-+http://b2l.me/6wv6f&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

]]></content:encoded>
			<wfw:commentRss>http://www.tylerburton.ca/2010/06/my-5-minute-ios-4-review/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Case for Objective-C</title>
		<link>http://www.tylerburton.ca/2010/03/the-case-for-objective-c/</link>
		<comments>http://www.tylerburton.ca/2010/03/the-case-for-objective-c/#comments</comments>
		<pubDate>Sun, 21 Mar 2010 01:41:13 +0000</pubDate>
		<dc:creator>Tyler Burton</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[assembly]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[native]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://www.tylerburton.ca/?p=274</guid>
		<description><![CDATA[For my iPhone Application Programming course I have become quite accustomed to using Objective-C; mostly because Apple strongly recommends requires that you write all of your code in it. Let me just begin by saying that Objective-C can be one of the most confusing and, at least at first glance, poorly designed programming languages that [...]]]></description>
			<content:encoded><![CDATA[<p>For my iPhone Application Programming course I have become quite accustomed to using <a href="http://en.wikipedia.org/wiki/Objective-C" target="_blank">Objective-C</a>; mostly because <a href="http://www.apple.com" target="_blank">Apple</a> <span style="text-decoration: line-through;">strongly recommends</span> requires that you write all of your code in it. Let me just begin by saying that Objective-C can be one of the most confusing and, at least at first glance, poorly designed programming languages that I have come across. Rather than using the standard <a href="http://en.wikipedia.org/wiki/C_%28programming_language%29" target="_blank">C-like</a> syntax of <strong>instance</strong>.<em>method</em> Objective-C uses a message passing syntax which looks a little something like [<strong>instance</strong> <em>method</em>]. Or&#8230; at least it used to. With the <a href="http://en.wikipedia.org/wiki/Objective-C#Objective-C_2.0" target="_blank">introduction of a new feature set</a> Objective-C has also gained a &#8216;dot&#8217; syntax similar to more classical languages. See what I mean about confusing?</p>
<p>So why on earth would anyone program in this language? Well in my opinion there are a number of good points that make Objective-C an ideal language to use for certain scenarios.</p>
<ul>
<li>It is one of the few high-level languages that still compiles to native machine code.</li>
<li>It was built from the ground up as an object oriented programming language. This stands in contrast to C++ which effectively tries to tack OOP onto classic C.</li>
<li>Because it wasn&#8217;t trying to preserve any backwards compatibility, as was the case with C++, Objective-C did not inherit problems of an earlier language.</li>
<li>Objective-C can interface with standard C libraries and can even include C code inline for ease of use.</li>
<li>While Objective-C does make use of pointers, it does not suffer from the &#8216;pointer hell&#8217; that C/++ does. What I mean by this is that it is more intelligent about its use of notation. For example, you don&#8217;t need to remember that you need to grab the memory address of an object (&amp;) and then pass that as a pointer (*) to a function or, god forbid, make use of a pointer to a pointer (to a pointer to a pointer&#8230;).</li>
<li>Like C/++, Objective-C gives you complete control over memory management. However if you choose to you can enable automatic garbage collection for your code as well.</li>
<li>Unlike C&#8217;s <em>#include</em> pre-compile directive,which always forces a full copy of the source at be added at that point, Objective-C&#8217;s <em>#import</em> directive only adds the source once resulting in a smaller footprint.</li>
<li>When you finally do <em>get</em> Objective-C&#8217;s syntax it becomes a very straightforward and easy to read language.</li>
</ul>
<p><strong>Setup</strong></p>
<p>On the <a href="http://en.wikipedia.org/wiki/Mac_OS_X" target="_blank">Mac</a> setup is basically as easy as installing <a href="http://en.wikipedia.org/wiki/Xcode" target="_blank">Xcode</a>. If you happen to use that platform I would highly recommend that you use Xcode as it is the absolute best Objective-C IDE. However for the rest of us we get to dig into the command-line!</p>
<p>Following <a href="http://blog.lyxite.com/2008/01/compile-objective-c-programs-using-gcc.html" target="_blank">this excellent guide</a> I was able to install the required libraries and tools for both Windows and Linux. Essentially just follow the instructions on <a href="www.genustep.org " target="_blank">www.genustep.org</a>, the open source implementation of NeXT&#8217;s Objective-C libraries, and you should be off to the races. Just remember that for Windows you only actually need to install GNUstep System and GNUstep Core (in that order!). Once everything is installed just open up your terminal (Linux) or start GNUstep Shell (Windows). This is where we will be compiling the programs from.</p>
<p><strong>First program</strong></p>
<p>Everyone needs a classic &#8216;hello, world!&#8217; example program! Here is a very simple way to do this in Objective-C. Create a file called main.m (.m is like .c or .cpp) and place the following code in it:</p>
<pre><span style="color: #008000;"><em>//Link into the Foundation library which contains a lot of useful functions</em></span>
<span style="color: #800000;">#import &lt;Foundation/Foundation.h&gt;</span>

<span style="color: #008000;"><em>//the main program function that will be run</em></span>
<span style="color: #ff00ff;">int</span> main(<span style="color: #ff00ff;">void</span>)
{
     <em><span style="color: #008000;">//log our string out to the console</span></em>
     <span style="color: #ff00ff;">NSLog</span>(<span style="color: #ff0000;">@"hello, world!"</span>);

     <span style="color: #008000;"><em>//return success exit code</em></span>
     <span style="color: #ff00ff;">return</span> 0;
}
</pre>
<p>Then to compile it follow the instructions back on <a href="http://blog.lyxite.com/2008/01/compile-objective-c-programs-using-gcc.html" target="_blank">this post</a>. I have found that for me the best Windows command line arguments are as follows:</p>
<blockquote><p>gcc `gnusetup-config &#8211;objc-flags` -o [output name i.e. "test" produces "test.exe"] [input .m files i.e. "main.m"] -I /GNUstep/System/Library/Headers -L /GNUstep/System/Library/Libraries -lobjc -lgnustep-base -enable-auto-import</p></blockquote>
<p>Your results may be different though. For the above example I used &#8220;hello&#8221; as the output name and &#8220;main.m&#8221; as the input .m files. On my machine this resulted in a file called <em>hello.exe</em> that was 478KB in size. If we change the first line of the program to <span style="color: #800000;">#import &lt;Foundation/NSString.h&gt;</span> instead and then recompile it we can shrink this down to 417KB. This is because we only really use the string library in our program, so importing the rest of Foundation is simply unnecessary.</p>
<p><strong>Using objects</strong></p>
<p>Rather than write a whole tutorial here I have created a little demonstration about the different ways you can use objects. While I don&#8217;t claim that this is the best way to do things, in fact if you read main.m I claim quite the opposite, it does give you an idea of the flexible nature of Objective-C&#8217;s OOP and memory management systems.</p>
<p><a href="http://www.tylerburton.ca/files/wordpress/2010/03/ObjectiveCExample.zip">Download Here</a></p>
<p><strong>Wrapping it up</strong></p>
<p>Essentially what I am trying to get across here is that Objective-C is far from perfect, but it <em>is</em> quite a mature language and as such should probably have more wide-spread support. As a Computer Scientist who grew up in the post-C++ world, see: <a href="http://en.wikipedia.org/wiki/Java_%28programming_language%29" target="_blank">Java</a>, I completely understand why many people are opting to use sandboxed or &#8216;virtualized&#8217; programming languages, like .NET, Java and even things like PHP, over native languages like C/++, Objective-C or assembly. On the other hand there is something to be said for still writing code <em>on the metal</em> if for nothing else than the performance improvements you get by default. A lot of people are afraid of C&#8217;s pointers but if you can program in Java then I think you can easily program in Objective-C.</p>
<p>Give it a shot, you just might like it <img src='http://www.tylerburton.ca/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
		<li class="shr-comfeed">
			<a href="http://www.tylerburton.ca/2010/03/the-case-for-objective-c/feed" rel="nofollow" class="external" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://www.tylerburton.ca/2010/03/the-case-for-objective-c/&amp;title=The+Case+for+Objective-C" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.tylerburton.ca/2010/03/the-case-for-objective-c/&amp;title=The+Case+for+Objective-C" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.tylerburton.ca/2010/03/the-case-for-objective-c/&amp;t=The+Case+for+Objective-C" rel="nofollow" class="external" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://www.tylerburton.ca/2010/03/the-case-for-objective-c/&amp;imageurl=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-reddit">
			<a href="http://reddit.com/submit?url=http://www.tylerburton.ca/2010/03/the-case-for-objective-c/&amp;title=The+Case+for+Objective-C" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-slashdot">
			<a href="http://slashdot.org/bookmark.pl?url=http://www.tylerburton.ca/2010/03/the-case-for-objective-c/&amp;title=The+Case+for+Objective-C" rel="nofollow" class="external" title="Submit this to SlashDot">Submit this to SlashDot</a>
		</li>
		<li class="shr-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://www.tylerburton.ca/2010/03/the-case-for-objective-c/&amp;title=The+Case+for+Objective-C" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=The+Case+for+Objective-C+-+http://b2l.me/kqdtx&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

]]></content:encoded>
			<wfw:commentRss>http://www.tylerburton.ca/2010/03/the-case-for-objective-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XMLVM makes all programming languages portable</title>
		<link>http://www.tylerburton.ca/2010/01/xmlvm-makes-all-programming-languages-portable/</link>
		<comments>http://www.tylerburton.ca/2010/01/xmlvm-makes-all-programming-languages-portable/#comments</comments>
		<pubDate>Fri, 08 Jan 2010 00:22:19 +0000</pubDate>
		<dc:creator>Tyler Burton</dc:creator>
				<category><![CDATA[F/OSS]]></category>
		<category><![CDATA[Free Software]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Obj-C]]></category>
		<category><![CDATA[portable code]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[XMLVM]]></category>

		<guid isPermaLink="false">http://www.tylerburton.ca/?p=219</guid>
		<description><![CDATA[I honestly don&#8217;t remember how I came across this awesome project but I am certainly glad I did! XMLVM is a software toolchain which is designed to take cross-compilation to a whole new level. Rather than just offer OS portability, XMLVM is able to actually offer OS, hardware and programming language portability. Here&#8217;s how it [...]]]></description>
			<content:encoded><![CDATA[<p>I honestly don&#8217;t remember how I came across this awesome project but I am certainly glad I did! <a href="http://www.xmlvm.org/" target="_blank">XMLVM</a> is a software toolchain which is designed to take <a href="http://en.wikipedia.org/wiki/Cross_compiler" target="_blank">cross-compilation</a> to a whole new level. Rather than just offer <a href="http://en.wikipedia.org/wiki/Operating_system" target="_blank">OS</a> portability, XMLVM is able to actually offer OS, hardware <em>and</em> programming language portability.</p>
<p>Here&#8217;s how it works: you write a program in a programming language of your choice, say <a href="http://en.wikipedia.org/wiki/.NET_Framework" target="_blank">.NET</a>. Once compiled you send it through the first step of XMLVM which analyzes the produced <a href="http://en.wikipedia.org/wiki/Common_Language_Infrastructure" target="_blank">CIL</a> and creates an <a href="http://en.wikipedia.org/wiki/XML" target="_blank">XML</a> document out of it. It would end up looking like something similar to this:</p>
<blockquote><p>&lt;clr:ldc type=&#8221;int&#8221; value=&#8221;2&#8243;/&gt;<br />
&lt;clr:rem/&gt;</p></blockquote>
<p>Next this XML document is fed through what XMLVM calls the data-flow analysis (DFA). Basically you can think of DFA as a <a href="http://en.wikipedia.org/wiki/Pseudocode" target="_blank">pseudo-language</a> that simply describes the operations that the program is trying to perform. Once in this form the code is considered portable. XMLVM then lets you pick a target, for example the <a href="http://en.wikipedia.org/wiki/Java_%28software_platform%29" target="_blank">Java</a> <a href="http://en.wikipedia.org/wiki/Java_Virtual_Machine" target="_blank">JVM</a>, and automates the conversion of the DFA to an XML representation of the <a href="http://en.wikipedia.org/wiki/Java_bytecode" target="_blank">java byte code</a>. From there it&#8217;s an easy conversion back to true java byte code.</p>
<p>Now think about this in practical terms for a second. That means that you can write a program in a .NET language (C#), and have it automatically ported and compiled to Java. Expand on this a bit and consider that you can write the same program in <em>any</em> language and have it converted to <em>any</em> other language. Currently the XMLVM offers a lot of other cool options as well and has actually been designed a lot with mobile devices in mind. Now you can write a program once and have it automatically converted to <a href="http://en.wikipedia.org/wiki/Objective-C" target="_blank">Objective-C</a>, to run on the <a href="http://en.wikipedia.org/wiki/IPhone" target="_blank">iPhone</a>, and to Java to run on <a href="http://en.wikipedia.org/wiki/Android_%28operating_system%29" target="_blank">Android</a>.</p>
<p>I really hope that this project continues to improve and I will certainly be watching it closely. It is still very early in development but from what I have seen it is simply brilliant.</p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center">
<ul class="socials">
		<li class="shr-comfeed">
			<a href="http://www.tylerburton.ca/2010/01/xmlvm-makes-all-programming-languages-portable/feed" rel="nofollow" class="external" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://www.tylerburton.ca/2010/01/xmlvm-makes-all-programming-languages-portable/&amp;title=XMLVM+makes+all+programming+languages+portable" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://www.tylerburton.ca/2010/01/xmlvm-makes-all-programming-languages-portable/&amp;title=XMLVM+makes+all+programming+languages+portable" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-facebook">
			<a href="http://www.facebook.com/share.php?v=4&amp;src=bm&amp;u=http://www.tylerburton.ca/2010/01/xmlvm-makes-all-programming-languages-portable/&amp;t=XMLVM+makes+all+programming+languages+portable" rel="nofollow" class="external" title="Share this on Facebook">Share this on Facebook</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://www.tylerburton.ca/2010/01/xmlvm-makes-all-programming-languages-portable/&amp;imageurl=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-reddit">
			<a href="http://reddit.com/submit?url=http://www.tylerburton.ca/2010/01/xmlvm-makes-all-programming-languages-portable/&amp;title=XMLVM+makes+all+programming+languages+portable" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a>
		</li>
		<li class="shr-slashdot">
			<a href="http://slashdot.org/bookmark.pl?url=http://www.tylerburton.ca/2010/01/xmlvm-makes-all-programming-languages-portable/&amp;title=XMLVM+makes+all+programming+languages+portable" rel="nofollow" class="external" title="Submit this to SlashDot">Submit this to SlashDot</a>
		</li>
		<li class="shr-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://www.tylerburton.ca/2010/01/xmlvm-makes-all-programming-languages-portable/&amp;title=XMLVM+makes+all+programming+languages+portable" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=XMLVM+makes+all+programming+languages+portable+-+http://b2l.me/c8h9f&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

]]></content:encoded>
			<wfw:commentRss>http://www.tylerburton.ca/2010/01/xmlvm-makes-all-programming-languages-portable/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
