<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;AkUEQ384eSp7ImA9WxNUFEw.&quot;"><id>tag:blogger.com,1999:blog-8720550037867345187</id><updated>2009-11-05T21:50:02.131+11:00</updated><title>blogit ergo sum</title><subtitle type="html" /><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://peterwilliams97.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://peterwilliams97.blogspot.com/" /><link rel="hub" href="http://pubsubhubbub.appspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/8720550037867345187/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Peter Williams</name><uri>http://www.blogger.com/profile/09350055705252093886</uri><email>Peter.Williams.97@gmail.com</email></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>156</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><geo:lat>-37.75</geo:lat><geo:long>144.99</geo:long><link rel="self" href="http://feeds.feedburner.com/BlogitErgoSum" type="application/atom+xml" /><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2FBlogitErgoSum" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FBlogitErgoSum" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2FBlogitErgoSum" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/BlogitErgoSum" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FBlogitErgoSum" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FBlogitErgoSum" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FBlogitErgoSum" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:browserFriendly>Welcome to blogit ergo sum!</feedburner:browserFriendly><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry gd:etag="W/&quot;D0EGRX49cCp7ImA9WxNVF0U.&quot;"><id>tag:blogger.com,1999:blog-8720550037867345187.post-6822131504682688078</id><published>2009-10-27T06:26:00.000+11:00</published><updated>2009-10-29T14:07:04.068+11:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-29T14:07:04.068+11:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="family history" /><title>My Time in Sweden</title><content type="html">I lived in Sweden from 1988 to 1991. Here is a map which showed where I lived in &lt;a href="http://en.wikipedia.org/wiki/Stortorget"&gt;Stortorget&lt;/a&gt; in Gamla Stan in Stockholm.&lt;br /&gt;
&lt;br /&gt;
&lt;iframe frameborder="0" height="350" marginheight="0" marginwidth="0" scrolling="no" src="http://maps.google.com.au/maps?f=q&amp;amp;source=s_q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=stortorget,+gamla+stan&amp;amp;sll=59.328242,18.089161&amp;amp;sspn=0.022943,0.084629&amp;amp;gl=au&amp;amp;ie=UTF8&amp;amp;t=h&amp;amp;ll=59.327191,18.076458&amp;amp;spn=0.015325,0.036478&amp;amp;z=14&amp;amp;output=embed" width="425"&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;small&gt;&lt;a href="http://maps.google.com.au/maps?f=q&amp;amp;source=embed&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=stortorget,+gamla+stan&amp;amp;sll=59.328242,18.089161&amp;amp;sspn=0.022943,0.084629&amp;amp;gl=au&amp;amp;ie=UTF8&amp;amp;t=h&amp;amp;ll=59.327191,18.076458&amp;amp;spn=0.015325,0.036478&amp;amp;z=14" style="color: blue; text-align: left;"&gt;View Larger Map&lt;/a&gt;&lt;/small&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I lived in the red building in the two left photos below which are taken from Stortorget. The photo on the right is of the same building taken from&amp;nbsp;Kåkbrinken, the alley to the left the red building.&lt;br /&gt;
&lt;small&gt;&lt;a href="http://maps.google.com.au/maps?f=q&amp;amp;source=embed&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=stortorget,+gamla+stan&amp;amp;sll=59.328242,18.089161&amp;amp;sspn=0.022943,0.084629&amp;amp;gl=au&amp;amp;ie=UTF8&amp;amp;t=h&amp;amp;ll=59.327191,18.076458&amp;amp;spn=0.015325,0.036478&amp;amp;z=14" style="color: blue; text-align: left;"&gt;&lt;/a&gt;&lt;/small&gt;

&lt;a href="http://www.flickr.com/photos/miltoncorrea/2051258841/" title="photo sharing"&gt;&lt;img alt="" src="http://farm3.static.flickr.com/2011/2051258841_9ad86caf59_m.jpg" style="border: solid 2px #000000;" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://www.flickr.com/photos/roberto1956/3110481831/" title="photo sharing"&gt;&lt;img alt="" src="http://farm4.static.flickr.com/3021/3110481831_31a07d8f70_m.jpg" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 2px; border-left-color: rgb(0, 0, 0); border-left-style: solid; border-left-width: 2px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 2px; border-top-color: rgb(0, 0, 0); border-top-style: solid; border-top-width: 2px;" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://www.flickr.com/photos/lenora/17081398/" title="photo sharing"&gt;&lt;img alt="" src="http://farm1.static.flickr.com/13/17081398_ae4c2f1e54_m.jpg" style="border: solid 2px #000000;" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
The photo on the left below is the main street in Gamla Stan and the photo on the centr is of the Grand Hotel as seen from the shore of Gamla Stan and the photo on the right is Karloniska Hospital where I worked.&lt;br /&gt;
&lt;a href="http://www.flickr.com/photos/calvaryzone/118483879/" title="photo sharing"&gt;&lt;img alt="" src="http://farm1.static.flickr.com/43/118483879_ce720ed523_m.jpg" style="border: solid 2px #000000;" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://www.flickr.com/photos/66538587@N00/82490855/" title="photo sharing"&gt;&lt;img alt="" src="http://farm1.static.flickr.com/42/82490855_a3a9fc712a_m.jpg" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 2px; border-left-color: rgb(0, 0, 0); border-left-style: solid; border-left-width: 2px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 2px; border-top-color: rgb(0, 0, 0); border-top-style: solid; border-top-width: 2px;" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://www.flickr.com/photos/toveo/2827805486/" title="photo sharing"&gt;&lt;img alt="" src="http://farm4.static.flickr.com/3086/2827805486_cc58851232_m.jpg" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 2px; border-left-color: rgb(0, 0, 0); border-left-style: solid; border-left-width: 2px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 2px; border-top-color: rgb(0, 0, 0); border-top-style: solid; border-top-width: 2px;" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
After I left Stockholm I moved to&amp;nbsp;Umeå which is shown on the left below. When I lived there I used to visit Vaasa in Finland shown on the right.&lt;br /&gt;
&lt;a href="http://www.flickr.com/photos/arendpictures/928126782/" title="photo sharing"&gt;&lt;img alt="" src="http://farm2.static.flickr.com/1071/928126782_12281d602e_m.jpg" style="border: solid 2px #000000;" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://www.flickr.com/photos/foide/3087146334/" title="photo sharing"&gt;&lt;img alt="" src="http://farm4.static.flickr.com/3198/3087146334_a9d4edb4ef_m.jpg" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 2px; border-left-color: rgb(0, 0, 0); border-left-style: solid; border-left-width: 2px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 2px; border-top-color: rgb(0, 0, 0); border-top-style: solid; border-top-width: 2px;" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
When I lived in Sweden I took vacations in Norway including Lofoten on the left and&amp;nbsp;Tromsø in the centre of the row of photos below. I also took the Hurtigruten&lt;br /&gt;
&lt;a href="http://www.flickr.com/photos/16173303@N04/2750315635/" title="photo sharing"&gt;&lt;img alt="" src="http://farm4.static.flickr.com/3118/2750315635_a875ba2f50_m.jpg" style="border: solid 2px #000000;" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://www.flickr.com/photos/squiz1210/346977907/" title="photo sharing"&gt;&lt;img alt="" src="http://farm1.static.flickr.com/162/346977907_b0b4d59ad7_m.jpg" style="border-bottom-color: rgb(0, 0, 0); border-bottom-style: solid; border-bottom-width: 2px; border-left-color: rgb(0, 0, 0); border-left-style: solid; border-left-width: 2px; border-right-color: rgb(0, 0, 0); border-right-style: solid; border-right-width: 2px; border-top-color: rgb(0, 0, 0); border-top-style: solid; border-top-width: 2px;" /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://www.flickr.com/photos/klutts/128167164/" title="photo sharing"&gt;&lt;img alt="" src="http://farm1.static.flickr.com/1/128167164_f9c831ded1_m.jpg" style="border: solid 2px #000000;" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;hr align="center" width="70%" /&gt;
&lt;div style="text-align: center;"&gt;
&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Photo Credits&lt;/span&gt;&lt;/div&gt;
&lt;a href="http://www.flickr.com/people/miltoncorrea/"&gt;Milton CJ&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.flickr.com/photos/roberto1956/3110481831/"&gt;StortTorget - Gamla Stan&lt;/a&gt;&amp;nbsp;Originally uploaded by&amp;nbsp;&lt;a href="http://www.flickr.com/people/roberto1956/"&gt;Roberto1956&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.flickr.com/photos/lenora/17081398/"&gt;Gamla Stan&lt;/a&gt;&amp;nbsp;Originally uploaded by&amp;nbsp;&lt;a href="http://www.flickr.com/people/lenora/"&gt;L e n o r a&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.flickr.com/photos/calvaryzone/118483879/"&gt;Downtown Gamla Stan&lt;/a&gt;&amp;nbsp;Originally uploaded by&amp;nbsp;&lt;a href="http://www.flickr.com/people/calvaryzone/"&gt;calvaryzone&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.flickr.com/photos/arendpictures/928126782/"&gt;2007_0331finlandsweden0120&lt;/a&gt;&amp;nbsp;Originally uploaded by&amp;nbsp;&lt;a href="http://www.flickr.com/people/arendpictures/"&gt;Arend&amp;nbsp;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.flickr.com/photos/toveo/2827805486/"&gt;Karolinska Hospital park on a sunny morning&lt;/a&gt;&amp;nbsp;Originally uploaded by&amp;nbsp;&lt;a href="http://www.flickr.com/people/toveo/"&gt;tove!&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.flickr.com/people/arendpictures/"&gt;Kuester&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.flickr.com/photos/16173303@N04/2750315635/"&gt;Lofoten ... fjord panorama (HDR)&lt;/a&gt;&amp;nbsp;Originally uploaded by&amp;nbsp;&lt;a href="http://www.flickr.com/people/16173303@N04/"&gt;nigel_xf&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.flickr.com/photos/squiz1210/346977907/"&gt;From our hotel window - taken at midday (that's the moon!)&lt;/a&gt;&amp;nbsp;Originally uploaded by&amp;nbsp;&lt;a href="http://www.flickr.com/people/squiz1210/"&gt;Squiz1210 (probably back in January 09!)&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.flickr.com/photos/klutts/128167164/"&gt;Hurtigruten&lt;/a&gt;&amp;nbsp;Originally uploaded by&amp;nbsp;&lt;a href="http://www.flickr.com/people/klutts/"&gt;klutts&lt;/a&gt;&lt;br /&gt;
&amp;nbsp;&lt;a href="http://www.flickr.com/photos/foide/3087146334/"&gt;Vaasa in december 1&lt;/a&gt;&amp;nbsp;Originally uploaded by&amp;nbsp;&lt;a href="http://www.flickr.com/people/foide/"&gt;Foide&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.flickr.com/photos/66538587@N00/82490855/"&gt;djurgarden&lt;/a&gt;&amp;nbsp;Originally uploaded by&amp;nbsp;&lt;a href="http://www.flickr.com/people/66538587@N00/"&gt;daniel dssd&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8720550037867345187-6822131504682688078?l=peterwilliams97.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/oblLuBxJ_F8mJgLnbGplImvavao/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/oblLuBxJ_F8mJgLnbGplImvavao/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/oblLuBxJ_F8mJgLnbGplImvavao/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/oblLuBxJ_F8mJgLnbGplImvavao/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=NF0NsapqtrI:YdR6J7-cls4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=NF0NsapqtrI:YdR6J7-cls4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=NF0NsapqtrI:YdR6J7-cls4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=NF0NsapqtrI:YdR6J7-cls4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=NF0NsapqtrI:YdR6J7-cls4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=NF0NsapqtrI:YdR6J7-cls4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=NF0NsapqtrI:YdR6J7-cls4:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=NF0NsapqtrI:YdR6J7-cls4:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=NF0NsapqtrI:YdR6J7-cls4:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=NF0NsapqtrI:YdR6J7-cls4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=NF0NsapqtrI:YdR6J7-cls4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=NF0NsapqtrI:YdR6J7-cls4:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=NF0NsapqtrI:YdR6J7-cls4:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogitErgoSum/~4/NF0NsapqtrI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://peterwilliams97.blogspot.com/feeds/6822131504682688078/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8720550037867345187&amp;postID=6822131504682688078" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8720550037867345187/posts/default/6822131504682688078?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8720550037867345187/posts/default/6822131504682688078?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BlogitErgoSum/~3/NF0NsapqtrI/my-time-in-sweden.html" title="My Time in Sweden" /><author><name>Peter Williams</name><uri>http://www.blogger.com/profile/09350055705252093886</uri><email>Peter.Williams.97@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="13199266468978924381" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><georss:point>59.3243062 18.0688252</georss:point><feedburner:origLink>http://peterwilliams97.blogspot.com/2009/09/my-time-in-sweden.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck4BQno4cSp7ImA9WxNWFk0.&quot;"><id>tag:blogger.com,1999:blog-8720550037867345187.post-7975951499582153954</id><published>2009-10-13T13:55:00.008+11:00</published><updated>2009-10-15T21:02:33.439+11:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-15T21:02:33.439+11:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Pattern Recognition" /><category scheme="http://www.blogger.com/atom/ns#" term="mobile" /><title>Machine Learning While I Work</title><content type="html">I am setting up &lt;a href="http://www.postfix.org/TLS_README.html#client_tls"&gt;Postfix&lt;/a&gt; so I have spare time as I try things out. This post is about the things I am reading or watching in the background.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://hercules.infotech.monash.edu.au/EII-CAC/"&gt;Taskforce on Context-Aware Computing&lt;/a&gt;&lt;br /&gt;
I went to a&amp;nbsp;lecture called &amp;nbsp;&lt;a href="https://www.acs.org.au/vic/index.cfm?action=event&amp;amp;area=9003&amp;amp;temID=eventdetails&amp;amp;eveID=10148598860936"&gt;Open Mobile Miner (OMM): A System for Real Time Mobile Data Analysis&lt;/a&gt;.&amp;nbsp;There is a video&amp;nbsp;&lt;a href="http://www.csse.monash.edu.au/~shonali/OMM/OMM-VideoDemo.asf"&gt;here&lt;/a&gt;, a description of OMM&amp;nbsp;&lt;a href="http://www-ai.cs.uni-dortmund.de/PROCEEDINGS/SIKDD2009/demos/D02-kdd09demo.pdf"&gt;here&lt;/a&gt;&amp;nbsp;and lecture slides &lt;a href="http://melbourne-mobility-sig.googlegroups.com/web/1st-Seminar-Oct-09-ACS-Mob-SIG-OMM.pdf?gda=mBKG_F4AAADxBFnGTxFEuFiei4W9wE3pySq_8OVEDIXBhXAec39pA4pxiiyIaEz2AUPUyM07c_VoZ9n0mJ2FR9aAiiZ8r3sxOhI5K8VDwPHDA0n0i2aByeUDNUu6Ev52K7sXoEgGoK8&amp;amp;pli=1"&gt;here&lt;/a&gt;&amp;nbsp;(pdf).&lt;br /&gt;
&lt;br /&gt;
Shonali Krishnaswamy's group are making software that does some analysis of data on a smart phone before uploading it, thereby reducing the phone's power consumption by reducing communications. Their examples include ECG output, traffic congestion metrics and taxi location data. The data in their examples is scalar and sampled at 0.5 Hz or less so it is hard to see why a simple store and forward scheme would not achieve much the same thing. Maybe I need to read their publications more deeply.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://videolectures.net/cikm08_norvig_slatuad/"&gt;
  &lt;img border="0/" src="http://videolectures.net/cikm08_norvig_slatuad/thumb.jpg" /&gt;
  &lt;br /&gt;Statistical Learning as the Ultimate Agile Development Tool&lt;/a&gt; by
Peter Norvig is a great overview of practical machine learning. The summary is &lt;b&gt;focus on the data, not the code&lt;/b&gt;. I cannot recommend this too highly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://videolectures.net/ssll09_reid_leth/"&gt;
  &lt;img border="0/" src="http://videolectures.net/ssll09_reid_leth/thumb.jpg" /&gt;
  &lt;br /&gt;Learning Theory&lt;/a&gt; by 
Mark Reid was an introduction to some theoretical aspects of machine learning presented in a summer school in Canberra in January 2009. Interesting but Peter Norvig is a hard act to follow.&lt;br /&gt;
&lt;br /&gt;
&lt;hr align="left" width="100%" /&gt;
Now some videos of how machine learning can be applied to models of the face.&lt;br /&gt;
&lt;br /&gt;
Changes of facial features on the of dominance, trustworthiness and competence dimensions in a computer model developed by &lt;a href="http://webscript.princeton.edu/~tlab/wp-content/publications/Todorov_PNAS2008.pdf"&gt;Oosterhof &amp;amp; Todorov&lt;/a&gt; (2008). 
&lt;iframe height="600" src="http://webscript.princeton.edu/~tlab/demonstrations/" width="100%"&gt;&amp;lt;p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;p&amp;gt;Your browser does not support iframes.&amp;lt;/p&amp;gt;
&amp;lt;/p&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/p&amp;gt;&lt;/iframe&gt;




&lt;br /&gt;
&lt;hr align="left" width="100%" /&gt;
&lt;br /&gt;
Now it is time to start watching a video on&amp;nbsp;distributed&amp;nbsp;computing&lt;br /&gt;
&lt;object height="300" width="400"&gt;&lt;param name="allowfullscreen" value="true" /&gt;




&lt;param name="allowscriptaccess" value="always" /&gt;




&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=6614042&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" /&gt;






