<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>TurboManage</title>
	<atom:link href="http://turbomanage.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://turbomanage.wordpress.com</link>
	<description>David Chandler's Journal of Java Web Development</description>
	<lastBuildDate>Thu, 12 Nov 2009 20:16:26 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='turbomanage.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/ed356135593567d2453df7fa54d4dd54?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>TurboManage</title>
		<link>http://turbomanage.wordpress.com</link>
	</image>
			<item>
		<title>Correction: AppEngine Datastore and owned relationships</title>
		<link>http://turbomanage.wordpress.com/2009/11/12/correction-appengine-datastore-and-owned-relationships/</link>
		<comments>http://turbomanage.wordpress.com/2009/11/12/correction-appengine-datastore-and-owned-relationships/#comments</comments>
		<pubDate>Thu, 12 Nov 2009 20:16:26 +0000</pubDate>
		<dc:creator>David Chandler</dc:creator>
				<category><![CDATA[AppEngine]]></category>
		<category><![CDATA[Java Data Objects]]></category>

		<guid isPermaLink="false">http://turbomanage.wordpress.com/?p=469</guid>
		<description><![CDATA[Last week, I mistakenly wrote that AppEngine Datastore would not retrieve Key fields (representing an unowned relationship) unless you annotated with defaultFetchGroup=&#8221;true&#8221;, but that it would automatically retrieve properties represented by an owned relationship. This was not correct, as AppEngine Datastore never allows joins. I&#8217;ve updated the original post accordingly.
&#160;
      [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=turbomanage.wordpress.com&blog=341230&post=469&subd=turbomanage&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Last week, I mistakenly wrote that AppEngine Datastore would not retrieve Key fields (representing an unowned relationship) unless you annotated with defaultFetchGroup=&#8221;true&#8221;, but that it would automatically retrieve properties represented by an owned relationship. This was not correct, as AppEngine Datastore never allows joins. I&#8217;ve updated <a href="http://turbomanage.wordpress.com/2009/11/06/key-fields-are-not-retrieved-by-default/">the original post</a> accordingly.</p>
<p>&nbsp;</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/turbomanage.wordpress.com/469/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/turbomanage.wordpress.com/469/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/turbomanage.wordpress.com/469/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/turbomanage.wordpress.com/469/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/turbomanage.wordpress.com/469/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/turbomanage.wordpress.com/469/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/turbomanage.wordpress.com/469/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/turbomanage.wordpress.com/469/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/turbomanage.wordpress.com/469/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/turbomanage.wordpress.com/469/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=turbomanage.wordpress.com&blog=341230&post=469&subd=turbomanage&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://turbomanage.wordpress.com/2009/11/12/correction-appengine-datastore-and-owned-relationships/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/614e792082e78cd852d0b60ae0f28bef?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">turbomanage</media:title>
		</media:content>
	</item>
		<item>
		<title>AppEngine JDO tip regarding detachCopy()</title>
		<link>http://turbomanage.wordpress.com/2009/11/11/appengine-jdo-tip-regarding-detachcopy/</link>
		<comments>http://turbomanage.wordpress.com/2009/11/11/appengine-jdo-tip-regarding-detachcopy/#comments</comments>
		<pubDate>Thu, 12 Nov 2009 03:59:37 +0000</pubDate>
		<dc:creator>David Chandler</dc:creator>
				<category><![CDATA[AppEngine]]></category>
		<category><![CDATA[Google Web Toolkit]]></category>

		<guid isPermaLink="false">http://turbomanage.wordpress.com/?p=463</guid>
		<description><![CDATA[In order to avoid JDO and/or serialization exceptions, I always call some form of persistenceManager.detachCopy() before returning objects from the Datastore back to GWT. I discovered today that you must set any non-persistent properties of the object after calling detachCopy(). My initial inclination is that detachCopy() does not copy properties annotated with @NotPersistent, but I [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=turbomanage.wordpress.com&blog=341230&post=463&subd=turbomanage&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>In order to avoid JDO and/or serialization exceptions, I always call some form of persistenceManager.detachCopy() before returning objects from the Datastore back to GWT. I discovered today that you must set any non-persistent properties of the object <em>after</em> calling detachCopy(). My initial inclination is that detachCopy() does not copy properties annotated with @NotPersistent, but I have to do a little more testing&#8230;</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/turbomanage.wordpress.com/463/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/turbomanage.wordpress.com/463/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/turbomanage.wordpress.com/463/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/turbomanage.wordpress.com/463/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/turbomanage.wordpress.com/463/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/turbomanage.wordpress.com/463/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/turbomanage.wordpress.com/463/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/turbomanage.wordpress.com/463/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/turbomanage.wordpress.com/463/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/turbomanage.wordpress.com/463/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=turbomanage.wordpress.com&blog=341230&post=463&subd=turbomanage&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://turbomanage.wordpress.com/2009/11/11/appengine-jdo-tip-regarding-detachcopy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/614e792082e78cd852d0b60ae0f28bef?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">turbomanage</media:title>
		</media:content>
	</item>
		<item>
		<title>How to backup or move Picasa albums</title>
		<link>http://turbomanage.wordpress.com/2009/11/07/how-to-backup-or-move-picasa-albums/</link>
		<comments>http://turbomanage.wordpress.com/2009/11/07/how-to-backup-or-move-picasa-albums/#comments</comments>
		<pubDate>Sun, 08 Nov 2009 01:53:48 +0000</pubDate>
		<dc:creator>David Chandler</dc:creator>
				<category><![CDATA[PC Tech]]></category>
		<category><![CDATA[Photography]]></category>

		<guid isPermaLink="false">http://turbomanage.wordpress.com/?p=460</guid>
		<description><![CDATA[I&#8217;ve been very happily managing my photos with Picasa since version 2. Many machines ago, I began storing photos along with all my other portable data in a  directory separate from the normal Windows user folder to make it easy to back up and move files between machines with an external hard drive. So [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=turbomanage.wordpress.com&blog=341230&post=460&subd=turbomanage&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I&#8217;ve been very happily managing my photos with <a href="http://picasa.google.com/">Picasa</a> since version 2. Many machines ago, I began storing photos along with all my other portable data in a  directory separate from the normal Windows user folder to make it easy to back up and move files between machines with an external hard drive. So far so good.</p>
<p>The problem is how to back up and/or move Picasa albums to a new machine, as these are not stored with your photo files like Picasa edits and captions are. Picasa 3 now offers a way to export the entire photo database; however, it is very slow and results in a very large file (multi-GB) when you have 10 years&#8217; worth of digital photos. It&#8217;s not practical to export the entire database to make a weekly backup, so I was delighted to find this technique on a forum which allows you to move just your album data:</p>
<p><a href="http://www.google.com/support/forum/p/Picasa/thread?tid=333bf79caf11eb22&amp;hl=en">Restore Picasa albums</a></p>
<p>I&#8217;ve done it many times and it works. This way, you can continue to use an incremental backup solution for photo files and backup the tiny amount of data in C:\Users\username\AppData\Local\Google\Picasa2Albums\ to save your albums. The only catch is that when you rebuild the Picasa database as instructed in the link above, the photos referenced in the album must be in the same directory location as they were when the album was created.</p>
<p>In order to ensure that my photos stay in the same directory structure even when Microsoft changes the  location of the Users folder between, say, XP and Vista, I keep all my photos in a directory outside the Windows user directory (I use C:\@My\Photos). When I get a new machine, all I have to do is:</p>
<ol>
<li>Copy the whole C:\@My directory to the new machine</li>
<li>Install Picasa</li>
<li>Copy the Picasa2Albums directory into place under the Users folder (C:\Users\David\AppData\Local\Google\Picasa2Albums\ in Vista)</li>
<li>Rebuild the Picasa database as instructed above using the Shift+Ctrl+Alt combination.</li>
</ol>
<p>Of course, this technique may not be supported forever, and hopefully won&#8217;t be needed as Google continues to improve Picasa. But for now, it allows me to backup my albums on a regular basis and know that I&#8217;ll be able to move my photos, albums and all, to a new machine when needed.</p>
<div id="_mcePaste" style="overflow:hidden;position:absolute;left:-10000px;top:67px;width:1px;height:1px;">http://picasa.google.com/</div>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/turbomanage.wordpress.com/460/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/turbomanage.wordpress.com/460/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/turbomanage.wordpress.com/460/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/turbomanage.wordpress.com/460/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/turbomanage.wordpress.com/460/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/turbomanage.wordpress.com/460/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/turbomanage.wordpress.com/460/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/turbomanage.wordpress.com/460/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/turbomanage.wordpress.com/460/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/turbomanage.wordpress.com/460/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=turbomanage.wordpress.com&blog=341230&post=460&subd=turbomanage&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://turbomanage.wordpress.com/2009/11/07/how-to-backup-or-move-picasa-albums/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/614e792082e78cd852d0b60ae0f28bef?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">turbomanage</media:title>
		</media:content>
	</item>
		<item>
		<title>Key fields are not retrieved by default</title>
		<link>http://turbomanage.wordpress.com/2009/11/06/key-fields-are-not-retrieved-by-default/</link>
		<comments>http://turbomanage.wordpress.com/2009/11/06/key-fields-are-not-retrieved-by-default/#comments</comments>
		<pubDate>Fri, 06 Nov 2009 15:44:44 +0000</pubDate>
		<dc:creator>David Chandler</dc:creator>
				<category><![CDATA[AppEngine]]></category>
		<category><![CDATA[Java Data Objects]]></category>

		<guid isPermaLink="false">http://turbomanage.wordpress.com/?p=458</guid>
		<description><![CDATA[I&#8217;ve noticed that AppEngine does not populate Key fields by default when querying. I&#8217;m sure it&#8217;s documented, but I can&#8217;t remember where. At any rate, you can annotate with defaultFetchGroup to resolve this. Same goes for properties of type Text and Blob.

...
import com.google.appengine.api.datastore.Key;

@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class PrayerItem implements Serializable
{
	@PrimaryKey
	@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
	private Long id;
	@Persistent(defaultFetchGroup=&#34;true&#34;)
	private Key list;
	...

}

In [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=turbomanage.wordpress.com&blog=341230&post=458&subd=turbomanage&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I&#8217;ve noticed that AppEngine does not populate Key fields by default when querying. I&#8217;m sure it&#8217;s documented, but I can&#8217;t remember where. At any rate, you can annotate with defaultFetchGroup to resolve this. Same goes for properties of type Text and Blob.</p>
<pre class="brush: java;">
...
import com.google.appengine.api.datastore.Key;

@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class PrayerItem implements Serializable
{
	@PrimaryKey
	@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
	private Long id;
	@Persistent(defaultFetchGroup=&quot;true&quot;)
	private Key list;
	...

}
</pre>
<p>In the case of owned relationships, where a property is represented by its actual domain class rather than a Key, it is also necessary to use defaultFetchGroup=&#8221;true&#8221;. Even though owned properties are in the same entity group and are therefore eligible for inclusion in a transaction, the AppEngine Datastore doesn&#8217;t allow joins, so owned relationships are not returned in the initial query. When you set defaultFetchGroup=&#8221;true&#8221; on an owned property, you will get this warning:</p>
<blockquote><p>WARNING: Meta-data warning for com&#8230;your_owned_property_name: The datastore does not support joins and therefore cannot honor requests to place child objects in the default fetch group.  The field will be fetched lazily on first access.  You can modify this warning by setting the datanucleus.appengine.ignorableMetaDataBehavior property in your config.  A value of NONE will silence the warning.  A value of ERROR will turn the warning into an exception.</p></blockquote>
<p>Lazy fetching does work as described in the message.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/turbomanage.wordpress.com/458/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/turbomanage.wordpress.com/458/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/turbomanage.wordpress.com/458/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/turbomanage.wordpress.com/458/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/turbomanage.wordpress.com/458/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/turbomanage.wordpress.com/458/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/turbomanage.wordpress.com/458/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/turbomanage.wordpress.com/458/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/turbomanage.wordpress.com/458/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/turbomanage.wordpress.com/458/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=turbomanage.wordpress.com&blog=341230&post=458&subd=turbomanage&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://turbomanage.wordpress.com/2009/11/06/key-fields-are-not-retrieved-by-default/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/614e792082e78cd852d0b60ae0f28bef?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">turbomanage</media:title>
		</media:content>
	</item>
		<item>
		<title>Eclipse keyboard shortcut for working with interfaces</title>
		<link>http://turbomanage.wordpress.com/2009/11/03/eclipse-keyboard-shortcut-for-working-with-interfaces/</link>
		<comments>http://turbomanage.wordpress.com/2009/11/03/eclipse-keyboard-shortcut-for-working-with-interfaces/#comments</comments>
		<pubDate>Tue, 03 Nov 2009 04:22:42 +0000</pubDate>
		<dc:creator>David Chandler</dc:creator>
				<category><![CDATA[Eclipse]]></category>

		<guid isPermaLink="false">http://turbomanage.wordpress.com/?p=455</guid>
		<description><![CDATA[Maybe everyone knows this already, but in case not&#8230;
Put your cursor in the name of an interface (say, a Display interface nested in a GWT presenter) and press Ctrl-T. Eclipse shows you all the classes that implement the interface and you can then navigate directly to an implementing class. I frequently use this in combination [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=turbomanage.wordpress.com&blog=341230&post=455&subd=turbomanage&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Maybe everyone knows this already, but in case not&#8230;</p>
<p>Put your cursor in the name of an interface (say, a Display interface nested in a GWT presenter) and press Ctrl-T. Eclipse shows you all the classes that implement the interface and you can then navigate directly to an implementing class. I frequently use this in combination with Ctrl+Alt+H to find out how a method gets called.</p>
<p>You can find all of my favorite  keyboard shortcuts in my Eclipse Google notebook listed in the left sidebar.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/turbomanage.wordpress.com/455/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/turbomanage.wordpress.com/455/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/turbomanage.wordpress.com/455/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/turbomanage.wordpress.com/455/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/turbomanage.wordpress.com/455/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/turbomanage.wordpress.com/455/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/turbomanage.wordpress.com/455/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/turbomanage.wordpress.com/455/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/turbomanage.wordpress.com/455/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/turbomanage.wordpress.com/455/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=turbomanage.wordpress.com&blog=341230&post=455&subd=turbomanage&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://turbomanage.wordpress.com/2009/11/03/eclipse-keyboard-shortcut-for-working-with-interfaces/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/614e792082e78cd852d0b60ae0f28bef?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">turbomanage</media:title>
		</media:content>
	</item>
		<item>
		<title>Free Web conferencing for Windows, Linux, and Mac</title>
		<link>http://turbomanage.wordpress.com/2009/10/31/free-web-conferencing-for-windows-linux-and-mac/</link>
		<comments>http://turbomanage.wordpress.com/2009/10/31/free-web-conferencing-for-windows-linux-and-mac/#comments</comments>
		<pubDate>Sun, 01 Nov 2009 03:15:26 +0000</pubDate>
		<dc:creator>David Chandler</dc:creator>
				<category><![CDATA[PC Tech]]></category>

		<guid isPermaLink="false">http://turbomanage.wordpress.com/?p=452</guid>
		<description><![CDATA[Yuuguu.com
I recently needed to share my Windows desktop with a Linux user over the Internet. It took only minutes to install the Yuuguu client and start sharing my screen. Remote viewers don&#8217;t need to install anything, as there is a Web viewer. But if the remote participants do install the Yuuguu client, they can also [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=turbomanage.wordpress.com&blog=341230&post=452&subd=turbomanage&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a href="yuuguu.com">Yuuguu.com</a></p>
<p>I recently needed to share my Windows desktop with a Linux user over the Internet. It took only minutes to install the Yuuguu client and start sharing my screen. Remote viewers don&#8217;t need to install anything, as there is a Web viewer. But if the remote participants do install the Yuuguu client, they can also request control of the presenter&#8217;s screen.</p>
<p>Yuuguu also gives you a telephone conference line with global dial-in numbers. It is a free service in the US, although you still have to dial long distance.</p>
<p>Yuuguu lets you chat across several instant messaging networks. And it works on Windows, Linux, and Mac.</p>
<p>Funny name, great service!</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/turbomanage.wordpress.com/452/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/turbomanage.wordpress.com/452/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/turbomanage.wordpress.com/452/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/turbomanage.wordpress.com/452/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/turbomanage.wordpress.com/452/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/turbomanage.wordpress.com/452/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/turbomanage.wordpress.com/452/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/turbomanage.wordpress.com/452/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/turbomanage.wordpress.com/452/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/turbomanage.wordpress.com/452/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=turbomanage.wordpress.com&blog=341230&post=452&subd=turbomanage&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://turbomanage.wordpress.com/2009/10/31/free-web-conferencing-for-windows-linux-and-mac/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/614e792082e78cd852d0b60ae0f28bef?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">turbomanage</media:title>
		</media:content>
	</item>
		<item>
		<title>AppEngine JDO example #1: retrieve an object by ID</title>
		<link>http://turbomanage.wordpress.com/2009/10/30/appengine-jdo-example-1-retrieve-an-object-by-id/</link>
		<comments>http://turbomanage.wordpress.com/2009/10/30/appengine-jdo-example-1-retrieve-an-object-by-id/#comments</comments>
		<pubDate>Sat, 31 Oct 2009 03:03:12 +0000</pubDate>
		<dc:creator>David Chandler</dc:creator>
				<category><![CDATA[AppEngine]]></category>
		<category><![CDATA[Java Data Objects]]></category>

		<guid isPermaLink="false">http://turbomanage.wordpress.com/?p=443</guid>
		<description><![CDATA[This is the first of a series of posts that will demonstrate a variety of JDO mappings and queries with AppEngine.
For starters, let&#8217;s retrieve an object from the Datastore given its ID. Here&#8217;s the User object in our domain model:

package com.roa.client.domain;

import java.io.Serializable;

import javax.jdo.annotations.IdGeneratorStrategy;
import javax.jdo.annotations.IdentityType;
import javax.jdo.annotations.PersistenceCapable;
import javax.jdo.annotations.Persistent;
import javax.jdo.annotations.PrimaryKey;

@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class User implements Serializable
{
	private static final [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=turbomanage.wordpress.com&blog=341230&post=443&subd=turbomanage&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>This is the first of a series of posts that will demonstrate a variety of JDO mappings and queries with AppEngine.</p>
<p>For starters, let&#8217;s retrieve an object from the Datastore given its ID. Here&#8217;s the User object in our domain model:</p>
<pre class="brush: java;">
package com.roa.client.domain;

import java.io.Serializable;

import javax.jdo.annotations.IdGeneratorStrategy;
import javax.jdo.annotations.IdentityType;
import javax.jdo.annotations.PersistenceCapable;
import javax.jdo.annotations.Persistent;
import javax.jdo.annotations.PrimaryKey;

@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class User implements Serializable
{
	private static final long serialVersionUID = -1126191336687818754L;

	@PrimaryKey
	@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
	private Long id;
	@Persistent
	private String firstName;
	...
}
</pre>
<p>Now we want to retrieve a User object given the ID property obtained from getId(). Easy enough, you think, as the JDO PersistenceManager provides a method for this:</p>
<pre class="brush: java;">
// Doesn't quite work
User attachedUser = (User) getPM().getObjectById(userId);
</pre>
<p>But there&#8217;s a catch. Confusingly, the ID needed by getObjectById is a JDO ID, not the object property named &#8220;id&#8221; that we&#8217;ve annotated as an IDENTITY. You can get the JDO ID one of two ways. Whenever the object is attached, such as just after you&#8217;ve called makePersistent() on it, you can call persistenceManager.getObjectId(obj) and keep it in a safe place for later use. Alternatively, you can use a JDO helper method at any time to get the JDO ID from the object ID:</p>
<pre class="brush: java;">
		 // Must obtain the JDO ID first
		 Object idInstance = getPM().newObjectIdInstance(User.class, user.getId());
		 User attachedUser = (User) getPM().getObjectById(idInstance);
</pre>
<p>Of course, you can always just run a normal query on the object&#8217;s ID property, but it&#8217;s a bit ugly because the simplest query syntax always returns a Collection and we assume here that there will be only one matching object.</p>
<pre class="brush: java;">
		Query q = getPM().newQuery(User.class, &quot;id == :userId&quot;);
		List&lt;User&gt; users = (List&lt;User&gt;) q.execute(u.getId());
		User attachedUser = users.get(0);
</pre>
<p>Better is to let the query language know that we expect a unique object, but then we have to write out the whole query and declare our imports one way or another.</p>
<pre class="brush: java;">
		Query q = getPM().newQuery(&quot;SELECT UNIQUE FROM com.roa.client.domain.User WHERE id == :userId&quot;);
		User attachedUser = (User) q.execute(u.getId());
</pre>
<p>All things considered, calling the JDO helper method to get a JDO ID from an object ID may be the least painful.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/turbomanage.wordpress.com/443/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/turbomanage.wordpress.com/443/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/turbomanage.wordpress.com/443/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/turbomanage.wordpress.com/443/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/turbomanage.wordpress.com/443/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/turbomanage.wordpress.com/443/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/turbomanage.wordpress.com/443/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/turbomanage.wordpress.com/443/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/turbomanage.wordpress.com/443/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/turbomanage.wordpress.com/443/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=turbomanage.wordpress.com&blog=341230&post=443&subd=turbomanage&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://turbomanage.wordpress.com/2009/10/30/appengine-jdo-example-1-retrieve-an-object-by-id/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/614e792082e78cd852d0b60ae0f28bef?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">turbomanage</media:title>
		</media:content>
	</item>
		<item>
		<title>Notes from CloudCamp</title>
		<link>http://turbomanage.wordpress.com/2009/10/29/notes-from-cloudcamp/</link>
		<comments>http://turbomanage.wordpress.com/2009/10/29/notes-from-cloudcamp/#comments</comments>
		<pubDate>Thu, 29 Oct 2009 23:33:16 +0000</pubDate>
		<dc:creator>David Chandler</dc:creator>
				<category><![CDATA[AppEngine]]></category>

		<guid isPermaLink="false">http://turbomanage.wordpress.com/?p=435</guid>
		<description><![CDATA[There were about 100 folks at CloudCamp Atlanta last night. Participatns were mostly interested in Amazon EC2 or the upcoming Windows Azure platform (Microsoft was the primary sponsor). A handful of folks turned out for my &#8220;show me the code&#8221; presentation on AppEngine and GWT+MVP.
My main takeaway is that I&#8217;m really, really glad to be [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=turbomanage.wordpress.com&blog=341230&post=435&subd=turbomanage&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>There were about 100 folks at CloudCamp Atlanta last night. Participatns were mostly interested in Amazon EC2 or the upcoming Windows Azure platform (Microsoft was the primary sponsor). A handful of folks turned out for my &#8220;show me the code&#8221; presentation on AppEngine and GWT+MVP.</p>
<p>My main takeaway is that I&#8217;m really, really glad to be a <a href="/gae">Google AppEngine</a> user. Most of the sessions and discussions centered around how to grow/shrink your Amazon server pool automatically and how to scale MySQL. These are things I don&#8217;t have to worry about at all as an AppEngine user. AppEngine is perfect for my application: launching a one-man startup that could go viral (not to mention it&#8217;s free to get started!) I&#8217;m just plain tired of sysadmin, and I&#8217;m willing to trade the  freedom to run any configuration of my choice for the scalability that comes with AppEngine&#8217;s constraints.</p>
<p>There was some discussion regarding the cloud  and SLAs (or lack thereof). Someone said they needed five nines, not three. I don&#8217;t know where they got either number, but .999 reliability is definitely good enough for me. I have a consumer-facing app that doesn&#8217;t involve money, and I&#8217;ll be ecstatic if I have only 8 hrs 46 minutes downtime in the coming year. It&#8217;s clear that cloud offerings (especially AppEngine) appeal more to lone developers and  small startups than to enterprises, although Amazon seems to have made great inroads in this area. It&#8217;s always going to be easier to start in the cloud than to move an existing data center. What excites me most about AppEngine and the like is that ONE developer can realistically create and deploy a scalable application. This has the potential to unleash a whole new wave of entrepreneurial energy on the Internet, and will make it possible for smaller companies that could never afford a data center to nevertheless get custom software for their needs. Which means we software engineers should get to do more coding and less sysadmin. Yay!</p>
<p>Other takeaways:</p>
<p>Lots of folks were happily using <a href="http://www.rightscale.com">RightScale</a> to manage Amazon EC2 instances and automatically grow or shrink the server pool based on load.</p>
<p><a href="http://aws.amazon.com/ibm/">IBM provides Amazon machine images</a> of its popular products like WebSphere  FREE for development use (other than Amazon charges, of course).</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/turbomanage.wordpress.com/435/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/turbomanage.wordpress.com/435/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/turbomanage.wordpress.com/435/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/turbomanage.wordpress.com/435/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/turbomanage.wordpress.com/435/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/turbomanage.wordpress.com/435/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/turbomanage.wordpress.com/435/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/turbomanage.wordpress.com/435/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/turbomanage.wordpress.com/435/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/turbomanage.wordpress.com/435/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=turbomanage.wordpress.com&blog=341230&post=435&subd=turbomanage&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://turbomanage.wordpress.com/2009/10/29/notes-from-cloudcamp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/614e792082e78cd852d0b60ae0f28bef?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">turbomanage</media:title>
		</media:content>
	</item>
		<item>
		<title>How to clean up muddy water</title>
		<link>http://turbomanage.wordpress.com/2009/10/29/how-to-clean-up-muddy-water/</link>
		<comments>http://turbomanage.wordpress.com/2009/10/29/how-to-clean-up-muddy-water/#comments</comments>
		<pubDate>Thu, 29 Oct 2009 22:44:59 +0000</pubDate>
		<dc:creator>David Chandler</dc:creator>
				<category><![CDATA[Photography]]></category>

		<guid isPermaLink="false">http://turbomanage.wordpress.com/?p=427</guid>
		<description><![CDATA[in Photoshop, that is&#8230;

Select the muddy water using the quick selection tool.
Create a new Hue/Saturation adjustment layer using the selection as the mask.
In the Hue/Saturation dialog, select the Yellow channel.
Set saturation way down and luminance way up.
Now people will think your photo was taken in the pristine waters of the Rockies instead of Georgia&#8230;


&#160;
&#160;
  [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=turbomanage.wordpress.com&blog=341230&post=427&subd=turbomanage&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>in Photoshop, that is&#8230;</p>
<ol>
<li>Select the muddy water using the quick selection tool.</li>
<li>Create a new Hue/Saturation adjustment layer using the selection as the mask.</li>
<li>In the Hue/Saturation dialog, select the Yellow channel.</li>
<li>Set saturation way down and luminance way up.</li>
<li>Now people will think your photo was taken in the pristine waters of the Rockies instead of Georgia&#8230;</li>
</ol>
<p><a rel="attachment wp-att-430" href="http://turbomanage.wordpress.com/2009/10/29/how-to-clean-up-muddy-water/img_4629a/"><a rel="attachment wp-att-430" href="http://turbomanage.wordpress.com/2009/10/29/how-to-clean-up-muddy-water/img_4629a/"><img class="alignright size-medium wp-image-430" title="After" src="http://turbomanage.files.wordpress.com/2009/10/img_4629a.jpg?w=300&#038;h=235" alt="After" width="300" height="235" /></a></a><a rel="attachment wp-att-429" href="http://turbomanage.wordpress.com/2009/10/29/how-to-clean-up-muddy-water/img_4629y/"><img class="size-medium wp-image-429 alignleft" title="Before" src="http://turbomanage.files.wordpress.com/2009/10/img_4629y.jpg?w=300&#038;h=235" alt="Before" width="300" height="235" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/turbomanage.wordpress.com/427/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/turbomanage.wordpress.com/427/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/turbomanage.wordpress.com/427/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/turbomanage.wordpress.com/427/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/turbomanage.wordpress.com/427/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/turbomanage.wordpress.com/427/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/turbomanage.wordpress.com/427/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/turbomanage.wordpress.com/427/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/turbomanage.wordpress.com/427/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/turbomanage.wordpress.com/427/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=turbomanage.wordpress.com&blog=341230&post=427&subd=turbomanage&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://turbomanage.wordpress.com/2009/10/29/how-to-clean-up-muddy-water/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/614e792082e78cd852d0b60ae0f28bef?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">turbomanage</media:title>
		</media:content>

		<media:content url="http://turbomanage.files.wordpress.com/2009/10/img_4629a.jpg?w=300" medium="image">
			<media:title type="html">After</media:title>
		</media:content>

		<media:content url="http://turbomanage.files.wordpress.com/2009/10/img_4629y.jpg?w=300" medium="image">
			<media:title type="html">Before</media:title>
		</media:content>
	</item>
		<item>
		<title>CloudCamp Atlanta tonight</title>
		<link>http://turbomanage.wordpress.com/2009/10/28/cloudcamp-atlanta-tonight/</link>
		<comments>http://turbomanage.wordpress.com/2009/10/28/cloudcamp-atlanta-tonight/#comments</comments>
		<pubDate>Wed, 28 Oct 2009 15:38:27 +0000</pubDate>
		<dc:creator>David Chandler</dc:creator>
				<category><![CDATA[AppEngine]]></category>

		<guid isPermaLink="false">http://turbomanage.wordpress.com/?p=425</guid>
		<description><![CDATA[I&#8217;m planning to do a short unconference session on securing AppEngine services with gwt-dispatch and unit testing with AppEngine and gwt-dispatch at tonight&#8217;s CloudCamp Atlanta.
I&#8217;m looking forward to meeting some local AppEngine developers, as I&#8217;ve been feeling awfully close to the bleeding edge lately. I routinely find that solutions have been posted on AppEngine forums [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=turbomanage.wordpress.com&blog=341230&post=425&subd=turbomanage&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I&#8217;m planning to do a short unconference session on <a href="http://turbomanage.wordpress.com/2009/10/07/calling-appengine-securely-from-gwt-with-gwt-dispatch/">securing AppEngine services with gwt-dispatch</a> and <a href="http://turbomanage.wordpress.com/2009/10/20/how-to-unit-test-gwt-dispatch-actionhandlers-with-guice/">unit testing with AppEngine and gwt-dispatch</a> at tonight&#8217;s <a href="http://www.cloudcamp.com/?page_id=1288">CloudCamp Atlanta</a>.</p>
<p>I&#8217;m looking forward to meeting some local AppEngine developers, as I&#8217;ve been feeling awfully close to the bleeding edge lately. I routinely find that solutions have been posted on AppEngine forums just eight days ago, and sometimes don&#8217;t exist yet. I really need <a href="http://code.google.com/appengine/docs/java/taskqueue/">TaskQueue</a> in order to send out emails, which is still experimental in Labs, and would even more like to use <a href="http://code.google.com/appengine/articles/deferred.html">deferred.defer</a> (less than two weeks old), but alas, it&#8217;s currently only available for Python.</p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/turbomanage.wordpress.com/425/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/turbomanage.wordpress.com/425/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/turbomanage.wordpress.com/425/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/turbomanage.wordpress.com/425/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/turbomanage.wordpress.com/425/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/turbomanage.wordpress.com/425/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/turbomanage.wordpress.com/425/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/turbomanage.wordpress.com/425/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/turbomanage.wordpress.com/425/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/turbomanage.wordpress.com/425/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=turbomanage.wordpress.com&blog=341230&post=425&subd=turbomanage&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://turbomanage.wordpress.com/2009/10/28/cloudcamp-atlanta-tonight/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/614e792082e78cd852d0b60ae0f28bef?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">turbomanage</media:title>
		</media:content>
	</item>
	</channel>
</rss>