<?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>Pathfinder Software &#187; Technologies and Platforms</title> <atom:link href="http://pathfindersoftware.com/category/technologies-and-platforms/feed/" rel="self" type="application/rss+xml" /><link>http://pathfindersoftware.com</link> <description>The Fastest Way to Launch Successful Software</description> <lastBuildDate>Thu, 19 Jan 2012 16:31:04 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.3.1</generator> <item><title>PureMVC gaining traction in JavaScript world</title><link>http://pathfindersoftware.com/2011/04/puremvc-javascript/</link> <comments>http://pathfindersoftware.com/2011/04/puremvc-javascript/#comments</comments> <pubDate>Mon, 11 Apr 2011 13:09:25 +0000</pubDate> <dc:creator>Sasha Dzeletovic</dc:creator> <category><![CDATA[Software Development]]></category> <category><![CDATA[Technologies and Platforms]]></category> <category><![CDATA[ANT]]></category> <category><![CDATA[HTML5]]></category> <category><![CDATA[Javascript]]></category> <category><![CDATA[JavaScript frameworks]]></category> <category><![CDATA[PureMVC]]></category><guid isPermaLink="false">http://pathfindersoftware.com/?p=9208</guid> <description><![CDATA[I love PureMVC because of the simple idea behind it. Have Model-Viewer-Controller pattern that can span languages and therefore time, as explained in this article by Clifford Hall. I started using it in the Flex world when it was competing with Cairngorm for that very reason. Cairngorm was Flex specific and PureMVC was language agnostic. ...]]></description> <content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"> <a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fpathfindersoftware.com%2F2011%2F04%2Fpuremvc-javascript%2F"><br /> <img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fpathfindersoftware.com%2F2011%2F04%2Fpuremvc-javascript%2F&amp;source=PathSoft&amp;style=normal&amp;service=bit.ly&amp;service_api=R_8a1154b608af9e55718b231fb0025d40&amp;b=2" height="61" width="50" /><br /> </a></div><p style="text-align: center;"><img class="size-full wp-image-6666 aligncenter" title="puremvc-html5" src="http://pathfindersoftware.com/wp-content/uploads/puremvc-html5.jpg" alt="puremvc-html5" width="400" height="213" /></p><p>I love <a href="http://puremvc.org/">PureMVC</a> because of the simple idea behind it. Have Model-Viewer-Controller pattern that can span languages and therefore time, as explained in <a href="http://puremvc.org/content/view/159/181/">this article</a> by Clifford Hall. I started using it in the Flex world when it was competing with Cairngorm for that very reason. Cairngorm was Flex specific and PureMVC was language agnostic.</p><p>Coming form a mostly strict-typed MVC environment, it was very hard for me to even start thinking about big scale applications in JavaScript and HTML5 which were reserved for widget type implementations for a while.</p><p>As a natural progression of the idea behind PureMVC, it started being ported to JavaScript frameworks that emulate classes through an effort of great folks like <a style="color: #0081bf; text-decoration: underline; padding: 0px; margin: 0px;" title="Frederic Saunier" href="http://tekool.net" target="_blank">Frederic Saunier</a>, Justin Wilaby, Tony DeFusco and David Foley. Music to my ears! Heck, there is even an ongoing &#8216;native&#8217; JavaScript port.</p><p>I decided to see if the story holds and lately I have had a great experience with the <a href="http://trac.puremvc.org/PureMVC_JS" target="_blank">MooTools implementation of PureMVC</a>. It feels very familiar. File structure is the same, meaning well organized with recognizable command, model and view folders that imitate packages. I use <a href="http://ant.apache.org/">ANT</a> to combine these files in two varieties. One just plain stacked for debugging and the other compressed using <a href="http://developer.yahoo.com/yui/compressor/" target="_blank">YUI Compressor</a> for production.</p><p>There is also something magical about working with PureMVC. It feels far more like solving a workflow puzzle than coding by knowing that the same PureMVC based program can be fairly easily ported to another language and in that way have longevity. Kinda leads you to think that programing is most about managing workflows of user experience.</p><p>This setup is enough to make me feel comfortable as a programmer about big scale applications developed in JavaScript. Which begs a question: &#8220;Why would you want to develop big scale applications in JavaScript?&#8221;. Because I want to share the fun.</p><p>You can read about the PureMVC developments for JavaScript <a href="http://puremvc.org/content/view/164/181/" target="_blank">here</a>.<p><a class="a2a_button_linkedin" href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2011%2F04%2Fpuremvc-javascript%2F&amp;linkname=PureMVC%20gaining%20traction%20in%20JavaScript%20world" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a><a class="a2a_button_stumbleupon" href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2011%2F04%2Fpuremvc-javascript%2F&amp;linkname=PureMVC%20gaining%20traction%20in%20JavaScript%20world" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2011%2F04%2Fpuremvc-javascript%2F&amp;linkname=PureMVC%20gaining%20traction%20in%20JavaScript%20world" title="Digg" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_dzone" href="http://www.addtoany.com/add_to/dzone?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2011%2F04%2Fpuremvc-javascript%2F&amp;linkname=PureMVC%20gaining%20traction%20in%20JavaScript%20world" title="DZone" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/dzone.png" width="16" height="16" alt="DZone"/></a><a class="a2a_button_reddit" href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2011%2F04%2Fpuremvc-javascript%2F&amp;linkname=PureMVC%20gaining%20traction%20in%20JavaScript%20world" title="Reddit" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2011%2F04%2Fpuremvc-javascript%2F&amp;linkname=PureMVC%20gaining%20traction%20in%20JavaScript%20world" title="Delicious" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_button_evernote" href="http://www.addtoany.com/add_to/evernote?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2011%2F04%2Fpuremvc-javascript%2F&amp;linkname=PureMVC%20gaining%20traction%20in%20JavaScript%20world" title="Evernote" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/evernote.png" width="16" height="16" alt="Evernote"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fpathfindersoftware.com%2F2011%2F04%2Fpuremvc-javascript%2F&amp;title=PureMVC%20gaining%20traction%20in%20JavaScript%20world" id="wpa2a_2">Share/Bookmark</a></p> ]]></content:encoded> <wfw:commentRss>http://pathfindersoftware.com/2011/04/puremvc-javascript/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Glory of Git source code versioning</title><link>http://pathfindersoftware.com/2011/03/glory-git-source-code-versioning/</link> <comments>http://pathfindersoftware.com/2011/03/glory-git-source-code-versioning/#comments</comments> <pubDate>Fri, 04 Mar 2011 15:06:22 +0000</pubDate> <dc:creator>Sasha Dzeletovic</dc:creator> <category><![CDATA[Software Development]]></category> <category><![CDATA[Technologies and Platforms]]></category> <category><![CDATA[Git]]></category><guid isPermaLink="false">http://www.pathf.com/blogs/?p=6624</guid> <description><![CDATA[There are many miracles that Git performs for source code versioning and I would like to highlight a recent one that really made my day. Pathfinder did a project for client that also has a team of in house developers. But they use SVN, not Git. Since the development was happening on our side, Git ...]]></description> <content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"> <a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fpathfindersoftware.com%2F2011%2F03%2Fglory-git-source-code-versioning%2F"><br /> <img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fpathfindersoftware.com%2F2011%2F03%2Fglory-git-source-code-versioning%2F&amp;source=PathSoft&amp;style=normal&amp;service=bit.ly&amp;service_api=R_8a1154b608af9e55718b231fb0025d40&amp;b=2" height="61" width="50" /><br /> </a></div><p>There are many miracles that Git performs for source code versioning and I would like to highlight a recent one that really made my day. Pathfinder did a project for client that also has a team of in house developers. But they use SVN, not Git. Since the development was happening on our side, Git was used to version the project. And since the client is a big organization, having them change their versioning policy was not likely to happen. At the end of the project came a time for the client team to pick up the code maintenance. We shipped the code by FTP and that was that, versioning was in their hands.<br /> After some time the client wanted to add more features that they wanted us to develop. We got the code back and to my pleasant surprise, all the Git files were intact and we were quickly able to educate ourselves about the changes client made in the meantime by looking at &#8220;diffs&#8221; and pick up the project the same day. We did our &#8220;commits&#8221; and it was as the code never left. It was touching. It is teamwork. Git rules.<p><a class="a2a_button_linkedin" href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2011%2F03%2Fglory-git-source-code-versioning%2F&amp;linkname=Glory%20of%20Git%20source%20code%20versioning" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a><a class="a2a_button_stumbleupon" href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2011%2F03%2Fglory-git-source-code-versioning%2F&amp;linkname=Glory%20of%20Git%20source%20code%20versioning" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2011%2F03%2Fglory-git-source-code-versioning%2F&amp;linkname=Glory%20of%20Git%20source%20code%20versioning" title="Digg" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_dzone" href="http://www.addtoany.com/add_to/dzone?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2011%2F03%2Fglory-git-source-code-versioning%2F&amp;linkname=Glory%20of%20Git%20source%20code%20versioning" title="DZone" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/dzone.png" width="16" height="16" alt="DZone"/></a><a class="a2a_button_reddit" href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2011%2F03%2Fglory-git-source-code-versioning%2F&amp;linkname=Glory%20of%20Git%20source%20code%20versioning" title="Reddit" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2011%2F03%2Fglory-git-source-code-versioning%2F&amp;linkname=Glory%20of%20Git%20source%20code%20versioning" title="Delicious" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_button_evernote" href="http://www.addtoany.com/add_to/evernote?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2011%2F03%2Fglory-git-source-code-versioning%2F&amp;linkname=Glory%20of%20Git%20source%20code%20versioning" title="Evernote" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/evernote.png" width="16" height="16" alt="Evernote"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fpathfindersoftware.com%2F2011%2F03%2Fglory-git-source-code-versioning%2F&amp;title=Glory%20of%20Git%20source%20code%20versioning" id="wpa2a_4">Share/Bookmark</a></p> ]]></content:encoded> <wfw:commentRss>http://pathfindersoftware.com/2011/03/glory-git-source-code-versioning/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>A Simple, Table Driven Approach to Multi-Choice Questionnaires &#8211; Part 1</title><link>http://pathfindersoftware.com/2010/08/simple-table-driven-multichoice-questionnaire-solution-part-1/</link> <comments>http://pathfindersoftware.com/2010/08/simple-table-driven-multichoice-questionnaire-solution-part-1/#comments</comments> <pubDate>Thu, 26 Aug 2010 16:50:47 +0000</pubDate> <dc:creator>Justin Ficke</dc:creator> <category><![CDATA[Adobe AIR]]></category> <category><![CDATA[Flex]]></category> <category><![CDATA[Software Development]]></category> <category><![CDATA[Technologies and Platforms]]></category> <category><![CDATA[dynamic]]></category> <category><![CDATA[multi choice]]></category> <category><![CDATA[programming]]></category> <category><![CDATA[questions]]></category> <category><![CDATA[table driven]]></category><guid isPermaLink="false">http://www.pathf.com/blogs/?p=5666</guid> <description><![CDATA[photo credit: jasoneppink I&#8217;ve been working on a project recently that involves a desktop AIR application running (mostly) offline with a local SQLite database. Occasionally the app will synch collected data remotely with a central server that will have an administrative and reporting web front end. Various parts of the AIR application involve filling out ...]]></description> <content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"> <a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F08%2Fsimple-table-driven-multichoice-questionnaire-solution-part-1%2F"><br /> <img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F08%2Fsimple-table-driven-multichoice-questionnaire-solution-part-1%2F&amp;source=PathSoft&amp;style=normal&amp;service=bit.ly&amp;service_api=R_8a1154b608af9e55718b231fb0025d40&amp;b=2" height="61" width="50" /><br /> </a></div><div style="float: right"><a title="Do You Need Pants? questionnaire" href="http://www.flickr.com/photos/38102495@N00/3190318778/" target="_blank"><img style="border: 0px initial initial" src="http://pathfindersoftware.com/wp-content/uploads/3190318778_cc2d30861b.jpg" border="0" alt="Do You Need Pants? questionnaire" width="216" height="280" /></a><br /> <a title="Attribution License" href="http://creativecommons.org/licenses/by/2.0/" target="_blank"><img src="http://pathfindersoftware.com/wp-content/uploads/cc69.png" border="0" alt="Creative Commons License" width="16" height="16" align="absmiddle" /></a> <a href="http://www.photodropper.com/photos/" target="_blank">photo</a> credit: <a title="jasoneppink" href="http://www.flickr.com/photos/38102495@N00/3190318778/" target="_blank">jasoneppink</a></div><p>I&#8217;ve been working on a project recently that involves a desktop AIR application running (mostly) offline with a local SQLite database. Occasionally the app will synch collected data remotely with a central server that will have an administrative and reporting web front end. Various parts of the AIR application involve filling out a series of multi-choice questions. Considering that the data will be used by two different systems, and anticipating that questions and answers may want to be updated from the admin portal, it seems a good choice to make things as dynamic as possible based on data from the db. It&#8217;s not a difficult problem to solve, and I&#8217;ve done it a time or two before, but since it&#8217;s fresh in my head and the code is in front of me, I&#8217;m going to use a couple blog posts to document the strategy.  The SQL presented is pseudo code and will not actually execute.</p><p>Part 1 is getting the database structure in place.</p><p><span id="more-5666"></span></p><p>The first two tables are lookup tables used to catorgorize our questions and answers.</p><p><span style="padding-left: 15px">questionTypes (</span><br /> <span style="padding-left: 30px">pid integer pk,</span><br /> <span style="padding-left: 30px"> name text</span><br /> <span style="padding-left: 15px">)</span></p><p><span style="padding-left: 15px">answerTypes (</span><br /> <span style="padding-left: 30px">pid integer pk,</span><br /> <span style="padding-left: 30px"> name text</span><br /> <span style="padding-left: 15px">)</span></p><p>QuestionTypes may hold names of groups of questions,  like &#8216;Screen1&#8242;, &#8216;Screen2&#8242;.<br /> AnswerTypes will hold names of groups of answers. Some entries in my tables are &#8216;Difficulty&#8217;,  &#8217;Frequency, &#8216;Yes/No&#8217;.</p><p>Now we can define our main Questions and Answers tables.<br /> <span style="padding-left: 15px">questions (</span><br /> <span style="padding-left: 30px">pid integer <span>pk</span>,</span><br /> <span style="padding-left: 30px">questionTypeId integer<span> fk</span>,</span><br /> <span style="padding-left: 30px">answerTypeId integer<span> fk</span>,</span><br /> <span style="padding-left: 30px">sequence <span>int</span>,</span><br /> <span style="padding-left: 30px">text text,</span><br /> <span style="padding-left: 30px">active <span>int</span></span><br /> <span style="padding-left: 15px">)</span></p><p><span style="padding-left: 15px">answers (</span><br /> <span style="padding-left: 30px">pid integer <span>pk</span>,</span><br /> <span style="padding-left: 30px">answerTypeId integer<span> fk</span>,</span><br /> <span style="padding-left: 30px">sequence <span>int</span>,</span><br /> <span style="padding-left: 30px">text text,</span><br /> <span style="padding-left: 30px">active <span>int</span></span><br /> <span style="padding-left: 15px">)</span></p><p>Records in the multiChoiceQuestions table hold a relation to a questionType and a answerType. Every question presented together should get the same questionType and the answerType will indicate which groups of answers should be associated with this question. Text is the question text itself and sequence is the order.</p><p>Records in the multiChoiceAnswers table hold a reference to answerType. So for the  answerType &#8216;Difficulty&#8217;, text for records in this table may be &#8216;Easy&#8217;, &#8216;Sorta Easy&#8217;, &#8216;Sorta Hard&#8217;, &#8216;Hard&#8217;, &#8216;Impossible&#8217;.</p><p>At this point we have an easy way to do CRUD on questions, answers, question grouping and answer grouping by just making db updates.</p><p>The active flag becomes important when we start to look at the response tables.</p><p><span style="padding-left: 15px">responses (</span><br /> <span style="padding-left: 30px">pid integer pk,</span><br /> <span style="padding-left: 30px">sessionId int fk,</span><br /> <span style="padding-left: 30px">questionId int fk,<br /> <span style="padding-left: 15px">)</span></span></p><p><span style="padding-left: 15px">responseAnswers (</span><br /> <span style="padding-left: 30px">pid integer pk,</span><br /> <span style="padding-left: 30px">responseId int fk,</span><br /> <span style="padding-left: 30px">answerId int fk<br /> <span style="padding-left: 15px">)</span></span></p><p>We have our main response table which holds a reference to a questionId and sessionId. SessionId  would have references to the user / time/ whatever, and we also  have a join table between responses and answers. This facilitates having more than one answer for a question.</p><p>We can now associate an answer or set of answers with a specific question for a single user at a particular point in time. Our main goal is accomplished from a schema standpoint.</p><p>Back to the active flag for a moment. If a question or answer gets updated or removed, we don&#8217;t want to directly update the current row or else previous responses will hold a reference to a question or answer that was different in the past when the user actually answered it. A new record will be created with a new id, and the old question/answer will be set to inactive. This insures that when reporting on results, we will see what the user actually saw at the time they answered.</p><p>The next part will show code examples of how i keep this data structured in memory, Flex components used to dynamically display the question and events to keep everything in synch.<p><a class="a2a_button_linkedin" href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F08%2Fsimple-table-driven-multichoice-questionnaire-solution-part-1%2F&amp;linkname=A%20Simple%2C%20Table%20Driven%20Approach%20to%20Multi-Choice%20Questionnaires%20%26%238211%3B%20Part%201" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a><a class="a2a_button_stumbleupon" href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F08%2Fsimple-table-driven-multichoice-questionnaire-solution-part-1%2F&amp;linkname=A%20Simple%2C%20Table%20Driven%20Approach%20to%20Multi-Choice%20Questionnaires%20%26%238211%3B%20Part%201" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F08%2Fsimple-table-driven-multichoice-questionnaire-solution-part-1%2F&amp;linkname=A%20Simple%2C%20Table%20Driven%20Approach%20to%20Multi-Choice%20Questionnaires%20%26%238211%3B%20Part%201" title="Digg" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_dzone" href="http://www.addtoany.com/add_to/dzone?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F08%2Fsimple-table-driven-multichoice-questionnaire-solution-part-1%2F&amp;linkname=A%20Simple%2C%20Table%20Driven%20Approach%20to%20Multi-Choice%20Questionnaires%20%26%238211%3B%20Part%201" title="DZone" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/dzone.png" width="16" height="16" alt="DZone"/></a><a class="a2a_button_reddit" href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F08%2Fsimple-table-driven-multichoice-questionnaire-solution-part-1%2F&amp;linkname=A%20Simple%2C%20Table%20Driven%20Approach%20to%20Multi-Choice%20Questionnaires%20%26%238211%3B%20Part%201" title="Reddit" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F08%2Fsimple-table-driven-multichoice-questionnaire-solution-part-1%2F&amp;linkname=A%20Simple%2C%20Table%20Driven%20Approach%20to%20Multi-Choice%20Questionnaires%20%26%238211%3B%20Part%201" title="Delicious" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_button_evernote" href="http://www.addtoany.com/add_to/evernote?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F08%2Fsimple-table-driven-multichoice-questionnaire-solution-part-1%2F&amp;linkname=A%20Simple%2C%20Table%20Driven%20Approach%20to%20Multi-Choice%20Questionnaires%20%26%238211%3B%20Part%201" title="Evernote" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/evernote.png" width="16" height="16" alt="Evernote"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F08%2Fsimple-table-driven-multichoice-questionnaire-solution-part-1%2F&amp;title=A%20Simple%2C%20Table%20Driven%20Approach%20to%20Multi-Choice%20Questionnaires%20%26%238211%3B%20Part%201" id="wpa2a_6">Share/Bookmark</a></p> ]]></content:encoded> <wfw:commentRss>http://pathfindersoftware.com/2010/08/simple-table-driven-multichoice-questionnaire-solution-part-1/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>HTML5 and the Rebirth of Mobile Webapps</title><link>http://pathfindersoftware.com/2010/04/html5-rebirth-mobile-webapps/</link> <comments>http://pathfindersoftware.com/2010/04/html5-rebirth-mobile-webapps/#comments</comments> <pubDate>Wed, 21 Apr 2010 11:26:21 +0000</pubDate> <dc:creator>Dietrich Kappe</dc:creator> <category><![CDATA[Mobile Apps]]></category> <category><![CDATA[Product Strategy]]></category> <category><![CDATA[Software Development]]></category> <category><![CDATA[Technologies and Platforms]]></category> <category><![CDATA[HTML5]]></category> <category><![CDATA[iPhone]]></category> <category><![CDATA[Webkit]]></category><guid isPermaLink="false">http://www.pathf.com/blogs/?p=5095</guid> <description><![CDATA[We have a number of clients who have taken a hard look at MonoTouch. Objective-C was just too much of a technology shift for them with their C#/Java/Ruby developers. Now with the revised SDK agreement and it&#8217;s section 3.3.1, it looks like XCode and the C-derived languages of the 1980&#8242;s are in everybody&#8217;s future. Now ...]]></description> <content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"> <a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F04%2Fhtml5-rebirth-mobile-webapps%2F"><br /> <img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F04%2Fhtml5-rebirth-mobile-webapps%2F&amp;source=PathSoft&amp;style=normal&amp;service=bit.ly&amp;service_api=R_8a1154b608af9e55718b231fb0025d40&amp;b=2" height="61" width="50" /><br /> </a></div><p>We have a number of clients who have taken a hard look at <a href="http://monotouch.net/" target="_blank">MonoTouch</a>. Objective-C was just too much of a technology shift for them with their C#/Java/Ruby developers. Now with the revised SDK agreement and it&#8217;s <a href="http://www.pathf.com/blogs/2010/04/balkanization-application-development-landscape/" target="_blank">section 3.3.1</a>, it looks like XCode and the C-derived languages of the 1980&#8242;s are in everybody&#8217;s future.</p><p>Now along comes HTML5 with it&#8217;s offline caching of resources, it&#8217;s offline storage (key-value and SQL), and it&#8217;s Canvas. Throw in the high performance of the new crop of browsers, and you see where this is all headed. And with WebGL, well, check out this port of Quake II by the GWT team. Yep. That&#8217;s Quake II running in the browser.</p><p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="450" height="300" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/fyfu4OwjUEI&amp;hl=en_US&amp;fs=1&amp;rel=0" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="450" height="300" src="http://www.youtube.com/v/fyfu4OwjUEI&amp;hl=en_US&amp;fs=1&amp;rel=0" allowscriptaccess="always" allowfullscreen="true"></embed></object></p><p>Offline storage on on the iPhone is limited to 5 meg (10 meg if the user permits it), but that&#8217;s still pretty decent for an online/offline app. And you can absolutely give users part of the experience of a native iPhone app with a custom app icon and a startup screen. Will this type of app replace the native iPhone app that needs the sales channel of the AppStore? No. But in the short term, it&#8217;s a good option for companies looking to develop lightweight mobile apps for all WebKit capable devices.<p><a class="a2a_button_linkedin" href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F04%2Fhtml5-rebirth-mobile-webapps%2F&amp;linkname=HTML5%20and%20the%20Rebirth%20of%20Mobile%20Webapps" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a><a class="a2a_button_stumbleupon" href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F04%2Fhtml5-rebirth-mobile-webapps%2F&amp;linkname=HTML5%20and%20the%20Rebirth%20of%20Mobile%20Webapps" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F04%2Fhtml5-rebirth-mobile-webapps%2F&amp;linkname=HTML5%20and%20the%20Rebirth%20of%20Mobile%20Webapps" title="Digg" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_dzone" href="http://www.addtoany.com/add_to/dzone?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F04%2Fhtml5-rebirth-mobile-webapps%2F&amp;linkname=HTML5%20and%20the%20Rebirth%20of%20Mobile%20Webapps" title="DZone" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/dzone.png" width="16" height="16" alt="DZone"/></a><a class="a2a_button_reddit" href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F04%2Fhtml5-rebirth-mobile-webapps%2F&amp;linkname=HTML5%20and%20the%20Rebirth%20of%20Mobile%20Webapps" title="Reddit" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F04%2Fhtml5-rebirth-mobile-webapps%2F&amp;linkname=HTML5%20and%20the%20Rebirth%20of%20Mobile%20Webapps" title="Delicious" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_button_evernote" href="http://www.addtoany.com/add_to/evernote?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F04%2Fhtml5-rebirth-mobile-webapps%2F&amp;linkname=HTML5%20and%20the%20Rebirth%20of%20Mobile%20Webapps" title="Evernote" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/evernote.png" width="16" height="16" alt="Evernote"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F04%2Fhtml5-rebirth-mobile-webapps%2F&amp;title=HTML5%20and%20the%20Rebirth%20of%20Mobile%20Webapps" id="wpa2a_8">Share/Bookmark</a></p> ]]></content:encoded> <wfw:commentRss>http://pathfindersoftware.com/2010/04/html5-rebirth-mobile-webapps/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Opera Mini for the iPhone (Bye-Bye Safari!)</title><link>http://pathfindersoftware.com/2010/04/opera-mini-iphone-bye-bye-safari/</link> <comments>http://pathfindersoftware.com/2010/04/opera-mini-iphone-bye-bye-safari/#comments</comments> <pubDate>Tue, 13 Apr 2010 16:12:41 +0000</pubDate> <dc:creator>Karthik Muthupalaniappan</dc:creator> <category><![CDATA[Software Development]]></category> <category><![CDATA[Technologies and Platforms]]></category> <category><![CDATA[User Experience Design]]></category> <category><![CDATA[browser]]></category> <category><![CDATA[iPhone]]></category> <category><![CDATA[Opera]]></category><guid isPermaLink="false">http://www.pathf.com/blogs/?p=5003</guid> <description><![CDATA[So Opera Mini for the iPhone got approved and is available in the App store since last night.  I downloaded it this morning and should say I am mighty impressed with it. It is zippy, fast and intuitive.  There was a quite a bit of speculation around whether this would get approved by Apple.  I ...]]></description> <content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"> <a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F04%2Fopera-mini-iphone-bye-bye-safari%2F"><br /> <img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F04%2Fopera-mini-iphone-bye-bye-safari%2F&amp;source=PathSoft&amp;style=normal&amp;service=bit.ly&amp;service_api=R_8a1154b608af9e55718b231fb0025d40&amp;b=2" height="61" width="50" /><br /> </a></div><p>So <a href="http://itunes.apple.com/us/app/opera-mini-web-browser/id363729560?mt=8" target="_blank">Opera Mini for the iPhone</a> got approved and is available in the App store since last night.  I downloaded it this morning and should say I am mighty impressed with it. It is zippy, fast and intuitive.  There was a quite a bit of <a href="http://www.pathf.com/blogs/2010/04/opera-apples-netscape/" target="_blank">speculation</a> around whether this would get approved by Apple.  I m happy that Apple approved it.</p><p>I did notice a few quirks with the Browser but they are in no way deal-breakers. From my brief interaction with it, the browser looks awesome to me! I dont deny Safari being a solid mobile browser itself but with Opera out now, its &#8220;Bye-Bye Safari&#8221; for me <img src='http://pathfindersoftware.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p><div id="attachment_5004" class="wp-caption aligncenter" style="width: 330px"><img class="size-full wp-image-5004 " src="http://pathfindersoftware.com/wp-content/uploads/photo3.jpg" alt="photo" width="320" height="480" /><p class="wp-caption-text">Opera Mini for the iPhone</p></div><p><a class="a2a_button_linkedin" href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F04%2Fopera-mini-iphone-bye-bye-safari%2F&amp;linkname=Opera%20Mini%20for%20the%20iPhone%20%28Bye-Bye%20Safari%21%29" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a><a class="a2a_button_stumbleupon" href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F04%2Fopera-mini-iphone-bye-bye-safari%2F&amp;linkname=Opera%20Mini%20for%20the%20iPhone%20%28Bye-Bye%20Safari%21%29" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F04%2Fopera-mini-iphone-bye-bye-safari%2F&amp;linkname=Opera%20Mini%20for%20the%20iPhone%20%28Bye-Bye%20Safari%21%29" title="Digg" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_dzone" href="http://www.addtoany.com/add_to/dzone?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F04%2Fopera-mini-iphone-bye-bye-safari%2F&amp;linkname=Opera%20Mini%20for%20the%20iPhone%20%28Bye-Bye%20Safari%21%29" title="DZone" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/dzone.png" width="16" height="16" alt="DZone"/></a><a class="a2a_button_reddit" href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F04%2Fopera-mini-iphone-bye-bye-safari%2F&amp;linkname=Opera%20Mini%20for%20the%20iPhone%20%28Bye-Bye%20Safari%21%29" title="Reddit" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F04%2Fopera-mini-iphone-bye-bye-safari%2F&amp;linkname=Opera%20Mini%20for%20the%20iPhone%20%28Bye-Bye%20Safari%21%29" title="Delicious" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_button_evernote" href="http://www.addtoany.com/add_to/evernote?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F04%2Fopera-mini-iphone-bye-bye-safari%2F&amp;linkname=Opera%20Mini%20for%20the%20iPhone%20%28Bye-Bye%20Safari%21%29" title="Evernote" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/evernote.png" width="16" height="16" alt="Evernote"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F04%2Fopera-mini-iphone-bye-bye-safari%2F&amp;title=Opera%20Mini%20for%20the%20iPhone%20%28Bye-Bye%20Safari%21%29" id="wpa2a_10">Share/Bookmark</a></p> ]]></content:encoded> <wfw:commentRss>http://pathfindersoftware.com/2010/04/opera-mini-iphone-bye-bye-safari/feed/</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>Tiling a 2-D Polygon using C# GDI+</title><link>http://pathfindersoftware.com/2010/02/tiling-2d-polygon-gdi/</link> <comments>http://pathfindersoftware.com/2010/02/tiling-2d-polygon-gdi/#comments</comments> <pubDate>Mon, 08 Feb 2010 22:14:33 +0000</pubDate> <dc:creator>Karthik Muthupalaniappan</dc:creator> <category><![CDATA[.NET]]></category> <category><![CDATA[Software Development]]></category> <category><![CDATA[Technologies and Platforms]]></category> <category><![CDATA[C#]]></category> <category><![CDATA[Drawing]]></category> <category><![CDATA[GDI+]]></category> <category><![CDATA[Window Forms Development]]></category><guid isPermaLink="false">http://www.pathf.com/blogs/?p=4781</guid> <description><![CDATA[One of the most challenging problems I came across working on a .NET PDF Annotator and Editor application was to tile a 2-D polygon and also accurately determine the number of tiles that fill the surface of the polygon.  The tiling part was not as much of a challenge as the counting part. The tiled ...]]></description> <content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"> <a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F02%2Ftiling-2d-polygon-gdi%2F"><br /> <img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F02%2Ftiling-2d-polygon-gdi%2F&amp;source=PathSoft&amp;style=normal&amp;service=bit.ly&amp;service_api=R_8a1154b608af9e55718b231fb0025d40&amp;b=2" height="61" width="50" /><br /> </a></div><div id="attachment_4787" class="wp-caption alignnone" style="width: 543px"><img class="size-full wp-image-4787" title="Tiling a Polygon" src="http://pathfindersoftware.com/wp-content/uploads/Tiling-Polygon1.png" alt="Tiling a Polygon" width="533" height="388" /><p class="wp-caption-text">Tiling a Polygon</p></div><p>One of the most challenging problems I came across working on a <a href="http://www.pathf.com/showcase/success-stories/pdf-annotation-software/" target="_blank">.NET PDF Annotator and Editor application</a> was to tile a 2-D polygon and also accurately determine the number of tiles that fill the surface of the polygon.  The tiling part was not as much of a challenge as the counting part. The tiled polygon was to be rendered on a PDF document since the application in question is a PDF Annotating and Editing tool. We looked for anything the third party .NET PDF rendering/manipulation API that was used could provide for the tile rendering but there was nothing unfortunately.<br /> <span id="more-4781"></span><br /> So we set out to use <a href="http://msdn.microsoft.com/en-us/library/ms533798%28VS.85%29.aspx" target="_blank">C#&#8217;s native GDI+ library</a> to render the tiles for the polygon.  After trying out different approaches to accomplish the rendering of the tiles, we discovered the one that would work best. The idea was simple. Every 2-D shape on the drawing surface has a bounding rectangle that encloses the shape. Starting from the top left bounding point of the rectangle, iteratively render a rectangle (tile with whatever length and width) across the X axis until the right most edge of the rectangle and this iteration needs to happen over the Y-axis (not sure if I explained clearly enough <img src='http://pathfindersoftware.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> .  So now we have rectangular tiles laid out across the bounding rectangle for the polygon. GDI+ gives us a clip method that allows us to clip the rendering surface to a specific graphics path or region. Using the clip method, clip the drawing surface to be the graphics path for just the Polygon so that only tiles within the polygon&#8217;s graphics path get rendered on the screen. We could apply other transformations to the rendered tiles like offseting, rotation or a gap between each tile.</p><p>Coming up with the most efficient way to count the number of tiles (including partial tiles) was a little trickier than rendering the tiles.  It turned out that the ideal approach was to essentially count each tile as it was drawn and checking whether the tile was partially or fully part of the polygon&#8217;s graphics path/region. So, there is this method <a href="http://msdn.microsoft.com/en-us/library/system.drawing.region.isvisible%28VS.71%29.aspx" target="_blank">Region.IsVisible</a> that lets you test whether a rectangle is partially or fully contained within a graphics region. During the rendering of each rectangular tile, the method was used to check whether the tile was going to be part of the region associated with the polygon and was counted if it was going to be. Even though, this was the most efficient solution for the problem, we did nt see 100% accuracy sometimes when rotation transformation was applied to the tiles. Still havent found an answer to this anomaly.<p><a class="a2a_button_linkedin" href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F02%2Ftiling-2d-polygon-gdi%2F&amp;linkname=Tiling%20a%202-D%20Polygon%20using%20C%23%20GDI%2B" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a><a class="a2a_button_stumbleupon" href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F02%2Ftiling-2d-polygon-gdi%2F&amp;linkname=Tiling%20a%202-D%20Polygon%20using%20C%23%20GDI%2B" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F02%2Ftiling-2d-polygon-gdi%2F&amp;linkname=Tiling%20a%202-D%20Polygon%20using%20C%23%20GDI%2B" title="Digg" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_dzone" href="http://www.addtoany.com/add_to/dzone?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F02%2Ftiling-2d-polygon-gdi%2F&amp;linkname=Tiling%20a%202-D%20Polygon%20using%20C%23%20GDI%2B" title="DZone" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/dzone.png" width="16" height="16" alt="DZone"/></a><a class="a2a_button_reddit" href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F02%2Ftiling-2d-polygon-gdi%2F&amp;linkname=Tiling%20a%202-D%20Polygon%20using%20C%23%20GDI%2B" title="Reddit" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F02%2Ftiling-2d-polygon-gdi%2F&amp;linkname=Tiling%20a%202-D%20Polygon%20using%20C%23%20GDI%2B" title="Delicious" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_button_evernote" href="http://www.addtoany.com/add_to/evernote?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F02%2Ftiling-2d-polygon-gdi%2F&amp;linkname=Tiling%20a%202-D%20Polygon%20using%20C%23%20GDI%2B" title="Evernote" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/evernote.png" width="16" height="16" alt="Evernote"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F02%2Ftiling-2d-polygon-gdi%2F&amp;title=Tiling%20a%202-D%20Polygon%20using%20C%23%20GDI%2B" id="wpa2a_12">Share/Bookmark</a></p> ]]></content:encoded> <wfw:commentRss>http://pathfindersoftware.com/2010/02/tiling-2d-polygon-gdi/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>A Slight Correction to using PureMVC with Vaadin</title><link>http://pathfindersoftware.com/2010/02/4701/</link> <comments>http://pathfindersoftware.com/2010/02/4701/#comments</comments> <pubDate>Mon, 01 Feb 2010 20:32:42 +0000</pubDate> <dc:creator>Dietrich Kappe</dc:creator> <category><![CDATA[Software Development]]></category> <category><![CDATA[Technologies and Platforms]]></category> <category><![CDATA[Grails]]></category> <category><![CDATA[PureMVC]]></category> <category><![CDATA[Vaadin]]></category><guid isPermaLink="false">http://www.pathf.com/blogs/?p=4701</guid> <description><![CDATA[photo credit: suki_fotografiert A while back I looked at the Vaadin Plugin and tried to make it work with the Multiton PureMVC. Back then I proposed the following code: public static ApplicationFacade getInstance() { if (instance == null) { // nuke the multiton so we can do the grails recompile if (ApplicationFacade.hasCore(CORE)) { ApplicationFacade.removeCore(CORE); } ...]]></description> <content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"> <a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F02%2F4701%2F"><br /> <img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F02%2F4701%2F&amp;source=PathSoft&amp;style=normal&amp;service=bit.ly&amp;service_api=R_8a1154b608af9e55718b231fb0025d40&amp;b=2" height="61" width="50" /><br /> </a></div><div style='float:right;padding:10px'><a href="http://www.flickr.com/photos/36423218@N05/4304040376/" title="Bench Monday" target="_blank"><img src="http://pathfindersoftware.com/wp-content/uploads/4304040376_ab19e8382a_m.jpg" alt="Bench Monday" border="0" /></a><br /><small><a href="http://creativecommons.org/licenses/by-nd/2.0/" title="Attribution-NoDerivs License" target="_blank"><img src="http://pathfindersoftware.com/wp-content/uploads/cc39.png" alt="Creative Commons License" border="0" width="16" height="16" align="absmiddle" /></a> <a href="http://www.photodropper.com/photos/" target="_blank">photo</a> credit: <a href="http://www.flickr.com/photos/36423218@N05/4304040376/" title="suki_fotografiert" target="_blank">suki_fotografiert</a></small></div><p> A while back <a href="http://www.pathf.com/blogs/2009/08/making-vaadin-puremvc-grails-work/comment-page-1/" taget="_blank">I looked at</a> the Vaadin Plugin and tried to make it work with the Multiton PureMVC. Back then I proposed the following code:</p><pre lang="java">
public static ApplicationFacade getInstance() {
   if (instance == null) {
     // nuke the multiton so we can do the grails recompile
     if (ApplicationFacade.hasCore(CORE)) {
       ApplicationFacade.removeCore(CORE);
     }
     instance = new ApplicationFacade(CORE);
   }
   return instance;
 }
