<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.3.3" -->
<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/"
	>

<channel>
	<title>This, That, and the Code</title>
	<link>http://www.thisthatandthecode.com</link>
	<description>A Techie Blog</description>
	<pubDate>Wed, 16 Apr 2008 00:53:40 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.3</generator>
	<language>en</language>
			<item>
		<title>A lesson in Interaction Design from my son Wyatt</title>
		<link>http://www.thisthatandthecode.com/2008/04/15/a-lesson-in-interaction-design-from-my-son-wyatt/</link>
		<comments>http://www.thisthatandthecode.com/2008/04/15/a-lesson-in-interaction-design-from-my-son-wyatt/#comments</comments>
		<pubDate>Wed, 16 Apr 2008 00:52:30 +0000</pubDate>
		<dc:creator>allain</dc:creator>
		
		<category><![CDATA[Usability]]></category>

		<category><![CDATA[User Interfaces]]></category>

		<guid isPermaLink="false">http://www.thisthatandthecode.com/2008/04/15/a-lesson-in-interaction-design-from-my-son-wyatt/</guid>
		<description><![CDATA[Wyatt (my 2 1/2 year old son) was  putting on his boots and I was surprised to see that he&#8217;d lined them up the right way (with the arches toward each other).
My first, pessimistic, thought was that he had a 50% chance of getting it right but I praised him all the same.
He then [...]]]></description>
			<content:encoded><![CDATA[<p>Wyatt (my 2 1/2 year old son) was  putting on his boots and I was surprised to see that he&#8217;d lined them up the right way (with the arches toward each other).</p>
<p>My first, pessimistic, thought was that he had a 50% chance of getting it right but I praised him all the same.</p>
<p>He then proceeded to face the boots and attempt to put them on with the toes pointing towards his heels.</p>
<p>Lesson learned.  Just when you think the interaction couldn&#8217;t get simpler, users uncover your assumptions.</p>
<p>Thanks for that one Wyatt</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thisthatandthecode.com/2008/04/15/a-lesson-in-interaction-design-from-my-son-wyatt/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Google App Engine</title>
		<link>http://www.thisthatandthecode.com/2008/04/09/google-app-engine/</link>
		<comments>http://www.thisthatandthecode.com/2008/04/09/google-app-engine/#comments</comments>
		<pubDate>Wed, 09 Apr 2008 13:25:31 +0000</pubDate>
		<dc:creator>allain</dc:creator>
		
		<category><![CDATA[Agile Development]]></category>

		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.thisthatandthecode.com/2008/04/09/google-app-engine/</guid>
		<description><![CDATA[Facebook applications is to OpenSocial  as Amazon&#8217;s EC2 is to &#8230;&#8230; Google App Engine. Google ftw!
Some things I like about it:

 It&#8217;s free to start&#8230; the startup bar just got lower again
Scales up well (from the reading I&#8217;ve done)&#8230; you just pay more.
The data is backed up better than a home grown solution because of the [...]]]></description>
			<content:encoded><![CDATA[<p>Facebook applications is to OpenSocial  as Amazon&#8217;s EC2 is to &#8230;&#8230; Google App Engine. Google ftw!</p>
<p>Some things I like about it:</p>
<ul>
<li> It&#8217;s free to start&#8230; the startup bar just got lower again</li>
<li>Scales up well (from the reading I&#8217;ve done)&#8230; you just pay more.</li>
<li>The data is backed up better than a home grown solution because of the the GoogleFS&#8217; redundancy</li>
</ul>
<p>I&#8217;ll be learning it soon. Time to bear down and learn Python.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thisthatandthecode.com/2008/04/09/google-app-engine/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Iterative Business Development</title>
		<link>http://www.thisthatandthecode.com/2008/03/24/iterative-business-development/</link>
		<comments>http://www.thisthatandthecode.com/2008/03/24/iterative-business-development/#comments</comments>
		<pubDate>Mon, 24 Mar 2008 15:12:01 +0000</pubDate>
		<dc:creator>allain</dc:creator>
		
		<category><![CDATA[Agile Development]]></category>

		<category><![CDATA[agile]]></category>

		<category><![CDATA[business]]></category>

		<guid isPermaLink="false">http://www.thisthatandthecode.com/2008/03/24/iterative-business-development/</guid>
		<description><![CDATA[Just a thought&#8230; Has anyone ever applied the ideas of Extreme Programming to Business Development.
I wonder what applying them in the business context would do, or if it makes sense for projects in general?
The following is culled from the XP practices guide and changed to apply to business where possible.

The Planning Process,    [...]]]></description>
			<content:encoded><![CDATA[<p>Just a thought&#8230; Has anyone ever applied the ideas of <a href="http://www.xprogramming.com/what_is_xp.htm" title="Extreme Programming">Extreme Programming</a> to Business Development.</p>
<p>I wonder what applying them in the business context would do, or if it makes sense for projects in general?</p>
<p><em>The following is culled from the XP practices guide</em> and changed to apply to business where possible.</p>
<blockquote><dl>
<dt><strong><em>The Planning Process,</em></strong>           sometimes called the Planning Game.</dt>
<dd>           The planning process allows customers to define the business value of desired features,           and uses cost estimates provided by the company&#8217;s employees, to choose what           needs to be done and what needs to be deferred. The effect of this kind of           planning process is that it is easy to steer the project to success.</dd>
<dt><em><strong>Small Releases.</strong></em></dt>
<dd>Agile teams give the client a working product, and update it frequently on a very short cycle.</dd>
<dt><em><strong>Simple Design.</strong></em>  </dt>
<dd>           A           product built in an extreme way should be the simplest solution to           customer&#8217;s current requirements. There is not much building &#8220;for the           future&#8221;. Instead, the focus is on providing business value. Of           course it is necessary to ensure that you have a good design, and in this extreme system it is brought about through &#8220;refactoring&#8221;, discussed           below.         </dd>
<dt><em><strong>Testing.</strong></em> </dt>
<dd>Extreme teams           focus on validation of the product at all times. Employees develop           products by identifying ways in which the product does not match a customer&#8217;s need and then design a minimal change to the product that would make it do so. Customers provide acceptance           tests that enable them to be certain that the features they need are           provided.         </dd>
<dt><em><strong>Refactoring.</strong></em>  </dt>
<dd>Extreme teams improve the design of the system throughout the entire           development. This is done by keeping the process free of duplication, communicative, simple, yet complete.</dd>
<dt><em><strong>Pair Programming.</strong></em>         </dt>
<dd>All employees work in teams.  Two employees to one position. </dd>
<dt><em><strong>Collective Ownership.</strong></em></dt>
<dd>Everyone owns all the product designs. This lets the team go at           full speed, because when something needs changing, it can be changed           without delay.</dd>
<dt><em><strong>Continuous Integration (May not be practical with brick and mortar designs)</strong></em>         </dt>
<dd>Quick prototyping is key.  And it should be possible to prototype the system at least daily. This keeps all the product developers on the same page, and enables very           rapid progress. </dd>
<dt><em><strong>40-hour Week.</strong></em>  </dt>
<dd>Tired employees make more mistakes. Extreme teams do not work excessive           overtime, keeping themselves fresh, healthy, and effective.</dd>
<dt><strong><em>On-site Customer.</em></strong></dt>
<dd>           An extreme project is steered by a dedicated individual who is empowered to           determine requirements, set priorities, and answer questions as the           programmers have them. The effect of being there is that communication           improves, with less hard-copy documentation - often one of the most           expensive parts of a product process.</dd>
<dt><em><strong>Standards.</strong></em></dt>
<dd>           For a team to work effectively in pairs, and to share ownership of the products, all the employees need to document  designs in the same way,           with rules that make sure the product designs communicate clearly. </dd>
</dl>
</blockquote>
<p>It&#8217;s interesting to see how these rules sound when placed in a Business context.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thisthatandthecode.com/2008/03/24/iterative-business-development/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Flot: What&#8217;s the point!?</title>
		<link>http://www.thisthatandthecode.com/2008/03/20/jquery-graph-plugin-sweet/</link>
		<comments>http://www.thisthatandthecode.com/2008/03/20/jquery-graph-plugin-sweet/#comments</comments>
		<pubDate>Thu, 20 Mar 2008 15:24:02 +0000</pubDate>
		<dc:creator>allain</dc:creator>
		
		<category><![CDATA[JavaScript]]></category>

		<category><![CDATA[User Interfaces]]></category>

		<guid isPermaLink="false">http://www.thisthatandthecode.com/2008/03/20/jquery-graph-plugin-sweet/</guid>
		<description><![CDATA[Here&#8217;s a screen shot:

What the hell is the point.  You can do this in flash and have more interactive graphs.  Granted it&#8217;s pretty, but so would any custom flash chart, or if you&#8217;re not the custom kind, there&#8217;s Open Flash Chart.
Seriously people.  jQuery is great for making the client side more interactive, but Flash has [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a screen shot:</p>
<p><img src="http://jquery.com/blog/wp-content/uploads/2007/12/flot-example.png" alt="flot-example.png" height="220" width="427" /></p>
<p>What the hell is the point.  You can do this in flash and have more interactive graphs.  Granted it&#8217;s pretty, but so would any custom flash chart, or if you&#8217;re not the custom kind, there&#8217;s <a href="http://" title="http://teethgrinder.co.uk/open-flash-chart/" target="_blank">Open Flash Chart</a>.</p>
<p>Seriously people.  jQuery is great for making the client side more interactive, but Flash has JavaScript graphics rendering beat.  It&#8217;s faster.  Faster to render and faster in response time.</p>
<p>Don&#8217;t even play the &#8220;Flash may not be installed card&#8221; because I&#8217;ll turn around and use my &#8220;JavaScript may not be enabled&#8221; one.  Every person online today can see youtube videos and so has flash enabled and the web is useless unless you have JavaScript enabled.  So these are not really valid arguments.</p>
<p>Rant complete,</p>
<p>Allain</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thisthatandthecode.com/2008/03/20/jquery-graph-plugin-sweet/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Mint Desktop Linux</title>
		<link>http://www.thisthatandthecode.com/2008/02/22/mint-desktop-linux/</link>
		<comments>http://www.thisthatandthecode.com/2008/02/22/mint-desktop-linux/#comments</comments>
		<pubDate>Sat, 23 Feb 2008 03:11:39 +0000</pubDate>
		<dc:creator>allain</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Usability]]></category>

		<guid isPermaLink="false">http://www.thisthatandthecode.com/?p=21</guid>
		<description><![CDATA[I just installed the Mint Desktop Linux and I&#8217;ve got to say it&#8217;s pretty slick.
Seamless so far.&#160; Better UI than Ubuntu and so far it doesn&#8217;t have the annoying temporary lockup that Ubuntu and gOS had for me (every 5mins or so the system would look solid for about 5 seconds).
If it doesn&#8217;t lock up, [...]]]></description>
			<content:encoded><![CDATA[<p>I just installed the Mint Desktop Linux and I&#8217;ve got to say it&#8217;s pretty slick.</p>
<p>Seamless so far.&nbsp; Better UI than Ubuntu and so far it doesn&#8217;t have the annoying temporary lockup that Ubuntu and gOS had for me (every 5mins or so the system would look solid for about 5 seconds).</p>
<p>If it doesn&#8217;t lock up, I&#8217;ve found my new favorite OS. <img src='http://www.thisthatandthecode.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.thisthatandthecode.com/2008/02/22/mint-desktop-linux/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Die Facebook Die</title>
		<link>http://www.thisthatandthecode.com/2008/02/21/die-facebook-die/</link>
		<comments>http://www.thisthatandthecode.com/2008/02/21/die-facebook-die/#comments</comments>
		<pubDate>Fri, 22 Feb 2008 01:42:21 +0000</pubDate>
		<dc:creator>allain</dc:creator>
		
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.thisthatandthecode.com/?p=20</guid>
		<description><![CDATA[I just disabled my Facebook account.   It&#8217;d been a long time coming, but I now think Facebook is mainly a voluntary spam service.
You sign up. You get spammed (App Invitations).  The sleazy thing about it is that rather than being spammed by some faceless salesperson, you&#8217;re getting spammed by your friends and [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-weight: bold">I just disabled my Facebook account.</span>   It&#8217;d been a long time coming, but I now think Facebook is mainly a voluntary spam service.</p>
<p>You sign up. You get spammed (App Invitations).  The sleazy thing about it is that rather than being spammed by some faceless salesperson, you&#8217;re getting spammed by your friends and family.</p>
<p>Sure, one day they may return to their days of being a glorified global contact and relationship database, but I&#8217;m not holding my breath.</p>
<p>Adios and farewell.<br />
<!-- technorati tags begin --></p>
<p style="font-size: 10px; text-align: right">Tags: <a href="http://technorati.com/tag/facebook" rel="tag">facebook</a>, <a href="http://technorati.com/tag/disabled" rel="tag">disabled</a></p>
<p><!-- technorati tags end --></p>
]]></content:encoded>
			<wfw:commentRss>http://www.thisthatandthecode.com/2008/02/21/die-facebook-die/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Baby Steps to Great Software</title>
		<link>http://www.thisthatandthecode.com/2008/01/23/baby-steps-to-great-software/</link>
		<comments>http://www.thisthatandthecode.com/2008/01/23/baby-steps-to-great-software/#comments</comments>
		<pubDate>Wed, 23 Jan 2008 14:33:09 +0000</pubDate>
		<dc:creator>allain</dc:creator>
		
		<category><![CDATA[PHP]]></category>

		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.thisthatandthecode.com/?p=19</guid>
		<description><![CDATA[Without given too much away&#8230;
I recently inherited a website written in PHP that uses the CodeIgniter Framework (Which I like).&#160; The problem is that the people who used it to develop the website didn&#8217;t appreciate the MVC pattern.
Let me boil it down for you.&#160; The project consists of:

1 Controller
0 Model classes
30 view files in the [...]]]></description>
			<content:encoded><![CDATA[<p>Without given too much away&#8230;</p>
<p>I recently inherited a website written in PHP that uses the CodeIgniter Framework (Which I like).&nbsp; The problem is that the people who used it to develop the website didn&#8217;t appreciate the MVC pattern.</p>
<p>Let me boil it down for you.&nbsp; The project consists of:</p>
<ul>
<li>1 Controller</li>
<li>0 Model classes</li>
<li>30 view files in the same directory</li>
<li>0 lines of documentation</li>
</ul>
<p>A real doozey, to say the least.</p>
<p>Since I&#8217;m going to be extending this masterpiece, I&#8217;ve adopted the following procedure for refactoring it to be more&nbsp; manageable:</p>
<ol>
<li>Refactor the data access (a mixture of CodeIgniter chained approach and horrible dynamic SQL stuff) into Model Classes</li>
<li>Refactor the Controller into Controllers</li>
<li>Organize the views into directory structures to make things a little cleaner (optional)</li>
</ol>
<p>I&#8217;ll let you know how this goes.</p>
<p style="text-align: right; font-size: 8px">Blogged with <a href="http://www.flock.com/blogged-with-flock" title="Flock" target="_new">Flock</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.thisthatandthecode.com/2008/01/23/baby-steps-to-great-software/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Play the Business Piccolo?</title>
		<link>http://www.thisthatandthecode.com/2008/01/15/play-the-business-piccolo/</link>
		<comments>http://www.thisthatandthecode.com/2008/01/15/play-the-business-piccolo/#comments</comments>
		<pubDate>Tue, 15 Jan 2008 23:27:48 +0000</pubDate>
		<dc:creator>allain</dc:creator>
		
		<category><![CDATA[Java]]></category>

		<category><![CDATA[Programming]]></category>

		<category><![CDATA[User Interfaces]]></category>

		<guid isPermaLink="false">http://www.thisthatandthecode.com/?p=16</guid>
		<description><![CDATA[Piccolo is a Java and .NET library written to allow the construction of arbitrary 2D GUIs; most notably it provides great support for rotation and scaling.
I think it&#8217;s seen as a toy project right now by most developers in the business realm (even though it&#8217;s a mature library) , but I think there are some [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.thisthatandthecode.com/wp-content/uploads/2008/01/images.thumbnail.jpg" alt="Resize" style="float: right" height="87" width="87" />Piccolo is a Java and .NET library written to allow the construction of arbitrary 2D GUIs; most notably it provides great support for rotation and scaling.</p>
<p>I think it&#8217;s seen as a toy project right now by most developers in the business realm (even though it&#8217;s a mature library) , but I think there are some pretty slick business applications just waiting to be made with it.</p>
<p>Some examples that I can think of are:</p>
<ul>
<li>A tablet PC interface that makes awkward document management using a stylus a thing of the past. I mean why hasn&#8217;t anyone created an infinite 2D whiteboard.  I mean one in which you could zoom in as much as you&#8217;d like or arbitrarily shrink a doodle to make more room around it.</li>
<li>Maps in which you&#8217;re presented with geographic locations map to Remote Desktop Connections.</li>
<li>A single screen that displays <span style="font-weight: bold">all information stored within a company</span> and through simple navigation can be drilled down into (ala Raskin), but unlike Raskin&#8217;s ZUIs I&#8217;d compromise and have dialogs open up to edit individual nodes (for simplicity) as opposed to in place editing (as much as I&#8217;d like to).  Combining this with 3D pushpins, I think it&#8217;d work.</li>
</ul>
<p>I&#8217;d like to prototype some of this when I have some time and some real data.</p>
<p>Does this sound neat to anyone else?</p>
<p><!-- technorati tags begin --></p>
<p style="font-size: 10px; text-align: right">Tags: <a href="http://technorati.com/tag/zui" rel="tag">zui</a>, <a href="http://technorati.com/tag/piccolo" rel="tag">piccolo</a>, <a href="http://technorati.com/tag/%20java" rel="tag"> java</a>, <a href="http://technorati.com/tag/%20business" rel="tag"> business</a></p>
<p><!-- technorati tags end --></p>
]]></content:encoded>
			<wfw:commentRss>http://www.thisthatandthecode.com/2008/01/15/play-the-business-piccolo/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Are you sure you want to _______?</title>
		<link>http://www.thisthatandthecode.com/2008/01/14/improving-undo/</link>
		<comments>http://www.thisthatandthecode.com/2008/01/14/improving-undo/#comments</comments>
		<pubDate>Tue, 15 Jan 2008 01:34:03 +0000</pubDate>
		<dc:creator>allain</dc:creator>
		
		<category><![CDATA[Programming]]></category>

		<category><![CDATA[Usability]]></category>

		<category><![CDATA[User Interfaces]]></category>

		<guid isPermaLink="false">http://www.thisthatandthecode.com/?p=14</guid>
		<description><![CDATA[
I&#8217;d love to never see that dialog box again. Can we make that happen? Would it be worth it?
Abstractly, you can treat all user actions as transformations on an application&#8217;s state.  Undo is then implemented by either remembering the state before the action, or by knowing how to do the action in reverse (depends [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.thisthatandthecode.com/wp-content/uploads/2008/01/undo_t.bmp" alt="Undo Icon" style="float: right" /></p>
<p>I&#8217;d love to never see that dialog box again. Can we make that happen? Would it be worth it?</p>
<p>Abstractly, you can treat all user actions as transformations on an application&#8217;s state.  Undo is then implemented by either remembering the state before the action, or by knowing how to do the action in reverse (depends on the context).  For example, an SVG Program might implement undo on a rotation by just knowing that if you rotate by (360-angle) you get the original shape back, and updating a salary on an employee would require we save the salary somewhere before applying the change.  Now, if every action your application provided could be undone then there&#8217;s no technical reason (other than cost) that every action, up to the time the application was installed, couldn&#8217;t be undone.What would software that allowed for this kind of <strong>&#8220;Better Undo&#8221;</strong> look like, and how could it be made useful?</p>
<p>My thoughts:</p>
<ul>
<li>If you design your application so that all actions can be undone then users would feel more comfortable using it. All too often on website you&#8217;re asked &#8220;Are you sure you want to delete ______?&#8221; when they could just as easily flip a deleted flag and then purge after a time.</li>
<li>Contextual undo is probably more important that global undo, since the thing you have selected is probably the thing you want rolled back.</li>
<li>Sometimes the last action performed is not the thing you want undone.  Unless you&#8217;re very careful, jumping the undo queue is probably a terrible idea since later actions might depend on the application being in the state after the undone action was performed (<em>that made sense to me</em>).  Now, if we were willing to pay the price for this functionality, I think we could do it by associating a precondition for each action that could be checked when we jump the queue.  Then for all &#8220;future undos&#8221; we would have a litmus test to see if it needed to be removed from the set of undos.</li>
<li>Subversion does this for files I think.  It allows you to revert to an arbitrary point in time, or on a file by file basis.  What I&#8217;m talking about here is something more generic.  Maybe using subversion as a backend to a system like this would work though.</li>
</ul>
<p>What do you think?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thisthatandthecode.com/2008/01/14/improving-undo/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Securing JavaScript Applications</title>
		<link>http://www.thisthatandthecode.com/2007/11/12/securing-javascript-applications/</link>
		<comments>http://www.thisthatandthecode.com/2007/11/12/securing-javascript-applications/#comments</comments>
		<pubDate>Mon, 12 Nov 2007 12:03:19 +0000</pubDate>
		<dc:creator>allain</dc:creator>
		
		<category><![CDATA[JavaScript]]></category>

		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://www.thisthatandthecode.com/?p=12</guid>
		<description><![CDATA[One big problem with using JavaScript as the basis for your application is that if a hacker gets clever they can insert their own JavaScript into your trusted page and execute it as though it were yours (XSS).
You could curtail a hacker by modifying the DOM so that the objects they would typically use to [...]]]></description>
			<content:encoded><![CDATA[<p>One big problem with using JavaScript as the basis for your application is that if a hacker gets clever they can insert their own JavaScript into your trusted page and execute it as though it were yours (XSS).</p>
<p>You could curtail a hacker by modifying the DOM so that the objects they would typically use to perform the hack have been replaced, or modified, so that they are lame.  This wouldn&#8217;t hurt your code since, if well written, it would save references to the the unchanged objects.</p>
<p>For example you could:</p>
<ul>
<li>define an empty function called XmlHttpRequest</li>
<li>crawl the DOM and remove, or replace, appendChild and other DOM methods making Dynamic script tags impossible to insert.</li>
<li>_document = document; document = {};  // Making it more difficult to get your hands on the document object</li>
</ul>
<p>I haven&#8217;t heard anyone talk about this before so I&#8217;d love to hear what people think.</p>
<p>Thanks,<br />
Allain</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thisthatandthecode.com/2007/11/12/securing-javascript-applications/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
