<?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>EclecticGuy &#187; software</title>
	<atom:link href="http://www.eclecticguy.com/category/software/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.eclecticguy.com</link>
	<description>musings of just some guy</description>
	<lastBuildDate>Wed, 23 Jun 2010 15:22:37 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>The EclecticGuy&#8217;s blog got infected</title>
		<link>http://www.eclecticguy.com/2010/02/07/the-eclecticguys-blog-got-infected/</link>
		<comments>http://www.eclecticguy.com/2010/02/07/the-eclecticguys-blog-got-infected/#comments</comments>
		<pubDate>Sun, 07 Feb 2010 13:53:04 +0000</pubDate>
		<dc:creator>EclecticGuy</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[rant]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.eclecticguy.com/?p=1478</guid>
		<description><![CDATA[For the last several weeks I&#8217;ve noticed strange things on my blog. For instance, when editing a post, my theme&#8217;s header appeared in the edit area! Occasionally I would see load failures on admin and blog pages. Yesterday, when I returned from SuperBoo VII, I logged in to post and there were no editing tools! [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.eclecticguy.com/wp-content/uploads/2010/02/virus-742682.jpg"><img class="alignleft size-medium wp-image-1479" style="margin: 3px; border: 0px;" title="virus-742682" src="http://www.eclecticguy.com/wp-content/uploads/2010/02/virus-742682-293x300.jpg" alt="" width="176" height="180" /></a>For the last several weeks I&#8217;ve noticed strange things on my blog. For instance, when editing a post, my theme&#8217;s header appeared in the edit area! Occasionally I would see load failures on admin and blog pages. Yesterday, when I returned from SuperBoo VII, I logged in to post and there were no editing tools! I loaded a previous post and the text area was blank &#8211; or so I thought. Turned out the text was all white and I could see it if I selected it all. Not good.</p>
<p>So I started to do a little snooping. I discovered many of my PHP files had a large string of characters at the start of every file. I also notice server not found errors in my log. I googled the error and server and discovered that this is a known WordPress virus. The solution was to eradicate it from every PHP file. I did, it was present in several dozen files including some plugins. But, things were no better, maybe worse! Now, my admin pages were all OK, editing worked, etc. But my blog&#8217;s pages came up empty, nata, nothing. No code at all in the pages. I spent some time on the WP forums and had some things to try but none worked.</p>
<p>I finally did a complete removal of my entire wordpress directory &#8211; except my wp-config and my uploads directory in wp-content. I did a manual reinstall of WP 2.9.1 and logged in. Same thing, no blog pages. Frustrated I went back to WP forums but found nothing helpful. Then I had an idea, I went to the Themes admin page and changed my theme to the Classic 1.5 theme. Reloaded, and voila, everything worked fine! I reinstalled my favorite theme &#8211; <a href="http://valendesigns.com/wordpress/free-vesper-theme-for-wordpress/" target="_blank">Vesper</a> &#8211; and plugins and all is good on the EclecticGuy blog again. What a pain that was though. I changed all my passwords and admin login just to be safe.</p>
<p>Did anyone figure out what that drawing above is? It&#8217;s the common cold virus!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.eclecticguy.com/2010/02/07/the-eclecticguys-blog-got-infected/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Mac OSX Snow Leopard Upgrade!</title>
		<link>http://www.eclecticguy.com/2009/08/31/mac-osx-snow-leopard-upgrade/</link>
		<comments>http://www.eclecticguy.com/2009/08/31/mac-osx-snow-leopard-upgrade/#comments</comments>
		<pubDate>Tue, 01 Sep 2009 00:21:55 +0000</pubDate>
		<dc:creator>EclecticGuy</dc:creator>
				<category><![CDATA[Mac]]></category>
		<category><![CDATA[rave]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://eclecticguy.com/?p=1336</guid>
		<description><![CDATA[I pre-ordered Snow Leopard from Apple to have it delivered first thing on its release date &#8211; August 28th, 2009! Apple came through, the package arrived by 10am and was waiting for me when I got home from work. The package is a single DVD installer. Simply insert the disk and double click the installer, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://eclecticguy.com/wp-content/uploads/2009/08/hero_osx_20090828.jpg"><img class="alignleft size-medium wp-image-1337" style="margin: 3px; border: 0px;" title="hero_osx_20090828" src="http://eclecticguy.com/wp-content/uploads/2009/08/hero_osx_20090828-300x169.jpg" alt="hero_osx_20090828" width="210" height="118" /></a>I pre-ordered Snow Leopard from Apple to have it delivered first thing on its release date &#8211; August 28th, 2009! Apple came through, the package arrived by 10am and was waiting for me when I got home from work. The package is a single DVD installer. Simply insert the disk and double click the installer, it does the rest (no rebooting from the DVD). It took about 55 minutes start-to-finish to install on my 3.06 GHz Core 2 Duo iMac with one automated reboot during the process. The entire installation is &#8220;touchless&#8221; after kicking it off.</p>
<p>So, now that I&#8217;ve update four of our Macs (Family Pack) with Snow Leopard and used it for a few days, what do I think? Well, there is very little change in the user interface. That&#8217;s a good thing, I hate relearning new UIs. The real power of Snow Leopard is under the covers &#8211; full 64 bit support and a completely re-written Finder (that is, of course, 64 bit). Almost all of the Apple apps are now 64 bit too (Mail, Safari, iCal, and iChat). Snow Leopard&#8217;s &#8220;Grand Central Dispatch&#8221; is an enabling technology for software developers to write better multi-processor applications more easily. OpenCL taps in to graphics processors to use for more than just graphics. Very cool, I can hardly wait to see what developers do with it! Snow Leopard comes with QuickTime X also. It includes a new Player, really improved internet video streaming, and built in audio and video capture!</p>
<p>So far, Snow Leopard has been noticeably faster and completely transparent &#8211; meaning I have not run in to any problems with any of the apps I run &#8211; Photoshop CS3, ViaCAD, the iWork suite, Lightroom 2, TextMate, etc. The new XCode is also really solid.</p>
<p><br class="spacer_" /></p>
<p><br class="spacer_" /></p>
<p><br class="spacer_" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.eclecticguy.com/2009/08/31/mac-osx-snow-leopard-upgrade/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress 2.8 Upgrade!</title>
		<link>http://www.eclecticguy.com/2009/06/15/wordpress-2-8-upgrade/</link>
		<comments>http://www.eclecticguy.com/2009/06/15/wordpress-2-8-upgrade/#comments</comments>
		<pubDate>Tue, 16 Jun 2009 02:48:33 +0000</pubDate>
		<dc:creator>EclecticGuy</dc:creator>
				<category><![CDATA[rave]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://eclecticguy.com/?p=1274</guid>
		<description><![CDATA[Wow, another super easy and trouble-free, automated upgrade of my blog to version 2.8! Thank you Open Source.]]></description>
			<content:encoded><![CDATA[<p><a href="http://eclecticguy.com/wp-content/uploads/2008/07/wordpress.jpg"><img class="alignleft size-full wp-image-101" style="margin: 3px; border: 0px;" title="wordpress.jpg" src="http://eclecticguy.com/wp-content/uploads/2008/07/wordpress.jpg" alt="wordpress.jpg" width="78" height="78" /></a>Wow, another super easy and trouble-free, automated upgrade of my blog to version 2.8! Thank you Open Source.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.eclecticguy.com/2009/06/15/wordpress-2-8-upgrade/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>EclecticGuy.com upgraded to WordPress 2.6.5</title>
		<link>http://www.eclecticguy.com/2008/12/02/eclecticguycom-upgraded-to-wordpress-265/</link>
		<comments>http://www.eclecticguy.com/2008/12/02/eclecticguycom-upgraded-to-wordpress-265/#comments</comments>
		<pubDate>Tue, 02 Dec 2008 12:31:45 +0000</pubDate>
		<dc:creator>EclecticGuy</dc:creator>
				<category><![CDATA[rave]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://eclecticguy.com/?p=1020</guid>
		<description><![CDATA[The upgrade went smoothly last night during low activity hours. It always impresses me how sophisticated yet simple WordPress is to manage.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.wordpress.org" target="_blank"><img class="alignleft size-full wp-image-1023" style="margin: 3px; border: 0px;" title="smbutton-blue" src="http://eclecticguy.com/wp-content/uploads/2008/12/smbutton-blue.png" alt="" width="58" height="69" /></a>The upgrade went smoothly last night during low activity hours. It always impresses me how sophisticated yet simple WordPress is to manage.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.eclecticguy.com/2008/12/02/eclecticguycom-upgraded-to-wordpress-265/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Shrugh Creation Demo</title>
		<link>http://www.eclecticguy.com/2008/11/26/shrugh-creation-demo/</link>
		<comments>http://www.eclecticguy.com/2008/11/26/shrugh-creation-demo/#comments</comments>
		<pubDate>Wed, 26 Nov 2008 19:38:53 +0000</pubDate>
		<dc:creator>EclecticGuy</dc:creator>
				<category><![CDATA[design]]></category>
		<category><![CDATA[shrugh]]></category>
		<category><![CDATA[social computing]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[LinkedIn]]></category>

		<guid isPermaLink="false">http://eclecticguy.com/?p=1008</guid>
		<description><![CDATA[As I mentioned in the last Shrugh post, we&#8217;ve been getting a lot of great feedback and doing some brainstorming on Shrugh. Last time I described how users respond to shrughs. This time, I have a demo that shows the simplified shrugh creation process. It also has a couple of new bells and whistles &#8211; [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://eclecticguy.com/wp-content/uploads/2008/11/01b-create.png"><img class="size-medium wp-image-1009 alignleft" style="margin: 3px; border: 0px;" title="01b-create" src="http://eclecticguy.com/wp-content/uploads/2008/11/01b-create-300x236.png" alt="" width="180" height="142" /></a>As I mentioned in the <a href="http://eclecticguy.com/2008/11/23/shrugh-response-demos/" target="_blank">last Shrugh post</a>, we&#8217;ve been getting a lot of great feedback and doing some brainstorming on Shrugh. Last time I described how users respond to shrughs. This time, I have a demo that shows the simplified shrugh creation process. It also has a couple of new bells and whistles &#8211; like how Shrugh automatically finds other shrughs similar to yours based on words in your shrugh and description.</p>
<p>My goal is to have this idea implemented in the next week or so, then we&#8217;ll have a complete &#8211; but simple &#8211; Shrugh prototype.</p>
<p>To check out the new demo. go to the <a href="http://www.shrugh.com/" target="_blank">Shrugh home page</a> and click the <a href="http://www.shrugh.com/CreateDemo/index.html" target="_blank">create a shrugh</a> link at the bottom of the page (or click the link I just typed!). Either way, check out the demo and please leave your comments/feedback at the end!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.eclecticguy.com/2008/11/26/shrugh-creation-demo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Shrugh Response Demo</title>
		<link>http://www.eclecticguy.com/2008/11/23/shrugh-response-demos/</link>
		<comments>http://www.eclecticguy.com/2008/11/23/shrugh-response-demos/#comments</comments>
		<pubDate>Sun, 23 Nov 2008 21:58:05 +0000</pubDate>
		<dc:creator>EclecticGuy</dc:creator>
				<category><![CDATA[design]]></category>
		<category><![CDATA[shrugh]]></category>
		<category><![CDATA[social computing]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[LinkedIn]]></category>

		<guid isPermaLink="false">http://eclecticguy.com/?p=1002</guid>
		<description><![CDATA[My friend and UI guru Bob and I have been thinking about Shrugh. This collaboration has been really helpful and some good stuff has come out of it. As part of the initial discussion, I created a short demo on how a user responds to a shrugh that has been posted. You can see it [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://eclecticguy.com/wp-content/uploads/2008/11/30b-shrughresponse.png"><img class="alignleft size-medium wp-image-1003" style="border: 0pt none; margin-right: 3px; margin-left: 3px;" title="30b-shrughresponse" src="http://eclecticguy.com/wp-content/uploads/2008/11/30b-shrughresponse-300x236.png" alt="" width="180" height="142" /></a>My friend and UI guru Bob and I have been thinking about Shrugh. This collaboration has been really helpful and some good stuff has come out of it. As part of the initial discussion, I created a <a href="http://www.shrugh.com/ResponseDemo/" target="_blank">short demo</a> on how a user responds to a shrugh that has been posted. You can see it <a href="http://www.shrugh.com/ResponseDemo/" target="_blank">here</a> (and please leave feedback at the end). (This was, of course, created with <a href="http://eclecticguy.com/2008/10/17/balsamiq-a-work-of-inspiration/" target="_blank">balsamiq Mockups</a> and my technique for making an <a href="http://eclecticguy.com/2008/11/06/assembling-demos-from-balsamiq-mockups/" target="_blank">interactive demo</a>).</p>
<p>After I completed the demo though, the juices really got flowing! I am all for keeping it as simple as possible. As <a href="http://www.quotationspage.com/quote/2927.html" target="_blank">Albert Einstein said</a>, &#8220;Everything should be made as simple as possible, but not one bit simpler.&#8221; Words to live by! So, let me try this on you &#8211; please let me know what you think!</p>
<ol>
<li>When a shrugher creates a new shrugh, they pick from 1 of 3 types: Yes/No, Fish for Answer, and Pros/Cons. After picking the type, they enter their shrugh and an optional comment to add detail.</li>
<li>Each of these 3 types of shrughs has a different set of responses for users to choose from when they respond to a shrugh &#8211; this is the &#8220;Is your reply a&#8230;&#8221; option menu in the demo:
<ul>
<li>&#8220;Is your reply a&#8230;&#8221; Yes or No</li>
<li>&#8220;Is your reply a&#8230;&#8221; Verdict, Opinion, Kibitz</li>
<li>&#8220;Is your reply a&#8230;&#8221; Pro or Con</li>
</ul>
</li>
<li>That is it, very simple. Anyone adding a reply (including the shrugh owner) does so the same way. The choose what their reply type is (see the list above) and then type in the reply. Very simple. Pros and Cons also have an &#8220;importance&#8221; (weighting) option 1-5 that can be set.</li>
</ol>
<div>Using this information, Shrugh can display a very clear status for each shrugh:</div>
<div>
<ul>
<li>a Yes/No shrugh could show: &#8220;255 Yes, 11 No replies&#8221;</li>
<li>a Fish for Answer shrugh could show: &#8220;123 Verdicts, 256 Opinions, and 232 Kibitzes&#8221;</li>
<li>a Pros/Cons shrugh could show: &#8220;145 pros, 11 cons&#8221;</li>
</ul>
<div>I&#8217;m still thinking of a better label for Fish for Answer &#8211; the idea is that the shrugher wants the community to provide feedback (usually a comment or a simple item).</div>
</div>
<div>I like this idea since it seems consistent across all 3 shrugh types and seems to flow well. I&#8217;ll be prototyping this and posting the demo ASAP.</div>
<p><br class="spacer_" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.eclecticguy.com/2008/11/23/shrugh-response-demos/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Shrughing away with Google App Engine!</title>
		<link>http://www.eclecticguy.com/2008/11/19/shrughing-away-with-google-app-engine/</link>
		<comments>http://www.eclecticguy.com/2008/11/19/shrughing-away-with-google-app-engine/#comments</comments>
		<pubDate>Thu, 20 Nov 2008 00:47:25 +0000</pubDate>
		<dc:creator>EclecticGuy</dc:creator>
				<category><![CDATA[design]]></category>
		<category><![CDATA[shrugh]]></category>
		<category><![CDATA[social computing]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[LinkedIn]]></category>

		<guid isPermaLink="false">http://eclecticguy.com/?p=990</guid>
		<description><![CDATA[As I make progress on Shrugh, I plan to capture the experience as I go. Last week I gave a status update on the Shrugh concept demo and feedback I&#8217;ve received. I&#8217;m still getting feedback (a good thing) but I have enough already on the concept and usability (collected on this Google Form) that I [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://eclecticguy.com/wp-content/uploads/2008/11/picture-1.png"><img class="alignleft size-thumbnail wp-image-991" style="border: 0pt none; margin-right: 3px; margin-left: 3px;" title="picture-1" src="http://eclecticguy.com/wp-content/uploads/2008/11/picture-1-150x150.png" alt="" width="150" height="150" /></a>As I make progress on <a href="http://www.shrugh.com" target="_blank">Shrugh</a>, I plan to capture the experience as I go. Last week I gave a <a href="http://eclecticguy.com/2008/11/12/shrugh-status-update/" target="_blank">status update</a> on the Shrugh concept demo and feedback I&#8217;ve received. I&#8217;m still getting feedback (a good thing) but I have enough already on the concept and usability (collected on this <a href="http://spreadsheets.google.com/viewform?key=pmeU56KT3TeyA8pWSCNKiBw" target="_blank">Google Form</a>) that I am ready to start exploring implementation.</p>
<p>As I mentioned in the last status update, I had done some prototyping in both <a href="http://www.rubyonrails.org/" target="_blank">Ruby on Rails</a> and <a href="http://code.google.com/appengine/" target="_blank">Google App Engine</a> to determine which direction I want to head. To be sure, this was not an apple-to-apple comparison. RoR is really a programming language and Web framework. You still have to choose an RDBMS (most likely <a href="http://www.mysql.com/" target="_blank">MySQL</a> since I have a lot of experience with it), find a hosting service, and deal with deployment and other issues. Google App Engine, on the other hand, is a complete Cloud Computing environment ready to go. It currently uses <a href="http://www.python.org/" target="_blank">Python</a> for code development, the <a href="http://www.djangoproject.com/" target="_blank">Django</a> Web framework, and Google&#8217;s <a href="http://labs.google.com/papers/bigtable.html" target="_blank">BigTable</a> object store. This all runs on Google&#8217;s App Engine environment &#8211; which provides automatic scalability, reliability, robustness, automatic application versioning and a host of other capabilities. In addition, it is free to get started (pricing model is usage based so it scales with the application). Finally, Google provides a really nice freestanding development environment that includes a simulated BigTable datastore along with the other services. It is very easy to download and start using this environment.</p>
<p>So, with the demo <a href="http://www.balsamiq.com" target="_blank">Mockups</a> and user feedback &#8220;on screen&#8221;, I began by designing the &#8220;model&#8221; for Shrughs and implemented them iteratively in Python. Similar to Django, App Engine uses a <em>Model</em> class for managing data storage.  You write your model as a Python class and App Engine does the rest. This makes it very easy to just jump in and get started.</p>
<p>My goal for this first iteration was to create a reasonable model for Shrugh objects, display them on screen using CSS and a templatized presentation (also part of Django), and deploy all of this on Google App Engine. This would give me experience with the entire cycle of develop and test locally then deploy, test and activate on The Cloud. That&#8217;s a lot in a short time!</p>
<p>So, I knew that a Shrugh needed to have these attributes: an owner, a type (yes/no, list, pros vs cons), the actual question, and a few access control attributes. Here is what I came up with:</p>
<pre><span style="font-size: medium;">class Shrugh(db.Model):</span>

<span><span style="font-size: medium;">	</span></span><span style="font-size: medium;">owner = db.UserProperty()</span>

<span><span style="font-size: medium;">	</span></span><span style="font-size: medium;">shrugh_type = db.IntegerProperty(default=0, choices=set([0,1,2]))</span><span><span style="font-size: medium;">	</span></span>

<span><span style="font-size: medium;">	</span></span><span style="font-size: medium;">question = db.StringProperty(multiline=True)</span>

<span><span style="font-size: medium;">	</span></span><span style="font-size: medium;">comment = db.StringProperty()</span>

<span><span style="font-size: medium;">	</span></span><span style="font-size: medium;">share_on_open = db.IntegerProperty(default=1, choices=set([0,1,2]))</span>

<span><span style="font-size: medium;">	</span></span><span style="font-size: medium;">created_datetime = db.DateTimeProperty(auto_now_add=True)</span>

<span><span style="font-size: medium;">	</span></span><span style="font-size: medium;">close_datetime = db.DateTimeProperty()</span>

<span><span style="font-size: medium;">	</span></span><span style="font-size: medium;">share_on_close = db.BooleanProperty(default=True)</span>

<span><span style="font-size: medium;">	</span></span><span style="font-size: medium;">everyone_add = db.BooleanProperty(default=False)</span>
</pre>
<p><br class="spacer_" /></p>
<p>A few things need to be said about App Engine and BigTable that are demonstrated in this class. First, you&#8217;ll notice that I derive from db.<em>Model</em>. <em>Model</em> is the superclass for data model definitions whose properties are static. There is another form, db.<em>Expando,</em> which is a superclass for data model definitions whose properties are determined dynamically. I chose <em>Model</em> simply because that seemed easier to get started.</p>
<p>Next, you&#8217;ll notice that <em>owner</em> is a <em>UserProperty</em>. App Engine is tied to Google&#8217;s user model through <em>UserProperty</em>. This is one area of App Engine that I am still trying to wrap my head around &#8211; and apparently so are a lot of other developers based on the number of discussions and blog posts on this subject! Ideally, Shrugh users would not have to have a Google user account. That&#8217;s fine for now during the early development stage though. (turns out that Django has its own user model and it is possible to combine it with Google&#8217;s to support Google users and non-Google users.)</p>
<p>You&#8217;ll also notice that some properties have a <em>default</em> value as well as pre-configured values (<em>choices</em>) for the property. This is all very easy to do.</p>
<p>Probably the biggest difference with BigTable and traditional RDBMs is that queries using GQL (Google&#8217;s SQL-like query language) can not perform &#8220;joins&#8221;. Unlike RDBMs, BigTable uses a distributed architecture to manage scaling to very large data sets. Developers can optimize how data is distributed by describing relationships between data objects, and by defining indexes for queries. Defining a relationship is straight-forward, simply use a <em>ReferenceProperty</em> to another model instance. Defining indexes for query optimization is a little less friendly &#8211; both in how it is done and in how it is deployed on the App Engine service. Defined indexes are also required for sorting result sets (like date/time ordering).</p>
<p>Indexes are defined in the <em>index.yaml</em> file (part of an application&#8217;s configuration). Once you realize that and understand what needs to be indexed and why, creating the indexes is not too tricky. The nasty part comes during deployment. When you upload your application to App Engine, the service looks at this <a href="http://www.yaml.org/" target="_blank">yaml</a> file and builds the indexes. There are reports of this taking 24-36 hours! My experience creating a single index on <em>created_datetime</em> (so that I can sort query results) was not very positive. I ended up having to create 2 different &#8220;applications&#8221; on App Engine before I finally got it right. The first time, App Engine completed the index build in about 30 minutes but execution resulted in a terminal failure. I never figured out why! Finally, after some reading and experimenting, I was able to upload my Shrugh prototype and App Engine built the index in about 10 minutes. Here is the current version: <a href="http://shrughdev.appspot.com/" target="_blank">Shrugh Development Version</a>.</p>
<p>One quick sidebar, the Google AppEngineLauncher application for Mac OSX is really nice! It manages the local application server as well as uploading to the App Engine service along with log viewing and access to the App Engine Dashboard. Here&#8217;s a screenshot:</p>
<p style="text-align: center;"><span style="text-decoration: underline; color: #0000ee;"><a href="http://eclecticguy.com/wp-content/uploads/2008/11/picture-2.png"><img class="size-full wp-image-999 aligncenter" style="border: 0pt none;" title="picture-2" src="http://eclecticguy.com/wp-content/uploads/2008/11/picture-2.png" alt="" width="500" height="417" /></a></span></p>
<p>So, in just a few hours, I had defined a model for a Shrugh and wrote some code to display Shrughs in a decent layout with a little form to let users create a Shrugh and choose a type. Not bad!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.eclecticguy.com/2008/11/19/shrughing-away-with-google-app-engine/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Shrugh &#8211; status update</title>
		<link>http://www.eclecticguy.com/2008/11/12/shrugh-status-update/</link>
		<comments>http://www.eclecticguy.com/2008/11/12/shrugh-status-update/#comments</comments>
		<pubDate>Wed, 12 Nov 2008 23:18:38 +0000</pubDate>
		<dc:creator>EclecticGuy</dc:creator>
				<category><![CDATA[shrugh]]></category>
		<category><![CDATA[social computing]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[LinkedIn]]></category>

		<guid isPermaLink="false">http://eclecticguy.com/?p=976</guid>
		<description><![CDATA[First, I want to thank everyone for their feedback on Shrugh! The response has been great! I&#8217;ve been working on the demo (you may have seen several versions of it already) and now have a scripted demo that is reasonably complete. It shows how to create all 3 types of shrughs &#8211; Yes/No, List, and [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://eclecticguy.com/wp-content/uploads/2008/11/01-shrughhomepage2.png"><img class="alignleft size-medium wp-image-977" style="border: 0pt none; margin: 3px;" title="01-shrughhomepage2" src="http://eclecticguy.com/wp-content/uploads/2008/11/01-shrughhomepage2-300x236.png" alt="" width="210" height="165" /></a>First, I want to thank <em>everyone</em> for their feedback on Shrugh! The response has been great! I&#8217;ve been working on the demo (you may have seen several versions of it already) and now have a scripted demo that is reasonably complete. It shows how to create all 3 types of shrughs &#8211; Yes/No, List, and Pros &amp; Cons. It also shows how you can tag and add notes to other Shrughie&#8217;s shrughs and follow Shrughies that you are interested in. Finally, the demo ends with a Google Form where you can give my your feedback!</p>
<p>May I trouble you one more time to run through the demo and give me your comments? Simply go to <a href="http://www.shrugh.com" target="_blank">www.shrugh.com</a> to get started.</p>
<p><strong>About the Name</strong></p>
<p>The overwhelming majority of you like the name <em>Shrugh</em> and even figured out how to pronounce it! A handful of people couldn&#8217;t figure it out, so here is the story on the name:</p>
<p style="padding-left: 30px;">The name &#8220;<em>Shrugh</em>&#8221; stems from the concatenation of &#8220;shrug&#8221; and &#8220;ugh&#8221; pronounced Shru-ugh. A &#8220;shrug&#8221; is body language that is often used when a person is confused or indecisive. An &#8220;ugh&#8221; is an exclamation of &#8220;I don&#8217;t know&#8221; or &#8220;this is going to hurt&#8221;! <em>Shrugh</em> seemed like as good of a name as any, and the domain name was free and clear!</p>
<p><strong>Demo Details</strong></p>
<p>Many of you asked for more details about the demo itself. Well, as I wrote on my blog &#8220;<a href="http://eclecticguy.com/2008/11/06/assembling-demos-from-balsamiq-mockups/" target="_blank">Assembling demos from balsamiq Mockups</a>&#8221; I use a product called <a href="http://www.balsamiq.com" target="_blank">balsamiq Mockups</a> to design the screens (I blogged about <a href="http://eclecticguy.com/2008/10/17/balsamiq-a-work-of-inspiration/" target="_blank">Mockups here</a>). Mockups creates static screens and has the ability to export them as PNG files. So I developed a technique using CSS styles to let me link static screens together to create a demo of sorts. That is how the Shrugh demo works. One handy trick that I just thought of and didn&#8217;t mention in either of my updates to the demo technique, is to show the &#8220;hotspots&#8221; while you are figuring out what their coordinates are. If you use my css source file &#8220;<a href="http://www.shrugh.com/selection.css" target="_blank">selection.css</a>&#8220;, you will see a commented out style at the bottom. If you uncomment this style, you will be able to see your hotspots while you work on the demo! Just comment the style out before you present the demo.</p>
<p><strong>Shrugh Demo Lessons Learned</strong></p>
<p>The current Shrugh demo has 43 Mockups PNG screens and 48 HTML wrapper files. You&#8217;ll notice that the top of each page has a link to take the user back to the Shrugh Homepage. My friend Bob made that suggestion and it has been well received! I also added a Google Form to collect feedback directly as part of the user&#8217;s demo experience. It was very easy to create the form and it tabulates all of the feedback in a spreadsheet so it is easy for me to manage. Finally, I include a short description and explicit directions on what the user is seeing and what they should do next. That has really helped too.</p>
<p>One comment on demos done this way, they do result in more screens and user clicks than the actual product will have. The reason for this is that the PNG files are of a fixed size and trying to kludge vertical scrolling would have been time consuming. So, rather than have a single screen to create a shrugh, it is divided between 4 screens. It will be a simple matter to combine these elements on to a single screen and significantly improve usability. Thanks to all those who commented on this!</p>
<p><strong>What&#8217;s Next?</strong></p>
<p>While I&#8217;ve been developing the demo, I&#8217;ve also been looking at implementation technologies and platforms. I had narrowed it down to two &#8211; Ruby on Rails and Google App Engine. They are very different platforms, each with strengths and weaknesses. So, I did a rapid prototype on each to test capabilities and get a feel for them. I developed the same application on each &#8211; a simple Yes/No shrugh creation screen that saves the shrugh to a database and displays shrughs in a list. It was actually easy to build this on both technologies but in the end, I chose Google App Engine as the platform of choice for several reasons:</p>
<ol>
<li>It is a new cloud computing platform and I am very intrigued with the future of cloud computing. What better way to learn about it than to actually develop an application for one?</li>
<li>Google App Engine currently supports the Python programming language and I already know Python.</li>
<li>Google App Engine also supports the Django Web framework. Both Rails and Django support the <a href="http://c2.com/cgi/wiki?DontRepeatYourself" target="_blank">DRY</a> principle but I really like Django&#8217;s URL scheme and templating. (Rails relies on 3rd party modules for more powerful templating, like Liquid).</li>
</ol>
<div>(I wish I had Shrugh&#8217;s Pros vs Cons for this!)</div>
<div>I have no doubt that Shrugh could be built on RoR or App Engine. I think there is a lot to be learned about cloud computing and that is what tipped the scale for me in the end.</div>
<div>So, having chosen a platform, I plan to start implementing the core of Shrugh and make it available for early poking and prodding over the next few weeks. I do have a full time job and family responsibilities so Shrugh is an experiment in progress for me. Stay Tuned!</div>
<p><br class="spacer_" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.eclecticguy.com/2008/11/12/shrugh-status-update/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Updated Shrugh demo and new Feedback Form!</title>
		<link>http://www.eclecticguy.com/2008/11/10/updated-shrugh-demo-and-new-feedback-form/</link>
		<comments>http://www.eclecticguy.com/2008/11/10/updated-shrugh-demo-and-new-feedback-form/#comments</comments>
		<pubDate>Mon, 10 Nov 2008 22:15:40 +0000</pubDate>
		<dc:creator>EclecticGuy</dc:creator>
				<category><![CDATA[shrugh]]></category>
		<category><![CDATA[social computing]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://eclecticguy.com/?p=945</guid>
		<description><![CDATA[I&#8217;ve cleaned up the Shrugh demo &#8211; thanks to everyone who emailed comments! I also end the demo by taking the user to a Google Form where they can leave feedback and comments. If you want to jump right to the form now (because you have already seen the demo), click Shrugh Feedback. If you [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://eclecticguy.com/wp-content/uploads/2008/11/01-shrughhomepage1.png"><img class="alignleft size-medium wp-image-947" style="border: 0pt none; margin: 3px;" title="01-shrughhomepage1" src="http://eclecticguy.com/wp-content/uploads/2008/11/01-shrughhomepage1-300x236.png" alt="" width="180" height="142" /></a>I&#8217;ve cleaned up the Shrugh demo &#8211; thanks to everyone who emailed comments! I also end the demo by taking the user to a Google Form where they can leave feedback and comments. If you want to jump right to the form now (because you have already seen the demo), click <a href="http://spreadsheets.google.com/viewform?key=pmeU56KT3TeyA8pWSCNKiBw" target="_blank">Shrugh Feedback</a>. If you want to see the updated demo, click <a href="http://www.shrugh.com" target="_blank">here</a>.</p>
<p>I am also considering using Google App Engine to develop and host Shrugh. I already know Python and there are a lot of great attributes to cloud computing that would be fun to build on.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.eclecticguy.com/2008/11/10/updated-shrugh-demo-and-new-feedback-form/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>UPDATE #2: Assembling Demos from balsamiq Mockups</title>
		<link>http://www.eclecticguy.com/2008/11/10/update-2-assembling-demos-from-balsamiq-mockups/</link>
		<comments>http://www.eclecticguy.com/2008/11/10/update-2-assembling-demos-from-balsamiq-mockups/#comments</comments>
		<pubDate>Mon, 10 Nov 2008 14:24:33 +0000</pubDate>
		<dc:creator>EclecticGuy</dc:creator>
				<category><![CDATA[shrugh]]></category>
		<category><![CDATA[social computing]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://eclecticguy.com/?p=939</guid>
		<description><![CDATA[I&#8217;ve received lots of very positive feedback on my Assembling Demos from balsamiq Mockups posts. However, there have been a number of people asking &#8220;How do you know what the hotspot rectangle position and dimensions are?&#8221;. To that, I have an answer: look at the Mockups generated XML file! Here is an example for a [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve received lots of very positive feedback on my <a href="http://eclecticguy.com/2008/11/06/assembling-demos-from-balsamiq-mockups/" target="_blank">Assembling Demos from balsamiq Mockups</a> posts. However, there have been a number of people asking &#8220;How do you know what the <em>hotspot </em>rectangle position and dimensions are?&#8221;.</p>
<p>To that, I have an answer: look at the Mockups generated XML file! Here is an example for a Button:</p>
<pre>&lt;control controlID="23" controlTypeID="com.balsamiq.mockups::Button"
x="139" y="393" w="82" h="-1" zOrder="6" locked="false" isInGroup="-1"&gt;
  &lt;controlProperties&gt;
    &lt;text&gt;Push%20Me&lt;/text&gt;
  &lt;/controlProperties&gt;
&lt;/control&gt; </pre>
<p>It will have the x, y coordinates for the top left corner of each item on the Mockup. For many, it will have the width (w) and height (h) too, however, if w=&#8221;-1&#8243; or h=&#8221;-1&#8243; it means Mockups is automatically determining the control&#8217;s width and height. In this case, you will just have to take a quick guess, try it, and refine until you get it right. Use the x, y, w, and h values as the starting point in your <em>hotspot </em>CSS markup. Test the demo page to make sure the <em>hotspots </em>are where you want them and tweak them if they are not.</p>
<p>Once you become familiar with the process and use my templates on the original post, it should only take a minute (or less) to layout a new Mockup demo screen!</p>
<p><br class="spacer_" /></p>
<p><br class="spacer_" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.eclecticguy.com/2008/11/10/update-2-assembling-demos-from-balsamiq-mockups/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