&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=6614042&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;
&lt;a href="http://vimeo.com/6614042"&gt;Swarm: Distributed Computation in the Cloud&lt;/a&gt; from &lt;a href="http://vimeo.com/user2266455"&gt;Ian Clarke&lt;/a&gt; on &lt;a href="http://vimeo.com/"&gt;Vimeo&lt;/a&gt;.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8720550037867345187-7975951499582153954?l=peterwilliams97.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/IdUmPNLj3DfY3rPfsd1MdX7vBS4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IdUmPNLj3DfY3rPfsd1MdX7vBS4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/IdUmPNLj3DfY3rPfsd1MdX7vBS4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IdUmPNLj3DfY3rPfsd1MdX7vBS4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=1IPF2zhgnjg:1hbAr9IDuoE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=1IPF2zhgnjg:1hbAr9IDuoE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=1IPF2zhgnjg:1hbAr9IDuoE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=1IPF2zhgnjg:1hbAr9IDuoE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=1IPF2zhgnjg:1hbAr9IDuoE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=1IPF2zhgnjg:1hbAr9IDuoE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=1IPF2zhgnjg:1hbAr9IDuoE:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=1IPF2zhgnjg:1hbAr9IDuoE:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=1IPF2zhgnjg:1hbAr9IDuoE:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=1IPF2zhgnjg:1hbAr9IDuoE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=1IPF2zhgnjg:1hbAr9IDuoE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=1IPF2zhgnjg:1hbAr9IDuoE:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=1IPF2zhgnjg:1hbAr9IDuoE:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogitErgoSum/~4/1IPF2zhgnjg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://peterwilliams97.blogspot.com/feeds/7975951499582153954/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8720550037867345187&amp;postID=7975951499582153954" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8720550037867345187/posts/default/7975951499582153954?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8720550037867345187/posts/default/7975951499582153954?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BlogitErgoSum/~3/1IPF2zhgnjg/machine-learning-while-i-work.html" title="Machine Learning While I Work" /><author><name>Peter Williams</name><uri>http://www.blogger.com/profile/09350055705252093886</uri><email>Peter.Williams.97@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="13199266468978924381" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><georss:point>-37.8697919 145.0339286</georss:point><feedburner:origLink>http://peterwilliams97.blogspot.com/2009/10/machine-learning-while-i-work.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0ENRHw5fSp7ImA9WxNVF0U.&quot;"><id>tag:blogger.com,1999:blog-8720550037867345187.post-3959458602783484224</id><published>2009-09-18T06:40:00.000+10:00</published><updated>2009-10-29T14:08:15.225+11:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-29T14:08:15.225+11:00</app:edited><title>My First Upside Down Post</title><content type="html">˙ʇǝsdıɥɔ pǝsɐq ɯɹɐ s’ǝןɐɔsǝǝɹɟ 'uoƃɐɹpdɐus ɯɯoɔןɐnb 'ɯoʇɐ ןǝʇuı ˙sɹɐʍ ɹossǝɔoɹd ˙sʞooqʇǝu puɐ sǝuoɥd ʇɹɐɯs ɟo ǝɔuǝƃɹǝʌuoɔ ǝןqıssod ˙ǝƃuɐɥɔ ǝʌıɹp ןןıʍ ǝɔuǝɹǝɟɟıp ǝɔıɹd 000'1$ ˙sʌ 052$ ǝɥʇ ˙pǝʇıns-ןןǝʍ os ʇou sǝop pɹoʍ ʇɟosoɹɔıɯ ǝןıɥʍ pnoןɔ ǝɥʇ ɯoɹɟ ןןǝʍ sʞɹoʍ ʎpɐǝɹןɐ ǝɹɐʍʇɟos ɹǝɥʇo puɐ uozɐɯɐ 'ɯoɔ˙ǝɔɹoɟsǝןɐs 'ǝןƃooƃ ˙ǝɹɐʍʇɟos ʇɟosoɹɔıɯ ǝɥʇ doʇdɐן ǝɔɐןdǝɹ ʎɐɯ pnoןɔ + ʞooqʇǝu os ƃuıʇndɯoɔ pnoןɔ oʇ pǝʇıns-ןןǝʍ ǝɹɐ sʞooqʇǝu ˙ʇɟosoɹɔıɯ puɐ ןǝʇuı oʇ ʇsoɔ ʇɐǝɹƃ ʇɐ sǝןɐs doʇdɐן 0001$sn ǝzıןɐqıuuɐɔ ʎɐɯ sʞooqʇǝu 052$sn ɯɹǝʇ ɹǝƃuoן ǝɥʇ uı ʇnq ǝıd ɔd ǝɥʇ ƃuıʍoɹƃ ǝɹɐ sʞooqʇǝu ʎןʇuǝɹɹnɔ ¿uıɐɥɔ ǝnןɐʌ doʇdɐן puɐ ɔd ǝɥʇ oʇ op sʞooqʇǝu ןןıʍ ʇɐɥʍ ˙sǝןɐs ƃuıʇsıxǝ ɟo uoıʇɐzıןɐqıuuɐɔ
pnoןɔ ǝɥʇ oʇ ʇuǝɯǝʌoɯ ɟo sǝɔuǝnbǝsuoɔ ǝɯos sɹoʇıʇǝdɯoɔ ɹıǝɥʇ ɹǝʌo ǝƃɐʇuɐʌpɐ ƃuıɔıɹd ɐ ǝʌǝıɥɔɐ ןןıʍ sıɥʇ ǝpıʌoɹd uɐɔ oɥʍ sɹǝıɹɹɐɔ uoıʇɐɔıunɯɯoɔǝןǝʇ ǝɥʇ ˙suoıʇɔǝuuoɔ ʞɹoʍʇǝu ǝןqɐʇɹod puɐ ǝןqɐıןǝɹ 'ʇsɐɟ sǝɹınbǝɹ ƃuıʇndɯoɔ pnoןɔ ʎɥdɹnɯ ˙ɹɯ sʎɐs „'ɹǝʇʇǝq ʇnq ƃuıɥʇou uǝǝq s,ʇı 'dɯnɥ ƃuıuɹɐǝן ǝɥʇ ɹǝʌo ʇoƃ ǝʍ ǝɔuo ˙sǝƃɐʇuɐʌpɐsıp ןɐǝɹ ʎuɐ ɥʇıʍ dn ƃuıɯoɔ pǝssǝɹd-pɹɐɥ ǝq p,ı ˙ǝɹoɯ ʎuɐ suoıʇɐןןɐʇsuı ǝɹɐʍpɹɐɥ ןɐɔısʎɥd ɹoɟ ƃuıʇıɐʍ sʎɐp puɐ sɹnoɥ puǝds ʇ,uop ǝʍ„ ˙sɹǝʇndɯoɔ uʍo sʇı ɟo ǝuou ɥʇıʍ ʎuɐdɯoɔ ʇuǝɯdoןǝʌǝp qǝʍ ɐ ǝɯoɔǝq sɐɥ ʇı - ǝɹɐʍpɹɐɥ ןɐɔısʎɥd ɹoɟ ʇno ƃuıʞɹoɟ pǝddoʇs sɐɥ ʇı suɐǝɯ ɥɔıɥʍ 'ǝɔıʌɹǝs ןɐnʇɹıʌ ǝɥʇ ɹoɟ ɹnoɥ ɹǝd sʇuǝɔ 08 oʇ 01 sʎɐd ǝƃuɐɹo ʎɔınɾ ˙ǝɯoɔǝq sɐɥ ƃuıʇndɯoɔ pnoןɔ ɯɐǝɹʇsuıɐɯ ʍoɥ sǝʇɐɹʇsnןןı (9002 qǝɟ 02 ǝƃɐ ǝɥʇ) ɯɐǝɹʇsuıɐɯ ǝɥʇ spuǝɔsɐ ƃuıʇndɯoɔ pnoןɔ ”˙ƃuıʍoɹƃ ןןıʇs sı ןɐɹǝuǝƃ uı ƃ3“ ˙sʇdǝɔuoɔ pɹɐʍɹoɟ ʇɐ ןɐdıɔuıɹd 'ssnɐɹʇs ןןıʍ pıɐs ”'sʇods ʇɥƃıɹq ǝɹɐ ǝsǝɥʇ“˙˙˙ ˙pǝʌɹǝsqo ǝʌɐɥ sʇsʎןɐuɐ 'ǝɔuɐɥɔ ƃuıʇɥƃıɟ ɐ ǝʌɐɥ sɯǝpoɯ ƃ3 puɐ sdıɥɔ ɥʇooʇǝnןq puɐ ıɟ-ıʍ 'sdƃ ǝʞɐɯ oɥʍ sɹopuǝʌ puɐ — ɥʇʍoɹƃ ʇɐɥʇ ɟo ɥʇƃuǝɹʇs ǝɥʇ uo ʎɹɐʌ sʇsʎןɐuɐ — ɹɐǝʎ sıɥʇ ʍoɹƃ oʇ pǝʇɔǝɾoɹd ǝɹɐ sǝןɐs ǝuoɥdʇɹɐɯs ˙pɐǝɥɐ ɹɐǝʎ ǝɥʇ uı sʇods ʇɥƃıɹq ƃuıʞǝǝs puɐ sɥʇƃuǝɹʇs ǝɹoɔ oʇ ƃuıʞooן ǝɹɐ sɹopuǝʌ dıɥɔ ʇsoɯ 'ǝןıɥʍuɐǝɯ˙˙˙ ˙sʇǝʞɹɐɯ ʍǝu uǝdo oʇ ʎɐןd ǝuoɥd ʇɹɐɯs ɐ ƃuıɹɐdǝɹd ǝq oʇ pǝɹoɯnɹ sı ˙ɔuı ןןǝp ɹǝʞɐɯ ɔd ˙ǝuoɥdı s’˙ɔuı ǝןddɐ ʎq pǝʌɹǝs ʇǝʞɹɐɯ ǝɥʇ ɟo ǝɯos qɐɹƃ oʇ ƃuıdoɥ 'ʍoןs sǝʇɐɹ sǝןɐs ɔd sɐ spıɯ pǝʇǝƃɹɐʇ sɐɥ — ɹǝʞɐɯ dıɥɔ ʇsǝƃɹɐן s’pןɹoʍ ǝɥʇ — ˙dɹoɔ ןǝʇuı sɐ 'uoıʇıʇǝdɯoɔ ǝʌɐɥ ןןıʍ ɯɯoɔןɐnb˙˙˙spןǝɥpuɐɥ puɐ sdoʇdɐן uǝǝʍʇǝq dɐƃ ǝɔıɹd ǝɥʇ ǝƃpıɹq sʞooqʇǝu sɐ ǝƃɹns oʇ pǝʇɔǝɾoɹd ʎɹoƃǝʇɐɔ ɹǝʇʇɐן ǝɥʇ ɥʇıʍ 'sǝɔıʌǝp ʇǝuɹǝʇuı ǝןıqoɯ puɐ sʞooqʇǝu 'sʞooqǝʇou ɹoɟ ʇǝsdıɥɔ uoƃɐɹpdɐus sʇı uo sısɐɥdɯǝ pǝɔɐןd sɐɥ ɯɯoɔןɐnb 'ǝןıɥʍuɐǝɯ sdıɥɔ :ʇsɐɔǝɹoɟ ssǝןǝɹıʍ 9002 ssǝןǝɹıʍ ɹɔɹ sǝuıɥɔɐɯ dx sʍopuıʍ ɹo nʇunqn ʎןןɐnsn ǝɹɐ ʇɐɥʍ ƃuoɯɐ ǝɥɔıu ɐ puıɟ ןןıʍ ɯɹoɟʇɐןd ǝןıqoɯ ǝɔɹnos-uǝdo s’ǝןƃooƃ ʇɐɥʇ ƃuıʇʇǝq sı - ʎɐpoʇ ʇǝʞɹɐɯ ǝɥʇ uo sʞooqʇǝu ɟo ʎʇıɹoɾɐɯ ʇsɐʌ ǝɥʇ uı punoɟ ɹossǝɔoɹd 072u ɯoʇɐ ןǝʇuı ǝɥʇ ɹoɟ ǝןqısuodsǝɹ - ɹǝʞɐɯdıɥɔ ǝɥʇ ʇɐɥʇ sʇsǝƃƃns oɥʍ '”ǝɔɹnos ǝןqɐıןǝɹ“ s’ʇɐǝqǝɹnʇuǝʌ oʇ ƃuıpɹoɔɔɐ s’ʇɐɥʇ ˙ǝɹɐʍpɹɐɥ ʇǝsdıɥɔ ǝןqɐʇıns ɥʇıʍ sɹǝɹnʇɔɐɟnuɐɯ ʇɹoddns oʇ ƃuıɹɐdǝɹd sı puɐ '0102 ʇnoɥƃnoɹɥʇ puɐ 9002 ǝʇɐן uı sʞooqʇǝu pǝsɐq-pıoɹpuɐ ɟo ʎɹɹnןɟ ɐ ƃuıʇɔǝdxǝ sı ןǝʇuı sʞooqʇǝu pǝsɐq-pıoɹpuɐ ɟo ǝsıɹ ɹoɟ ƃuıʎpɐǝɹ ןǝʇuı ʞooqʇǝu pǝsɐq-pıoɹpuɐ ɟo ǝsıɹ ɹoɟ ƃuıʎpɐǝɹ ןǝʇuı ʎoʎ %6˙12– puɐ bob %7˙12– pǝuıןɔǝp sʇuǝɯdıɥs ʇıun ɹossǝɔoɹd ɔd ǝpıʍpןɹoʍ 'ɯoʇɐ ʇnoɥʇıʍ ˙ǝuıןɔǝp ɔıʇɐɯɐɹp pıoʌɐ ʇǝʞɹɐɯ ǝɥʇ dןǝɥ oʇ ɥƃnouǝ ʇou ʇnq ǝɔuɐɯɹoɟɹǝd ʇǝʞɹɐɯ ןןɐɹǝʌo ǝɥʇ uı ǝɔuǝɹǝɟɟıp ǝןqɐʇou ɐ ǝʞɐɯ oʇ pǝnuıʇuoɔ (,,sʞooqʇǝu,, sןןɐɔ ןǝʇuı ɥɔıɥʍ) sɔd ʞooqǝʇou-ıuıɯ ɹoɟ ɹossǝɔoɹd ɯoʇɐ s,ןǝʇuı ˙˙˙ ؛(ʎoʎ) ɹɐǝʎ ɹǝʌo ɹɐǝʎ %4˙11– puɐ (bob) ɹǝʇɹɐnb ɹǝʌo ɹǝʇɹɐnb %0˙71– pǝuıןɔǝp sʇuǝɯdıɥs ʇıun ɹossǝɔoɹd ɔd ǝpıʍpןɹoʍ '80b4 uı 80b4 uı sʞooqʇǝu oʇ sdoʇdɐן sʍopuıʍ ɯoɹɟ ǝʌoɯ  sıɥʇ ʇɹoddns oʇ sǝıɹoʇs ǝɯos ǝɹɐ ǝɹǝɥ ˙ʎʇıןıqoɯ puɐ ʎɹʇsǝɔuɐ ǝuoɥd ɹıǝɥʇ ɯoɹɟ sǝɯoɔ ʇɐɥʇ uoıʇdɯnsuoɔ ɹǝʍod ʍoן ɟo sǝƃɐʇuɐʌpɐ ןɐuoıʇıppɐ ǝɥʇ ǝʌɐɥ ʎǝɥʇ  ˙sƃuıɹǝɟɟo pnoןɔ ɹǝɥʇo puɐ uoıʇɐzıןɐnʇɹıʌ 'sɐɐs 'sǝɔıʌɹǝs qǝʍ ɹoɟ sʇuǝıןɔ ǝʇɐnbǝpɐ ǝʞɐɯ ǝuoɥd ʇɹɐɯs ǝןqɐdɐɔ ʎɹǝʌ puɐ sʞooqʇǝu ƃ3  ˙sǝıƃǝʇɐɹʇs ƃuıʇndɯoɔ doʇʞsǝp pǝnsɹnd ʇou ǝʌɐɥ puɐ sǝɔıʌɹǝs ɟo sǝdʎʇ ǝsǝɥʇ uo ʎןǝɹıʇuǝ sǝssǝuısnq ɹıǝɥʇ pǝsɐq ǝʌɐɥ oɥʍ ɯoɔ˙ǝɔɹoɟsǝןɐs puɐ ǝɹɐʍɯʌ 'ǝןƃooƃ sɐ ɥɔns sǝıuɐdɯoɔ ʎq uǝʌıɹp uǝǝq sɐɥ ʇuǝɯdoןǝʌǝp ɹıǝɥʇ ˙sɹɐǝʎ 01 ʇsɐן ǝɥʇ uı ǝʌıʇɔǝɟɟǝ ʎןɥƃıɥ ǝɯoɔǝq ǝʌɐɥ  ǝsǝɥʇ ɟo ʇsoɯ ˙ suoıʇɐɔıןddɐ qǝʍ puɐ  sɐɐs 'uoıʇɐzıןɐnʇɹıʌ ƃuıpnןɔuı sǝɔıʌɹǝs pnoןɔ ɟo sǝdʎʇ ʎuɐɯ ǝɹɐ ǝɹǝɥʇ ˙uoıʇɐzıuɐƃɹo uɐ ɥƃnoɹɥʇ pǝʇɐɔıןdǝɹ ǝq oʇ pǝǝu ʇou sǝop ǝƃɐɹoʇs ʞsıp ʎʇıןıqɐıןǝɹ-ɥƃıɥ sɐ ɥɔns ǝɹnʇɔnɹʇsɐɹɟuı ǝʌısuǝdxǝ ʇɐɥʇ ʇıɟǝuǝq ןɐuoıʇıppɐ ǝɥʇ sı ǝɹǝɥʇ ˙ʇuǝıɔıɟɟǝ ǝɹoɯ ɥɔnɯ sı ɹǝʌɹǝs ןɐɹʇuǝɔ ɐ uo ǝɹɐʍʇɟos ǝɥʇ ƃuıuunɹ ǝɹoɟǝɹǝɥʇ ˙%01 uɐɥʇ ssǝן ɥɔnɯ 'ʍoן ʎɹǝʌ sı ǝɹɐʍʇɟos sıɥʇ ɟo ǝƃɐsn ǝɔɹnosǝɹ ɹǝʇndɯoɔ ǝƃɐɹǝʌɐ ǝɥʇ ˙ǝʌısuodsǝɹ ǝq oʇ ǝɔɐɟɹǝʇuı ɹǝsn ǝɥʇ ʇuɐʍ noʎ puɐ suoıʇɐʇndɯoɔ ǝsuǝʇuı ǝɥʇ sǝop ʇı uǝɥʍ ʎɐp ɹǝd sǝʇnuıɯ ʍǝɟ ǝɥʇ 'ǝƃɐsn ʞɐǝd ʇɹoddns oʇ ƃuıʎɐd ǝɹɐ noʎ 'ʇı ʇɹoddns oʇ ǝɹɐʍpɹɐɥ ɔd ǝʌısuǝdxǝ ʎnq noʎ uǝɥʍ ˙ǝɯıʇ ǝɥʇ ɟo ʇsoɯ ƃuıɥʇou sǝop ʇı  ˙sǝןɔʎɔ ʎʇnp ʍoן ʎɹǝʌ sɐɥ 'sɔıɥdɐɹƃ ʎʇıןɐnb ɥƃıɥ ǝʞıן ǝɹɐʍʇɟos ǝʌısuǝʇuı ʎןןɐuoıʇɐʇndɯoɔ uǝʌǝ 'ǝɹɐʍʇɟos ʇuǝıןɔ ʇsoɯ  ˙sɹǝʇndɯoɔ ןɐuosɹǝd s,ǝןdoǝd ʎuɐɯ uo ʇı ƃuıop uɐɥʇ ɹǝısɐǝ sı uoıʇɐɔoן ןɐɔısʎɥd ǝuo uı ƃuıuunɹ ǝɹɐʍʇɟos ƃuıpɐɹƃdn puɐ ƃuıuıɐʇuıɐɯ ǝsnɐɔǝq uoıʇɐzıןɐɹʇuǝɔ ɥʇıʍ ʎןןɐɔıʇɐɯɐɹp sǝsɐǝɹɔǝp (oɔʇ) dıɥsɹǝuʍo ɟo ʇsoɔ ןɐʇoʇ ˙sʇuǝıןɔ ɹǝןןɐɯs ǝʌɐɥ puɐ ƃuıʇndɯoɔ ǝzıןɐɹʇuǝɔ-ǝɹ oʇ sı ʇı ǝsıɹdɹǝʇuǝ uı puǝɹʇ ɹoɾɐɯ ʇuǝɹɹnɔ ɐ&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8720550037867345187-3959458602783484224?l=peterwilliams97.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/hyFHyD-F4Mv7PxcHeaxZW4fSh9E/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hyFHyD-F4Mv7PxcHeaxZW4fSh9E/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/hyFHyD-F4Mv7PxcHeaxZW4fSh9E/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hyFHyD-F4Mv7PxcHeaxZW4fSh9E/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=qt2OKVy229w:dsnwHUTazrQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=qt2OKVy229w:dsnwHUTazrQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=qt2OKVy229w:dsnwHUTazrQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=qt2OKVy229w:dsnwHUTazrQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=qt2OKVy229w:dsnwHUTazrQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=qt2OKVy229w:dsnwHUTazrQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=qt2OKVy229w:dsnwHUTazrQ:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=qt2OKVy229w:dsnwHUTazrQ:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=qt2OKVy229w:dsnwHUTazrQ:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=qt2OKVy229w:dsnwHUTazrQ:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=qt2OKVy229w:dsnwHUTazrQ:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=qt2OKVy229w:dsnwHUTazrQ:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=qt2OKVy229w:dsnwHUTazrQ:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogitErgoSum/~4/qt2OKVy229w" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://peterwilliams97.blogspot.com/feeds/3959458602783484224/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8720550037867345187&amp;postID=3959458602783484224" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8720550037867345187/posts/default/3959458602783484224?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8720550037867345187/posts/default/3959458602783484224?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BlogitErgoSum/~3/qt2OKVy229w/my-first-upside-down-post.html" title="My First Upside Down Post" /><author><name>Peter Williams</name><uri>http://www.blogger.com/profile/09350055705252093886</uri><email>Peter.Williams.97@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="13199266468978924381" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><georss:point>-84.7060489350415 -112.5</georss:point><feedburner:origLink>http://peterwilliams97.blogspot.com/2009/10/my-first-upside-down-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkIEQHsyfCp7ImA9WxNQEUg.&quot;"><id>tag:blogger.com,1999:blog-8720550037867345187.post-512847791016530958</id><published>2009-09-15T06:10:00.000+10:00</published><updated>2009-09-17T13:35:01.594+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-17T13:35:01.594+10:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="google" /><title>Google Wave</title><content type="html">The has been a lot of news about&amp;nbsp;&lt;a href="http://wave.google.com/"&gt;Google Wave&lt;/a&gt;&amp;nbsp;this year.&lt;br /&gt;
&lt;br /&gt;
Wave &amp;nbsp;is Google's new browser-based integrated real-time multi-media collaboration system. As one collaborator types text, or adds a video it appears in the other collaborators' browsers. The sounds like&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;an online conferencing system like &lt;a href="http://en.wikipedia.org/wiki/WebEx"&gt;Webex&lt;/a&gt;, plus&lt;/li&gt;
&lt;li&gt;a collaborative version controlled document sharing system, a real-time &lt;a href="http://en.wikipedia.org/wiki/Wiki"&gt;Wiki&lt;/a&gt;, plus&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;always-on video conferencing plus&amp;nbsp;&lt;/li&gt;
&lt;li&gt;integrated communication like &lt;a href="http://en.wikipedia.org/wiki/Skype"&gt;Skype&lt;/a&gt;&amp;nbsp;, plus&lt;/li&gt;
&lt;li&gt;it is free and browser based (for&lt;a href="http://en.wikipedia.org/wiki/HTML_5"&gt; HTML 5&lt;/a&gt; capable browsers).&lt;/li&gt;
&lt;/ul&gt;
&lt;a href="http://www.pcmag.com/article2/0,2817,2347872,00.asp"&gt;PC Mag&lt;/a&gt; say a mobile version is in the works.&lt;br /&gt;
&lt;blockquote&gt;
Not surprisingly, &lt;a href="http://www.linkedin.com/profile?viewProfile=&amp;amp;key=16210386&amp;amp;trk=ape_f000001a"&gt;Rasmussen&lt;/a&gt; said he sees the mobile experience as one that's absolutely essential to the future of Wave, especially as more and more people generate and consume content while on the go. &lt;a href="http://peterwilliams9797.appspot.com/webapptest1?name=Vic+Gundotra&amp;amp;submit=Get"&gt;Gundotra&lt;/a&gt; also highlighted an on-stage demo where both an Android phone and an iPhone ran Wave via the Google Web Toolkit, proving that the browser is indeed the OS of the future.&lt;/blockquote&gt;
This sounds like a &lt;a href="http://peterwilliams97.blogspot.com/2009/04/future-of-ict.html"&gt;fixed/mobile convergence killer-app.&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
The mobile phone companies who sell usage based data plans and the companies who provide mobile phone and network infrastructure must be happy about this. (Contact &lt;a href="mailto:peter.williams.97@gmail.com?subject=I%20am%20interested%20in%20purchasing%20a%20copy%20of%20your%20MAP%20mobile%20data%20report"&gt;me&lt;/a&gt;&amp;nbsp;to inquire about purchasing my report on this subject).&lt;br /&gt;
&lt;br /&gt;
As is often the case, Tim O'Reilly has the most illuminating story I could find &amp;nbsp;in&amp;nbsp;&lt;a href="http://radar.oreilly.com/2009/05/google-wave-what-might-email-l.html"&gt;Google Wave: What Might Email Look Like If It Were Invented Today?&lt;/a&gt;&lt;br /&gt;
&lt;blockquote&gt;
We were excited to join Google and help create what would become Google Maps. But we also started thinking about what might come next for us after maps.
As always, Jens came up with the answer: communication. He pointed out that two of the most spectacular successes in digital communication, email and instant messaging, were originally designed in the '60s to imitate analog formats — email mimicked snail mail, and IM mimicked phone calls. Since then, so many different forms of communication had been invented — blogs, wikis, collaborative documents, etc. — and computers and networks had dramatically improved. So Jens proposed a new communications model that presumed all these advances as a starting point....&lt;/blockquote&gt;
&lt;blockquote&gt;
We started with a set of tough questions:
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Why do we have to live with divides between different types of communication — email versus chat, or conversations versus documents?&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Could a single communications model span all or most of the systems in use on the web today, in one smooth continuum?&amp;nbsp;&lt;/li&gt;
&lt;li&gt;How simple could we make it?&amp;nbsp;&lt;/li&gt;
&lt;li&gt;What if we tried designing a communications system that took advantage of computers' current abilities, rather than imitating non-electronic forms? &amp;nbsp;&amp;nbsp;...&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;span style="font-weight: bold;"&gt;Is it a particle or a wave? It's both.&lt;/span&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;
First generation email/IM integration let you see when someone was online, and opt to instant message someone rather than send them an email. Wave simply erases the distinction.&lt;/blockquote&gt;
&lt;blockquote&gt;
If both people are online at the same time, a wave acts just like an instant message -- except that you see each character as it is typed, just like in&amp;nbsp;&lt;a href="http://www.codingmonkeys.de/subethaedit/"&gt;&lt;span style="color: black; text-decoration: none;"&gt;subethaedit&lt;/span&gt;&lt;/a&gt;. "In our experience, a lot of time in IM is spent waiting for the other person to press&lt;/blockquote&gt;
&lt;blockquote&gt;
&amp;nbsp;It's both. First generation email/IM integration let you see when someone was online, and opt to instant message someone rather than send them an email. Wave simply erases the distinction. If both people are online at the same time, a wave acts just like an instant message -- except that you see each character as it is typed, just like in subethaedit. "In our experience, a lot of time in IM is spent waiting for the other person to press&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;span style="font-style: italic;"&gt;A key point here is that Google's relentless focus on reducing the latency of online actions is bringing the online experience closer and closer to our real world experience of face-to-face communication&lt;/span&gt;&lt;span style="font-style: italic;"&gt;. When you're talking with someone, you know what someone is saying before they finish their sentence. You can respond, or even finish their sentence for them. So too with Wave.&lt;/span&gt;&lt;/blockquote&gt;
See also&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.waveprotocol.org/"&gt;Federation Protocol&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://code.google.com/apis/wave/guide.html"&gt;Google Wave API Overview&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;

