<?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>Reinvent The Wheel</title>
	<atom:link href="http://www.simonjstuart.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.simonjstuart.com</link>
	<description>Round is nice, but we can do better!</description>
	<lastBuildDate>Tue, 15 May 2012 09:13:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>RADSplit Beta 2 &#8211; Coming this weekend (NEW FEATURES)</title>
		<link>http://www.simonjstuart.com/2012/05/15/radsplit-beta-2-coming-this-weekend-new-features/</link>
		<comments>http://www.simonjstuart.com/2012/05/15/radsplit-beta-2-coming-this-weekend-new-features/#comments</comments>
		<pubDate>Tue, 15 May 2012 09:13:49 +0000</pubDate>
		<dc:creator>Simon J Stuart</dc:creator>
				<category><![CDATA[2007]]></category>
		<category><![CDATA[2009]]></category>
		<category><![CDATA[2010]]></category>
		<category><![CDATA[Announcements]]></category>
		<category><![CDATA[C++ Builder]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[FireMonkey]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[XE]]></category>
		<category><![CDATA[XE2]]></category>
		<category><![CDATA[CBuilder]]></category>
		<category><![CDATA[Designer]]></category>
		<category><![CDATA[Dock]]></category>
		<category><![CDATA[Dockable]]></category>
		<category><![CDATA[Docking]]></category>
		<category><![CDATA[Edit]]></category>
		<category><![CDATA[Editor]]></category>
		<category><![CDATA[Form]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[rad]]></category>
		<category><![CDATA[RADSplit]]></category>
		<category><![CDATA[Split]]></category>
		<category><![CDATA[Splitter]]></category>
		<category><![CDATA[Studio]]></category>
		<category><![CDATA[Window]]></category>

		<guid isPermaLink="false">http://www.simonjstuart.com/?p=1433</guid>
		<description><![CDATA[Having had some great feedback re the RADSplit Beta, I figured I&#8217;d share with you all what you can expect in Beta 2 (coming this weekend): Quite a few bug fixes (such as when dragging an Editor Tab from one &#8230; <a href="http://www.simonjstuart.com/2012/05/15/radsplit-beta-2-coming-this-weekend-new-features/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Having had some great feedback re the RADSplit Beta, I figured I&#8217;d share with you all what you can expect in Beta 2 (coming this weekend):</p>
<ul>
<li>Quite a few bug fixes (such as when dragging an Editor Tab from one Editor Window to another when there is only one Tab in the initial Editor. At present this destroys the contents of the Tab, this won&#8217;t be the case in Beta 2).</li>
<li>New Editor Windows will be dockable by default (with full-screen option next to the X on the Form&#8217;s Titlebar)</li>
<li>Unit Cloning will become a standard option along with &#8220;New Edit Window&#8221;</li>
<li>A &#8220;RADSplit&#8221; menu will be placed in the IDE</li>
<li>Unit Cloning will be added to the context menu of the Editor</li>
<li>(Possible) The dock&#8217;s Title Bar will be removed when an editor is docked, and you&#8217;ll be able to drag tabs or the editor itself to split them from their docked position.</li>
<li>(Possible) Side-by-Side (Vertical or Horizontal) Editing for Forms/DataModules and their Source will be added as an option. So the Form and its Source (for example) will appear next to each other in the same Editor</li>
</ul>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonjstuart.com/2012/05/15/radsplit-beta-2-coming-this-weekend-new-features/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Introducing RADSplit Beta (DOWNLOAD NOW!)</title>
		<link>http://www.simonjstuart.com/2012/05/13/introducing-radsplit-beta-download-now/</link>
		<comments>http://www.simonjstuart.com/2012/05/13/introducing-radsplit-beta-download-now/#comments</comments>
		<pubDate>Sun, 13 May 2012 10:50:00 +0000</pubDate>
		<dc:creator>Simon J Stuart</dc:creator>
				<category><![CDATA[2007]]></category>
		<category><![CDATA[2009]]></category>
		<category><![CDATA[2010]]></category>
		<category><![CDATA[Announcements]]></category>
		<category><![CDATA[C++ Builder]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[FireMonkey]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[RAD Studio]]></category>
		<category><![CDATA[XE]]></category>
		<category><![CDATA[XE2]]></category>
		<category><![CDATA[borland]]></category>
		<category><![CDATA[CBuilder]]></category>
		<category><![CDATA[codegear]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[Dock]]></category>
		<category><![CDATA[Dockable]]></category>
		<category><![CDATA[Docking]]></category>
		<category><![CDATA[Editor]]></category>
		<category><![CDATA[embarcadero]]></category>
		<category><![CDATA[Merge]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[Programmer]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[rad]]></category>
		<category><![CDATA[RADSplit]]></category>
		<category><![CDATA[Screen]]></category>
		<category><![CDATA[Split]]></category>
		<category><![CDATA[Studio]]></category>
		<category><![CDATA[Tool]]></category>
		<category><![CDATA[Window]]></category>
		<category><![CDATA[Wizard]]></category>

		<guid isPermaLink="false">http://www.simonjstuart.com/?p=1429</guid>
		<description><![CDATA[Yesterday I announced on Google+ that I was working on a small (but very useful) RAD Studio (Delphi and C++ Builder) plugin I call &#8220;RADSplit&#8221;. Today I am happy to announce a full BETA release is available for RAD Studio &#8230; <a href="http://www.simonjstuart.com/2012/05/13/introducing-radsplit-beta-download-now/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Yesterday I announced on Google+ that I was working on a small (<em>but very useful</em>) RAD Studio (<em>Delphi and C++ Builder</em>) plugin I call &#8220;RADSplit&#8221;.</p>
<p>Today I am happy to announce a full <strong>BETA</strong> release is available for RAD Studio 2007 to XE2!</p>
<p>Please head over to <a title="RADSplit" href="http://www.simonjstuart.com/delphi-stuff/radsplit/" target="_blank">the temporary RADSplit page</a> to watch a short demonstration video covering installation and various use-cases, as well as <strong>the installation download</strong> for the BETA.</p>
<p>Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonjstuart.com/2012/05/13/introducing-radsplit-beta-download-now/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TTwitter updated to fix &#8220;401&#8243; bug</title>
		<link>http://www.simonjstuart.com/2012/04/04/ttwitter-updated-to-fix-401-bug/</link>
		<comments>http://www.simonjstuart.com/2012/04/04/ttwitter-updated-to-fix-401-bug/#comments</comments>
		<pubDate>Wed, 04 Apr 2012 15:25:31 +0000</pubDate>
		<dc:creator>Simon J Stuart</dc:creator>
				<category><![CDATA[2007]]></category>
		<category><![CDATA[2009]]></category>
		<category><![CDATA[2010]]></category>
		<category><![CDATA[7]]></category>
		<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Components]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Examples]]></category>
		<category><![CDATA[Social Networking]]></category>
		<category><![CDATA[The Internet]]></category>
		<category><![CDATA[XE]]></category>
		<category><![CDATA[XE2]]></category>
		<category><![CDATA[XE3]]></category>
		<category><![CDATA[borland]]></category>
		<category><![CDATA[codegear]]></category>
		<category><![CDATA[computer]]></category>
		<category><![CDATA[embarcadero]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[OSN]]></category>
		<category><![CDATA[Programmer]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[rad]]></category>
		<category><![CDATA[Social]]></category>
		<category><![CDATA[Studio]]></category>
		<category><![CDATA[TTwitter]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://www.simonjstuart.com/?p=1410</guid>
		<description><![CDATA[I have just released an update for TTwitter (the original &#8220;deprecated&#8221; version currently available on this blog) to fix the &#8220;401&#8243; bug experienced by many of you. The update has been committed to the SVN repository, and an updated zip &#8230; <a href="http://www.simonjstuart.com/2012/04/04/ttwitter-updated-to-fix-401-bug/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I have just released an update for TTwitter (<em>the original &#8220;deprecated&#8221; version currently available on this blog</em>) to fix the &#8220;401&#8243; bug experienced by many of you.</p>
<p>The update has been committed to the SVN repository, and an <strong><em>updated zip file</em></strong> has been uploaded too!</p>
<p>You can find more information on TTwitter, as well as the necessary download information/link on <a title="TTwitter" href="http://www.simonjstuart.com/delphi-stuff/ttwitter/" target="_blank">the TTwitter page</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonjstuart.com/2012/04/04/ttwitter-updated-to-fix-401-bug/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Lua4Delphi News: Massive Update, Webinars, Installer, Professional</title>
		<link>http://www.simonjstuart.com/2012/03/29/lua4delphi-news-massive-update-webinars-installer-professional/</link>
		<comments>http://www.simonjstuart.com/2012/03/29/lua4delphi-news-massive-update-webinars-installer-professional/#comments</comments>
		<pubDate>Thu, 29 Mar 2012 14:02:12 +0000</pubDate>
		<dc:creator>Simon J Stuart</dc:creator>
				<category><![CDATA[2010]]></category>
		<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Components]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Examples]]></category>
		<category><![CDATA[FireMonkey]]></category>
		<category><![CDATA[Lazarus]]></category>
		<category><![CDATA[LKSL]]></category>
		<category><![CDATA[Lua]]></category>
		<category><![CDATA[Lua4Delphi]]></category>
		<category><![CDATA[XE]]></category>
		<category><![CDATA[XE2]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[FPC]]></category>
		<category><![CDATA[Language]]></category>
		<category><![CDATA[Lua4Lazarus]]></category>
		<category><![CDATA[Pascal]]></category>
		<category><![CDATA[professional]]></category>
		<category><![CDATA[Programmer]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[rad]]></category>
		<category><![CDATA[Studio]]></category>
		<category><![CDATA[xe]]></category>

		<guid isPermaLink="false">http://www.simonjstuart.com/?p=1406</guid>
		<description><![CDATA[Sorry to redirect you to read this news, but please read this posting on the official Lua4Delphi page on Google+. Feel free to post comments here on this blog entry, or as comments on the Google+ entry (if you have &#8230; <a href="http://www.simonjstuart.com/2012/03/29/lua4delphi-news-massive-update-webinars-installer-professional/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Sorry to redirect you to read this news, but please read <a title="Lua4Delphi News" href="https://plus.google.com/110671656687735218293/posts/7wrE8BxeMtr" target="_blank" onclick="pageTracker._trackPageview('/outgoing/plus.google.com/110671656687735218293/posts/7wrE8BxeMtr?referer=');">this posting on the official Lua4Delphi page on Google+</a>.</p>
<p>Feel free to post comments here on this blog entry, or as comments on the Google+ entry (<em>if you have a Google+ account</em>).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonjstuart.com/2012/03/29/lua4delphi-news-massive-update-webinars-installer-professional/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Major Lua4Delphi update released on SVN</title>
		<link>http://www.simonjstuart.com/2012/03/12/major-lua4delphi-update-released-on-svn/</link>
		<comments>http://www.simonjstuart.com/2012/03/12/major-lua4delphi-update-released-on-svn/#comments</comments>
		<pubDate>Mon, 12 Mar 2012 12:57:18 +0000</pubDate>
		<dc:creator>Simon J Stuart</dc:creator>
				<category><![CDATA[2010]]></category>
		<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Components]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Examples]]></category>
		<category><![CDATA[FireMonkey]]></category>
		<category><![CDATA[LKSL]]></category>
		<category><![CDATA[Lua]]></category>
		<category><![CDATA[Lua4Delphi]]></category>
		<category><![CDATA[XE]]></category>
		<category><![CDATA[XE2]]></category>

		<guid isPermaLink="false">http://www.simonjstuart.com/?p=1397</guid>
		<description><![CDATA[I have just released a major update to Lua4Delphi. It&#8217;s available on the SVN, and makes many changes including: I have found and fixed multiple bugs, including one encountered by many of you which resulted in being unable to properly/accurately &#8230; <a href="http://www.simonjstuart.com/2012/03/12/major-lua4delphi-update-released-on-svn/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I have just released a <strong>major</strong> update to Lua4Delphi. It&#8217;s available on the SVN, and makes <strong>many</strong> changes including:</p>
<ul>
<li>I have found and fixed <strong>multiple</strong> bugs, including one encountered by many of you which resulted in being unable to properly/accurately read values returned by Lua functions invoked by your Delphi code.</li>
<li>Fixed a serious bug regarding Lua Stack Alignment (<em>all tests now indicate that the Stack is properly maintained in all areas of Lua4Delphi</em>).</li>
<li>Refactored <strong>everything</strong> to use Interfaces now, including Stack Managers!</li>
<li>You need to change all declarations of Delphi procedures to be registered with Lua. You need to change <strong>var AStack: TL4DMethodStack</strong> to <strong>var AStack: IL4DMethodStack</strong>, a minor change from your perspective, but makes a massive difference to the inner-workings.</li>
<li>You can now <strong>read and write Lua tables and metatables</strong>. This is the key piece of the puzzle to be used by the next update (<em>which will introduce all the Wrapper Units</em>).</li>
<li>The XE2 <strong>BasicLuaIntegration.exe</strong> demo has now been updated to demonstrate how to read and write Lua tables. Consider this code as a <em>rough example only</em>, as it adds no useful function to the demo at this time.</li>
</ul>
<p>This is a <strong>prepartory update</strong>, to address everything which prevents the Wrapper Type system from working properly. The next update will be the single largest update thus far, and (<em>assuming no major bug reports with this update</em>) should be available within a week.</p>
<p>I&#8217;m planning a some-what improptu webinar for around 1:30PM UTC (<em>London time</em>), and will update this post with the URL to join. No registration is required!</p>
<p>So, if you&#8217;re confident enough to update your copy of Lua4Delphi (<em>and make the necessary changes to your existing implementing code</em>), feel free to do so now. If you&#8217;d rather wait for a demonstration of these changes and additional features, 1:30 PM London time is when the webinar begins.</p>
<p>Please keep in mind I still have a fairly annoying cough, so I ask for forgiveness in advance should I struggle to speak at times.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonjstuart.com/2012/03/12/major-lua4delphi-update-released-on-svn/feed/</wfw:commentRss>
		<slash:comments>45</slash:comments>
		</item>
		<item>
		<title>&#8220;The PC will be dead by the end of the year&#8221;</title>
		<link>http://www.simonjstuart.com/2012/03/08/the-pc-will-be-dead-by-the-end-of-the-year/</link>
		<comments>http://www.simonjstuart.com/2012/03/08/the-pc-will-be-dead-by-the-end-of-the-year/#comments</comments>
		<pubDate>Thu, 08 Mar 2012 19:30:57 +0000</pubDate>
		<dc:creator>Simon J Stuart</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Blackberry]]></category>
		<category><![CDATA[Computers]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[Laptops]]></category>
		<category><![CDATA[Life]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[PC]]></category>
		<category><![CDATA[Smart Phones]]></category>
		<category><![CDATA[Social Networking]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[The Internet]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[Web Applications]]></category>
		<category><![CDATA[Windows Phone]]></category>

		<guid isPermaLink="false">http://www.simonjstuart.com/?p=1391</guid>
		<description><![CDATA[You&#8217;ve probably read titles very-much like this one all over the Internet for the past 15-20 years. Indeed, it seems every year is the final year of the PC, so sayeth every technologically misinformed moron yet to be cut from &#8230; <a href="http://www.simonjstuart.com/2012/03/08/the-pc-will-be-dead-by-the-end-of-the-year/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>You&#8217;ve probably read titles very-much like this one all over the Internet for the past 15-20 years. Indeed, it seems every year is the final year of the PC, so sayeth every technologically misinformed moron yet to be cut from the human gene pool by natural selection facilitated by their own stupid actions.</p>
<p>These are the very same idiots (<em>and their descendants</em>) whom whole-heartedly proclaimed at the rise of the Personal Computer that it spelt imminent doom for the common Calculator. Well, I&#8217;ve yet to encounter an office where every desk didn&#8217;t contain at least one common Calculator, alongside the Desktop Computer used to perform the more complex tasks.</p>
<p>Let us ignore the semantics of the term &#8220;PC&#8221; for a moment, and presume that they are using it to describe the traditional Desktop Computer, found in almost every home and office in the technological world.</p>
<p>Why is it that the birth of every new <em>gadget</em> simply <em>must</em> spell doom for whatever technology is at that time the most prevalent? I&#8217;ve genuinely been trying, and have yet to find a single example of a gadget&#8217;s birth leading imminantly to the death of other (<em>more widely adopted</em>) technologies&#8230; not a <em>single</em> example!</p>
<p>Indeed, it seems that the misguided fools who make such masochistic associations perceive that technology works in much the same way as America&#8217;s crusade (<em>whoops, I mean &#8220;war on terrorism&#8221;</em>): a ceaseless <em>battle</em>, which can never be won but always expands its reach to the next richest territory (<em>device</em>) to acquire its wealth (<em>users</em>) before it moves on to the next.</p>
<p>Technology simply does <em>not</em> work this way, never has worked this way, and never will work this way.</p>
<p>Gadgets exist to serve specific needs, in precise recognition that no one solution suits all. Your tablet device is useless as a phone, and your phone is useless when it comes to word processing, spreadsheets or database manipulation. Likewise, your Desktop Computer is useless in terms of portability.<br />
The point is that no one device meets every need, and so diversity is required.</p>
<p>You cannot use the iPad (<em>for example</em>) as the basis for your proclamation of the death of the Desktop Computer (<em>again, for example</em>). You cannot claim that the iPhone spells imminent doom for the iPad, or that some new type of gadget as-yet unimagined requires the death of any existing technology to reach its rightful place in the market.</p>
<p>When you buy a device, you&#8217;re buying a product to meet a need. You&#8217;re <em>not</em> buying into a <em>cult</em>, requiring that you announce your <em>absolute obedience</em> through the renouncement of all other devices.<br />
Your device does not come with a set of <em>commandments</em> featuring such biblical gems as &#8220;<em>thou shalt not worship any other devices</em>&#8220;, or &#8220;<em>burn the unbelievers for they impact on our profit margins</em>&#8220;.</p>
<p>This leads us neatly to another issue I want to mention:</p>
<h2>&#8220;<em>Native development will be dead within a year</em>&#8220;</h2>
<p>I read statements almost identical to the above when .NET was announced, with developers pledging their undying faith for Microsoft&#8217;s then-newest money spinner (<em>now largely rendered worthless by Windows 8, by the way</em>).</p>
<p>Indeed, similar statements were made with regard to almost all development frameworks, and yet native development still runs strong.</p>
<p>When performance and quality are primary considerations in a software product, native development is always chosen (<em>by any executive who either listens to his/her team, or has one iota of knowledge of software development</em>).</p>
<p>With Microsoft&#8217;s latest abomination (<em>namely Windows 8</em>) bringing a bastardized form of HTML5 and JavaScript to the desktop (<em>quite frankly the dumbest idea in the history of dumb ideas</em>), proclamations of the impending death of native development are once again running strong.</p>
<p>Of course, the type of thought-deprived fools making these inane statements haven&#8217;t considered that just because HTML5 and JavaScript work fine for the Web, it doesn&#8217;t mean they will work so well for other purposes. Indeed, this is why there has always been a clear division between technologies for the Desktop, and technologies for the Web (<em>the two are simply so different that a clear line must always divide them</em>).</p>
<p>I myself toyed with the idea of using JavaScript and HTML (<em>HTML5 didn&#8217;t exist at the time</em>) as a means of extending Desktop applications way back in 2008, only to abandon the idea in short-order when realizing the practical limitations of what I have since termed as &#8220;Frankensystems&#8221;.</p>
<p>A growing number of developers have begun to realize (<em>as a different many of us &#8211; myself included &#8211; had realized long ago</em>) that <em>any</em> form of runtime framework introduces critical limitations in the development of our software.<br />
All of these can be summed up by the simple truth that, <em>when you develop for a runtime framework, what you can produce is restricted only to what is made available by the runtime framework.</em></p>
<p>You will never, for example, encounter a Device Driver written in C#, or HTML5/JavaScript&#8230; it simply cannot be done, because the frameworks provide no means of accomplishing this.</p>
<p>So, while self-proclaimed &#8220;web developers&#8221; rejoice at this foolish belief that Windows 8 will make it easy for them to apply what they know of HTML and JavaScript to producing fully-functional Desktop applications, this simply isn&#8217;t true (<em>at least, not in the way they think</em>).<br />
I&#8217;ve actually had a conversation with a web developer who genuinely believed they&#8217;d be able to use Joomla as the foundation of a complete Desktop application for Windows 8. I&#8217;m not joking! I won&#8217;t mention their name here to spare them the embarrassment, but sufficed to say I haven&#8217;t laughed so hard in a long, long time.</p>
<p>Anyway, the point I&#8217;m trying to make is that the same masochistic desires for one technology to succeed through the death of its more commonly adopted forebears runs as strong in the software industry as it does in that of the gadget.</p>
<p>I can sum this rant up by simply pointing out the following:</p>
<ul>
<li>The PC didn&#8217;t kill the Calculator.</li>
<li>Mobile Gadgets haven&#8217;t killed the Desktop Computer.</li>
<li>.NET didn&#8217;t kill native development (<em>indeed, it has now begun to reinforce the market&#8217;s demand for native development</em>)</li>
<li>Windows 8 won&#8217;t transform web developers into software moguls, or advance software development in <em>any</em> positive way.</li>
<li>If you believe that one technology&#8217;s success requires another&#8217;s utter failure, you need your head examined.</li>
</ul>
<p>Despite the headline image (<em>the mock tombstone</em>), I shall not bid a peaceful rest to the Desktop Computer (<em>or native software development</em>)&#8230; not now, not ever. The simple truth is that there will <em>always</em> be a need for them, in whatever form into-which they evolve.</p>
<p>If you&#8217;ve properly read and understood this article, then I shall bid a peaceful rest to whatever misguided belief you may have held on this subject.</p>
<p><a href="http://www.simonjstuart.com/wp-content/uploads/2012/03/tombstone_ignorance.jpg"><img class="aligncenter size-full wp-image-1393" title="tombstone_ignorance" src="http://www.simonjstuart.com/wp-content/uploads/2012/03/tombstone_ignorance.jpg" alt="" width="500" height="300" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonjstuart.com/2012/03/08/the-pc-will-be-dead-by-the-end-of-the-year/feed/</wfw:commentRss>
		<slash:comments>49</slash:comments>
		</item>
		<item>
		<title>How much focus do you believe Embarcadero should apply to bug fixing versus new features in Delphi XE3?</title>
		<link>http://www.simonjstuart.com/2012/03/01/how-much-focus-do-you-believe-embarcadero-should-apply-to-bug-fixing-versus-new-features-in-delphi-xe3/</link>
		<comments>http://www.simonjstuart.com/2012/03/01/how-much-focus-do-you-believe-embarcadero-should-apply-to-bug-fixing-versus-new-features-in-delphi-xe3/#comments</comments>
		<pubDate>Thu, 01 Mar 2012 07:51:58 +0000</pubDate>
		<dc:creator>Simon J Stuart</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Polls]]></category>
		<category><![CDATA[XE2]]></category>
		<category><![CDATA[XE3]]></category>
		<category><![CDATA[32bit]]></category>
		<category><![CDATA[64bit]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[borland]]></category>
		<category><![CDATA[Bug]]></category>
		<category><![CDATA[codegear]]></category>
		<category><![CDATA[Developing]]></category>
		<category><![CDATA[Devleoper]]></category>
		<category><![CDATA[Effort]]></category>
		<category><![CDATA[embarcadero]]></category>
		<category><![CDATA[Features]]></category>
		<category><![CDATA[Fixes]]></category>
		<category><![CDATA[Focus]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[New]]></category>
		<category><![CDATA[OSX]]></category>
		<category><![CDATA[OSX32]]></category>
		<category><![CDATA[OSX64]]></category>
		<category><![CDATA[Platforms]]></category>
		<category><![CDATA[Poll]]></category>
		<category><![CDATA[Programmer]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[rad]]></category>
		<category><![CDATA[Studio]]></category>
		<category><![CDATA[Updates]]></category>
		<category><![CDATA[Win32]]></category>
		<category><![CDATA[Win64]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.simonjstuart.com/?p=1384</guid>
		<description><![CDATA[I&#8217;d like to thank everyone for helping to provide definitive data in my previous poll (If you could have one new platform in Delphi XE3, which would it be?). The information you all provided has been very useful already (and &#8230; <a href="http://www.simonjstuart.com/2012/03/01/how-much-focus-do-you-believe-embarcadero-should-apply-to-bug-fixing-versus-new-features-in-delphi-xe3/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;d like to thank everyone for helping to provide definitive data in my previous poll (<a title="If you could have one new platform in Delphi XE3, which would it be?" href="http://www.simonjstuart.com/2012/02/27/if-you-could-have-one-new-platform-in-delphi-xe3-which-would-it-be/" target="_blank"><em>If you could have one new platform in Delphi XE3, which would it be?</em></a>).<br />
The information you all provided has been very useful already (<em>and will be useful for us all in the not-so-distant future</em>).</p>
<p>So, now here&#8217;s another poll I&#8217;d like to get your opinion on&#8230;</p>
<h2><em>How much focus do you believe Embarcadero should apply to bug fixing versus new features in Delphi XE3?</em></h2>
<p>I&#8217;m interested to see what the majority consensus is on this issue. As with the previous poll, there is a purpose to my asking this.</p>
<p><code>Note: There is a poll embedded within this post, please visit the site to participate in this post's poll.</code></p>
<p>Thanks again!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonjstuart.com/2012/03/01/how-much-focus-do-you-believe-embarcadero-should-apply-to-bug-fixing-versus-new-features-in-delphi-xe3/feed/</wfw:commentRss>
		<slash:comments>32</slash:comments>
		</item>
		<item>
		<title>Designing Apps to properly accommodate the iOS,Android and Windows Phone markets</title>
		<link>http://www.simonjstuart.com/2012/02/28/designing-apps-properly-accommodate-ios-android-windows-phone-markets/</link>
		<comments>http://www.simonjstuart.com/2012/02/28/designing-apps-properly-accommodate-ios-android-windows-phone-markets/#comments</comments>
		<pubDate>Tue, 28 Feb 2012 23:45:02 +0000</pubDate>
		<dc:creator>Simon J Stuart</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Blackberry]]></category>
		<category><![CDATA[Computers]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[Lazarus]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[PC]]></category>
		<category><![CDATA[Smart Phones]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[Web Applications]]></category>
		<category><![CDATA[Windows Phone]]></category>
		<category><![CDATA[XE2]]></category>
		<category><![CDATA[App]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[Experience]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[graphics]]></category>
		<category><![CDATA[GUI]]></category>
		<category><![CDATA[Ice-cream]]></category>
		<category><![CDATA[ICS]]></category>
		<category><![CDATA[Interface]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[iPod]]></category>
		<category><![CDATA[iStore]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[Mango]]></category>
		<category><![CDATA[Marketplace]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Nokia]]></category>
		<category><![CDATA[OSX]]></category>
		<category><![CDATA[Phone]]></category>
		<category><![CDATA[Programmer]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Sandwich]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[Style]]></category>
		<category><![CDATA[Tablet]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[User]]></category>
		<category><![CDATA[UX]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[WP7]]></category>
		<category><![CDATA[WP7.5]]></category>
		<category><![CDATA[WP8]]></category>

		<guid isPermaLink="false">http://www.simonjstuart.com/?p=1330</guid>
		<description><![CDATA[My well-known &#8220;anti-Apple&#8221; bias&#8230; I want to be completely transparent about this&#8230; it is no great secret that I have a very strong anti-Apple bias (for reasons not of interest to this article). My bias plays no part in this &#8230; <a href="http://www.simonjstuart.com/2012/02/28/designing-apps-properly-accommodate-ios-android-windows-phone-markets/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<h4><a href="http://www.simonjstuart.com/wp-content/uploads/2012/02/apple_ipad_logo.png"><img class="alignleft  wp-image-1370" src="http://www.simonjstuart.com/wp-content/uploads/2012/02/apple_ipad_logo-256x300.png" alt="" width="154" height="180" /></a><a href="http://www.simonjstuart.com/wp-content/uploads/2012/02/Windows-Phone-Logo.png"><img class="alignright  wp-image-1372" title="Windows Phone Logo" src="http://www.simonjstuart.com/wp-content/uploads/2012/02/Windows-Phone-Logo-300x293.png" alt="" width="180" height="176" /></a><a href="http://www.simonjstuart.com/wp-content/uploads/2012/02/Android-ICS-logo.png"><img class="aligncenter  wp-image-1371" title="Android ICS logo" src="http://www.simonjstuart.com/wp-content/uploads/2012/02/Android-ICS-logo-300x215.png" alt="" width="270" height="194" /></a></h4>
<h4></h4>
<h4></h4>
<h4>My well-known &#8220;anti-Apple&#8221; bias&#8230;</h4>
<p>I want to be completely transparent about this&#8230; it is no great secret that I have a very strong anti-Apple bias (<em>for reasons not of interest to this article</em>). My bias plays no part in this article, nor are the pro&#8217;s and con&#8217;s of Android, Windows Phone or iOS, Google, Microsoft or Apple discussed here.</p>
<p>This article is intended to be fully objective, and serves merely to provide some fundamental understanding I believe is lacking at present.</p>
<h4>My background&#8230;</h4>
<p>Most of you only know me as a Windows developer using (<em>primarily</em>) Delphi and FreePascal/Lazarus.</p>
<p>What you may not know is that I do actually produce more than a few Android apps for clients (<em>to be used within their respective companies as a replacement for PCs in certain departments such as dispatch</em>).</p>
<p>I have subcontracted the development of the same apps for iOS devices where requested (<em>based entirely on my designs</em>), and I currently have two Android apps in development (<em>one of which I&#8217;m also developing for Windows Phone, and am contemplating releasing on iOS as well</em>).</p>
<p>The &#8220;mobile Apps&#8221; I have developed for clients had the requirement of being able to run on both Tablets and Phones.</p>
<div id="attachment_1357" class="wp-caption alignleft" style="width: 160px"><a href="http://www.simonjstuart.com/wp-content/uploads/2012/02/Sunrise-With-the-Scobleizer.jpg"><img class="size-thumbnail wp-image-1357" title="© Robert Scoble" src="http://www.simonjstuart.com/wp-content/uploads/2012/02/Sunrise-With-the-Scobleizer-150x150.jpg" alt="© Robert Scoble" width="150" height="150" /></a><p class="wp-caption-text">© Robert Scoble</p></div>
<h4>Why this article?</h4>
<div id="attachment_1359" class="wp-caption alignright" style="width: 190px"><a href="http://www.simonjstuart.com/wp-content/uploads/2012/02/sam-logo-correct.jpg"><img class=" wp-image-1359 " title="© Samsung" src="http://www.simonjstuart.com/wp-content/uploads/2012/02/sam-logo-correct-300x100.jpg" alt="© Samsung" width="180" height="60" /></a><p class="wp-caption-text">© Samsung</p></div>
<p>This article is born of a <a title="Android/iOS Google+ Post by Robert Scoble" href="https://plus.google.com/111091089527727420853/posts/Fx6Z8X1t6Ti" target="_blank" onclick="pageTracker._trackPageview('/outgoing/plus.google.com/111091089527727420853/posts/Fx6Z8X1t6Ti?referer=');">Google+ posting by Robert Scoble</a> (<em>a well-respected employee of Rackspace</em>), in which he casts his opinions on various <a title="CNET - Samsung were not doing very well in the tablet market" href="http://reviews.cnet.com/8301-13970_7-57385739-78/samsung-were-not-doing-very-well-in-the-tablet-market/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/reviews.cnet.com/8301-13970_7-57385739-78/samsung-were-not-doing-very-well-in-the-tablet-market/?referer=');">statements made by the CEO of Samsung</a></p>
<p>regarding the supposed lack of success of Android (<em>more specifically: Samsung&#8217;s lack of success in the Tablet market</em>) from Samsung&#8217;s perspective. This article also addresses many other statements around the Internet where the user count of an App between different platforms is used to judge the popularity of one platform over another (<em>a naive practise at best, deliberately misleading at worst</em>).</p>
<p>With the above said, let&#8217;s get on with the subject at hand&#8230;</p>
<h2>The Device Divide</h2>
<p>Let&#8217;s begin by taking a look at the differences between phones and tablets, as this is a major consideration many developers are simply ignoring, and many others not properly handling.</p>
<div id="attachment_1344" class="wp-caption alignleft" style="width: 313px"><a href="http://www.simonjstuart.com/wp-content/uploads/2012/02/Android_Phones_and_Tablets_selected.jpg"><img class="size-full wp-image-1344" title="Android Tablet (Left), Phone (Right)" src="http://www.simonjstuart.com/wp-content/uploads/2012/02/Android_Phones_and_Tablets_selected.jpg" alt="Android Tablet (Left), Phone (Right)" width="303" height="304" /></a><p class="wp-caption-text">Android Tablet (Left), Phone (Right)</p></div>
<h3>Physical Size</h3>
<p>This is the most obvious difference, but also one of the most significantly overlooked.</p>
<p>Mobile phones tend to have a much smaller display than tablets (<em>goes without saying</em>). This means that the amount of information you can display on a phone at any one time is substantially less than the amount you can display on a tablet (<em>stating the obvious again, I know</em>).<br />
The tendency of many developers (<em>as I have witnessed more often than I&#8217;m happy to admit</em>) is to essentially <em>squeeze</em> all of the information into the available display (<em>sometimes by simply making the text, images and controls smaller overall</em>). This kind of design is entirely ignorant of providing the best user experience for any given form-factor, and almost never works well.</p>
<p>With a phone, the limited real-estate afforded by the typical 3-4&#8243; display means that the user interface needs to be concise. Simplicity is paramount as the display simply isn&#8217;t large enough (<em>or even necessarily of high enough resolution</em>) to accommodate large numbers of controls or menus.</p>
<p>In contrast, tablets have much more screen real-estate (<em>7-10.1&#8243;</em>), so more consideration should be given to logically dividing groups of controls and menus. That&#8217;s not to say that tablet apps should be in any way convoluted or overcomplicated, but rather that the larger display simply means that our apps can do more easily, and display much more at any one time, thus making it logical to exploit the additional real-estate to the benefit of the user.</p>
<blockquote><p>Remember: Just because it is possible to produce a single app with a single GUI which will run on both phones <em>and</em> tablets, that <em>doesn&#8217;t</em> mean you should!</p></blockquote>
<h3>Connectivity</h3>
<div id="attachment_1349" class="wp-caption alignright" style="width: 310px"><a href="http://www.simonjstuart.com/wp-content/uploads/2012/02/connection-icon.png"><img class="size-medium wp-image-1349" title="Connectivity" src="http://www.simonjstuart.com/wp-content/uploads/2012/02/connection-icon-300x240.png" alt="Connectivity" width="300" height="240" /></a><p class="wp-caption-text">Connectivity</p></div>
<p>Given that mobile phones are primarily communication devices, it is a fairly safe assumption that these devices will <em>almost always</em> be connected to the Internet by one means or another (<em>be that WiFi, 2G, 3G or 4G</em>). That&#8217;s not to suggest that &#8220;mobile phones are always connected&#8221;, just that they are <em>almost</em> always connected, therefore it is acceptable for an App to rely on an Internet connection being present as the chances are it always will be when the app is required by the user.</p>
<p>Unfortunately, the same is not always true of tablet devices. Indeed, while iPads all have a SIM slot and 2G/3G data (<em><strong>edit: </strong>I&#8217;m now informed that not all iPads have a SIM slot&#8230; I didn&#8217;t know this</em>), the same cannot always be said for Android tablet devices. A simple example is that I have the WiFi model of the Motorola Xoom tablet, which means it is only connected to the Internet when a WiFi network is present (<em>or when I choose to tether it to my phone to share its data connection, but not everyone has the ability to do this</em>).</p>
<p>Since not all Android tablets have a constant data connection, it is <em>not</em> a safe assumption that these devices will be connected to the Internet at any given moment. This means that your app should (<em>if at all possible</em>) be less dependant on Internet connectivity when running on a tablet device (<em>certainly in the context of Android, anyway</em>). Your app is no good on a tablet if it&#8217;s unable to function without an Internet connection when the tablet isn&#8217;t connected (<em>I said it, even though it need not have been said</em>).</p>
<blockquote><p>Remember: Your app should behave gracefully when in the absence of an Internet connection, especially when running on an Android tablet!</p></blockquote>
<div id="attachment_1347" class="wp-caption alignleft" style="width: 310px"><a href="http://www.simonjstuart.com/wp-content/uploads/2012/02/Motorola-DEFY-Front-with-Virtual-Keyboard.jpg"><img class="size-medium wp-image-1347" title="Phone Virtual Keyboard" src="http://www.simonjstuart.com/wp-content/uploads/2012/02/Motorola-DEFY-Front-with-Virtual-Keyboard-300x168.jpg" alt="Phone Virtual Keyboard" width="300" height="168" /></a><p class="wp-caption-text">Phone Virtual Keyboard</p></div>
<h3>Ergonomics of input</h3>
<p>Technically this topic relates to the difference in physical size between phones and tablets, but is in some ways more complicated so I&#8217;m discussing it separately.</p>
<p>We carry our phones everywhere, and for the most part they serve their purpose just fine. A fairly major issue occurs, however, whenever it becomes necessary to type any significant amount.</p>
<p>Personally I find it almost impossible to type an e-mail on any smart-phone (<em>whether using a touchscreen, digit buttons or even a &#8220;full&#8221; QWERTY keyboard on the device itself</em>).</p>
<p>To address this, phone apps should require as little typed input from the user as possible. There are countless instances I&#8217;ve encountered where an app requires me to type when it would easily have been possible to have used some form of logical selector (<em>such as a &#8220;Progression Tree&#8221; or even a numeric slider</em>).</p>
<blockquote><p>Remember: When it comes to phone apps, the less typing involved the better!</p></blockquote>
<p>Tablet devices provide for a much better typing experience, as the display size allows for larger (<em>thus more accurate</em>) virtual keyboard keys, and even for a more ergonomic virtual keyboard layout. It is therefore acceptable to allow for your app to involve more typed input from the user on a tablet device.</p>
<blockquote><p>On a similar note: Tablet devices are being used more and more in offices now with a physical keyboard (<em>sometimes even a physical mouse</em>). This makes typing even easier as a physical keyboard provides instant tactile response both prior to and after pressing each key.</p></blockquote>
<h3>Differing performance<a href="http://www.simonjstuart.com/wp-content/uploads/2012/02/ipad-performance.jpg"><img class="alignright size-medium wp-image-1351" title=" " src="http://www.simonjstuart.com/wp-content/uploads/2012/02/ipad-performance-278x300.jpg" alt="" width="278" height="300" /></a></h3>
<p>I believe it is fair to say that the majority of smart-phones on the market are of substantially lower performance than tablets. I of course acknowledge that there are <em>some</em> handsets currently &#8211; and soon to be &#8211; on the market which match or, in some cases, even exceed the performance of certain tablets, but these need to be considered as <em>niche</em> devices rather than common-place.</p>
<p>So, with the above in mind, and dependant on the features of your app, it may be necessary to scale for performance according to the most common hardware between phones and tablets.</p>
<p>For example: if you desire to include a fancy animated user interface, with lots of objects moving around or even high-detail animation in the background (<em>both of which can often be </em>tacky<em> and should be given a great deal of consideration before making your decision to include such things</em>), this may work great on most tablet devices, but could cause very low performance on phones.</p>
<blockquote><p>Remember: It is generally better to conform to the lowest common denominator when it comes to performance, as this will make the largest possible user-base available for your app.</p></blockquote>
<p>The tablet version of your user interface can include more performance-intensive elements than the phone counterpart, so you should accommodate this in your design (<em>where applicable</em>).</p>
<p>This consideration is not only limited to the user interface, of course, as, dependant on what your app is doing, it is possible that certain background processes could perform quite slowly.</p>
<p>If, for example, you are processing an XML dataset for display, it would be better to process less of it on a phone than on a tablet. This makes sense for two reasons, the first being that the phone will likely take longer to process the same portion of the XML dataset, and the second being that it gives you incentive to display less of the data on the screen at any one time (<em>which is better given the smaller display of a phone, too</em>)</p>
<blockquote><p>Remember: The amount of &#8220;work&#8221; you make the device perform should be relative to the typical purpose of the device (<em>less for a phone, slightly more for a tablet</em>)</p></blockquote>
<div id="attachment_1353" class="wp-caption alignleft" style="width: 310px"><a href="http://www.simonjstuart.com/wp-content/uploads/2012/02/Android-Spreadsheets.png"><img class="size-medium wp-image-1353" title="On a PHONE?" src="http://www.simonjstuart.com/wp-content/uploads/2012/02/Android-Spreadsheets-300x200.png" alt="On a PHONE?" width="300" height="200" /></a><p class="wp-caption-text">On a phone?</p></div>
<h3>Different devices have different purposes</h3>
<p>You may think this is as plain as the nose on your face, but it is actually the most commonly overlooked issue when it comes to making mobile apps.</p>
<p>Using myself as an example, I don&#8217;t do everything with my phone what I do with my tablet, and vice-versa. This is because <strong>different devices have different purposes</strong> (<em>as almost anyone would agree without hesitation</em>).</p>
<p>When you are planning your app, one of the very first questions you need to be asking yourself (<em>and/or your team</em>) should be &#8220;<strong><em>is this app for the phone, the tablet, or </em>both<em>?</em></strong>&#8221;<br />
In many cases, your app will be best suited to either one type of device or the other, and acknowledging this early in the design process will not only spare you a lot of disappointment, but will save you a lot of design and development time too.</p>
<blockquote><p>Remember: There is no point in developing your app to support both phones and tablets when only one of these device types will generate any user interest.</p></blockquote>
<p>Whether your specific app is best suited to one, the other or both&#8230; that&#8217;s up to you to determine. Likewise, you should make your intended target device type clear in your app&#8217;s <em>product description</em>, to better guide prospective users as-to the best use of your app.</p>
<blockquote><p>Parallel: You wouldn&#8217;t use your phone to do word processing, spreadsheets or database management! You wouldn&#8217;t use your tablet to place telephone calls (<em>VOIP not-withstanding</em>). You wouldn&#8217;t use your desktop PC as a mobile phone.<strong> You use the right device for any given job!</strong></p></blockquote>
<h2>The Culture Clash</h2>
<p>Moving away from the differences between phones and tablets, there is another equally important consideration developers need to make when targeting different mobile platforms (<em>such as iOS, Android and Windows Phone</em>) with the same app.</p>
<p><strong><a href="http://www.simonjstuart.com/wp-content/uploads/2012/02/AppleStore.jpg"><img class="alignright size-medium wp-image-1364" title=" " src="http://www.simonjstuart.com/wp-content/uploads/2012/02/AppleStore-300x224.jpg" alt="" width="300" height="224" /></a>A person&#8217;s decision when choosing between devices is a direct expression of their culture.</strong></p>
<p>An iOS user, for example, is a very different animal to an Android or Windows Phone user. Likewise an Android user is a very different animal to a Windows Phone user. I mean this in a very serious (<em>non-insulting</em>) way, and I don&#8217;t say this lightly&#8230; it is a well-studied phenomenon.</p>
<p>A person&#8217;s choice between iOS, Android and Windows Phone is (<em>in almost all instances</em>) anything but <em>utilitarian</em>. Studies (<em>you can find them with a Google search</em>) have shown that each consumers&#8217; decision is <em>almost always</em> the result of their receptiveness to one marketing campaign over another. This bias of reception is in turn a result of who that individual is at a cultural level.</p>
<p>To put it quite bluntly: you&#8217;re either brainwashed by Apple, Google or Microsoft.</p>
<p>These studies typically involve teams of people at retailers asking a simple question to customers at the checkout paying for their iOS, Android or Windows Phone product: <em>&#8220;what made you choose this device over the others?&#8221;</em>. The results always clearly conclude that the overwhelming majority of customers based their decision entirely as a result of a particular advertising/marketing campaign, rather than a carefully considered weighing of each devices&#8217; pros and cons.</p>
<p>This isn&#8217;t at all surprising, and is why marketing firms are paid so much money to create the most compelling campaigns. This observation extends far beyond mobile devices, of course, and influences almost every purchase decision a person makes throughout their entire life. Nobody (<em>not even the marketers themselves</em>) is entirely immune to its influence.</p>
<blockquote><p>Why does this matter?</p></blockquote>
<p>Well, given that iOS, Android and Windows Phone users are all culturally and socially different in so many ways, it means that their expectations, requirements and tastes also differ. This creates something of a <em>&#8220;culture clash&#8221;</em> when it comes to apps transcending the different platforms.</p>
<p>These differences are often ignored entirely by app developers, many of whom I would suggest have never even given it a moment&#8217;s thought, and this has led to a lot of inaccurate conclusions when it comes to the comparative popularity of the various platforms.</p>
<p>When the producer of a highly popular app releases the same app on two rival platforms (<em>for example on both iOS and Android</em>), they almost always try to make the app look, feel and perform the same way.</p>
<p>At first glance, this may seem appropriate as it saves on design time, and without considering the cultural and social differences between the users of each platform, you would have no reason to predict that your app&#8217;s popularity would differ significantly between them.</p>
<p>Even if the &#8220;look and feel&#8221; aren&#8217;t designed to be identical between platforms, often apps are developed with one platform in mind, and the other platform is tagged on as almost an after-thought, resulting in an inappropriate user experience for that platforms&#8217; user-base. This also results in the satisfaction of users between platforms being disproportionate, and is still a failure to properly understand the platforms&#8217; users.</p>
<div id="attachment_1342" class="wp-caption alignleft" style="width: 310px"><a href="http://www.simonjstuart.com/wp-content/uploads/2012/02/flurry-ios-vs-android-money.png"><img class="size-medium wp-image-1342" title="Flurry &quot;Stats&quot;" src="http://www.simonjstuart.com/wp-content/uploads/2012/02/flurry-ios-vs-android-money-300x173.png" alt="Flurry &quot;Stats&quot;" width="300" height="173" /></a><p class="wp-caption-text">Flurry &quot;Stats&quot;</p></div>
<p>So, when Mr. &#8220;I made a popular app, so listen to what I have to say&#8221; publishes an article condemning a platform as &#8220;less popular&#8221; based on nothing but the user count of their own product between two platforms, what they&#8217;re actually demonstrating is that <em>they have failed</em> to consider the cultural and social differences between the users of each platform, and therefore their product is simply not as popular on one platform as it is on the other.</p>
<h3>The solution is fairly simple&#8230;<em></em></h3>
<p>What I am suggesting (<em>with the exception of such things as Games which will obviously want to look, feel and play the same way no matter the platform</em>) is that you should have an <em>entirely separate</em> design and development process for each target platform.</p>
<p>You need to research the differing cultures of each target platforms&#8217; respective users, and your design needs to reflect those differences as best you possibly can.</p>
<p>Even before you get to that stage, you need to actually consider whether your app (<em>at its most fundamental level</em>) is even remotely appealing to the users of each particular platform in the first place. There are certain types of app which hold little-to-no interest with the users of one platform, while standing to be immensely popular on another.</p>
<p>It is up to you (<em>and/or your design team</em>) to determine whether it is even worth pursuing a platform with your particular app.</p>
<p>One way of garnering this kind of information is to create a poll, asking your prospective users what their platform is, and whether your app is of interest to them. You can also visit community forums centric to particular platforms, and essentially &#8220;test&#8221; the popularity of your app as a concept before you even begin the detailed planning phase.</p>
<p>The best way to determine whether your particular app will be popular on any given platform is to diversify your team (<em>to have an equal number of designers and developers from each target platform</em>&#8216;s user-base). Ask their opinion, and value their genuine responses.</p>
<p>Should it be apparent that your app <em>could</em> be well-received by a particular platforms&#8217; user-base, allow your team(s) to come up with designs specific to each of those platforms, and invest as much time as it takes to achieve the full satisfaction of your design/development team(s).</p>
<blockquote><p>Remember: Most mistakes in the success of an app occur before development even begins; with poor planning, a poor design, or a lack of adequate market research.</p></blockquote>
<h2>In conclusion&#8230;</h2>
<p>I genuinely believe that if you heed the advice I have provided in this article, you and (<em>where applicable</em>) your team(s) will be able to produce a successful mobile app.</p>
<p>Failure need not be an option if you understand the users, the diversity of those users, the devices and their diversity. An idea is only poor if it is developed inconsiderately.</p>
<p>All of the mistakes I&#8217;ve indicated in this article are easy to avoid if you&#8217;re willing to put in the effort, and there is no reason why you shouldn&#8217;t be able to reach at least one market&#8217;s audience (<em>perhaps even all of them</em>).</p>
<h2>A shameless &#8220;plug&#8221;&#8230;</h2>
<p>Should you feel that the insights I have shared here are beneficial to your work, I am available (<em>through my company LaKraven Studios Ltd</em>) to contract as a consultant (<em>as well as a developer on certain platforms</em>).</p>
<p>I have proven experience in many facets of the software design, development, branding and marketing industry, as well as a wealth of resources I can bring to to any team. Above all, I <em>understand</em> the users of software! I may be able to spare your company from disappointment, as well as save you money (<em>and time</em>) on your investment.</p>
<p>My anti-Apple bias (<em>should that be of concern to you</em>) is one of business ethics. I acknowledge the merits of Apple&#8217;s products, and am more than happy to assist in the design/development process of apps on Apple platforms.</p>
<p>If this offer is of interest, feel free to leave a comment or contact me by any of the means displayed on the &#8220;<em>Contact Me</em>&#8221; widget on the right-hand column.</p>
<div id="attachment_1366" class="wp-caption alignright" style="width: 150px"><a href="http://www.simonjstuart.com/wp-content/uploads/2012/02/blackberry-broken.jpg"><img class=" wp-image-1366 " title="Blackberry" src="http://www.simonjstuart.com/wp-content/uploads/2012/02/blackberry-broken-233x300.jpg" alt="Blackberry" width="140" height="180" /></a><p class="wp-caption-text">Blackberry</p></div>
<h2>Whoops, I almost forgot&#8230;</h2>
<p>Blackberry devices exist too. I&#8217;m told people still use these, but nobody I know (<em>thus why I almost forgot about them</em>).</p>
<p>Feel free to leave the humorous comments expressing your hatred of me for the picture of the broken Blackberry&#8230; it&#8217;s meant in good fun!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonjstuart.com/2012/02/28/designing-apps-properly-accommodate-ios-android-windows-phone-markets/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
		<item>
		<title>If you could have one new platform in Delphi XE3, which would it be?</title>
		<link>http://www.simonjstuart.com/2012/02/27/if-you-could-have-one-new-platform-in-delphi-xe3-which-would-it-be/</link>
		<comments>http://www.simonjstuart.com/2012/02/27/if-you-could-have-one-new-platform-in-delphi-xe3-which-would-it-be/#comments</comments>
		<pubDate>Mon, 27 Feb 2012 04:51:50 +0000</pubDate>
		<dc:creator>Simon J Stuart</dc:creator>
				<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Polls]]></category>
		<category><![CDATA[XE3]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Arch]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[ArchLinux]]></category>
		<category><![CDATA[ARM]]></category>
		<category><![CDATA[BSD]]></category>
		<category><![CDATA[CBuilder]]></category>
		<category><![CDATA[CentOS]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[Mint]]></category>
		<category><![CDATA[Novell]]></category>
		<category><![CDATA[OpenSUSE]]></category>
		<category><![CDATA[OS]]></category>
		<category><![CDATA[OSX]]></category>
		<category><![CDATA[Pascal]]></category>
		<category><![CDATA[platform]]></category>
		<category><![CDATA[Poll]]></category>
		<category><![CDATA[Programmer]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[rad]]></category>
		<category><![CDATA[Studio]]></category>
		<category><![CDATA[SUSE]]></category>
		<category><![CDATA[system]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[Win8]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[WinRT]]></category>

		<guid isPermaLink="false">http://www.simonjstuart.com/?p=1324</guid>
		<description><![CDATA[This poll is more out of curiosity than anything, but will also be useful in determining (somewhat) my direction in certain upcoming projects. Please take a moment to answer, and if you choose &#8220;Other&#8221;, I&#8217;d very-much appreciate it if you &#8230; <a href="http://www.simonjstuart.com/2012/02/27/if-you-could-have-one-new-platform-in-delphi-xe3-which-would-it-be/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>This poll is more out of curiosity than anything, but will also be useful in determining (<em>somewhat</em>) my direction in certain upcoming projects. Please take a moment to answer, and if you choose &#8220;Other&#8221;, I&#8217;d very-much appreciate it if you wouldn&#8217;t mind leaving a comment to let me know what specific platform you&#8217;re interested in.</p>
<p><code>Note: There is a poll embedded within this post, please visit the site to participate in this post's poll.</code></p>
<p>Thanks!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonjstuart.com/2012/02/27/if-you-could-have-one-new-platform-in-delphi-xe3-which-would-it-be/feed/</wfw:commentRss>
		<slash:comments>44</slash:comments>
		</item>
		<item>
		<title>Android Security Advisory: SoundHound &#8220;forcibly&#8221; transmitting GPS position on device boot</title>
		<link>http://www.simonjstuart.com/2012/02/27/android-security-advisory-soundhound-forcibly-transmitting-gps-position-on-device-boot/</link>
		<comments>http://www.simonjstuart.com/2012/02/27/android-security-advisory-soundhound-forcibly-transmitting-gps-position-on-device-boot/#comments</comments>
		<pubDate>Mon, 27 Feb 2012 01:19:09 +0000</pubDate>
		<dc:creator>Simon J Stuart</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Smart Phones]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Alert]]></category>
		<category><![CDATA[App]]></category>
		<category><![CDATA[Bloatware]]></category>
		<category><![CDATA[Boot]]></category>
		<category><![CDATA[Bundled]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[GPS]]></category>
		<category><![CDATA[Important]]></category>
		<category><![CDATA[Malware]]></category>
		<category><![CDATA[Privacy]]></category>
		<category><![CDATA[ROM]]></category>
		<category><![CDATA[Root]]></category>
		<category><![CDATA[Rooting]]></category>
		<category><![CDATA[Rootkit]]></category>
		<category><![CDATA[SoundHound]]></category>
		<category><![CDATA[Warning]]></category>

		<guid isPermaLink="false">http://www.simonjstuart.com/?p=1312</guid>
		<description><![CDATA[Legal note: My use of the word &#8220;forcibly&#8221; denotes that the described activity is taking place without the user having loaded the SoundHound app itself, and occurs before the user can actually load it at all! A few days ago, &#8230; <a href="http://www.simonjstuart.com/2012/02/27/android-security-advisory-soundhound-forcibly-transmitting-gps-position-on-device-boot/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><strong>Legal note: </strong>My use of the word &#8220;forcibly&#8221; denotes that the described activity is taking place without the user having loaded the SoundHound app itself, and occurs before the user can actually load it at all!</p>
<p>A few days ago, I noticed that my Android tablet (<em>Motorola Xoom</em>) was collecting and transmitting my exact GPS co-ordinates every time I reboot it.</p>
<p>Naturally this raised a red flag with me, and so I set about trying to locate which app was responsible.</p>
<p>At first I thought it was Google+, as this was the only update I actually noticed at the time. Like many, I use &#8220;Allow Automatic Updates&#8221; on most apps I had put my trust in, thus many apps updated themselves without waiting for me to start that process manually.</p>
<p>Today I have finally traced the culpret&#8230;</p>
<h2>SoundHound</h2>
<p><a href="http://www.simonjstuart.com/wp-content/uploads/2012/02/SoundHound-Logo.jpg"><img class="aligncenter size-full wp-image-1313" title="SoundHound Logo" src="http://www.simonjstuart.com/wp-content/uploads/2012/02/SoundHound-Logo.jpg" alt="SoundHound Logo" width="705" height="345" /></a></p>
<p>I originally encountered this app when the free version came pre-bundled on my HTC Desire S from O2. At that time, its permissions were very reasonable, and GPS position data was never collected (<em>the permission was never even requested by the app</em>). I decided to buy the full version, which I have used from time to time when I can remember a tune, but not the name of the artist or track.</p>
<p>It is worth highlighting the fact that <strong>SoundHound comes prebundled on many Android devices</strong>.</p>
<p>If you have the SoundHound Widget placed on your homescreen, and have allowed it to update to the latest version, you will now notice that each time you reboot your device, it immediately attempts to pinpoint your exact GPS location. Once this is collected and a data connection is available, it appears as though this data is transmitted back to SoundHound&#8217;s servers (<em>likely along with your phone&#8217;s unique ID, and your Google Account details as per its permission requirements</em>).</p>
<p><strong>EDIT: </strong>The reason I suspect that this information is being sent back to SoundHound&#8217;s servers is that the SoundHound process immediately triggers a transmission of data after the GPS location has been pinpointed (<em>I have tested this by disabling all other network/internet-connecting apps and options, effectively isolating everything from attempting to communicate online <strong>except</strong> SoundHound</em>)</p>
<p>This does not occur on boot if the widget is not on your homescreen, but in that event SoundHound simply does it when you run the app itself.</p>
<p><strong>There is no logical reason for SoundHound to collect your GPS coordinates!</strong> It does not provide any additional functionality to the app itself (<em>it&#8217;s not location-sensitive by nature</em>).</p>
<p>SoundHound collecting your GPS coordinates in conjunction with your device&#8217;s unique ID and your Google Account information constitutes a <strong>major privacy risk</strong>.</p>
<p>As a result, I am strongly advising that you <strong>uninstall SoundHound from your Android device(s) immediately</strong>, and do not reinstall it at any time!</p>
<p>I am about to send a strongly-worded letter to SoundHound, requesting details of why they collect this information, and what they do with it. Should they choose to respond, I will post their reply in full as an update to this post (<em>a detail of which I shall make them fully aware in my letter</em>).</p>
<h2>Update 1</h2>
<p>SoundHound&#8217;s Android Market Page makes this one small note (<em>at the very bottom of the app description</em>) regarding its requirement of the GPS permission:</p>
<blockquote><p><em>Note: Location is used to store where songs were discovered. It can be disabled from the Options menu.</em></p></blockquote>
<p>The behaviour exhibited by SoundHound&#8217;s widget (<em>collecting your GPS position the moment your Android device boots</em>) contradicts this non-declaratory statement. Indeed, this statement does not explicitly state that Location data is <em>only</em> used to store where songs were discovered, nor does it make any mention as-to whether SoundHound are collecting your location information.</p>
<p>Indeed, SoundHound&#8217;s Privacy Policy admits that your GPS location <em>is</em> transmitted to their server(s), and that they even reserve the right to share this information with unnamed third-parties!</p>
<blockquote><p><em>When you use the SoundHound applications, <strong>your mobile device supplies a unique identifier</strong>, which we use to associate search results, your bookmarks, and other information with your device. We improve the relevance of information provided in the applications using <strong>location information provided by your device</strong>, which you can choose to turn off. If your browser supplies location information (determined by your browser settings), we may use that information to improve the relevance of information provided by the web site. <strong>Content provided by advertisers and other third parties may be personalized in a similar manner.</strong></em></p></blockquote>
<p>This privacy statement makes mention that the location feature can be disabled should you choose, however <strong>it must be noted that in starting SoundHound to disable the location option, you have already transmitted your exact GPS coordinates to their server(s), thus also their third-parties</strong>!</p>
<p>If SoundHound are genuinely not interested in harvesting your personal information (<em>particularly your location</em>), all of the &#8220;features&#8221; which supposedly necessitate the harvesting of said information <strong>should be disabled by default</strong>, thus requiring the user to <strong>opt in</strong>, rather than opt out!</p>
<p>Indeed, because the &#8220;features&#8221; which supposedly necessitate the harvesting of device information (<em>as well as the overwhelmingly personal information of the user&#8217;s exact location</em>) are enabled by default, SoundHound directly (<em>inadvertantly or otherwise</em>) contradicts another statement in its own Privacy Policy:</p>
<blockquote><p><em>Consistent with the federal Children&#8217;s Online Privacy Protection Act (COPPA), we will never knowingly request personally identifiable information from anyone under the age of thirteen (13) without requiring parental consent. Any person who provides their personal information to SoundHound through the web site or applications represents that they are 13 years of age or older.</em></p></blockquote>
<p>Some may dispute whether GPS coordinates can be considered &#8220;personally identifiable information&#8221;, but in respect to any child under the age of 13 operating SoundHound from their own home, it doesn&#8217;t get any more personal than that!</p>
<p>You may call me paranoid if you like, but if an App collecting and transmitting your exact location every time you start your device (<em>without ever soliciting the use of that App at the time</em>) is not a privacy concern to you, you may want to ask yourself just how much personal information you&#8217;re willing to give away, and what possible consequences that may have on your life.</p>
<h2>Update 2</h2>
<p>Googling the issue of SoundHound and GPS coordinate transmission, I came across <a title="Things overheard on the WiFi from my Android smartphone" href="https://freedom-to-tinker.com/blog/dwallach/things-overheard-wifi-my-android-smartphone" target="_blank" onclick="pageTracker._trackPageview('/outgoing/freedom-to-tinker.com/blog/dwallach/things-overheard-wifi-my-android-smartphone?referer=');">a test conducted by a University <del>Undergraduate</del> Professor</a> where he set up a &#8220;sniffer&#8221; (<em>system to intercept and read all data being transmitted over a network onto the Internet</em>) the results in which he specifically points out that SoundHound&#8217;s Android app transmits his precise GPS coordinates (<em>plain for anyone with a little knowhow to intercept at will</em>) to SoundHound&#8217;s server(s).</p>
<blockquote><p><em>SoundHound and ShopSaavy transmit your fine GPS coordinates whenever you make a request to them. One of the students typed the coordinates into Google Maps and they nailed me to the proper side of the building I was teaching in.</em></p></blockquote>
<p><em>Note that &#8220;ShopySavy&#8221; transmitting your fine GPS coordinates makes sense given that ShopSavy&#8217;s service is &#8220;location-aware&#8221;.</em></p>
<p><em></em>It&#8217;s also worth noting that, at the time he conducted his test (<em>almost exactly a year ago, in February 2011</em>), he did not observe SoundHound transmitting these details when he booted his device. This (<em>along with the fact that my Android devices have only started doing this in the last few days</em>) adds weight to my insistence that this unwanted behaviour is the result of a very recent update of SoundHound itself, thus almost certainly a deliberate act in an attempt to harvest personal information with greater regularity.</p>
<p>The <del>student</del> professor who conducted this test (<em>Dan Wallach</em>) noted in a comment to his article on the subject</p>
<blockquote><p><em>In the case of SoundHound, they clearly don&#8217;t need to know where I am in order to tell me what song they&#8217;re hearing.</em></p></blockquote>
<p>Of course, SoundHound attempts to justify its collection of GPS location data by mentioning only that these details are stored in conjunction with your search history, so that you (<em>the user</em>) can look up <em>when and where</em> you heard a track.</p>
<p>It is not necessary, however, for SoundHound to actually store this location information on their own server(s) to provide this functionality, as the same data could easily be stored on your own device instead. Essentially, if a service is not location-aware (<em>where the results it provides are localized for your convienience such as an app which makes it easier for you to compile a shopping list for your local supermarket</em>), it should not be transmitting your location data over the Internet.<br />
As Dan Wallach also notes in another comment:</p>
<blockquote><p><em>They need to offer some value to me in return for my telling them where I am. For example, say they only tracked what city I&#8217;m in, they could tell me, in return, something about how many other people in my city have tagged the same song. That would still let them collect and sell interesting aggregate data without having a database somewhere that says exactly where I was at the time I wanted to recognize a song.</em></p></blockquote>
<p>This quote expresses my thoughts on this situation better than I can, and it&#8217;s also good to know that I&#8217;m not alone in being concerned about this unnecessary affront to my personal privacy.</p>
<p><strong>Remember: Even though SoundHound now provides the option to disable its harvesting of your GPS coordinates, in order to disable them, you still have to load their App, which in turn transmits your current GPS location <em>before</em> you&#8217;re able to disable it!</strong></p>
<h2>Does your Android device have SoundHound bundled on it by default?</h2>
<p>I&#8217;d like to hear from you! Please leave a comment with the brand, model and carrier of your Android device. Where possible, I shall endevour to contact all those involved in bundling this software on their Android devices, citing the clear privacy concern this software now represents, and urging them to remove this software from all ROMs, as well as provide a simple means for those with existing devices to remove it from theirs.</p>
<p><strong>Remember: In many cases, it is not easily possible for you to remove prebundled apps from your device when using the stock ROM.</strong></p>
<p>If you have the ability, and are confident enough to potentially void your device&#8217; warranty, it may be possible for you to remove SoundHound (<em>and other prebundled apps</em>) from your device by <strong>Rooting</strong>, or even <strong>flashing a clean ROM</strong> onto your device.</p>
<p><strong>Motorola Xoom Owners</strong> can find my complete guide on flashing the GED (<em>Google Experience Device</em>) ROM onto their devices <strong><a title="GEDify your non-US WiFi Xoom – For n00bs" href="http://www.simonjstuart.com/2011/07/23/gedify-your-non-us-wifi-xoom-for-n00bs/" target="_blank">here on my blog</a></strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonjstuart.com/2012/02/27/android-security-advisory-soundhound-forcibly-transmitting-gps-position-on-device-boot/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
	</channel>
</rss>