</pre><p>A little more noodling and you&#8217;ll see that doesn&#8217;t work. In a multi-session environment, each user will need his own core. Furthermore, inactive cores should be harvested, otherwise we will have a memory leak.<br /> <span id="more-4701"></span><br /> A little repair work and we have the following code, which does half the job:</p><pre lang="java">
public static ApplicationFacade getInstance(HttpSession session) {
   String id = session.getId();
   if (instance == null) {
     // nuke the multiton so we can do the grails recompile
     if (ApplicationFacade.hasCore(CORE + "_" + id)) {
       ApplicationFacade.removeCore(CORE + "_" + id));
     }
     instance = new ApplicationFacade(CORE + "_" + id));
   }
   return instance;
 }
</pre><p>We get the session through the Vaadin <code>ApplicationContext</code> object. So, now we get a fresh core per session. But we still have the problem of leaking memory every time a session or Vaadin application is invalidated. Neither PureMVC nor Vaadin have any lifecycle methods to hook into for cleanup. In PureMVC that is understandable, since it isn&#8217;t really designed for a web application context, but this seems a more serious oversight in Vaadin.</p><p>We can hook some PureMVC cleanup by storing the key as a session attribute and using a <code>HttpSessionListener</code> to clean it up. I&#8217;ll test that out and blog about it in the future.<p><a class="a2a_button_linkedin" href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F02%2F4701%2F&amp;linkname=A%20Slight%20Correction%20to%20using%20PureMVC%20with%20Vaadin" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a><a class="a2a_button_stumbleupon" href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F02%2F4701%2F&amp;linkname=A%20Slight%20Correction%20to%20using%20PureMVC%20with%20Vaadin" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F02%2F4701%2F&amp;linkname=A%20Slight%20Correction%20to%20using%20PureMVC%20with%20Vaadin" title="Digg" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_dzone" href="http://www.addtoany.com/add_to/dzone?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F02%2F4701%2F&amp;linkname=A%20Slight%20Correction%20to%20using%20PureMVC%20with%20Vaadin" title="DZone" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/dzone.png" width="16" height="16" alt="DZone"/></a><a class="a2a_button_reddit" href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F02%2F4701%2F&amp;linkname=A%20Slight%20Correction%20to%20using%20PureMVC%20with%20Vaadin" title="Reddit" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F02%2F4701%2F&amp;linkname=A%20Slight%20Correction%20to%20using%20PureMVC%20with%20Vaadin" title="Delicious" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_button_evernote" href="http://www.addtoany.com/add_to/evernote?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F02%2F4701%2F&amp;linkname=A%20Slight%20Correction%20to%20using%20PureMVC%20with%20Vaadin" title="Evernote" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/evernote.png" width="16" height="16" alt="Evernote"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F02%2F4701%2F&amp;title=A%20Slight%20Correction%20to%20using%20PureMVC%20with%20Vaadin" id="wpa2a_14">Share/Bookmark</a></p> ]]></content:encoded> <wfw:commentRss>http://pathfindersoftware.com/2010/02/4701/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Sanity Amid the Tablet Hype</title><link>http://pathfindersoftware.com/2010/01/sanity-tablet-hype/</link> <comments>http://pathfindersoftware.com/2010/01/sanity-tablet-hype/#comments</comments> <pubDate>Wed, 13 Jan 2010 12:45:21 +0000</pubDate> <dc:creator>Bernhard Kappe</dc:creator> <category><![CDATA[Product Strategy]]></category> <category><![CDATA[Software Development]]></category> <category><![CDATA[Technologies and Platforms]]></category> <category><![CDATA[apple tablet]]></category> <category><![CDATA[iPad]]></category> <category><![CDATA[iPhone]]></category><guid isPermaLink="false">http://www.pathf.com/blogs/?p=4544</guid> <description><![CDATA[As January 26th, the rumored date for Apple&#8217;s rumored tablet unveiling draws near, the hype and anti-hype keeps getting more and more over the top: Five Ways Apple&#8217;s Tablet May Change the World The world doesn&#8217;t need an Apple tablet, or any other and the inevitable 3 Reasons A Microsoft-HP Tablet PC Would Trump Apple ...]]></description> <content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"> <a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F01%2Fsanity-tablet-hype%2F"><br /> <img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F01%2Fsanity-tablet-hype%2F&amp;source=PathSoft&amp;style=normal&amp;service=bit.ly&amp;service_api=R_8a1154b608af9e55718b231fb0025d40&amp;b=2" height="61" width="50" /><br /> </a></div><p><img class="left" src="http://pathfindersoftware.com/wp-content/uploads/Rosetta_Stone1.jpg" alt="Rosetta_Stone" title="Rosetta_Stone" width="250" /></p><p>As January 26th, the rumored date for Apple&#8217;s rumored tablet unveiling draws near, the hype and anti-hype keeps getting more and more over the top:</p><p><strong><a href="http://www.businessweek.com/technology/content/dec2009/tc20091229_795528.htm">Five Ways Apple&#8217;s Tablet May Change the World</a></strong></p><p><strong><a href="http://www.betanews.com/joewilcox/article/The-world-doesnt-need-an-Apple-tablet-or-any-other/1262456214">The world doesn&#8217;t need an Apple tablet, or any other</a></strong></p><p>and the inevitable</p><p><strong><a href="http://www.crn.com/mobile/222200470">3 Reasons A Microsoft-HP Tablet PC Would Trump Apple<br /> </a></strong></p><p>If you want to keep up to date on the rumors, Gizmodo has a regularly updated run-down <strong><a href="http://gizmodo.com/5434566/the-exhaustive-guide-to-apple-tablet-rumors">here.</a></strong></p><p>There are a couple of places that have more informed speculation and  insightful commentary &#8211; I&#8217;d recommend these three in particular:</p><p><a href="http://arstechnica.com/staff/fatbits/2010/01/antacid-tablet.ars">Antacid Tablet</a> by ars technica&#8217;s John Siracusa:</p><blockquote><p>&#8230; There&#8217;s also the popular notion that Apple has to do something entirely new or totally amazing in order for the tablet to succeed. After all, tablets have been tried before, with dismal results. It seems absurd to some people that Apple can succeed simply by using existing technologies and software techniques in the right combination. And yet that&#8217;s exactly what Apple has done with all of its most recent hit products—and what I predict Apple will do with the tablet. &#8230;</p><p>So how will an Apple tablet distinguish itself without any headline technological marvels? It&#8217;ll do so by leveraging all of Apple&#8217;s strategic strengths. Now you&#8217;re expecting me to say something about tight hardware/software integration, user experience, or &#8220;design,&#8221; but I&#8217;m talking about even more obvious factors:</p><p> •	Customers &#8211; Apple has over 100 million credit-card-bearing customer accounts thanks to the success of iTunes.<br /> •	Developers &#8211; Over 125,000 developers have put over 100,000 iPhone OS applications up for sale on the App Store. Then there are the Mac OS X developers (though of course there&#8217;s some overlap). Apple&#8217;s got developers ready and able to come at the tablet from both directions.<br /> •	Relationships &#8211; Apple has lucrative and successful relationships with the most important content owners in the music and movie businesses.</p><p>These are Apple&#8217;s most important assets when it comes to the tablet, and you can bet your bottom dollar that Apple will lean heavily on them. This, combined with Apple&#8217;s traditional strength in design and user experience, is what will distinguish Apple&#8217;s tablet in the market. It will provide an easy way for people to find, purchase, and consume all kinds of media and applications right from the device. It&#8217;s that simple.</p></blockquote><p><a href="http://www.suntimes.com/technology/ihnatko/1980077,ihnatko-apple-tablet-microsoft-010710.article">Thoughts on what an Apple tablet should be – or not</a> by Andy Ihnatko</p><blockquote><p>Apple always asks themselves simple and stupid questions like “How will this device be used?” and “Will this be used by human beings with, I mean, arms and hands and fingers?” and stuff like that.</p><p>The iPhone UI isn’t a desktop user interface where a pen takes the place of a mouse &#8230; which is the model that previous smartphones followed. It was designed to be held in one hand and tapped with your thumb. Occasionally you’d use the index finger of the right hand to key things in.</p><p>You want to try to figure out the UI of the RAT? Go get yourself a comic book, or any other rectangle that measures roughly 10” on the diagonal. Hold it as though you’re reading what’s on the surface.</p><p>You see the problem? Your fingers get in the way. Think about how big that surface is, too. That’s a lot of acreage to scan, looking for the right buttons to push.</p><p>While you’ve got it in your hands, imagine that it’s a sheet of thin steel. That’s heavy, isn’t it? Hard to hold up for long periods of time.</p><p>Think about how a user interface would have to incorporate those observations. Now imagine that you’ve been doing this experiment for four years and not four minutes.</p><p>That’s a very long list of observations. If you didn’t come up with a workable solution, don’t worry: I think Apple has.</p></blockquote><p>and</p><p><a href="http://daringfireball.net/2009/12/the_tablet">The Tablet</a> by Daring Fireball&#8217;s John Gruber.</p><blockquote><p>&#8230; The way Apple made one device [the iPhone] that did a credible job of all these widely-varying features was by making it a general-purpose computer with minimal specificity in the hardware and maximal specificity in the software. And, now, through the App Store and third-party developers, it does much more: serving as everything from a game player to a medical device.</p><p>Do I think The Tablet is an e-reader? A video player? A web browser? A document viewer? It’s not a matter of or but rather and. I say it is all of these things. It’s a computer.</p><p>And so in answer to my central question, regarding why buy The Tablet if you already have an iPhone and a MacBook, my best guess is that ultimately, The Tablet is something you’ll buy instead of a MacBook.</p></blockquote><p>Gruber&#8217;s a bit more gung ho than Ihnatko or Siracusa, but they both make a pretty compelling case that something very interesting is about to happen over the next year.</p><p><img class="left" src="http://pathfindersoftware.com/wp-content/uploads/500x_apple-tablet-natgeo1.jpg" alt="500x_apple-tablet-natgeo" title="500x_apple-tablet-natgeo" width="520" height="346" /><p><a class="a2a_button_linkedin" href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F01%2Fsanity-tablet-hype%2F&amp;linkname=Sanity%20Amid%20the%20Tablet%20Hype" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a><a class="a2a_button_stumbleupon" href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F01%2Fsanity-tablet-hype%2F&amp;linkname=Sanity%20Amid%20the%20Tablet%20Hype" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F01%2Fsanity-tablet-hype%2F&amp;linkname=Sanity%20Amid%20the%20Tablet%20Hype" title="Digg" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_dzone" href="http://www.addtoany.com/add_to/dzone?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F01%2Fsanity-tablet-hype%2F&amp;linkname=Sanity%20Amid%20the%20Tablet%20Hype" title="DZone" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/dzone.png" width="16" height="16" alt="DZone"/></a><a class="a2a_button_reddit" href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F01%2Fsanity-tablet-hype%2F&amp;linkname=Sanity%20Amid%20the%20Tablet%20Hype" title="Reddit" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F01%2Fsanity-tablet-hype%2F&amp;linkname=Sanity%20Amid%20the%20Tablet%20Hype" title="Delicious" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_button_evernote" href="http://www.addtoany.com/add_to/evernote?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F01%2Fsanity-tablet-hype%2F&amp;linkname=Sanity%20Amid%20the%20Tablet%20Hype" title="Evernote" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/evernote.png" width="16" height="16" alt="Evernote"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F01%2Fsanity-tablet-hype%2F&amp;title=Sanity%20Amid%20the%20Tablet%20Hype" id="wpa2a_16">Share/Bookmark</a></p> ]]></content:encoded> <wfw:commentRss>http://pathfindersoftware.com/2010/01/sanity-tablet-hype/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Prediction: The Teens will be the Decade of Mobile</title><link>http://pathfindersoftware.com/2010/01/prediction-teens-decade-mobile/</link> <comments>http://pathfindersoftware.com/2010/01/prediction-teens-decade-mobile/#comments</comments> <pubDate>Mon, 11 Jan 2010 11:31:59 +0000</pubDate> <dc:creator>Dietrich Kappe</dc:creator> <category><![CDATA[Mobile Apps]]></category> <category><![CDATA[Product Strategy]]></category> <category><![CDATA[Technologies and Platforms]]></category> <category><![CDATA[User Experience Design]]></category> <category><![CDATA[iPhone]]></category> <category><![CDATA[Mobile]]></category> <category><![CDATA[Predictions]]></category><guid isPermaLink="false">http://www.pathf.com/blogs/?p=4558</guid> <description><![CDATA[photo credit: matsuyuki I&#8217;ve made my fair share of predictions, and this may seem to be a layup, but I think it&#8217;s a prediction worth making anyway: mobile devices and applications will transform business and every day life in the next decade. Why does this seem like such a layup? Well, look at the iPhone ...]]></description> <content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"> <a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F01%2Fprediction-teens-decade-mobile%2F"><br /> <img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F01%2Fprediction-teens-decade-mobile%2F&amp;source=PathSoft&amp;style=normal&amp;service=bit.ly&amp;service_api=R_8a1154b608af9e55718b231fb0025d40&amp;b=2" height="61" width="50" /><br /> </a></div><div style="float:right;padding:10px"><a title="Abacus, Filofax, wrong result" href="http://www.flickr.com/photos/12173213@N00/4095386920/" target="_blank"><img src="http://pathfindersoftware.com/wp-content/uploads/4095386920_3b4cd2184d_m.jpg" border="0" alt="Abacus, Filofax, wrong result" /></a><br /> <small><a title="Attribution-ShareAlike License" href="http://creativecommons.org/licenses/by-sa/2.0/" target="_blank"><img src="http://pathfindersoftware.com/wp-content/uploads/cc36.png" border="0" alt="Creative Commons License" width="16" height="16" align="absmiddle" /></a> <a href="http://www.photodropper.com/photos/" target="_blank">photo</a> credit: <a title="matsuyuki" href="http://www.flickr.com/photos/12173213@N00/4095386920/" target="_blank">matsuyuki</a></small></div><p>I&#8217;ve made my fair share of predictions, and this may seem to be a layup, but I think it&#8217;s a prediction worth making anyway: mobile devices and applications will transform business and every day life in the next decade.</p><p>Why does this seem like such a layup? Well, look at the iPhone and the ecosystem of applications and companies springing up around it. Android and Blackberry are trying to jump in on the business and everybody and their brother is cooking up a <a href="http://www.nytimes.com/2010/01/09/technology/personaltech/09reader.html?hpw" target="_blank">connected mobile device</a>. And yes, that&#8217;s obvious. Mobile devices are going to increase in importance in 2010 and if you don&#8217;t already have an iPhone app cooking to complement your other online channels, you&#8217;re behind the times.</p><p>But if you&#8217;re just thinking that more iPhone applications are going to be the end of it, you&#8217;re in for a rude awakening. Businesses have just started consolidating after the disruptive years of the 90&#8242;s and aught&#8217;s, with the transformative effects of the web largely digested by the marketplace (the newspaper industry is still thrashing but will soon succumb). A new disruptive decade is dawning that may see the passing or fundamental transformation of industries as varied as telecom, credit card and broadcast television/cable. Prepare to take your business through a roller coaster ride every bit as challenging as the web revolution.<span id="more-4558"></span></p><h2>What Will Change First? Telecom.</h2><p>The introduction of the wifi chips into the iPhone broke the charge-by-minute mold. More and more carriers are moving to a flat rate and hybrid connection types will be standard on all mobile devices within a few years. Bandwidth will be purchased in bulk as it is between Amazon and carriers, leaving the consumer (in this case Kindle users) out of the transaction. Connectivity will be sold by the device vendors, not the telecoms, as a part of their offering. The customer relationship will be with the device vendor (much as you relationship with the iPhone is through Apple, not AT&amp;T).</p><p>What will change next, or as a result of this enabling transformation? Lots of things:</p><ol><li>Larger screens, always on solid-state mobile devices with long battery life, and higher bandwidth means that content distribution is moving away from the airwaves and cable and coming to a handheld device near you. What iTunes did to Tower Record will happen towards the end of the next decade to cable and broadcast. Like my friend who gets most of his content through Netflix and Hulu, they&#8217;ll be saying &#8220;I have a TV, but I never turn it on.&#8221;</li><li>Somewhere in the next few years, someone will invent a reliable and secure way to make payments through mobile devices. It will get broad adoption, and after a few hiccups and scares (Remember &#8220;Is it really safe to give my credit card information via SSL?&#8221;), they&#8217;ll be acquired by Paypal and we&#8217;ll be paying for all of our Xmas presents, in stores, with our iPhone Ultras. The banks and credit card companies will fight this, but before too long you&#8217;ll be getting lines of credit and debit mechanism through your mobile devices. Time to cut up those credit cards, because they&#8217;ll be useless.</li><li>Secure mobile devices will enter into every corner of the workplace and cause another productivity boom among those workers who are not tied to the cubicle. Since they use mobile devices in all other aspects of their lives, these will not be expensive new devices with steep learning curves. They will be based on widely existing technology (maybe Android?) and their use as natural to the workers as breathing or browsing Facebook.</li><li>Flexible, foldable displays will make an entrance late in the decade to make the size of mobile devices irrelevant.</li></ol><p>These four fundamental shifts along with the change in the telecom will drive a whole new set of businesses, both products and services. New artforms will spring up, new ways of presenting information, new ways of social and political interaction.</p><h2>As a Business, Take Nothing for Granted</h2><p>Those sound like plenty of transformative changes to keep most businesses, large and small, either plotting to take advantage of them or worrying about their future. If you&#8217;re the sort to embrace change, then there are a few steps you can take to prepare.</p><ol><li>As a business, don&#8217;t assume you know what your customers want. Your customers may have selected your product, for example, because it was a safe choice, not because it had the best features. Your competitors (or new, mobile entrant into the market) may have better, more informed customers and may be getting better feedback and developing a better product that will crush you in a few years time. The risk of this happening is greatly elevated when a new technology is destabilizing existing business models.</li><li>Do user research. The ways in which people are consuming products and services is expanding. Making naive assumptions about your customers will leave you delivering new software that behaves just like your old software, a sure recipe for obsolescence.</li><li>Invest in User Experience Design (UXD). UXD can help you with context. Why is context important? Because your customers aren&#8217;t going to be just sitting in a cubicle or at home. They&#8217;re going to be in stores, shopping, or out on the road, deciding where to stop to eat, or on the sidewalk, trying to find a cool coffee shop. Their context is going to be different as are their goals. The most successful businesses are going to deploy software that understand the importance of context and optimizes how they can achieve their goals in the environment (context) they are in.</li></ol><p>Yes, definitely, the bar has been raised to be successful in business. If you&#8217;re already uncomfortable with your web channels, then this is another headache you&#8217;re going to have to handle. But if you think of it in the same way that you think of your web presence, you&#8217;ll miss the boat.<p><a class="a2a_button_linkedin" href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F01%2Fprediction-teens-decade-mobile%2F&amp;linkname=Prediction%3A%20The%20Teens%20will%20be%20the%20Decade%20of%20Mobile" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a><a class="a2a_button_stumbleupon" href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F01%2Fprediction-teens-decade-mobile%2F&amp;linkname=Prediction%3A%20The%20Teens%20will%20be%20the%20Decade%20of%20Mobile" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F01%2Fprediction-teens-decade-mobile%2F&amp;linkname=Prediction%3A%20The%20Teens%20will%20be%20the%20Decade%20of%20Mobile" title="Digg" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_dzone" href="http://www.addtoany.com/add_to/dzone?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F01%2Fprediction-teens-decade-mobile%2F&amp;linkname=Prediction%3A%20The%20Teens%20will%20be%20the%20Decade%20of%20Mobile" title="DZone" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/dzone.png" width="16" height="16" alt="DZone"/></a><a class="a2a_button_reddit" href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F01%2Fprediction-teens-decade-mobile%2F&amp;linkname=Prediction%3A%20The%20Teens%20will%20be%20the%20Decade%20of%20Mobile" title="Reddit" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F01%2Fprediction-teens-decade-mobile%2F&amp;linkname=Prediction%3A%20The%20Teens%20will%20be%20the%20Decade%20of%20Mobile" title="Delicious" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_button_evernote" href="http://www.addtoany.com/add_to/evernote?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F01%2Fprediction-teens-decade-mobile%2F&amp;linkname=Prediction%3A%20The%20Teens%20will%20be%20the%20Decade%20of%20Mobile" title="Evernote" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/evernote.png" width="16" height="16" alt="Evernote"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fpathfindersoftware.com%2F2010%2F01%2Fprediction-teens-decade-mobile%2F&amp;title=Prediction%3A%20The%20Teens%20will%20be%20the%20Decade%20of%20Mobile" id="wpa2a_18">Share/Bookmark</a></p> ]]></content:encoded> <wfw:commentRss>http://pathfindersoftware.com/2010/01/prediction-teens-decade-mobile/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>What does Google Chrome do for Mac based Flex Developers?</title><link>http://pathfindersoftware.com/2009/12/what-does-google-chrome-do-for-mac-based-flex-developers/</link> <comments>http://pathfindersoftware.com/2009/12/what-does-google-chrome-do-for-mac-based-flex-developers/#comments</comments> <pubDate>Mon, 28 Dec 2009 17:30:13 +0000</pubDate> <dc:creator>Sasha Dzeletovic</dc:creator> <category><![CDATA[Flex]]></category> <category><![CDATA[Software Development]]></category> <category><![CDATA[Technologies and Platforms]]></category><guid isPermaLink="false">http://www.pathf.com/blogs/?p=4532</guid> <description><![CDATA[Do you know every detail in the Flex framework by heart? Do you also know all the other libraries that you use by heart? Well I don&#8217;t and I often have to reference some online resource while developing. For instance, I always have Action Script Language Reference, Wikipedia, some library API site(s), Gmail and a dozen other ...]]></description> <content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"> <a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F12%2Fwhat-does-google-chrome-do-for-mac-based-flex-developers%2F"><br /> <img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F12%2Fwhat-does-google-chrome-do-for-mac-based-flex-developers%2F&amp;source=PathSoft&amp;style=normal&amp;service=bit.ly&amp;service_api=R_8a1154b608af9e55718b231fb0025d40&amp;b=2" height="61" width="50" /><br /> </a></div><p>Do you know every detail in the Flex framework by heart? Do you also know all the other libraries that you use by heart? Well I don&#8217;t and I often have to reference some online resource <em>while </em>developing.</p><p>For instance, I always have Action Script Language Reference, Wikipedia, some library API site(s), Gmail and a dozen other ones open + the debug version of the app at hand.</p><p>So what used to happen when you but a breakpoint in Flex Builder with all these tabs? They would be unavailable and any process happening inside of them could not be relied on. Since not all code runs well on first attempt, if the app crashed while testing ( think 3D, data intensive apps, etc.) the browser and all the tabs went down with it.</p><p>My solution so far was to use Firefox as a development browser and Safari ( since I&#8217;m Mac based ) as a browser for references and everything else. For crashing resolution, Firefox has a nice &#8220;Restore&#8221; option but it&#8217;s not fun waiting for 15 tabs to reload.</p><p>So Google Chrome recently came out for Mac. It didn&#8217;t impress me on Vista so I didn&#8217;t care much. I guess I was in between of curious and bored so I decided to give it a spin.</p><p>What a pleasant surprise to see every tab running in a different process. My workflow feels so much better now that I&#8217;m not afraid that a bad line of code is going to take down my whole browser.</p><p>I&#8217;ve heard that IE8 also runs tabs as different processes but I&#8217;m not crazy about returning to development on Windows. I did try out Chrome on Windows 7 as a result of the Mac test and all the issues I&#8217;ve seen the first time around have been addressed. Kudos to Chrome development team.</p><p>Let&#8217;s not forget to mention all the features that are missing on Google Chrome for Mac, primarily the lack of Bookmark Management, but Google Bookmarks or any online bookmarking service will do for now.</p><p>I can not wait to see more development being done on Google Chrome for Mac and it getting out of beta. I will not uninstall Firefox anytime soon but as a Flex developer I give Google Chrome for Mac high scores for beta.<p><a class="a2a_button_linkedin" href="http://www.addtoany.com/add_to/linkedin?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F12%2Fwhat-does-google-chrome-do-for-mac-based-flex-developers%2F&amp;linkname=What%20does%20Google%20Chrome%20do%20for%20Mac%20based%20Flex%20Developers%3F" title="LinkedIn" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/linkedin.png" width="16" height="16" alt="LinkedIn"/></a><a class="a2a_button_stumbleupon" href="http://www.addtoany.com/add_to/stumbleupon?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F12%2Fwhat-does-google-chrome-do-for-mac-based-flex-developers%2F&amp;linkname=What%20does%20Google%20Chrome%20do%20for%20Mac%20based%20Flex%20Developers%3F" title="StumbleUpon" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/stumbleupon.png" width="16" height="16" alt="StumbleUpon"/></a><a class="a2a_button_digg" href="http://www.addtoany.com/add_to/digg?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F12%2Fwhat-does-google-chrome-do-for-mac-based-flex-developers%2F&amp;linkname=What%20does%20Google%20Chrome%20do%20for%20Mac%20based%20Flex%20Developers%3F" title="Digg" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/digg.png" width="16" height="16" alt="Digg"/></a><a class="a2a_button_dzone" href="http://www.addtoany.com/add_to/dzone?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F12%2Fwhat-does-google-chrome-do-for-mac-based-flex-developers%2F&amp;linkname=What%20does%20Google%20Chrome%20do%20for%20Mac%20based%20Flex%20Developers%3F" title="DZone" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/dzone.png" width="16" height="16" alt="DZone"/></a><a class="a2a_button_reddit" href="http://www.addtoany.com/add_to/reddit?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F12%2Fwhat-does-google-chrome-do-for-mac-based-flex-developers%2F&amp;linkname=What%20does%20Google%20Chrome%20do%20for%20Mac%20based%20Flex%20Developers%3F" title="Reddit" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/reddit.png" width="16" height="16" alt="Reddit"/></a><a class="a2a_button_delicious" href="http://www.addtoany.com/add_to/delicious?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F12%2Fwhat-does-google-chrome-do-for-mac-based-flex-developers%2F&amp;linkname=What%20does%20Google%20Chrome%20do%20for%20Mac%20based%20Flex%20Developers%3F" title="Delicious" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/delicious.png" width="16" height="16" alt="Delicious"/></a><a class="a2a_button_evernote" href="http://www.addtoany.com/add_to/evernote?linkurl=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F12%2Fwhat-does-google-chrome-do-for-mac-based-flex-developers%2F&amp;linkname=What%20does%20Google%20Chrome%20do%20for%20Mac%20based%20Flex%20Developers%3F" title="Evernote" rel="nofollow" target="_blank"><img src="http://pathfindersoftware.com/wp-content/plugins/add-to-any/icons/evernote.png" width="16" height="16" alt="Evernote"/></a><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fpathfindersoftware.com%2F2009%2F12%2Fwhat-does-google-chrome-do-for-mac-based-flex-developers%2F&amp;title=What%20does%20Google%20Chrome%20do%20for%20Mac%20based%20Flex%20Developers%3F" id="wpa2a_20">Share/Bookmark</a></p> ]]></content:encoded> <wfw:commentRss>http://pathfindersoftware.com/2009/12/what-does-google-chrome-do-for-mac-based-flex-developers/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> </channel> </rss>
<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using memcached

Served from: pathfindersoftware.com @ 2012-02-08 11:49:25 -->