&lt;td&gt;&lt;object height="295" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/v_UyVmITiYQ&amp;hl=en&amp;fs=1&amp;rel=0&amp;color1=0x5d1719&amp;color2=0xcd311b"&gt;







&lt;/param&gt;
&lt;param name="allowFullScreen" value="true"&gt;







&lt;/param&gt;
&lt;param name="allowscriptaccess" value="always"&gt;







&lt;/param&gt;
&lt;embed src="http://www.youtube.com/v/v_UyVmITiYQ&amp;hl=en&amp;fs=1&amp;rel=0&amp;color1=0x5d1719&amp;color2=0xcd311b" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="295"&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;/td&gt;


&lt;/tr&gt;
&lt;tr&gt;

&lt;td&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/55JA6_mm-jE&amp;hl=en&amp;fs=1"&gt;














&lt;/param&gt;
&lt;param name="allowFullScreen" value="true"&gt;














&lt;/param&gt;
&lt;param name="allowscriptaccess" value="always"&gt;














&lt;/param&gt;
&lt;embed src="http://www.youtube.com/v/55JA6_mm-jE&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;/td&gt;

&lt;td&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/RIAgPM7EVZk&amp;hl=en&amp;fs=1"&gt;














&lt;/param&gt;
&lt;param name="allowFullScreen" value="true"&gt;














&lt;/param&gt;
&lt;param name="allowscriptaccess" value="always"&gt;














&lt;/param&gt;
&lt;embed src="http://www.youtube.com/v/RIAgPM7EVZk&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;/td&gt;

&lt;/tr&gt;
&lt;tr&gt;

 &lt;td&gt;&lt;object height="295" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/3ykZYKCK7AM&amp;hl=en&amp;fs=1&amp;rel=0&amp;color1=0x5d1719&amp;color2=0xcd311b"&gt;
















&lt;/param&gt;
&lt;param name="allowFullScreen" value="true"&gt;
















&lt;/param&gt;
&lt;param name="allowscriptaccess" value="always"&gt;
















&lt;/param&gt;
&lt;embed src="http://www.youtube.com/v/3ykZYKCK7AM&amp;hl=en&amp;fs=1&amp;rel=0&amp;color1=0x5d1719&amp;color2=0xcd311b" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="295"&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;/td&gt;

&lt;td&gt;&lt;object height="295" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Sx3Fpw0XCXk&amp;hl=en&amp;fs=1&amp;rel=0&amp;color1=0x5d1719&amp;color2=0xcd311b"&gt;
















&lt;/param&gt;
&lt;param name="allowFullScreen" value="true"&gt;
















&lt;/param&gt;
&lt;param name="allowscriptaccess" value="always"&gt;
















&lt;/param&gt;
&lt;embed src="http://www.youtube.com/v/Sx3Fpw0XCXk&amp;hl=en&amp;fs=1&amp;rel=0&amp;color1=0x5d1719&amp;color2=0xcd311b" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="295"&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;/td&gt;


&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8720550037867345187-512847791016530958?l=peterwilliams97.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Wx5jP6h7QpXq5jUSmV80T6v6D9s/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Wx5jP6h7QpXq5jUSmV80T6v6D9s/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Wx5jP6h7QpXq5jUSmV80T6v6D9s/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Wx5jP6h7QpXq5jUSmV80T6v6D9s/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=Xya3ZxRtTyg:wRazN3vzo64:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=Xya3ZxRtTyg:wRazN3vzo64:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=Xya3ZxRtTyg:wRazN3vzo64:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=Xya3ZxRtTyg:wRazN3vzo64:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=Xya3ZxRtTyg:wRazN3vzo64:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=Xya3ZxRtTyg:wRazN3vzo64:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=Xya3ZxRtTyg:wRazN3vzo64:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=Xya3ZxRtTyg:wRazN3vzo64:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=Xya3ZxRtTyg:wRazN3vzo64:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=Xya3ZxRtTyg:wRazN3vzo64:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=Xya3ZxRtTyg:wRazN3vzo64:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=Xya3ZxRtTyg:wRazN3vzo64:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=Xya3ZxRtTyg:wRazN3vzo64:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogitErgoSum/~4/Xya3ZxRtTyg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://peterwilliams97.blogspot.com/feeds/512847791016530958/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8720550037867345187&amp;postID=512847791016530958" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8720550037867345187/posts/default/512847791016530958?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8720550037867345187/posts/default/512847791016530958?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BlogitErgoSum/~3/Xya3ZxRtTyg/google-wave.html" title="Google Wave" /><author><name>Peter Williams</name><uri>http://www.blogger.com/profile/09350055705252093886</uri><email>Peter.Williams.97@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="13199266468978924381" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><georss:point>-33.828131 151.230233</georss:point><feedburner:origLink>http://peterwilliams97.blogspot.com/2009/05/google-wave.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkUDSHw7fyp7ImA9WxNQEUg.&quot;"><id>tag:blogger.com,1999:blog-8720550037867345187.post-7077735578040115202</id><published>2009-09-14T07:01:00.000+10:00</published><updated>2009-09-17T13:31:19.207+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-17T13:31:19.207+10:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="mobile" /><title>What I need from a 3G Netbook</title><content type="html">I could use one know for&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;working on the train&lt;/li&gt;
&lt;li&gt;working at cafes while waiting for the kids&lt;/li&gt;
&lt;li&gt;working in the country while visiting friends and family&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
My PC and laptop seem like overkill for researching on the web, emailing, writing reports and building a few models in a spreadsheet. They also use a lot of electricity and take up space.&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;div&gt;
To be an effective replacement for the PC and laptop, a netbook would need to have&lt;/div&gt;
&lt;div&gt;
&lt;ol&gt;
&lt;li&gt;Be reasonably priced. $200 would be nice.&lt;/li&gt;
&lt;li&gt;Have a reasonably priced connection plan.&lt;/li&gt;
&lt;li&gt;Have access to cheap or free software&lt;/li&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Web browser&lt;/li&gt;
&lt;li&gt;Word processor&lt;/li&gt;
&lt;li&gt;Drawing tools&lt;/li&gt;
&lt;li&gt;Spreadsheet&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;Reliable connection with good coverage.&lt;/li&gt;
&lt;li&gt;Good battery life. 6 hours would be nice&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
Basic set of applications&lt;/div&gt;
&lt;/div&gt;
&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;
&lt;ol&gt;
&lt;li&gt;Gmail with tasks&lt;/li&gt;
&lt;li&gt;Google calender&lt;/li&gt;
&lt;li&gt;Google Docs&lt;/li&gt;
&lt;li&gt;GIT for source code management&lt;/li&gt;
&lt;li&gt;YUML&lt;/li&gt;
&lt;li&gt;Ubuntu or Windows XP with cygwin&lt;/li&gt;
&lt;li&gt;Gnu tools&lt;/li&gt;
&lt;li&gt;VNC or WRD&lt;/li&gt;
&lt;li&gt;ssh&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
That would get me started. It would be nice to &amp;nbsp;have Eclipse and a local word processor but running these over a remote shell would be more than adequate. I worked that way with all my heavy tools on VMware instances for years and it worked well. The VMware instance were hosted in a data center and backed up regularly&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8720550037867345187-7077735578040115202?l=peterwilliams97.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/FW1aikxo_vMWeWvM7J3PcK3fTLs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/FW1aikxo_vMWeWvM7J3PcK3fTLs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/FW1aikxo_vMWeWvM7J3PcK3fTLs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/FW1aikxo_vMWeWvM7J3PcK3fTLs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=QGzd4zGxdCg:HUC3lkyoSVE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=QGzd4zGxdCg:HUC3lkyoSVE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=QGzd4zGxdCg:HUC3lkyoSVE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=QGzd4zGxdCg:HUC3lkyoSVE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=QGzd4zGxdCg:HUC3lkyoSVE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=QGzd4zGxdCg:HUC3lkyoSVE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=QGzd4zGxdCg:HUC3lkyoSVE:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=QGzd4zGxdCg:HUC3lkyoSVE:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=QGzd4zGxdCg:HUC3lkyoSVE:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=QGzd4zGxdCg:HUC3lkyoSVE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=QGzd4zGxdCg:HUC3lkyoSVE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=QGzd4zGxdCg:HUC3lkyoSVE:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=QGzd4zGxdCg:HUC3lkyoSVE:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogitErgoSum/~4/QGzd4zGxdCg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://peterwilliams97.blogspot.com/feeds/7077735578040115202/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8720550037867345187&amp;postID=7077735578040115202" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8720550037867345187/posts/default/7077735578040115202?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8720550037867345187/posts/default/7077735578040115202?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BlogitErgoSum/~3/QGzd4zGxdCg/what-i-need-from-3g-netbook.html" title="What I need from a 3G Netbook" /><author><name>Peter Williams</name><uri>http://www.blogger.com/profile/09350055705252093886</uri><email>Peter.Williams.97@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="13199266468978924381" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><georss:point>-34.611781 -58.417309</georss:point><feedburner:origLink>http://peterwilliams97.blogspot.com/2009/09/what-i-need-from-3g-netbook.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkcHRnc8fCp7ImA9WxNRGE8.&quot;"><id>tag:blogger.com,1999:blog-8720550037867345187.post-5072934545298852851</id><published>2009-09-12T06:04:00.000+10:00</published><updated>2009-09-13T15:33:57.974+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-13T15:33:57.974+10:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="behavior" /><category scheme="http://www.blogger.com/atom/ns#" term="blogging" /><title>Typealyzer Analysis of Blogit Ergo Sum</title><content type="html">&lt;br /&gt;
&lt;div style="-webkit-background-clip: initial; -webkit-background-origin: initial; background-attachment: initial; background-color: white; background-image: initial; background-position: initial initial; background-repeat: initial; font-family: Verdana, Arial, sans-serif; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left;"&gt;
&lt;div id="headernavigation" style="font-size: 0.8em; margin-bottom: 0px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 0px; text-align: right; width: 760px;"&gt;
&lt;a href="http://typealyzer.com/?page_id=76" style="color: #0066cc; text-decoration: none;"&gt;About&lt;/a&gt;&amp;nbsp;|&amp;nbsp;&lt;a href="http://blog.typealyzer.com/" style="color: #0066cc; text-decoration: none;"&gt;Blog&lt;/a&gt;&amp;nbsp;|&amp;nbsp;&lt;a href="http://typealyzer.ning.com/" style="color: #0066cc; text-decoration: none;"&gt;Community&lt;/a&gt;&lt;/div&gt;
&lt;div id="page" style="background-color: white; margin-bottom: 0px; margin-left: auto; margin-right: auto; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 760px;"&gt;
&lt;div class="narrowcolumn" id="content" style="border-bottom-color: rgb(170, 170, 170); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(170, 170, 170); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(170, 170, 170); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(170, 170, 170); border-top-style: solid; border-top-width: 1px; font-size: 1em; padding-bottom: 10px; padding-left: 10px; padding-right: 10px; padding-top: 10px; width: 740px;"&gt;
The analysis indicates that the author of&lt;br /&gt;
&lt;a href="http://peterwilliams97.blogspot.com/" style="color: #0066cc; text-decoration: none;" target="_blank"&gt;http://peterwilliams97.blogspot.com&lt;/a&gt;&lt;br /&gt;
is of the type:&lt;br /&gt;
&lt;h2 style="color: #333333; font-family: Verdana, Arial, sans-serif; font-size: 1.6em; font-weight: bold; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 30px; text-decoration: none;"&gt;


