<?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>The Rationalist Manifesto &#187; Software</title>
	<atom:link href="http://www.rationalistic.com/category/software/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.rationalistic.com</link>
	<description>Memes and other creatures</description>
	<lastBuildDate>Wed, 21 Apr 2010 00:46:28 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Maven voice notifications on Mac OS X</title>
		<link>http://www.rationalistic.com/2009/04/16/software/maven-voice-notifications-on-mac-os-x/</link>
		<comments>http://www.rationalistic.com/2009/04/16/software/maven-voice-notifications-on-mac-os-x/#comments</comments>
		<pubDate>Thu, 16 Apr 2009 05:32:21 +0000</pubDate>
		<dc:creator>Tal Rotbart</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[build]]></category>
		<category><![CDATA[mac os x]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[mvn]]></category>
		<category><![CDATA[say]]></category>
		<category><![CDATA[voice]]></category>

		<guid isPermaLink="false">http://www.rationalistic.com/?p=332</guid>
		<description><![CDATA[A quick hack to get the &#8216;mvn&#8217; Maven script to vocally notify &#8216;Success&#8217; or &#8216;Failed&#8217; when the build completes. I find it useful as it grabs my attention when I&#8217;m undertaking other tasks while the build is churning.
Naturally the real solution is getting the build to run in seconds&#8230; Technical debt, thou art a harsh [...]]]></description>
			<content:encoded><![CDATA[<p>A quick hack to get the &#8216;mvn&#8217; Maven script to vocally notify &#8216;Success&#8217; or &#8216;Failed&#8217; when the build completes. I find it useful as it grabs my attention when I&#8217;m undertaking other tasks while the build is churning.</p>
<p>Naturally the real solution is getting the build to run in seconds&#8230; Technical debt, thou art a harsh mistress.</p>
<p>Replace the last couple of lines (starting with &#8216;exec&#8217;) in your mvn script with:</p>
<pre>"$JAVACMD"
  $MAVEN_OPTS
  -classpath "${M2_HOME}"/boot/classworlds-*.jar
  "-Dclassworlds.conf=${M2_HOME}/bin/m2.conf"
  "-Dmaven.home=${M2_HOME}"
  ${CLASSWORLDS_LAUNCHER} $QUOTED_ARGS &amp;&amp; say "Success!" || (say "Failed!" &amp;&amp; false)</pre>
<p><span style="text-decoration: underline;">Updated</span>: Changed to avoid incorrectly returning a successful exit code on failure.</p>
<!-- Social Bookmarks BEGIN --><div class="social_bookmark"><em>Bookmark to:</em><br /><a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://www.rationalistic.com/2009/04/16/software/maven-voice-notifications-on-mac-os-x/&amp;title=Maven+voice+notifications+on+Mac+OS+X" title="Add 'Maven voice notifications on Mac OS X' to Del.icio.us"><img src="http://www.rationalistic.com/wp-content/plugins/social_bookmarks/delicious.png" title="Add 'Maven voice notifications on Mac OS X' to Del.icio.us" alt="Add 'Maven voice notifications on Mac OS X' to Del.icio.us" /></a><a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://www.rationalistic.com/2009/04/16/software/maven-voice-notifications-on-mac-os-x/&amp;title=Maven+voice+notifications+on+Mac+OS+X" title="Add 'Maven voice notifications on Mac OS X' to digg"><img src="http://www.rationalistic.com/wp-content/plugins/social_bookmarks/digg.png" title="Add 'Maven voice notifications on Mac OS X' to digg" alt="Add 'Maven voice notifications on Mac OS X' to digg" /></a><a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http://www.rationalistic.com/2009/04/16/software/maven-voice-notifications-on-mac-os-x/&amp;title=Maven+voice+notifications+on+Mac+OS+X" title="Add 'Maven voice notifications on Mac OS X' to reddit"><img src="http://www.rationalistic.com/wp-content/plugins/social_bookmarks/reddit.png" title="Add 'Maven voice notifications on Mac OS X' to reddit" alt="Add 'Maven voice notifications on Mac OS X' to reddit" /></a><br /><a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http://www.rationalistic.com/2009/04/16/software/maven-voice-notifications-on-mac-os-x/" title="Add 'Maven voice notifications on Mac OS X' to Technorati"><img src="http://www.rationalistic.com/wp-content/plugins/social_bookmarks/technorati.png" title="Add 'Maven voice notifications on Mac OS X' to Technorati" alt="Add 'Maven voice notifications on Mac OS X' to Technorati" /></a><a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http://www.rationalistic.com/2009/04/16/software/maven-voice-notifications-on-mac-os-x/&amp;t=Maven+voice+notifications+on+Mac+OS+X" title="Add 'Maven voice notifications on Mac OS X' to Yahoo My Web"><img src="http://www.rationalistic.com/wp-content/plugins/social_bookmarks/yahoo_myweb.png" title="Add 'Maven voice notifications on Mac OS X' to Yahoo My Web" alt="Add 'Maven voice notifications on Mac OS X' to Yahoo My Web" /></a><a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/refer.php?url=http://www.rationalistic.com/2009/04/16/software/maven-voice-notifications-on-mac-os-x/&amp;title=Maven+voice+notifications+on+Mac+OS+X" title="Add 'Maven voice notifications on Mac OS X' to Stumble Upon"><img src="http://www.rationalistic.com/wp-content/plugins/social_bookmarks/stumbleupon.png" title="Add 'Maven voice notifications on Mac OS X' to Stumble Upon" alt="Add 'Maven voice notifications on Mac OS X' to Stumble Upon" /></a></div>
<!-- Social Bookmarks END -->]]></content:encoded>
			<wfw:commentRss>http://www.rationalistic.com/2009/04/16/software/maven-voice-notifications-on-mac-os-x/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DDD = ?</title>
		<link>http://www.rationalistic.com/2009/04/07/software/ddd/</link>
		<comments>http://www.rationalistic.com/2009/04/07/software/ddd/#comments</comments>
		<pubDate>Tue, 07 Apr 2009 01:40:34 +0000</pubDate>
		<dc:creator>Tal Rotbart</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[ddd]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[domain driven design]]></category>
		<category><![CDATA[law of demeter]]></category>

		<guid isPermaLink="false">http://www.rationalistic.com/?p=328</guid>
		<description><![CDATA[Mark Needham has a very interesting post regarding Domain Driven Design. One paragraph that caught my eye especially is:
As Luis Abreu points out, I don&#8217;t think there is a precise definition of what DDD actually is but for me the essence of DDD is still the same as when I compared it with OO i.e. [...]]]></description>
			<content:encoded><![CDATA[<p>Mark Needham has a very <a href="http://www.markhneedham.com/blog/2009/04/06/ddd-only-for-complex-projects/">interesting post</a> regarding Domain Driven Design. One paragraph that caught my eye especially is:</p>
<blockquote><p>As Luis Abreu points out, I don&#8217;t think there is <a href="http://msmvps.com/blogs/luisabreu/archive/2008/12/10/is-ddd-for-me.aspx">a precise definition of what DDD actually is</a> but for me the essence of DDD is still the same as when I compared it with OO i.e. <strong>Domain Driven Design = Object Oriented Programming + Ubiquitous Language</strong>.</p></blockquote>
<p>I think that Mark is on to a very useful and succinct definition of DDD, yet I feel he overlooked <a href="http://jamesladdcode.com/?p=252">the Law of Demeter</a>. Building on Mark&#8217;s definition I&#8217;d define DDD as <strong>Domain Driven Design = Object Oriented Programming + Ubiquitous Language + The Law of Demeter</strong>. While some would argue that the Law of Demeter is implicit in Object Oriented Programming (or at least of OOP of the good kind&#8230;) I believe that it is important enough for successful Domain Driven Design that it should be explicitly mentioned.</p>
<p>Looking forward to your comments!</p>
<!-- Social Bookmarks BEGIN --><div class="social_bookmark"><em>Bookmark to:</em><br /><a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://www.rationalistic.com/2009/04/07/software/ddd/&amp;title=DDD+%3D+%3F" title="Add 'DDD = ?' to Del.icio.us"><img src="http://www.rationalistic.com/wp-content/plugins/social_bookmarks/delicious.png" title="Add 'DDD = ?' to Del.icio.us" alt="Add 'DDD = ?' to Del.icio.us" /></a><a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://www.rationalistic.com/2009/04/07/software/ddd/&amp;title=DDD+%3D+%3F" title="Add 'DDD = ?' to digg"><img src="http://www.rationalistic.com/wp-content/plugins/social_bookmarks/digg.png" title="Add 'DDD = ?' to digg" alt="Add 'DDD = ?' to digg" /></a><a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http://www.rationalistic.com/2009/04/07/software/ddd/&amp;title=DDD+%3D+%3F" title="Add 'DDD = ?' to reddit"><img src="http://www.rationalistic.com/wp-content/plugins/social_bookmarks/reddit.png" title="Add 'DDD = ?' to reddit" alt="Add 'DDD = ?' to reddit" /></a><br /><a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http://www.rationalistic.com/2009/04/07/software/ddd/" title="Add 'DDD = ?' to Technorati"><img src="http://www.rationalistic.com/wp-content/plugins/social_bookmarks/technorati.png" title="Add 'DDD = ?' to Technorati" alt="Add 'DDD = ?' to Technorati" /></a><a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http://www.rationalistic.com/2009/04/07/software/ddd/&amp;t=DDD+%3D+%3F" title="Add 'DDD = ?' to Yahoo My Web"><img src="http://www.rationalistic.com/wp-content/plugins/social_bookmarks/yahoo_myweb.png" title="Add 'DDD = ?' to Yahoo My Web" alt="Add 'DDD = ?' to Yahoo My Web" /></a><a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/refer.php?url=http://www.rationalistic.com/2009/04/07/software/ddd/&amp;title=DDD+%3D+%3F" title="Add 'DDD = ?' to Stumble Upon"><img src="http://www.rationalistic.com/wp-content/plugins/social_bookmarks/stumbleupon.png" title="Add 'DDD = ?' to Stumble Upon" alt="Add 'DDD = ?' to Stumble Upon" /></a></div>
<!-- Social Bookmarks END -->]]></content:encoded>
			<wfw:commentRss>http://www.rationalistic.com/2009/04/07/software/ddd/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>&#8216;IT pays&#8217; doesn&#8217;t pay</title>
		<link>http://www.rationalistic.com/2009/03/27/software/it-pays-doesnt-pay/</link>
		<comments>http://www.rationalistic.com/2009/03/27/software/it-pays-doesnt-pay/#comments</comments>
		<pubDate>Fri, 27 Mar 2009 02:00:08 +0000</pubDate>
		<dc:creator>Tal Rotbart</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[Rant]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[Process]]></category>

		<guid isPermaLink="false">http://www.rationalistic.com/?p=305</guid>
		<description><![CDATA[Picture this rather common scenario&#8211;
You are in charge of a project for developing an internal application at a large brick-and-mortar company. Your target audience for the application are the employees of a critical business department (here on, Department X). The customer representative is the head of that department and is glad to be involved in [...]]]></description>
			<content:encoded><![CDATA[<p>Picture this rather common scenario&#8211;</p>
<p>You are in charge of a project for developing an internal application at a large brick-and-mortar company. Your target audience for the application are the employees of a critical business department (here on, Department X). The customer representative is the head of that department and is glad to be involved in the planning process and domain knowledge sharing as well as story analysis, hand over and sign-off; Seemingly, an ideal &#8216;customer&#8217;, here on- Mr. X.</p>
<p>Yet at scope planning meetings for the project, Mr X. is insisting that all the feature requirements are &#8216;Must Haves&#8217; and while he agrees that the order of development should be based on &#8216;higher business value first&#8217;, he refuses to de-scope any features, insisting that due to external circumstances their delivery must occur by the project&#8217;s go-live date.</p>
<p>You would accept Mr X’s proposal if he would be willing to increase the budget for project to allow resourcing to meet these requirements. Great! He is willing! But wait &#8212; he can&#8217;t. Why? Because the project is funded out of the IT budget and not out of department X&#8217;s. This is a lose-lose situation, as the project is now set to fail in the eyes of the customer and in turn, harming the IT department&#8217;s reputation &#8211; Department X is not getting what it wants, even though it is willing to pay for it. </p>
<p>The root cause here is the divergence between the beneficiary of the application and the entity that pays for it. The two may have differing goals, priorities, political considerations and machinations and whilst they both work towards the same organisational goals, these two entities operate under different business units with sometimes divergent operating considerations.</p>
<p>Budgeting models for IT departments seem to be based around IT as infrastructure &#8212; which makes sense for, wait for it&#8230; infrastructure: network, VOIP, hardware and the like &#8212; but repeatedly fails for business applications.</p>
<p>While it makes sense for IT departments to harbour the core capabilities and knowledge for software development (&#8230;.development infrastructure&#8230;) it should only act as a cost-effective contractor to the business when developing business applications. Business applications projects should only be undertaken as part of a business case, they should have clear ownership by the benefiting entity and not the IT department.</p>
<p>When analysing teams and projects that clearly &#8217;smell&#8217; and have a hard time changing, my personal experience indicates that in the majority of cases, following the smell to its source leads to this root cause. This is more pronounced in bigger organisations and seems to be proportional to the level of organisational separation between the project beneficiaries and the IT department. More so &#8212; this is almost always the underlying organisational issue that makes it difficult to implement agile methodologies.</p>
<p>This lesson was learned by many organisations, but unfortunately not all &#8212; and it should&#8211;</p>
<p> The &#8216;IT department pays&#8217; model of application development should die.</p>
<!-- Social Bookmarks BEGIN --><div class="social_bookmark"><em>Bookmark to:</em><br /><a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://www.rationalistic.com/2009/03/27/software/it-pays-doesnt-pay/&amp;title=%26%238216%3BIT+pays%26%238217%3B+doesn%26%238217%3Bt+pay" title="Add '&#8216;IT pays&#8217; doesn&#8217;t pay' to Del.icio.us"><img src="http://www.rationalistic.com/wp-content/plugins/social_bookmarks/delicious.png" title="Add '&#8216;IT pays&#8217; doesn&#8217;t pay' to Del.icio.us" alt="Add '&#8216;IT pays&#8217; doesn&#8217;t pay' to Del.icio.us" /></a><a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://www.rationalistic.com/2009/03/27/software/it-pays-doesnt-pay/&amp;title=%26%238216%3BIT+pays%26%238217%3B+doesn%26%238217%3Bt+pay" title="Add '&#8216;IT pays&#8217; doesn&#8217;t pay' to digg"><img src="http://www.rationalistic.com/wp-content/plugins/social_bookmarks/digg.png" title="Add '&#8216;IT pays&#8217; doesn&#8217;t pay' to digg" alt="Add '&#8216;IT pays&#8217; doesn&#8217;t pay' to digg" /></a><a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http://www.rationalistic.com/2009/03/27/software/it-pays-doesnt-pay/&amp;title=%26%238216%3BIT+pays%26%238217%3B+doesn%26%238217%3Bt+pay" title="Add '&#8216;IT pays&#8217; doesn&#8217;t pay' to reddit"><img src="http://www.rationalistic.com/wp-content/plugins/social_bookmarks/reddit.png" title="Add '&#8216;IT pays&#8217; doesn&#8217;t pay' to reddit" alt="Add '&#8216;IT pays&#8217; doesn&#8217;t pay' to reddit" /></a><br /><a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http://www.rationalistic.com/2009/03/27/software/it-pays-doesnt-pay/" title="Add '&#8216;IT pays&#8217; doesn&#8217;t pay' to Technorati"><img src="http://www.rationalistic.com/wp-content/plugins/social_bookmarks/technorati.png" title="Add '&#8216;IT pays&#8217; doesn&#8217;t pay' to Technorati" alt="Add '&#8216;IT pays&#8217; doesn&#8217;t pay' to Technorati" /></a><a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http://www.rationalistic.com/2009/03/27/software/it-pays-doesnt-pay/&amp;t=%26%238216%3BIT+pays%26%238217%3B+doesn%26%238217%3Bt+pay" title="Add '&#8216;IT pays&#8217; doesn&#8217;t pay' to Yahoo My Web"><img src="http://www.rationalistic.com/wp-content/plugins/social_bookmarks/yahoo_myweb.png" title="Add '&#8216;IT pays&#8217; doesn&#8217;t pay' to Yahoo My Web" alt="Add '&#8216;IT pays&#8217; doesn&#8217;t pay' to Yahoo My Web" /></a><a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/refer.php?url=http://www.rationalistic.com/2009/03/27/software/it-pays-doesnt-pay/&amp;title=%26%238216%3BIT+pays%26%238217%3B+doesn%26%238217%3Bt+pay" title="Add '&#8216;IT pays&#8217; doesn&#8217;t pay' to Stumble Upon"><img src="http://www.rationalistic.com/wp-content/plugins/social_bookmarks/stumbleupon.png" title="Add '&#8216;IT pays&#8217; doesn&#8217;t pay' to Stumble Upon" alt="Add '&#8216;IT pays&#8217; doesn&#8217;t pay' to Stumble Upon" /></a></div>
<!-- Social Bookmarks END -->]]></content:encoded>
			<wfw:commentRss>http://www.rationalistic.com/2009/03/27/software/it-pays-doesnt-pay/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Selenium Test Tips</title>
		<link>http://www.rationalistic.com/2007/04/05/software/selenium-test-tips/</link>
		<comments>http://www.rationalistic.com/2007/04/05/software/selenium-test-tips/#comments</comments>
		<pubDate>Thu, 05 Apr 2007 05:39:02 +0000</pubDate>
		<dc:creator>Tal Rotbart</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.rationalistic.com/2007/04/05/software/selenium-test-tips/</guid>
		<description><![CDATA[Selenium is an open-source test tool for web-based applications and sites. Unlike Canoo WebTest, Selenium actually utilizes the browser itself to perform the tests.
Selenium has a Firefox extension that acts as an IDE for recording and editing test cases however there is a significant difference between running the tests in the IDE and running them [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://en.wikipedia.org/wiki/Selenium_%28software%29">Selenium</a> is an open-source test tool for web-based applications and sites. Unlike <a href="http://webtest.canoo.com/webtest/manual/WebTestHome.html">Canoo WebTest</a>, Selenium actually utilizes the browser itself to perform the tests.</p>
<p>Selenium has a Firefox extension that acts as an IDE for recording and editing test cases however there is a significant difference between running the tests in the IDE and running them as part of a build process &#8212; cross-site scripting.</p>
<p>When running tests in the IDE, Selenium is not limited by Firefox cross-site scripting preventative measures and can follow links to external sites (outside your &#8216;base URL&#8217;) and verify that the target has been reached. This is not possible when running it as part of a build process in stand-alone mode.</p>
<p>The reason for this difference is that when running Selenium in stand-alone mode it generates a web-page that contains the test runtime with the actual web-page it is testing residing within an IFRAME. Once you traverse to links outside the domain the Selenium generated web-page is at (usually localhost) then you are subject to cross-site scripting limitations. Put it simply, your top page (Selenium generated) would be in the &#8216;localhost&#8217; domain, and the external page is at another domain thus triggering the cross-site scripting security restrictions.</p>
<p>I&#8217;ll demonstrate what I mean:</p>
<p>In Selenium, a typical link test is done so:</p>
<ol>
<li>A &#8216;click&#8217; Selenium command with the &#8216;link=&#8217; target.</li>
<li>Then a &#8216;waitForPageToLoad&#8217; command</li>
<li>Followed by an &#8216;assertLocation&#8217; with the correct expected URL</li>
</ol>
<p>This test will fail when running in the standalone mode with the link target being external to the domain running the Selenium web-page. Instead of what you expect from the IDE based run you will hit upon permission errors accessing &#8220;document.href&#8221; and other DOM properties. This is simply because your script is from domain &#8220;localhost&#8221; (for example) and does not have access to the DOM of the page from the external domain (say &#8220;rationalistic.com&#8221;)&#8230; Note that  for the same reason you can&#8217;t even call &#8216;goBack&#8217; after the &#8216;click&#8217;.</p>
<p>An alternative to this method that is useful for external links is simply to verify the existence and &#8216;href&#8217; attribute of the link. While this is not ideal (as it doesn&#8217;t take into account Javascript method links) it is, in my opinion enough verification for off-site links. To use this method of testing a link&#8217;s existence and target you must give the &lt;a&gt; element an id, preferably one that starts with &#8220;link_&#8221; and then using the Selenium &#8216;assertElementPresent&#8217; and &#8216;assertAttribute&#8217; commands.</p>
<p>For example, consider a link to my blog site:</p>
<p>&lt;a id=&#8221;link_rationalistic&#8221; href=&#8221;http://www.rationalistic.com&#8221;&gt;The Rationalist Manifesto&lt;/a&gt;</p>
<p>To test it in Selenium you would do this:</p>
<ol>
<li>Use the &#8216;assertElementPresent&#8217; command with a target of &#8216;link_rationalistic&#8217;</li>
<li>Follow with an &#8216;assertAttribute&#8217; command with a target of &#8216;link_rationalistic@href&#8217; and a value of &#8216;http://www.rationalistic.com&#8217;.</li>
</ol>
<p>This testing method provides reasonable confidence that the link exists and leads to the correct location without following it.</p>
<p><u>Note</u>:<br />
This method is also useful for links which have symbol characters in them which may be difficult to locate using the &#8216;link=&#8217; targets.</p>
<!-- Social Bookmarks BEGIN --><div class="social_bookmark"><em>Bookmark to:</em><br /><a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://www.rationalistic.com/2007/04/05/software/selenium-test-tips/&amp;title=Selenium+Test+Tips" title="Add 'Selenium Test Tips' to Del.icio.us"><img src="http://www.rationalistic.com/wp-content/plugins/social_bookmarks/delicious.png" title="Add 'Selenium Test Tips' to Del.icio.us" alt="Add 'Selenium Test Tips' to Del.icio.us" /></a><a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://www.rationalistic.com/2007/04/05/software/selenium-test-tips/&amp;title=Selenium+Test+Tips" title="Add 'Selenium Test Tips' to digg"><img src="http://www.rationalistic.com/wp-content/plugins/social_bookmarks/digg.png" title="Add 'Selenium Test Tips' to digg" alt="Add 'Selenium Test Tips' to digg" /></a><a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http://www.rationalistic.com/2007/04/05/software/selenium-test-tips/&amp;title=Selenium+Test+Tips" title="Add 'Selenium Test Tips' to reddit"><img src="http://www.rationalistic.com/wp-content/plugins/social_bookmarks/reddit.png" title="Add 'Selenium Test Tips' to reddit" alt="Add 'Selenium Test Tips' to reddit" /></a><br /><a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http://www.rationalistic.com/2007/04/05/software/selenium-test-tips/" title="Add 'Selenium Test Tips' to Technorati"><img src="http://www.rationalistic.com/wp-content/plugins/social_bookmarks/technorati.png" title="Add 'Selenium Test Tips' to Technorati" alt="Add 'Selenium Test Tips' to Technorati" /></a><a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http://www.rationalistic.com/2007/04/05/software/selenium-test-tips/&amp;t=Selenium+Test+Tips" title="Add 'Selenium Test Tips' to Yahoo My Web"><img src="http://www.rationalistic.com/wp-content/plugins/social_bookmarks/yahoo_myweb.png" title="Add 'Selenium Test Tips' to Yahoo My Web" alt="Add 'Selenium Test Tips' to Yahoo My Web" /></a><a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/refer.php?url=http://www.rationalistic.com/2007/04/05/software/selenium-test-tips/&amp;title=Selenium+Test+Tips" title="Add 'Selenium Test Tips' to Stumble Upon"><img src="http://www.rationalistic.com/wp-content/plugins/social_bookmarks/stumbleupon.png" title="Add 'Selenium Test Tips' to Stumble Upon" alt="Add 'Selenium Test Tips' to Stumble Upon" /></a></div>
<!-- Social Bookmarks END -->]]></content:encoded>
			<wfw:commentRss>http://www.rationalistic.com/2007/04/05/software/selenium-test-tips/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rosenberg&#8217;s Law Rephrased</title>
		<link>http://www.rationalistic.com/2007/02/05/software/rosenbergs-law-rephrased/</link>
		<comments>http://www.rationalistic.com/2007/02/05/software/rosenbergs-law-rephrased/#comments</comments>
		<pubDate>Sun, 04 Feb 2007 23:09:16 +0000</pubDate>
		<dc:creator>Tal Rotbart</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.rationalistic.com/2007/02/05/software/rosenbergs-law-rephrased/</guid>
		<description><![CDATA[The publishing of Scott Rosenberg&#8217;s &#8220;Dreaming in Code&#8221; and the PR circle around it, has prompted Jonathan Rentzsch writing a post which criticizes one of Rosenberg&#8217;s main tenants &#8212; that &#8216;Programmers like to code&#8217; &#8212; and suggests instead that &#8216;Programmers like problem solving&#8217;. Rentzsch goes on to claim that programmers&#8217; urge to rewrite problematic legacy [...]]]></description>
			<content:encoded><![CDATA[<p>The publishing of Scott Rosenberg&#8217;s &#8220;<a href="http://www.dreamingincode.com/">Dreaming in Code</a>&#8221; and the <a href="http://www.salon.com/books/int/2007/02/03/leonard/print.html">PR</a> <a href="http://www.joelonsoftware.com/items/2007/01/21.html">circle</a> around it, has prompted Jonathan Rentzsch <a href="http://rentzsch.com/notes/programmersDontLikeToCode">writing a post</a> which criticizes one of Rosenberg&#8217;s main tenants &#8212; that &#8216;Programmers like to code&#8217; &#8212; and suggests instead that &#8216;Programmers like problem solving&#8217;. Rentzsch goes on to claim that programmers&#8217; urge to rewrite problematic legacy code bases is the desire to understand rather than a desire to code.</p>
<p>I agree with Rentzsch completely on this point, however I do believe that Rosenberg, having come from the wrong direction, has hit a point with &#8220;Rosenberg&#8217;s Law&#8221;:<br />
&#8220;<font></font><font size="3" face="times new roman, times, serif">if you are doing something that has already been done &#8212; then you have a frame of reference to estimate how long it is going to take, and to guess how many people are going to be required&#8221;</font></p>
<p style="text-align: left">I&#8217;d like to rephrase this in Rentzsch&#8217;s &#8220;problem solving&#8221; terms, and paraphrase &#8220;Rosenberg&#8217;s Law&#8221; as:</p>
<p style="text-align: center">&#8220;A relationship between the <em>unfamiliarity</em> of a problem to the <em>difficulty </em>of estimating the required resources to solve it.&#8221;</p>
<p style="text-align: left">Which is not surprising in hindsight, as it is a relationship between one type of uncertainty to another&#8230;</p>
<!-- Social Bookmarks BEGIN --><div class="social_bookmark"><em>Bookmark to:</em><br /><a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://www.rationalistic.com/2007/02/05/software/rosenbergs-law-rephrased/&amp;title=Rosenberg%26%238217%3Bs+Law+Rephrased" title="Add 'Rosenberg&#8217;s Law Rephrased' to Del.icio.us"><img src="http://www.rationalistic.com/wp-content/plugins/social_bookmarks/delicious.png" title="Add 'Rosenberg&#8217;s Law Rephrased' to Del.icio.us" alt="Add 'Rosenberg&#8217;s Law Rephrased' to Del.icio.us" /></a><a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://www.rationalistic.com/2007/02/05/software/rosenbergs-law-rephrased/&amp;title=Rosenberg%26%238217%3Bs+Law+Rephrased" title="Add 'Rosenberg&#8217;s Law Rephrased' to digg"><img src="http://www.rationalistic.com/wp-content/plugins/social_bookmarks/digg.png" title="Add 'Rosenberg&#8217;s Law Rephrased' to digg" alt="Add 'Rosenberg&#8217;s Law Rephrased' to digg" /></a><a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http://www.rationalistic.com/2007/02/05/software/rosenbergs-law-rephrased/&amp;title=Rosenberg%26%238217%3Bs+Law+Rephrased" title="Add 'Rosenberg&#8217;s Law Rephrased' to reddit"><img src="http://www.rationalistic.com/wp-content/plugins/social_bookmarks/reddit.png" title="Add 'Rosenberg&#8217;s Law Rephrased' to reddit" alt="Add 'Rosenberg&#8217;s Law Rephrased' to reddit" /></a><br /><a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http://www.rationalistic.com/2007/02/05/software/rosenbergs-law-rephrased/" title="Add 'Rosenberg&#8217;s Law Rephrased' to Technorati"><img src="http://www.rationalistic.com/wp-content/plugins/social_bookmarks/technorati.png" title="Add 'Rosenberg&#8217;s Law Rephrased' to Technorati" alt="Add 'Rosenberg&#8217;s Law Rephrased' to Technorati" /></a><a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http://www.rationalistic.com/2007/02/05/software/rosenbergs-law-rephrased/&amp;t=Rosenberg%26%238217%3Bs+Law+Rephrased" title="Add 'Rosenberg&#8217;s Law Rephrased' to Yahoo My Web"><img src="http://www.rationalistic.com/wp-content/plugins/social_bookmarks/yahoo_myweb.png" title="Add 'Rosenberg&#8217;s Law Rephrased' to Yahoo My Web" alt="Add 'Rosenberg&#8217;s Law Rephrased' to Yahoo My Web" /></a><a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/refer.php?url=http://www.rationalistic.com/2007/02/05/software/rosenbergs-law-rephrased/&amp;title=Rosenberg%26%238217%3Bs+Law+Rephrased" title="Add 'Rosenberg&#8217;s Law Rephrased' to Stumble Upon"><img src="http://www.rationalistic.com/wp-content/plugins/social_bookmarks/stumbleupon.png" title="Add 'Rosenberg&#8217;s Law Rephrased' to Stumble Upon" alt="Add 'Rosenberg&#8217;s Law Rephrased' to Stumble Upon" /></a></div>
<!-- Social Bookmarks END -->]]></content:encoded>
			<wfw:commentRss>http://www.rationalistic.com/2007/02/05/software/rosenbergs-law-rephrased/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Some small points regarding Firefox 2.0 preview</title>
		<link>http://www.rationalistic.com/2006/10/11/usability/some-small-points-regarding-firefox-20-preview/</link>
		<comments>http://www.rationalistic.com/2006/10/11/usability/some-small-points-regarding-firefox-20-preview/#comments</comments>
		<pubDate>Wed, 11 Oct 2006 17:55:00 +0000</pubDate>
		<dc:creator>Tal Rotbart</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Usability]]></category>

		<guid isPermaLink="false">http://www.rationalistic.com/?p=25</guid>
		<description><![CDATA[I have been using it since this morning and overall, Firefox 2.0 preview seems to be an excellent upgrade so far. It feels much faster and very responsive.
The session restore feature was hard to find because I was looking for the phrase &#8216;Session Restore&#8217; in the preferences. However, in FF 2.0 you simply have to [...]]]></description>
			<content:encoded><![CDATA[<p>I have been using it since this morning and overall, Firefox 2.0 preview seems to be an excellent upgrade so far. It feels much faster and very responsive.</p>
<p>The session restore feature was hard to find because I was looking for the phrase &#8216;Session Restore&#8217; in the preferences. However, in FF 2.0 you simply have to set the &#8220;When Firefox Starts&#8221; combo-box to &#8220;Show my windows and tabs from last time&#8221;.</p>
<p>Small suggestion: Upon first install pop-up the usual &#8216;You&#8217;re about to close all tabs&#8217; dialog box when the user exits, with a check box that says: &#8216;Restore my tabs next time I launch Firefox&#8217;.</p>
<p>Also, I like the per-tab close buttons that are similar to having the Tab Mix Plus extension installed on top of Firefox 1.5.x, however I miss the &#8216;Close Current Tab&#8217; button at the fixed position on the right hand side as it made it very easy to &#8216;muscle-memorize&#8217; the location. Now I have to think (god forbid) to close the current tab, especially to make sure I don&#8217;t accidentally close another tab. Additionally, I miss the close-tab button on the tabs that are not in focus.</p>
<p>Technorati tags: <a rel="tag" href="http://technorati.com/tag/mozilla">mozilla</a>, <a rel="tag" href="http://technorati.com/tag/firefox">firefox</a>, <a rel="tag" href="http://technorati.com/tag/usability">usability</a></p>
<!-- Social Bookmarks BEGIN --><div class="social_bookmark"><em>Bookmark to:</em><br /><a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://www.rationalistic.com/2006/10/11/usability/some-small-points-regarding-firefox-20-preview/&amp;title=Some+small+points+regarding+Firefox+2.0+preview" title="Add 'Some small points regarding Firefox 2.0 preview' to Del.icio.us"><img src="http://www.rationalistic.com/wp-content/plugins/social_bookmarks/delicious.png" title="Add 'Some small points regarding Firefox 2.0 preview' to Del.icio.us" alt="Add 'Some small points regarding Firefox 2.0 preview' to Del.icio.us" /></a><a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://www.rationalistic.com/2006/10/11/usability/some-small-points-regarding-firefox-20-preview/&amp;title=Some+small+points+regarding+Firefox+2.0+preview" title="Add 'Some small points regarding Firefox 2.0 preview' to digg"><img src="http://www.rationalistic.com/wp-content/plugins/social_bookmarks/digg.png" title="Add 'Some small points regarding Firefox 2.0 preview' to digg" alt="Add 'Some small points regarding Firefox 2.0 preview' to digg" /></a><a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http://www.rationalistic.com/2006/10/11/usability/some-small-points-regarding-firefox-20-preview/&amp;title=Some+small+points+regarding+Firefox+2.0+preview" title="Add 'Some small points regarding Firefox 2.0 preview' to reddit"><img src="http://www.rationalistic.com/wp-content/plugins/social_bookmarks/reddit.png" title="Add 'Some small points regarding Firefox 2.0 preview' to reddit" alt="Add 'Some small points regarding Firefox 2.0 preview' to reddit" /></a><br /><a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http://www.rationalistic.com/2006/10/11/usability/some-small-points-regarding-firefox-20-preview/" title="Add 'Some small points regarding Firefox 2.0 preview' to Technorati"><img src="http://www.rationalistic.com/wp-content/plugins/social_bookmarks/technorati.png" title="Add 'Some small points regarding Firefox 2.0 preview' to Technorati" alt="Add 'Some small points regarding Firefox 2.0 preview' to Technorati" /></a><a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http://www.rationalistic.com/2006/10/11/usability/some-small-points-regarding-firefox-20-preview/&amp;t=Some+small+points+regarding+Firefox+2.0+preview" title="Add 'Some small points regarding Firefox 2.0 preview' to Yahoo My Web"><img src="http://www.rationalistic.com/wp-content/plugins/social_bookmarks/yahoo_myweb.png" title="Add 'Some small points regarding Firefox 2.0 preview' to Yahoo My Web" alt="Add 'Some small points regarding Firefox 2.0 preview' to Yahoo My Web" /></a><a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/refer.php?url=http://www.rationalistic.com/2006/10/11/usability/some-small-points-regarding-firefox-20-preview/&amp;title=Some+small+points+regarding+Firefox+2.0+preview" title="Add 'Some small points regarding Firefox 2.0 preview' to Stumble Upon"><img src="http://www.rationalistic.com/wp-content/plugins/social_bookmarks/stumbleupon.png" title="Add 'Some small points regarding Firefox 2.0 preview' to Stumble Upon" alt="Add 'Some small points regarding Firefox 2.0 preview' to Stumble Upon" /></a></div>
<!-- Social Bookmarks END -->]]></content:encoded>
			<wfw:commentRss>http://www.rationalistic.com/2006/10/11/usability/some-small-points-regarding-firefox-20-preview/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Recursive Exporter for Adobe Illustrator</title>
		<link>http://www.rationalistic.com/2006/10/03/software/recursive-exporter-for-adobe-illustrator/</link>
		<comments>http://www.rationalistic.com/2006/10/03/software/recursive-exporter-for-adobe-illustrator/#comments</comments>
		<pubDate>Wed, 04 Oct 2006 05:12:00 +0000</pubDate>
		<dc:creator>Tal Rotbart</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.rationalistic.com/?p=23</guid>
		<description><![CDATA[Whether working on my own or with a graphic designer, I believe in the holistic approach to design &#8212; you have to see how the design elements interact with each other.
Most if not all designers would agree that it is less effective to tweak a widget&#8217;s design on its own without the ability to easily [...]]]></description>
			<content:encoded><![CDATA[<p>Whether working on my own or with a graphic designer, I believe in the holistic approach to design &#8212; you have to see how the design elements interact with each other.</p>
<p>Most if not all designers would agree that it is less effective to tweak a widget&#8217;s design on its own without the ability to easily gauge how the change will affect the overall look. However this is exactly what the &#8216;resource approach&#8217; requires, as each design element has to be in a different file and it is only after an export, compile and run cycle that you see how it all fits together.</p>
<p>This is less than optimal, so you would typically follow a different flow.</p>
<p>To enable you to see how the design elements interact without requiring an export, you would arrange a design mockup within Photoshop with each design element as a layer (and/or sub-layers in later versions) and perform all the design work right there. This is what every graphic designer does and theoretically it is then just a matter of exporting the layers (and sublayers) to files.</p>
<p>Good so far, but usually this is where the trouble starts &#8212; as many times the export process involves a lot of tiny elements which all require export to different files. Usually this is done outside the build process by a 3rd party graphic artist who sends you the exported files by eMail and sometimes forgets to export one or more of the elements. Only when this is finally settled, does the result gets tested within the build&#8230; And&#8230; Guess what, there&#8217;s a problem.</p>
<p>*Sigh*</p>
<p>It was to make my life easier and to enable the graphics design to be a full (and honored!) member of the automated build cycle, that I automated this export process.</p>
<p>Ages ago, before Photoshop scripting I wrote a small utility called <a href="http://www.softlookup.com/display.asp?id=5266">PSD Ripper</a> that simply parsed the Photoshop 6 .PSD file and converted individual layers into individual PNG files, it also used the layer name as the basis for the PNG filename. Later versions of Photoshop made it much easier &#8212; to achieve the same result I merely had to make a tiny modification to a small script that came with Photoshop.</p>
<p>However, as great as Photoshop is, lately I have come to appreciate a vector-oriented approach to design and have been using Adobe Illustrator to do the design work. Therefore, I needed a script that would enable me to continue with the same workflow except with Illustrator instead of Photoshop and as none was available,  I wrote one.</p>
<p>Thus I present &#8220;<a href="http://svn.majixian.com/public/majixian/illustrator_exporter/tags/1.0/Recursive%20Exporter%20for%20Adobe%20Illustrator.jsx">Recursive Exporter for Adobe Illustrator v1.0</a>&#8220;, tested with Adobe Illustrator CS2 12.0.</p>
<p>The lay of it:</p>
<p><u><strong>Recursive Exporter for Adobe Illustrator v1.0 (2006)</strong></u></p>
<p><u><em>What it does?</em></u><br />
Recursively export layers and groups from Adobe Illustrator to 24-bit PNG (with alpha/transparency) support. Does smart naming of files and the level of recursion can be limited.</p>
<p><em><u>Usage</u>: </em><br />
The usage is pretty simple, once you run the script it will ask you to which folder to output the results and how deep it should recurse beyond the top layers. It will then output each visible non-locked element as a 24-bit PNG anti-aliased, alpha-transparency enabled file. Then the script will recurse into the element (if it is a layer or group) and do the same for each of its components.</p>
<p>The name for the output file is constructed recursively, so if you have a &#8216;logo&#8217; group within a &#8216;banner&#8217; layer it will export the group as &#8216;banner-logo.png&#8217;. Note that Illustrator enforces a 31-character filename limit.</p>
<p>If you want to create a background matte layer that will be included in every element simply add a visible, locked layer. It will not be exported on its own but will be visible when the elements are exported and thus included in them.</p>
<p><em><u>Problems</u>:</em><br />
Please report any bugs or problems with this script to the comments section.</p>
<p><u><em>License</em></u><em>:</em><br />
<!--Creative Commons License--><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/2.5/">The script is licensed under a </a><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/2.5/">Creative Commons Attribution-NonCommercial-ShareAlike 2.5  License</a><!--/Creative Commons License--><!-- --> and is made available with absolutely no warranty or guarantee.<br />
Technorati tags: <a rel="tag" href="http://technorati.com/tag/photoshop">photoshop</a>, <a rel="tag" href="http://technorati.com/tag/illustrator">illustrator</a>, <a rel="tag" href="http://technorati.com/tag/Adobe">Adobe</a>, <a rel="tag" href="http://technorati.com/tag/design">design</a>, <a rel="tag" href="http://technorati.com/tag/scripting">scripting</a>, <a rel="tag" href="http://technorati.com/tag/Javascript">Javascript</a></p>
<!-- Social Bookmarks BEGIN --><div class="social_bookmark"><em>Bookmark to:</em><br /><a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://www.rationalistic.com/2006/10/03/software/recursive-exporter-for-adobe-illustrator/&amp;title=Recursive+Exporter+for+Adobe+Illustrator" title="Add 'Recursive Exporter for Adobe Illustrator' to Del.icio.us"><img src="http://www.rationalistic.com/wp-content/plugins/social_bookmarks/delicious.png" title="Add 'Recursive Exporter for Adobe Illustrator' to Del.icio.us" alt="Add 'Recursive Exporter for Adobe Illustrator' to Del.icio.us" /></a><a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://www.rationalistic.com/2006/10/03/software/recursive-exporter-for-adobe-illustrator/&amp;title=Recursive+Exporter+for+Adobe+Illustrator" title="Add 'Recursive Exporter for Adobe Illustrator' to digg"><img src="http://www.rationalistic.com/wp-content/plugins/social_bookmarks/digg.png" title="Add 'Recursive Exporter for Adobe Illustrator' to digg" alt="Add 'Recursive Exporter for Adobe Illustrator' to digg" /></a><a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http://www.rationalistic.com/2006/10/03/software/recursive-exporter-for-adobe-illustrator/&amp;title=Recursive+Exporter+for+Adobe+Illustrator" title="Add 'Recursive Exporter for Adobe Illustrator' to reddit"><img src="http://www.rationalistic.com/wp-content/plugins/social_bookmarks/reddit.png" title="Add 'Recursive Exporter for Adobe Illustrator' to reddit" alt="Add 'Recursive Exporter for Adobe Illustrator' to reddit" /></a><br /><a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http://www.rationalistic.com/2006/10/03/software/recursive-exporter-for-adobe-illustrator/" title="Add 'Recursive Exporter for Adobe Illustrator' to Technorati"><img src="http://www.rationalistic.com/wp-content/plugins/social_bookmarks/technorati.png" title="Add 'Recursive Exporter for Adobe Illustrator' to Technorati" alt="Add 'Recursive Exporter for Adobe Illustrator' to Technorati" /></a><a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http://www.rationalistic.com/2006/10/03/software/recursive-exporter-for-adobe-illustrator/&amp;t=Recursive+Exporter+for+Adobe+Illustrator" title="Add 'Recursive Exporter for Adobe Illustrator' to Yahoo My Web"><img src="http://www.rationalistic.com/wp-content/plugins/social_bookmarks/yahoo_myweb.png" title="Add 'Recursive Exporter for Adobe Illustrator' to Yahoo My Web" alt="Add 'Recursive Exporter for Adobe Illustrator' to Yahoo My Web" /></a><a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/refer.php?url=http://www.rationalistic.com/2006/10/03/software/recursive-exporter-for-adobe-illustrator/&amp;title=Recursive+Exporter+for+Adobe+Illustrator" title="Add 'Recursive Exporter for Adobe Illustrator' to Stumble Upon"><img src="http://www.rationalistic.com/wp-content/plugins/social_bookmarks/stumbleupon.png" title="Add 'Recursive Exporter for Adobe Illustrator' to Stumble Upon" alt="Add 'Recursive Exporter for Adobe Illustrator' to Stumble Upon" /></a></div>
<!-- Social Bookmarks END -->]]></content:encoded>
			<wfw:commentRss>http://www.rationalistic.com/2006/10/03/software/recursive-exporter-for-adobe-illustrator/feed/</wfw:commentRss>
		<slash:comments>36</slash:comments>
		</item>
		<item>
		<title>War story on why C&amp;C management sucks</title>
		<link>http://www.rationalistic.com/2006/08/08/software/war-story-on-why-cc-management-sucks/</link>
		<comments>http://www.rationalistic.com/2006/08/08/software/war-story-on-why-cc-management-sucks/#comments</comments>
		<pubDate>Wed, 09 Aug 2006 06:01:00 +0000</pubDate>
		<dc:creator>Tal Rotbart</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.rationalistic.com/?p=21</guid>
		<description><![CDATA[Joel Spolsky has another lovely article out titled, &#8220;The Command and Control Management Method&#8220;. While he hits the nail on the head for most of the article, I feel he misses one of the main reasons while C&#038;C management does not work for software development teams.
Actually, he misses one of the main reasons the C&#038;C [...]]]></description>
			<content:encoded><![CDATA[<p>Joel Spolsky has another lovely article out titled, &#8220;<a href="http://www.joelonsoftware.com/items/2006/08/08.html">The Command and Control Management Method</a>&#8220;. While he hits the nail on the head for most of the article, I feel he misses one of the main reasons while C&#038;C management does not work for software development teams.</p>
<p>Actually, he misses one of the main reasons the C&#038;C pattern doesn&#8217;t even work for the military.</p>
<p>It all begins with the 1973 (no, seriously) Yom Kipur War between Israel, Egypt and Syria. Having taken Israel by surprise, the Syrian tank divisions storm through the Golan Heights and almost reach Nafah where the headquarters for the Israeli forces were located.</p>
<p>Had the Syrian forces reached Nafah, they would have most likely defeated Israel and conquered the Golan Heights at the very least. But they haven&#8217;t, and didn&#8217;t &#8212; instead, they stopped.</p>
<p>Just before overtaking Nafah (&#8216;on Nafah&#8217;s fences&#8217; as <a href="http://en.wikipedia.org/wiki/Yom_Kippur_War">Wikipedia describes it</a>), the Syrians halted their advance. This allowed time for Israeli reserve forces to arrive en-mass and overturn the tides of war, eventually costing the Syrians their victory. To this day, no one outside Syria (and maybe Israeli Intelligence) knows for certain why the Syrian force stopped so abruptly.</p>
<p>There is a prevailing theory, however. This theory boils down to the difference in management style between Arab armies (Soviet trained) and the IDF. Arab armies are trained for complete Command and Control management, an underling will not make a move without being issued a command. The most initiative he can show is to suggest a course of action to his superior, who might suggest it to his and so forth until the highest authority on the matter is reached, once he makes a decision the order to action travels down the chain of command. As any software engineer will tell you, this upstream-downstream transaction means very high latency.</p>
<p>Israeli military on the other hand, have an altogether different standing order: a soldier without immediate contact to his supervisor is his own chief-of-staff.  This translates to initiative and rapid response during the fog of war.</p>
<p>So imagine that the Syrian tank brigade commander, having surpassed his superiors&#8217; expectations and advanced so quickly into Israeli held territory that he exhausted his current orders. He was not meant to reach Nafah so quickly! As he is trained not to question his orders, and as he is only given very limited information (on a supposed &#8216;need to know basis&#8217;) he can&#8217;t assume that proceeding forward would fit with the larger plan.</p>
<p>Thus our well trained commander jubilantly radios back his headquarters and informs them of his brilliant success and requests further instructions. While his report travels up the command vine, he and his forces are minutes away from victory and are standing completely still.</p>
<p>The next step of the reasoning is quite clear:</p>
<p>Use a command and control management style and you will be the bottleneck of every development step, as every decision beyond what to call the class file will be relegated to you. This is not just hit-and-run micromanagement, this is a semaphore locked development cycle and is hardly an efficient use of your very valuable resources (otherwise known as: people).</p>
<p>While there are many (many!) number of arguments why C&#038;C does NOT work for software development projects (for example: writing good software is a creative process, C&#038;C management hampers creativity) I think the above is the most important and most direct argument against such a style of management.</p>
<p>Having said that, there are places where <a href="http://ve3d.ign.com/articles/720/720448p1.html">C&#038;C is just fine</a>.</p>
<p>Technorati tags: <a rel="tag" href="http://technorati.com/tag/software-development">software-development</a>, <a rel="tag" href="http://technorati.com/tag/management">management</a></p>
<!-- Social Bookmarks BEGIN --><div class="social_bookmark"><em>Bookmark to:</em><br /><a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://www.rationalistic.com/2006/08/08/software/war-story-on-why-cc-management-sucks/&amp;title=War+story+on+why+C%26amp%3BC+management+sucks" title="Add 'War story on why C&amp;C management sucks' to Del.icio.us"><img src="http://www.rationalistic.com/wp-content/plugins/social_bookmarks/delicious.png" title="Add 'War story on why C&amp;C management sucks' to Del.icio.us" alt="Add 'War story on why C&amp;C management sucks' to Del.icio.us" /></a><a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://www.rationalistic.com/2006/08/08/software/war-story-on-why-cc-management-sucks/&amp;title=War+story+on+why+C%26amp%3BC+management+sucks" title="Add 'War story on why C&amp;C management sucks' to digg"><img src="http://www.rationalistic.com/wp-content/plugins/social_bookmarks/digg.png" title="Add 'War story on why C&amp;C management sucks' to digg" alt="Add 'War story on why C&amp;C management sucks' to digg" /></a><a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http://www.rationalistic.com/2006/08/08/software/war-story-on-why-cc-management-sucks/&amp;title=War+story+on+why+C%26amp%3BC+management+sucks" title="Add 'War story on why C&amp;C management sucks' to reddit"><img src="http://www.rationalistic.com/wp-content/plugins/social_bookmarks/reddit.png" title="Add 'War story on why C&amp;C management sucks' to reddit" alt="Add 'War story on why C&amp;C management sucks' to reddit" /></a><br /><a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http://www.rationalistic.com/2006/08/08/software/war-story-on-why-cc-management-sucks/" title="Add 'War story on why C&amp;C management sucks' to Technorati"><img src="http://www.rationalistic.com/wp-content/plugins/social_bookmarks/technorati.png" title="Add 'War story on why C&amp;C management sucks' to Technorati" alt="Add 'War story on why C&amp;C management sucks' to Technorati" /></a><a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http://www.rationalistic.com/2006/08/08/software/war-story-on-why-cc-management-sucks/&amp;t=War+story+on+why+C%26amp%3BC+management+sucks" title="Add 'War story on why C&amp;C management sucks' to Yahoo My Web"><img src="http://www.rationalistic.com/wp-content/plugins/social_bookmarks/yahoo_myweb.png" title="Add 'War story on why C&amp;C management sucks' to Yahoo My Web" alt="Add 'War story on why C&amp;C management sucks' to Yahoo My Web" /></a><a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/refer.php?url=http://www.rationalistic.com/2006/08/08/software/war-story-on-why-cc-management-sucks/&amp;title=War+story+on+why+C%26amp%3BC+management+sucks" title="Add 'War story on why C&amp;C management sucks' to Stumble Upon"><img src="http://www.rationalistic.com/wp-content/plugins/social_bookmarks/stumbleupon.png" title="Add 'War story on why C&amp;C management sucks' to Stumble Upon" alt="Add 'War story on why C&amp;C management sucks' to Stumble Upon" /></a></div>
<!-- Social Bookmarks END -->]]></content:encoded>
			<wfw:commentRss>http://www.rationalistic.com/2006/08/08/software/war-story-on-why-cc-management-sucks/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Web applications vs. Web sites, Ruby on Rails and points in between</title>
		<link>http://www.rationalistic.com/2006/07/16/software/web-applications-vs-web-sites-ruby-on-rails-and-points-in-between/</link>
		<comments>http://www.rationalistic.com/2006/07/16/software/web-applications-vs-web-sites-ruby-on-rails-and-points-in-between/#comments</comments>
		<pubDate>Mon, 17 Jul 2006 04:10:00 +0000</pubDate>
		<dc:creator>Tal Rotbart</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.rationalistic.com/?p=19</guid>
		<description><![CDATA[Ruby on Rails is rightfully gaining traction and respect right along with a rapidly growing developer community. This, due to its being the near-perfect match for developing its `home-turf&#8217; software: database backed web site. However, as pleased as I am with RoR&#8217;s success, I&#8217;m beginning to note with apprehension as it is increasingly being used [...]]]></description>
			<content:encoded><![CDATA[<p>Ruby on Rails is rightfully gaining traction and respect right along with a rapidly growing developer community. This, due to its being the near-perfect match for developing its `home-turf&#8217; software: database backed web site. However, as pleased as I am with RoR&#8217;s success, I&#8217;m beginning to note with apprehension as it is increasingly being used for writing the kind of software it is not meant for.</p>
<p>It is not unlike the early Java-rush years in which every tiny in-house web-application seemed to some misguided souls like a nail aching for the punch of the overweight EJB hammer.</p>
<p>Rails development scales very well, so if you are developing a web-site, you&#8217;re in for a pleasant surprise using it. Whether you develop alone or with many team members, whether you deploy for ten concurrent users or ten-thousand, Rails is definitely the right tool for the job. But if you are developing something more state heavy, such as a web-application, then you are in for a nasty headache when your code goes O(spaghetti^2).</p>
<p>Rails is a great tool for what it does, but when you&#8217;re writing software that translates to a different architecture than a thin-state web-site (as rich an experience as it may be!) using Rails will be like trying to fit a square peg into a round hole (when the cliche fits&#8230;)</p>
<p>Web site/app, what&#8217;s the difference?<br />
The difference between the two boils down to the number and complexity of the states of the software&#8230; &#8230;Huh?</p>
<p>Let us demonstrate: A good example for a web-site is IMDb, it aggregates information about movies from various sources including other users. Another example for a web-site is OkCupid.com which allow online matchmaking and interactions between users. Contrast this with a web-application such as Google Spreadsheets which is pretty much a hosted version of Excel + collaboration. Another example for a web-application (although one that is smaller in scale) is an application which allows you to control your home automation remotely via a web browser.</p>
<p>What is a web site?<br />
A classic web-site is a thin view layer unto an expansive schema which is modeled and stored in a database. The use-cases it implements are shallow on their own right but their aggregate creates an experience which is much larger than the sum of its flows.</p>
<p>The main draw of a web-site are the users&#8211; you are not interacting with the software alone, you are part of a grander &#8216;community&#8217; (as much as this word brings a bitter taste to my mouth at times)&#8211; While using a web-site you become part of the network and as a user you give value back to the site by interacting. This is the &#8216;Web 2.0&#8242; vision, a painful buzzword on its own.</p>
<p>Web 2.0-type sites are absolutely ideal candidates for Ruby on Rails and as such there are many success stories to be observed. I&#8217;ll skip the bother of listing them, go to <a href="http://www.rubyonrails.org">RubyOnRails.org</a> and scroll down, I&#8217;m sure you&#8217;ll recognize some of the leading neuvo-web sites.</p>
<p>Now, seeing these successes described in IT Weakly (ha-ha) your average Joe IT Manager figures, &#8216;Hey! This Rails thing does web sites good! We have an in-house application to plan our customers&#8217; parties which we need to upgrade, so let us rewrite it as a web-application using Rails!&#8217;</p>
<p>Gulp! Ding! Big Whoop! No good!</p>
<p>Why?</p>
<p>Because web applications and web sites are not the same thing&#8230; Joe IT is going to use Rails for something it is not meant for and actually quite weak for.</p>
<p>Web-Applications, a primer<br />
To understand what web-applications in a deeper sense, consider the expression itself&#8211; it is naught but the well worn word &#8216;application&#8217; with &#8216;web&#8217; tacked in front. So a web application is simply an application that runs on the web as its platform of choice.</p>
<p>A desktop application&#8217;s experience is one of the user vs. The Software. Perhaps a limited remote resource is utilized, such as a query to the Party Supplies Database for the benefit of the purchase order printing screen but other then that&#8211; it is the user alone who calls the shots.</p>
<p>You can create deep, <a href="http://www.google.com/search?q=define%3Astateful">stateful</a> use-cases that involve selecting a venue for the party and setting up the table locations and seating arrangements. It doesn&#8217;t matter if the experience of using this piece of software is immersive or merely tangential but the main point is that does not involve anyone else but the user himself along with the rich client experience (ah&#8230; Buzzwords). There&#8217;s a heavy statefulness to applications that doesn&#8217;t exist in web-sites.</p>
<p>The Thin Line<br />
AJAX, another aspect of the Web 2.0 paradigm, is bridging the gap between the richness of a desktop application and that of one set on the web. It is also bringing more modal interaction to web-sites. But as thin as the line is, it is still there. And where it is most noticeable is the amount of statefulness of the software.</p>
<p>In a web site the state is maintained in these locations: The URL, the session and the database. You can consider them the short-term, mid-term and long-term memory of the software. For brevity, I&#8217;ll refer to any information which is kept client-side and travels back from the user as the URL, although it may be sent to the server in other parts of the HTTP request (such as forms).</p>
<p>To scale a web-site well, as little state as possible should be maintained in the session (for clustering purposes) and yet the cost of a DB call is also prohibitive so it is best for UI state to be contained in the URL as much as can possibly be managed, while taking care to never trust the user-sent data and to avoid assuming that he will ever traverse the flow chain as expected.</p>
<p>This leaves very, very little place for statefulness in web sites and it is the main reasons why web sites have shorter, shallower flows than do applications.</p>
<p>Don&#8217;t get me wrong&#8211; web-sites may have a rich UI. We are all immersed in the latest trend of enriching web-sites&#8217; UI by creating a more responsive UI using AJAX.</p>
<p>The list that updates without a page refresh, a popup dialog for selecting your state or the modal window which display the clicked-upon photograph, these are just a few of the examples we see daily&#8211; but all this adds nothing to the statefulness of the site &#8212; it doesn&#8217;t turn it into an application and it shouldn&#8217;t!</p>
<p>Rails is ideal for developing web-sites because it deals very well with interpreting  the current state from both sources (URL &#8211;&gt; ActionPack, database -&gt; ActiveRecord) and churning out a view for it. The second you add more statefulness, it gets painful.</p>
<p>Words of Wisdom<br />
I speak from experience&#8212; I learned this painful truth about Rails the hard way by trying (and actually succeeding, through painfully so) to create a rich-flow application with Rails. This application should have been a desktop application by all rights, but seeing as I had recently acquired a hammer, I just had to use it to beat the screw in&#8230;</p>
<p>This application&#8217;s model was simple enough, but the user flow involved the use of resources on the PC itself (the DVD drive, in this case) making it utterly befitting a desktop application, and less so for a web-app&#8230; Blinded as I was by the ease of writing web-sites with Rails, I ignored my own red-lights flashing and went ahead anyway. It turned out well enough, but taught me hard lessons about what Rails makes easy and what it makes hard.</p>
<p>Statefulness&#8230;Blissfulness?<br />
There are frameworks out there which fit a state-rich AJAX web-application much more than Rails. There are many examples and I would not want to mention one for fear of the flames, but feel free to suggest yours in the comments below.</p>
<p>Technorati tags: <a rel="tag" href="http://www.technorati.com/tag/Ruby+On+Rails">Ruby on Rails</a>, <a rel="tag" href="http://www.technorati.com/tag/Development">Development</a>, <a rel="tag" href="http://www.technorati.com/tag/Software">Software</a>, <a rel="tag" href="http://www.technorati.com/tag/web+2.0">Web 2.0</a></p>
<!-- Social Bookmarks BEGIN --><div class="social_bookmark"><em>Bookmark to:</em><br /><a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://www.rationalistic.com/2006/07/16/software/web-applications-vs-web-sites-ruby-on-rails-and-points-in-between/&amp;title=Web+applications+vs.+Web+sites%2C+Ruby+on+Rails+and+points+in+between" title="Add 'Web applications vs. Web sites, Ruby on Rails and points in between' to Del.icio.us"><img src="http://www.rationalistic.com/wp-content/plugins/social_bookmarks/delicious.png" title="Add 'Web applications vs. Web sites, Ruby on Rails and points in between' to Del.icio.us" alt="Add 'Web applications vs. Web sites, Ruby on Rails and points in between' to Del.icio.us" /></a><a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://www.rationalistic.com/2006/07/16/software/web-applications-vs-web-sites-ruby-on-rails-and-points-in-between/&amp;title=Web+applications+vs.+Web+sites%2C+Ruby+on+Rails+and+points+in+between" title="Add 'Web applications vs. Web sites, Ruby on Rails and points in between' to digg"><img src="http://www.rationalistic.com/wp-content/plugins/social_bookmarks/digg.png" title="Add 'Web applications vs. Web sites, Ruby on Rails and points in between' to digg" alt="Add 'Web applications vs. Web sites, Ruby on Rails and points in between' to digg" /></a><a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http://www.rationalistic.com/2006/07/16/software/web-applications-vs-web-sites-ruby-on-rails-and-points-in-between/&amp;title=Web+applications+vs.+Web+sites%2C+Ruby+on+Rails+and+points+in+between" title="Add 'Web applications vs. Web sites, Ruby on Rails and points in between' to reddit"><img src="http://www.rationalistic.com/wp-content/plugins/social_bookmarks/reddit.png" title="Add 'Web applications vs. Web sites, Ruby on Rails and points in between' to reddit" alt="Add 'Web applications vs. Web sites, Ruby on Rails and points in between' to reddit" /></a><br /><a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http://www.rationalistic.com/2006/07/16/software/web-applications-vs-web-sites-ruby-on-rails-and-points-in-between/" title="Add 'Web applications vs. Web sites, Ruby on Rails and points in between' to Technorati"><img src="http://www.rationalistic.com/wp-content/plugins/social_bookmarks/technorati.png" title="Add 'Web applications vs. Web sites, Ruby on Rails and points in between' to Technorati" alt="Add 'Web applications vs. Web sites, Ruby on Rails and points in between' to Technorati" /></a><a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http://www.rationalistic.com/2006/07/16/software/web-applications-vs-web-sites-ruby-on-rails-and-points-in-between/&amp;t=Web+applications+vs.+Web+sites%2C+Ruby+on+Rails+and+points+in+between" title="Add 'Web applications vs. Web sites, Ruby on Rails and points in between' to Yahoo My Web"><img src="http://www.rationalistic.com/wp-content/plugins/social_bookmarks/yahoo_myweb.png" title="Add 'Web applications vs. Web sites, Ruby on Rails and points in between' to Yahoo My Web" alt="Add 'Web applications vs. Web sites, Ruby on Rails and points in between' to Yahoo My Web" /></a><a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/refer.php?url=http://www.rationalistic.com/2006/07/16/software/web-applications-vs-web-sites-ruby-on-rails-and-points-in-between/&amp;title=Web+applications+vs.+Web+sites%2C+Ruby+on+Rails+and+points+in+between" title="Add 'Web applications vs. Web sites, Ruby on Rails and points in between' to Stumble Upon"><img src="http://www.rationalistic.com/wp-content/plugins/social_bookmarks/stumbleupon.png" title="Add 'Web applications vs. Web sites, Ruby on Rails and points in between' to Stumble Upon" alt="Add 'Web applications vs. Web sites, Ruby on Rails and points in between' to Stumble Upon" /></a></div>
<!-- Social Bookmarks END -->]]></content:encoded>
			<wfw:commentRss>http://www.rationalistic.com/2006/07/16/software/web-applications-vs-web-sites-ruby-on-rails-and-points-in-between/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Google Spreadsheets + One Feature = Excel Killer</title>
		<link>http://www.rationalistic.com/2006/06/13/usability/google-spreadsheets-one-feature-excel-killer/</link>
		<comments>http://www.rationalistic.com/2006/06/13/usability/google-spreadsheets-one-feature-excel-killer/#comments</comments>
		<pubDate>Tue, 13 Jun 2006 18:37:00 +0000</pubDate>
		<dc:creator>Tal Rotbart</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Usability]]></category>

		<guid isPermaLink="false">http://www.rationalistic.com/?p=16</guid>
		<description><![CDATA[I&#8217;ve written the Google Lab&#8217;s spreadsheet team (through their feedback mechanism) with this suggestion but would like to share my idea here as well.
Basically, I think there&#8217;s only one feature missing that would make Google Spreadsheets the complete Excel killer.
What would make it truly an Excel killer is to allow one to reference data in [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve written the Google Lab&#8217;s spreadsheet team (through their feedback mechanism) with this suggestion but would like to share my idea here as well.</p>
<p>Basically, I think there&#8217;s only one feature missing that would make Google Spreadsheets the complete Excel killer.</p>
<p>What would make it truly an Excel killer is to allow one to reference data in other public spreadsheets just as one currently references data in another sheet in the same spread.<br />
Right now you can enter a formulae containing a reference to another sheet so: <code>=ABS(sheet2!C7)</code></p>
<p>What I suggest is something like:<br />
<code>=ABS(http://mydomain/public/spread1#sheet2!C7).</code></p>
<p>To make it even more interesting, I suggest that a &#8216;public spreadsheet&#8217; is any URL which returns a XML spreadsheet.  So you can essentially reference any appropriate web-service.</p>
<p>Suppose you want your spreadsheet results in up-to-date Euro, simply reference the current Euro conversion rate, for example:<br />
<code>=SUM(C2:C18) * http://xe.com/reference/convert?from=USD&#038;to=EUR!A1 </code></p>
<p>Note: This is a hypothetical URL of course.</p>
<p>This could also allow a manager to build a spreadsheet that utilizes his subordinates&#8217; spreadsheets, recursively creating a hierarchical tree that represent an entire organization and updated dynamically. Naturally this would require some sort of security policy etc., maybe Google can sell its application suite to corporations as an appliance?&#8230; But only once they get the managers hooked on Google Spreadsheet for other things first&#8230; ;)</p>
<p>I believe this suggestion could really leverage the online-ness of the Google Spreadsheet application. I would appreciate any feedback!</p>
<p>Technorati tags: <a rel="tag" href="http://technorati.com/tag/google">Google</a>, <a rel="tag" href="http://technorati.com/tag/excel">Excel</a>.</p>
<!-- Social Bookmarks BEGIN --><div class="social_bookmark"><em>Bookmark to:</em><br /><a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://del.icio.us/post?url=http://www.rationalistic.com/2006/06/13/usability/google-spreadsheets-one-feature-excel-killer/&amp;title=Google+Spreadsheets+%2B+One+Feature+%3D+Excel+Killer" title="Add 'Google Spreadsheets + One Feature = Excel Killer' to Del.icio.us"><img src="http://www.rationalistic.com/wp-content/plugins/social_bookmarks/delicious.png" title="Add 'Google Spreadsheets + One Feature = Excel Killer' to Del.icio.us" alt="Add 'Google Spreadsheets + One Feature = Excel Killer' to Del.icio.us" /></a><a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://digg.com/submit?phase=2&amp;url=http://www.rationalistic.com/2006/06/13/usability/google-spreadsheets-one-feature-excel-killer/&amp;title=Google+Spreadsheets+%2B+One+Feature+%3D+Excel+Killer" title="Add 'Google Spreadsheets + One Feature = Excel Killer' to digg"><img src="http://www.rationalistic.com/wp-content/plugins/social_bookmarks/digg.png" title="Add 'Google Spreadsheets + One Feature = Excel Killer' to digg" alt="Add 'Google Spreadsheets + One Feature = Excel Killer' to digg" /></a><a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://reddit.com/submit?url=http://www.rationalistic.com/2006/06/13/usability/google-spreadsheets-one-feature-excel-killer/&amp;title=Google+Spreadsheets+%2B+One+Feature+%3D+Excel+Killer" title="Add 'Google Spreadsheets + One Feature = Excel Killer' to reddit"><img src="http://www.rationalistic.com/wp-content/plugins/social_bookmarks/reddit.png" title="Add 'Google Spreadsheets + One Feature = Excel Killer' to reddit" alt="Add 'Google Spreadsheets + One Feature = Excel Killer' to reddit" /></a><br /><a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.technorati.com/faves?add=http://www.rationalistic.com/2006/06/13/usability/google-spreadsheets-one-feature-excel-killer/" title="Add 'Google Spreadsheets + One Feature = Excel Killer' to Technorati"><img src="http://www.rationalistic.com/wp-content/plugins/social_bookmarks/technorati.png" title="Add 'Google Spreadsheets + One Feature = Excel Killer' to Technorati" alt="Add 'Google Spreadsheets + One Feature = Excel Killer' to Technorati" /></a><a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://myweb2.search.yahoo.com/myresults/bookmarklet?u=http://www.rationalistic.com/2006/06/13/usability/google-spreadsheets-one-feature-excel-killer/&amp;t=Google+Spreadsheets+%2B+One+Feature+%3D+Excel+Killer" title="Add 'Google Spreadsheets + One Feature = Excel Killer' to Yahoo My Web"><img src="http://www.rationalistic.com/wp-content/plugins/social_bookmarks/yahoo_myweb.png" title="Add 'Google Spreadsheets + One Feature = Excel Killer' to Yahoo My Web" alt="Add 'Google Spreadsheets + One Feature = Excel Killer' to Yahoo My Web" /></a><a class="social_img" onclick="window.open(this.href, '_blank', 'scrollbars=yes,menubar=no,height=600,width=750,resizable=yes,toolbar=no,location=no,status=no'); return false;" href="http://www.stumbleupon.com/refer.php?url=http://www.rationalistic.com/2006/06/13/usability/google-spreadsheets-one-feature-excel-killer/&amp;title=Google+Spreadsheets+%2B+One+Feature+%3D+Excel+Killer" title="Add 'Google Spreadsheets + One Feature = Excel Killer' to Stumble Upon"><img src="http://www.rationalistic.com/wp-content/plugins/social_bookmarks/stumbleupon.png" title="Add 'Google Spreadsheets + One Feature = Excel Killer' to Stumble Upon" alt="Add 'Google Spreadsheets + One Feature = Excel Killer' to Stumble Upon" /></a></div>
<!-- Social Bookmarks END -->]]></content:encoded>
			<wfw:commentRss>http://www.rationalistic.com/2006/06/13/usability/google-spreadsheets-one-feature-excel-killer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