INTJ - The Scientists&lt;/h2&gt;
&lt;div class="post" style="margin-bottom: 20px; text-align: left;"&gt;
&lt;div style="margin-top: 20px;"&gt;
&lt;div style="float: left;"&gt;
&lt;img src="http://www.typealyzer.com/images/INTJ.gif" style="cursor: move;" title="INTJ" /&gt;&lt;/div&gt;
&lt;div style="padding-top: 20px; text-align: left;"&gt;
The long-range thinking and individualistic type. They are especially good at looking at almost anything and figuring out a way of improving it - often with a highly creative and imaginative touch. They are intellectually curious and daring, but might be physically hesitant to try new things.&lt;br /&gt;
&lt;br /&gt;
The Scientists enjoy theoretical work that allows them to use their strong minds and bold creativity. Since they tend to be so abstract and theoretical in their communication they often have a problem communicating their visions to other people and need to learn patience and use concrete examples. Since they are extremely good at concentrating they often have no trouble working alone.&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="footer" style="font-size: small; margin-bottom: 0px; margin-left: auto; margin-right: auto; margin-top: 20px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: center; width: 760px;"&gt;
&lt;br /&gt;
&lt;code style="font: normal normal normal 1.1em/normal 'Courier New', Courier, Fixed;"&gt;&lt;object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" height="200" width="600"&gt;&lt;/object&gt;&amp;nbsp;&lt;/code&gt;&lt;a href="http://www.typealyzer.com/en/about?lang=en" style="color: #0066cc; text-decoration: none;"&gt;about&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8720550037867345187-5072934545298852851?l=peterwilliams97.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/bsM2lPxN5i0unBRFkCquHMnZgMo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/bsM2lPxN5i0unBRFkCquHMnZgMo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/bsM2lPxN5i0unBRFkCquHMnZgMo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/bsM2lPxN5i0unBRFkCquHMnZgMo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=JDXAm0Vu-FM:RduXzajhW-o:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=JDXAm0Vu-FM:RduXzajhW-o:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=JDXAm0Vu-FM:RduXzajhW-o:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=JDXAm0Vu-FM:RduXzajhW-o:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=JDXAm0Vu-FM:RduXzajhW-o:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=JDXAm0Vu-FM:RduXzajhW-o:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=JDXAm0Vu-FM:RduXzajhW-o:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=JDXAm0Vu-FM:RduXzajhW-o:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=JDXAm0Vu-FM:RduXzajhW-o:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=JDXAm0Vu-FM:RduXzajhW-o:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=JDXAm0Vu-FM:RduXzajhW-o:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=JDXAm0Vu-FM:RduXzajhW-o:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=JDXAm0Vu-FM:RduXzajhW-o:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogitErgoSum/~4/JDXAm0Vu-FM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://peterwilliams97.blogspot.com/feeds/5072934545298852851/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8720550037867345187&amp;postID=5072934545298852851" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8720550037867345187/posts/default/5072934545298852851?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8720550037867345187/posts/default/5072934545298852851?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BlogitErgoSum/~3/JDXAm0Vu-FM/typealyzer-analysis-of-blogit-ergo-sum.html" title="Typealyzer Analysis of Blogit Ergo Sum" /><author><name>Peter Williams</name><uri>http://www.blogger.com/profile/09350055705252093886</uri><email>Peter.Williams.97@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="13199266468978924381" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><georss:point>47.921378 106.90554</georss:point><feedburner:origLink>http://peterwilliams97.blogspot.com/2009/09/typealyzer-analysis-of-blogit-ergo-sum.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0ICQHg9cCp7ImA9WxNVEUo.&quot;"><id>tag:blogger.com,1999:blog-8720550037867345187.post-7279046310442119345</id><published>2009-09-11T22:52:00.001+10:00</published><updated>2009-10-22T11:32:41.668+11:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-22T11:32:41.668+11:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="behavior" /><title>The Pessimist on Your Team</title><content type="html">Pessimists have a bad &lt;a href="http://www.leadership-and-motivation-training.com/optimist.html"&gt;reputation&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Today I came across an article called &lt;a href="http://blogs.harvardbusiness.org/hmu/2009/09/how-to-handle-the-pessimist-on.html"&gt;How to Handle the Pessimist on Your Team&lt;/a&gt;&amp;nbsp;and it made me think how things can go really bad when you are running a complex project without being regularly subjected to healthy&amp;nbsp;scepticism. A little later in the day&amp;nbsp;I read Paul Krugman's &lt;a href="http://www.nytimes.com/2009/09/06/magazine/06Economic-t.html?_r=2&amp;amp;pagewanted=all"&gt;How Did Economists Get It So Wrong?&lt;/a&gt;&amp;nbsp;which described how the weight of opinion of economists had drowned out rational scepticism about the "efficient market" theory.&lt;br /&gt;
&lt;br /&gt;
Weight of opinion is a powerful force and when the majority of people in a group believe something is correct it can be a bit rough for the minority who don't share that belief.&lt;br /&gt;
&lt;br /&gt;
I once worked at a software company where some popular project managers told developers who did not believe their project schedules that they were being pessimists and they should cheer up. These project managers followed most of the strategies from&amp;nbsp;&lt;a href="http://blogs.harvardbusiness.org/hmu/2009/09/how-to-handle-the-pessimist-on.html"&gt;How to Handle the Pessimist on Your Team&lt;/a&gt;&amp;nbsp;and added a few of their own. They were pretty sweet about it and everybody including the pessimists ended up liking them. They got great results as well.&amp;nbsp;Hard work, personal charm and genuine consideration for others, all of which these guys had, are stronger forces than the things I am discussing in this post.&lt;br /&gt;
&lt;br /&gt;
After a few projects with these guys I started recording people's&amp;nbsp;estimated&amp;nbsp;completion dates at the start of projects and found that everyone was under-estimating the dates (the customer deliverables were in reasonable shape through schedule padding and some pragmatic last minute feature dropping). No surprises there, except that absolutely everybody including the "pessimists" underestimated the schedule. The interesting thing, and the point of this post, was how the estimates of the "pessimists" compared to the estimates of everyone else. The pessimists were the people whose estimated schedules were later than the consensus schedule estimate.&lt;br /&gt;
&lt;br /&gt;
My explanation for this at the time was that everybody was trying to estimate the schedule accurately and fit in with the rest of the team as well. Those who valued giving accurate estimates over fitting in with the team gave estimates closer to the correct date and further from the consensus date. Perceived pessimism correlated with divergence from the consensus schedule and was largely independent of the true schedule.&lt;br /&gt;
&lt;br /&gt;
That reminded me of how NPR thought it was being &lt;a href="http://www.npr.org/internedition/sum09/blog/?p=1451"&gt;unbiased&lt;/a&gt; when it was in the middle of American mainstream opinion which was roughly halfway between Republicans and Democrats. This automatic reinforcement of the consensus view inhibits clear thinking. If Colombus had been an NPR journalist he would have accepted the consensus view of his time that the Earth was flat and not sailed to the Carribean.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.bostonreview.net/BR26.3/sunstein.html"&gt;Reinforcement&lt;/a&gt;&amp;nbsp;of a core set of beliefs over time is one of the way organisations evolve. That is just how things are. Like most people I find myself drawn to organisations who share my core beliefs. However I find this tendency works against me when I need to be&amp;nbsp;objective, such as when I need to meet schedules for critical projects involving many unknowns. In these cases, when &lt;a href="http://bit.ly/4uv5K3"&gt;nature cannot be fooled&lt;/a&gt;, &amp;nbsp;I know of no substitute for people who speak their minds about what I am doing wrong rather than tell me what I want to hear. Steve McConnell created some &lt;a href="http://www.stevemcconnell.com/ieeesoftware/bp11.htm"&gt;procedures&lt;/a&gt;&amp;nbsp;for doing this that I have been using for over 10 years: the invaluable Top 10 Risks List, anonymous reporting channels (I prefer people trusting me that I appreciate them telling what I am doing wrong) and objective metrics from automated testing.&lt;br /&gt;
&lt;br /&gt;
I have spent my most of my working life at companies that have encouraged a diversity of opinion and the people I work with are usually comfortable with practices that attempt to discover objective truths, like the Steve McConnell procedures. In many cases they have &lt;a href="http://www.theglobeandmail.com/report-on-business/recognizing-the-emotional-side-of-business/article1331731/"&gt;wanted to know what they were doing wrong&lt;/a&gt; so they could improve. However I have also regularly encountered people in nominally technical roles who didn't like the "bad news" these procedures revealed. &amp;nbsp;So, in my experience, there are still some technical managers out there trying to manage perceptions instead of managing reality and leaving the perceptions to the marketing folks. That's why I get suspicious about the motives of technical managers who talk about managing the pessimists in their teams.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8720550037867345187-7279046310442119345?l=peterwilliams97.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/fHuYHedO4K2l9OyArBwD4LYIfAs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fHuYHedO4K2l9OyArBwD4LYIfAs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/fHuYHedO4K2l9OyArBwD4LYIfAs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fHuYHedO4K2l9OyArBwD4LYIfAs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=9oiM5hPNRVA:EoimG9C1kik:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=9oiM5hPNRVA:EoimG9C1kik:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=9oiM5hPNRVA:EoimG9C1kik:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=9oiM5hPNRVA:EoimG9C1kik:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=9oiM5hPNRVA:EoimG9C1kik:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=9oiM5hPNRVA:EoimG9C1kik:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=9oiM5hPNRVA:EoimG9C1kik:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=9oiM5hPNRVA:EoimG9C1kik:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=9oiM5hPNRVA:EoimG9C1kik:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=9oiM5hPNRVA:EoimG9C1kik:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=9oiM5hPNRVA:EoimG9C1kik:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=9oiM5hPNRVA:EoimG9C1kik:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=9oiM5hPNRVA:EoimG9C1kik:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogitErgoSum/~4/9oiM5hPNRVA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://peterwilliams97.blogspot.com/feeds/7279046310442119345/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8720550037867345187&amp;postID=7279046310442119345" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8720550037867345187/posts/default/7279046310442119345?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8720550037867345187/posts/default/7279046310442119345?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BlogitErgoSum/~3/9oiM5hPNRVA/pessimist.html" title="The Pessimist on Your Team" /><author><name>Peter Williams</name><uri>http://www.blogger.com/profile/09350055705252093886</uri><email>Peter.Williams.97@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="13199266468978924381" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><georss:point>-37.716384 145.006665</georss:point><feedburner:origLink>http://peterwilliams97.blogspot.com/2009/09/pessimist.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkQFQ3g7eyp7ImA9WxNQEUg.&quot;"><id>tag:blogger.com,1999:blog-8720550037867345187.post-5600105511523518047</id><published>2009-09-11T06:38:00.000+10:00</published><updated>2009-09-17T13:31:52.603+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-17T13:31:52.603+10:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="behavior" /><category scheme="http://www.blogger.com/atom/ns#" term="software development" /><title>The Sociology of Software Development Organisations</title><content type="html">Last week I traded some emails with a person (I will call him Dangerous) who still works at a company I wrote a recent &lt;a href="http://peterwilliams97.blogspot.com/2009/07/when-words-fail.html"&gt;post&lt;/a&gt; about. In that post I discussed an event where the company had benefited by acting on experimental evidence rather than following standard processes. I wondered if as a result of this event the company had learned to learn from experimental evidence, or if it had simply incorporotated the solution into its processes.&lt;br /&gt;
&lt;br /&gt;
Dangerous told me he remembered things differently. He remembered me introducing some software development practices and a style of doing software development. There was the continuous integration and testing with high coverage tests and static analysis thatI mentioned in my post and pervasive unit testing, short development cycles, short and focused daily meetings and automatic reporting of predictors of code maturity &amp;nbsp;that I didn't mention. My style was to focus on measurably working software and address customer needs. He liked this approach because he thought it was mostly what effective development teams did anyway and it was easier for him to work with an approach that was mostly right rather than spend time trying to fix what was wrong with the approach.&lt;br /&gt;
&lt;br /&gt;
Dangerous told me that after I left the company most of the practices I had introduced had been downplayed until a new GM arrived. The new GM was an &lt;a href="http://en.wikipedia.org/wiki/Agile_software_development"&gt;Agile&lt;/a&gt; enthusiast and he introduced Agile by re-using many of the tools my group had developed. Dangerous said he liked this approach too&amp;nbsp;because he thought it was mostly what effective developers did anyway and it was easier for him to work with an approach that was mostly right rather than spend time trying to make the approach perfect. He also told me what he didn't like: the buzzwords and the Agile consultants who knew the buzzwords but didn't understand large-scale software development. A small price to pay for sane management in his opinion.&lt;br /&gt;
&lt;br /&gt;
What the new GM did made sense to me but there is not much to learn from people you mostly agree with. This post is about why the organisation moved in a completely different direction between my (and other people's) somewhere-in-middle-management) approach and the new GM's top-down approach.&lt;br /&gt;
&lt;br /&gt;
The biggest resistance to the empirical customer-focused approach I favoured came from other technical middle managers. These middle managers had the key skills of management. They were well-liked &amp;nbsp;got things done, could deliver to a schedule, were well-organised and sensitive to risk, and were technically&amp;nbsp;smart&amp;nbsp;and good communicators.&lt;br /&gt;
&lt;br /&gt;
So how could people who seemed smarter than me take a direction that seemed to be less productive than the one I had left them with?&lt;br /&gt;
&lt;br /&gt;
My guess is that it only looked that way to me and the experienced developers, not to the other middle managers. Software development processes have at most a third-order effect on companies with mature software product lines. All the critical features have already have been added so new software development has only a second order effect on a company's success, and processes have only a second order effect in software development ,way below people. Once the development middle managers deal with the the first and second order issues they may not have time for the third-order issues like effective software development. And the higher they go up the organisational ladder in many development organisations, the less time they have. Thus increasing infuence correlates to decreasing interest. This is a rational reaction to an organisational structure.&lt;br /&gt;
&lt;br /&gt;
The second issue the middle-managers had with&amp;nbsp;the empirical approach was that it was disruptive to the organisational culture. This system I set up was automated and cut through a lot of the human&amp;nbsp;communications that dominated the development work at the time. The middle-managers had spent a lot time making the communications-intensive style work so learning a new style was going to be a lot of effort for them.&lt;br /&gt;
&lt;br /&gt;
Stated in that way, my approach sounds like an irrational reaction to my circumstances in the company. The best I can do to explain it is to trace it back to the time of previous GMs who were focussed on the first and second order issues of customer needs and retaining and motivating good staff. These GMs delegated all the third order stuff and that is how it became my ecological niche when I came across the technical problems of large scale software development.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://en.wikipedia.org/wiki/Organization#Organization_in_sociology"&gt;Further Reading&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8720550037867345187-5600105511523518047?l=peterwilliams97.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/YK1Gp5GZ76s3ZxSveZscyl6s9k0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YK1Gp5GZ76s3ZxSveZscyl6s9k0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/YK1Gp5GZ76s3ZxSveZscyl6s9k0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YK1Gp5GZ76s3ZxSveZscyl6s9k0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=a0FUnubOqPA:-uHNRb_WLGE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=a0FUnubOqPA:-uHNRb_WLGE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=a0FUnubOqPA:-uHNRb_WLGE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=a0FUnubOqPA:-uHNRb_WLGE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=a0FUnubOqPA:-uHNRb_WLGE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=a0FUnubOqPA:-uHNRb_WLGE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=a0FUnubOqPA:-uHNRb_WLGE:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=a0FUnubOqPA:-uHNRb_WLGE:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=a0FUnubOqPA:-uHNRb_WLGE:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=a0FUnubOqPA:-uHNRb_WLGE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=a0FUnubOqPA:-uHNRb_WLGE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=a0FUnubOqPA:-uHNRb_WLGE:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=a0FUnubOqPA:-uHNRb_WLGE:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogitErgoSum/~4/a0FUnubOqPA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://peterwilliams97.blogspot.com/feeds/5600105511523518047/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8720550037867345187&amp;postID=5600105511523518047" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8720550037867345187/posts/default/5600105511523518047?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8720550037867345187/posts/default/5600105511523518047?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BlogitErgoSum/~3/a0FUnubOqPA/sociology-of-software-development.html" title="The Sociology of Software Development Organisations" /><author><name>Peter Williams</name><uri>http://www.blogger.com/profile/09350055705252093886</uri><email>Peter.Williams.97@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="13199266468978924381" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><georss:point>-41.542158 146.134964</georss:point><feedburner:origLink>http://peterwilliams97.blogspot.com/2009/09/sociology-of-software-development.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkENRXs6fCp7ImA9WxNRGE8.&quot;"><id>tag:blogger.com,1999:blog-8720550037867345187.post-5396342151559016728</id><published>2009-09-10T05:58:00.002+10:00</published><updated>2009-09-13T15:44:54.514+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-13T15:44:54.514+10:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="software development" /><category scheme="http://www.blogger.com/atom/ns#" term="medical" /><title>Electronic Medical Records Bonanza?</title><content type="html">&lt;a href="http://aushealthit.blogspot.com/2009/02/commercial-alert-big-bucks-in-health-it.html"&gt;Big Bucks in Health IT!&lt;/a&gt;, quoting from &lt;a href="http://www.healthcareitnews.com/news/global-market-hospital-it-systems-pegged-35b-2015"&gt;http://www.healthcareitnews.com/news/global-market-hospital-it-systems-pegged-35b-2015&lt;/a&gt;&amp;nbsp;, says &lt;br /&gt;
&lt;blockquote&gt;
SAN JOSE, CA – &lt;span style="font-weight: bold;"&gt;The global hospital information systems market will climb past $35 billion by 2015, &lt;/span&gt;according to a new forecast by Global Industry Analysts. The United States represents the largest market in the world.

The U.S. hospital information system market is experiencing an increase in acceptance of customized technology such as laboratory information systems and radiology information systems, the report notes. &lt;span style="font-weight: bold;"&gt;The market is also a promising ground for electronic medical record systems.
&lt;/span&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;
The &lt;span style="font-weight: bold;"&gt;Asia-Pacific region (excluding Japan) represents the fastest growing hospital information systems market, exhibiting a compounded annual growth rate of 11.5 percent over the next few years&lt;/span&gt;, according to analysts. Despite being a smaller market in terms of revenue, the Asia-Pacific promises excellent growth opportunities for hospital information systems, they said.
&lt;/blockquote&gt;
&lt;blockquote&gt;
The global vendors profiled in the report include &lt;a href="http://www.mckesson.com/en_us/McKesson.com/Our%2BBusinesses/McKesson%2BProvider%2BTechnologies/Newsroom/2009/McKesson%2BLaunches%2BInformation%2BResources%2Bto%2BHelp%2BPhysicians%2BTake%2BAdvantage%2Bof%2BEconomic%2BStimulus.html"&gt;McKesson&lt;/a&gt;&amp;nbsp;, &lt;a href="http://www.cerner.com/public/Cerner_3.asp?id=129"&gt;Cerner&lt;/a&gt;&amp;nbsp;, Allscripts-Misys Healthcare Solutions, Eclipsys, Computer Programs and Systems, Siemens Medical Solutions USA, QuadraMed, Medical Information Technology, Healthland, GE Healthcare, iSOFT Group, Agfa-Gevaert, Brunie-Software, IBA Health and Integrated Medical Systems.&amp;nbsp;&lt;/blockquote&gt;
The full release is here:

&lt;span style="font-weight: bold;"&gt;Global Hospital Information Systems Market to Cross $35 Billion by 2015&lt;/span&gt;, According to New Report by Global Industry Analysts, Inc.
Increasing awareness among medical service patrons on the benefits of using Information Technology in the healthcare sector, coupled with growing demand for affordable-yet quality healthcare services is forcing hospitals and other medical centers to adopt IT in their daily operations. Subsequently, Healthcare IT systems such as the Hospital Information Systems witnessed a great demand in the healthcare services sector. Adoption of HIS in hospitals is increasingly being encouraged and promoted by the Governments world over.

&lt;a href="http://www.prweb.com/releases/2009/02/prweb2021984.htm"&gt;http://www.prweb.com/releases/2009/02/prweb2021984.htm&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8720550037867345187-5396342151559016728?l=peterwilliams97.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/r_nx0yZnZiztbIXUaZSVzswQeOs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/r_nx0yZnZiztbIXUaZSVzswQeOs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/r_nx0yZnZiztbIXUaZSVzswQeOs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/r_nx0yZnZiztbIXUaZSVzswQeOs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=k17t4Klh2e8:pZRyuYE5W58:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=k17t4Klh2e8:pZRyuYE5W58:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=k17t4Klh2e8:pZRyuYE5W58:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=k17t4Klh2e8:pZRyuYE5W58:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=k17t4Klh2e8:pZRyuYE5W58:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=k17t4Klh2e8:pZRyuYE5W58:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=k17t4Klh2e8:pZRyuYE5W58:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=k17t4Klh2e8:pZRyuYE5W58:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=k17t4Klh2e8:pZRyuYE5W58:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=k17t4Klh2e8:pZRyuYE5W58:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=k17t4Klh2e8:pZRyuYE5W58:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=k17t4Klh2e8:pZRyuYE5W58:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=k17t4Klh2e8:pZRyuYE5W58:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogitErgoSum/~4/k17t4Klh2e8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://peterwilliams97.blogspot.com/feeds/5396342151559016728/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8720550037867345187&amp;postID=5396342151559016728" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8720550037867345187/posts/default/5396342151559016728?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8720550037867345187/posts/default/5396342151559016728?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BlogitErgoSum/~3/k17t4Klh2e8/electronic-medical-records-bonanza.html" title="Electronic Medical Records Bonanza?" /><author><name>Peter Williams</name><uri>http://www.blogger.com/profile/09350055705252093886</uri><email>Peter.Williams.97@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="13199266468978924381" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><georss:point>32.7607074 -16.9594723</georss:point><feedburner:origLink>http://peterwilliams97.blogspot.com/2009/09/electronic-medical-records-bonanza.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUAEQX06fyp7ImA9WxNQFE0.&quot;"><id>tag:blogger.com,1999:blog-8720550037867345187.post-978234791635983850</id><published>2009-09-09T06:23:00.015+10:00</published><updated>2009-09-20T09:41:40.317+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-20T09:41:40.317+10:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="software development" /><category scheme="http://www.blogger.com/atom/ns#" term="google" /><title>GAE + GWT Starter Project. 8) Reflections on the First Iteration</title><content type="html">I started posting about this &lt;a href="http://peterwilliams97.blogspot.com/search?q=GAE+%2B+GWT+Starter+Project"&gt;project&lt;/a&gt; on 17 August and made my first code &lt;a href="http://github.com/peterwilliams97/SocialGraphExplorer/tree/master"&gt;commit&lt;/a&gt; on 26 August. In my previous &lt;a href="http://peterwilliams97.blogspot.com/2009/08/gae-gwt-starter-project-7-trying-out.html"&gt;post&lt;/a&gt;&amp;nbsp;I announced the&amp;nbsp;existence&amp;nbsp;the of the &lt;i&gt;Proof of Concept&lt;/i&gt; (&lt;a href="http://en.wikipedia.org/wiki/Proof_of_concept#In_software_development"&gt;PoC&lt;/a&gt;) version of the &lt;a href="http://peterwilliams9798.appspot.com/"&gt;application&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
The PoC &lt;a href="http://8.latest.peterwilliams9798.appspot.com/"&gt;version&lt;/a&gt; will mark the end of the first iteration of the project. This seems like an opportune time to reflect on the work that has been done so far.&lt;br /&gt;
&lt;br /&gt;
The original &lt;a href="http://peterwilliams97.blogspot.com/2009/08/gae-gwt-starter-project-1-introduction.html#goals"&gt;goals&lt;/a&gt; of the project were&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Test Datastore access rates.&lt;/li&gt;
&lt;li&gt;Test client side responsiveness while fetching a lot of data from the server.&lt;/li&gt;
&lt;li&gt;Evaluate the GWT and GAE development environments for doing substantial work quickly and with decent quality.&lt;/li&gt;
&lt;li&gt;Evaluate the&amp;nbsp;robustness&amp;nbsp;of the GAE model of doing work in 30 second chunks.&lt;/li&gt;
&lt;li&gt;Evaluate datastore scalability.&lt;/li&gt;
&lt;li&gt;Create a few re-usable components.&lt;/li&gt;
&lt;li&gt;Learn how to create a simple UI. My design skills are limited and I like the sparse Google web page lay-outs so I hope there some widgets and examples for building sparse Googly web pages.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
Progress against these goals about one month later has been:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;The application tested the Google datastore access rates. The datastore access rates seemed pretty reasonable, typically a few hundredths of a second to fetch a 100 KB data record. In most caches this was helped by the memcached cache sitting in front of the datastore (code is &lt;a href="http://github.com/peterwilliams97/SocialGraphExplorer/tree/ce0459a64b63adacc4b94be82195a6f2dd51f104/src/cache"&gt;here&lt;/a&gt;). As shown in the example in the previous &lt;a href="http://peterwilliams97.blogspot.com/2009/08/gae-gwt-starter-project-7-trying-out.html"&gt;post&lt;/a&gt;, the datastore access time was much shorter than the few tenths of a second it takes to fetch the data back to the client.&lt;/li&gt;
&lt;li&gt;Please test the client side responsiveness and tell me how well you think the application responds while fetching approximately 1MB data from the server per screen. My experience was that it did a pretty good job on Chrome, was okay on Firefox and Opera, slower on Safari and too slow on IE8. All these browsers were tested on Vista from a home DSL connection in Australia.&lt;/li&gt;
&lt;li&gt;I will write a separate post on the GWT and GAE development environments. For now I can say that it was easy to get started with a GWT+GAE+Eclipse+github+cygwin environment from the laptop running Vista that was available to me when I started the project.&lt;/li&gt;
&lt;li&gt;GAE could do all the datastore accesses that were required of my application in much less that 30 seconds. I got client response problems on IE8 when fetching 10 records at a time which took GAE about 0.1 second to process. GAE seems well suited to GUI+database applications.&lt;/li&gt;
&lt;li&gt;As far as I could tell the datastore has scaled perfectly so far. According to the GAE &lt;a href="http://appengine.google.com/dashboard?&amp;amp;app_id=peterwilliams9798"&gt;dashboard&lt;/a&gt;, the application is currently using 200 MB of storage, which is a minimum of 2,000 records.&lt;/li&gt;
&lt;li&gt;The server cache pipeline is probably re-usable and the client side cache can probably be adapted fairly easily. Apart from that I did not create much re-usable code&lt;/li&gt;
&lt;li&gt;I learned how to create a simple UI with GWT. My design skills are still limited but I liked the sparse Googly list and navigation buttons.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
The first iteration of the application &lt;a href="http://peterwilliams97.blogspot.com/2009/08/gae-gwt-starter-project-2-product.html"&gt;design&lt;/a&gt; was made on 18 August, and the first iteration of the code on 9 September ended up with this design. That was mostly due to keeping the design simple and general until the first iteration was completed. That was helped by this being a toy project where I could define the goals. Fingers crossed for the next iteration.&lt;br /&gt;
&lt;br /&gt;
The code ended up as follows at the end of the first iteration&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;a href="http://github.com/peterwilliams97/SocialGraphExplorer/commits/master/src/datatypes"&gt;datastore access&lt;/a&gt; was straightforward. Most of the work was reading the documentation.&lt;/li&gt;
&lt;li&gt;The server &lt;a href="http://github.com/peterwilliams97/SocialGraphExplorer/commits/master/src/cache"&gt;cache pipeline&lt;/a&gt; was simple and straightforward.&lt;/li&gt;
&lt;li&gt;The &lt;a href="http://github.com/peterwilliams97/SocialGraphExplorer/commits/master/src/people/server"&gt;web server&lt;/a&gt; was straightforward and simple, just an RPC server, except for the best-effort aspects.&lt;/li&gt;
&lt;li&gt;The &lt;a href="http://github.com/peterwilliams97/SocialGraphExplorer/commits/master/src/people/client"&gt;client cache and UI&lt;/a&gt; was where I spent most of my time and learn the most.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
It took me a while to get to simple code for the&amp;nbsp;client cache and UI&amp;nbsp;that kept a clean coherent state. The final client cache design was&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;ol&gt;
&lt;li&gt;Block while waiting for visible records that have been requested from server but have not arrived to arrive. This takes care of the case of incomplete but correctly predicted pre-fetches.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Clear all pending server fetches. This is seldom costly because of step 1.&lt;/li&gt;
&lt;li&gt;Build a queue of server requests. 0-click away (visible now), 1-click away, 2-clicks, away&lt;/li&gt;
&lt;li&gt;Send requests to the server in the above order. Limit the number of pending requests to a specified number (default=2).&lt;/li&gt;
&lt;li&gt;When visible records have been fetched, callback to UI. This usually results in an immediate callback (and no UI latency) because the records have been pre-fetched.&lt;/li&gt;
&lt;/ol&gt;
&lt;b&gt;Remaining Work&lt;/b&gt;&lt;br /&gt;
&lt;/div&gt;
There is a lot left to do for the next iteration. This is being tracked in the &lt;a href="http://github.com/peterwilliams97/SocialGraphExplorer/commits/master/TODO.txt"&gt;TODO&lt;/a&gt; list. There are

&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Optimisations. (Fetching a 100KB record to display about 200 characters is wasteful)&lt;/li&gt;
&lt;li&gt;Bugs to be fixed.&lt;/li&gt;
&lt;li&gt;Features to be added.&lt;/li&gt;
&lt;/ul&gt;
Please give me your feedback on what you think should come next by commenting below.&lt;br /&gt;
&lt;br /&gt;
You can watch this project's progress &lt;a href="http://peterwilliams97.blogspot.com/search?q=GAE+%2B+GWT+Starter+Project"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8720550037867345187-978234791635983850?l=peterwilliams97.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/rg0lZceU3XWIoGHQKnOm5NoyqJ0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rg0lZceU3XWIoGHQKnOm5NoyqJ0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/rg0lZceU3XWIoGHQKnOm5NoyqJ0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rg0lZceU3XWIoGHQKnOm5NoyqJ0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=94gXq5wMYTg:nFLUMheE2_U:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=94gXq5wMYTg:nFLUMheE2_U:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=94gXq5wMYTg:nFLUMheE2_U:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=94gXq5wMYTg:nFLUMheE2_U:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=94gXq5wMYTg:nFLUMheE2_U:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=94gXq5wMYTg:nFLUMheE2_U:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=94gXq5wMYTg:nFLUMheE2_U:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=94gXq5wMYTg:nFLUMheE2_U:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=94gXq5wMYTg:nFLUMheE2_U:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=94gXq5wMYTg:nFLUMheE2_U:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=94gXq5wMYTg:nFLUMheE2_U:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=94gXq5wMYTg:nFLUMheE2_U:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=94gXq5wMYTg:nFLUMheE2_U:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogitErgoSum/~4/94gXq5wMYTg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://peterwilliams97.blogspot.com/feeds/978234791635983850/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8720550037867345187&amp;postID=978234791635983850" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8720550037867345187/posts/default/978234791635983850?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8720550037867345187/posts/default/978234791635983850?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BlogitErgoSum/~3/94gXq5wMYTg/gae-gwt-starter-project-8-reflections.html" title="GAE + GWT Starter Project. 8) Reflections on the First Iteration" /><author><name>Peter Williams</name><uri>http://www.blogger.com/profile/09350055705252093886</uri><email>Peter.Williams.97@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="13199266468978924381" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><georss:point>-38.328583 143.077199</georss:point><feedburner:origLink>http://peterwilliams97.blogspot.com/2009/09/gae-gwt-starter-project-8-reflections.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck8EQX8-cSp7ImA9WxNRGEw.&quot;"><id>tag:blogger.com,1999:blog-8720550037867345187.post-8559831098926233639</id><published>2009-08-29T06:31:00.100+10:00</published><updated>2009-09-13T13:00:00.159+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-13T13:00:00.159+10:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="software development" /><category scheme="http://www.blogger.com/atom/ns#" term="google" /><title>GAE + GWT Starter Project. 7) Trying out the program</title><content type="html">The program is &lt;a href="http://peterwilliams9798.appspot.com/"&gt;&lt;span style="color: black;"&gt;&lt;span style="text-decoration: none;"&gt;here&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;. The current version will be saved &lt;a href="http://8.latest.peterwilliams9798.appspot.com/"&gt;&lt;span style="color: black;"&gt;&lt;span style="text-decoration: none;"&gt;here &lt;/span&gt;&lt;/span&gt;&lt;/a&gt;and a debug version of the current version will be saved &lt;a href="http://7.latest.peterwilliams9798.appspot.com/"&gt;here&lt;/a&gt;.
he top left of the UI navigate the &lt;i&gt;connections&lt;/i&gt; of the main &lt;i&gt;anchor &lt;/i&gt;person (the top person on the frame). &amp;nbsp; &lt;b&gt;&amp;lt;&amp;lt;&lt;/b&gt;, &lt;b&gt;&amp;lt;&lt;/b&gt;,&lt;b&gt; &amp;gt;&lt;/b&gt; and &lt;b&gt;&amp;gt;&amp;gt;&lt;/b&gt; buttons are used to scroll through the list of &lt;i&gt;connections&lt;/i&gt;. Selecting a person with a mouse brings up their details in the bottom frame. Clicking a selected &lt;i&gt;connection&lt;/i&gt; person makes that person the &lt;i&gt;anchor &lt;/i&gt;person.&lt;br /&gt;
&lt;br /&gt;
Each connection entry has some data that gives some indication of the work the browser, network and server and doing to display each screen. e.g.&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Peter Williams - 0, CacheDB, .., 94kb, 0.012 sec, 0.6 sec, level 0&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;Peter Williams&lt;/b&gt;: Person's name&lt;br /&gt;
&lt;b&gt;0&lt;/b&gt;: Index into connections list&lt;br /&gt;
&lt;b&gt;CacheDB&lt;/b&gt;: Server cache this person was fetched from. 'CacheDB'=GAE datastore, 'CacheCache'=memcache, anything else is a fetch from an external system.&lt;br /&gt;
&lt;b&gt;94 kb&lt;/b&gt;: Amount of data fetched for this person in KB&lt;br /&gt;
&lt;b&gt;0.012 sec&lt;/b&gt;: Time it took to fetch data from cache on server.&lt;br /&gt;
&lt;b&gt;0.6 sec&lt;/b&gt;: Time it took for data to get back to client.&lt;br /&gt;
&lt;b&gt;level 0&lt;/b&gt;: The client cache the data was fetched into. Levels 0 and 1 are visible, level 2 is the 1-click-away cache and level 3 is the 2-click-away cache.&lt;br /&gt;
&lt;br /&gt;
Each page of results has about 1 MB of data fetched from the server.&lt;br /&gt;
&lt;br /&gt;
Please try out the program and see if the performance is adequate.&lt;br /&gt;
&lt;br /&gt;
You can watch this project's progress &lt;a href="http://peterwilliams97.blogspot.com/search?q=GAE+%2B+GWT+Starter+Project"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8720550037867345187-8559831098926233639?l=peterwilliams97.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/LIx2zHz5JN8CzsujXzbCYjnpqdo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LIx2zHz5JN8CzsujXzbCYjnpqdo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/LIx2zHz5JN8CzsujXzbCYjnpqdo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LIx2zHz5JN8CzsujXzbCYjnpqdo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=mhgrnptRkLY:DJnEuA2Z3z8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=mhgrnptRkLY:DJnEuA2Z3z8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=mhgrnptRkLY:DJnEuA2Z3z8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=mhgrnptRkLY:DJnEuA2Z3z8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=mhgrnptRkLY:DJnEuA2Z3z8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=mhgrnptRkLY:DJnEuA2Z3z8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=mhgrnptRkLY:DJnEuA2Z3z8:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=mhgrnptRkLY:DJnEuA2Z3z8:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=mhgrnptRkLY:DJnEuA2Z3z8:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=mhgrnptRkLY:DJnEuA2Z3z8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=mhgrnptRkLY:DJnEuA2Z3z8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=mhgrnptRkLY:DJnEuA2Z3z8:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=mhgrnptRkLY:DJnEuA2Z3z8:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogitErgoSum/~4/mhgrnptRkLY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://peterwilliams97.blogspot.com/feeds/8559831098926233639/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8720550037867345187&amp;postID=8559831098926233639" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8720550037867345187/posts/default/8559831098926233639?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8720550037867345187/posts/default/8559831098926233639?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BlogitErgoSum/~3/mhgrnptRkLY/gae-gwt-starter-project-7-trying-out.html" title="GAE + GWT Starter Project. 7) Trying out the program" /><author><name>Peter Williams</name><uri>http://www.blogger.com/profile/09350055705252093886</uri><email>Peter.Williams.97@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="13199266468978924381" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_KuHjsPuSSiw/SqX497C-pRI/AAAAAAAAHJA/e9N5zWWNWL8/s72-c/frame.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><georss:point>-37.654137 145.516188</georss:point><feedburner:origLink>http://peterwilliams97.blogspot.com/2009/08/gae-gwt-starter-project-7-trying-out.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkAFSHo_eyp7ImA9WxNRGEw.&quot;"><id>tag:blogger.com,1999:blog-8720550037867345187.post-1180391990923971389</id><published>2009-08-27T06:22:00.012+10:00</published><updated>2009-09-13T12:58:39.443+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-13T12:58:39.443+10:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="software development" /><category scheme="http://www.blogger.com/atom/ns#" term="google" /><title>GAE + GWT Starter Project. 6)  Building up the Server</title><content type="html">The server side of this &lt;a href="http://peterwilliams97.blogspot.com/2009/08/gae-gwt-starter-project-2-product.html"&gt;design&lt;/a&gt;&amp;nbsp;is a cache pipeline wrapped by a GWT RPC service. Today I attempted to implement this.&lt;br /&gt;
&lt;br /&gt;
First I built up the cache pipeline. This was a simple design with each cache stage basically the code below.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;public V get(K key) {&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span style="white-space: pre;"&gt;&amp;nbsp;   &lt;/span&gt;V value = cacheActual.get(key);&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span style="white-space: pre;"&gt;&amp;nbsp;   &lt;/span&gt;if (value == null) {&lt;/span&gt;&lt;br /&gt;
&lt;span style="white-space: pre;"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;if (nextStage != null) {&lt;/span&gt;&lt;br /&gt;
&lt;span style="white-space: pre;"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;           &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;value = nextStage.get(key);&lt;/span&gt;&lt;br /&gt;
&lt;span style="white-space: pre;"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;           &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;if (value != null) {&lt;/span&gt;&lt;br /&gt;
&lt;span style="white-space: pre;"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;              &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;cacheActual.put(key, value);&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style="white-space: pre;"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;           &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style="white-space: pre;"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span style="white-space: pre;"&gt;&amp;nbsp;   &lt;/span&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span style="white-space: pre;"&gt;&amp;nbsp;   &lt;/span&gt;return value;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: 'Courier New'; font-size: 13px;"&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;public void put(K key, V value) {&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span style="white-space: pre;"&gt;&amp;nbsp;   &lt;/span&gt;V val = cacheActual.get(key);&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span style="white-space: pre;"&gt;&amp;nbsp;   &lt;/span&gt;if (!(val != null &amp;amp;&amp;amp; val.equals(value))) {&lt;/span&gt;&lt;br /&gt;
&lt;span style="white-space: pre;"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;cacheActual.put(key, value);&lt;/span&gt;&lt;br /&gt;
&lt;span style="white-space: pre;"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;if (nextStage != null) {&lt;/span&gt;&lt;br /&gt;
&lt;span style="white-space: pre;"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;            &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;nextStage.put(key);&lt;/span&gt;&lt;br /&gt;
&lt;span style="white-space: pre;"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span style="white-space: pre;"&gt;&amp;nbsp;   &lt;/span&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: 'Courier New'; font-size: small;"&gt;&lt;span style="font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
Building this up took 5 Java classes&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;CacheStage.java (the code above)&lt;/li&gt;
&lt;li&gt;CachePipeline.java &amp;nbsp;(hooks together CacheStage's in a pipeline)&lt;/li&gt;
&lt;li&gt;CacheActual.java &amp;nbsp;(interface for actual caches)&lt;/li&gt;
&lt;li&gt;CacheCache.java &amp;nbsp;(memcache implementation)&lt;/li&gt;
&lt;li&gt;CacheDB.java &amp;nbsp;(datastore + web-service implementation with datastore intially stubbed)&lt;/li&gt;
&lt;/ul&gt;
There were no surprises in this.&lt;br /&gt;
&lt;br /&gt;
Next I wrapped this a GWT style RPC server. This took some classes&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;PersonService.java &amp;nbsp;(interface for class containing the RPC call)&lt;/li&gt;
&lt;li&gt;PersonServiceAsync.java (async version of&amp;nbsp;&amp;nbsp;PersonService.java)&lt;/li&gt;
&lt;li&gt;PersonServiceImpl.java (server side implementation of&amp;nbsp;PersonService.java)&lt;/li&gt;
&lt;/ul&gt;
Defining these classes required defining the &lt;i&gt;person &lt;/i&gt;class that is seen by clients.&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;PersonClient.java &amp;nbsp;(the client-side &lt;i&gt;person &lt;/i&gt;class)&lt;/li&gt;
&lt;li&gt;PersonFetch.java &amp;nbsp;(person + tracking data to cross-reference to requests, required for best-effort operation)&lt;/li&gt;
&lt;li&gt;PersonClientGroup.java (a class to wrap all the data returned by the RPC call)&lt;/li&gt;
&lt;li&gt;PersonTrait.java (since the server and client person classes differ, we need to specify the canonical person traits such as name, address, uniqueID, and have all person classes implement this interface)&lt;/li&gt;
&lt;/ul&gt;
That, plus a few helper classes, got the first iteration of the server implemented. There were 21 .java files which seemed like a lot for the amount of functionality created, but most of them were simple. Code is &lt;a href="http://github.com/peterwilliams97/SocialGraphExplorer"&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
You can watch this project's progress &lt;a href="http://peterwilliams97.blogspot.com/search?q=GAE+%2B+GWT+Starter+Project"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8720550037867345187-1180391990923971389?l=peterwilliams97.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/VjHlV5QQ4Wo2lDWttd9ONcg-kwo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/VjHlV5QQ4Wo2lDWttd9ONcg-kwo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/VjHlV5QQ4Wo2lDWttd9ONcg-kwo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/VjHlV5QQ4Wo2lDWttd9ONcg-kwo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=TQNrisX2qxg:_c3rrwYjoqo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=TQNrisX2qxg:_c3rrwYjoqo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=TQNrisX2qxg:_c3rrwYjoqo:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=TQNrisX2qxg:_c3rrwYjoqo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=TQNrisX2qxg:_c3rrwYjoqo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=TQNrisX2qxg:_c3rrwYjoqo:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=TQNrisX2qxg:_c3rrwYjoqo:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=TQNrisX2qxg:_c3rrwYjoqo:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=TQNrisX2qxg:_c3rrwYjoqo:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=TQNrisX2qxg:_c3rrwYjoqo:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=TQNrisX2qxg:_c3rrwYjoqo:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=TQNrisX2qxg:_c3rrwYjoqo:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=TQNrisX2qxg:_c3rrwYjoqo:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogitErgoSum/~4/TQNrisX2qxg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://peterwilliams97.blogspot.com/feeds/1180391990923971389/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8720550037867345187&amp;postID=1180391990923971389" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8720550037867345187/posts/default/1180391990923971389?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8720550037867345187/posts/default/1180391990923971389?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BlogitErgoSum/~3/TQNrisX2qxg/gae-gwt-starter-project-6-building-up.html" title="GAE + GWT Starter Project. 6)  Building up the Server" /><author><name>Peter Williams</name><uri>http://www.blogger.com/profile/09350055705252093886</uri><email>Peter.Williams.97@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="13199266468978924381" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><georss:point>-38.243461 143.989297</georss:point><feedburner:origLink>http://peterwilliams97.blogspot.com/2009/08/gae-gwt-starter-project-6-building-up.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk8ARXs5fip7ImA9WxNRFUU.&quot;"><id>tag:blogger.com,1999:blog-8720550037867345187.post-4759329847758355176</id><published>2009-08-26T07:36:00.005+10:00</published><updated>2009-09-10T22:14:04.526+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-10T22:14:04.526+10:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="software development" /><category scheme="http://www.blogger.com/atom/ns#" term="google" /><title>GAE + GWT Starter Project. 5) First check-in</title><content type="html">The initial &lt;a href="http://github.com/peterwilliams97/SocialGraphExplorer/tree/master"&gt;code&lt;/a&gt; is on github.&lt;br /&gt;
&lt;br /&gt;
The Person record and cache pipeline are coming together.. Everything looks okay for now.&lt;br /&gt;
&lt;br /&gt;
Please take a look at the code.&lt;br /&gt;
&lt;br /&gt;
I might try &lt;a href="http://blog.hivedevelopment.co.uk/2009/08/google-web-toolkit-gwt-mvp-example.html"&gt;these&lt;/a&gt; ideas for the next iteration.&lt;br /&gt;
&lt;br /&gt;
You can watch this project's progress &lt;a href="http://peterwilliams97.blogspot.com/search?q=GAE+%2B+GWT+Starter+Project"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8720550037867345187-4759329847758355176?l=peterwilliams97.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/QrC1FSGy22_6Wgq8qZJKNIqhjjY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QrC1FSGy22_6Wgq8qZJKNIqhjjY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/QrC1FSGy22_6Wgq8qZJKNIqhjjY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QrC1FSGy22_6Wgq8qZJKNIqhjjY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=j_1I0mMYOwo:DYhRhCyfts4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=j_1I0mMYOwo:DYhRhCyfts4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=j_1I0mMYOwo:DYhRhCyfts4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=j_1I0mMYOwo:DYhRhCyfts4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=j_1I0mMYOwo:DYhRhCyfts4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=j_1I0mMYOwo:DYhRhCyfts4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=j_1I0mMYOwo:DYhRhCyfts4:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=j_1I0mMYOwo:DYhRhCyfts4:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=j_1I0mMYOwo:DYhRhCyfts4:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=j_1I0mMYOwo:DYhRhCyfts4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=j_1I0mMYOwo:DYhRhCyfts4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=j_1I0mMYOwo:DYhRhCyfts4:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=j_1I0mMYOwo:DYhRhCyfts4:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogitErgoSum/~4/j_1I0mMYOwo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://peterwilliams97.blogspot.com/feeds/4759329847758355176/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8720550037867345187&amp;postID=4759329847758355176" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8720550037867345187/posts/default/4759329847758355176?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8720550037867345187/posts/default/4759329847758355176?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BlogitErgoSum/~3/j_1I0mMYOwo/gae-gwt-starter-project-5-first-check.html" title="GAE + GWT Starter Project. 5) First check-in" /><author><name>Peter Williams</name><uri>http://www.blogger.com/profile/09350055705252093886</uri><email>Peter.Williams.97@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="13199266468978924381" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><georss:point>-37.836888 146.202667</georss:point><feedburner:origLink>http://peterwilliams97.blogspot.com/2009/08/gae-gwt-starter-project-5-first-check.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE8HQ3g-fCp7ImA9WxNRF0Q.&quot;"><id>tag:blogger.com,1999:blog-8720550037867345187.post-4180094781741572253</id><published>2009-08-24T06:48:00.018+10:00</published><updated>2009-09-13T09:07:12.654+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-13T09:07:12.654+10:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="software development" /><category scheme="http://www.blogger.com/atom/ns#" term="google" /><title>GAE + GWT Starter Project. 4)  Just in Time Person Synthesiser</title><content type="html">It is just in time to see the first version of this application &lt;a href="http://peterwilliams9798.appspot.com/"&gt;here&lt;/a&gt;, It loads slowly, especially if you have a slow internet connection or are using Internet Explorer or both, so if you are in this situation then please be patient to start with. Once loaded, the application is responsive.&lt;br /&gt;
&lt;br /&gt;
However this post is about a different "just in time", the just-in-time person record synthesiser.&lt;br /&gt;
&lt;br /&gt;
I have added a person record synthesiser to the end of the cache pipeline so that whenever a non-existent person is referenced, that person is synthesised. This is straight-forward to implement for the dummy persons I am using.&lt;br /&gt;
&lt;br /&gt;
I chose this method instead of pre-populating the datastore with dummy persons because I have not learnt how to use GAE's &lt;a href="http://code.google.com/appengine/docs/java/taskqueue"&gt;batch mode&lt;/a&gt; yet.&lt;br /&gt;
&lt;br /&gt;
You can watch this project's progress &lt;a href="http://peterwilliams97.blogspot.com/search?q=GAE+%2B+GWT+Starter+Project"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8720550037867345187-4180094781741572253?l=peterwilliams97.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/d37lda4yR9aFjX4daLIsEKwNfmQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/d37lda4yR9aFjX4daLIsEKwNfmQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/d37lda4yR9aFjX4daLIsEKwNfmQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/d37lda4yR9aFjX4daLIsEKwNfmQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=rOmmwC8oIO8:shNN-fcibNM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=rOmmwC8oIO8:shNN-fcibNM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=rOmmwC8oIO8:shNN-fcibNM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=rOmmwC8oIO8:shNN-fcibNM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=rOmmwC8oIO8:shNN-fcibNM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=rOmmwC8oIO8:shNN-fcibNM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=rOmmwC8oIO8:shNN-fcibNM:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=rOmmwC8oIO8:shNN-fcibNM:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=rOmmwC8oIO8:shNN-fcibNM:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=rOmmwC8oIO8:shNN-fcibNM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=rOmmwC8oIO8:shNN-fcibNM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=rOmmwC8oIO8:shNN-fcibNM:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=rOmmwC8oIO8:shNN-fcibNM:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogitErgoSum/~4/rOmmwC8oIO8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://peterwilliams97.blogspot.com/feeds/4180094781741572253/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8720550037867345187&amp;postID=4180094781741572253" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8720550037867345187/posts/default/4180094781741572253?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8720550037867345187/posts/default/4180094781741572253?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BlogitErgoSum/~3/rOmmwC8oIO8/gae-gwt-starter-project-4-just-in-time.html" title="GAE + GWT Starter Project. 4)  Just in Time Person Synthesiser" /><author><name>Peter Williams</name><uri>http://www.blogger.com/profile/09350055705252093886</uri><email>Peter.Williams.97@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="13199266468978924381" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><georss:point>-37.810007 145.342587</georss:point><feedburner:origLink>http://peterwilliams97.blogspot.com/2009/08/gae-gwt-starter-project-4-just-in-time.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck8GSHs5fSp7ImA9WxNRGEw.&quot;"><id>tag:blogger.com,1999:blog-8720550037867345187.post-6250205668095865354</id><published>2009-08-23T11:24:00.014+10:00</published><updated>2009-09-13T13:00:29.525+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-13T13:00:29.525+10:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="software development" /><category scheme="http://www.blogger.com/atom/ns#" term="google" /><title>GAE + GWT Starter Project. 3) Getting Started</title><content type="html">After a few days doing other things, I am back working on my GAE + GWT Starter Project.&amp;nbsp;The last thing I did before I took a break was the &lt;a href="http://peterwilliams97.blogspot.com/2009/08/gae-gwt-starter-project-2-product.html"&gt;high-level design&lt;/a&gt;. It looked like a layered design with these layers&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;UI&lt;/li&gt;
&lt;li&gt;Person Client Cache&lt;/li&gt;
&lt;li&gt;(Client-Server RPC)&lt;/li&gt;
&lt;li&gt;Person Server Cache Pipeline&lt;/li&gt;
&lt;li&gt;Database &amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
When it comes to implementing this design, the two key observations are

&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Each layer depends on the layer below it, and&amp;nbsp;&lt;/li&gt;
&lt;li&gt;The biggest risks are in the bottom layers.&lt;/li&gt;
&lt;/ul&gt;
Therefore&amp;nbsp;there are two reasonable ways to go about the implementation:

&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Bottom-up&lt;/li&gt;
&lt;li&gt;Stubbing of the lower levels&lt;/li&gt;
&lt;/ul&gt;
Bottom-up reduces the uncertainties in the project fastest and allows each layer to built on working foundations. Stubbing allows the layers to be built and tested independently.

&lt;br /&gt;
&lt;br /&gt;
If there was more than one person working on this project then we would start by building the server cache pipeline (a simple piece of code) and adding stubs for each cache stage. This would allow people to work on different parts of the system independently of each other (and give us the stub framework we would eventually need for testing and tuning).

&lt;br /&gt;
&lt;br /&gt;
However I am the only person working on this project and the risk is concentrated in the bottom layers, so I am going to &lt;a href="http://www.construx.com/Page.aspx?nid=84&amp;amp;id=99"&gt;attack uncertainty&lt;/a&gt; and start at the bottom.&amp;nbsp;

&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Build a &lt;i&gt;person &lt;/i&gt;canonical meta-data based on using a few social networks.&lt;/li&gt;
&lt;li&gt;Get the GAE datastore saving and find &lt;i&gt;person&lt;/i&gt; records reliably.&lt;/li&gt;
&lt;li&gt;Get the GAE server working reliably to deliver results in series of calls that are timed out in 10 seconds (well below sandbox limit and within human tolerance)&lt;/li&gt;
&lt;/ol&gt;
That should keep me busy for a while.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8720550037867345187-6250205668095865354?l=peterwilliams97.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/8T4ENHcxNwxMJYuGwYf4YqD6O14/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8T4ENHcxNwxMJYuGwYf4YqD6O14/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/8T4ENHcxNwxMJYuGwYf4YqD6O14/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8T4ENHcxNwxMJYuGwYf4YqD6O14/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=w-QphY_fz1U:Vx0O_qz7VpM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=w-QphY_fz1U:Vx0O_qz7VpM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=w-QphY_fz1U:Vx0O_qz7VpM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=w-QphY_fz1U:Vx0O_qz7VpM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=w-QphY_fz1U:Vx0O_qz7VpM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=w-QphY_fz1U:Vx0O_qz7VpM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=w-QphY_fz1U:Vx0O_qz7VpM:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=w-QphY_fz1U:Vx0O_qz7VpM:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=w-QphY_fz1U:Vx0O_qz7VpM:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=w-QphY_fz1U:Vx0O_qz7VpM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=w-QphY_fz1U:Vx0O_qz7VpM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=w-QphY_fz1U:Vx0O_qz7VpM:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=w-QphY_fz1U:Vx0O_qz7VpM:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogitErgoSum/~4/w-QphY_fz1U" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://peterwilliams97.blogspot.com/feeds/6250205668095865354/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8720550037867345187&amp;postID=6250205668095865354" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8720550037867345187/posts/default/6250205668095865354?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8720550037867345187/posts/default/6250205668095865354?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BlogitErgoSum/~3/w-QphY_fz1U/gae-gwt-starter-project-3-getting.html" title="GAE + GWT Starter Project. 3) Getting Started" /><author><name>Peter Williams</name><uri>http://www.blogger.com/profile/09350055705252093886</uri><email>Peter.Williams.97@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="13199266468978924381" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><georss:point>-37.836587 144.975683</georss:point><feedburner:origLink>http://peterwilliams97.blogspot.com/2009/08/gae-gwt-starter-project-3-getting.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEMNRXw_eip7ImA9WxNQE0w.&quot;"><id>tag:blogger.com,1999:blog-8720550037867345187.post-1734598728134697299</id><published>2009-08-18T06:11:00.024+10:00</published><updated>2009-09-19T08:21:34.242+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-19T08:21:34.242+10:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="software development" /><category scheme="http://www.blogger.com/atom/ns#" term="google" /><title>GAE + GWT Starter Project. 2) Product Definition and High Level Design</title><content type="html">In my previous &lt;a href="http://peterwilliams97.blogspot.com/2009/08/gae-gwt-starter-project-1-introduction.html"&gt;post&lt;/a&gt;&amp;nbsp;I outlined a plan to write a GAE+GWT application. (See &lt;a href="http://peterwilliams97.blogspot.com/2009/08/gae-gwt-starter-project-1-introduction.html#goals"&gt;goals&lt;/a&gt;&lt;b&gt; &lt;/b&gt;section in the previous post). In this post I will specify the product and give a high level design.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Product Definition&lt;/b&gt;&lt;br /&gt;
The application will be a &lt;b&gt;Social Network Navigator&lt;/b&gt;. It will&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;navigate a &lt;i&gt;person's&lt;/i&gt; list of social network &lt;i&gt;connections&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;show each &lt;i&gt;connection's &lt;/i&gt;information (extracted from or linked to some social networking sites)&lt;/li&gt;
&lt;li&gt;allow the &lt;i&gt;connection&lt;/i&gt; to become the &lt;i&gt;person&lt;/i&gt;&amp;nbsp;so their connections can be navigated&lt;/li&gt;
&lt;/ol&gt;
&lt;b&gt;High Level Design - User Interface&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
UI Components&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Main &lt;i&gt;person &lt;/i&gt;(one line of summary info: name, address, description).&lt;/li&gt;
&lt;li&gt;List of &lt;i&gt;person&lt;/i&gt;'s&lt;i&gt; &lt;/i&gt;&lt;i&gt;connection&lt;/i&gt;s (one line of summary info per person).&lt;/li&gt;
&lt;li&gt;Panel with details of selected person or connection.&lt;/li&gt;
&lt;li&gt;Navigation buttons (next, previous, first, last screen of connections)&lt;/li&gt;
&lt;/ul&gt;
UI Actions&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Selecting a &lt;i&gt;person &lt;/i&gt;or &lt;i&gt;connection &lt;/i&gt;shows their details in the Details panel.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Clicking on a selected &lt;i&gt;connection &lt;/i&gt;makes the connection the main &lt;i&gt;person&lt;/i&gt;.&lt;/li&gt;
&lt;li&gt;Navigation buttons move between screens of &lt;i&gt;connection&lt;/i&gt;s&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;High Level Design - Client Cache&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
The server will be fetching data from somewhere, either a data store or from some other website or web service. This is going to be slow compared to desired UI response time so we will need to keep a client side cache with the data people will be likely to be requesting.



The client cache needs to fetch data from the server before the user requests viewing them. One way to arrange the cache is in terms of the number of mouse clicks a person is from being visible on the main screen.


&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Visible&lt;/li&gt;
&lt;li&gt;1 click from being visible&lt;/li&gt;
&lt;li&gt;2 clicks from being visible&lt;/li&gt;
&lt;li&gt;...&lt;/li&gt;
&lt;/ul&gt;
If there are N people per screen then&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;N visible persons&lt;/li&gt;
&lt;li&gt;&amp;lt;= 4*N 1-click persons &amp;nbsp;(next, previous, first, last)&lt;/li&gt;
&lt;li&gt;&amp;lt;= 4*N 2-click persons (next-next, previous-previous, first-next, last-previous&lt;/li&gt;
&lt;/ul&gt;
Choosing a new main &lt;i&gt;person &lt;/i&gt;will change the few-clicks-away persons a lot. These persons can be predicted but changing the main person is a big change so we will leave this prediction for a future iteration of the design.



The cache can be navigated forwards and backwards. Backwards navigation can be cached effectively with an &amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Cache_algorithms#Least_Recently_Used"&gt;LRU&lt;/a&gt; cache. Forwards navigation cached by enumerating the persons that can be accessed by 1 or more mouse clicks.



Therefore a sufficient cache hint is a set of lists of persons that can be reached in m mouse clicks for m=0..M where M is a parameter that is to specified and optimised.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;High Level Design - UI and Client Cache Interaction&lt;/b&gt;

&lt;b&gt;&lt;br /&gt;&lt;/b&gt;

The previous section outlined a cache that depended on the UI state. This leads to a simple set of interactions between the UI and cache.


&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;User sets new UI state&lt;/li&gt;
&lt;li&gt;UI sends the m-click hints to client cache and disables user controls (effectively freezing the state of the UI)&lt;/li&gt;
&lt;li&gt;Client cache signals UI when visible persons are in cache.&lt;/li&gt;
&lt;li&gt;UI enables user controls.&lt;/li&gt;
&lt;/ol&gt;
This is simple interaction which is good for a small project like this.



Client Cache Effectiveness and Tuning

&lt;br /&gt;
The effectivenees of the cache will depend on how often it fetched the m-click-away persons from the server before the user makes those clicks.

There are some obvious trade-offs.

&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Fewer navigation controls in the UI makes caching easier but leads to a less flexibiltiy&lt;/li&gt;
&lt;li&gt;Bigger caches are faster but use up client side memory and may waste server fetches.&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;H&lt;/b&gt;&lt;b&gt;igh Level Design -&amp;nbsp;Client Cache and Server Interactions

&lt;/b&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;

This is simple in principle. Fetch data from the server.&amp;nbsp;

Some things will need to be tuned 

&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;number of people fetched per server interaction&lt;/li&gt;
&lt;li&gt;timing of feches for different client cache levels (all at once or m-click before m+1-click)&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;High Level Design - Server&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;/b&gt;
Each person will have some possibly data and some searchable meta-data.&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Person = summary (name, address, ...) + detail + list of connections (other persons)&lt;/li&gt;
&lt;/ul&gt;
Since we want to access this rapidly for each person we will need to store it on our server in our format. Most likely we will have a multi-stage cache.

&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Fetch data from datastore (and store it memcache)&lt;/li&gt;
&lt;li&gt;Fetch data from memcache.&lt;/li&gt;
&lt;/ol&gt;
We will need to run this a little to get some idea of the relative speeds of 1 and 2 to see how we will tune this.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;High Level Design -&amp;nbsp;Person Data Structure&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;/b&gt;The person data structure is mostly straightforward, a big chunk of data with some meta-data. The obvious wrinkle is the relationships between persons. Each person has connections to other persons. If there needs to be any work on connections, such as sorting the connections by the connections' meta-data then we have to decide how much meta-data to store with each connection, or see how the datastore can assist in one to many relationships.

&lt;br /&gt;
&lt;br /&gt;
You can watch this project's progress &lt;a href="http://peterwilliams97.blogspot.com/search?q=GAE+%2B+GWT+Starter+Project"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8720550037867345187-1734598728134697299?l=peterwilliams97.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/8tgIT6oy_Ga7LJkffxR2gagsprg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8tgIT6oy_Ga7LJkffxR2gagsprg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/8tgIT6oy_Ga7LJkffxR2gagsprg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8tgIT6oy_Ga7LJkffxR2gagsprg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=p7KHFBR2Cq8:I90dZKrNdlU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=p7KHFBR2Cq8:I90dZKrNdlU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=p7KHFBR2Cq8:I90dZKrNdlU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=p7KHFBR2Cq8:I90dZKrNdlU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=p7KHFBR2Cq8:I90dZKrNdlU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=p7KHFBR2Cq8:I90dZKrNdlU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=p7KHFBR2Cq8:I90dZKrNdlU:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=p7KHFBR2Cq8:I90dZKrNdlU:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=p7KHFBR2Cq8:I90dZKrNdlU:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=p7KHFBR2Cq8:I90dZKrNdlU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=p7KHFBR2Cq8:I90dZKrNdlU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=p7KHFBR2Cq8:I90dZKrNdlU:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=p7KHFBR2Cq8:I90dZKrNdlU:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogitErgoSum/~4/p7KHFBR2Cq8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://peterwilliams97.blogspot.com/feeds/1734598728134697299/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8720550037867345187&amp;postID=1734598728134697299" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8720550037867345187/posts/default/1734598728134697299?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8720550037867345187/posts/default/1734598728134697299?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BlogitErgoSum/~3/p7KHFBR2Cq8/gae-gwt-starter-project-2-product.html" title="GAE + GWT Starter Project. 2) Product Definition and High Level Design" /><author><name>Peter Williams</name><uri>http://www.blogger.com/profile/09350055705252093886</uri><email>Peter.Williams.97@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="13199266468978924381" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><georss:point>-37.8421595 145.0179665</georss:point><feedburner:origLink>http://peterwilliams97.blogspot.com/2009/08/gae-gwt-starter-project-2-product.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU8NQns8eyp7ImA9WxNRFUU.&quot;"><id>tag:blogger.com,1999:blog-8720550037867345187.post-1214221784865586738</id><published>2009-08-17T05:58:00.006+10:00</published><updated>2009-09-10T21:58:13.573+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-10T21:58:13.573+10:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="software development" /><category scheme="http://www.blogger.com/atom/ns#" term="google" /><title>GAE + GWT Starter Project. 1) Introduction</title><content type="html">&lt;a href="http://code.google.com/appengine/docs/whatisgoogleappengine.html"&gt;Google App Engine&lt;/a&gt; (GAE) is Google's web application development environment. It makes it easy to create web sites that run on Google's infrastructure.&amp;nbsp;It runs application code in &lt;a href="http://code.google.com/appengine/docs/java/runtime.html#The_Sandbox"&gt;sandboxes&lt;/a&gt;, 30 seconds of single-threaded execution with no file access or spawning of other processes. And it&amp;nbsp;&amp;nbsp;provides access to some Google's highly scalable resources, most notably a &lt;a href="http://en.wikipedia.org/wiki/BigTable"&gt;BigTable&lt;/a&gt; based&amp;nbsp;&lt;a href="http://code.google.com/appengine/docs/java/datastore/overview.html"&gt;datastore&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://code.google.com/webtoolkit/overview.html"&gt;Google Web Toolkit&lt;/a&gt; (GWT) is Google's JavaScript development environment. It compiles Java into JavaScript, supports Ajax style programming and optimises the JavaScript for the main browsers.&lt;br /&gt;
&lt;br /&gt;
There is a well-thought out &lt;a href="http://code.google.com/webtoolkit/doc/1.6/DevGuideServerCommunication.html"&gt;RPC communication protocol&lt;/a&gt; between GWT and GAE and a GAE&amp;nbsp;&lt;a href="http://code.google.com/appengine/docs/java/tools/devserver.html"&gt;hosted mode&lt;/a&gt; that supports single-session debugging of GAE and GWT apps in the &lt;a href="http://code.google.com/eclipse/"&gt;Eclipse IDE&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
The benefits of developing under GAE and GWT appear to be&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Massive server and database scalability&lt;/li&gt;
&lt;li&gt;Learning the Google server session way: Serving up a reponse in under 30 seconds in a single threaded servlet. If I can do this then Google can make my web applications massively scalable and robust by &amp;nbsp;simply killing and discarding and server response that take more than 30 seconds.&lt;/li&gt;
&lt;li&gt;A good AJAX-ey user experience on web clients. GWT (like all AJAX clients) calls the server in the background so that it has server data available locally to update the screen when the user requests it.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Learning and evaluating the GAE and GWT development tools. Hosted mode, Eclipse development environment, server logs, etc&lt;/li&gt;
&lt;li&gt;Learning about Google frameworks, tools and applications.&lt;/li&gt;
&lt;/ul&gt;
I have been playing with GAE and GWT in my spare time over the last few months, mostly building and tweaking the examples. To find out how GAE+GWT are to use for real development, I am giving myself a simple but non-trivial project to see how long it takes to develop a robust, real world product.&lt;br /&gt;
&lt;br /&gt;
My &lt;a href="http://draft.blogger.com/post-edit.g?blogID=8720550037867345187&amp;amp;postID=1214221784865586738" name="goals"&gt;goals&lt;/a&gt; are&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Test DataStore access rates.&lt;/li&gt;
&lt;li&gt;Test client side responsiveness while fetching a lot of data from the server.&lt;/li&gt;
&lt;li&gt;Evaluate the GWT and GAE development environments for doing substantial work quickly and with decent quality.&lt;/li&gt;
&lt;li&gt;Evaluate the&amp;nbsp;robustness&amp;nbsp;of the GAE model of doing work in 30 second chunks.&lt;/li&gt;
&lt;li&gt;Evaluate data store scalability.&lt;/li&gt;
&lt;li&gt;Create a few re-usable components.&lt;/li&gt;
&lt;li&gt;Learn how to create a simple UI. My design skills are limited and I like the sparse Google web page lay-outs so I hope there some widgets and examples for building sparse Googly web pages.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
That describes my motivations for toying with GAE and GWT. In my next post I will specify my GAE+GWT app. Feel welcome to send me suggestions before then.&lt;br /&gt;
&lt;br /&gt;
You can watch this project progress &lt;a href="http://peterwilliams97.blogspot.com/search?q=GAE+%2B+GWT+Starter+Project"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8720550037867345187-1214221784865586738?l=peterwilliams97.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/D8GHV8XuhDlzqJfMyGHwJcGDK1Q/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/D8GHV8XuhDlzqJfMyGHwJcGDK1Q/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/D8GHV8XuhDlzqJfMyGHwJcGDK1Q/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/D8GHV8XuhDlzqJfMyGHwJcGDK1Q/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=0lSg3cEYUAg:SoICTSsjMwo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=0lSg3cEYUAg:SoICTSsjMwo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=0lSg3cEYUAg:SoICTSsjMwo:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=0lSg3cEYUAg:SoICTSsjMwo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=0lSg3cEYUAg:SoICTSsjMwo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=0lSg3cEYUAg:SoICTSsjMwo:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=0lSg3cEYUAg:SoICTSsjMwo:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=0lSg3cEYUAg:SoICTSsjMwo:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=0lSg3cEYUAg:SoICTSsjMwo:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=0lSg3cEYUAg:SoICTSsjMwo:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=0lSg3cEYUAg:SoICTSsjMwo:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=0lSg3cEYUAg:SoICTSsjMwo:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=0lSg3cEYUAg:SoICTSsjMwo:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogitErgoSum/~4/0lSg3cEYUAg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://peterwilliams97.blogspot.com/feeds/1214221784865586738/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8720550037867345187&amp;postID=1214221784865586738" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8720550037867345187/posts/default/1214221784865586738?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8720550037867345187/posts/default/1214221784865586738?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BlogitErgoSum/~3/0lSg3cEYUAg/gae-gwt-starter-project-1-introduction.html" title="GAE + GWT Starter Project. 1) Introduction" /><author><name>Peter Williams</name><uri>http://www.blogger.com/profile/09350055705252093886</uri><email>Peter.Williams.97@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="13199266468978924381" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><georss:point>-37.85286499016262 145.05231857299805</georss:point><feedburner:origLink>http://peterwilliams97.blogspot.com/2009/08/gae-gwt-starter-project-1-introduction.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0QBRnc9eSp7ImA9WxNTFE0.&quot;"><id>tag:blogger.com,1999:blog-8720550037867345187.post-4658644913204413680</id><published>2009-08-16T10:56:00.005+10:00</published><updated>2009-08-16T16:49:17.961+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-16T16:49:17.961+10:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="document management" /><title>Open Goverment Made Simple</title><content type="html">There has been a lot of talk about &lt;a href="http://radar.oreilly.com/2009/03/bulk-data-downloads-government-transparency-breakthrough.html"&gt;Open Government&lt;/a&gt; recently, including &lt;a href="http://deloittedigital.blogspot.com/2009/08/open-government-heating-up.html"&gt;this&lt;/a&gt;&amp;nbsp;from &lt;a href="http://twitter.com/rexster"&gt;Peter Williams&lt;/a&gt;&lt;br /&gt;
&lt;blockquote&gt;
"Australian governments should adopt international standards of open publishing as far as possible. Material released for public information by Australian governments should be released under a creative commons licence."

or in simple terms "make public data open and free".&lt;/blockquote&gt;
That is useful, clear and straightforward.&lt;br /&gt;
&lt;br /&gt;
So how to do it?&lt;br /&gt;
&lt;br /&gt;
My experience in organising company data over the last 10 years is that the teams I have worked in have tried many &lt;a href="http://en.wikipedia.org/wiki/List_of_content_management_systems"&gt;content management systems&lt;/a&gt;&amp;nbsp;(CMSs) and none of them were satisfying to use (though some were interesting to implement.) Inevitably the document taxonomies that made sense to the site administrators did not work for most of the users and the users soon gave up trying to find things through the CMS.&lt;br /&gt;
&lt;br /&gt;
Then one day someone in the company I was working at &amp;nbsp;purchased a &lt;a href="http://en.wikipedia.org/wiki/Google_Search_Appliance"&gt;Google Search Appliannce&lt;/a&gt;&amp;nbsp;(GSA) and indexed most of our&amp;nbsp;intranet&amp;nbsp;with it. After that everybody could find all the documents they knew existed on the&amp;nbsp;intranet &amp;nbsp;and discovered useful ones they did not know existed.&lt;br /&gt;
&lt;br /&gt;
To be fair, things were not quite that simple. Most companies need reliable storage, decent version tracking, access control and many other things that CMSs provide. However people need to be able to find documents much more than they need these other things. Very few people need version tracked, access controlled documents that they cannot find in the first place.&lt;br /&gt;
&lt;br /&gt;
So why don't goverments just make their data visible to internet search engines and store it somewhere secure with some simple versioning system now, and then do the fancy stuff later? Why are they are investing in CMSs like &lt;a href="http://egovau.blogspot.com/2008/06/considering-using-microsoft-sharepoint.html"&gt;Sharepoint&lt;/a&gt;?&lt;br /&gt;
&lt;br /&gt;
The reason we did not do this in the companies I worked in was that many of the features in the CMSs we used were useful and the people who implemented the systems decided they needed all these features. Finding documents was just one of several check-boxes on their requirements documents. They were acting as implementers and experts, not users. The systems they ended up with made perfect sense to everyone except the users.&lt;br /&gt;
&lt;br /&gt;
The interesting thing about this was the implementers were users in most cases. They were aware of the limitations of CMSs but they had to follow either the direction of their users who had had not used CMSs enough and to understand how badly they would work in practice or the direction of their managers and key stakeholders who had heard that CMSs were good. The person who got &amp;nbsp;the GSA was an IT guy who just went out and tried it without surveying users or bringing in CMS vendors to talk to his key stakeholders.&lt;br /&gt;
&lt;br /&gt;
For a different perspective on Open Government, read some &lt;a href="http://radar.oreilly.com/2009/03/bulk-data-downloads-government-transparency-breakthrough.html"&gt;Tim O'Reilly&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8720550037867345187-4658644913204413680?l=peterwilliams97.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Y2hQg4TdrfwnQExEbJO1GJVU6Ig/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Y2hQg4TdrfwnQExEbJO1GJVU6Ig/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Y2hQg4TdrfwnQExEbJO1GJVU6Ig/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Y2hQg4TdrfwnQExEbJO1GJVU6Ig/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=gqdqb8MCw7c:VzWM33c1mbA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=gqdqb8MCw7c:VzWM33c1mbA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=gqdqb8MCw7c:VzWM33c1mbA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=gqdqb8MCw7c:VzWM33c1mbA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=gqdqb8MCw7c:VzWM33c1mbA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=gqdqb8MCw7c:VzWM33c1mbA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=gqdqb8MCw7c:VzWM33c1mbA:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=gqdqb8MCw7c:VzWM33c1mbA:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=gqdqb8MCw7c:VzWM33c1mbA:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=gqdqb8MCw7c:VzWM33c1mbA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=gqdqb8MCw7c:VzWM33c1mbA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=gqdqb8MCw7c:VzWM33c1mbA:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=gqdqb8MCw7c:VzWM33c1mbA:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogitErgoSum/~4/gqdqb8MCw7c" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://peterwilliams97.blogspot.com/feeds/4658644913204413680/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8720550037867345187&amp;postID=4658644913204413680" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8720550037867345187/posts/default/4658644913204413680?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8720550037867345187/posts/default/4658644913204413680?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BlogitErgoSum/~3/gqdqb8MCw7c/open-goverment-made-simple.html" title="Open Goverment Made Simple" /><author><name>Peter Williams</name><uri>http://www.blogger.com/profile/09350055705252093886</uri><email>Peter.Williams.97@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="13199266468978924381" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><georss:point>-35.28204 149.12858</georss:point><feedburner:origLink>http://peterwilliams97.blogspot.com/2009/08/open-goverment-made-simple.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkYEQXkyfyp7ImA9WxNQEEU.&quot;"><id>tag:blogger.com,1999:blog-8720550037867345187.post-4482759609129967691</id><published>2009-07-16T10:37:00.006+10:00</published><updated>2009-09-16T16:55:00.797+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-16T16:55:00.797+10:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="behavior" /><category scheme="http://www.blogger.com/atom/ns#" term="software development" /><title>When Words Fail</title><content type="html">A while back I worked at a company who made software+hardware products in a maturing market. The company found &amp;nbsp;it needed to deliver higher quality products with more features and was struggling to do so from an old codebase. It had become clear to the management team that late-stage serious defects were the major cause of schedule/quality issues but they had been able to fix this problem.&lt;br /&gt;
&lt;br /&gt;
The codebase management team had a lot of ideas about what the causes were and how to fix them. They had discussed "technical debt", "silo-ing" and other causes. However in the end they settled on two key priorities: taking extreme care with code changes and sticking with established QA processes to minimise the number of introduced bugs.&lt;br /&gt;
&lt;br /&gt;
Eventually the project was given to me to manage. One of the (many) things the development team had done well was to document each bug and cross-reference bug fixes against &amp;nbsp;the source code.&amp;nbsp;I analysed about 100 recently fixed serious software bugs, looked up their fixes in the SCM and then looked up the date at which the code changes causing the bug were checked in. This showed that most of the bugs being found had been introduced months before they were discovered. It was clear that the late-stage defects were dominated by latent bugs being unmasked by changes, not by bugs introduced by changes.&lt;br /&gt;
&lt;br /&gt;
Some changes to the development process were needed. The development group was responsible for creating code without introducing bugs and the QA group was responsible for finding the bugs the development team missed. However the QA process was unsuited to discovering latent bugs fast because it had a long cycle based on testing user scenarios. Therefore I&amp;nbsp;got small teams of developers and QAs to work closely together to find, fix and verify bugs&amp;nbsp;and I took some developers away other work to develop a system to find and fix (and&amp;nbsp;eventually&amp;nbsp;prevent the&amp;nbsp;introduction&amp;nbsp;of more) latent bugs. This work is described &lt;a href="http://peterwilliams97.blogspot.com/2008/10/test-automation-for-complex-systems.html"&gt;here&lt;/a&gt;.&amp;nbsp;With these changes in place, code stability improved rapidly and late-stage serious bugs essentially ceased to be found.&lt;br /&gt;
&lt;br /&gt;
That was a fairly straightforward technical solution to a fairly straightforward &amp;nbsp;technical problem. So why had the very capable management team who had known the&amp;nbsp;underlying causes (technical debt and silo-ing) not been able to fix the problem for so long?&lt;br /&gt;
&lt;br /&gt;
Change is known to be difficult in organisations and there is an&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Change_management_(people)"&gt;industry built around dealing with this&lt;/a&gt;. However our immediate problem was not an inability to persuade people to change. In fact consultation and review had been distracting people from doing the experimentation required to find the underlying causes of the problem was and how to fix them. The more people talked about the problem the further they got from the solution (hence this post's title). &lt;br /&gt;
&lt;br /&gt;
The situation reminded me of Uncle Bob Martin's &lt;a href="http://weblogs.java.net/blog/rmartin/archive/2003/09/aristotles_erro.html"&gt;Agile Smagile&lt;/a&gt;&lt;br /&gt;
&lt;blockquote&gt;
As I said before, going meta is a good thing. However, going meta requires experimental evidence. Unfortunately the industry has latched on to the word "Agile" and has begun to use it as a prefix that means "good". This is very unfortunate, and discerning software professionals should be very wary of any new concept that bears the "agile" prefix. The concept has been taken meta, but there is no experimental evidence that demonstrates that "agile", by itself, is good.&lt;/blockquote&gt;
The deeply ingrained practices in the organisation I worked in had grown out of &amp;nbsp;ideas that had worked well in the past. They had been good enough to cover a wide range of development scenarios for a long while and were clearly based on experimental evidence from past development. However somewhere along the way people had stopped experimenting and modifying the rules, and started just following the rules. This is what Uncle Bob called "going meta". The problem for our organisation was that the set of rules it had got to when it stopped experimenting were not universally true, they were only true for the type of the development they were doing when they stopped changing the rules.&lt;br /&gt;
&lt;br /&gt;
The changes I made to detect and fix latent bugs (&lt;a href="http://peterwilliams97.blogspot.com/2008/10/test-automation-for-complex-systems.html"&gt;high-coverage automated system testing&lt;/a&gt;, static analysis with &lt;a href="http://www.klocwork.com/"&gt;Klocwork&lt;/a&gt;&amp;nbsp;and refactoring with unit tests) were adopted across the development organisation and became part of the standard development process, at least for the time I was there. That was good but I wondered if those practices would become a fixed part of the new development process because they had worked some time in the past. And I wondered whether they would prevent the company from addressing problems that arose in the future, just as the practises that had worked well in the past had come to do.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8720550037867345187-4482759609129967691?l=peterwilliams97.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/GBPFeNcOCqZxRXCLAIqW2BFbJIg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/GBPFeNcOCqZxRXCLAIqW2BFbJIg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/GBPFeNcOCqZxRXCLAIqW2BFbJIg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/GBPFeNcOCqZxRXCLAIqW2BFbJIg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=4qc4mVmnrSw:CojIbSLDVPw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=4qc4mVmnrSw:CojIbSLDVPw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=4qc4mVmnrSw:CojIbSLDVPw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=4qc4mVmnrSw:CojIbSLDVPw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=4qc4mVmnrSw:CojIbSLDVPw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=4qc4mVmnrSw:CojIbSLDVPw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=4qc4mVmnrSw:CojIbSLDVPw:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=4qc4mVmnrSw:CojIbSLDVPw:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=4qc4mVmnrSw:CojIbSLDVPw:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=4qc4mVmnrSw:CojIbSLDVPw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=4qc4mVmnrSw:CojIbSLDVPw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=4qc4mVmnrSw:CojIbSLDVPw:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=4qc4mVmnrSw:CojIbSLDVPw:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogitErgoSum/~4/4qc4mVmnrSw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://peterwilliams97.blogspot.com/feeds/4482759609129967691/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8720550037867345187&amp;postID=4482759609129967691" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8720550037867345187/posts/default/4482759609129967691?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8720550037867345187/posts/default/4482759609129967691?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BlogitErgoSum/~3/4qc4mVmnrSw/when-words-fail.html" title="When Words Fail" /><author><name>Peter Williams</name><uri>http://www.blogger.com/profile/09350055705252093886</uri><email>Peter.Williams.97@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="13199266468978924381" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><georss:point>-37.424838 143.894483</georss:point><feedburner:origLink>http://peterwilliams97.blogspot.com/2009/07/when-words-fail.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkYMR3czfip7ImA9WxJWFkk.&quot;"><id>tag:blogger.com,1999:blog-8720550037867345187.post-2506641822894060789</id><published>2009-06-22T13:03:00.002+10:00</published><updated>2009-06-22T13:09:46.986+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-22T13:09:46.986+10:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="software development" /><title>Minimal Non-C++Programmer Bamboozling C++ Question</title><content type="html">I recently read a stream of blog posts about why developers don't like C++ for general purpose programming. This&amp;nbsp;&lt;a href="http://www.mistybeach.com/articles/WhyIDontLikeCPlusPlusForLargeProjects.html"&gt;post&lt;/a&gt;&amp;nbsp;typifies much of the criticism of C++'s complexity. It includes an interview question about creating a C++ class that behaves like a class in a high level language such as Java. The author says that he uses this to weed out job applicants who haven't used C++ for real work.&lt;br /&gt;
&lt;br /&gt;
It strikes me that tripping up developers with C++'s many oddnesses is much easier than that. Here is a simple question that I believe will confuse many non-C++ programmers:&lt;br /&gt;
&lt;br /&gt;
What is the output of this program?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;#include &amp;lt;string&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;#include &amp;lt;iostream&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;using namespace std;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;class Parent {&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;public:&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;string func() &amp;nbsp;{ return "parent"; }&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;virtual string vfunc() { return "parent+virtual"; }&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;};&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;class Child : public Parent {&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;string func() &amp;nbsp;{ return "child"; }&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;virtual string vfunc() { return "child+virtual"; }&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;};&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;string test1(Parent parent) &amp;nbsp;{&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;return parent.func() + " - " + &amp;nbsp;parent.vfunc();&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;string test2(Parent&amp;amp; parent) &amp;nbsp;{&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;return parent.func() + " - " + &amp;nbsp;parent.vfunc();&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;int main() {&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;Child &amp;nbsp;child;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;cout &amp;lt;&amp;lt; "test1: " &amp;lt;&amp;lt; test1(child) &amp;lt;&amp;lt; endl;&lt;/span&gt;&lt;br /&gt;
&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;cout &amp;lt;&amp;lt; "test2: " &amp;lt;&amp;lt; test2(child) &amp;lt;&amp;lt; endl;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
I have seen C++ interviewers ask questions like this but only show test1 then ask what &amp;nbsp;is on the stack when test1 is invoked.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8720550037867345187-2506641822894060789?l=peterwilliams97.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/3qCs3nCkp55MOHelm_Bc__376JU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3qCs3nCkp55MOHelm_Bc__376JU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/3qCs3nCkp55MOHelm_Bc__376JU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3qCs3nCkp55MOHelm_Bc__376JU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=SLz7-A29eJo:rUCy1v3Fbws:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=SLz7-A29eJo:rUCy1v3Fbws:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=SLz7-A29eJo:rUCy1v3Fbws:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=SLz7-A29eJo:rUCy1v3Fbws:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=SLz7-A29eJo:rUCy1v3Fbws:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=SLz7-A29eJo:rUCy1v3Fbws:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=SLz7-A29eJo:rUCy1v3Fbws:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=SLz7-A29eJo:rUCy1v3Fbws:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=SLz7-A29eJo:rUCy1v3Fbws:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=SLz7-A29eJo:rUCy1v3Fbws:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=SLz7-A29eJo:rUCy1v3Fbws:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=SLz7-A29eJo:rUCy1v3Fbws:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=SLz7-A29eJo:rUCy1v3Fbws:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogitErgoSum/~4/SLz7-A29eJo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://peterwilliams97.blogspot.com/feeds/2506641822894060789/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8720550037867345187&amp;postID=2506641822894060789" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8720550037867345187/posts/default/2506641822894060789?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8720550037867345187/posts/default/2506641822894060789?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BlogitErgoSum/~3/SLz7-A29eJo/minimal-non-cprogrammer-bamboozling-c.html" title="Minimal Non-C++Programmer Bamboozling C++ Question" /><author><name>Peter Williams</name><uri>http://www.blogger.com/profile/09350055705252093886</uri><email>Peter.Williams.97@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="13199266468978924381" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><georss:point>-37.424838 143.894483</georss:point><feedburner:origLink>http://peterwilliams97.blogspot.com/2009/06/minimal-non-cprogrammer-bamboozling-c.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0cGQXk5fSp7ImA9WxJWEkU.&quot;"><id>tag:blogger.com,1999:blog-8720550037867345187.post-7318337622516565400</id><published>2009-06-17T09:47:00.003+10:00</published><updated>2009-06-18T09:23:40.725+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-18T09:23:40.725+10:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="software development" /><category scheme="http://www.blogger.com/atom/ns#" term="google" /><title>It's Time for GWTing</title><content type="html">I am sitting up late at night working on my &lt;a href="http://code.google.com/webtoolkit/"&gt;GWT&lt;/a&gt; project. The interesting learning is finished and the satisfaction of a working product still to come. &lt;a href="http://www.youtube.com/watch?v=9jykIqQxEOw"&gt;It's time&lt;/a&gt; to get in the groove of grinding out good code quickly and cleanly.&lt;br /&gt;
&lt;br /&gt;
I need some background music. &lt;a href="http://www.youtube.com/watch?v=K9hZ7kjgFh4"&gt;It's time&lt;/a&gt;&amp;nbsp;to get out my record collection and cassette tape recorder and make a programming tape. Was that a flashback to the 70s?&amp;nbsp;&lt;a href="http://www.vandenbrande.com/wp/2009/06/breadbox64-a-twitter-client-for-the-c64/"&gt;Twitter app developers&lt;/a&gt;&amp;nbsp;are revisiting the 70s, but I can't even remember the 70s and there are no rumours of the GWT team doing a Commodore 64 port, so I will stick with the modern way of doing a programming tape.&lt;br /&gt;
&lt;br /&gt;
&lt;table&gt;

&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/uGnn7_7Rxwk&amp;hl=en&amp;fs=1&amp;rel=0"&gt;

&lt;/param&gt;
&lt;param name="allowFullScreen" value="true"&gt;

&lt;/param&gt;
&lt;param name="allowscriptaccess" value="always"&gt;

&lt;/param&gt;
&lt;embed src="http://www.youtube.com/v/uGnn7_7Rxwk&amp;hl=en&amp;fs=1&amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;/td&gt;

&lt;td&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Zgo1Y8c9gmg&amp;hl=en&amp;fs=1&amp;rel=0"&gt;
&lt;/param&gt;
&lt;param name="allowFullScreen" value="true"&gt;
&lt;/param&gt;
&lt;param name="allowscriptaccess" value="always"&gt;
&lt;/param&gt;
&lt;embed src="http://www.youtube.com/v/Zgo1Y8c9gmg&amp;hl=en&amp;fs=1&amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/iUmtSpGhMEs&amp;hl=en&amp;fs=1&amp;rel=0"&gt;


&lt;/param&gt;
&lt;param name="allowFullScreen" value="true"&gt;


&lt;/param&gt;
&lt;param name="allowscriptaccess" value="always"&gt;


&lt;/param&gt;
&lt;embed src="http://www.youtube.com/v/iUmtSpGhMEs&amp;hl=en&amp;fs=1&amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;/td&gt;
&lt;td&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/fQ8d2EB435Q&amp;hl=en&amp;fs=1&amp;rel=0"&gt;

&lt;/param&gt;
&lt;param name="allowFullScreen" value="true"&gt;

&lt;/param&gt;
&lt;param name="allowscriptaccess" value="always"&gt;

&lt;/param&gt;
&lt;embed src="http://www.youtube.com/v/fQ8d2EB435Q&amp;hl=en&amp;fs=1&amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/3__s39V3mYE&amp;hl=en&amp;fs=1&amp;rel=0"&gt;




&lt;/param&gt;
&lt;param name="allowFullScreen" value="true"&gt;




&lt;/param&gt;
&lt;param name="allowscriptaccess" value="always"&gt;




&lt;/param&gt;
&lt;embed src="http://www.youtube.com/v/3__s39V3mYE&amp;hl=en&amp;fs=1&amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;/td&gt;
&lt;td&gt;&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/7EmntlxTcPc&amp;hl=en&amp;fs=1&amp;rel=0"&gt;




&lt;/param&gt;
&lt;param name="allowFullScreen" value="true"&gt;




&lt;/param&gt;
&lt;param name="allowscriptaccess" value="always"&gt;




&lt;/param&gt;
&lt;embed src="http://www.youtube.com/v/7EmntlxTcPc&amp;hl=en&amp;fs=1&amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8720550037867345187-7318337622516565400?l=peterwilliams97.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/HxwNcQZD04qUOsTwHv-VI9DBUAI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/HxwNcQZD04qUOsTwHv-VI9DBUAI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/HxwNcQZD04qUOsTwHv-VI9DBUAI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/HxwNcQZD04qUOsTwHv-VI9DBUAI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=AoIl6BYwZTg:N3_mvywzE5k:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=AoIl6BYwZTg:N3_mvywzE5k:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=AoIl6BYwZTg:N3_mvywzE5k:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=AoIl6BYwZTg:N3_mvywzE5k:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=AoIl6BYwZTg:N3_mvywzE5k:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=AoIl6BYwZTg:N3_mvywzE5k:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=AoIl6BYwZTg:N3_mvywzE5k:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=AoIl6BYwZTg:N3_mvywzE5k:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=AoIl6BYwZTg:N3_mvywzE5k:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=AoIl6BYwZTg:N3_mvywzE5k:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=AoIl6BYwZTg:N3_mvywzE5k:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=AoIl6BYwZTg:N3_mvywzE5k:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=AoIl6BYwZTg:N3_mvywzE5k:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogitErgoSum/~4/AoIl6BYwZTg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://peterwilliams97.blogspot.com/feeds/7318337622516565400/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8720550037867345187&amp;postID=7318337622516565400" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8720550037867345187/posts/default/7318337622516565400?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8720550037867345187/posts/default/7318337622516565400?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BlogitErgoSum/~3/AoIl6BYwZTg/its-time-for-gwting.html" title="It's Time for GWTing" /><author><name>Peter Williams</name><uri>http://www.blogger.com/profile/09350055705252093886</uri><email>Peter.Williams.97@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="13199266468978924381" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><georss:point>-36.308063 145.049552</georss:point><feedburner:origLink>http://peterwilliams97.blogspot.com/2009/06/its-time-for-gwting.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUAHQHs6fCp7ImA9WxJXEEs.&quot;"><id>tag:blogger.com,1999:blog-8720550037867345187.post-16788268115390853</id><published>2009-06-04T08:17:00.001+10:00</published><updated>2009-06-04T08:22:11.514+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-04T08:22:11.514+10:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="prediction" /><category scheme="http://www.blogger.com/atom/ns#" term="google" /><category scheme="http://www.blogger.com/atom/ns#" term="medical" /><title>Google Flu Trends for Australia</title><content type="html">&amp;nbsp;This is from the&amp;nbsp;&lt;a href="http://google-au.blogspot.com/2009/06/google-monitors-influenza-trends-in.html"&gt;Google Down Under&lt;/a&gt;&amp;nbsp;blog this morning.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;iframe frameborder="2" height="542" src="http://www.google.org/flutrends/intl/en_au/" width="810"&gt;&lt;/iframe&gt;

&lt;br /&gt;
&lt;span style="font-size: 24px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: x-large;"&gt;&lt;a href="http://www.google.org/about/flutrends/how.html"&gt;How does this work?&lt;/a&gt;&lt;/span&gt;&amp;nbsp;(from the same website)&lt;br /&gt;
&lt;blockquote&gt;
We have found a close relationship between how many people search for flu-related topics and how many people actually have flu symptoms. Of course, not every person who searches for "flu" is actually sick, but a pattern emerges when all the flu-related search queries are added together. We compared our query counts with traditional flu surveillance systems and found that many search queries tend to be popular exactly when flu season is happening. By counting how often we see these search queries, we can estimate how much flu is circulating in different states and countries around the world. Our &lt;a href="http://www.nature.com/nature/journal/v457/n7232/full/nature07634.html"&gt;&lt;span style="color: black; text-decoration: none;"&gt;results &lt;/span&gt;&lt;/a&gt;&amp;nbsp;have been published in the journal Nature.&lt;/blockquote&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8720550037867345187-16788268115390853?l=peterwilliams97.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/FmVvZhwLHIi00C7I08sZ4-g3aZU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/FmVvZhwLHIi00C7I08sZ4-g3aZU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/FmVvZhwLHIi00C7I08sZ4-g3aZU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/FmVvZhwLHIi00C7I08sZ4-g3aZU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=y7a3x0sujTQ:BDFlQ_7ZQ-A:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=y7a3x0sujTQ:BDFlQ_7ZQ-A:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=y7a3x0sujTQ:BDFlQ_7ZQ-A:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=y7a3x0sujTQ:BDFlQ_7ZQ-A:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=y7a3x0sujTQ:BDFlQ_7ZQ-A:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=y7a3x0sujTQ:BDFlQ_7ZQ-A:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=y7a3x0sujTQ:BDFlQ_7ZQ-A:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=y7a3x0sujTQ:BDFlQ_7ZQ-A:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=y7a3x0sujTQ:BDFlQ_7ZQ-A:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=y7a3x0sujTQ:BDFlQ_7ZQ-A:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=y7a3x0sujTQ:BDFlQ_7ZQ-A:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=y7a3x0sujTQ:BDFlQ_7ZQ-A:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=y7a3x0sujTQ:BDFlQ_7ZQ-A:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogitErgoSum/~4/y7a3x0sujTQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://peterwilliams97.blogspot.com/feeds/16788268115390853/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8720550037867345187&amp;postID=16788268115390853" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8720550037867345187/posts/default/16788268115390853?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8720550037867345187/posts/default/16788268115390853?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BlogitErgoSum/~3/y7a3x0sujTQ/google-flu-trends-for-australia.html" title="Google Flu Trends for Australia" /><author><name>Peter Williams</name><uri>http://www.blogger.com/profile/09350055705252093886</uri><email>Peter.Williams.97@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="13199266468978924381" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><georss:point>-37.818686 144.956285</georss:point><feedburner:origLink>http://peterwilliams97.blogspot.com/2009/06/google-flu-trends-for-australia.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0QASHYzeip7ImA9WxJQGUQ.&quot;"><id>tag:blogger.com,1999:blog-8720550037867345187.post-3819545282425943049</id><published>2009-06-02T10:14:00.005+10:00</published><updated>2009-06-03T12:15:49.882+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-03T12:15:49.882+10:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="cloud" /><title>Movement to the Cloud</title><content type="html">&lt;div class="western" style="margin-left: 0px; margin-right: 0px;"&gt;
A current major trend in enterprise IT is to re-centralize computing and have smaller clients. Total cost of ownership (TCO) decreases dramatically with centralization because maintaining and upgrading software running in one physical location is easier than doing it on many people's personal computers.&amp;nbsp;&lt;/div&gt;
&lt;div class="western" style="margin-left: 0px; margin-right: 0px;"&gt;
Most client software, even computationally intensive software like high quality graphics, has very low duty cycles. &amp;nbsp;It does nothing most of the time. When you buy expensive PC hardware to support it, you are paying to support peak usage, the few minutes per day when it does the intense computations and you want the user interface to be responsive. The average computer resource usage of this software is very low, much less than 10%. Therefore running the software on a central server is much more efficient. There is the additional benefit that expensive infrastructure such as high-reliability disk storage does not need to be replicated through an organization.&lt;/div&gt;
&lt;div class="western" style="margin-left: 0px; margin-right: 0px;"&gt;
There are many types of cloud services including &lt;a href="http://en.wikipedia.org/wiki/Virtualization"&gt;virtualization&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Software_as_a_service"&gt;SaaS &lt;/a&gt;&amp;nbsp;and &lt;a href="http://en.wikipedia.org/wiki/Web_application"&gt;web applications&lt;/a&gt;&amp;nbsp;. Most of these &amp;nbsp;have become highly effective in the last 10 years. Their development has been driven by companies such as Google, VMware and Salesforce.com who have based their businesses entirely on these types of services and have not pursued desktop computing strategies.&amp;nbsp;&lt;/div&gt;
&lt;div class="western" style="margin-left: 0px; margin-right: 0px;"&gt;
3G netbooks and very capable smart phone make adequate clients for Web Services, SaaS, Virtualization and other cloud offerings.&amp;nbsp; They have the additional advantages of low power consumption that comes from their phone ancestry and mobility.&lt;/div&gt;
&lt;div class="western" style="margin-left: 0px; margin-right: 0px;"&gt;
Here are some stories to support this&amp;nbsp;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;div class="western" style="margin-left: 0px; margin-right: 0px;"&gt;
&lt;span style="color: navy;"&gt;&lt;u&gt;&lt;a class="western" href="http://www.idc.com/getdoc.jsp?containerId=prUS21672009" target="_blank"&gt;Move from Windows Laptops to Netbooks in 4Q08&amp;nbsp;&lt;/a&gt;&lt;/u&gt;&lt;/span&gt;In 4Q08, worldwide PC processor unit shipments declined –17.0% quarter over quarter (QoQ) and –11.4% year over year (YoY); ... Intel's Atom processor for mini-notebook PCs (which Intel calls ''Netbooks'') continued to make a notable difference in the overall market performance but not enough to help the market avoid dramatic decline. Without Atom, worldwide PC processor unit shipments declined –21.7% QoQ and –21.6% YoY&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;div class="western" style="margin-left: 0px; margin-right: 0px;"&gt;
&lt;span style="color: navy;"&gt;&lt;u&gt;&lt;a class="western" href="http://www.slashgear.com/intel-readying-for-rise-of-android-based-netbooks-0232665/" target="_blank"&gt;Intel readying for rise of Android-based netbook&amp;nbsp;&lt;/a&gt;&lt;/u&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;Intel readying for rise of Android-based netbooks Intel is expecting a flurry of Android-based netbooks in late 2009 and throughout 2010, and is preparing to support manufacturers with suitable chipset hardware. That’s according to VentureBeat’s “reliable source”, who suggests that the chipmaker - responsible for the Intel Atom N270 processor found in the vast majority of netbooks on the market today - is betting that Google’s open-source mobile platform will find a niche among what are usually Ubuntu or Windows XP machines&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;div class="western" style="margin-left: 0px; margin-right: 0px;"&gt;
RCR Wireless&amp;nbsp;&lt;span style="color: navy;"&gt;&lt;u&gt;&lt;a class="western" href="http://www.rcrwireless.com/article/20090202/WIRELESS/902029984/1081/2009-wireless-forecast-chips" target="_blank"&gt;2009 Wireless Forecast: Chips&amp;nbsp;&lt;/a&gt;&lt;/u&gt;&lt;/span&gt;Meanwhile, Qualcomm has placed emphasis on its Snapdragon chipset for notebooks, netbooks and mobile Internet devices, with the latter category projected to surge as netbooks bridge the price gap between laptops and handhelds...Qualcomm will have competition, as Intel Corp. — the world’s largest chip maker — has targeted MIDs as PC sales rates slow, hoping to grab some of the market served by Apple Inc.’s iPhone. PC maker Dell Inc. is rumored to be preparing a smart phone play to open new markets. ...Meanwhile, most chip vendors are looking to core strengths and seeking bright spots in the year ahead.&lt;span style="color: #333333;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: navy;"&gt;&lt;u&gt;&lt;a class="western" href="http://www.rcrwireless.com/article/20090121/WIRELESS/901199980/Smartphones-a-bright-spot-for-chips"&gt;Smartphone sales are projected to grow&amp;nbsp;&lt;/a&gt;&lt;/u&gt;&lt;/span&gt;this year — analysts vary on the strength of that growth — and vendors who make GPS, Wi-Fi and Bluetooth chips and 3G modems have a fighting chance, analysts have observed. ...“These are bright spots,” said Will Strauss, principal at Forward Concepts. “3G in general is still growing.”&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;div class="western" style="margin-left: 0px; margin-right: 0px;"&gt;
&lt;span style="color: navy;"&gt;&lt;u&gt;&lt;a class="western" href="http://www.theage.com.au/news/technology/biztech/cloud-computing-ascends-the-mainstream/2009/02/17/1234632818661.html" target="_blank"&gt;Cloud computing ascends the mainstream&lt;/a&gt;&lt;/u&gt;&lt;/span&gt;&amp;nbsp;(The Age 20 Feb 2009) illustrates how mainstream cloud computing has become. Juicy Orange pays 10 to 80 cents per hour for the virtual service, which means it has stopped forking out for physical hardware - it has become a web development company with none of its own computers. "We don't spend hours and days waiting for physical hardware installations any more. I'd be hard-pressed coming up with any real disadvantages. Once we got over the learning hump, it's been nothing but better," says Mr. Murphy&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="western" style="margin-left: 0px; margin-right: 0px;"&gt;
Cloud computing requires fast, reliable and portable network connections. The telecommunication carriers who can provide this will achieve a pricing advantage over their competitors&lt;/div&gt;
&lt;div class="western" style="margin-left: 0px; margin-right: 0px;"&gt;
&lt;/div&gt;
&lt;div class="western" style="margin-left: 0px; margin-right: 0px;"&gt;
&lt;/div&gt;
&lt;h2&gt;




Some Consequences of Movement to the Cloud&lt;br /&gt;&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;div style="margin-left: 0px; margin-right: 0px;"&gt;
Cannibalization of existing sales. What will netbooks do to the PC and laptop value chain? Currently netbooks are&amp;nbsp;&lt;span style="color: navy;"&gt;&lt;u&gt;&lt;a class="western" href="http://news.morningstar.com/articlenet/article.aspx?id=280408"&gt;growing the PC pie&lt;/a&gt;&lt;/u&gt;&lt;/span&gt;&amp;nbsp;but in the longer term US$250 netbooks may  cannibalize US$1000 laptop sales at great cost to Intel and Microsoft. Netbooks are well-suited to cloud computing so netbook + cloud may replace laptop the Microsoft software. Google, salesforce.com, Amazon and other software already works well from the cloud while Microsoft Word does not so well-suited. The $250 vs. $1,000 price difference will drive change.&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;div style="margin-left: 0px; margin-right: 0px;"&gt;
Possible&amp;nbsp;&lt;span style="color: navy;"&gt;&lt;u&gt;&lt;a class="western" href="http://blogs.zdnet.com/open-source/?p=3643"&gt;convergence&lt;/a&gt;&lt;/u&gt;&lt;/span&gt;&amp;nbsp;of smart phones and netbooks.&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;div style="margin-left: 0px; margin-right: 0px;"&gt;
Processor wars. Intel Atom, Qualcomm Snapdragon,&amp;nbsp;&lt;span style="color: navy;"&gt;&lt;u&gt;&lt;a class="western" href="http://uk.reuters.com/article/technologyNewsMolt/idUKTRE51G00620090217?pageNumber=2&amp;amp;virtualBrandChannel=0&amp;amp;sp=true"&gt;Freescale&lt;/a&gt;&lt;/u&gt;&lt;/span&gt;’s ARM based chipset.&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8720550037867345187-3819545282425943049?l=peterwilliams97.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/8XjkhbOfx25w_YZGSrMw5mIyd54/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8XjkhbOfx25w_YZGSrMw5mIyd54/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/8XjkhbOfx25w_YZGSrMw5mIyd54/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8XjkhbOfx25w_YZGSrMw5mIyd54/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=HqQf3LmaqUI:Ij5wojT2SxI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=HqQf3LmaqUI:Ij5wojT2SxI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=HqQf3LmaqUI:Ij5wojT2SxI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=HqQf3LmaqUI:Ij5wojT2SxI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=HqQf3LmaqUI:Ij5wojT2SxI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=HqQf3LmaqUI:Ij5wojT2SxI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=HqQf3LmaqUI:Ij5wojT2SxI:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=HqQf3LmaqUI:Ij5wojT2SxI:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=HqQf3LmaqUI:Ij5wojT2SxI:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=HqQf3LmaqUI:Ij5wojT2SxI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=HqQf3LmaqUI:Ij5wojT2SxI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=HqQf3LmaqUI:Ij5wojT2SxI:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=HqQf3LmaqUI:Ij5wojT2SxI:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogitErgoSum/~4/HqQf3LmaqUI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://peterwilliams97.blogspot.com/feeds/3819545282425943049/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8720550037867345187&amp;postID=3819545282425943049" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8720550037867345187/posts/default/3819545282425943049?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8720550037867345187/posts/default/3819545282425943049?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BlogitErgoSum/~3/HqQf3LmaqUI/movement-to-cloud.html" title="Movement to the Cloud" /><author><name>Peter Williams</name><uri>http://www.blogger.com/profile/09350055705252093886</uri><email>Peter.Williams.97@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="13199266468978924381" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><georss:point>34.421094 -119.6749</georss:point><feedburner:origLink>http://peterwilliams97.blogspot.com/2009/06/movement-to-cloud.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0UNRn49fSp7ImA9WxJQEE8.&quot;"><id>tag:blogger.com,1999:blog-8720550037867345187.post-8564391800340652402</id><published>2009-05-19T10:13:00.003+10:00</published><updated>2009-05-23T07:54:57.065+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-23T07:54:57.065+10:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="technology" /><title>Trying Out Wolfram Alpha</title><content type="html">&lt;a href="http://www.wolframalpha.com/"&gt;Wolfram Alpha&lt;/a&gt;, the new &lt;a href="http://blog.wolfram.com/2009/03/05/wolframalpha-is-coming/"&gt;computational knowledge engine&lt;/a&gt;&amp;nbsp;from  Wolfram Research has been getting a &lt;a href="http://www.google.com/search?q=Wolfram%20Alpha,%20the%20new%20computational%20knowledge%20engine"&gt;good run&lt;/a&gt; &amp;nbsp;in the press this week so I decided to try it out.&lt;br /&gt;
&lt;br /&gt;
It gave&amp;nbsp;pretty good answers for most of the&amp;nbsp;following queries. Try them out yourself.&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www44.wolframalpha.com/input/?i=2,+4,+8,+16,+32"&gt;2, 4, 8, 16, 32&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www11.wolframalpha.com/input/?i=x+x+%2B+y+y+%3C+1+%26%26+x+%3C+0"&gt;x x + y y &amp;lt; 1 &amp;amp;&amp;amp; x &amp;lt; 0&lt;/a&gt;&amp;nbsp;&lt;a href="http://www11.wolframalpha.com/input/?i=x+x+%2B+y+y+%3C+1+%26%26+x+%3C+0"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www13.wolframalpha.com/input/?i=sin(x)%3D(x%2B.5)*(.5-x)%2B0.5"&gt;Sin[x] == (x + 0.5) (0.5 - x) + 0.5&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www13.wolframalpha.com/input/?i=linear+fit+{{1.3,+2.2},+{2.1,+5.8},+{3.7,+10.2},+{4.2,+11.8},{1.3,+2.5},+{2.1,+2.8},+{3.7,+13.2},+{4.2,+11.8}}"&gt;linear fit {{1.3, 2.2}, {2.1, 5.8}, {3.7, 10.2}, {4.2, 11.8},{1.3, 2.5}, {2.1, 2.8}, {3.7, 13.2}, {4.2, 11.8}}&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.wolframalpha.com/input/?i=eigenvalues+%7B%7B4%2C1%2C2%2C2%7D%2C%7B2%2C-1%2C2%2C2%7D%2C%7B4.1%2C1%2C2%2C2%7D%2C%7B2%2C-1%2C2%2C2%7D%7D"&gt;eigenvalues {{4,1,2,2},{2,-1,2,2},{4.1,1,2,2},{2,-1,2,2}}&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.wolframalpha.com/input/?i=svd+%7B%7B1%2C2%7D%2C%7B2%2C4%7D%2C%7B3%2C6%7D%2C%7B4.0001%2C8.001%7D%7D"&gt;svd {{1,2},{2,4},{3,6},{4.0001,8.001}}&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www51.wolframalpha.com/input/?i=google+vs.+yahoo"&gt;google vs.yahoo&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www44.wolframalpha.com/input/?i=lung+cancer"&gt;lung cancer&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www44.wolframalpha.com/input/?i=bovine+tuberculosis+rate+New+Zealand"&gt;bovine tuberculosis rate New Zealand&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www51.wolframalpha.com/input/?i=GDP+per+capita+vs+life+expectancy"&gt;GDP per capita vs life expectancy&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www51.wolframalpha.com/input/?i=number+of+moose+in+Canada"&gt;number of moose in Canada&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.wolframalpha.com/input/?i=infinity+%2B+1"&gt;infinity + 1&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.wolframalpha.com/input/?i=infinity+^+infinity"&gt;infinity ^ infinity&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.wolframalpha.com/input/?i=How+long+does+it+take+to+count+to+infinity%3F"&gt;How long does it take to count to infinity?&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;object height="385" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/5TIOH80Qg7Q&amp;hl=en&amp;fs=1"&gt;




&lt;/param&gt;
&lt;param name="allowFullScreen" value="true"&gt;




&lt;/param&gt;
&lt;param name="allowscriptaccess" value="always"&gt;




&lt;/param&gt;
&lt;embed src="http://www.youtube.com/v/5TIOH80Qg7Q&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8720550037867345187-8564391800340652402?l=peterwilliams97.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/F1wc73PwmVPLutpDKphkkJoBgFE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/F1wc73PwmVPLutpDKphkkJoBgFE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/F1wc73PwmVPLutpDKphkkJoBgFE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/F1wc73PwmVPLutpDKphkkJoBgFE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=9RSC1CR_IlQ:em7MwKZP1tE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=9RSC1CR_IlQ:em7MwKZP1tE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=9RSC1CR_IlQ:em7MwKZP1tE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=9RSC1CR_IlQ:em7MwKZP1tE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=9RSC1CR_IlQ:em7MwKZP1tE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=9RSC1CR_IlQ:em7MwKZP1tE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=9RSC1CR_IlQ:em7MwKZP1tE:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=9RSC1CR_IlQ:em7MwKZP1tE:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=9RSC1CR_IlQ:em7MwKZP1tE:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=9RSC1CR_IlQ:em7MwKZP1tE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=9RSC1CR_IlQ:em7MwKZP1tE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=9RSC1CR_IlQ:em7MwKZP1tE:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=9RSC1CR_IlQ:em7MwKZP1tE:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogitErgoSum/~4/9RSC1CR_IlQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://peterwilliams97.blogspot.com/feeds/8564391800340652402/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8720550037867345187&amp;postID=8564391800340652402" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8720550037867345187/posts/default/8564391800340652402?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8720550037867345187/posts/default/8564391800340652402?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BlogitErgoSum/~3/9RSC1CR_IlQ/trying-out-wolfram-alpha.html" title="Trying Out Wolfram Alpha" /><author><name>Peter Williams</name><uri>http://www.blogger.com/profile/09350055705252093886</uri><email>Peter.Williams.97@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="13199266468978924381" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><georss:point>-37.800785 144.971747</georss:point><feedburner:origLink>http://peterwilliams97.blogspot.com/2009/05/trying-out-wolfram-alpha.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0cHQns8fSp7ImA9WxJQF0o.&quot;"><id>tag:blogger.com,1999:blog-8720550037867345187.post-3828516157623256842</id><published>2009-05-08T19:51:00.026+10:00</published><updated>2009-05-31T23:03:53.575+10:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-31T23:03:53.575+10:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="software development" /><title>Programming @Home</title><content type="html">&lt;table align="center" bgcolor="#FFFFFF" border="0" bordercolor="#FFFFFF" cellpadding="20" valign="center"&gt;

&lt;tbody&gt;
&lt;tr&gt;

&lt;td&gt;&lt;a href="http://4.bp.blogspot.com/_KuHjsPuSSiw/SgP6MZ7Zf_I/AAAAAAAAG4Q/qcWXGevq5cQ/s1600-h/mummy.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_KuHjsPuSSiw/SgP6MZ7Zf_I/AAAAAAAAG4Q/qcWXGevq5cQ/s320/mummy.JPG" /&gt;&lt;/a&gt;
&lt;/td&gt;

&lt;td&gt;I am writing some software for the kids, mostly to give them a chance to participate in the work by drawing pictures, taking digital photos, writing text, choosing colors and, most importantly, testing.&lt;br /&gt;
&lt;br /&gt;
The first thing I need are some tools that will allow me to build a good website fast. I have chosen the following &amp;nbsp;set.&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Ajax (i.e JavaScript which is available on all good browsers) for clients&lt;/li&gt;
&lt;li&gt;Eclipse + JDK&lt;/li&gt;
&lt;li&gt;Java Servlets and JSP for the server.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://peterwilliams97.beanstalkapp.com/"&gt;Beanstalk&lt;/a&gt;&amp;nbsp;for source code management.&lt;/li&gt;
&lt;li&gt;Chrome, IE, Firefox, Opera and Safari for testing.&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;

&lt;/tr&gt;
&lt;tr&gt;

&lt;td&gt;I don't know if these are the best tools for simple web design but they are certainly good enough to get the work done.&lt;br /&gt;
&lt;br /&gt;
I have been sitting and knocking out some fairly interesting web pages at a decent rate. But the work is so mechanical that I am getting bored. I need some background music. The videos on this post helped me get through the day.
&lt;br /&gt;
&lt;br /&gt;
The first application set is &lt;a href="http://peterwilliams9797.appspot.com/index.jsp"&gt;here&lt;/a&gt;. The kids' application is &lt;a href="http://peterwilliams9797.appspot.com/arithmetic.jsp"&gt;here&lt;/a&gt;&amp;nbsp;.&lt;/td&gt;



&lt;td&gt;&lt;object height="265" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Ygi7RQMLcAw&amp;hl=en&amp;fs=1"&gt;








&lt;/param&gt;
&lt;param name="allowFullScreen" value="true"&gt;








&lt;/param&gt;
&lt;param name="allowscriptaccess" value="always"&gt;








&lt;/param&gt;
&lt;embed src="http://www.youtube.com/v/Ygi7RQMLcAw&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="320" height="265"&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;/td&gt;

&lt;/tr&gt;
&lt;tr&gt;

&lt;td&gt;&lt;object height="265" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/LYV6PAckr5w&amp;hl=en&amp;fs=1"&gt;








&lt;/param&gt;
&lt;param name="allowFullScreen" value="true"&gt;








&lt;/param&gt;
&lt;param name="allowscriptaccess" value="always"&gt;








&lt;/param&gt;
&lt;embed src="http://www.youtube.com/v/LYV6PAckr5w&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="320" height="265"&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;/td&gt;


&lt;td&gt;&lt;object height="265" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/kVUZuVZWHkk&amp;hl=en&amp;fs=1"&gt;








&lt;/param&gt;
&lt;embed src="http://www.youtube.com/v/kVUZuVZWHkk&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="320" height="265"&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;/td&gt;

&lt;/tr&gt;
&lt;tr&gt;

&lt;td&gt;&lt;object height="265" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/ZUAjmuYmF_0&amp;hl=en&amp;fs=1"&gt;








&lt;/param&gt;
&lt;param name="allowFullScreen" value="true"&gt;








&lt;/param&gt;
&lt;param name="allowscriptaccess" value="always"&gt;








&lt;/param&gt;
&lt;embed src="http://www.youtube.com/v/ZUAjmuYmF_0&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="320" height="265"&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;/td&gt;




&lt;td&gt;&lt;div class="vcard"&gt;
&lt;img class="photo" height="75" src="http://peterwilliams9797.appspot.com/peter.jpg" width="100" /&gt;&lt;br /&gt;
&lt;strong class="fn"&gt;Peter Williams&lt;/strong&gt;&lt;br /&gt;
Consultant at MAP Research&lt;br /&gt;
90 William St&lt;br /&gt;
Melbourne, VIC, 3000
&lt;/div&gt;
&lt;/td&gt;

&lt;/tr&gt;
&lt;tr&gt;


&lt;td&gt;&lt;object height="265" width="320"&gt;&lt;param name="movie" value="http://www.youtube.com/v/DeLfmrnIjBs&amp;hl=en&amp;fs=1"&gt;








&lt;/param&gt;
&lt;param name="allowFullScreen" value="true"&gt;








&lt;/param&gt;
&lt;param name="allowscriptaccess" value="always"&gt;








&lt;/param&gt;
&lt;embed src="http://www.youtube.com/v/DeLfmrnIjBs&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="320" height="265"&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;/td&gt;


&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

&lt;div  style="clear: both; float: right; margin-bottom: 10px; margin-left: 20px;"&gt;
&lt;iframe border="0" frameborder="1" marginheight="0" marginwidth="0" src="http://peterwilliams9797.appspot.com/clubinfinity.jsp" style="border: 0; height: 600px; margin: 0; width: 750px;"&gt;&lt;/iframe&gt;
&lt;/div&gt;



&lt;iframe src="http://www.google.com/friendconnect/discuss?scope=web&amp;topic=Infinity" style="width:700px;height:500px;" scrolling="no" allowtransparency="true" border="0" frameborder="0" &gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8720550037867345187-3828516157623256842?l=peterwilliams97.blogspot.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/K60u3pplkfYbM3MuTjcGVw4_fEQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/K60u3pplkfYbM3MuTjcGVw4_fEQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/K60u3pplkfYbM3MuTjcGVw4_fEQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/K60u3pplkfYbM3MuTjcGVw4_fEQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=Q05HhuAjp9E:ivvhP1hXsiA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=Q05HhuAjp9E:ivvhP1hXsiA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=Q05HhuAjp9E:ivvhP1hXsiA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=Q05HhuAjp9E:ivvhP1hXsiA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=Q05HhuAjp9E:ivvhP1hXsiA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=Q05HhuAjp9E:ivvhP1hXsiA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=Q05HhuAjp9E:ivvhP1hXsiA:KwTdNBX3Jqk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=Q05HhuAjp9E:ivvhP1hXsiA:KwTdNBX3Jqk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=Q05HhuAjp9E:ivvhP1hXsiA:l6gmwiTKsz0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=l6gmwiTKsz0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=Q05HhuAjp9E:ivvhP1hXsiA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?i=Q05HhuAjp9E:ivvhP1hXsiA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=Q05HhuAjp9E:ivvhP1hXsiA:TzevzKxY174"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=TzevzKxY174" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BlogitErgoSum?a=Q05HhuAjp9E:ivvhP1hXsiA:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BlogitErgoSum?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogitErgoSum/~4/Q05HhuAjp9E" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://peterwilliams97.blogspot.com/feeds/3828516157623256842/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=8720550037867345187&amp;postID=3828516157623256842" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8720550037867345187/posts/default/3828516157623256842?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8720550037867345187/posts/default/3828516157623256842?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/BlogitErgoSum/~3/Q05HhuAjp9E/programming-home.html" title="Programming @Home" /><author><name>Peter Williams</name><uri>http://www.blogger.com/profile/09350055705252093886</uri><email>Peter.Williams.97@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="13199266468978924381" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_KuHjsPuSSiw/SgP6MZ7Zf_I/AAAAAAAAG4Q/qcWXGevq5cQ/s72-c/mummy.JPG" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><georss:point>-27.561302 151.955505</georss:point><feedburner:origLink>http://peterwilliams97.blogspot.com/2009/05/programming-home.html</feedburner:origLink></entry></feed>
