<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7062835374515961810</id><updated>2011-08-21T06:53:22.796-07:00</updated><category term='literature'/><category term='media'/><category term='technology'/><category term='travel'/><category term='software'/><category term='food'/><category term='politics'/><category term='history'/><category term='internet'/><category term='poetry'/><category term='pets'/><category term='music'/><category term='art'/><category term='philosophy'/><category term='ecology trade'/><category term='hardware'/><category term='science'/><title type='text'>A Tapestry of Thoughts</title><subtitle type='html'>Notes along the path of life</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>74</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-7442823108791803151</id><published>2010-11-23T15:57:00.000-08:00</published><updated>2010-11-23T16:07:28.984-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ecology trade'/><title type='text'>Container Ship Pollution</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_7XDJakniA48/TOxXEqoPbaI/AAAAAAAAAaA/aW4eciIPS1U/s1600/containership.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 400px; height: 205px;" src="http://4.bp.blogspot.com/_7XDJakniA48/TOxXEqoPbaI/AAAAAAAAAaA/aW4eciIPS1U/s400/containership.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5542900979060403618" /&gt;&lt;/a&gt;It's not enough that we're filling our oceans with plastic to the tune of Texas sized &lt;a href="http://en.wikipedia.org/wiki/Great_Pacific_Garbage_Patch"&gt;gyres&lt;/a&gt; on both the Atlantic and Pacific ocean, but now a report comes in that finds just one single large container ship emits as much &lt;a href="http://www.greencarreports.com/blog/1020063_pollution-perspective-one-giant-cargo-ship-emits-as-much-as-50-million-ca"&gt;pollution as 50 million cars&lt;/a&gt;.  That's difficult to wrap one's head around.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Then consider that there are 57 such ships now navigating trade around the globe.&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&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/7062835374515961810-7442823108791803151?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/7442823108791803151/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=7442823108791803151' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/7442823108791803151'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/7442823108791803151'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2010/11/container-ship-pollution.html' title='Container Ship Pollution'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_7XDJakniA48/TOxXEqoPbaI/AAAAAAAAAaA/aW4eciIPS1U/s72-c/containership.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-9166481474011855866</id><published>2009-03-27T14:28:00.000-07:00</published><updated>2009-03-27T14:47:37.651-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='technology'/><category scheme='http://www.blogger.com/atom/ns#' term='science'/><title type='text'>Tesla's New Promise</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_7XDJakniA48/Sc1FbzTgY2I/AAAAAAAAAWM/JeGvIJQRvxo/s1600-h/tesla-s.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 266px;" src="http://3.bp.blogspot.com/_7XDJakniA48/Sc1FbzTgY2I/AAAAAAAAAWM/JeGvIJQRvxo/s400/tesla-s.jpg" alt="" id="BLOGGER_PHOTO_ID_5317983078925230946" border="0" /&gt;&lt;/a&gt;Though they're struggling to survive, Tesla is managing to provide one of the most exciting new cars made in America.&lt;br /&gt;&lt;br /&gt;According to Tesla: "With a 300-mile range and 45-minute QuickCharge, the $49,900 Model S can carry five adults and two children in quiet comfort – and you can charge it from any outlet, without ever stopping for gas. World’s first mass-produced electric vehicle offers performance, efficiency and unrivaled utility, making it the only car you’ll ever need."&lt;br /&gt;&lt;br /&gt;But sleek lines and an aggressive stance are only part of the appeal for me.  The interior is beautiful, with a huge &lt;a href="http://i.gizmodo.com/5185966/first-look-at-tesla-model-s-fantastically-giant-touch-lcd-console"&gt;touch panel&lt;/a&gt; dominating the center dash and a single panel glass ceiling.  At pennies per mile, and a move away from oil, this is a bargain.  Some argue that with electricity, we're trading one horrible source of pollution for another.  In truth, nearly half of America's electricity comes from coal burning plants.&lt;br /&gt;&lt;br /&gt;However, moving to electricity is simply the first step in dismantling the supply chain of carbon emitting power.  Switching a relatively small number of plants over to new green technologies (once they become viable) will be a much easier task compared to the one we now face.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.teslamotors.com/models/index.php"&gt;Read more...&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-9166481474011855866?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/9166481474011855866/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=9166481474011855866' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/9166481474011855866'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/9166481474011855866'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2009/03/teslas-new-promise.html' title='Tesla&apos;s New Promise'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_7XDJakniA48/Sc1FbzTgY2I/AAAAAAAAAWM/JeGvIJQRvxo/s72-c/tesla-s.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-602857766535112488</id><published>2008-08-19T11:06:00.000-07:00</published><updated>2008-08-19T11:40:25.993-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><category scheme='http://www.blogger.com/atom/ns#' term='media'/><title type='text'>Pandora Radio</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_7XDJakniA48/SKsMu8TLayI/AAAAAAAAAQc/nnMwymNFU9c/s1600-h/250px-Pandora_%28music_service%29.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_7XDJakniA48/SKsMu8TLayI/AAAAAAAAAQc/nnMwymNFU9c/s400/250px-Pandora_%28music_service%29.png" alt="" id="BLOGGER_PHOTO_ID_5236292992348416802" border="0" /&gt;&lt;/a&gt;&lt;a href="http://pandora.com/"&gt;Pandora Radio&lt;/a&gt; is an interesting experiment that has broadened my music horizons since I discovered it.&lt;br /&gt;&lt;br /&gt;The internet "radio station" gains that name not because it broadcasts over radio signals.  It streams music just like any other internet based on-demand application.  However, it does not allow the user to randomly select tracks from a playlist.  This has facilitated a licensing strategy that fits within Pandora's business model, and actually encourages long term listening.&lt;br /&gt;&lt;br /&gt;But what is perhaps most interesting about Pandora is not how the music is played, but how it is selected.  With Pandora, you create your own channels, by selecting either a genre or an artist.  Selecting an artist, the channel will start with a track by that artist.  From there on out, the music is selected by a sophisticated software algorithm.&lt;br /&gt;&lt;br /&gt;After the initial track, selections are drawn from the &lt;a href="http://en.wikipedia.org/wiki/Music_Genome_Project"&gt;Music Genome Project&lt;/a&gt;, a database of music where songs are classified by up to 500 attributes, or genes.  A hoard of musicians and critics have been enlisted in an ongoing effort to classify music using this criteria.  The genes of each song can then be compared for similarity with other songs.  This allows for an automated system of track selection with surprisingly fruitful results.  Furthermore, the system is interactive, allowing a listener to indicate which tracks they like or dislike, and Pandora Radio will use these preferences to weight future track selection.&lt;br /&gt;&lt;br /&gt;Pandora is available on most operating system platforms, as well as several mobile devices.  I've been enjoying it on my iPhone lately.  Through it, I've found more great music than just about any other source on the internet.  And when a new artist or track is discovered, Pandora Radio features links to music retailers for instance purchase.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-602857766535112488?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://pandora.com/' title='Pandora Radio'/><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/602857766535112488/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=602857766535112488' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/602857766535112488'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/602857766535112488'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2008/08/pandora-radio.html' title='Pandora Radio'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_7XDJakniA48/SKsMu8TLayI/AAAAAAAAAQc/nnMwymNFU9c/s72-c/250px-Pandora_%28music_service%29.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-7577041157231474983</id><published>2008-06-23T01:02:00.001-07:00</published><updated>2008-12-09T14:46:21.996-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='science'/><title type='text'>The Neuroscience of Dance</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_7XDJakniA48/SF9ZGhbnQcI/AAAAAAAAAPY/ZPPtuPWFsTk/s1600-h/6E475B2B-BEBD-B9D8-66D600F1ABF3C8A2_1.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_7XDJakniA48/SF9ZGhbnQcI/AAAAAAAAAPY/ZPPtuPWFsTk/s400/6E475B2B-BEBD-B9D8-66D600F1ABF3C8A2_1.jpg" alt="" id="BLOGGER_PHOTO_ID_5214984862106599874" border="0" /&gt;&lt;/a&gt;Scientific American has published a fascinating &lt;a href="http://www.sciam.com/article.cfm?id=the-neuroscience-of-dance"&gt;article on dance&lt;/a&gt; and the latest research on the brain aimed at understanding how, and even perhaps why, we dance.  The article describes in detail both the questions asked by the research team, as well as novel approaches to identifying the areas of the brain involved with various rhythmic activities.&lt;br /&gt;&lt;br /&gt;Their research points to areas of the brain specialized to detect rhythm, as well as to coordinate body dynamics to a beat.  Instead of just coordinating various areas of the brain, dance has specific regions dedicated to its expression.&lt;br /&gt;&lt;br /&gt;Over hundreds of thousands of years, rhythm has been so central to our existence that our brain has evolved around it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-7577041157231474983?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.sciam.com/article.cfm?id=the-neuroscience-of-dance' title='The Neuroscience of Dance'/><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/7577041157231474983/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=7577041157231474983' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/7577041157231474983'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/7577041157231474983'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2008/06/neuroscience-of-dance.html' title='The Neuroscience of Dance'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_7XDJakniA48/SF9ZGhbnQcI/AAAAAAAAAPY/ZPPtuPWFsTk/s72-c/6E475B2B-BEBD-B9D8-66D600F1ABF3C8A2_1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-1753955530038784948</id><published>2008-06-17T17:22:00.001-07:00</published><updated>2008-12-09T14:46:22.163-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='philosophy'/><title type='text'>The Eight Verses of Training the Mind</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_7XDJakniA48/SFhWF_yQnyI/AAAAAAAAAO4/_iCF63PLXdg/s1600-h/Rigpa.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_7XDJakniA48/SFhWF_yQnyI/AAAAAAAAAO4/_iCF63PLXdg/s400/Rigpa.jpg" alt="" id="BLOGGER_PHOTO_ID_5213011229702922018" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;By thinking of all sentient beings&lt;br /&gt;As more precious than a wish-fulfilling jewel&lt;br /&gt;For accomplishing the highest aim,&lt;br /&gt;I will always hold them dear.&lt;br /&gt;&lt;br /&gt;Whenever I'm in the company of others,&lt;br /&gt;I will regard myself as the lowest among all,&lt;br /&gt;And from the depths of my heart&lt;br /&gt;Cherish others as supreme.&lt;br /&gt;&lt;br /&gt;In my every action, I will watch my mind,&lt;br /&gt;And the moment destructive emotions arise,&lt;br /&gt;I will confront them strongly and avert them,&lt;br /&gt;Since they will hurt both me and others.&lt;br /&gt;&lt;br /&gt;Whenever I see ill-natured people,&lt;br /&gt;Or those overwhelmed by heavy misdeeds or suffering,&lt;br /&gt;I will cherish them as something rare,&lt;br /&gt;As though I'd found a priceless treasure.&lt;br /&gt;&lt;br /&gt;Whenever someone out of envy&lt;br /&gt;Does me wrong by attacking or belittling me,&lt;br /&gt;I will take defeat upon myself,&lt;br /&gt;And give the victory to others.&lt;br /&gt;&lt;br /&gt;Even when someone I have helped,&lt;br /&gt;Or in whom I have placed great hopes&lt;br /&gt;Mistreats me very unjustly,&lt;br /&gt;I will view that person as a true spiritual teacher.&lt;br /&gt;&lt;br /&gt;In brief, directly or indirectly,&lt;br /&gt;I will offer help and happiness to all my mothers,&lt;br /&gt;And secretly take upon myself&lt;br /&gt;All their hurt and suffering.&lt;br /&gt;&lt;br /&gt;I will learn to keep all these practices&lt;br /&gt;Untainted by thoughts of the eight worldly concerns.&lt;br /&gt;May I recognize all things as like illusions,&lt;br /&gt;And, without attachment, gain freedom from bondage.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Credit:&lt;/span&gt; &lt;a href="http://www.rigpawiki.org/index.php?title=Eight_Verses_of_Training_the_Mind"&gt;RigpaWiki&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-1753955530038784948?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/1753955530038784948/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=1753955530038784948' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/1753955530038784948'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/1753955530038784948'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2008/06/eight-verses-of-training-mind.html' title='The Eight Verses of Training the Mind'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_7XDJakniA48/SFhWF_yQnyI/AAAAAAAAAO4/_iCF63PLXdg/s72-c/Rigpa.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-6677649938000393376</id><published>2008-05-20T16:52:00.000-07:00</published><updated>2008-12-09T14:46:22.618-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='food'/><title type='text'>Delille's 2003 Delight: D2</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_7XDJakniA48/SDNknnBzA5I/AAAAAAAAAOQ/dv-9RClWiWQ/s1600-h/DelilleD2.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_7XDJakniA48/SDNknnBzA5I/AAAAAAAAAOQ/dv-9RClWiWQ/s400/DelilleD2.jpg" alt="" id="BLOGGER_PHOTO_ID_5202612626197250962" border="0" /&gt;&lt;/a&gt;Sip by sip, D2 is simply an impressive bottle of wine.  It starts off with berry flavors, I actually taste cherry...  Then within a few seconds, pepper becomes dominant on the palette.  And as the flavor fades, it's the warmth of oak and a hint of almond that linger.&lt;br /&gt;&lt;br /&gt;D2's complexity is owed to the fact that it's a blend of Merlot, Cabernet Sauvignon, Petit Verdot and Cabernet Franc.  But this complexity also contributes to the wine's scarcity.  For a specific vinyard, it is not always possible to produce grapes of consistent quality year after year.  But when a wine is based on four different grapes, the odds are stacked against the ability of a winery to make more than one year with the same characteristics.&lt;br /&gt;&lt;br /&gt;So, if you can manage to find a bottle of Delille's D2, don't pass it up.  You'll thank me.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-6677649938000393376?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/6677649938000393376/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=6677649938000393376' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/6677649938000393376'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/6677649938000393376'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2008/05/delilles-2003-delight-d2.html' title='Delille&apos;s 2003 Delight: D2'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_7XDJakniA48/SDNknnBzA5I/AAAAAAAAAOQ/dv-9RClWiWQ/s72-c/DelilleD2.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-8643824335312408108</id><published>2008-04-26T16:16:00.000-07:00</published><updated>2008-12-09T14:46:22.857-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='travel'/><title type='text'>Polar Bear &amp; Huskies</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_7XDJakniA48/SBO5QPU1sjI/AAAAAAAAAOI/fY0Bp8CVZXg/s1600-h/polarbear-husky.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_7XDJakniA48/SBO5QPU1sjI/AAAAAAAAAOI/fY0Bp8CVZXg/s400/polarbear-husky.jpg" alt="" id="BLOGGER_PHOTO_ID_5193698483931296306" border="0" /&gt;&lt;/a&gt;&lt;a href="http://speakingoffaith.publicradio.org/programs/play/audiogallery/soundseen.shtml"&gt; Stuart Brown describes&lt;/a&gt; Norbert Rosing's striking images of a wild&lt;br /&gt;polar bear that came upon his sled dogs in the wilds of Canada's&lt;br /&gt;Hudson Bay.  The polar bear had not eaten for four months, and found&lt;br /&gt;the team of sled dogs just as the photographer was going to capture&lt;br /&gt;them at sunset.  Rosing thought that his dogs were going to be&lt;br /&gt;slaughtered, but found something else took place entirely.&lt;br /&gt;&lt;br /&gt;The bear and the dogs started to play.&lt;br /&gt;&lt;br /&gt;And the bear returned every night that week to hang out with the dogs.&lt;br /&gt;&lt;br /&gt;What a wonderful world this can be.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-8643824335312408108?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/8643824335312408108/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=8643824335312408108' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/8643824335312408108'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/8643824335312408108'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2008/04/polar-bear-huskies.html' title='Polar Bear &amp; Huskies'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_7XDJakniA48/SBO5QPU1sjI/AAAAAAAAAOI/fY0Bp8CVZXg/s72-c/polarbear-husky.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-3401202394380071692</id><published>2008-04-20T12:51:00.000-07:00</published><updated>2008-12-09T14:46:23.149-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>Zork</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_7XDJakniA48/SAufD37xL1I/AAAAAAAAAOA/-rlxiW2LUnc/s1600-h/zork1.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_7XDJakniA48/SAufD37xL1I/AAAAAAAAAOA/-rlxiW2LUnc/s400/zork1.jpg" alt="" id="BLOGGER_PHOTO_ID_5191417884377689938" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;"&gt;Zork I: The Great Underground Empire&lt;br /&gt;Copyright (c) 1981, 1982, 1983 Infocom, Inc. All rights reserved.&lt;br /&gt;Zork is a registered trademark of Infocom, Inc.&lt;br /&gt;Revision 88 / Serial number 840726&lt;br /&gt;&lt;br /&gt;West of House&lt;br /&gt;You are standing in an open field west of a white house, with a boarded front door.&lt;br /&gt;There is a small mailbox here.&lt;br /&gt;&lt;br /&gt;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;So begins one of the video game industry's oldest and most venerable titles:  &lt;a href="http://en.wikipedia.org/wiki/Zork"&gt;Zork&lt;/a&gt;. I played Zork for hours in the early 80's.  Compared to today's standards, the game is stone age.  It's all text based, with no graphics.  Players interact with the game by typing in short commands to an interpreter, which has been provided with a crude ability to understand English.&lt;br /&gt;&lt;br /&gt;But to a kid growing up then, that game was magic.  In the game, you journey to an underground empire just as wondrous as any described in major works of fiction, with characters that interact, and grues that will kill quickly in the dark.  Its a fine example of a book coming alive, and once you're captured within its pages, you never quite manage to completely escape.&lt;br /&gt;&lt;br /&gt;Curious to experience the world of Zork for yourself?  Infocom has generously made the first three titles, ported to Windows, available &lt;a href="http://www.infocom-if.org/downloads/downloads.html"&gt;free for download&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-3401202394380071692?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/3401202394380071692/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=3401202394380071692' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/3401202394380071692'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/3401202394380071692'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2008/04/zork.html' title='Zork'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_7XDJakniA48/SAufD37xL1I/AAAAAAAAAOA/-rlxiW2LUnc/s72-c/zork1.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-8390636144417492196</id><published>2008-04-18T13:02:00.000-07:00</published><updated>2008-12-09T14:46:23.861-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='art'/><title type='text'>Baraka</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_7XDJakniA48/SAkC_5bp_0I/AAAAAAAAAN4/yOioj7B-AcU/s1600-h/baraka.jpeg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_7XDJakniA48/SAkC_5bp_0I/AAAAAAAAAN4/yOioj7B-AcU/s400/baraka.jpeg" alt="" id="BLOGGER_PHOTO_ID_5190683342293040962" border="0" /&gt;&lt;/a&gt;&lt;a href="http://www.spiritofbaraka.com/baraka.aspx"&gt;Baraka&lt;/a&gt; is one of those movies that can change how people view the world.  It's one of the most beautiful films I've ever seen.  This is not because of the scenery that it captures or its ground breaking cinematography.  Rather, its beauty is the result of the film maker's ability to capture simple truths about the core of our nature.&lt;br /&gt;&lt;br /&gt;The film was shot originally in 70mm IMAX format, by multiple camera crews, working around the world, and consists of short vignettes that either capture a scene or event.  These range from the most sacred of religious buildings, to the most horrific rooms of Auschwitz, to the ritual dances of the Yanomami and native Australians. The light and dark of humanity told through music and film.&lt;br /&gt;&lt;br /&gt;It's a remarkable piece of work.  And even though it was filmed back in 1992, it's just as relevant now as it was nearly two decades ago.  If you haven't seen it before, about the only place you can find it now is on Amazon.&lt;br /&gt;&lt;br /&gt;I'm hoping that in 4 years, for its 20th anniversary, someone might just decide to dust off the original prints, remaster it, and send it back to IMAX theaters.   What a treat that would be.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-8390636144417492196?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/8390636144417492196/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=8390636144417492196' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/8390636144417492196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/8390636144417492196'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2008/04/baraka.html' title='Baraka'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_7XDJakniA48/SAkC_5bp_0I/AAAAAAAAAN4/yOioj7B-AcU/s72-c/baraka.jpeg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-14613048371108115</id><published>2008-04-17T01:08:00.001-07:00</published><updated>2008-12-09T14:46:23.937-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='art'/><title type='text'>Forever Tango</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_7XDJakniA48/SAcL9pbp_xI/AAAAAAAAANg/MI6G0hj6yBE/s1600-h/ForeverTango-w.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_7XDJakniA48/SAcL9pbp_xI/AAAAAAAAANg/MI6G0hj6yBE/s400/ForeverTango-w.jpg" alt="" id="BLOGGER_PHOTO_ID_5190130249289563922" border="0" /&gt;&lt;/a&gt;Last weekend, I had the opportunity to take in Luis Bravo's &lt;a href="http://forevertango.us/"&gt;Forever Tango&lt;/a&gt;, a review of Tango in its many forms.  The cast included a nine piece band, performing live with three Bandoneons (accordion), two pianists, bass and alto cello, and violin.  Also performing was vocalist Martin De Leon, who sang in between presentations of dance.&lt;br /&gt;&lt;br /&gt;But it was dance that took center stage.  The movements of the dancers were graceful, daring, provocative, and sensual.  The posturing, the machismo, the world of defined roles was actually... refreshing.  But while the men evoked strength and control, the women had all the fun.  They used the form provided by the men to make their moves.  Legs whipping dangerously between legs, hips swiveling, arms raised in classic poses, the women of Forever Tango captivated us with flourishes of velvet and sequin.&lt;br /&gt;&lt;br /&gt;Tango is more than a dance, it is seduction captured in movement.  Throughout the performance, the audience let loose with cries and gasps, such was the level of both sexual energy and athletic prowess displayed.&lt;br /&gt;&lt;br /&gt;In addition, I learned a little more about Tango and its various forms.  As it has been adopted over the world, each culture has added its own little twists, which were showcased by the cast.  I have to admit, I fell in love with Tango, as did many in the audience, that night.  Though I may never learn to dance the Tango as gracefully as I observed this past weekend, I know I will one day learn to hold my own on the floor.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-14613048371108115?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/14613048371108115/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=14613048371108115' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/14613048371108115'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/14613048371108115'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2008/04/forever-tango.html' title='Forever Tango'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_7XDJakniA48/SAcL9pbp_xI/AAAAAAAAANg/MI6G0hj6yBE/s72-c/ForeverTango-w.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-2567355273285360412</id><published>2008-04-10T17:45:00.000-07:00</published><updated>2008-12-09T14:46:24.297-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='music'/><title type='text'>A Touch of Sia</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_7XDJakniA48/R_628N2mBHI/AAAAAAAAANY/d0SAMcmFksw/s1600-h/sia-sphrp.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 281px; height: 281px;" src="http://3.bp.blogspot.com/_7XDJakniA48/R_628N2mBHI/AAAAAAAAANY/d0SAMcmFksw/s400/sia-sphrp.jpg" alt="" id="BLOGGER_PHOTO_ID_5187784966404441202" border="0" /&gt;&lt;/a&gt;It's interesting how sometimes a treasure can be hiding in plain sight.  That's precisely how I felt after seeing her album in stores (omnipresent in coffee shops) for a week or two before finally relenting to a friend's advice to buy her latest album: "Some People Have Real Problems".&lt;br /&gt;&lt;br /&gt;I immediately recognized her voice from the Zero 7 albums I have in my collection.  That surprise was soon followed by another that every track on the album was great.  Finally, after the initial exposure was the realization that here was an album that will be with me for years.&lt;br /&gt;&lt;br /&gt;That doesn't happen often. Her music is soothing and beautifully layered, with memorable melodies that are at times haunting, other times playful.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-2567355273285360412?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/2567355273285360412/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=2567355273285360412' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/2567355273285360412'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/2567355273285360412'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2008/04/touch-of-sia.html' title='A Touch of Sia'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_7XDJakniA48/R_628N2mBHI/AAAAAAAAANY/d0SAMcmFksw/s72-c/sia-sphrp.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-3057515082600909412</id><published>2008-04-04T00:35:00.000-07:00</published><updated>2008-04-04T10:58:42.054-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='philosophy'/><title type='text'>Buddha</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm3.static.flickr.com/2180/2367958494_db4e09d07e_o.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px;" src="http://farm3.static.flickr.com/2180/2367958494_db4e09d07e_o.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;It is legend that Siddhartha gained enlightenment while meditating under the cover of a Bodhi tree.  How poetic, then, is this?&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Photo credit&lt;/i&gt;: Taken by Stuart Updegrave during his recent &lt;a href="http://www.flickr.com/photos/supdegrave/2367958494/in/set-72157604276259742/"&gt;travels&lt;/a&gt; through South East Asia.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-3057515082600909412?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/3057515082600909412/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=3057515082600909412' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/3057515082600909412'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/3057515082600909412'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2008/04/buddha.html' title='Buddha'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-1632852224497194869</id><published>2008-03-02T10:24:00.000-08:00</published><updated>2008-03-24T18:39:10.045-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='science'/><title type='text'>The World Wide Telescope</title><content type='html'>Competition is a good thing, especially when it's between the likes of Google and Microsoft.  First, Google produces its maps application, which combines geographical surveys, cartography, and satellite data to produce a cohesive experience of the world.&lt;br /&gt;&lt;br /&gt;Not to be outdone, Microsoft decides to look beyond.  Tying together feeds from all the world's most powerful telescopes, they have created a map of the universe, one that people can navigate through in three dimensions.&lt;br /&gt;&lt;br /&gt;See the presentation introducing the service:&lt;br /&gt;&lt;br /&gt;&lt;object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" id="VE_Player" align="middle" height="285" width="432"&gt;&lt;param name="movie" value="http://static.videoegg.com/ted/flash/loader.swf"&gt;&lt;param name="FlashVars" value="bgColor=FFFFFF&amp;amp;file=http://static.videoegg.com/ted/movies/ROYGOULD-2008_high.flv&amp;amp;autoPlay=false&amp;amp;fullscreenURL=http://static.videoegg.com/ted/flash/fullscreen.html&amp;amp;forcePlay=false&amp;amp;logo=&amp;amp;allowFullscreen=true"&gt;&lt;param name="quality" value="high"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;param name="scale" value="noscale"&gt;&lt;param name="wmode" value="window"&gt;&lt;embed flashvars="bgColor=FFFFFF&amp;amp;file=http://static.videoegg.com/ted/movies/ROYGOULD-2008_high.flv&amp;amp;autoPlay=false&amp;amp;fullscreenURL=http://static.videoegg.com/ted/flash/fullscreen.html&amp;amp;forcePlay=false&amp;amp;logo=&amp;amp;allowFullscreen=true" quality="high" allowscriptaccess="always" bgcolor="#FFFFFF" scale="noscale" wmode="window" name="VE_Player" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" src="http://static.videoegg.com/ted/flash/loader.swf" align="middle" height="285" width="432"&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/7062835374515961810-1632852224497194869?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/1632852224497194869/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=1632852224497194869' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/1632852224497194869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/1632852224497194869'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2008/03/world-wide-telescope.html' title='The World Wide Telescope'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-2216776079361408423</id><published>2008-03-01T13:32:00.000-08:00</published><updated>2008-12-09T14:46:24.536-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='literature'/><title type='text'>The Gift of Narrative</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_7XDJakniA48/R8oC2dPxD4I/AAAAAAAAAMI/pVRZpOV2Irg/s1600-h/Afternoon.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_7XDJakniA48/R8oC2dPxD4I/AAAAAAAAAMI/pVRZpOV2Irg/s400/Afternoon.jpg" alt="" id="BLOGGER_PHOTO_ID_5172950256575385474" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I've had the opportunity to read three great books over the past few weeks.  The books were each written by women, with a distinctly feminine perspective.  And though each author is unique in their approach and voice, there were some common threads that tied them all together.  I have been swept away by all three, their words resonating in my thoughts, their exposition feeding my daydreams.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;The Red Tent, Anita Diamant&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Turn back time, to one of the oldest stories in our history, of the tribe of Jacob in the story of Genesis.  This is the basis for Anita Diamant's "The Red Tent", a narrative told from the perspective of &lt;a href="http://en.wikipedia.org/wiki/Dinah"&gt;Dinah&lt;/a&gt;.  The only daughter of Leah, she is best known in the Bible as the object of "defilement" by the prince of Shechem.  In Diamant's version, her fateful decision was to bed with Hamor's son Shalem (Biblically referred to as Shechem) before marriage, and more importantly, without asking her father's permission.  In Genesis, at least, the story was given short shrift in my opinion.  I'm not certain exactly what moral lesson the episode of Dinah's deflowering and the bloodshed that ensued was attempting to convey, but from the tone of every version I can find, it's far worse to sleep with a man before marriage than say, have two of your brothers kill all the males in an entire village in cold blood and steal the livestock and valuables as pillage.  Simon and Levi were two rather disturbed individuals, but still, Jacob's failure to discipline his sons may be the greatest sin of all.  The Torah, from what I've read, actually goes into more detail, but again, there's only one or two lines of Jacob's regret for his son's actions.  It doesn't make sense, but then again, many of the old stories don't make sense in terms of modern morality.  Perhaps that's because part of the story is missing.&lt;br /&gt;&lt;br /&gt;I suppose that's what occurred to Diamant when she undertook this work.  In it, she manages to read between the lines, inventing a convincing narrative that brings these characters to life, while still remaining true to the original story.  She portrays the life of a shepherding tribe through the eyes of Dinah with words that almost read like prose at times.  Other times, she turns a phrase with a sense for vernacular that reads simple and true.  That's a rare skill.  I could close my eyes and be among them in the hills. The customs, dress, food, and the stories were all rendered so enjoyably.  I suppose that's another thread that ties these books together, they're about stories, and the people charged with telling them.&lt;br /&gt;&lt;br /&gt;The red tent was where the women of those tribes would gather to pass the days of menstruation.   And, as the women were given these days of leisure, it became the environment where their culture was passed on. Dinah, as the only (and therefore oldest) daughter of Leigh, was charged with keeping and continuing the female narrative of her tribe.  Dinah's journey through life is an arc that is sweeping in both emotional and geographical range, from the hills of Canaan to the banks of the Nile River.&lt;br /&gt;&lt;blockquote&gt;    &lt;span style="font-family:times new roman;"&gt;We have been lost to each other for so long.  My name means nothing to you.  My memory is dust.  This is not your fault, or mine.  The chain connecting mother to daughter was broken and the word passed to the keeping of men, who had no way of knowing.  That is why I became a footnote, my story a brief detour between the well-known history of my father, Jacob, and the celebrated chronicle of Joseph, my brother.  On those rare occasions when I was remembered, it was as a victim.  Near the beginning of your old book, there is a passage that seems to say I was raped and continues with the bloody tale of how my honor was avenged.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;   It's a wonder that any mother ever called a daughter Dinah again.  But some did.  Maybe you guessed that there was more to me than the voiceless cipher in the text.  Maybe you heard it in the music of my name: the first vowel high and clear, as when a mother calls to her child at dusk; the second sound soft, for whipsering secrets on pillow.  Dee-nah.&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Empress, Shan Sa&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;Sa is the quintessential aesthete.  Born in Beijing, she moved to Paris and became an understudy of &lt;a href="http://en.wikipedia.org/wiki/Balthus"&gt;Balthus&lt;/a&gt;.  In time, she has become a painter of acclaim in her own right.  But, in words and paper, she has found a canvas that befits the imagination.  The story of Empress spans the life of Empress Wu Ze Tian, or Heavenlight as she is referred to in the story.  Heavenlight is born in a village far from court, but her lineage and poise gain her recognition early in life and entrance to the Forbidden City.  From just one of 10,000 young consorts serving at the whims of the emperor, she comes to rule all of China.  This is a story that, while a first person narrative, is dazzling in its perspective.  The scale and opulence of the scenes at court are portrayed with deft strokes; at times I felt as though Sa was painting with words.  I have been to Beijing, and walked the streets and courtyards of the Forbidden City.  Her words transformed the empty monument of my memory to a bustling, vibrant city in my imagination.  Her accounts are indulgent and stimulating.  While the details of court and the wealth of the Chinese culture are heady, politics are the heart and soul of the story.  Heavenlight is wise, ruthless, and unflinching in her decisiveness.  Her passion drives her, and China, to great prosperity and wealth.  But the Chinese have an old saying: "Be careful of your dreams, they may come true".&lt;br /&gt;&lt;/span&gt;&lt;blockquote&gt;        &lt;span style="font-family:times new roman;"&gt;Endless moons, an opaque universe, thunder, tornadoes, the quaking earth.  Rare moments of peace; forehead up against my knees, arms around my head.  I thought, I listened, I longed not to exist.  But life was there, a transparent pearl, a star revolving slowly on its own axis.  I was blind.  My eyes stared into that other world, that other existence that dwindled a little every day.  Its colors were extinguished, its images blurred.  I was still left with cries of astonishment and feeble sobbing.  I was oppressed by the impotence of these vague recollections, burned by their melancholy.  Who am I?  I asked Death as it crouched at my feet.  Death moaned and gave no reply.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;Where am I?  I could hear laughter, voices saying, "It will surely be a boy, my Lord.  He is moving.  He is full of life."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;   I mattered little who I would be.  I was already weary of this vastness.  I was weary of hoping, of waiting, of being myself -- the center of the world.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;   I was soothed by the rustle of the wind.  I listened to the trickle of rain.  Across my sky in which the sun never rose, I could hear a little girl singing.  I was lulled by her gentle, innocent voice.  My sister, I foresaw great sorrow for her.  A hand tried to caress me.  But a wall lay between us.  Oh Mother, the shadow outlined against the screen of my thoughts, do you realize I am already old, condemned to live within the prison of your flesh?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;   In the depths of the lake, in the sepia-colored waters, I swiveled round, curled up into a ball, spread my limbs, turned circles.  Day by day my body grew, weighing heavily on me, strangling me.  I would have liked to be the prick of a needle, a grain of sand, the flash of sunlight in a drop of water; I was becoming flesh, an exploding flesh, a mountain of folds and blood, a marine monster.  One breath raised me up and rocked me.  I was irascible.  I was furious with myself, with the woman who was my jailor, with Death--my only friend.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;The waited for me.  I heard someone whisper that the boy would be called Heavenlight.  The rustle of preparations hampered my meditation.  They spoke of clothes, celebrations, wet nurses: plump, white, and sturdy.  They were forbidden to speak my name, for fear that demons would possess my soul.  They were waiting for me to pick up where there own destinies had left off.  I felt pity for these fervent creatures, so affable and eager.  They did not yet know that I would destroy their world to build my own.  They did not know that I would bring deliverance -- but with fire and ice.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;   One night I awoke with a start.  The waters were seething.  Furious waves broke over me.  I held myself tightly, struggling with my fear and concentrating on my breathing, on my gnawing pain.  When the tide surged, I was launched into a narrow opening.  I slid between the rocks.  My body bled.  My skin tore.  My head imploded.  I balled my fists to stop myself from screaming.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;   Someone pulled me by my feet and slapped my buttocks.  With my head hanging down, my cries spewed form me.  I was wrapped in a cloth that flayed me.  I heard a man's anxious voice:  "Boy or girl?"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;   No one replied.  The man grabbed me and tried to tear open my swaddling.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;   He was interrupted by a woman's quiet wail:  "Another girl, my Lord."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;   "Ah!" he cried before dissolving into tears.&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;span style="font-size:130%;"&gt;Out of Africa, Isak Denison (Danish Baroness Karen von Blixen-Finecke)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I imagine that most people are familiar with the stories of Baroness Blixen through Sidney Pollack's production of the same name -- given that the movie made from her accounts basically swept the Academy Awards (seven Oscars) in 1985.  Though that was 23 years ago, the cinematography and performances of Meryl Streep and Robert Redford will guarantee a long lifespan of awareness.  But, as is often the case, the book is so much better.&lt;br /&gt;&lt;br /&gt;Karen's writing chronicles her experiences in Africa, from her arrival just before WWI to her departure around the great depression.  It was written shortly thereafter, and published in 1937.  She writes effortlessly, in conversational tones that are without affectation or contrivance.  By the time I finished her book, I felt as though I knew her.  Her sorrows and joys were relayed in matter-of-fact tones that nonetheless evoked raw emotion.  Personally, I was struck by her outlook as much as the events she describes.  In an age of empire largely devoid of common sense or compassion, Blixen's behavior as a European master must have shined like a beacon of enlightenment.  Even when, in many instances, she ascribed characteristics to races or cultures on a stereotypical basis, these observations were devoid of bias or prejudice.  Above all, she was a humanist.&lt;br /&gt;&lt;br /&gt;I have been to Africa, to Mombasa, and traveled west to Ngorongoro Crater and Tanzania.  I have seen what's left of the proud Masai on the game preserves, the migration of the Wildebeest, and the great plains of the Serengeti.  I spent just two weeks in the area that she had come to love so deeply, but that was enough time to instill an understanding of her passion.  But even if you haven't been to Africa, she'll make you feel like you had.  The book is broken into several chapters, defined by the periods in her life in Africa.  Each chapter contains short vignettes, tales of individual occasions or events that can be read within a single sitting.  At the end, I don't know what made me more sad: the fact that she had to leave her farm and the tragedy of loss, or that I had reached the end of her book.&lt;br /&gt;&lt;blockquote style="font-family: times new roman;"&gt;    I had a farm in Africa, at the foot of the Ngong Hills.  The Equator runs across the highlands, a hundred miles to the North, and the farm lay at an altitude of over six thousand feet.  In the day-time you felt that you had got high up, near to the sun, but the early mornings and evenings were limpid and restful, and the nights were cold.&lt;br /&gt;&lt;br /&gt;The geographical position, and the height of the land combined to create a landscape that had not its like in all the world.  There was no fat on it and no luxuriance anywhere; it was Africa distilled up through six thousand feet, like the strong and refined essence of a continent.  The colours were dry and burnt, like the colours in pottery.  The trees had a light delicate foliage, the structure of which was different from that of the trees in Europe; it did not grow in bows or cupolas, but in horizontal layers, and the formation gave to the tall solitary trees a likeness to the palms, or a heroic and romantic air like fullrigged ships with their sails clewed up, and to the edge of a wood a strange appearance as if the whole wood were faintly vibrating.  Upon the grass of the great plains the crooked bare old thorn-trees were scattered, and the grass was spiced like thyme and bog-myrtle; in some places the scent was so strong, that it smarted in the nostrils.  All the flowers that you found on the plains, or upon the creepers and liana in the native forest, were diminutive like flowers of the downs,-- only just in the beginning of the long rains a number of big, massive heavy-scented lilies sprang out on the plains.  The views were immensely wide.  Everything that you saw made for greatness and freedom, and unequaled nobility.&lt;br /&gt;&lt;br /&gt;The chief feature of the landscape, and of your life in it, was the air.  Looking back on a sojourn in the African highlands, you are struck by your feeling of having lived for a time up in the air.  The sky was rarely more than pale blue or violet, with a profusion of mighty, weightless, ever-changing clouds towering up and sailing on it, but it has a blue vigour in it, and at a short distance it painted the ranges of hills and the woods a fresh deep blue.  In the middle of the day the air was alive over the land, like a flame burning; it scintillated, waved and shone like running water, mirrored and doubled all objects, and created great Fata Morgana.  Up in this high air you breathed easily, drawing in a vital assurance and lightness of heart.  In the highlands you woke up in the morning and thought:  Here I am, where I ought to be.&lt;br /&gt;&lt;/blockquote&gt;It's unfortunate that our culture has largely lost the skills of oration, allowing radio and television to fill the void.  That's something that we should struggle not forget as a people, the gift of narrative.  Who we are is not so much the facts and events as we are the voice that brings that history to life.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-2216776079361408423?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/2216776079361408423/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=2216776079361408423' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/2216776079361408423'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/2216776079361408423'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2008/03/gift-of-narrative.html' title='The Gift of Narrative'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_7XDJakniA48/R8oC2dPxD4I/AAAAAAAAAMI/pVRZpOV2Irg/s72-c/Afternoon.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-3376695950787172825</id><published>2008-02-05T14:12:00.000-08:00</published><updated>2008-03-31T09:34:19.155-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='politics'/><title type='text'>Yes We Can</title><content type='html'>&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/v/jjXyqcx-mYY&amp;hl=en"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/jjXyqcx-mYY&amp;hl=en" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here is a voice that inspires, like no other in generations.  Here is a man with a vision and a dream, who is able to remind us of how great we really are.  Not just as a nation, but as humanity.  And even if he doesn't get the nomination, or win the presidency, he's managed to crack through a thick facade of cynicism built brick by brick over the last eight years.  For many of us, perhaps it's enough to allow us to believe again.  In no small way, that is as great a gift a statesman can give a nation.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Vote.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-3376695950787172825?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/3376695950787172825/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=3376695950787172825' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/3376695950787172825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/3376695950787172825'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2008/02/yes-we-can.html' title='Yes We Can'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-2356788281308777636</id><published>2007-11-11T16:39:00.000-08:00</published><updated>2008-12-09T14:46:24.849-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>Dvorak Keyboards</title><content type='html'>&lt;a href="http://4.bp.blogspot.com/_7XDJakniA48/RzeiCkmwvUI/AAAAAAAAAI4/dO-ksZewZO8/s1600-h/dvorak2.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5131748465481661762" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://4.bp.blogspot.com/_7XDJakniA48/RzeiCkmwvUI/AAAAAAAAAI4/dO-ksZewZO8/s320/dvorak2.gif" border="0" /&gt;&lt;/a&gt; Writing software for a living, I've found that I've constantly been battling RSI. The mouse isn't the culprit, however, it's the keyboard. After reading a recent &lt;a href="http://www.boingboing.net/2007/11/10/dvorak-funnies-expla.html"&gt;Boing Boing article&lt;/a&gt; featuring a comic strip about the Dvorak layout, I'm thinking it's time to see if making a switch will make a difference. With any modern operating system, you don't even need to purchase additional hardware to change keyboard layout. With only a change or two in settings, a standard Qwerty keyboard can be changed to support Dvorak mappings.&lt;br /&gt;&lt;br /&gt;It's going to take some time to learn, but I think it will be worth it. The image included with this article is the Dvorak layout. Notice that all vowels are on the left hand's home row, while commonly used consonants are on the right. This fosters the use of alternating hands for each character, as well as keeping your hands on home row as much as possible.&lt;br /&gt;&lt;br /&gt;Though there have been several studies showing Dvorak is a far superior layout, there has been enough FUD to cast those studies into question. So, I'll have to see for myself if there's any benefit to the layout. I've been warned, however, that the human brain easily forgets keyboard mappings, meaning that learning Dvorak may come at the expense of Qwerty proficiency. For me, improved speed and reduced RSI issues are worth the risk.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-2356788281308777636?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/2356788281308777636/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=2356788281308777636' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/2356788281308777636'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/2356788281308777636'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2007/11/dvorak-keyboards.html' title='Dvorak Keyboards'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_7XDJakniA48/RzeiCkmwvUI/AAAAAAAAAI4/dO-ksZewZO8/s72-c/dvorak2.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-7226531476802958545</id><published>2007-09-09T15:38:00.000-07:00</published><updated>2008-12-09T14:46:25.001-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='science'/><title type='text'>Probing Quantum Gravity</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_7XDJakniA48/RuSj8cNN9oI/AAAAAAAAAHY/FMHuEONGYT0/s1600-h/quantum-gravity.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5108388136104097410" style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" alt="" src="http://1.bp.blogspot.com/_7XDJakniA48/RuSj8cNN9oI/AAAAAAAAAHY/FMHuEONGYT0/s320/quantum-gravity.jpg" border="0" /&gt;&lt;/a&gt;The energy of an object can be described in terms of its momentum, the product of its mass and velocity. This is reflected in the fact that the mass of sub atomic particles is given in terms of electron volts (eV).&lt;br /&gt;&lt;br /&gt;Energy warps spacetime, so sayeth Einstein, giving us gravity. This explains the orbit of the planets, and even the lensing of light on cosmic scales by massive objects. But what happens with gravity at the smallest scales? This is a question that Einstein's theories of General and Special Relativity are not well equipped to answer.&lt;br /&gt;&lt;br /&gt;Enter the various &lt;a href="http://en.wikipedia.org/wiki/Theory_of_Everything"&gt;Theories of Everything&lt;/a&gt;, which are attempting to provide a framework incorporating all we know of the universe from its grandest scales to its smallest fractions. These frameworks, including &lt;a href="http://en.wikipedia.org/wiki/Superstring_theory"&gt;Super String theory&lt;/a&gt;, have evolved from a largely abstract mathematical and philosophical basis -- with a heavy emphasis on abstract. In fact, to date String Theory has yet to have any credible tests to verify it's predictions. The problem is that the focus of String theorists have been on scales so small, or energies so high that we're not yet at a technological level of sophistication needed to explore their concepts.&lt;br /&gt;&lt;br /&gt;Up to now, most of the press on these experiments has been dedicated to the efforts of measuring gravity on the quantum scale between particles of mass, hoping to discover evidence of SST's proposed additional dimensions. &lt;a href="http://www.arxiv.org/abs/0708.2889"&gt;A research group now thinks they can probe the theory&lt;/a&gt; using a different approach: analyzing the light emitted from the universe' most energetic events.&lt;br /&gt;&lt;br /&gt;Now, while photons don't have mass, they still have momentum. The theory posits that it's the energy of the particle, irregardless of its mass, that forms a relationship with spacetime. Just as particles with mass alter spacetime, so should photons at the quantum scale. In the latter case, this warping should result in a lensing effect, qualified by a refractive index.&lt;br /&gt;&lt;br /&gt;A lens acts on light according to a &lt;a href="http://en.wikipedia.org/wiki/Refractive_index"&gt;refractive index&lt;/a&gt;, which indicates how much light slows down through a particular medium. If the underlying concepts of SST are valid, then this lensing effect should alter the velocity of light from energetic events. The more energetic the light, the stronger the resulting refractive index. A research group decided to put this to the test by analyzing light from &lt;a href="http://en.wikipedia.org/wiki/Gamma_ray_burst"&gt;Gamma Ray Bursters&lt;/a&gt;, or GRBs.&lt;br /&gt;&lt;br /&gt;GRBs occur in only a few types of situations, usually involving catestrophic events on the scale of hundreds of solar masses. The explosions result in light with a wide spectrum of energies, ideal for the intended study. Timing the arrival of photons from a GRB, the team thinks they've found a measurable lag correlated to the energy of the photons detected. The findings are not concrete, since there are other possible causes for the effect. And there's still the question of multiple authorities for verification.&lt;br /&gt;&lt;br /&gt;In this regard, the experiment is perhaps just as important as the results it provides, since it marks an important new front for research.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-7226531476802958545?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/7226531476802958545/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=7226531476802958545' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/7226531476802958545'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/7226531476802958545'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2007/09/probing-quantum-gravity.html' title='Probing Quantum Gravity'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_7XDJakniA48/RuSj8cNN9oI/AAAAAAAAAHY/FMHuEONGYT0/s72-c/quantum-gravity.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-5621799781863741709</id><published>2007-08-29T23:53:00.000-07:00</published><updated>2008-12-09T14:46:25.342-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='science'/><title type='text'>Creation at Work</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_7XDJakniA48/RtZxjMNN9nI/AAAAAAAAAHQ/bwRDOD7XP1I/s1600-h/new-star.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5104392077057062514" style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" alt="" src="http://2.bp.blogspot.com/_7XDJakniA48/RtZxjMNN9nI/AAAAAAAAAHQ/bwRDOD7XP1I/s320/new-star.jpg" border="0" /&gt;&lt;/a&gt;Despite its occasional tendency towards exaggeration, I still subscribe to &lt;a href="http://space.newscientist.com/feeds.ns"&gt;New Scientist's feeds&lt;/a&gt;. This is because, every once in a while, they publish articles that are truly amazing. I read &lt;a href="http://space.newscientist.com/article.ns?id=dn12558&amp;amp;feedId=online-news_rss20"&gt;one&lt;/a&gt; again this morning that stuck with me through the day. In it, David Shiga explores the data recently captured on an infant star (IRAS 4B), only a few hundred thousand years old.&lt;br /&gt;&lt;br /&gt;Wreathed deep in a cloud of gas, the star is grabbing that gas with its gravity, and wrapping it around itself in an accretion disc. Like water twisting around a drain, the gas and dust become compressed as they near the star, forming somehow into clumps. These clumps should, in turn, become planets, though the argument is still out on exactly how this happens. Also caught within the pull of the star is a volume of water five times what we have here on Earth. Most of the water takes the form of clumps of ice, but they've detected water vapor as well. The puzzle is that vapor is occurring at distances from the star too far to be explained by stellar radiation. The theory is that the ice is colliding with the accretion disc as it spirals toward the star. Striking with supersonic velocity, the collisions generate energy in the form of heat, enough to turn ice into vapor.&lt;br /&gt;&lt;br /&gt;Though David doesn't explore the idea, I couldn't help but think that we're seeing the birth of a new cradle for life -- and that our system must have had a similar beginning.&lt;br /&gt;&lt;br /&gt;The new star is only 1000 light years away, just down at the end of the block from us in terms of the vastness of the universe. As such, we have had the ability to observe features on a scale not often afforded. The data, at this point, still requires an artist to visualize. The next few generations of space telescopes should change this, allowing us to actually see these distant worlds, and perhaps even creation at work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-5621799781863741709?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/5621799781863741709/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=5621799781863741709' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/5621799781863741709'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/5621799781863741709'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2007/08/creation-at-work.html' title='Creation at Work'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_7XDJakniA48/RtZxjMNN9nI/AAAAAAAAAHQ/bwRDOD7XP1I/s72-c/new-star.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-3134479665407883912</id><published>2007-08-21T22:17:00.000-07:00</published><updated>2008-12-09T14:46:25.491-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>Dynamic Layouts in Wicket</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_7XDJakniA48/RsvTZ8NN9mI/AAAAAAAAAHI/i5SLh40VFI8/s1600-h/wicket-logo.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_7XDJakniA48/RsvTZ8NN9mI/AAAAAAAAAHI/i5SLh40VFI8/s320/wicket-logo.png" alt="" id="BLOGGER_PHOTO_ID_5101403445538977378" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;One of the most common programming tasks for web application developers is form design and processing.  There are rare cases where artistic expression and aesthetics trumps standard design, but the 90% case involves "tables" of UI elements.  In this general case, there is no reason why layout shouldn't be automated with dynamic population.&lt;br /&gt;&lt;br /&gt;The idea isn't a new one, having been established on dozens of platforms. &lt;span&gt;Alastair Maw, in a recent London Wicket Conference, introduced a Wicket based solution in the form of  a lightweight framework to dynamically render UI layouts in response to a &lt;a href="http://en.wikipedia.org/wiki/JavaBeans"&gt;JavaBean&lt;/a&gt; argument.&lt;br /&gt;&lt;br /&gt;The strategy utilizes Wicket's &lt;a href="http://wicket.sourceforge.net/wicket-extensions/apidocs/wicket/extensions/markup/html/repeater/package-use.html#wicket.extensions.markup.html.repeater"&gt;Repeaters&lt;/a&gt;, which can take fragments of markup and repeat them within a document.  The Repeater's simplicity enables the same API used to build a table to be applied to any organized structure of markup.  The result is rapid development of forms within an application.  With CSS, it is simple to take any generated set and tweak the layout as the design requires.&lt;br /&gt;&lt;br /&gt;See &lt;a href="http://herebebeasties.com/2007-08-17/wicket-bean-editor/"&gt;&lt;span style="text-decoration: underline;"&gt;Alastair's Blog&lt;/span&gt;&lt;/a&gt; for links to code and video.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-3134479665407883912?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/3134479665407883912/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=3134479665407883912' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/3134479665407883912'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/3134479665407883912'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2007/08/dynamic-layouts-in-wicket.html' title='Dynamic Layouts in Wicket'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_7XDJakniA48/RsvTZ8NN9mI/AAAAAAAAAHI/i5SLh40VFI8/s72-c/wicket-logo.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-7617760059148935569</id><published>2007-08-21T20:20:00.000-07:00</published><updated>2008-12-09T14:46:25.814-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='politics'/><title type='text'>Why Democrats are the Future</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_7XDJakniA48/RsuxSMNN9lI/AAAAAAAAAHA/rF6HtOwgWuk/s1600-h/max-baucus.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_7XDJakniA48/RsuxSMNN9lI/AAAAAAAAAHA/rF6HtOwgWuk/s320/max-baucus.jpg" alt="" id="BLOGGER_PHOTO_ID_5101365928999646802" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;For the last 7 years, Republicans have driven the national discussion with fear, God, and hatred.  Hatred should have no place in our discussion.  Fear and God, though they may have their place and time, are not a platform on which to operate a nation of people.   We must teach our children the dangers of their environment, yet we would be considered abusive if we used these tactics as a continuous strategy.  Yet, this is precisely what the Bush Administration and the Republican Party has done over the last 6 years.&lt;br /&gt;&lt;br /&gt;I think the problem is due both to a failure of our populace to seek out the information needed to make an informed decision, as well as an inability to think critically when the information is at hand.  While high school programs give lip service to philosophy, they fail to invest adequately in the subject matter.  It's at the higher education systems, our universities and colleges, that the process of critical thought is addressed.&lt;br /&gt;&lt;br /&gt;But now, a college education is now beyond the reach of most of our once thriving middle class.  With this barrier, we are facing an attrition of critical thought in our society.  And with that loss, we are effectively doomed to poor choices as a democracy.  The Bush Administration is as clear an example of this intellectual retreat as we may ever witness.  If you ever wonder how important critical thought and knowledge is in our lives, just read through the actions, executive orders, general conduct and speeches given by George Bush. The mistakes and hubris exhibited by this administration are epic. Yet, we have kept his administration in the White House for nearly two terms.&lt;br /&gt;&lt;br /&gt;George Bush was a "C" student,  guided by the mighty dollar.  And with his leadership, we have fallen from a country respected by the world at large and strong in our economic might.   After almost two terms of the Bush Administration, we now find ourselves a nation who's position on the world's stage has been severely degraded, with a faltering economy and an infrastructure in desperate need of repair.  Yet, instead of addressing these issues with the huge investments required, we are instead spending money on a war -- a war based on falsehood and without end.&lt;br /&gt;&lt;br /&gt;What our country desperately needs is a leadership emboldened and passionate about knowledge, and guided by desire to uplift not only the citizens of this country, but the world at large.  The power of the position could truly be a global inspiration.&lt;br /&gt;&lt;br /&gt;So, if you know my stance on education, you'll understand why I was so happy to read the Billings Gazette article on Sen. Max Baucus' &lt;a href="http://www.billingsgazette.net/articles/2007/08/20/news/state/24-tuition.txt"&gt;new proposal&lt;/a&gt;.  In a nutshell, Baucus proposes to provide full scholarships for high school graduates if they enter into science and engineering programs for a college education.   There would be strings attached:  the successful graduate would be required to teach for 4 years.&lt;br /&gt;&lt;br /&gt;It's a brilliant plan, outclassing anything the Republicans have conceived of to date, and it's why the Democrats are our future.  Such a program would produce the great leaders of tomorrow.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;     You can fool 28% of the people all of the time...&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-7617760059148935569?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/7617760059148935569/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=7617760059148935569' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/7617760059148935569'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/7617760059148935569'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2007/08/why-democrats-are-future.html' title='Why Democrats are the Future'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_7XDJakniA48/RsuxSMNN9lI/AAAAAAAAAHA/rF6HtOwgWuk/s72-c/max-baucus.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-5542244269855303344</id><published>2007-08-21T18:41:00.000-07:00</published><updated>2007-11-13T17:28:14.478-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pets'/><title type='text'>Let's Get Ready to Rumble!</title><content type='html'>&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/v/pJdon_p6PYc&amp;rel=1"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/pJdon_p6PYc&amp;rel=1" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;A championship match captured between our Chihuahua and our Bengal kitten.  This video is guanranteed to bring a smile to your face!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-5542244269855303344?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/5542244269855303344/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=5542244269855303344' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/5542244269855303344'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/5542244269855303344'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2007/08/lets-get-ready-to-rumble.html' title='Let&apos;s Get Ready to Rumble!'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-2360555299116361859</id><published>2007-08-18T22:46:00.000-07:00</published><updated>2008-12-09T14:46:25.911-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='science'/><title type='text'>Life in the Strangest of Places?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_7XDJakniA48/Rsf8p8NN9jI/AAAAAAAAAGw/eElDqD7cRBY/s1600-h/fractal-dust.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_7XDJakniA48/Rsf8p8NN9jI/AAAAAAAAAGw/eElDqD7cRBY/s320/fractal-dust.jpg" alt="" id="BLOGGER_PHOTO_ID_5100322900486780466" border="0" /&gt;&lt;/a&gt;A &lt;a href="http://www.sciencedaily.com/releases/2007/08/070814150630.htm"&gt;ScienceDaily&lt;/a&gt; post alerts us to recent research exploring the possibility of life in dust clouds.  Much of the matter in the universe is organized in large clumps of dust, mostly Hydrogen and its slightly more complex sibling, Helium.  But around areas of heavy stellar activity, the dust is enriched with huge plumes of more complex matter, the products of stellar dynamics.  Even in our own star system, vast amounts of dust orbit both the sun and many of its planets.&lt;br /&gt;&lt;br /&gt;Around the gas giants Jupiter and Saturn, the dust orbits largely in concentric orbital rings.  And around Saturn, fierce electromagnetic fields shape the very nature of the dust, producing a "&lt;a href="http://adsabs.harvard.edu/abs/2006AGUFM.P41A1257W"&gt;cold plasma&lt;/a&gt;".  In cold plasmas, electrons have been ripped off atoms by intense magnetic fields, creating clouds of ions.  Ionization creates a charge imbalance over the surface of a molecule , resulting in an electric field.  These fields, in turn, add complexity to how molecules interact.  Simulations have shown that dust in a cold plasma can organize into helices, a structure similar to our own DNA.  When these strings interact, they can share their structure and perhaps even functionality, with one another.  This is the basis of life here on earth, but it would be expressed in an entirely foreign medium.&lt;br /&gt;&lt;br /&gt;Though they have yet to observe this type of system in nature, the idea should have an impact on not only our concepts of what constitutes life, but where we might search for it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-2360555299116361859?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/2360555299116361859/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=2360555299116361859' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/2360555299116361859'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/2360555299116361859'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2007/08/life-in-strangest-of-places.html' title='Life in the Strangest of Places?'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_7XDJakniA48/Rsf8p8NN9jI/AAAAAAAAAGw/eElDqD7cRBY/s72-c/fractal-dust.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-2555865858042250774</id><published>2007-07-09T18:26:00.000-07:00</published><updated>2008-12-09T14:46:26.162-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='science'/><title type='text'>Investigating Time</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_7XDJakniA48/RpLjWga_qEI/AAAAAAAAAGE/u7_wRk34Lp4/s1600-h/annihilation.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5085376905054496834" style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" alt="" src="http://2.bp.blogspot.com/_7XDJakniA48/RpLjWga_qEI/AAAAAAAAAGE/u7_wRk34Lp4/s320/annihilation.gif" border="0" /&gt;&lt;/a&gt;&lt;a href="http://seattlepi.nwsource.com/local/292378_timeguy15.html"&gt;John Cramer is looking for clues&lt;/a&gt; in the fabric of our world. He's doing this by studying how the components of matter interact at the smallest scales. And in this realm, time, energy, and velocity are all interconnected. One phenomenon that may shed some light into the role that time plays with particle physics is &lt;a href="http://en.wikipedia.org/wiki/Quantum_entanglement"&gt;Quantum Entanglement&lt;/a&gt;. Entanglement is observed when two particles (perhaps photons) are seen to be linked together. In some cases, a particle interaction can result in the production of two entangled photons, each traveling diametrically away from one another. Somehow, if we set an experiment to change the properties of one of the photons in the pair, we observe a change in the other to compensate. It's as if the two photons were actually one, somehow connected. This is a phenomenon that has more than a few possible causes. One set of theories suggest that there are additional dimensions to our universe that have radically different constructions compared to what we are able to experience. These dimensions are theorized to have (nearly) zero length. Through these dimensions, effects between particles occur simultaneously, regardless of distance. It's nice to think that perhaps, in this way, we are all connected.&lt;br /&gt;&lt;br /&gt;Another possible solution is that time can, indeed, run backwards in a particular frame of reference. One of my personal favorites, Dr. Feynmann, introduced diagrams to map out the interactions between quantum particles using a graphing structure that still bears his name. &lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://www2.slac.stanford.edu/vvc/theory/feynman.html" target="_blank"&gt;Feynmann Diagrams&lt;/a&gt; may seem at first to be fairly simple, but they actually tell complex stories. They show how particles interact and travel in time. Using symmetry, interactions can be explored from all possible angles. What is possible, happens. One interesting implication of the graphs: anti-matter travels backward in time. If it is possible to go backward in time, then perhaps the two entangled particles could be related through an independent time-line.&lt;br /&gt;&lt;br /&gt;Hopefully, Cramer may find us an answer.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-2555865858042250774?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/2555865858042250774/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=2555865858042250774' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/2555865858042250774'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/2555865858042250774'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2007/07/investigating-time.html' title='Investigating Time'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_7XDJakniA48/RpLjWga_qEI/AAAAAAAAAGE/u7_wRk34Lp4/s72-c/annihilation.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-9035009680865029400</id><published>2007-06-20T20:14:00.000-07:00</published><updated>2008-12-09T14:46:26.569-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='politics'/><title type='text'>English as the National Lanauage of the USA</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_7XDJakniA48/RnoEWWOVT5I/AAAAAAAAAF0/gvv1aC2WFxU/s1600-h/towerofbable.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_7XDJakniA48/RnoEWWOVT5I/AAAAAAAAAF0/gvv1aC2WFxU/s320/towerofbable.jpg" alt="" id="BLOGGER_PHOTO_ID_5078376311782985618" border="0" /&gt;&lt;/a&gt;I was pondering the recent remarks by Governor Schwarzenegger regarding steps that immigrants should take to learn English.  One point he made was to "turn off Spanish TV".  The Spanish speaking press covering the conference was, of course, disgusted and quickly derided the Governor for his "lack of understanding" of the situation of Southern immigrants.&lt;br /&gt;&lt;br /&gt;There is a growing camp in the political scene that is advocating for a dual language policy.  They cite the obvious need to provide services to those unable to read or speak English.  For essential government services, denying participation due to language essentially denies people of their civil rights at best.  At worst, linguistic discrimination can lead to impoverishment, loss of liberty and even life itself.  As a citizen, constitutional rights should not depend on what language you speak.&lt;br /&gt;&lt;br /&gt;The United States now has 30 million Spanish speaking immigrants, both legal and illegal.  This is roughly 10 percent of our population, unprecedented in the historical migrations of foreign cultures into our nation.   In the past, there have been major shifts, including great numbers of Irish during the &lt;a href="http://en.wikipedia.org/wiki/Irish_Potato_Famine"&gt;Potato Famine&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Immigration_to_the_United_States"&gt;five million Germans prior to 1940s&lt;/a&gt;, and almost a million Koreans during the 1950s.  We are a nation of immigrants.  In each wave, immigrant populations were spread out over the major population centers of America.  But even then, immigrant populations in each city naturally tended to congregate in small areas.  Most large cities have a 'China Town', a 'Little Italy', and a 'Korea Town'.  In these areas, it's not uncommon to see storefront signage in the foreign tongue of the area.  First generation immigrants often fail to learn English, but the communities fostered a desire to integrate into the larger culture of North America.  These immigrants sent their children to English speaking public schools.  The second generation spoke their language of origin with their parents, but were completely fluent in English.  By the third generation, the melting-pot of the United States has absorbed the family.&lt;br /&gt;&lt;br /&gt;With the immigrant populations from Central and South America, this is not the case in a growing number of areas.  Entire cities in the South West, especially near the Mexican border, are Spanish speaking.  And each year, the cultural bias spreads.  The melting-pot has ceased to function.  And with this break down we face perhaps one of the greatest threats to our national integrity since the cultural divisions between the North and the South during the early 19th century.&lt;br /&gt;&lt;br /&gt;It would be a mistake to infer that I'm comparing linguistic choice to the politics of slavery.  However, it can not be stressed enough how important a single language is to the solidarity of our national union.  We have freedom of religion, of speech, and the liberty to pursue our dreams and goals with a diversity that is both breathtaking in scope and the vibrant backbone of the American dream.  Despite all of these differences, we have one essential thing in common:  the English language.  With it, we can communicate and understand one another.  We can learn about and appreciate one another.  As long as we communicate, trust, empathy, love, and understanding are the result.  Without a common language, there will be nothing to hold us together.&lt;br /&gt;&lt;br /&gt;There are many examples in history that bear witness to this fact.  Nearly every major war in Europe has been drawn upon linguistic lines.  Even recently, Canada was nearly torn in half between a French speaking culture on its East and an English speaking culture to its West.  Though the secessionist movement has been quelled, there are still die-hard advocates that are blinded by cultural differences largely exaggerated by language.  We have far too many important issues to solve than to allow ourselves to fall into a situation where we can no longer understand one another.  But if the current trends continue, it's not outside the realm of possibility for a second secessionist movement in the US.&lt;br /&gt;&lt;br /&gt;As a citizen who believes in the promise of my country for immigrants, and a desire to help those to come and take part in making the United States of America as great as she can possibly be, I have only one request: learn English.   If you're a new immigrant, retain your cultural identity, be proud of your heritage, your family, and where you came from.  But when you learn English, you not only dramatically increase the opportunities available to you, you establish the most important bond with your fellow citizens: the unity of communication.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-9035009680865029400?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/9035009680865029400/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=9035009680865029400' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/9035009680865029400'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/9035009680865029400'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2007/06/english-as-national-lanauage-of-usa.html' title='English as the National Lanauage of the USA'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_7XDJakniA48/RnoEWWOVT5I/AAAAAAAAAF0/gvv1aC2WFxU/s72-c/towerofbable.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-1189026594528985303</id><published>2007-06-17T19:16:00.000-07:00</published><updated>2008-12-09T14:46:26.865-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='media'/><title type='text'>Thoof:  The Next Generation of News</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_7XDJakniA48/RnYJJ2OVT4I/AAAAAAAAAFs/JnfaJj2yhRI/s1600-h/ThoofWebPageLogo.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_7XDJakniA48/RnYJJ2OVT4I/AAAAAAAAAFs/JnfaJj2yhRI/s320/ThoofWebPageLogo.jpg" alt="" id="BLOGGER_PHOTO_ID_5077255694685917058" border="0" /&gt;&lt;/a&gt;&lt;a href="http://www.thoof.com"&gt;Thoof&lt;/a&gt; is a web application that ties user driven criteria to news and information aggregation.  To understand why this is an important evolution, we have to first examine how we receive information via the internet. &lt;br /&gt;&lt;br /&gt;The internet has made information ubiquitous.  Though this is most decidedly a blessing, the amount of data published each day is simply overwhelming.  This is where news media sites and information aggregation services step in, filtering the news of the day and presenting readers with an easily consumable product.  Aggregation services like Yahoo and Google News filter articles by their popularity on the internet, where articles are ranked according to how many references they attract.  Commercial news media organizations, on the other hand, prioritize information based on institutional motivation and the arbitrary decisions of an editorial staff.  Though both approaches have merit, they both suffer from bias.&lt;br /&gt;&lt;br /&gt;In the case of automated aggregation services, the most popular information is not always the most important or relevant to an individual reader.  Though many may find celebrity gossip compelling, I personally view such intrusions as repugnant.  But driven by the number of references out there on countless web pages, Anna Nichole Smith and Paris Hilton become frequent top news figures on the daily news feeds.&lt;br /&gt;&lt;br /&gt;In commercial news organizations, bias used to mean a dedication to the truth.  News divisions of broadcasting companies were excluded from consideration of profit and loss.  Instead, reporting was regarded as an essential public service where news media organizations were known collectively as the "&lt;a href="http://en.wikipedia.org/wiki/Fourth_estate"&gt;fourth estate&lt;/a&gt;".  Journalists like &lt;a href="http://en.wikipedia.org/wiki/Edward_R._Murrow"&gt;Edward R. Murrow&lt;/a&gt; epitomized this role, standing firm against the threats of hypocrisy and tyranny and delivering information as objectively as possible.  Unfortunately, news divisions are no longer immune from the profit equation.  With this loss of independence, news has effectively become entertainment.  Thus, every one of our commercial news outlets (save NPR) have seen fit to treat celebrity gossip as high priority news. Driven by ratings, CNN, NBC and ABC are little better than the automated aggregation services.&lt;br /&gt;&lt;br /&gt;But the situation is worse than that.  News organizations are now increasingly owned by large corporations with commercial interests in conflict with objective reporting.   A good example is NBC, which is owned by General Electric, a major defense contractor.  When GE profits from our nation's involvement in war, what can we say about NBC's motivation to challenge our position in Iraq?&lt;br /&gt;&lt;br /&gt;Thoof gives us an alternative.  When you visit the site for the first time, you're initially met with a random sampling of articles.  By clicking on an article, Thoof records the selection and can use that to make assumptions on what kinds of information you find of interest.  This information is stored and then used as criteria with which to filter new information as it arrives.&lt;br /&gt;&lt;br /&gt;It's a good idea with a solid implementation.  I'll be watching this one to see how it evolves.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-1189026594528985303?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/1189026594528985303/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=1189026594528985303' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/1189026594528985303'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/1189026594528985303'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2007/06/thoof-next-generation-of-news.html' title='Thoof:  The Next Generation of News'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_7XDJakniA48/RnYJJ2OVT4I/AAAAAAAAAFs/JnfaJj2yhRI/s72-c/ThoofWebPageLogo.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-7695164827788903726</id><published>2007-06-16T17:17:00.000-07:00</published><updated>2008-12-09T14:46:27.064-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='food'/><title type='text'>Culinary Heaven:  Salmon and Clams</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_7XDJakniA48/RnSNlmOVT3I/AAAAAAAAAFk/0vF3xTvVHXs/s1600-h/Salmon.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_7XDJakniA48/RnSNlmOVT3I/AAAAAAAAAFk/0vF3xTvVHXs/s320/Salmon.jpg" alt="" id="BLOGGER_PHOTO_ID_5076838357008732018" border="0" /&gt;&lt;/a&gt;I put together a meal last night that was about as close to perfection as it gets.  I cooked up a pot of Penn Cove Manila Clams and wild Alaskan King Salmon, along with a nice loaf of artisan garlic bread.  The meal was very healthy, and took around 30 minutes to cook (not including the soaking of alder wood) -- simple enough for even those with busy schedules.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Wild Alaskan Salmon&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;In addition to being one of the most delicious fish in the sea, salmon is a major source of "good" fats, the kind that lowers cholesterol, prevents heart attacks, and promotes brain function as well as healthy skin and hair.  I've seen chemical analysis of why fish oils and fats are good, but the basic idea is that fish live in very cold environments.  Their fats, therefore, don't coagulate or harden like most land animals.  When you eat fish, you absorb those fats into your blood stream, which not only prevent clotting amongst themselves, they also bond to bad fats and prevent them from clotting as well.&lt;br /&gt;&lt;br /&gt;The main consideration for purchasing salmon is timing.  The best salmon on the planet call the rivers and oceans up in Alaska home.  They're caught when they make their runs up their rivers to spawn, which happens seasonally.  A few months out of the year, wild Salmon are abundant so take advantage of it while you can.  By far, the most popular is the Copper River breed, which are exquisite.  They've been heavily marketed, and the harvest enjoys world wide distribution.  But there are several dozen neighboring rivers with fish that are of equal quality.  If you know what to look for, you can get a magnificent cut for much less.  However, for most people outside of the PNW, Copper River is the only access to the best wild salmon on the planet.&lt;br /&gt;&lt;br /&gt;To order, try &lt;a href="http://www.fishermansexpress.com/copper-river-salmon.html"&gt;The Alaskan Fish Market&lt;/a&gt;, which will ship world wide.&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;Penn Cove Manila Clams&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Penn Cove Shellfish are some of the highest quality I've seen in my lifetime.  Specifically, their Manila Clams are excellent:  medium size, lacking any cilia on their water intake or spouts, and generally are free of sand.  To order, check out &lt;a href="http://www.penncoveshellfish.com/"&gt;Penn Cove Shellfish&lt;/a&gt;.  Again, they (or their preferred shipper) can ship world wide.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Ingredients&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Penn Cove Clams&lt;br /&gt;&lt;ul&gt;&lt;li&gt;2 lbs of Penn Cove Clams or Mussels&lt;/li&gt;&lt;li&gt;1 gallon of medium quality Chardonnay&lt;/li&gt;&lt;li&gt;3 cloves of garlic&lt;/li&gt;&lt;li&gt;2 sprigs of fresh tarragon, mince half&lt;br /&gt;&lt;/li&gt;&lt;li&gt;3 cups of stock, either chicken or vegetable&lt;/li&gt;&lt;li&gt;1.5 tbsp of butter per person&lt;br /&gt;&lt;/li&gt;&lt;li&gt;1 large Vidalia (white) onion, sliced long and thin&lt;br /&gt;&lt;/li&gt;&lt;li&gt;2 pinches of minced saffron&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Fresh ground pepper&lt;/li&gt;&lt;/ul&gt;Salmon&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Light Mayonnaise&lt;/li&gt;&lt;li&gt;2 sprigs of fresh dill&lt;/li&gt;&lt;li&gt;Alder wood cooking board&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-style: italic;"&gt;Cooking Instructions&lt;/span&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;First, soak the alder wood cooking board in water for 30 minutes.  Most grocery stores carry them, but they're easy to overlook.  The boards are around 12" x 6" x .25" in dimension, and are perfect for most cuts of meat.  While the board is soaking in water, coat the salmon in a thin covering of mayonnaise so that all pink flesh is covered.  Then, cover the preparation with dill.  If the dill is fresh, and still on branches, use only the thin leaves.  In this case, dried dill would do just fine.  I've had people balk at a mayonnaise covering on salmon before trying the finished product (they were immediate converts).  The mayo doesn't really lend much of a flavor to the fish.  Instead, as it dries out, it creates a protective seal over the fish to trap in moisture and keep the fish tender even if overcooked.  Yogurt would also be a viable alternative.&lt;br /&gt;&lt;br /&gt;Once the alder cooking board has soaked for 30 minutes, slide the salmon squarely in the middle of the board and place the board directly on the rack of your grill or BBQ. Keep the cooking surface covered, and if you're cooking with gas, turn the heat on low.  After a while, you'll find that the wood dries out and will start smoking.  This is the desired effect, and will lend an amazing smoky flavor to whatever you're cooking.  Don't worry about the entire board going up in flames as the moisture from the cut of meat you're cooking will retard the fire.  Generally, a decent cut of salmon will take around 30 minutes to cook.  The best strategy is to remove the salmon while the inner most portion is still rare.  Once removed from the grill, the fish will actually continue to cook internally, and the result will be perfectly tender and moist.&lt;br /&gt;&lt;br /&gt;While the salmon is cooking on the BBQ, get the shellfish ready to go.  In a large pot, put the wine, stock, minced garlic, sliced onion, butter, minced tarragon, and saffron.  You'll want enough liquid in the pot to ensure that all joining in will be able to fill half a bowl, which is around 2 cups per person.  I generally use equal parts wine and stock.  Optionally, you can put in cayenne pepper to give the broth a bit of spice.  Heat until boiling.  While the pot is heating up, thoroughly wash the shellfish with water.&lt;br /&gt;&lt;br /&gt;Once the salmon has been removed from the grill, put the shellfish into the boiling broth.  If the shellfish are too many to be completely submerged in the broth, gently stir so that entire batch has a chance to soak.  Once the shellfish open up (around 3 - 5 minutes), the dish is done.  Remove from heat immediately and serve.  The soft inner bodies of shellfish will shrink dramatically when overcooked, so make sure you keep watch as soon as you put the shells in.&lt;br /&gt;&lt;br /&gt;Plate the salmon and bread, along with a bowl for the shellfish, broth, and onions.  Add leafy tarragon as garnish.  I don't even bother to butter the bread, as the broth and the salmon provide even better options for dipping and spreading.&lt;br /&gt;&lt;br /&gt;The recipe I've detailed here is simple and easy, and can be thrown together in under an hour.  And because you're grilling, there's little in terms of messy clean up.  If you have extra shellfish left over, be sure to cook them that day.  I end up shelling them, and storing them in olive oil for a few days for a linguine in clam sauce dish that's another knock out.&lt;br /&gt;&lt;br /&gt;Enjoy!&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-7695164827788903726?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/7695164827788903726/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=7695164827788903726' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/7695164827788903726'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/7695164827788903726'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2007/06/culinary-heaven-salmon-and-clams.html' title='Culinary Heaven:  Salmon and Clams'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_7XDJakniA48/RnSNlmOVT3I/AAAAAAAAAFk/0vF3xTvVHXs/s72-c/Salmon.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-6401501383752850178</id><published>2007-05-13T13:02:00.000-07:00</published><updated>2008-12-09T14:46:27.344-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>Glassfish and Audit Logging</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_7XDJakniA48/Rkefp-Tr-tI/AAAAAAAAAE4/OaHLJNNRTIk/s1600-h/audit.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_7XDJakniA48/Rkefp-Tr-tI/AAAAAAAAAE4/OaHLJNNRTIk/s320/audit.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5064191849450437330" /&gt;&lt;/a&gt;&lt;p&gt;Sarbanes-Oxley aside, one of the concerns of a well written enterprise application is the ability to track changes, including the who, what, and when of a transaction.  In the past, developers used database triggers, as well as separate service interfaces, to aid in generating the bread crumbs of audit logging records.  Triggers are wonderful in that they're an automatic feature, but they have one draw-back:  they have difficulty in deriving the user committing the transaction.  In most cases, a servlet engine or application server will log into a database with a single instance, and that will be the user of record according to the database for all transactions.  A separate service interface for audit logging is undesirable for two reasons.  First, it introduces a redundancy of code.  Second, it introduces coupling to a layer that leads to maintenance nightmares if ever changed.  With current ORM technologies, however, developers have the concept of a centralized API to help them out.  Specifically, I'll be detailing one approach with the Glassfish application server, which uses Oracle's open source implementation of JPA: Toplink Essentials.  This approach leverages Listeners on the &lt;span style="font-style: italic;"&gt;EntityManager&lt;/span&gt; architecture, which will be triggered upon events such as insert, update, and delete.  These callbacks can be assigned to arbitrary &lt;span style="font-style: italic;"&gt;@Entity&lt;/span&gt; types, allowing the developer to write a single class to respond to these events and issue the desired logging statements.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;First, we start with the domain objects, or entity beans.  With entity beans, we basically have two choices:  to inherit, or not to inherit.  Simple entity per table models will require more configuration effort, while an inheritance approach may have impacts on performance.  For the latter, the specific concern is with &lt;span style="font-style: italic;"&gt;InheritanceType.JOINED&lt;/span&gt;, where a single table will have a row per entity in the system.  If the number of entities grows large ( &gt; 10^8), you will find that database performance will suffer.  So if you're tackling data domains with large numbers of records, you'll want to think carefully how you tread.&lt;br /&gt;&lt;br /&gt;For my example, I'm going with a &lt;span style="font-style: italic;"&gt;JOINED&lt;/span&gt; inheritance hierarchy.  This will enable OOD throughout the application, and as well see, simplify Toplink configuration.&lt;br /&gt;&lt;br /&gt;To start off, here's the base class &lt;span style="font-style: italic;"&gt;@Entity&lt;/span&gt;.  I've incorporated all of the attributes that will be common throughout the hierarchy, which you'll want to augment as needed. &lt;/p&gt;&lt;pre&gt;&lt;br /&gt;/**&lt;br /&gt; * FileName: BaseEntity.java&lt;br /&gt; * Author: Julian Klappenbach&lt;br /&gt; * Date Created: May 4, 2007&lt;br /&gt; * Purpose: Base class for entity model&lt;br /&gt; *&lt;br /&gt; */&lt;br /&gt;package com.yourorg.jpa;&lt;br /&gt;&lt;br /&gt;import java.io.Serializable;&lt;br /&gt;&lt;br /&gt;import javax.persistence.Column;&lt;br /&gt;import javax.persistence.DiscriminatorColumn;&lt;br /&gt;import javax.persistence.DiscriminatorType;&lt;br /&gt;import javax.persistence.DiscriminatorValue;&lt;br /&gt;import javax.persistence.Entity;&lt;br /&gt;import javax.persistence.GeneratedValue;&lt;br /&gt;import javax.persistence.Id;&lt;br /&gt;import javax.persistence.Inheritance;&lt;br /&gt;import javax.persistence.InheritanceType;&lt;br /&gt;import javax.persistence.JoinColumn;&lt;br /&gt;import javax.persistence.OneToOne;&lt;br /&gt;&lt;br /&gt;@Entity&lt;br /&gt;@Inheritance(strategy = InheritanceType.JOINED)&lt;br /&gt;@DiscriminatorColumn(name="RESOURCETYPE", discriminatorType = DiscriminatorType.STRING, length = 20)&lt;br /&gt;@DiscriminatorValue(value = "BaseEntity")&lt;br /&gt;public class BaseEntity implements Serializable&lt;br /&gt;{&lt;br /&gt;    private static final long serialVersionUID = 1L;&lt;br /&gt;    protected Integer id;&lt;br /&gt;    protected String title;&lt;br /&gt;    protected String description;&lt;br /&gt;    protected BaseEntity modifiedBy; &lt;br /&gt;    &lt;br /&gt;    @Id&lt;br /&gt;    @GeneratedValue&lt;br /&gt;    public Integer getId()&lt;br /&gt;    {&lt;br /&gt;        return id;&lt;br /&gt;    }&lt;br /&gt;    public void setId(Integer id)&lt;br /&gt;    {&lt;br /&gt;        this.id = id;&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    @Column&lt;br /&gt;    public String getTitle()&lt;br /&gt;    {&lt;br /&gt;        return title;&lt;br /&gt;    }&lt;br /&gt;    public void setTitle(String title)&lt;br /&gt;    {&lt;br /&gt;        this.title = title;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    @Column&lt;br /&gt;    public String getDescription()&lt;br /&gt;    {&lt;br /&gt;        return description;&lt;br /&gt;    }&lt;br /&gt;    public void setDescription(String description)&lt;br /&gt;    {&lt;br /&gt;        this.description = description;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    @OneToOne&lt;br /&gt;    @JoinColumn(name = "MODIFIEDBYID")&lt;br /&gt;    public BaseEntity getModifiedBy()&lt;br /&gt;    {&lt;br /&gt;        return modifiedBy;&lt;br /&gt;    }&lt;br /&gt;    /**&lt;br /&gt;     * @param modifiedBy the modifiedBy to set&lt;br /&gt;     */&lt;br /&gt;    public void setModifiedBy(BaseEntity modifiedBy)&lt;br /&gt;    {&lt;br /&gt;        this.modifiedBy = modifiedBy;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * Set hashCode to entity's ID&lt;br /&gt;     */&lt;br /&gt;    public int hashCode()&lt;br /&gt;    {&lt;br /&gt;        return id;&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    /**&lt;br /&gt;     * Assign equivalence based on entity's ID&lt;br /&gt;     */&lt;br /&gt;    public boolean equals(Object obj)&lt;br /&gt;    {&lt;br /&gt;        if (obj instanceof BaseEntity)&lt;br /&gt;        {&lt;br /&gt;            if (((BaseEntity) obj).getId() == id)&lt;br /&gt;                return true;&lt;br /&gt;        }&lt;br /&gt;        return false;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;To build out the example, I'm going to add User to the hierarchy:&lt;/p&gt;&lt;pre&gt;&lt;br /&gt;/**&lt;br /&gt; * FileName: User.java&lt;br /&gt; * Author: Julian Klappenbach&lt;br /&gt; * Date Created: May 4, 2007&lt;br /&gt; * Purpose: class defining User entity&lt;br /&gt; *&lt;br /&gt; */&lt;br /&gt;package com.yourorg.jpa.user;&lt;br /&gt;&lt;br /&gt;import java.util.HashSet;&lt;br /&gt;import java.util.Collection;&lt;br /&gt;&lt;br /&gt;import javax.persistence.CascadeType;&lt;br /&gt;import javax.persistence.Column;&lt;br /&gt;import javax.persistence.DiscriminatorValue;&lt;br /&gt;import javax.persistence.Entity;&lt;br /&gt;import javax.persistence.FetchType;&lt;br /&gt;import javax.persistence.JoinColumn;&lt;br /&gt;import javax.persistence.JoinTable;&lt;br /&gt;import javax.persistence.ManyToMany;&lt;br /&gt;&lt;br /&gt;import com.yourorg.jpa.BaseEntity;&lt;br /&gt;&lt;br /&gt;@Entity&lt;br /&gt;@DiscriminatorValue("User")&lt;br /&gt;public class User extends BaseEntity&lt;br /&gt;{&lt;br /&gt;    private static final long serialVersionUID = 1L;&lt;br /&gt;    protected String email = "";&lt;br /&gt;    protected String username = "";&lt;br /&gt;    protected String firstName = "";&lt;br /&gt;    protected String lastName = "";&lt;br /&gt;    protected String password = "";&lt;br /&gt;&lt;br /&gt;    @Column&lt;br /&gt;    public String getEmail()&lt;br /&gt;    {&lt;br /&gt;        return email;&lt;br /&gt;    }&lt;br /&gt;    public void setEmail(String email)&lt;br /&gt;    {&lt;br /&gt;        this.email = email;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    @Column&lt;br /&gt;    public String getFirstName()&lt;br /&gt;    {&lt;br /&gt;        return firstName;&lt;br /&gt;    }&lt;br /&gt;    public void setFirstName(String firstName)&lt;br /&gt;    {&lt;br /&gt;        this.firstName = firstName;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    @Column&lt;br /&gt;    public String getLastName()&lt;br /&gt;    {&lt;br /&gt;        return lastName;&lt;br /&gt;    }&lt;br /&gt;    public void setLastName(String lastName)&lt;br /&gt;    {&lt;br /&gt;        this.lastName = lastName;&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    @Column&lt;br /&gt;    public String getUserName()&lt;br /&gt;    {&lt;br /&gt;        return username;&lt;br /&gt;    }&lt;br /&gt;    public void setUserName(String username)&lt;br /&gt;    {&lt;br /&gt;        this.username = username;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    @Column&lt;br /&gt;    public String getPassword()&lt;br /&gt;    {&lt;br /&gt;        return password;&lt;br /&gt;    }&lt;br /&gt;    public void setPassword(String password)&lt;br /&gt;    {&lt;br /&gt;        this.password = password;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public boolean equals(Object o)&lt;br /&gt;    {&lt;br /&gt;        if (o instanceof User)&lt;br /&gt;        {&lt;br /&gt;            User u = (User) o;&lt;br /&gt;            if (u.getId() == id)&lt;br /&gt;                return true;&lt;br /&gt;        }&lt;br /&gt;        return false;&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    public int hashCode()&lt;br /&gt;    {&lt;br /&gt;        return id;&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    public String toString()&lt;br /&gt;    {&lt;br /&gt;        return firstName + " " + lastName;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;&lt;br /&gt;As a note: I won't go into the construction of the session beans managing these entities.  See the Toplink JPA &lt;a href="http://download-east.oracle.com/docs/cd/B32110_01/web.1013/b28221/usclient005.htm"&gt;documentation&lt;/a&gt; if you have questions.  We'll next define how we'll store information about each transaction.  We have three operation types that we care about, INSERT, UPDATE, and DELETE.  We also need to analyze the use cases for audit information.  These range all the way from version interrogation and control, to simply tracking the actors involved in an operation.  For this example, we're only concerned with the simple case of tracking.  To store the information, we'll use an @Entity again:&lt;/p&gt;&lt;pre&gt;&lt;br /&gt;/**&lt;br /&gt; * FileName: AuditEntry.java&lt;br /&gt; * Author: Julian Klappenbach&lt;br /&gt; * Date Created: May 4, 2007&lt;br /&gt; * Purpose: The definition of the AuditEntry entity&lt;br /&gt; *&lt;br /&gt; */&lt;br /&gt;package com.yourorg.jpa.audit;&lt;br /&gt;&lt;br /&gt;import java.io.Serializable;&lt;br /&gt;import java.util.Collection;&lt;br /&gt;import java.util.Date;&lt;br /&gt;&lt;br /&gt;import javax.persistence.CascadeType;&lt;br /&gt;import javax.persistence.Column;&lt;br /&gt;import javax.persistence.Entity;&lt;br /&gt;import javax.persistence.FetchType;&lt;br /&gt;import javax.persistence.GeneratedValue;&lt;br /&gt;import javax.persistence.Id;&lt;br /&gt;import javax.persistence.OneToMany;&lt;br /&gt;import javax.persistence.Temporal;&lt;br /&gt;import javax.persistence.TemporalType;&lt;br /&gt;&lt;br /&gt;@Entity&lt;br /&gt;public class AuditEntry implements Serializable&lt;br /&gt;{&lt;br /&gt;    private static final long serialVersionUID = 1L;&lt;br /&gt;    public static final String UPDATE_OPERATION = "UPDATE";&lt;br /&gt;    public static final String INSERT_OPERATION = "INSERT";&lt;br /&gt;    public static final String DELETE_OPERATION = "DELETE";&lt;br /&gt;    &lt;br /&gt;    protected Integer id;&lt;br /&gt;    protected Integer baseEntityId;&lt;br /&gt;    protected String operation;&lt;br /&gt;    protected Date operationTime;&lt;br /&gt;    protected Collection&lt;AuditField&gt; fields;&lt;br /&gt;    &lt;br /&gt;    @Id&lt;br /&gt;    @GeneratedValue&lt;br /&gt;    public Integer getId()&lt;br /&gt;    {&lt;br /&gt;        return id;&lt;br /&gt;    }&lt;br /&gt;    public void setId(Integer id)&lt;br /&gt;    {&lt;br /&gt;        this.id = id;&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    @Column&lt;br /&gt;    public Integer getBaseEntityId()&lt;br /&gt;    {&lt;br /&gt;        return resourceEntityId;&lt;br /&gt;    }&lt;br /&gt;    public void setResourceEntityId(Integer resourceEntityId)&lt;br /&gt;    {&lt;br /&gt;        this.resourceEntityId = resourceEntityId;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    @Column&lt;br /&gt;    public String getOperation()&lt;br /&gt;    {&lt;br /&gt;        return operation;&lt;br /&gt;    }&lt;br /&gt;    public void setOperation(String action)&lt;br /&gt;    {&lt;br /&gt;        this.operation = action;&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    @Column&lt;br /&gt;    @Temporal(value = TemporalType.TIME)&lt;br /&gt;    public Date getOperationTime()&lt;br /&gt;    {&lt;br /&gt;        return operationTime;&lt;br /&gt;    }&lt;br /&gt;    public void setOperationTime(Date operationTime)&lt;br /&gt;    {&lt;br /&gt;        this.operationTime = operationTime;&lt;br /&gt;    }&lt;br /&gt;        &lt;br /&gt;    @OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.EAGER, mappedBy = "auditEntry")&lt;br /&gt;    public Collection&lt;AuditField&gt; getFields()&lt;br /&gt;    {&lt;br /&gt;        return fields;&lt;br /&gt;    }&lt;br /&gt;    public void setFields(Collection&lt;AuditField&gt; fields)&lt;br /&gt;    {&lt;br /&gt;        this.fields = fields;&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    /**&lt;br /&gt;     * Set hashCode to entity's ID&lt;br /&gt;     */&lt;br /&gt;    public int hashCode()&lt;br /&gt;    {&lt;br /&gt;        return id;&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    /**&lt;br /&gt;     * Assign equivalence based on entity's ID&lt;br /&gt;     */&lt;br /&gt;    public boolean equals(Object obj)&lt;br /&gt;    {&lt;br /&gt;        if (obj instanceof AuditEntry)&lt;br /&gt;        {&lt;br /&gt;            if (((AuditEntry) obj).getId() == id)&lt;br /&gt;                return true;&lt;br /&gt;        }&lt;br /&gt;        return false;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;In addition to knowing general information about the audit event, we'll also want to store information about the entity attributes that were changed during a transaction.  For that, I've defined an AuditField entity:&lt;/p&gt;&lt;pre&gt;&lt;br /&gt;/**&lt;br /&gt; * FileName: AuditField.java&lt;br /&gt; * Author: julian&lt;br /&gt; * Date Created: May 4, 2007&lt;br /&gt; * Purpose: Store information about fields changed in a transaction &lt;br /&gt; */&lt;br /&gt;package com.yourorg.jpa.audit;&lt;br /&gt;&lt;br /&gt;import java.io.Serializable;&lt;br /&gt;&lt;br /&gt;import javax.persistence.Column;&lt;br /&gt;import javax.persistence.Entity;&lt;br /&gt;import javax.persistence.GeneratedValue;&lt;br /&gt;import javax.persistence.Id;&lt;br /&gt;import javax.persistence.JoinColumn;&lt;br /&gt;import javax.persistence.ManyToOne;&lt;br /&gt;&lt;br /&gt;@Entity&lt;br /&gt;public class AuditField implements Serializable&lt;br /&gt;{&lt;br /&gt;    private static final long serialVersionUID = 1L;&lt;br /&gt;    private Integer id;&lt;br /&gt;    private String fieldName;&lt;br /&gt;    private String fieldValue;&lt;br /&gt;    private AuditEntry auditEntry;&lt;br /&gt;    &lt;br /&gt;    @Id&lt;br /&gt;    @GeneratedValue&lt;br /&gt;    public Integer getId()&lt;br /&gt;    {&lt;br /&gt;        return id;&lt;br /&gt;    }&lt;br /&gt;    public void setId(Integer id)&lt;br /&gt;    {&lt;br /&gt;        this.id = id;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    @Column&lt;br /&gt;    public String getFieldName()&lt;br /&gt;    {&lt;br /&gt;        return fieldName;&lt;br /&gt;    }&lt;br /&gt;    public void setFieldName(String fieldName)&lt;br /&gt;    {&lt;br /&gt;        this.fieldName = fieldName;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    @Column&lt;br /&gt;    public String getFieldValue()&lt;br /&gt;    {&lt;br /&gt;        return fieldValue;&lt;br /&gt;    }&lt;br /&gt;    public void setFieldValue(String fieldValue)&lt;br /&gt;    {&lt;br /&gt;        this.fieldValue = fieldValue;&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    @ManyToOne&lt;br /&gt;    @JoinColumn(name = "AUDITENTRYID")&lt;br /&gt;    public AuditEntry getAuditEntry()&lt;br /&gt;    {&lt;br /&gt;        return auditEntry;&lt;br /&gt;    }&lt;br /&gt;    public void setAuditEntry(AuditEntry auditEntry)&lt;br /&gt;    {&lt;br /&gt;        this.auditEntry = auditEntry;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;Now, that I have the entities defined, let's take a look at the listener interface that we'll use to intercept to EntityManager events:&lt;/p&gt;&lt;pre&gt;&lt;br /&gt;/**&lt;br /&gt; * FileName: AuditHandler.java&lt;br /&gt; * Author: Julian Klappenbach&lt;br /&gt; * Date Created: May 4, 2007&lt;br /&gt; * Purpose: The listener implementation for auditing on EntityManager callbacks&lt;br /&gt; */&lt;br /&gt;package com.yourorg.jpa.audit;&lt;br /&gt;&lt;br /&gt;import java.util.Collection;&lt;br /&gt;import java.util.Date;&lt;br /&gt;import java.util.LinkedList;&lt;br /&gt;import java.util.Vector;&lt;br /&gt;&lt;br /&gt;import oracle.toplink.essentials.changesets.DirectToFieldChangeRecord;&lt;br /&gt;import oracle.toplink.essentials.descriptors.ClassDescriptor;&lt;br /&gt;import oracle.toplink.essentials.descriptors.DescriptorEvent;&lt;br /&gt;import oracle.toplink.essentials.descriptors.DescriptorEventAdapter;&lt;br /&gt;import oracle.toplink.essentials.queryframework.InsertObjectQuery;&lt;br /&gt;import oracle.toplink.essentials.queryframework.WriteObjectQuery;&lt;br /&gt;import oracle.toplink.essentials.tools.sessionconfiguration.DescriptorCustomizer;&lt;br /&gt;&lt;br /&gt;import org.apache.commons.logging.Log;&lt;br /&gt;import org.apache.commons.logging.LogFactory;&lt;br /&gt;&lt;br /&gt;public class AuditHandler extends DescriptorEventAdapter implements&lt;br /&gt;        DescriptorCustomizer&lt;br /&gt;{&lt;br /&gt;    private static final Log  log = LogFactory.getLog(AuditHandler.class);&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     *  This method "customizes" the DescriptionEventManager, adding this listener to be invoked&lt;br /&gt;     *  for events&lt;br /&gt;     */&lt;br /&gt;    public void customize(ClassDescriptor classDescriptor) throws Exception&lt;br /&gt;    {&lt;br /&gt;        classDescriptor.getDescriptorEventManager().addListener(this);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /** (non-Javadoc)&lt;br /&gt;     * @see oracle.toplink.essentials.descriptors.DescriptorEventAdapter#postDelete(oracle.toplink.essentials.descriptors.DescriptorEvent)&lt;br /&gt;     */&lt;br /&gt;    @Override&lt;br /&gt;    public void postDelete(DescriptorEvent event)&lt;br /&gt;    {&lt;br /&gt;        AuditEntry entry = new AuditEntry();&lt;br /&gt;        entry.setOperation(AuditEntry.DELETE_OPERATION);&lt;br /&gt;        entry.setOperationTime(new Date());&lt;br /&gt;        entry.setResourceEntityId(event.getSource().hashCode());&lt;br /&gt;        InsertObjectQuery insertQuery = new InsertObjectQuery(entry);&lt;br /&gt;        event.getSession().executeQuery(insertQuery);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /** (non-Javadoc)&lt;br /&gt;     * @see oracle.toplink.essentials.descriptors.DescriptorEventAdapter#postInsert(oracle.toplink.essentials.descriptors.DescriptorEvent)&lt;br /&gt;     */&lt;br /&gt;    @Override&lt;br /&gt;    public void postInsert(DescriptorEvent event)&lt;br /&gt;    {&lt;br /&gt;        processWriteEvent(event);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /** (non-Javadoc)&lt;br /&gt;     * @see oracle.toplink.essentials.descriptors.DescriptorEventAdapter#postUpdate(oracle.toplink.essentials.descriptors.DescriptorEvent)&lt;br /&gt;     */&lt;br /&gt;    @Override&lt;br /&gt;    public void postUpdate(DescriptorEvent event)&lt;br /&gt;    {&lt;br /&gt;        processWriteEvent(event);&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    /**&lt;br /&gt;     * Common method to handle both Update and Insert events.  Fortunately, the Toplink libs &lt;br /&gt;     * are ammenable to this.&lt;br /&gt;     * @param event The DescriptorEvent to process&lt;br /&gt;     */&lt;br /&gt;    protected void processWriteEvent(DescriptorEvent event)&lt;br /&gt;    {&lt;br /&gt;        AuditEntry entry = new AuditEntry();&lt;br /&gt;        entry.setOperation(event.getEventCode() == 7 ? AuditEntry.UPDATE_OPERATION : &lt;br /&gt;                AuditEntry.INSERT_OPERATION);&lt;br /&gt;        entry.setOperationTime(new Date());&lt;br /&gt;        entry.setResourceEntityId(event.getSource().hashCode());&lt;br /&gt;&lt;br /&gt;        Collection&lt;AuditField&gt; fields = new LinkedList&lt;AuditField&gt;();&lt;br /&gt;        WriteObjectQuery query = (WriteObjectQuery) event.getQuery();&lt;br /&gt;        Vector changes = query.getObjectChangeSet().getChanges();&lt;br /&gt;        for (int i = 0; i &lt; changes.size(); i++)&lt;br /&gt;        {&lt;br /&gt;            if (changes.elementAt(i) instanceof DirectToFieldChangeRecord)&lt;br /&gt;            {&lt;br /&gt;                DirectToFieldChangeRecord fieldChange = (DirectToFieldChangeRecord) changes.elementAt(i);&lt;br /&gt;                AuditField field = new AuditField();&lt;br /&gt;                field.setAuditEntry(entry);&lt;br /&gt;                field.setFieldName(fieldChange.getAttribute());&lt;br /&gt;                field.setFieldValue(fieldChange.getNewValue().toString());&lt;br /&gt;                fields.add(field);&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;        entry.setFields(fields);&lt;br /&gt;&lt;br /&gt;        InsertObjectQuery insertQuery = new InsertObjectQuery(entry);&lt;br /&gt;        event.getSession().executeQuery(insertQuery);&lt;br /&gt;        &lt;br /&gt;        for (AuditField field : fields)&lt;br /&gt;        {&lt;br /&gt;            insertQuery = new InsertObjectQuery(field);&lt;br /&gt;            event.getSession().executeQuery(insertQuery);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;A few notes here.  First, the implementation only handles insert, update, and delete events.  It's capable of much more, and all that is required is the @Override of the remaining DescriptorEventAdaptor methods.  I've chosen post* events, as this ensures that records have already been written before the audit entry is processed.  Second, the implementation relies on the override of the Entity's &lt;span style="font-style: italic;"&gt;hashCode&lt;/span&gt; method to produce the ID attribute.  This override (as well as &lt;span style="font-style: italic;"&gt;equals&lt;/span&gt;) is a good idea in general, and essential for presentation frameworks like Wicket, which have components that rely on the equals contract to assess the equivalence of detached domain objects. Third, even though I've gone through the effort of defining the annotations to map the one-to-many relationship of AuditEntry to AuditField, the low level persistence API that I'm using to execute queries does not observe the relationship.  Therefore, I'm explicitly making calls to persist the AuditField records.  These annotations will come in handy, however, if I later choose to code up a user interface into AuditEntry records in my application.&lt;/p&gt;&lt;p&gt;Now that we have our listener implementation, we're almost there.  We just need to tell TopLink where to find it.  We do this through the persistence.xml descriptor, where we'll include property elements that associate our entities with the listener.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;The property has the following key value pairs:&lt;/p&gt;&lt;pre&gt;&lt;br /&gt;   &amp;lt;property name="toplink.descriptor.customizer.*" value="[Listener Implementation Classname]"/&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;&lt;br /&gt;The name of the property follows a naming convention, where "*" is the simple name for the @Entity you wish to have mapped.  Because I've used inheritance, I only need to create a mapping for my base class.  Otherwise, I would need to create an explicit mapping for each entity I would want to have audited.  The following is the full persistence.xml definition:&lt;/p&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;&amp;lt;persistence xmlns=&amp;quot;http://java.sun.com/xml/ns/persistence&amp;quot; version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;persistence-unit name=&amp;quot;PrototypePU&amp;quot; transaction-type=&amp;quot;JTA&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;jta-data-source&amp;gt;jdbc/PrototypeDS&amp;lt;/jta-data-source&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;properties&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;property name=&amp;quot;toplink.logging.level&amp;quot; value=&amp;quot;FINE&amp;quot; /&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;property name=&amp;quot;toplink.target-database&amp;quot; value=&amp;quot;MySQL4&amp;quot; /&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;property name=&amp;quot;toplink.ddl-generation&amp;quot; value=&amp;quot;none&amp;quot; /&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;property name=&amp;quot;toplink.descriptor.customizer.BaseEntity&amp;quot; value=&amp;quot;com.yourorg.jpa.audit.AuditHandler&amp;quot; /&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/properties&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/persistence-unit&amp;gt;&lt;br /&gt;&amp;lt;/persistence&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;p&gt;In this article, I have covered a complete solution to audit logging for Glassfish using the default Toplink JPA architecture.  Though there is additional overhead to this approach, it is by far one of the most efficient approaches.  The listener API enables the detection of dirty fields on entity objects, efficient access to the persistence data source, as well as fine grained control over the entities to be audited.  Though there still exists some concerns uncovered, such as batch operations, this is a clear choice for JPA applications.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-6401501383752850178?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/6401501383752850178/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=6401501383752850178' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/6401501383752850178'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/6401501383752850178'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2007/05/glassfish-and-audit-logging.html' title='Glassfish and Audit Logging'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_7XDJakniA48/Rkefp-Tr-tI/AAAAAAAAAE4/OaHLJNNRTIk/s72-c/audit.jpg' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-8746114221135931959</id><published>2007-05-10T09:34:00.000-07:00</published><updated>2008-12-09T14:46:27.966-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>Glassfish, JPA, and Compass</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_7XDJakniA48/RkOZdeTr-sI/AAAAAAAAAEw/nd0CggTvSCA/s1600-h/compass.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 224px; height: 231px;" src="http://2.bp.blogspot.com/_7XDJakniA48/RkOZdeTr-sI/AAAAAAAAAEw/nd0CggTvSCA/s320/compass.jpg" alt="" id="BLOGGER_PHOTO_ID_5063059137725463234" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Never underestimate search.  It's made an empire out of Google, and is possibly the single most valuable function that software performs in our society.   Modern search engines have simplified and refined the approach to search to the point where applications consisting of millions of lines of code can be interfaced with a single text edit box, a blinking cursor that is the doorway to the combined knowledge of all of humanity.&lt;br /&gt;&lt;br /&gt;Recently, I've desired to bring this kind of functionality to the applications I design.  The idea of enabling the same concepts of a "Google" search to an application domain is actually not as easy as one would think, especially since most applications store their data within Relational Database Systems.  While these architectures excel at storing elements of data and the relationships between them (a schema), they are not quite so good at indexing the structure within data elements, or providing an abstraction whereby a search term can easily be applied over an entire schema.  SQL, with its syntax, would become impractical when presented with the task of a boolean logic keyword search applied over a schema consisting of little more than a dozen domain objects.&lt;br /&gt;&lt;br /&gt;To some extent, RDBMS providers have been reacting to demand for more sophisticated indexing and search capabilities.  MySQL has introduced the FULLTEXT index, which can be applied to MyISAM tables to index the contents of text fields.  The index gets us part of the way, but doesn't provide the domain wide search scope one would desire.  Even more depressing is the lack of InnoDB support, meaning that tables supporting this feature aren't capable of sophisticated transaction behavior. But, even if domain-wide indexing via a database became an easy solution, it would be of little use to applications relying on flat files, or alternative data sources.  What is needed is a layer that sits on top.  If you're in the Java realm, what you're looking for is an open source Apache project called &lt;a href="http://lucene.apache.org/java/docs/index.html"&gt;Lucene&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Lucene has been around for several years, gradually evolving to the point where it now offers a sophisticated and powerful set of search &lt;a href="http://lucene.apache.org/java/docs/features.html"&gt;features&lt;/a&gt;, including cross language and platform capabilities.  But despite it's sophistication and power, it was somehow missing the target.  With Lucene, as instances of domain objects are managed within a transaction, these activities need to be mirrored to Lucene to keep its index synchronized with the application's data.  This makes for redundant code and with limited transaction support, some serious headaches.&lt;br /&gt;&lt;br /&gt;Fortunately, a genre of persistence frameworks known as Object Relational Mapping systems (ORMs) have enabled a simple and elegant enhancement for Lucene.  These frameworks, including Spring, Hibernate, JDO and JPA, all feature centralized objects to handle persistence management.  Due to this architecture, these management objects provide ideal points for interceptors -- callbacks that are triggered when objects are created, modified, or destroyed.  These callbacks allow a Lucene index to be updated auto-magically with ORM operations, as well as provide transaction services for index manipulation.&lt;br /&gt;&lt;br /&gt;Identifying an elegant solution was noteworthy, but delivering an implementation would be a supreme labor of love.  And that's exactly what Shay Bannon set out to accomplish with a project called &lt;a href="http://www.opensymphony.com/compass/"&gt;Compass&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;As a bridge between ORM and search engine technologies, Compass could very well be one of the most influential concepts to enter the open source arena in years.  Supporting Java annotations, it is now a trivial chore to make domain classes available to search, establish additional meta data, or even specify indexable relationships.  I only had a small problem:  initializing Compass in Glassfish.&lt;br /&gt;&lt;br /&gt;I discussed the issue with Bannon a few days ago, and he confessed that every Glassfish deployment of Compass was actually in concert with Spring.  I like Spring, and have used it in the past.  But to use Spring within Glassfish just offended my sensibilities.  Both feature similar API's and feature sets, so why not go with one or the other?  I also am a fan of JPA, and have had positive experiences with Oracle's Toplink libraries, which provide the JPA backbone in Glassfish.  Glassfish also supports a sophisticated management interface, and a growing legion of developers and users.  There is, however, one thing Spring makes easy that Glassfish does not: the initialization of Compass with JPA.&lt;br /&gt;&lt;br /&gt;To initialize Compass with JPA, one must derive the managed container instance of a class called the EntityManagerFactory.  This factory object is used, in turn, to provide container objects with EntityManager objects, the gatekeepers of the JPA persistence API.  With EntityManagers, you create, delete, find and query for objects from a data source.  By instrumenting the EntityManagerFactory, one can ensure that all EntityManager references will trigger the desired callbacks to Compass handlers.&lt;br /&gt;&lt;br /&gt;The JPA specification includes two methods for gaining access to an EMF.  The first is by annotation, using the @PersistenceUnit declaration.  The second is programmatic, using the static method Persistence.createEntityManagerFactory.  In Glassfish, the annotation and programmatic approaches each grant you an instance of an EMF, but not the same instance (a major problem with Compass).  Even more problematic is that the annotation approach grants you an EntityManagerFactoryWrapper, and not the real deal.  Having a wrapper wouldn't be a problem, save for the fact that there's no API to access the contained EMF instance.&lt;br /&gt;&lt;br /&gt;All of these combine together to make it difficult to initialize compass, but it gets worse.  In Compass, initialization is a heavyweight activity, and should be executed only once.  Since initialization requires a Bean Managed Transaction context, initialization needs to happen within the context of a call to a properly configured session bean.  Both @Stateful and @Stateless session beans are incompatible with the task of maintaining compass object instances, both due to passivation issues as well as pooling.  I'm looking into Glassfish's management API, including the JMX specification to see if Compass management can be handled in a more elegant manner.  But for now, I hacked it with a Singleton.&lt;br /&gt;&lt;br /&gt;The following classes represent a workable solution to establishing Compass with JPA on Glassfish.  If I find a better solution, I'll update this article accordingly.  Feel free to provide suggestions if you know of a better way to do this:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;/**&lt;br /&gt;* File GlassfishTransactionManagerLookup&lt;br /&gt;*/&lt;br /&gt;package org.compass.core.transaction.manager;&lt;br /&gt;&lt;br /&gt;import org.compass.core.transaction.manager.JNDITransactionManagerLookup;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* @author Julian Klappenbach&lt;br /&gt;*&lt;br /&gt;* This class provides JNDI names for transaction components within Glassfish&lt;br /&gt;*/&lt;br /&gt;public class GlassfishTransactionManagerLookup extends&lt;br /&gt; JNDITransactionManagerLookup&lt;br /&gt;{&lt;br /&gt;   /* (non-Javadoc)&lt;br /&gt;   * @see org.compass.core.transaction.manager.JNDITransactionManagerLookup#getName()&lt;br /&gt;   */&lt;br /&gt;   @Override&lt;br /&gt;   protected String getName()&lt;br /&gt;   {&lt;br /&gt;       return "java:appserver/TransactionManager";&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   /* (non-Javadoc)&lt;br /&gt;    * @see org.compass.core.transaction.TransactionManagerLookup#getUserTransactionName()&lt;br /&gt;    */&lt;br /&gt;   public String getUserTransactionName()&lt;br /&gt;   {&lt;br /&gt;       return "UserTransaction";&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* File GlassfishCompassSingleton&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;package org.compass.gps;&lt;br /&gt;&lt;br /&gt;import javax.persistence.EntityManagerFactory;&lt;br /&gt;import org.compass.annotations.config.CompassAnnotationsConfiguration;&lt;br /&gt;import org.compass.core.Compass;&lt;br /&gt;import org.compass.core.config.CompassConfiguration;&lt;br /&gt;import org.compass.gps.CompassGps;&lt;br /&gt;import org.compass.gps.device.jpa.JpaGpsDevice;&lt;br /&gt;import org.compass.gps.device.jpa.lifecycle.TopLinkEssentialsJpaEntityLifecycleInjector;&lt;br /&gt;import org.compass.gps.impl.SingleCompassGps;&lt;br /&gt;import com.sun.enterprise.ComponentInvocation;&lt;br /&gt;import com.sun.enterprise.InvocationManager;&lt;br /&gt;import com.sun.enterprise.Switch;&lt;br /&gt;import com.sun.enterprise.util.EntityManagerFactoryWrapper;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* @author Julian Klappenbach&lt;br /&gt;*&lt;br /&gt;*/&lt;br /&gt;public class GlassfishCompassSingleton&lt;br /&gt;{&lt;br /&gt;    private JpaGpsDevice jpaDevice = null;&lt;br /&gt;    private Compass compass = null;&lt;br /&gt;    private EntityManagerFactory emf = null;&lt;br /&gt;    static private GlassfishCompassSingleton theInstance = new GlassfishCompassSingleton();&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * The Singleton to establish the one and only instance of the compass object, and the associated JpaGpsDevice&lt;br /&gt;     * for the Glassfish Application Server Environment.&lt;br /&gt;     * The first call to getInstance should occur within a method&lt;br /&gt;     * governed by a BMT managed transction scope&lt;br /&gt;     * hack.  A better approach would be to have a single instance, management&lt;br /&gt;     * bean associated with the application -- provided&lt;br /&gt;     * the bean had access to a valid transactional context.&lt;br /&gt;     *&lt;br /&gt;     * More to come, but this works for now.&lt;br /&gt;     *&lt;br /&gt;     */&lt;br /&gt;    private GlassfishCompassSingleton()&lt;br /&gt;    {&lt;br /&gt;        CompassConfiguration conf = new CompassAnnotationsConfiguration();&lt;br /&gt;&lt;br /&gt;        for (Class c : getSearchableClasses())&lt;br /&gt;        {&lt;br /&gt;            conf.addClass(c);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        // File based index, can be changed to JDBC data source&lt;br /&gt;        conf.setConnection("compassIndex");&lt;br /&gt;        conf.setSetting("compass.transaction.managerLookup", "org.compass.core.transaction.manager.GlassfishTransactionManagerLookup");&lt;br /&gt;        conf.setSetting("compass.transaction.factory", "org.compass.core.transaction.JTASyncTransactionFactory");&lt;br /&gt;        compass = conf.buildCompass();&lt;br /&gt;&lt;br /&gt;        // Hack to get the actual EntityManagerFactory, and not the wrapper.&lt;br /&gt;        InvocationManager invMgr = Switch.getSwitch().getInvocationManager();&lt;br /&gt;        ComponentInvocation inv = invMgr.getCurrentInvocation();&lt;br /&gt;&lt;br /&gt;        if (inv != null)&lt;br /&gt;        {&lt;br /&gt;            Object descriptor = Switch.getSwitch().getDescriptorFor(inv.getContainerContext());&lt;br /&gt;            // Replace persistence unit name with your own (PrototypePU)&lt;br /&gt;            emf = EntityManagerFactoryWrapper.lookupEntityManagerFactory(inv.getInvocationType(), "PrototypePU", descriptor);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        CompassGps gps = new SingleCompassGps(compass);&lt;br /&gt;&lt;br /&gt;        jpaDevice = new JpaGpsDevice("jpa", emf);&lt;br /&gt;        jpaDevice.setInjectEntityLifecycleListener(true);&lt;br /&gt;        jpaDevice.setLifecycleInjector(new TopLinkEssentialsJpaEntityLifecycleInjector());&lt;br /&gt;        gps.addGpsDevice(jpaDevice);&lt;br /&gt;        gps.start();&lt;br /&gt;&lt;br /&gt;        // Causes the device to synchronize with the existing application state&lt;br /&gt;        gps.index();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    protected Class[] getSearchableClasses()&lt;br /&gt;    {&lt;br /&gt;        return new Class[] { /* TODO: Add class array elements to define the domain&lt;br /&gt;        objects that will be indexed */ };&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public Compass getCompass()&lt;br /&gt;    {&lt;br /&gt;        return compass;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public static GlassfishCompassSingleton getInstance()&lt;br /&gt;    {&lt;br /&gt;        return theInstance;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* File SearchManager&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;package com.acme.jpa.compass;&lt;br /&gt;&lt;br /&gt;import java.io.Serializable;&lt;br /&gt;import java.util.Collection;&lt;br /&gt;import javax.ejb.Local;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* @author Julian Klappenbach&lt;br /&gt;* Provides the interface for the SearchManagerBean&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;@Local&lt;br /&gt;public interface SearchManager extends Serializable&lt;br /&gt;{&lt;br /&gt;    /**&lt;br /&gt;     *&lt;br /&gt;     * @param searchTerm The search term&lt;br /&gt;     * @return The generic collection of beans retrieved by the Compass Search Engine&lt;br /&gt;     */&lt;br /&gt;    public Collection search(String searchTerms);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* File SearchManagerBean&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;package com.acme.jpa.compass;&lt;br /&gt;&lt;br /&gt;import java.util.Collection;&lt;br /&gt;&lt;br /&gt;import javax.ejb.Stateless;&lt;br /&gt;import javax.ejb.TransactionManagement;&lt;br /&gt;import javax.ejb.TransactionManagementType;&lt;br /&gt;&lt;br /&gt;import org.apache.commons.logging.Log;&lt;br /&gt;import org.apache.commons.logging.LogFactory;&lt;br /&gt;import org.compass.core.CompassException;&lt;br /&gt;import org.compass.core.CompassHits;&lt;br /&gt;import org.compass.core.CompassSession;&lt;br /&gt;import org.compass.core.CompassTransaction;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* @author Julian Klappenbach&lt;br /&gt;*&lt;br /&gt;*/&lt;br /&gt;@Stateless&lt;br /&gt;@TransactionManagement(value = TransactionManagementType.BEAN)&lt;br /&gt;public class SearchManagerBean implements SearchManager&lt;br /&gt;{&lt;br /&gt;    private static final long serialVersionUID = 1L;&lt;br /&gt;    private static final Log  log = LogFactory.getLog(SearchManagerBean.class);&lt;br /&gt;&lt;br /&gt;    /* (non-Javadoc)&lt;br /&gt;     * @see com.rampgroup.jpa.compass.SearchManager#search(java.lang.String)&lt;br /&gt;     */&lt;br /&gt;    public Collection search(String searchTerms)&lt;br /&gt;    {&lt;br /&gt;        CompassSession session = GlassfishCompassSingleton.getInstance().getCompass().openSession();&lt;br /&gt;&lt;br /&gt;        CompassTransaction tx = null;&lt;br /&gt;        CompassHits hits;&lt;br /&gt;        try&lt;br /&gt;        {&lt;br /&gt;            tx = session.beginTransaction();&lt;br /&gt;            hits = session.find(searchTerms);&lt;br /&gt;            for (int i = 0; i &amp;lt; hits.length(); i++)&lt;br /&gt;            {&lt;br /&gt;                log.debug("Search found: " + hits.data(i).toString());&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            tx.commit();&lt;br /&gt;        }&lt;br /&gt;        catch (CompassException ce)&lt;br /&gt;        {&lt;br /&gt;            if (tx != null) tx.rollback();&lt;br /&gt;        }&lt;br /&gt;        finally&lt;br /&gt;        {&lt;br /&gt;            session.close();&lt;br /&gt;        }&lt;br /&gt;        return null;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;I hope that I have provided a clear and concise approach to configuring Compass within Glassfish with JPA.  Some might complain that this is a bit of a hack (it is), while others would insist that Singletons are a bad idea within the realm of session beans.  I would point out that, in this case, I'm using static initialization for the Singleton instance.  Therefore, synchronization is removed as an issue and I have avoided a situation which otherwise would have taken a carefully threaded and pooled model, and run it through a single, global critical section.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;If you're new to Compass, take some time to read up on the &lt;a href="http://static.compassframework.org/docs/latest/index.html"&gt;project documentation&lt;/a&gt;, which is excellent.  Bannon and the rest of the team have provided a good picture of what can be accomplished when search meets applications.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-8746114221135931959?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/8746114221135931959/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=8746114221135931959' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/8746114221135931959'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/8746114221135931959'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2007/05/glassfish-compass.html' title='Glassfish, JPA, and Compass'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_7XDJakniA48/RkOZdeTr-sI/AAAAAAAAAEw/nd0CggTvSCA/s72-c/compass.jpg' height='72' width='72'/><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-2107197801672572623</id><published>2007-05-07T14:14:00.000-07:00</published><updated>2008-12-09T14:46:28.083-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='travel'/><title type='text'>Seek The Rush</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_7XDJakniA48/Rj-ZxeTr-qI/AAAAAAAAAEg/JTLZfrIu7TM/s1600-h/header-logo.gif"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_7XDJakniA48/Rj-ZxeTr-qI/AAAAAAAAAEg/JTLZfrIu7TM/s320/header-logo.gif" alt="" id="BLOGGER_PHOTO_ID_5061933581416004258" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Travelosity, Expedia, Priceline...  *Yawn*.  Sure, getting there is important, but it's what you do with your time that makes  all the difference.  And with the rise in popularity of "X" sports, a number of adventure companies have sprouted up to provide equipment, guides, and knowhow to those wishing for more than the average tourist experience.&lt;br /&gt;&lt;br /&gt;Enter the &lt;a href="http://www.seektherush.com/"&gt;Seek The Rush&lt;/a&gt;, an on-line agency that brokers vacation packages with outfitters.  Seek the Rush doesn't get you there (they do provide directions), and that's perhaps one aspect that should be slated for future versions.  However, airline ticket reservation is a complex industry, so focusing on the outfitters is a smart first step. And for the initial roll-out, don't expect national coverage.  Currently, only the PNW is covered, but once the model has been established, I expect coverage to increase nationally.&lt;br /&gt;&lt;br /&gt;At face value, it's a great idea.  They're focusing on an untapped market, and are providing the consumer with choice and value.&lt;br /&gt;&lt;br /&gt;Now, if they could only find some Hang Gliding outfitters...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-2107197801672572623?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/2107197801672572623/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=2107197801672572623' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/2107197801672572623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/2107197801672572623'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2007/05/seek-rush.html' title='Seek The Rush'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_7XDJakniA48/Rj-ZxeTr-qI/AAAAAAAAAEg/JTLZfrIu7TM/s72-c/header-logo.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-1427148557693188176</id><published>2007-05-06T01:43:00.000-07:00</published><updated>2008-12-09T14:46:28.256-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='music'/><title type='text'>Ceu's Brazilian Lounge</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_7XDJakniA48/Rj2YHeTr-pI/AAAAAAAAAEY/QdLBVPLdsZ8/s1600-h/CeU_cover_big.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_7XDJakniA48/Rj2YHeTr-pI/AAAAAAAAAEY/QdLBVPLdsZ8/s320/CeU_cover_big.jpg" alt="" id="BLOGGER_PHOTO_ID_5061368810396449426" border="0" /&gt;&lt;/a&gt;Ceu is Portuguese for Sky, and the name is fitting.  Her delivery is somewhat reminiscent of artists like Beth Orton, or perhaps Joni Mitchell in her youth.  But tonal quality is where the comparisons end, since Ceu's influences are firmly rooted in the rich musical heritage of Brazil.  Like the North Americas, Brazil has borne the black mark of slavery. And like the US, these bitter seeds have given rise to a rich and beautiful flowering of Afro-Carribean culture.&lt;br /&gt;&lt;br /&gt;Ceu weaves these influences into an artful mix, binding electronic ambient backgrounds and production techniques with traditional bossa nova and samba roots, as well as the more modern styles of jazz, reggae, and blues.  Her vocal delivery is understated and touching, with a warm and textured voice that envelopes the listener and leaves one hanging on every phrase.  Her songs are mostly sung in her native Portuguese; a rather beautiful language, with soft lilting sounds and round, warm syllables.   It's one of the few Latin languages, other than English, that just fits into contemporary musical phrasing and song structure.&lt;br /&gt;&lt;br /&gt;If you'd like to hear her work, several of the tracks off her latest album can be heard on her MySpace page at:  &lt;a href="http://www.myspace.com/ceumusic" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt;http://www.myspace.com/ceumusic&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Her main site is at:  &lt;a href="http://www.ceumusic.com/index.html" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt;http://www.ceumusic.com/index&lt;wbr&gt;.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I suspect that we'll be hearing a lot more of her, since her CD has enjoyed a considerable amount of buzz, including a distribution contract with Starbucks.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-1427148557693188176?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/1427148557693188176/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=1427148557693188176' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/1427148557693188176'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/1427148557693188176'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2007/05/ceus-brazilian-lounge.html' title='Ceu&apos;s Brazilian Lounge'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_7XDJakniA48/Rj2YHeTr-pI/AAAAAAAAAEY/QdLBVPLdsZ8/s72-c/CeU_cover_big.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-1706002672531890522</id><published>2007-05-06T00:28:00.000-07:00</published><updated>2008-12-09T14:46:28.393-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='food'/><title type='text'>Culinary Heaven:  Vietnamese Tomato and Tofu</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_7XDJakniA48/Rj2MEOTr-oI/AAAAAAAAAEQ/ZhR9ss0rq7w/s1600-h/swedish_chef_02.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_7XDJakniA48/Rj2MEOTr-oI/AAAAAAAAAEQ/ZhR9ss0rq7w/s320/swedish_chef_02.jpg" alt="" id="BLOGGER_PHOTO_ID_5061355560422341250" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;This is a dish that I first sampled in Thailand, and later at one of my favorite restaurants, "&lt;a href="http://www.wildginger.net/"&gt;Wild Ginger&lt;/a&gt;", here in Seattle.  Of all the restaurants I've been to on this planet, Wild Ginger is definitely on my top five list.  Whether or not the dish is truly Vietnamese, this is what the Wild Ginger has billed it, and that's enough for me.  Regardless, It's a wonderful vegetarian dish, bursting with flavor and complexity.  And best of all, it is actually quite easy to make.&lt;br /&gt;&lt;br /&gt;First, make a helping of Japanese white rice.  The trick to perfect rice is easy (you don't need a rice cooker):  3 parts rice to 4 parts water.  Whatever the volume you choose, stick to that ratio and you'll be safe.  Put the water and rice in a covered pot, bring to a boil, then turn down to low.  Keep covered at all times.  After 20 - 30 minutes, the rice will be perfect, sticky, soft, and firm.  After some experience, you can go by smell when it's ready to go.  Constant checking or stirring will only allow water to escape, resulting in rice with hard inner cores.  As a side note, do not store rice in the refrigerator after use.  Otherwise, the water will evaporate, and the rice will become hard and inedible.  The rice should be eaten within 3 days, so only make enough to prevent waste.&lt;br /&gt;&lt;br /&gt;Once the rice is ready, you'll need the following:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Fish Sauce&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Minced Garlic (one clove)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Large Beefstake Tomatoes&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Parsley&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Fried Tofu&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Peanut Oil&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Sesame Oil&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Long String Green Beens, Shitake or Morrel Mushrooms (optional)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;White Rice Cooking Wine&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;First, mince the parsley and the garlic and place in bowls for later use.  Clean and cut the green beans and tomatoes into bite-sized sections.  Discard the core of the tomato.  Cut the tofu in to cubes around an inch square.&lt;br /&gt;&lt;br /&gt;In a large skillet or wok, pour a measure of peanut oil.  I generally limit one tablespoon per person to prevent excess fat.  Peanut oil is a wonderful cooking medium if you're going to fry.  It doesn't burn like olive oil and contains no transfats or cholesterol.  And the high heat is the key.&lt;br /&gt;&lt;br /&gt;Heat the skillet to high, and once the oil is &lt;span style="font-weight: bold;"&gt;hot&lt;/span&gt;, put in the tofu and green beans (or other vegetables, mung sprouts, etc).  Stir-fry the tofu until the white sections become brown, but don't allow them to burn.  At that point, add the garlic, and continue to stir-fry on high heat until the garlic begins to turn color.  If you fully brown the garlic, the flavor becomes acrid, so keep vigilant.&lt;br /&gt;&lt;br /&gt;Once the garlic shows a change, toss in at least 3/4 of a cup of white rice cooking wine, and lower the temperature to medium.  At that point, add the tomatoes, a few squirts of sesame oil and fish sauce.  For fish sauce, a little dab will do you.  For the uninitiated, Fish sauce is a foul smelling substance all on its own, but when added to dishes in small amounts, it can release an amazing fragrance that is a core element of many Asian dishes.&lt;br /&gt;&lt;br /&gt;After a few minutes, the tomatoes will have softened, releasing their seed pulp into the mix to create a rich, red broth.  Remove from heat as soon as the this has happened.  The tomatoes should still be firm when served. Dish up the white rice in bowls, then ladle the finished product over the rice, making sure that the broth soaks into the rice.&lt;br /&gt;&lt;br /&gt;Finally, cover with a liberal sprinkling of minced parsley to plate it.&lt;br /&gt;&lt;br /&gt;Enjoy!&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-1706002672531890522?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/1706002672531890522/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=1706002672531890522' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/1706002672531890522'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/1706002672531890522'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2007/05/culinary-heaven-vietnamese-tomato-and.html' title='Culinary Heaven:  Vietnamese Tomato and Tofu'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_7XDJakniA48/Rj2MEOTr-oI/AAAAAAAAAEQ/ZhR9ss0rq7w/s72-c/swedish_chef_02.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-9014380784250474845</id><published>2007-05-01T19:16:00.000-07:00</published><updated>2008-12-09T14:46:28.501-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>Grails:  Rails Gone Groovy</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_7XDJakniA48/Rjf2HuTr-nI/AAAAAAAAAEI/ufefQqRZRTk/s1600-h/grails-logo.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_7XDJakniA48/Rjf2HuTr-nI/AAAAAAAAAEI/ufefQqRZRTk/s320/grails-logo.jpg" alt="" id="BLOGGER_PHOTO_ID_5059783318924163698" border="0" /&gt;&lt;/a&gt;Given the rise of popularity of "agile" frameworks like Ruby on Rails, one question still persists as far as their utility in large, enterprise scale applications.  Initially for Ruby, the focus has been on quick prototyping, as well as roles where requirements aren't necessarily pushing high numbers of requests or transactions.   As Ruby on Rails has matured, there have been innovations enabling much higher scalability. More importantly, Ruby on Rails' success has inspired a number of other frameworks featuring similar methodologies and concepts.  Some of the most powerful among these are scaffolding, closures, and perhaps most importantly, dynamic methods via Meta Object Protocols.&lt;br /&gt;&lt;br /&gt;With the latter, the run-time interpreter is able to resolve&lt;span style="color: rgb(0, 0, 0);"&gt; and execute what are called "dynamic&lt;/span&gt; methods".   These methods, in most cases, actually have no explicit definition.  Rather, the compiler parses the name of the method being invoked, and deduces the appropriate business logic to execute using naming conventions.  When establishing the service layer to access data, these method calls resolve directly to &lt;span style="color: rgb(0, 0, 0);"&gt;SQL&lt;/span&gt; statements executed against a database.  Having business logic defined solely in the name of a dynamic method is a huge win in terms of effort reduction and decoupling of components.&lt;br /&gt;&lt;br /&gt;Given the power and popularity of these features, a JVM based scripting language called &lt;a href="http://groovy.codehaus.org/"&gt;Groovy&lt;/a&gt; was adapted to the Rails model, resulting in a framework called &lt;a href="http://grails.codehaus.org/"&gt;Grails&lt;/a&gt;.  Several aspects of Grails have really impressed me over Ruby on Rails.  First, Grails bases its framework on established components such as Spring for MVC, Hibernate for persistence, and&lt;br /&gt;Quartz for job scheduling. &lt;br /&gt;&lt;br /&gt;These are field tested, enterprise capable components with years of R&amp;amp;D behind their names.  Hibernate, with its support for clustering, should be enough to meet most scalability requirements.  However, the Terracotta framework is planned for integration with Grails, promising a data&lt;span style="color: rgb(0, 0, 0);"&gt;-&lt;/span&gt;grid solution that has demonstrated impressive transactional metrics.  If you haven't heard of Terracotta, please read more at:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://terracottatech.com/"&gt;http://terracottatech.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Finally, Grails is a JVM based language, and can leverage existing Java classes and technologies.  Groovy script compiles directly to Java byte code, which eliminates the run-time interpretation associated with most scripted languages.  In a word, it's fast.  And conversely, Grails components can be leveraged by Java code, opening up many possibilities.  Here's an excerpt from The Server Side:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;As one impressive example of its enterprise integration abilities, Grails let's you quickly and easily build a web application backed by your existing EJB3 entity beans. But, it doesn't stop there. Grails gives your entity beans a hearty shot of steroids, but does so completely dynamically, without altering your EJB source code in any way. Grails Object Relational Mapping (GORM) is built on Hibernate 3 (but will eventually offer support for the Java Persistence API) and uses Groovy's Meta Object Protocol (MOP) to add all sorts of handy dynamic methods to your otherwise-static entity beans. And those methods are not only accessible from Grails and Groovy; your Java code can invoke those methods as well! We suddenly have all the enterprise-level capabilities of JEE/EJB3 and the benefits of RAD web application development!&lt;/i&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;This looks like a technology to watch.  It's currently at 0.5 project maturity, but already several large production sites are using it, including PepsiCo, which went live with the 0.4 release.  They've provided a &lt;a href="http://docs.codehaus.org/display/GRAILS/PepsiCo+Grails+Sites+Post-Analysis"&gt;post-analysis&lt;/a&gt; that gives a brief synopsis on their experience.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Update:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I came across an article published on IBM's site about Groovy and MOP, titled &lt;a href="http://www.ibm.com/developerworks/java/library/j-pg09205/"&gt;&lt;span style="font-style: italic;"&gt;Practically Groovy: Of MOPs and mini-languages&lt;/span&gt;&lt;/a&gt;.  I found it of particular interest as it highlights the features of Groovy and Grails though a comprehensive tutorial, complete with coding examples.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-9014380784250474845?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/9014380784250474845/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=9014380784250474845' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/9014380784250474845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/9014380784250474845'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2007/05/grails-rails-gone-groovy.html' title='Grails:  Rails Gone Groovy'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_7XDJakniA48/Rjf2HuTr-nI/AAAAAAAAAEI/ufefQqRZRTk/s72-c/grails-logo.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-643922883419469731</id><published>2007-04-20T18:05:00.000-07:00</published><updated>2008-12-09T14:46:28.741-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>PaperNapkin: Open Source and IRC</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_7XDJakniA48/RimUeFyrsrI/AAAAAAAAAD4/MXoeduOhmgU/s1600-h/sorcerer.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_7XDJakniA48/RimUeFyrsrI/AAAAAAAAAD4/MXoeduOhmgU/s320/sorcerer.jpg" alt="" id="BLOGGER_PHOTO_ID_5055735301371835058" border="0" /&gt;&lt;/a&gt;&lt;a href="http://papernapkin.org/"&gt;PaperNapkin&lt;/a&gt; is a rather unique website allowing people to post and share text (presumably code samples) and have these links automatically forwarded to an IRC channel.  For the open source community, IRC is one of the preferred forms of communication.  It is more direct than email and multi-user, allowing large groups to get together to discuss issues.  But until PaperNapkin emerged, conversation participants had few means of quickly and easily distributing code to other developers for review.&lt;br /&gt;&lt;br /&gt;The best option, pasting code directly into the IRC client, was far from viable.  For one, the IRC client would often reformat code spanning several lines into an unreadable mess.  Another limitation is the maximum size of a single IRC post, which is often smaller than most code samples.&lt;br /&gt;&lt;br /&gt;The writers of PaperNapkin have devised a simple web application to solve this, and consequently a few other issues, when people need to arbitrarily share portions of code.  Written using the Wicket framework, it provides an interface that accepts code samples at:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://papernapkin.org/pastebin/home"&gt;http://papernapkin.org/pastebin/home&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The interface allows for the specification of native language, an image to submit, as well as an IRC channel name to receive notification once the submission is complete.  Finally, the user will be forwarded to the published URL to share the sample with other users.&lt;br /&gt;&lt;br /&gt;Simple, sweet, effective, and more is planned.  This may not seem like a big deal, but once you step into an arena where human language is no longer effective at communicating concepts, it is the simple things that matter.&lt;br /&gt;&lt;br /&gt;Already, I can think of a dozen extensions of this thing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-643922883419469731?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/643922883419469731/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=643922883419469731' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/643922883419469731'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/643922883419469731'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2007/04/papernapkin-open-source-and-icq.html' title='PaperNapkin: Open Source and IRC'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_7XDJakniA48/RimUeFyrsrI/AAAAAAAAAD4/MXoeduOhmgU/s72-c/sorcerer.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-3294871839481672638</id><published>2007-04-16T19:57:00.000-07:00</published><updated>2008-12-09T14:46:29.007-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='media'/><category scheme='http://www.blogger.com/atom/ns#' term='science'/><title type='text'>Discovery's Planet Earth</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_7XDJakniA48/RiRMPMUMrwI/AAAAAAAAADw/2D7wSkJgvzg/s1600-h/PLANET-EARTH.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_7XDJakniA48/RiRMPMUMrwI/AAAAAAAAADw/2D7wSkJgvzg/s320/PLANET-EARTH.jpg" alt="" id="BLOGGER_PHOTO_ID_5054248505704230658" border="0" /&gt;&lt;/a&gt;What can I add?  My hat is off.  This series is composed of the best wildlife cinematography I have ever seen, bar none.  Its scenes dazzle the mind and challenge the conceptions of what the living, feeling beings of nature are capable.  Such scenes inspire a respect for the world upon which we live, and consequently a drive to conservation.&lt;br /&gt;&lt;br /&gt;I remember the first realization, during the 1970's, of the critical thread from which the great whales of our oceans once, and still hang from.  This revolution was television based, and was largely due to explorers like Cousteau.  I suppose if I trace the roots of conservationism, its great grandparents were farsighted naturalists like Roosevelt, Thorough, and even the native tribes of our planet.&lt;br /&gt;&lt;br /&gt;But, of course, with 6 billion people on this planet, soon to expand to 9 billion, the concern has extended far beyond the preservation of tall stands of forests and whales to the very continued existence of humanity itself.  It's hard to imagine the footprint that we make as a species for the majority of us.  Sitting in our houses and apartments, surrounded by power lines, pavement and streetlights, we largely exist in a vanquished world, far away from the front lines of Man's expansion.  But, every day, the juggernaut of our influence expands.&lt;br /&gt;&lt;br /&gt;I personally have experienced the impact of global warming during my scuba-diving adventures in Thailand.  I submerged to find over half of the reef population dead or dying, due to the elevated temperatures of the Gulf of Thailand.  Imagine vast stretches of reef, covered with green algae, or bleached white after the colonies have vanished.  This was my first, personal contact with the impact of global warming.  In the tropical waters of the Gulf of Thailand, I saw its face in the slow death of one of Earth's most precious environments.&lt;br /&gt;&lt;br /&gt;I have been lucky to travel, fortunate to have had both the family background to support my exploration of the planet, as well as the desire to see the world from a perspective well outside the comforts of my own culture.  It is a globe filled with contradiction:  grace and violence, enlightenment and self-interest.  In few cultures, mankind has learned to live in harmony with nature.  In most developing nations, however, the smell of slash-burns fills the air with an unmistakable pungency.  Beyond all, it is filled with humanity.  In Asia, with populations in the several billions, this fact is omnipresent.  This mass of humanity exerts pressures that are almost incalculable, providing economic incentives for a web of resource decimation that extends on a planetary scale.&lt;br /&gt;&lt;br /&gt;This is, in fact, a war -- the most insidious of conflicts, perpetuated by the ignorant.  As one who would desire to preserve this planet for future generations, the only weapon we have is knowledge and education, predicated on the hope that humanity is capable of learning and adapting before a critical point has been crossed.  Already, our era has been called the greatest extermination of species ever recorded, challenging even the Cambrian and Triassic Extinctions.  Normally, life has rebounded from these events, although on a time-table of millions of years.  But with our current era, the deaths have been due to our influence over the environment, and barring our removal, this will not be a temporary change.&lt;br /&gt;&lt;br /&gt;So, if ignorance is at the root of our problem, then only knowledge will help us to a solution; knowledge that connects us with the people who are driven by financial incentive by our needs.  But most importantly, knowledge that connects us all with the miraculous beauty that is the wilderness of our planet.&lt;br /&gt;&lt;br /&gt;No other series I've seen achieves all of these goals with such striking clarity.  The cinematography, gathered over five years of work by film crews stationed around the world, is groundbreaking.  In addition to the common rules of composition, the directors have introduced time and scale as instruments of story telling, giving the viewer new insights into the vibrant world that not only exists around us, but is responsible for our very preservation.  As one watches the hours unfold, one can not help but understand that to allow these environments to fall would be the warrant for our own destruction.&lt;br /&gt;&lt;br /&gt;So, if you haven't been following the series on Discovery or the BBC in its High-Def glory, the next best option is to purchase the DVDs:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://pedvd.com/"&gt;http://pedvd.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And once you've taken the time to view the work in its entire, make an additional effort to do what you can to promote &lt;a href="http://en.wikipedia.org/wiki/Sustainable_Development"&gt;Sustainable Development&lt;/a&gt; with a donation of time or money.  Remember, such efforts start at the home.&lt;br /&gt;&lt;br /&gt;Be the change you want to see in the world.&lt;br /&gt;- M. Ghandi&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-3294871839481672638?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/3294871839481672638/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=3294871839481672638' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/3294871839481672638'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/3294871839481672638'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2007/04/discoverys-planet-earth.html' title='Discovery&apos;s Planet Earth'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_7XDJakniA48/RiRMPMUMrwI/AAAAAAAAADw/2D7wSkJgvzg/s72-c/PLANET-EARTH.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-864153290012207763</id><published>2007-04-14T18:46:00.000-07:00</published><updated>2008-12-09T14:46:29.345-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>Web Developments: Firebug and Wicket</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_7XDJakniA48/RiGbJMUMrvI/AAAAAAAAADo/BMxY8u_TxvY/s1600-h/wicket-logo.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_7XDJakniA48/RiGbJMUMrvI/AAAAAAAAADo/BMxY8u_TxvY/s320/wicket-logo.png" alt="" id="BLOGGER_PHOTO_ID_5053490839113477874" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;In my career, a good portion of my time is spent on developing web applications.  I suppose that's as telling of the predominance of the web as it is of my latent skills at web interface design. Over the last year, facing the same problems yet once again, I set out to explore some of the more recent frameworks to evolve, as well as the tools available for HTML and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;CSS&lt;/span&gt; design.  My search has been fruitful.&lt;br /&gt;&lt;br /&gt;The first recommendation I have is a plug-in tool for &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Firefox&lt;/span&gt; called &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/1843"&gt;Firebug&lt;/a&gt;.  Firebug has been built with an intuitive interface that features:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;    &lt;li&gt;A console displaying HTTP events (GET, POST, etc)&lt;/li&gt;&lt;br /&gt;    &lt;li&gt;A tree-based HTML structure browser&lt;/li&gt;&lt;br /&gt;    &lt;li&gt;A CSS browser and editor, allowing in-line editing of CSS&lt;/li&gt;&lt;br /&gt;    &lt;li&gt;A JavaScript debugger&lt;/li&gt;&lt;br /&gt;    &lt;li&gt;A hierarchical DOM browser&lt;/li&gt;&lt;br /&gt;    &lt;li&gt;A network monitor, profiling requests in ms&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Since I've been using the plug-in, I've found that the amount of frustration of developing complex user interfaces with &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;CSS&lt;/span&gt; has nearly disappeared. No longer do I need to pepper &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;CSS&lt;/span&gt; with background color properties just to figure out what is actually happening vs. what is desired.&lt;br /&gt;&lt;p/&gt;&lt;br /&gt;Next on my list:  Java Frameworks.  I'm keeping my eye on the latest RAD environments such as &lt;a href="http://www.rubyonrails.org/"&gt;Ruby on Rails&lt;/a&gt; and &lt;a href="http://grails.codehaus.org/"&gt;Grails&lt;/a&gt;, but for now, the language platform for robust enterprise applications remains Java.  To solve the difficult problems posed by large enterprises, the Java platform features J2&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;EE&lt;/span&gt;, an acronym that encompasses and integrates several key components, including multi-tier clustering, message queues, transaction management, web services, database connection pooling, and remote process invocation protocols.  I've heard many detractors of the J2&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;EE&lt;/span&gt; standard, but in most cases, the shops that have opted away from the standard have ended up reinventing the wheel.  Even in .Net, there is almost a 1:1 mapping of components and strategies.  After all, each platform is attempting to solve the same problems.&lt;br /&gt;&lt;br /&gt;One aspect that J2&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;EE&lt;/span&gt; leaves out of the standard is the default presentation framework, and that, unfortunately, is where the most time in development is usually spent -- especially with frameworks like &lt;a href="http://struts.apache.org/"&gt;Struts&lt;/a&gt;, &lt;a href="http://java.sun.com/javaee/javaserverfaces/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;JSF&lt;/span&gt;&lt;/a&gt;, or scripting languages like &lt;a href="http://velocity.apache.org/"&gt;Velocity&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;In their defense, Struts and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;JSF&lt;/span&gt; were an answer to an even more inadequate strategy, which was to build HTML pages using text output statements in a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;Servlet&lt;/span&gt;.  Struts and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;JSF&lt;/span&gt; introduced special tag libraries as well as a rudimentary MVC architecture to design web pages.  Tag libraries were often large, and the end result was page definitions &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;unparsable&lt;/span&gt; by popular web development tools.  To complicate matters, tag libraries also included elements to perform conditional execution or inclusion of content, inviting misuse.  In the worst case scenario, such as with Velocity, business logic can easily be written into page definitions making maintenance a nightmare.  And due to their age, both Struts and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;JSF&lt;/span&gt; were designed before the advent of Ajax.  Consequently, attempts to introduce the more complex features enabled by Ajax have been inelegant at best.&lt;br /&gt;&lt;br /&gt;Better, in my mind, to start fresh.&lt;br /&gt;&lt;br /&gt;And this is precisely what two of the latest new Java based &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;UI&lt;/span&gt; frameworks, Apache's &lt;a href="http://incubator.apache.org/wicket/"&gt;Wicket&lt;/a&gt; and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;Google's&lt;/span&gt; &lt;a href="http://code.google.com/webtoolkit/"&gt;Web Tool Kit&lt;/a&gt;, have done.  Each feature a radical departure from the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;JSP&lt;/span&gt; based development environments of Struts and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;JSF&lt;/span&gt;.  Instead of embedding logic and functionality in markup, Wicket and Google have taken web development into the realm of thick application, component based design.  In Wicket, layouts remain defined by X/HTML, utilizing a special attribute, "wicket:id" to define elements that are to be injected with component output. Google, on the other hand, has done away with markup completely, using a 100% programmatic approach to designing &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;UI&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;In choosing between the two, this aspect was one of my primary considerations.  At my current company, we have an excellent team of graphic artists and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;UX&lt;/span&gt; designers that produce HTML mock-ups to establish an application's general layout, as well as its look and feel.  With Wicket, these initial mock-ups can be leveraged in creating the final application, which can result in the savings of a considerable amount of work.&lt;br /&gt;&lt;br /&gt;Beyond this, these new frameworks offer a powerful change in the web application development paradigm.  Struts and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;JSF&lt;/span&gt; are based around what is commonly referred to as "document centric" design, where an application is constructed as a series of pages, each representing a specific state.  Wicket and GWT, on the other hand, free the designer and the developer to think more in terms of "thick application" design, where interfaces are constructed as groupings of panels which can be interchanged to reflect application state.&lt;br /&gt;&lt;br /&gt;With panels, the developer now has at their disposal a truly object oriented framework.  Once defined, components can be reused and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;subclassed&lt;/span&gt; to provide additional functionality in other areas of the application, or even as libraries for other applications.  Another advantage of these new Ajax enabled frameworks is that even events such as panel replacement can occur via an asynchronous call.  This leads to a highly efficient and responsive user interface.&lt;br /&gt;&lt;br /&gt;I've been working the past several days on putting together a basic prototype application with Wicket and an open source application server from Sun called "&lt;a href="https://glassfish.dev.java.net/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_25"&gt;Glassfish&lt;/span&gt;&lt;/a&gt;".  Once I have established the metrics on performance, as well as completed some of the more detailed designs, I'll write more on my experience with the stack.&lt;br /&gt;&lt;br /&gt;For now, I'll just say that I haven't had as much enjoyment writing a web application as I have working with Wicket.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-864153290012207763?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/864153290012207763/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=864153290012207763' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/864153290012207763'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/864153290012207763'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2007/04/web-developments-firebug-and-wicket.html' title='Web Developments: Firebug and Wicket'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_7XDJakniA48/RiGbJMUMrvI/AAAAAAAAADo/BMxY8u_TxvY/s72-c/wicket-logo.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-7653074267784750602</id><published>2007-04-04T18:34:00.000-07:00</published><updated>2008-12-09T14:46:29.578-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='poetry'/><title type='text'>Augurie of American Innocence</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_7XDJakniA48/RhRfS26Ql_I/AAAAAAAAADg/Gc1C-yeEkyY/s1600-h/200px-William_Blake_by_Thomas_Phillips.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_7XDJakniA48/RhRfS26Ql_I/AAAAAAAAADg/Gc1C-yeEkyY/s320/200px-William_Blake_by_Thomas_Phillips.jpg" alt="" id="BLOGGER_PHOTO_ID_5049765859771324402" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;As Americans, we are a paradox that is perhaps representative of the nature of humanity.  On one hand, we are innovative and ingenious.  Our creations have shaped the planet, and our concepts of liberty and freedom have served as a beacon of hope for humanity; a model upon which many of the world's nations have been based.  Yet our actions are often guided by emotion and instinct at best, and greed and self-interest at worst.  And as the the most powerful nation in the world, this dichotomy often has lead to tragedy.&lt;br /&gt;&lt;br /&gt;Never before, at least in my lifetime, have I seen the issues with such contrast.  In this age, we must cast aside fear and cynicism, and re-embrace the hope and vision upon which our great nation was founded.  Some may say this is naiveté, that optimism and grace only render one defenseless against the aggressions of a hostile world.&lt;br /&gt;&lt;br /&gt;But if we are driven to alienate the world in the service of our defense, if we are to sacrifice the rights and ideals that have served as the pillars of our democracy in reaction to the violence of sick minds, then we will lose everything that we have become.&lt;br /&gt;&lt;br /&gt;The real enemy to fear is not the random act of destruction, it is within.&lt;br /&gt;&lt;br /&gt;How do we move beyond the decades of fear and mistrust caused by war, greed, and violence?  That question is one with which I believe our people are just coming to grips.  The answer, ultimately, will only come when we learn to view the world not as an object of control, but of co-existence.  We must regain our idealism, tempered by the wisdom and respect for our earth and our brothers with whom we inhabit.&lt;br /&gt;&lt;br /&gt;One poet, William Blake, long ago captured in prose the very essence of what I communicate.  We are all connected, and every action we take may have consequences beyond our ability to predict...&lt;br /&gt;&lt;ul&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;To see a world in a grain of sand&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;And a heaven in a wild flower,&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Hold infinity in the palm of your hand&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;And eternity in an hour.&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;A robin redbreast in a cage&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Puts all heaven in a rage.&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;A dove-house filled with doves and pigeons&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Shudders hell through all its regions.&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;A dog starved at his master's gate&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Predicts the ruin of the state.&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;A horse misused upon the road&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Calls to heaven for human blood.&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Each outcry of the hunted hare&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;A fibre from the brain does tear.&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;A skylark wounded in the wing,&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;A cherubim does cease to sing.&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;The game-cock clipped and armed for fight&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Does the rising sun affright.&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Every wolf's and lion's howl&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Raises from hell a human soul.&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;The wild deer wandering here and there&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Keeps the human soul from care.&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;The lamb misused breeds public strife,&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;And yet forgives the butcher's knife.&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;The bat that flits at close of eve&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Has left the brain that won't believe.&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;The owl that calls upon the night&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Speaks the unbeliever's fright.&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;He who shall hurt the little wren&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Shall never be beloved by men.&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;He who the ox to wrath has moved&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Shall never be by woman loved.&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;The wanton boy that kills the fly&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Shall feel the spider's enmity.&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;He who torments the chafer's sprite&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Weaves a bower in endless night.&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;The caterpillar on the leaf&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Repeats to thee thy mother's grief.&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Kill not the moth nor butterfly,&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;For the Last Judgment draweth nigh.&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;He who shall train the horse to war&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Shall never pass the polar bar.&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;The beggar's dog and widow's cat,&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Feed them, and thou wilt grow fat.&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;The gnat that sings his summer's song&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Poison gets from Slander's tongue.&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;The poison of the snake and newt&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Is the sweat of Envy's foot.&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;The poison of the honey-bee&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Is the artist's jealousy.&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;The prince's robes and beggar's rags&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Are toadstools on the miser's bags.&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;A truth that's told with bad intent&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Beats all the lies you can invent.&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;It is right it should be so:&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Man was made for joy and woe;&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;And when this we rightly know&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Through the world we safely go.&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Joy and woe are woven fine,&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;A clothing for the soul divine.&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Under every grief and pine&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Runs a joy with silken twine.&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;The babe is more than swaddling bands,&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Throughout all these human lands;&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Tools were made and born were hands,&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Every farmer understands.&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Every tear from every eye&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Becomes a babe in eternity;&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;This is caught by females bright&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;And returned to its own delight.&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;The bleat, the bark, bellow, and roar&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Are waves that beat on heaven's shore.&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;The babe that weeps the rod beneath&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Writes Revenge! in realms of death.&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;The beggar's rags fluttering in air&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Does to rags the heavens tear.&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;The soldier armed with sword and gun&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Palsied strikes the summer's sun.&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;The poor man's farthing is worth more&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Than all the gold on Afric's shore.&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;One mite wrung from the labourer's hands&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Shall buy and sell the miser's lands,&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Or if protected from on high&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Does that whole nation sell and buy.&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;He who mocks the infant's faith&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Shall be mocked in age and death.&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;He who shall teach the child to doubt&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;The rotting grave shall ne'er get out.&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;He who respects the infant's faith&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Triumphs over hell and death.&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;The child's toys and the old man's reasons&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Are the fruits of the two seasons.&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;The questioner who sits so sly&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Shall never know how to reply.&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;He who replies to words of doubt&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Doth put the light of knowledge out.&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;The strongest poison ever known&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Came from Caesar's laurel crown.&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Nought can deform the human race&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Like to the armour's iron brace.&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;When gold and gems adorn the plough&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;To peaceful arts shall Envy bow.&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;A riddle or the cricket's cry&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Is to doubt a fit reply.&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;The emmet's inch and eagle's mile&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Make lame philosophy to smile.&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;He who doubts from what he sees&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Will ne'er believe, do what you please.&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;If the sun and moon should doubt,&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;They'd immediately go out.&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;To be in a passion you good may do,&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;But no good if a passion is in you.&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;The whore and gambler, by the state&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Licensed, build that nation's fate.&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;The harlot's cry from street to street&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Shall weave old England's winding sheet.&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;The winner's shout, the loser's curse,&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Dance before dead England's hearse.&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Every night and every morn&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Some to misery are born.&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Every morn and every night&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Some are born to sweet delight.&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Some are born to sweet delight,&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Some are born to endless night.&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;We are led to believe a lie&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;When we see not through the eye&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;Which was born in a night to perish in a night,&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;When the soul slept in beams of light.&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;God appears, and God is light&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;To those poor souls who dwell in night,&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;But does a human form display&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;To those who dwell in realms of day.&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:130%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;"Auguries of Innocence", &lt;/span&gt;&lt;i&gt;&lt;a href="http://en.wikisource.org/wiki/Author:William_Blake" title="Author:William Blake"&gt;William Blake&lt;/a&gt;&lt;/i&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-7653074267784750602?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/7653074267784750602/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=7653074267784750602' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/7653074267784750602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/7653074267784750602'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2007/04/auguries-of-american-innocence.html' title='Augurie of American Innocence'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_7XDJakniA48/RhRfS26Ql_I/AAAAAAAAADg/Gc1C-yeEkyY/s72-c/200px-William_Blake_by_Thomas_Phillips.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-108355468771329141</id><published>2007-03-23T20:48:00.000-07:00</published><updated>2008-12-09T14:46:29.797-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>Linux Desktop Eyecandy:  Beryl</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_7XDJakniA48/RgSgPbyHXvI/AAAAAAAAADU/2YoJp5nVct4/s1600-h/beryl_header.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_7XDJakniA48/RgSgPbyHXvI/AAAAAAAAADU/2YoJp5nVct4/s320/beryl_header.png" alt="" id="BLOGGER_PHOTO_ID_5045333669578235634" border="0" /&gt;&lt;/a&gt;I've been using &lt;a href="http://www.ubuntu.com/"&gt;Ubuntu&lt;/a&gt; for the past two years, and have come to really appreciate many of the benefits of open source and efficiency of Linux.  However, not until now have I spent much time in tweaking the user interface.  With Vista and OSX now supporting advanced features and what most call "eye candy", I decided to see what's available for Linux.&lt;br /&gt;&lt;br /&gt;With Linux, the operating system, desktop, and window manager are separate entities, where the desktop and window manager are processes that can be started and stopped just like any other application.  The benefit of this is that there are various options from which to choose.  The default Desktop for Ubuntu is &lt;a href="http://www.gnome.org/"&gt;Gnome&lt;/a&gt;, which utilizes an application called &lt;a href="http://www.gnome.org/start/2.2/notes/rnwm.html"&gt;Metacity&lt;/a&gt; to provide window management.  Gnome is simple, streamlined, and lightweight, which has suited me well. The other main choices, &lt;a href="http://www.kde.org/"&gt;KDE&lt;/a&gt; and &lt;a href="http://www.enlightenment.org/Enlightenment/DR17/"&gt;Enlightenment&lt;/a&gt;, just didn't appeal to me.  KDE has far too much overhead, while Enlightenment has sacrificed usability for flash, and doesn't fit the way I work.&lt;br /&gt;&lt;br /&gt;Fortunately, there's a software project called &lt;a href="http://www.beryl-project.org/"&gt;Beryl&lt;/a&gt; that sits on top of Gnome and Metacity.  The result is drop shadows, opacity, 3D effects during transition events, and a wide new variety of themes to customize the graphic user interface.  Beryl is still pre 1.0, meaning that it's still in a phase where developers are working through bugs.  But, from a few hours of use, the few I found were not a barrier to daily work.&lt;br /&gt;&lt;br /&gt;There were a few hoops to work through.  First, I needed to get the latest drivers from nVidia.  ATI users will have the same requirement.  There were some serious hurdles with restricted packag management in getting the new drivers in.  I &lt;span style="font-weight: bold;"&gt;strongly&lt;/span&gt; suggest using &lt;a href="http://albertomilone.com/nvidia_scripts1.html"&gt;Envy&lt;/a&gt;, a utility written in Python that automates the installation of the drivers, and sets your system up without much pain.  The newer drivers are not compatible with some older graphic cards, so make sure you check compatibility before proceeding.&lt;br /&gt;&lt;br /&gt;If you're interested in pushing the limits of your machine, and enjoying some nice new touches in your work, give Beryl a try.&lt;br /&gt;&lt;br /&gt;To see what Beryl can do for you, check out the following youtube &lt;a href="http://youtube.com/watch?v=ZD7QraljRfM"&gt;video&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-108355468771329141?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/108355468771329141/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=108355468771329141' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/108355468771329141'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/108355468771329141'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2007/03/linux-desktop-eyecandy-beryl.html' title='Linux Desktop Eyecandy:  Beryl'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_7XDJakniA48/RgSgPbyHXvI/AAAAAAAAADU/2YoJp5nVct4/s72-c/beryl_header.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-6028885654124016115</id><published>2007-03-13T01:20:00.000-07:00</published><updated>2008-12-09T14:46:30.084-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='media'/><title type='text'>The Riches</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_7XDJakniA48/RfZe3s0r9yI/AAAAAAAAACw/MqR6dRayae8/s1600-h/theriches.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_7XDJakniA48/RfZe3s0r9yI/AAAAAAAAACw/MqR6dRayae8/s320/theriches.jpg" alt="" id="BLOGGER_PHOTO_ID_5041321143905810210" border="0" /&gt;&lt;/a&gt;I've been a fan of Eddie Izzard for several years now, coming late into the game for what has become a remarkable if not low-key career.  Eddie first gained critical acclaim for his stand-up, several performances which have been recorded and released commercially.  Strutting around in drag, illuminating the ironies of life, all the while embarked on a freedom-of-association binge, he makes for one hell of a show.&lt;br /&gt;&lt;br /&gt;Eddie's been in several major Hollywood productions, mostly bit parts as melodrama villains or cameo appearances.&lt;br /&gt;&lt;br /&gt;This may all change soon with a series just released on the FX channel called "&lt;a href="http://www.fxnetworks.com/shows/originals/theriches/"&gt;The Riches&lt;/a&gt;", the pilot of which just premiered last night.  Izzard and Driver are an intoxicating mix, lending depth and nuance to a screenplay so artfully wrought that I was compelled from start to finish.&lt;br /&gt;&lt;br /&gt;Freshman writer &lt;a href="http://imdb.com/name/nm0513486/"&gt;Dmitry Lipkin&lt;/a&gt;, to put it bluntly, is brilliant.  With ten seconds of footage, he communicates what most could not with ten minutes.  His writing is daring and complex, crafting characters that are both helplessly flawed but driven by conviction and love.  To call them thieves is simplistic.  Rather, Lipkin has captured the lives of a family of modern-day  North American gypsies.  This is raw, unmitigated humanity in a tale that spans from Southern trailer parks to elite country clubs.&lt;br /&gt;&lt;br /&gt;Fox has only scheduled six episodes so far, so I can only hope that Lipkin continues to deliver, that Izzard, Driver, and cast maintain their chemistry, and that viewers catch on to one of the best dramatic concepts to come out in a decade.&lt;br /&gt;&lt;br /&gt;"The Riches" appears on FX at 10:00 PM on Monday nights.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-6028885654124016115?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/6028885654124016115/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=6028885654124016115' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/6028885654124016115'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/6028885654124016115'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2007/03/riches.html' title='The Riches'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_7XDJakniA48/RfZe3s0r9yI/AAAAAAAAACw/MqR6dRayae8/s72-c/theriches.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-8259702569676998899</id><published>2007-03-06T19:17:00.000-08:00</published><updated>2008-12-09T14:46:30.248-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='poetry'/><title type='text'>The Wisdom of Rumi</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_7XDJakniA48/Re4v1k5nrPI/AAAAAAAAACo/DFPRVbinLGQ/s1600-h/rumi.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 194px; height: 181px;" src="http://2.bp.blogspot.com/_7XDJakniA48/Re4v1k5nrPI/AAAAAAAAACo/DFPRVbinLGQ/s320/rumi.jpg" alt="" id="BLOGGER_PHOTO_ID_5039017630559087858" border="0" /&gt;&lt;/a&gt;Over the years, I keep turning to one voice that has survived over centuries, a Persian poet, philosopher, and mystic named &lt;a href="http://en.wikipedia.org/wiki/Jalal_ad-Din_Muhammad_Rumi"&gt;Rumi&lt;/a&gt;.  In his prose, he has expressed love and loss, passion and the exaltation of God with a talent matched by few.  Rumi captures the principles of both Zoroastrianism, who's roots still run deep within Persian culture, as well as the mystical elements of Islam.&lt;br /&gt;&lt;br /&gt;To experience Rumi's writing is to experience the desires and passions of an ancient Persian culture, one that persists even today, despite the rise of a radical, fundamentalist Islam.  These hopes and fears, these are not just Persian, nor are they Islamic.  They are shared by us all.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;p style="font-weight: bold;"&gt;&lt;span style="font-size:85%;"&gt;THE AWAKENING&lt;/span&gt;&lt;/p&gt;               &lt;p&gt;&lt;span style="font-size:85%;"&gt;In the early dawn of happiness&lt;br /&gt;            you gave me three kisses&lt;br /&gt;            so that I would wake up&lt;br /&gt;            to this moment of love&lt;/span&gt;&lt;/p&gt;               &lt;p&gt;&lt;span style="font-size:85%;"&gt;I tried to remember in my heart&lt;br /&gt;            what I’d dreamt about&lt;br /&gt;            during the night&lt;br /&gt;            before I became aware&lt;br /&gt;            of this moving of life&lt;/span&gt;&lt;/p&gt;               &lt;p&gt;&lt;span style="font-size:85%;"&gt;I found my dreams&lt;br /&gt;            but the moon took me away&lt;br /&gt;            It lifted me up to the firmament&lt;br /&gt;            and suspended me there&lt;br /&gt;            I saw how my heart had fallen&lt;br /&gt;            on your path&lt;br /&gt;            singing a song&lt;/span&gt;&lt;/p&gt;               &lt;p&gt;&lt;span style="font-size:85%;"&gt;Between my love and my heart&lt;br /&gt;            things were happening which&lt;br /&gt;            slowly slowly&lt;br /&gt;            made me recall everything &lt;/span&gt;&lt;/p&gt;               &lt;p&gt;&lt;span style="font-size:85%;"&gt;You amuse me with your touch&lt;br /&gt;            although I can’t see your hands.&lt;br /&gt;            You have kissed me with tenderness&lt;br /&gt;            although I haven’t seen your lips&lt;br /&gt;            You are hidden from me.&lt;/span&gt;&lt;/p&gt;               &lt;p&gt;&lt;span style="font-size:85%;"&gt;But it is you who keeps me alive&lt;/span&gt;&lt;/p&gt;               &lt;p&gt;&lt;span style="font-size:85%;"&gt;Perhaps the time will come&lt;br /&gt;            when you will tire of kisses&lt;br /&gt;            I shall be happy&lt;br /&gt;            even for insults from you&lt;br /&gt;            I only ask that you&lt;br /&gt;            keep some attention on me.&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-8259702569676998899?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/8259702569676998899/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=8259702569676998899' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/8259702569676998899'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/8259702569676998899'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2007/03/wisdom-of-rumi.html' title='The Wisdom of Rumi'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_7XDJakniA48/Re4v1k5nrPI/AAAAAAAAACo/DFPRVbinLGQ/s72-c/rumi.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-8369647411800009618</id><published>2006-12-28T20:02:00.000-08:00</published><updated>2008-12-09T14:46:30.418-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='science'/><title type='text'>The Known Unknowns</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_7XDJakniA48/RZSegjpENoI/AAAAAAAAABo/l9o-R6z472Q/s1600-h/question-mark.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_7XDJakniA48/RZSegjpENoI/AAAAAAAAABo/l9o-R6z472Q/s320/question-mark.jpg" alt="" id="BLOGGER_PHOTO_ID_5013806567330690690" border="0" /&gt;&lt;/a&gt;&lt;strong style="font-style: italic;"&gt;&lt;/strong&gt;&lt;strong style="font-style: italic;"&gt;&lt;/strong&gt;&lt;strong style="font-style: italic;"&gt;&lt;/strong&gt;&lt;span style="font-style: italic;"&gt;As we know, &lt;/span&gt;&lt;span style="font-style: italic;"&gt;there are known &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;knowns&lt;/span&gt;. &lt;/span&gt;  &lt;span style="font-style: italic;"&gt;&lt;br /&gt;There are things we know we know.&lt;br /&gt;&lt;/span&gt;  &lt;span style="font-style: italic;"&gt;We also know &lt;/span&gt;&lt;span style="font-style: italic;"&gt;there are known unknowns.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;That is to say,&lt;/span&gt; &lt;span style="font-style: italic;"&gt;we know there are some things &lt;/span&gt;&lt;span style="font-style: italic;"&gt;we do not know.&lt;br /&gt;&lt;/span&gt;  &lt;span style="font-style: italic;"&gt;But there are also unknown unknowns, &lt;/span&gt;  &lt;span style="font-style: italic;"&gt;&lt;br /&gt;The ones we don't know &lt;/span&gt;&lt;span style="font-style: italic;"&gt;we don't know.&lt;/span&gt;&lt;br /&gt;&lt;div  style="text-align: left;font-family:verdana;"&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-style: italic;"&gt; &lt;/span&gt; &lt;span style="font-style: italic;"&gt; &lt;/span&gt;&lt;span style="font-size:78%;"&gt;D. &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Rumsfeld&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Though &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Rumsfeld's&lt;/span&gt; prose was only an attempt to proselytize the actions of his administration, the former Secretary of Defence likely coined a phrase that will far outlast any other legacy of his service.  But like even the most laughable &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;Yogi-ism&lt;/span&gt;, the words have appeal beyond their humor.  They resonate because they are true.&lt;br /&gt;&lt;br /&gt;We are a curious race by nature.  More than ever, we have reached out into our Universe, attempting to understand its mysteries.  We have striven to add to our list of &lt;span style="font-style: italic;"&gt;known &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;knowns&lt;/span&gt;&lt;/span&gt;, doing so by eliminating our &lt;span style="font-style: italic;"&gt;known unknowns&lt;/span&gt;.  And in the process, we can only hope to shed light on our &lt;span style="font-style: italic;"&gt;unknown unknowns&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;In a relatively short time, our list of &lt;span style="font-style: italic;"&gt;known &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;knowns&lt;/span&gt;&lt;/span&gt; has grown dramatically.  We have cracked the atom, gone to the moon, and have stood awestruck in a world coalesced from energy at a slow vibration.  Yet, we are still in our infancy, many generations away from becoming even a true &lt;a href="http://en.wikipedia.org/wiki/Kardashev_scale"&gt;Type I civilization&lt;/a&gt;. So, while it is tempting to judge us by how far we've come, an equally telling measure can be made from where we have yet to go.&lt;br /&gt;&lt;br /&gt;Therefore, in the spirit of our &lt;span style="font-style: italic;"&gt;known unknowns&lt;/span&gt;, New Scientist has provided us with an interesting take on some of the issues that have beguiled our scientists and researchers to date:  &lt;a href="http://space.newscientist.com/article/mg18524911.600"&gt;13 Things That Do Not Make Sense&lt;/a&gt;.  Though this list was compiled nearly two years ago, all have remained unsolved.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-8369647411800009618?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/8369647411800009618/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=8369647411800009618' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/8369647411800009618'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/8369647411800009618'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2006/12/known-unknowns.html' title='The Known Unknowns'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_7XDJakniA48/RZSegjpENoI/AAAAAAAAABo/l9o-R6z472Q/s72-c/question-mark.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-6105254985123115882</id><published>2006-12-21T12:03:00.000-08:00</published><updated>2008-12-09T14:46:30.709-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='media'/><title type='text'>Zudeo: Bittorrent Legitimised</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_7XDJakniA48/RYr40TpENmI/AAAAAAAAABU/_AOFX2JFb3o/s1600-h/zudeo.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_7XDJakniA48/RYr40TpENmI/AAAAAAAAABU/_AOFX2JFb3o/s320/zudeo.jpg" alt="" id="BLOGGER_PHOTO_ID_5011091112912500322" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The title of this post is a bit facetious, in that I've never thought a technology like &lt;a href="http://en.wikipedia.org/wiki/BitTorrent"&gt;&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Bittorrent&lt;/span&gt;&lt;/a&gt; deserved &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;demonization&lt;/span&gt;.  But over the past few years, the protocol and its creator, &lt;a href="http://en.wikipedia.org/wiki/Bram_Cohen"&gt;Bram Cohen&lt;/a&gt;, have suffered legal attacks from several fronts.  The most &lt;a href="http://lsolum.typepad.com/copyfutures/2004/11/mpaa_enters_p2p.html"&gt;direct threat&lt;/a&gt; has come from the &lt;a href="http://en.wikipedia.org/wiki/Motion_Picture_Association_of_America"&gt;&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;MPAA&lt;/span&gt;&lt;/a&gt;.  Ironically, the movie industry feared &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;Bittorrent&lt;/span&gt; for the very same reason that they are now moving to embrace the technology:  the swarm.&lt;br /&gt;&lt;br /&gt;If you've never heard of &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;Bittorrent&lt;/span&gt;, it's a remarkable P2P protocol for &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_5"&gt;transferring&lt;/span&gt; data.  There are several clients that support it, the most recommended being &lt;a href="http://azureus.sourceforge.net/"&gt;&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;Azureus&lt;/span&gt;&lt;/a&gt;.  The basic idea behind the protocol is the swarm, a group of clients all sharing different parts of the same file at the same time.  When a file is shared in &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;Bittorrent&lt;/span&gt;, it is broken down into tiny parts, which are requested individually.  Clients requesting data in turn become a server for that data.  In this way, the original contributor, or seed, is relieved of the responsibility of transmitting a complete copy of a file for each individual request.  In fact, once the file is out in a swarm, it is accessible even if the original seed goes off-line.&lt;br /&gt;&lt;br /&gt;This has two main benefits.  First, serving large files to great numbers of people no longer has an intrinsic economic cost to it.  Each client taking part in the swarm assumes some of the responsibility, serving up small parts and utilizing their bandwidth to do so.  In most cases, these clients are home cable and &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;DSL&lt;/span&gt; users with fixed cost, throttled bandwidth connections.  With a fixed monthly charge, these users don't get hit with the expense of serving up a few MB while taking part in a swarm.  And while the average broadband user's &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;uplink&lt;/span&gt; is throttled to ~256&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;Kbps&lt;/span&gt;, that's sufficient for &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;Bittorrent's&lt;/span&gt; other main benefit:  speed.&lt;br /&gt;&lt;br /&gt;With a swarm of hundreds of clients, each pumping out portions of a file, the aggregated bandwidth is often as much as your connection can handle.  Average speeds of 1&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;MBps&lt;/span&gt; have regularly been observed on my connection.  This makes downloading large files, like &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;multi&lt;/span&gt;-gigabyte DVD movies, possible in little over an hour -- often less time than it takes to hop into a car, and deal with a crowded rental house.  Much less time than it takes to wait for a &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;netflix&lt;/span&gt; round trip.&lt;br /&gt;&lt;br /&gt;And this is what had the &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;MPAA&lt;/span&gt; gearing up lawyers and lobbyists in what could only have been a very expensive and very foolish errand.  The argument was that &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;Bittorrent&lt;/span&gt; was mainly being used to illegally share protected content, and therefore should be illegal itself.  And initially, they had a point, though their conclusions were wrong.  You can hardly judge a technology by it's frontier usage.&lt;br /&gt;&lt;br /&gt;Gradually, more and more legitimate applications of the protocol have been popping up, from &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_17"&gt;distribution&lt;/span&gt; efforts for operating systems, to the most recent incarnation of a &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;Youtube&lt;/span&gt; clone:  &lt;a href="http://www.zudeo.com/az-web/app"&gt;&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;Zudeo&lt;/span&gt;&lt;/a&gt;.  While sites like Google Video and &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;Youtube&lt;/span&gt; have concentrated on keeping bandwidth costs, and therefore quality, to a minimum, &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;Zudeo&lt;/span&gt; features high-def, quality content with the same premise.&lt;br /&gt;&lt;br /&gt;I doubt that &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;Zudeo&lt;/span&gt; will ever replace &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;Youtube&lt;/span&gt; in terms of its ubiquity.  For one, the steps required to view content are not as simple as click-and-play.  There's a download required, a short wait, and the content exists on your local file system.  But, as more and more homes adopt both hi-definition televisions as well as an &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_24"&gt;Internet&lt;/span&gt; device along side their tuners, sites like &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_25"&gt;Zudeo&lt;/span&gt; will become an important platform for &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_26"&gt;indy&lt;/span&gt; movie-makers, artists, and even commercial interests.&lt;br /&gt;&lt;br /&gt;With sites like &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_27"&gt;Zudeo&lt;/span&gt;, perhaps &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_28"&gt;Bittorrent&lt;/span&gt; may finally be &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_29"&gt;coming&lt;/span&gt; of age.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-6105254985123115882?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/6105254985123115882/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=6105254985123115882' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/6105254985123115882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/6105254985123115882'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2006/12/zudeo-bittorrent-legitimised.html' title='Zudeo: Bittorrent Legitimised'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_7XDJakniA48/RYr40TpENmI/AAAAAAAAABU/_AOFX2JFb3o/s72-c/zudeo.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-666704011633651199</id><published>2006-12-19T14:26:00.000-08:00</published><updated>2008-12-09T14:46:31.017-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><title type='text'>Gadget Lust: PPC 6700</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_7XDJakniA48/RYh1bTpENlI/AAAAAAAAABI/telZY78mliY/s1600-h/ppc6700.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 156px; height: 166px;" src="http://4.bp.blogspot.com/_7XDJakniA48/RYh1bTpENlI/AAAAAAAAABI/telZY78mliY/s320/ppc6700.jpg" alt="" id="BLOGGER_PHOTO_ID_5010383697439110738" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I've been a long time Treo user.  I liked the Palm OS for its simplicity and pleasing user interface.  And I liked the Treo in that in combined several useful features into a small package.  But it was the jack of all trades, and the master of none.&lt;br /&gt;&lt;br /&gt;The OS was single-threaded, meaning that if an application malfunctioned the whole unit would lock up and require a reboot.  The camera had VGA resolution, with poor quality. The phone was functional, though the reception was often at one bar where I live.  Finally, the housing was somewhat weak.  Even moderate bending, like that caused by sticking it in your back pocket, finally brought it to a miserable end. Altogether, it was a step in the right direction, but only a small one.&lt;br /&gt;&lt;br /&gt;When my phone finally was ready for replacement, I decided to shop around to see what the market had to offer.  I finally decided on the Audiovox PPC 6700, a model supported by my current contract with Sprint.&lt;br /&gt;&lt;br /&gt;There are so many things about this phone that I love that it's hard to know where to start.  Basic features include:&lt;br /&gt;&lt;br /&gt; -  1.3 MPixel camera, supporting video&lt;br /&gt; -  Great reception in every area that I've been so far&lt;br /&gt; -  MP3 and Windows Media support&lt;br /&gt; -  Good sound quality, though the speakerphone is a little quiet&lt;br /&gt; -  Small size and and weight for features (about the same size and weight as a Treo)&lt;br /&gt; -  Touch Screen with a 240x320 resolution and 16 bit color support&lt;br /&gt; -  Sturdy housing&lt;br /&gt;&lt;br /&gt;At the heart of this device is Windows Mobile 5, the current evolution of Windows CE.  With WM5, the PPC 6700 is transformed from a nice convergence device into a 6 ounce Windows workstation.  With WM5, the user is greeted with the familiar Windows look and feel, including a start menu, a common application GUI, and a multi-threaded OS underneath the hood.  Bundled into the release are slimmed down versions of MS Office applications, including PowerPoint, Excel, Outlook, and Word.  There's also a Terminal Services Client, for remote access of windows workstations and servers.&lt;br /&gt;&lt;br /&gt;For corporate email and scheduling, our company supports ActiveSync.  With ActiveSync, email and meeting requests are pushed to the client, alerting me to new messages and events.  Upcoming scheduled events such as personal appointments or company meetings are indicated on the WM5 "Today" screen.  The integration is impressive and very useful.  All of my personal contacts and information is backed up to our Exchange server and available in my personal address book on the system.&lt;br /&gt;&lt;br /&gt;The WM5 team took great care in giving the user a variety of options for entering text into the PPC 6700.  There's five different software supported modes, ranging from a full transcription / handwriting recognizer to a graphic keyboard.  And for situations where more than a few sentences are needed, the PPC 6700 was designed with a full QWERTY fold-out keyboard.   Folding out the keyboard requires that the unit be held in  "landscape" mode, and the display accommodates this by rotating it's orientation 90 degrees.  It's a nice touch, and provides a wider display for authoring or browsing content.&lt;br /&gt;&lt;br /&gt;Media is handled through the mobile edition of the Windows Media Player, which supports most of the audio and video formats of it's desktop cousin.  Though you'll never have as much memory as the top of the line iPod, the PPC 6700 can accept 2 GB memory cards.  For most users, this is more than enough for a personal collection.  Video is crisp and fluid.  Audio has good fidelity when using the stereo headphones designed for the unit in most cases.  Unfortunately the media player lacks support for graphic equalization, so poorly encoded media can't be doctored up.&lt;br /&gt;&lt;br /&gt;Connectivity is well supported on the unit, including EVDO for wireless data service, as well as built in WiFi (802.11 g).  Though WiFi is a tremendous drain on batteries, the four hour lifespan while connected still makes this a very useful feature.  My next step is to install the Skype client and direct most of my daytime calls through the VOIP carrier to eliminate burning cell minutes.  If this turns out to be an acceptable scenario, the savings from reducing our plan's minutes could pay for the phone in a matter of months.&lt;br /&gt;&lt;br /&gt;Web browsing is markedly improved from my Treo experience.  The unit comes bundled with IE4.0.   Though the browser version is not cutting edge, it's enough for most uses with it's support for cookies, JavaScript, and CSS.  There are a few exceptions (my bank's site freezes the browser), and therefore I'm looking into Opera as an alternative.&lt;br /&gt;&lt;br /&gt;Altogether, I'm still impressed with this phone after several weeks.  At over $700.00 retail, it's outside of the budget of most.  However, for those that are not currently with Sprint, the carrier is offering an incentive plan for signing up that reduces the price to around $200.00.  There's also the option of checking out eBay to purchase a unit at auction.  If you put a little time into it, as I did, you can walk away with one and still stay within your budget.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-666704011633651199?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/666704011633651199/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=666704011633651199' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/666704011633651199'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/666704011633651199'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2006/12/gadget-lust-ppc-6700.html' title='Gadget Lust: PPC 6700'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_7XDJakniA48/RYh1bTpENlI/AAAAAAAAABI/telZY78mliY/s72-c/ppc6700.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-6291172935747827688</id><published>2006-12-15T17:51:00.000-08:00</published><updated>2008-12-09T14:46:31.171-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='history'/><title type='text'>20th Century Battlefields</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_7XDJakniA48/RYTVdzpENkI/AAAAAAAAAA4/Ijnz9COsb4c/s1600-h/20thcenturybattlefields.gif"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_7XDJakniA48/RYTVdzpENkI/AAAAAAAAAA4/Ijnz9COsb4c/s320/20thcenturybattlefields.gif" alt="" id="BLOGGER_PHOTO_ID_5009363393598207554" border="0" /&gt;&lt;/a&gt;The series, &lt;a href="http://military.discovery.com/convergence/20cbattles/20cbattles.html"&gt;20&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;th&lt;/span&gt; Century Battlefields&lt;/a&gt;, is among the best historical war documentaries ever produced and one of the major reasons I tune in to the Military Channel on Monday nights.  The claim is a difficult one to justify, given the competition.  Few topics occupy the mind of man as war, and its events have been chronicled by the some of the greatest story tellers in history.&lt;br /&gt;&lt;br /&gt;In most cases, war documentaries focus on the concepts that are most effectively conveyed through exposition.  In large part, they communicate the human element of warfare: the actors and the &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;socio&lt;/span&gt;-political landscapes before and after war.  When battles are mentioned, they are often covered in broad generalities and rarely explored in any detail.&lt;br /&gt;&lt;br /&gt;Planning, troop strength, morale, tactics and strategy all are factors that combine together to decide an outcome.  Capturing these details and effectively communicating them is often beyond the scope, let alone the capability of most documentaries, but this is where 20&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;th&lt;/span&gt; Century Battlefields excels.&lt;br /&gt;&lt;br /&gt;In the series, the father-son team of &lt;a href="http://en.wikipedia.org/wiki/Peter_Snow"&gt;Peter&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Dan_Snow"&gt;Dan&lt;/a&gt; Snow cover the greatest battles of the 20&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;th&lt;/span&gt; century, from WWI to the Gulf War. Peter and Dan deliver historical detail in a no-nonsense approach that is both nuanced and enjoyable. But it is when they turn toward actual events on the battlefield that the series shows its strength.  Using state of the art computer graphics and a novel use of blue-screens, each episode recreates battles with animated maps.  In three dimensions, the movements of air, land, and sea power are shown  in striking detail.&lt;br /&gt;&lt;br /&gt;If you're not able to catch this on the Military Channel, their website has a &lt;a href="http://dsc.discovery.com/beyond/player.html?playerId=203711706&amp;bclid=276024138"&gt;selection of clips&lt;/a&gt; that will give an idea of what you can expect.  Hopefully, they'll have the set available on DVD once the series has aired.&lt;br /&gt;&lt;br /&gt;Update:&lt;br /&gt;&lt;br /&gt;It's been brought to my attention, from more than one reader, that specific facts presented in several episodes of 20th Century Battlefields are either in dispute, or are simply in error.  Though this fact is regrettable in the former case and difficult to justify in the latter, I don't feel that it's serious enough to retract my praise.&lt;br /&gt;&lt;br /&gt;With any historical documentary, one should always regard the evidence provided with a healthy sense of skepticism.  A good historian will try to capture the objective truth, but it's practically impossible to escape subjectivity.  In this regard, I think the Snows did a decent job.  In comparison, the history texts I studied as a teen would be flatly ridiculed if marched out today.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-6291172935747827688?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/6291172935747827688/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=6291172935747827688' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/6291172935747827688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/6291172935747827688'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2006/12/20th-century-battlefields.html' title='20th Century Battlefields'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_7XDJakniA48/RYTVdzpENkI/AAAAAAAAAA4/Ijnz9COsb4c/s72-c/20thcenturybattlefields.gif' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-2369703571217819427</id><published>2006-12-13T17:14:00.000-08:00</published><updated>2008-12-09T14:46:31.330-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><title type='text'>Computer Hope</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_7XDJakniA48/RYCpXArJfzI/AAAAAAAAAAk/T558apUtSPs/s1600-h/computerHope.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_7XDJakniA48/RYCpXArJfzI/AAAAAAAAAAk/T558apUtSPs/s320/computerHope.jpg" alt="" id="BLOGGER_PHOTO_ID_5008188998419054386" border="0" /&gt;&lt;/a&gt;As a software developer, pretty much everyone in my circle of friends and family has come to me, at one time or another, for help when something goes wrong with their PC.  Of course, I'm always happy to help, when I can.  But, over the last few years, I've been directing all but the most serious hardware issues over to a &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;remarkable&lt;/span&gt; resource: &lt;a href="http://www.computerhope.com/"&gt;&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;ComputerHope&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;ComputerHope&lt;/span&gt; started off in 2000, and has steadily grown over the years both in terms of it's database of issues and solutions, as well as its number of unique visitors per year -- which number in the millions.   Chances are, if you're having a problem with your PC or Mac, &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;ComputerHope&lt;/span&gt; will have the solution.&lt;br /&gt;&lt;br /&gt;Free.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-2369703571217819427?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/2369703571217819427/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=2369703571217819427' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/2369703571217819427'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/2369703571217819427'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2006/12/computer-hope.html' title='Computer Hope'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_7XDJakniA48/RYCpXArJfzI/AAAAAAAAAAk/T558apUtSPs/s72-c/computerHope.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-5386225193268389371</id><published>2006-12-03T16:26:00.000-08:00</published><updated>2008-12-09T14:46:31.490-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><title type='text'>Canning Spam</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_7XDJakniA48/RXN7ULmKafI/AAAAAAAAAAY/NdmTuzZQ208/s1600-h/spam.gif"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 202px; height: 217px;" src="http://4.bp.blogspot.com/_7XDJakniA48/RXN7ULmKafI/AAAAAAAAAAY/NdmTuzZQ208/s320/spam.gif" alt="" id="BLOGGER_PHOTO_ID_5004479197579209202" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;By all accounts, the unwarranted messages that have been overflowing the &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;inboxes&lt;/span&gt; of all of our email accounts has reached an &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_1"&gt;intolerable&lt;/span&gt; level.  Spam costs the industry billions of dollars in costs that range from bandwidth and storage to efforts at filtering the onslaught.  We all end up footing that bill as those costs are reflected in the pricing offered by our &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;ISPs&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;The heart of the problem lies in the security model, or lack thereof, of Microsoft's Windows operating system.  Though Microsoft has made a monumental effort at helping the end user secure their machine in the form of virus detection and firewall protection, these have largely been stopgap measures.  The damage is already done: there are now millions of computers world-wide that have been hijacked with special software designed to elude detection and send off thousands of email messages each day.&lt;br /&gt;&lt;br /&gt;The current strategy, filtering, simply will never prevent a problem where the any possible countermeasure can be circumvented with ever more complex schemes devised by &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;spammer&lt;/span&gt;s.  Other strategies have been proposed, including charging for email, as well as the introduction of a delay for every email sent.&lt;br /&gt;&lt;br /&gt;The former is simply &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_5"&gt;unacceptable&lt;/span&gt;, as it would destroy the one aspect of email that has made it one of the most important communications technologies ever invented.  It would also unfairly penalize the victims of computer fraud, since &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;spammers&lt;/span&gt; are increasingly using the hijacked computers of others to send their solicitations.  The collection of &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;ISPs&lt;/span&gt; worldwide have worked in an uncoordinated but moderately successful effort to ban &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;ISPs&lt;/span&gt; within their ranks that support &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;spammers&lt;/span&gt;.  Thus, the option of charging for email would only harm legitimate users and would do nothing to solve the issue at hand.&lt;br /&gt;&lt;br /&gt;The latter, a delay, would help to limit the number of messages sent by a computer in a given day.  But this would penalize companies or individuals with a legitimate reason to send email in bulk to consumers or registered users.  It would also fail to address the real issue:  people have lost control of their computers.&lt;br /&gt;&lt;br /&gt;The best solution would be to put control of those computers solely back in the hands of their rightful owners. That won't happen unless people are provided information on the actions of their computers.  Currently, it's possible for a machine to send email and not leave a trace of it.&lt;br /&gt;&lt;br /&gt;It should be impossible for a computer to send an email without the knowledge of its owner.  In order to rectify this, the &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;ISPs&lt;/span&gt; and operating system manufactures need to take more responsibility in keeping users informed of their computer's actions.  The information sent out by a computer to the &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_11"&gt;Internet &lt;/span&gt;must pass through two points where it can be monitored:  a piece of software on each computer called the TCP/IP "stack", and a specific server on the ISP known as a "gateway".  At each of these two points, messages from computers can be tracked and logged -- vital information that can be made available to the owner of the computer to alert them if their computer has been hacked.  To be honest, a monitor on a computer's TCP/IP stack would be subject to attack, but keeping track of email activity on the ISP is a much more secure route to go.&lt;br /&gt;&lt;br /&gt;But making information available only the first step in a solution.  A protocol is needed to handle cases where the owner of a compromised computer refuses (or is unable) to take action.  One possible solution would be to treat email traffic in the same way credit card purchases are handled.  Initially, an ISP would establish a normal level of &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_17"&gt;correspondence&lt;/span&gt; for a particular machine.  When the machine is hijacked, the email sent would spike, resulting in the account being flagged as suspicious.  Attempts would then be made to contact the account owner to verify the increased activity.  If the owner refuses to respond, the account is suspended. Otherwise, the system is trained to the new level in the event that the traffic is legitimate.&lt;br /&gt;&lt;br /&gt;Unfortunately, these types of changes probably won't occur without the action of governments and lawyers worldwide.  Federal regulation would be a start, and there is hope for sanity to prevail now that &lt;a href="http://en.wikipedia.org/wiki/Series_of_tubes"&gt;Ted Stevens&lt;/a&gt; will no longer be in charge of the &lt;a href="http://en.wikipedia.org/wiki/Senate_Committee_on_Commerce%2C_Science_and_Transportation" title="Senate Committee on Commerce, Science and Transportation"&gt;Senate Committee on Commerce, Science and Transportation&lt;/a&gt;.  But I have a feeling that nothing short of class action lawsuits will &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_18"&gt;motivate&lt;/span&gt; a change in behavior of operating system manufacturers and &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;ISPs&lt;/span&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-5386225193268389371?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/5386225193268389371/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=5386225193268389371' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/5386225193268389371'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/5386225193268389371'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2006/12/canning-spam.html' title='Canning Spam'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_7XDJakniA48/RXN7ULmKafI/AAAAAAAAAAY/NdmTuzZQ208/s72-c/spam.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-1143036263958482272</id><published>2006-12-01T21:04:00.000-08:00</published><updated>2008-12-09T14:46:31.690-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>How Google Do That Voodoo</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_7XDJakniA48/RXEW-7mKaeI/AAAAAAAAAAM/vE-j8ewvBb0/s1600-h/google.gif"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_7XDJakniA48/RXEW-7mKaeI/AAAAAAAAAAM/vE-j8ewvBb0/s320/google.gif" alt="" id="BLOGGER_PHOTO_ID_5003805931390790114" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Google"&gt;Google&lt;/a&gt; has become one of the greatest success stories of our time.  So successful, in fact, that their very name has become a verb.  When you want to find information on the web, send an email, view the world from satellite, find an address on a map, or advertise your company, Google is there.  Google has expanded their operations to include over 450,000 servers, becoming one of the largest private data networks on the planet.  And with their growing success, Google is moving into new markets with products based on the model of free services and responsible advertising.&lt;br /&gt;&lt;br /&gt;I personally use many of their services on a daily basis.  Gmail is my primary personal email account.  I use their maps to view traffic conditions for my daily commute, find my way around, or shop for real estate.  This blog is also a Google product.  But as a software developer, their search service is literally indispensable.  And it was search where the Google miracle began.&lt;br /&gt;&lt;br /&gt;In 1996, Larry Page and Sergey Brin had their vision of search, but little in the way of funds to realize their goal.  The traditional, high powered servers capable of the processing demands of a search engine service were out of their budget.  Instead, Page and Brin opted a more sensible strategy, purchasing large banks of "commodity" PCs to do the job.  Though the strategy was sound, the team at Google had a number of difficult problems to solve.  In orchestrating hundreds of thousands of computers to work together, a field termed &lt;a href="http://en.wikipedia.org/wiki/Distributed_computing"&gt;&lt;span style="font-style: italic;"&gt;Distributed Computing&lt;/span&gt;&lt;/a&gt;, they have become pioneers, perhaps even the stuff of legend.&lt;br /&gt;&lt;br /&gt;In 2004, Jeff Dean, a UW graduate and a Distinguished Engineer at Google's System Lab, gave a talk at the UW, where he discussed both the physical and logical architecture of Google's search technology.  The information is high level so as to be accessible to the layman, yet is detailed enough to satisfy the CS expert.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://norfolk.cs.washington.edu/htbin-post/unrestricted/colloq/details.cgi?id=274"&gt;See the video.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-1143036263958482272?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/1143036263958482272/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=1143036263958482272' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/1143036263958482272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/1143036263958482272'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2006/12/how-google-do-that-voodoo.html' title='How Google Do That Voodoo'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_7XDJakniA48/RXEW-7mKaeI/AAAAAAAAAAM/vE-j8ewvBb0/s72-c/google.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-7752375725534634675</id><published>2006-11-14T21:04:00.000-08:00</published><updated>2007-07-12T22:17:15.378-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='media'/><title type='text'>Hugh Laurie's House</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/x/blogger2/8146/862162521303217/1600/590561/house.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 277px; height: 197px;" src="http://photos1.blogger.com/x/blogger2/8146/862162521303217/320/829661/house.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;When you consider all the dramas on television, the overwhelming number are based on cops, doctors, and lawyers.  It has been this way since the dawn of television.  Frankly, I have been bored with this standard for years.&lt;br /&gt;&lt;br /&gt;And then Fox came out with a doctor drama called &lt;a href="http://www.fox.com/programming/returning/house.htm"&gt;&lt;span style="font-style: italic;"&gt;House&lt;/span&gt;&lt;/a&gt;.  When I heard that the lead actor playing the role of House would be Hugh Laurie, I was immediately intrigued.  Laurie has had an acting career spanning 31 years, during which he has delivered countless memorable performances.  One role, in particular, was the part of the Prince of Wales opposite Rowan Atkinson on the &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;BBC's&lt;/span&gt; Black Adder. Talk about cult status -- Hugh was hilarious.&lt;br /&gt;&lt;br /&gt;In &lt;span style="font-style: italic;"&gt;House&lt;/span&gt;, Laurie has landed perhaps the role of a lifetime.  House is multidimensional and conflicted: brilliant, boorish, cynical, suffering, childish and addicted. Chronic pain and addiction are constant sidebars to the story, as House must cope with a lifelong recovery from an injury to his leg. He bends the rules, drops acid, cheats death, and humiliates both colleagues and patients all while leading his team to diagnose the unsolvable cases that are assigned to his care.  But beyond his caustic bedside manner is an unerring dedication to the welfare of his patients.&lt;br /&gt;&lt;br /&gt;And that is really the hook of the show.  The scenes where I have been shocked at the callousness of House's sarcasm just set the stage for the rare moments when the facade breaks down and the true humanity of his character is exposed.  But beyond that, &lt;span style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;the realism of the character is refreshing.  Far too often, the heroes in our dramas are impossibly perfect, always stalwart, forthright, and morally superior.  I'm sure these people do exist, but humanity is generally far more complex.&lt;br /&gt;&lt;br /&gt;As much as I sing Laurie's praises, the show wouldn't be anything without the stellar cast that's been assembled. Omar &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Epps&lt;/span&gt; has turned in some gripping performances, and I expect that this role will open some doors for him down the road.  But it is the friendship between &lt;a href="http://www.imdb.com/name/nm0000494/"&gt;Robert Sean Leonard's&lt;/a&gt; (Dead Poet's Society) character and&lt;span style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt; &lt;/span&gt;&lt;/span&gt;House that provides the backbone of the show.&lt;br /&gt;&lt;br /&gt;My only complaint is that I have to turn the dial to Fox.  With acting and writing this good, however, I have to put moral reservations and politics aside.  But I'll be damned if I watch the commercials.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-7752375725534634675?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/7752375725534634675/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=7752375725534634675' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/7752375725534634675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/7752375725534634675'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2006/11/hugh-lauries-house.html' title='Hugh Laurie&apos;s House'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-3645232250427822594</id><published>2006-11-13T12:14:00.000-08:00</published><updated>2007-03-17T20:34:20.528-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><title type='text'>The PS3 Exposed</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/8146/862162521303217/1600/console.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger2/8146/862162521303217/320/console.jpg" alt="" border="0" /&gt;&lt;/a&gt;I have to say, I'm looking forward to the release of the &lt;a href="http://en.wikipedia.org/wiki/PlayStation_3"&gt;PS3&lt;/a&gt;.  With the horsepower this console packs, it promises to be much more than a &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;video game&lt;/span&gt;&lt;/span&gt; platform.  The cell processor that Sony has chosen, developed in conjunction with IBM, features 8 independent processing units on a single chip, in addition to a central CPU.  This kind of processing power for a price point under $1000.00 is beyond belief.  For the high end model, the PS3 contains built in &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;WiFi&lt;/span&gt;&lt;/span&gt;, 60 GB of storage, a next generation DVD player capable of 1080i &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;HD&lt;/span&gt;&lt;/span&gt; output, and Dolby 5.1 surround sound.&lt;br /&gt;&lt;br /&gt;The default operating system employed by the PS3 will be a proprietary system called "Cross Media Bar", but the Sony has made it possible for owners to swap out and install any OS the desire, provided it has been compiled for the &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;PPC&lt;/span&gt;&lt;/span&gt; and they are able to obtain the drivers necessary for such an exotic lineup of hardware.  I think Linux would be an attractive option in this case, and there are already several distributions geared to deployment on the PS3&lt;br /&gt;&lt;br /&gt;In short, the PS3 is designed to be both a game console and a personal computing platform for the family &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;HD&lt;/span&gt;&lt;/span&gt; television.  Pricing considerations aside, it is well positioned to take on the &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;XBox&lt;/span&gt;&lt;/span&gt; 360 as the one device taking priority at the foot of the media alter.  Especially since the option to operate the PS3 as a PC has been one option that Microsoft has curiously denied the consumer.  But costs must be considered in the equation, and with a &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_6"&gt;price tag&lt;/span&gt; of over $600.00, the early consumers will certainly be either the greatest &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_7"&gt;aficionados&lt;/span&gt; or the most affluent.  In time, however, as the scale of production brings prices under control, PS3 costs should drop as much as 30%, bringing the &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;console's&lt;/span&gt; price to a point where most will be able to afford the purchase.&lt;br /&gt;&lt;br /&gt;With the graphics engine on the PS3, I think the barriers between cinematic entertainment and video game finally will blur to the point that we'll start to see releases less focused on tactics and &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_9"&gt;game play&lt;/span&gt;&lt;/span&gt;, in favor of &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_10"&gt;plot line&lt;/span&gt;&lt;/span&gt;, character development, and story telling.&lt;br /&gt;&lt;br /&gt;For &lt;a href="http://dailytech.com/article.aspx?newsid=4908"&gt;more on the hardware of the PS3&lt;/a&gt;, &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;DailyTech&lt;/span&gt;&lt;/span&gt; has taken the time to undress the console, exposing her thundering hardware and elegant design.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-3645232250427822594?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/3645232250427822594/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=3645232250427822594' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/3645232250427822594'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/3645232250427822594'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2006/11/ps3-exposed.html' title='The PS3 Exposed'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-1160606113069467597</id><published>2006-10-12T10:48:00.000-07:00</published><updated>2006-10-12T11:13:22.551-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='media'/><title type='text'>Thermopylae A La Miller</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/8146/862162521303217/1600/spartans.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger2/8146/862162521303217/320/spartans.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;It's 480BC.  You and 300 of your Spartan countrymen (along with about a 1000 assorted Greek troupes), are preparing to make a final stand against the entire might of the Persian army, which number over a million strong.&lt;br /&gt;&lt;br /&gt;You have two things going for you:  excellent training, and the tactical advantage of the high cliffs of &lt;a href="http://en.wikipedia.org/wiki/Battle_of_Thermopylae"&gt;Thermopylae&lt;/a&gt;.  Regardless, you know you're going to die.&lt;br /&gt;&lt;br /&gt;So what do you do?&lt;br /&gt;&lt;br /&gt;You make the cost of victory for the Persians so &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;atrocious&lt;/span&gt; that by the time the lot of you are conquered, the Persians will have lost their thirst for battle.  And in doing so, you'll become the stuff of legend -- a story held on the lips of those facing great odds until the end of humanity.&lt;br /&gt;&lt;br /&gt;The story of the battle has been told countless times, but Frank Miller decided to put his own spin on the tale with "&lt;a href="http://en.wikipedia.org/wiki/300_%28comics%29"&gt;300&lt;/a&gt;", a graphic novel published in 1998.  Following the success of Sin City, 300 has now been translated to a &lt;a href="http://www.apple.com/trailers/wb/300/trailer1/large.html"&gt;full length motion picture&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The trailer presents animation, set design, and costumes that are simply a feast for the eyes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-1160606113069467597?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/1160606113069467597/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=1160606113069467597' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/1160606113069467597'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/1160606113069467597'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2006/10/thermopylae-la-miller.html' title='Thermopylae A La Miller'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-424639325449574134</id><published>2006-10-05T23:27:00.000-07:00</published><updated>2008-12-09T14:46:31.938-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>Ubuntu</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_7XDJakniA48/RfzB3KzOGvI/AAAAAAAAADM/zsSLWv1b7Ow/s1600-h/ubuntulogo.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_7XDJakniA48/RfzB3KzOGvI/AAAAAAAAADM/zsSLWv1b7Ow/s320/ubuntulogo.png" alt="" id="BLOGGER_PHOTO_ID_5043118836284267250" border="0" /&gt;&lt;/a&gt;&lt;a href="http://en.wikipedia.org/wiki/Ubuntu_%28Linux_distribution%29"&gt;&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Ubuntu&lt;/span&gt;&lt;/a&gt; is the Zulu word meaning "humanity towards others". Given the quality and ease of use of this operating system, that's precisely the words that come to mind when considering the seemingly altruistic efforts of South African &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_1"&gt;entrepreneur&lt;/span&gt;, Mark Shuttleworth, in developing what has become the fastest growing Linux distribution in the world.&lt;br /&gt;&lt;br /&gt;In claiming this title, Shuttleworth has accomplished quite a feat.  There are literally hundreds of Linux &lt;a href="http://en.wikipedia.org/wiki/Comparison_of_Linux_distributions"&gt;distributions&lt;/a&gt;. Unlike Microsoft or Apple, there's no central control in the world of Linux. Anyone wanting to take the basic kernel and develop an operating system environment, can do so provided that they observe the GNU license.  In many cases, new distributions have been created simply to address the shortcomings of their predecessors.  In a few, distributions have been developed with specific goals, including education and scientific research.&lt;br /&gt;&lt;br /&gt;Yet, with all these competitors, Ubuntu has risen quickly to grab a 24% share of the desktop market, and continues to make huge strides in both the server market.  In both of these, the growth is fueled as much from converts from other Linux distributions as from defections by Microsoft and Apple users.  While Linux is an obvious choice for the server market, it's the progress Ubuntu has made in the desktop environment that has caught my attention.  As well it should:  I use it on a laptop every day.&lt;br /&gt;&lt;br /&gt;The main reason for my use of Linux is that I am a developer, often creating server software released on the Linux platform.  I follow the creed that if software is going to be released on a particular operating system, one should develop on the platform.  In the years that I have used Linux, I've noticed several areas where there have been productivity gains over working on Windows.&lt;br /&gt;&lt;br /&gt;The majority of the performance gains I've enjoyed have been due to the flexibility of the file systems I have at my disposal.  In my case, I opted for ReiserFS, a file system optimized to handle the creation and deletion of large numbers of small files.  In my daily routine of compiling code, I create and delete hundreds, sometimes thousands of small files every few minutes.  The performance gain has been nearly two-fold over my experience with Windows and NTFS.   Another area of improvement has been due to the simplified nature of Linux.  Having less baggage than Windows, it performs some operations much more efficiently.  In some cases, I've seen a 100% increase in productivity, resulting in better products, more features, and much less frustration.&lt;br /&gt;&lt;br /&gt;Much of my work is achieved using the command line, and the command line shells available for Linux are vastly more powerful and functional than that available on Windows.  But looking at the desktop, one might have a hard time spotting the differences between Windows and Linux.  In fact, the Linux graphic user interface has improved to the point where even novice users could easily install, configure, and be happily using Linux after only a day or two of use.  And the aspect of eye candy is only becoming more prominent in Linux.  It's not there yet, but I'd give Windows and OSX another 5 years before they will need to take the threat of Linux seriously.&lt;br /&gt;&lt;br /&gt;A few things need to happen first.  Here are my suggestions to the larger Linux community:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Distribution Standardization &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Each distribution has had the freedom to make subtle choices about the structure of the OS, from file system directory structures, to conventions on file locations and utilities.  This has crippled many efforts to create software spanning all distributions.  These differences need to be eliminated in favor of a common distribution base.  There are major efforts in this arena, along with some pockets of considerable resistance.  However, the benefit to the greater community far outweighs any arguments to preserve status quo.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Application Interchange Standardization&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;For the longest time, Windows has enjoyed the powerful concept of a "clipboard" to ferry data between applications.  For example, this has allowed spreadsheets to be copied directly from Excel and pasted into Word without the need to reformat data.  Though there is  limited capabilities to do this in Linux, applications are often incapable of exchanging data in this way.  Rather, spread sheet grids or flowchart graphs need to be exported as a graphic file (tiff or pdf) and then imported to the target application.  This is confusing to many, and often produces undesirable results.  A much more robust data interchange format needs to be developed.  This isn't the responsibility of the Linux kernel, per se, but rather the window manager that provides the graphical shell on top of the base operating system.&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;Outlook Killer&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Linux *still* does not have an application that interfaces with Exchange that is acceptable for daily use in the enterprise.  The main contender, Evolution, has many strengths, but has far too many issues to be a reliable replacement.   It's a daunting task, one for which Novel, its core developer, must be applauded.  There just remains considerable work to  shore up one of the most important applications upon which corporate acceptance will depend.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Games&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;With only 1% of the market share for the desktop, it's not surprising that game development studios have not been producing titles for Linux.  There's simply no financial incentive.  The &lt;a href="http://www.libsdl.org/"&gt;Software DirectMedia Layer&lt;/a&gt; (SDL), a software abstraction framework enabling developers to produce applications for any platform they desire with a single body of code, may provide a much needed boost.   If it delivers as promised, game studios could see large increases in revenue from new customers in the OSX and Linux markets.  But the SDL relies on OpenGL, which may be thrown the cold shoulder in Vista.  I'll be watching the growth of SDL closely.&lt;br /&gt;&lt;br /&gt;If these four issues are addressed, I think we'll begin to see Linux gaining a much larger share of the market.  One that it rightly deserves.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-424639325449574134?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/424639325449574134/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=424639325449574134' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/424639325449574134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/424639325449574134'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2006/10/ubuntu.html' title='Ubuntu'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_7XDJakniA48/RfzB3KzOGvI/AAAAAAAAADM/zsSLWv1b7Ow/s72-c/ubuntulogo.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-7639312305568193854</id><published>2006-09-30T12:22:00.000-07:00</published><updated>2008-12-09T14:46:32.119-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='poetry'/><title type='text'>Our Greatest Fear...</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;font size="4"&gt;Our Greatest Fear&lt;/font&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;Our greatest fear is not that we are inadequate,&lt;br /&gt;but that we are powerful beyond measure.&lt;br /&gt;&lt;br /&gt;It is our light, not our darkness, that frightens us.&lt;br /&gt;We ask ourselves, Who am I to be brilliant,&lt;br /&gt;gorgeous, handsome, talented and fabulous?&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_7XDJakniA48/Rlj0toaRluI/AAAAAAAAAFI/PUL4807Av-o/s1600-h/TempleOfJoyBurn.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 347px; height: 400px;" src="http://2.bp.blogspot.com/_7XDJakniA48/Rlj0toaRluI/AAAAAAAAAFI/PUL4807Av-o/s320/TempleOfJoyBurn.jpg" alt="" id="BLOGGER_PHOTO_ID_5069070445384406754" border="0"&gt;&lt;/a&gt;&lt;br /&gt;Actually, who are you not to be?&lt;br /&gt;You are a child of God.&lt;br /&gt;&lt;br /&gt;Your playing small does not serve the world.&lt;br /&gt;There is nothing enlightened about shrinking&lt;br /&gt;so that other people won't feel insecure around you.&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;We were born to make manifest the glory of God within us.&lt;br /&gt;It is not just in some; it is in everyone.&lt;br /&gt;&lt;br /&gt;And, as we let our own light shine, we consciously give&lt;br /&gt;other people permission to do the same.&lt;br /&gt;As we are liberated from our fear,&lt;br /&gt;our presence automatically liberates others.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;- Marianne Williamson from her book, &lt;font style="font-style: italic;"&gt;A Return to Love&lt;/font&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/7062835374515961810-7639312305568193854?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/7639312305568193854/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=7639312305568193854' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/7639312305568193854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/7639312305568193854'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2006/09/our-greatest-fear.html' title='Our Greatest Fear...'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_7XDJakniA48/Rlj0toaRluI/AAAAAAAAAFI/PUL4807Av-o/s72-c/TempleOfJoyBurn.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-1776253138129591254</id><published>2006-09-29T18:14:00.000-07:00</published><updated>2006-09-29T20:04:59.165-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>Socialight:  Next Gen Social Networking</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/8146/862162521303217/1600/socialnetworks1.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 110px; height: 111px;" src="http://photos1.blogger.com/blogger2/8146/862162521303217/320/socialnetworks1.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Imagine you're walking through an unfamiliar city, but you have a device that knows where you are at any moment, and provides you with recommendations on vendors in your area or things to do?  In the near future, that device will be your phone, and &lt;a href="http://www.socialight.com/"&gt;Socialight&lt;/a&gt; may be the service that will provide you up-to-date, contextual information about your current location.  What's new about Socialight is that it takes a social networking approach to compiling that information.  This means that anyone belonging to the service is free to add details about a location.&lt;br /&gt;&lt;br /&gt;Whether you want to recommend a local barrista, a magnificent restaurant, or share locational trivia or history, sites like Socialight seek to allow you to tag locations with descriptions for others to find.  Conversely, you might find areas of a city, once taken for granted, filled with new experiences or places to try.&lt;br /&gt;&lt;br /&gt;Two hurdles exist towards general acceptance of these types of services.  First, they need to establish a convenient message delivery strategy that is beyond what the cell phone companies currently provide.  Second, they need to establish a way for new tags to be made from a cell phone that avoids the hassles of text entry over the majority of current cell phones.&lt;br /&gt;&lt;br /&gt;Message delivery is perhaps the biggest issue.  Imagine the worst case scenario, where you openly allow location tags to be sent to you via SMS or email as you walk through your neighborhood.  After only a few blocks, your inbox could be quickly filled if every post possible was delivered.  Obviously, if sites like Socialight are to succeed, they would need to avoid this case.  But to excel, what is needed are temporary alerts that notify a traveler to tags, which can be saved as desired.  This will require a messaging infrastructure that currently isn't supported by most cell providers, and may incur a healthy investment in R&amp;amp;D to get out the door.&lt;br /&gt;&lt;br /&gt;The other concern is making area tagging simple and fast.  If you're older than 20, using the current interface of most phones to issue text is a laborious and often frustrating experience.  But for these systems to flourish, they need participants to enter data about the locations on the spot.  By the time most people get home, they just can't be bothered to write about their day in the kind of detail that would breath life into these kinds of networking platforms.  There's many possible strategies for this.  Decision trees could guide users in building recommendations with the press of a few keys.  Another option would be voice recognition systems that would attempt to translate the initial voice post, but reserve the tag's content for later review.&lt;br /&gt;&lt;br /&gt;Other considerations might include:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Fine grained control over information pushed to the client&lt;br /&gt;&lt;/li&gt;&lt;li&gt;A voting environment, where the democratic process can sort out valid posts from spam&lt;/li&gt;&lt;li&gt;Linking to other members in the system to give weight to their tags&lt;/li&gt;&lt;li&gt;An itinerary builder, which takes a path established between two points, and associates tags along the route according to a criteria&lt;/li&gt;&lt;/ul&gt;Though the developers at Socialight may have considered all of these possibilities, their site is currently offline.  Once the site is up, the public will have a chance to find out.&lt;br /&gt;&lt;br /&gt;Personally, I wish them the best of luck.  I think ideas like this, where technology not only helps to bring people together but out in the open, is a beautiful thing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-1776253138129591254?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/1776253138129591254/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=1776253138129591254' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/1776253138129591254'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/1776253138129591254'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2006/09/socialight-next-gen-social-networking.html' title='Socialight:  Next Gen Social Networking'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-6058365575806979707</id><published>2006-09-26T15:04:00.000-07:00</published><updated>2006-09-26T15:15:29.690-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='politics'/><title type='text'>Olbermann on The Clinton Interview with Fox</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/8146/862162521303217/1600/clinton.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger2/8146/862162521303217/320/clinton.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The propagandistas of Fox and other irresponsible media outlets have ridiculed Clinton's response to an underhanded interview tactic on Fox news.  Instead of covering Clinton's admirable job of raising billions of dollars to solve world issues as advertised, Wallace took the opportunity to hit Clinton with accusations of not doing enough to prevent 9-11, as was falsely asserted in Disney's attempt to rewrite history, "The Path to 9-11".&lt;br /&gt;&lt;br /&gt;Clinton was understandably upset.  What's more, he stood up for himself, while Wallace proceeded to squirm in his seat and giggle nervously.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 0);"&gt;Update:&lt;br /&gt;&lt;br /&gt;Fox has been on an active campaign to remove their broadcasts from youtube.com.  But, given the nature of the internet, as submissions are removed, new ones arrive to take their place.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Watch the interview:  &lt;a href="http://www.youtube.com/watch?v=N7zvesjt2jo&amp;mode=related&amp;amp;search="&gt;Part 1&lt;/a&gt;, &lt;a href="http://www.youtube.com/watch?v=WsVMHjdqx68&amp;mode=related&amp;amp;search="&gt;Part 2&lt;/a&gt;&lt;/span&gt;&lt;a href="http://www.youtube.com/watch?v=EAnuqicla4I"&gt;&lt;/a&gt;&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Then watch Olbermann's &lt;a href="http://www.youtube.com/watch?v=70wOzCkWN5g"&gt;response&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-6058365575806979707?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/6058365575806979707/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=6058365575806979707' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/6058365575806979707'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/6058365575806979707'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2006/09/olbermann-on-clinton-interview-with-fox.html' title='Olbermann on The Clinton Interview with Fox'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-6564098521089898565</id><published>2006-09-26T01:32:00.000-07:00</published><updated>2008-10-02T03:06:02.339-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='politics'/><title type='text'>The Truth Behind 9/11</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/8146/862162521303217/1600/afghanistan.0.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 167px; height: 114px;" src="http://photos1.blogger.com/blogger2/8146/862162521303217/320/afghanistan.0.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;It was July 1999, in the &lt;a href="http://en.wikipedia.org/wiki/Fergana_Valley"&gt;Fergana Valley&lt;/a&gt; of Central Asia. &lt;a href="http://www.newyorker.com/fact/content/articles/020114fa_FACT"&gt;Juma Namangani&lt;/a&gt; walked along hills covered with lush grasses and poppy flowers as he surveyed his troupes in the valley below. Juma's past was unusual for a mojahedin. An Uzbeki native, he served in the Soviet Airborne in Moscow's failed campaign in Afghanistan. From those origins, he became a leader in the Islamic Jihadist movement of the Taliban.&lt;br /&gt;&lt;br /&gt;Juma had made a deal with Osama, and his mandate was clear.  Flush with the profits from the few sanctioned Taliban poppy fields around Takhar and Kunduz provinces, Juma devoted himself to assembling an army, with the intent of spreading control. Starting in the spring, his recruits numbered over 8000 and trained in small camps in the hills. Juma's goal was nothing less than the destabilization and overthrow of the sovereign states comprising the map of Central Asia, including Uzbekistan, Tajikistan, and Kyrgyzstan.&lt;br /&gt;&lt;br /&gt;The past winter had been harsh, prompting the Red Crescent to provide emergency rations to many of the tribes in the region. With these conditions, Juma must have assumed that a military campaign would be met with little resistance, perhaps even welcomed as his conquest would bring much needed supplies, rations, and religious patronage.  The tides of war, however, were turning against Juma and the Taliban.  &lt;p style="margin-bottom: 0in;"&gt;By the end of the summer, Juma's army was decimated by helicopter raids, precision mortar attacks, and devastating ambushes. In particular, Uzbekistan's national army, once barely able to support itself, was suddenly more than a match for Juma's troupes. It became clear that its efforts were guided by US military advisors, and funded by the very oil companies that had put the Taliban in power only a few years prior.&lt;/p&gt;  &lt;p style="margin-bottom: 0in;"&gt;The irony of the situation was probably not lost on Osama Bin Laden, but then neither was his desire for vendetta. The opposition to the Taliban by the the interests that once propelled the movement to power must have come as a bitter pill, but certainly not as a surprise. The history, however, is complex.&lt;/p&gt;  &lt;p style="margin-bottom: 0in;"&gt;Before the withdrawal of the Russians from the region in 1986, the governments of the west, at the behest of &lt;a href="http://www.globalresearch.ca/index.php?context=viewArticle&amp;amp;code=%20SC20050730&amp;amp;articleId=762"&gt;oil companies&lt;/a&gt; including Unocal and Chevron, were extremely supportive of the efforts of jihadists and Islamic extremists. At stake, were perhaps 100 billion dollars worth of natural gas and oil fields that dot the Central Asian landscape. Western oil companies wanted to ensure that these assets weren't controlled by Soviet interests, and enlisted any willing to take on the fight.&lt;/p&gt;      &lt;p style="margin-bottom: 0in;"&gt;After the final withdrawal of the Russians, a Communist regime still held control of Kabul for a few years. But it was not long after that civil war gripped the country. For nearly a decade it lingered until 1996, when the Taliban finally took power. Backing the Taliban were the Pakistani Secret Service, as well as Unocal and Delta Oil. In the ensuing peace, the oil companies finally achieved a decades long goal of a stable government free of communist control.&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0in;"&gt;The fruits of their labor, however, were found to be rotten. Instead of a regime in debt to their aid, Unocal and Delta Oil quickly discovered that the Taliban had its own plans for the oil fields in Central Asia. The Taliban were going to take the oil for themselves, and their recently acquired leader, Osama Bin Laden, was uniquely qualified to make this happen. Osama's family gained their wealth from building the oil facilities in Saudi Arabia, and had the knowledge and expertise to develop these assets.&lt;/p&gt;&lt;p style="margin-bottom: 0in;"&gt;In order to achieve this goal, the Taliban would need to take over both Uzbekistan and Tajikistan. Though this effort would not be easy, the Taliban would be able to draw upon experience and tactics developed over two decades of war. And by dissolving national borders into a single territory, Osama promised to resurrect a symbol of the glory days of Islam's past: The Islamic Caliphate.&lt;/p&gt;      &lt;p style="margin-bottom: 0in;"&gt;Osama's dream was not to see the light of day. The failed 1999 campaign was only one of a string of futile, yearly attempts to conquer Central Asia. Each year, Osama Bin Laden would strike back against the west with bombings, including the American embassy in Nairobi and the USS Cole. Though the actions gathered attention and support, he sought a larger arena.  At that point, Osama Bin Laden poured all of his resources into Al-Qeada.  The once amorphous set of affiliations and organizers now became a centrally controlled organization which began planning the events of September 11th, 2001.&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0in;"&gt;Though there may be other motives for the attack on the US on September 11&lt;sup&gt;th&lt;/sup&gt;, the defeat of Osama's interests at the hands of the very factions that once supported it can't be ignored. It is a complex situation, but the only way that we as a society can learn from the experience is if we know the truth.&lt;/p&gt;&lt;p style="margin-bottom: 0in;"&gt;Regretably, instead of taking the time to educate the world about the motivations for our nation's greatest tragedy, George Bush has repeatedly explained away the attacks with the phrase:  “they hate our freedom”.  I find it impossible that the leader of the most powerful democracy in the world would not be able to unearth the facts that have been presented here.  I suppose it's a matter of interest.&lt;br /&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0in;"&gt;Regardless, the events of the rise and fall of the Taliban present a clear argument for additional oversight of the activities of the global oil industry. It is the role of our congress, not oil companies, to set the foreign policy of our government. Granted, to a large extent, commercial interests drive any nation's policy. But this is just one more clear case where our greed and dependence on oil has resulted in tragedy. In the 70's, our dependence put our way of life at the mercy of OPEC. This time it has helped to inspire the terrorist organization responsible for 9/11. And in our efforts to bring those in Al Qaeda (as well as the illegal war with Iraq) to justice, we've spent three times what those original oil fields were ever worth.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-6564098521089898565?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/6564098521089898565/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=6564098521089898565' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/6564098521089898565'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/6564098521089898565'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2006/09/truth-behind-911.html' title='The Truth Behind 9/11'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-3333992932411919730</id><published>2006-09-24T00:19:00.000-07:00</published><updated>2008-12-09T14:46:32.385-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='art'/><title type='text'>The Amazing World of Juli Adams</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_7XDJakniA48/R-bL4W29lpI/AAAAAAAAAMU/4uG77ElSdfA/s1600-h/cats.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_7XDJakniA48/R-bL4W29lpI/AAAAAAAAAMU/4uG77ElSdfA/s400/cats.jpg" alt="" id="BLOGGER_PHOTO_ID_5181052590405555858" border="0" /&gt;&lt;/a&gt;I have known Juli for almost two decades.  Her wisdom and wit were qualities that immediately drew me to her like a moth to flame.  Her smile is as infectious as her sense of humor.  I feel fortunate to have met someone with her spirit and lust for life.  It's a joy that one would wish to share with the world.&lt;br /&gt;&lt;br /&gt;Fortunately, among Juli's many talents is her ability to express her imagination and dreams through art.  Over the last ten years, I've seen her skill blossom, spanning from watercolor and sculpture to oils and acrylics.&lt;br /&gt;&lt;br /&gt;Over the last few summers, Juli and her life partner, Todd, have traveled over America to attend the fairs and festivals that dot the countryside where aspiring artists and craftsmen come to showcase their talents.&lt;br /&gt;&lt;br /&gt;In doing so, she has shown incredible resilience and determination.  It's one thing to hang your work in a gallery.  It's quite another to go on the road, with only the faith in your talent, to present your work to an audience.&lt;br /&gt;&lt;br /&gt;As a consequence, Juli has not only come to know more about her self, but of America as well.   In her paintings, she has been able to capture both the angst and spiritual landscape of our society in images that are both surreal and concrete.&lt;br /&gt;&lt;br /&gt;Although I am biased, I highly recommend that you take a few minutes to visit Juli's site, and experience for yourself the magic of her artwork.  A gift that I have known for decades, I now am pleased to share with you.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://www.juliadams.com/"&gt;&lt;span style="font-size:130%;"&gt;The Art of Juli Adams&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-3333992932411919730?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.juliadams.com/' title='The Amazing World of Juli Adams'/><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/3333992932411919730/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=3333992932411919730' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/3333992932411919730'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/3333992932411919730'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2006/09/amazing-world-of-juli-adams.html' title='The Amazing World of Juli Adams'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_7XDJakniA48/R-bL4W29lpI/AAAAAAAAAMU/4uG77ElSdfA/s72-c/cats.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-1106487161192619876</id><published>2006-09-22T13:07:00.000-07:00</published><updated>2006-09-22T13:49:33.892-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='art'/><title type='text'>Low Morale</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/8146/862162521303217/1600/lowmorale.gif"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger2/8146/862162521303217/320/lowmorale.gif" alt="" border="0" /&gt;&lt;/a&gt;Though his work has been around for a few years, Laith Bahrani has yet to find the kind of exposure that he deserves.   Bahrani is a rare talent, possessing a combination of biting wit, compelling character design, and flash savvy.  His main production company and website, &lt;a href="http://www.monkeehub.com/"&gt;Monkeehub&lt;/a&gt;, serves as a model resume for the graphic designer.  Though his commercial work is innovative, by far his most impressive work has been showcased on his site &lt;a href="http://www.lowmorale.co.uk/"&gt;Low Morale&lt;/a&gt;.  In the artist's own words:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt;"Low Morale is a series of animations portraying one man's struggle to cope with the soul-sapping, will-to-live draining, life-force mugging, morale crushing experiences of work.  Any correlation between events shown and real-life have been personally researched."&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;Radio Head was so impressed with Bahrani's work that they had him produce a video for "&lt;a href="http://www.lowmorale.co.uk/creep/"&gt;Creep&lt;/a&gt;".  And recently, MTV has caught on, purchasing several of his shorts for their mobile service as well as an MTV special.&lt;br /&gt;&lt;br /&gt;I hope this means we can look forward to much more of the world of Laith Bahrani.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-1106487161192619876?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/1106487161192619876/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=1106487161192619876' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/1106487161192619876'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/1106487161192619876'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2006/09/low-morale.html' title='Low Morale'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-7414592139000365015</id><published>2006-09-22T00:22:00.000-07:00</published><updated>2006-09-22T00:36:09.136-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='art'/><title type='text'>A Crop Circle on Woolstone Hill</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/8146/862162521303217/1600/cropcircle.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 208px; height: 159px;" src="http://photos1.blogger.com/blogger2/8146/862162521303217/320/cropcircle.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Since the early 70's, the&lt;a href="http://en.wikipedia.org/wiki/Crop_circle"&gt; crop circles&lt;/a&gt; that appeared in the English country side captured the imagination of the world.  For years, their origin remained a mystery, largely attributed to paranormal or extra-terrestrial activity.  This remained the case until 1991, when Doug Bower and Dave Chorley confessed to the creation of many of the formations and demonstrated their techniques.&lt;br /&gt;&lt;br /&gt;In revealing their secrets, the mystique of the crop circle was only enhanced.  Each year more designers have joined the ranks in defiling prime crop fields.  And each year, larger and more intricate designs have been attempted, raising the crop circle to the level of a true art form.&lt;br /&gt;&lt;br /&gt;Take a look at one of the best of 2005, the work of &lt;a href="http://www.partyvibe.com/archaic/crop/2005/woolstone.htm"&gt;&lt;span style="font-family:georgia;"&gt;Crop Circle Connector, Steve Alexander, Jaime Maussan&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-7414592139000365015?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/7414592139000365015/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=7414592139000365015' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/7414592139000365015'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/7414592139000365015'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2006/09/crop-circle-on-woolstone-hill.html' title='A Crop Circle on Woolstone Hill'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-7773954871496942490</id><published>2006-09-21T19:38:00.000-07:00</published><updated>2006-09-21T21:07:12.443-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='technology'/><title type='text'>The Age of Digital Ink</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/8146/862162521303217/1600/eink.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 122px; height: 153px;" src="http://photos1.blogger.com/blogger2/8146/862162521303217/320/eink.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;As your alarm clock goes off, the lights in your room rise slowly, helping you to become alert with a gentle suggestion instead of an alarming jolt.  Along with the beeps from your alarm, dramatic changes on the walls start to occur.  The vista of the Milky Way and the heavens that accompanied you to sleep is slowly morphed into footage of a sunrise over an African Savanna, wrapping you in a 360 degree panorama.  You rise after a few moments, and head into the showers.  Not wishing any distractions, you issue a voice command to your house computer, and the images vanish, replaced by the your preferred wall colors -- complete with an accent wall dictated by the colors of the current season.&lt;br /&gt;&lt;br /&gt;As you dress, you put on a newly bought pair of fashionable shoes.  You didn't have time to pick out a shirt to accent the purchase, but one in your wardrobe is a perfect match in terms of texture and style.  However, the color of the accent stripes is wrong.  You instruct the house computer to send color information to the shirt, which then adapts its accent threads to the color of your shoes, completing the look.&lt;br /&gt;&lt;br /&gt;Your make sure your children are ready for school, and find your daughter still asleep in her bed. On the wall at the foot of her bed, a rectangular frame still presents the final image of a graphical, animated tutorial from her geometry homework.  You wake her with a nudge, and then walk downstairs to survey the morning.  Your spouse has brewed coffee, and the morning newspaper has been thoughtfully laid out next to your breakfast.  This is not the usual newspaper, but a large, ultra-thin, collapsible sheet of polymer on which the newspaper articles are displayed.  Though news papers are still printed on paper, the runs are dramatically smaller than just a decade ago.  The digital circulation, however, has shotup as world wide syndication and exposure have brought billions of new readers to publications capable of producing compelling content.  With the digital ink era, profit margins have increased by an order of magnitude.&lt;br /&gt;&lt;br /&gt;This morning, you decide to take the kids to school.  From your house, the 20 minute drive to campus takes you by a billboard showing an animation of several models surfboarding a giant wave.  In seconds, the wave erupts from a washing machine, sending the models flying until they are flattened against the wall of a suburban washroom in cartoon fashion.  The scene is hilarious, but lasts no more than a few seconds, due to federal regulations on public displays near roadways.&lt;br /&gt;&lt;br /&gt;You pass your children's school bus on its way to your house.  Your son opens the passenger window, waving to his friends.  As they wave back, you notice their jackets, which are pulsating with vibrant displays of cartoon heroes, embarrassing photographs, and loops of favorite band members.   You remind your children to turn off any animations once they get to campus, as school regulations strictly forbid these distractions.&lt;br /&gt;&lt;br /&gt;When they leave your car, both children hop out with ease.  Since a single reader weighing only a few ounces can access the school's library remotely, there's no need to lug around the weighty textbooks of your youth.&lt;br /&gt;&lt;br /&gt;Once at school, your daughter's math class begins with a lecture accompanied by an animated presentation displayed along the entire back wall of the classroom.  Mathematical concepts are demonstrated in full 3D animation while the teacher presents an overview to the students.  Your daughter's preparation from the night before pays off, as her work is uploaded to the presentation and analyzed in front of the entire class.  The teacher augments commentary in blackboard fashion, using a magnetically tipped stylus to add notes and corrections to her work.  The results are then shared on the network for all the students.&lt;br /&gt;&lt;br /&gt;Settling in at the office, you note the work your coworkers have left on the wall of a conference room from the night before.  With a stylus, you make corrections, which are then integrated into the report with OCR.  You circle the elements to be saved, and issue a voice command to your office computer system to have the selected areas included in your documents.  At work, most walls and cubicle surfaces are "active", capable of whiteboarding, or the display of data on demand. Given an initial point for a region of content, output from computing systems can be displayed anywhere desired on an active surface.  Adhoc presentations or discussions are aided with Visio like templates, enabling sophisticated drawings in only a few seconds.&lt;br /&gt;&lt;br /&gt;You decide to go out after work to have a few drinks with the team.  Your team decides on Sawadee, a new bar featuring a Thai themed decor complete with active wall animations that present the ancient Thai city of Ayutaya in its historic splendor.  Lost in the beauty of your surroundings and the rich, intoxicating drinks of coconut and fermented fruit juices, you fail to notice the hour before its too late.  You give your keys to one of your coworkers to take your car back to your office, and opt instead for the subway.&lt;br /&gt;&lt;br /&gt;While on the subway, animated billboards herald new stealth technologies for soldiers that enable them to blend into their surroundings.  Nearing your gate, the active-ticket for the ride informs you of your impending stop.  In the past, you thought this was a rediculous use of the technology, but in your current state, it's a much needed reminder to call your spouse to come to the station to whisk you home.  In fact, receipts are widely used in public events to help guide entrants through complex or large facilities, aid in finding seats, or provide multilingual translation...&lt;br /&gt;&lt;br /&gt;The scenario depicted of this imaginary day is just one vision of what new technologies evolving around digital or "E" ink may come to bring.  They promise to revolutionize not only print and advertising, but also clothing, interior decor, education, and indeed, communications in general.&lt;br /&gt;&lt;br /&gt;Leading the charge is &lt;a href="http://www.eink.com/"&gt;E Ink&lt;/a&gt;, headed up by Russel J. Wilcox, a graduate of Harvard's Business School.  Though the substrates developed by E Ink are remarkably thin, a new form of processor technology based on &lt;a href="http://info.uwe.ac.uk/news/UWENews/article.asp?item=859&amp;year=2006"&gt;computing polymers&lt;/a&gt; promises to liberate e-ink technology from the thin sheets developed by Wilcox' company to a variety of novel products.  Polymers could be stretched into thin threads to produce fabrics or fabricated into surfaces for application on walls, vehicle exteriors, tabletops, or even product packaging.&lt;br /&gt;&lt;br /&gt;In time, the world will come alive with what I call "active surfaces", featuring full color graphics and video, and capable of reacting to touch or voice. The limits of such a technology are difficult to predict.  Some may find the vision overwhelming or even undesirable.  But these technologies are on the horizon. In the end, it will be up to the market -- each one of us -- to decide the roles they will play in our daily life.&lt;br /&gt;&lt;br /&gt;UPDATE:&lt;br /&gt;&lt;br /&gt;I've just learned that Philips has developed LED technology that can be woven into fabrics. The &lt;a href="http://www.research.philips.com/initiatives/photext/video.html"&gt;video&lt;/a&gt; demonstrating their concept is amazing.  The future is closer than you might think.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-7773954871496942490?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/7773954871496942490/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=7773954871496942490' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/7773954871496942490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/7773954871496942490'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2006/09/age-of-digital-ink.html' title='The Age of Digital Ink'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-5370744034087166835</id><published>2006-09-18T14:02:00.000-07:00</published><updated>2006-09-18T14:41:55.023-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='politics'/><title type='text'>The Seeds We Sow...</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/8146/862162521303217/1600/wethepeople.gif"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 195px; height: 97px;" src="http://photos1.blogger.com/blogger2/8146/862162521303217/320/wethepeople.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;In the battles we wage, we must always be careful to weigh the consequences of our actions.  In this war on "terror", we have been provoked into a confrontation where our conventional might is of little value.  We are in a battle for hearts and minds, fighting not with a nation of people, but against an ideology that has neither national borders, nor racial lines.  More importantly, we are in a battle for which there may be no end.&lt;br /&gt;&lt;br /&gt;Already, we have been in Afghanistan and Iraq longer than it took to defeat the Germans and the Japanese in WWII, and there is no clear end in sight.  Even the establishment of a successful government in Iraq will not be a guarantee against another devastating terrorist attack. The one thing that I hold to be true: If we do see an end to this conflict, it will be due more to our will to hold to the convictions that made this country great than our ability to break the backs of a subversive and determined underground.&lt;br /&gt;&lt;br /&gt;Instead of acknowledging this, and acting accordingly, the Bush administration has risked a just action in Afghanistan for an expensive and irrelevant war in Iraq.  Along with this war, Bush has sought to subvert our constitution, openly flouting the very laws that were meant to protect our freedom and hold our society to the highest standards.  His administration has committed wiretapping without writ -- an offence that resulted in the resignation of Nixon.  They have fostered an environment where torture has been condoned counter to the rule of law, and even have sought to ratify the practice in congress. And, perhaps even criminally, they have condoned the use of depleted Uranium on a wholesale basis as the weapon of choice -- even with the knowledge of its potential for serious, wide spread health impacts.&lt;br /&gt;&lt;br /&gt;During the initial war over Kuwait, over 2000 tons of depleted Uranium were spread over southern Iraq in the form of munitions. This has, by all indications, had a lasting effect on the soldiers that participated on the front lines of the Gulf War.  Of the initial force of 600,000, over 159,000 vets have qualified for VA disability status due to "Gulf War Syndrome".  These cases are being diagnosed, in growing numbers, as the result of exposure to U235.  The military defends its use of the metal, which is ultra dense and therefore a potent weapon against armored vehicles.  According to the Pentagon, U235 is a low grade source of radiation, and does not pose a significant health risk.&lt;br /&gt;&lt;br /&gt;Certainly, U235 is much less radioactive than U238 or many of the isotopes of Plutonium, both of which are used for fission weapons.  And it is also true that, of all the forms of radiation, U235 is an emitter of the weakest on the chart:  the alpha particle.  Alpha particles are composed of two protons and two neutrons bound together, and are released during the process of atomic decay.  Though these particles are relatively massive, they quickly lose their energy.  In fact, they can be stopped by only a thin layer of tissue.  So how does something so weak cause disease?&lt;br /&gt;&lt;br /&gt;The problem is that our munitions, upon impact, are designed to turn into a plasma of liquid metal and gas at extremely high temperatures.  In this reaction, the U235 forms into a ceramic-like composite of extremely small particles.  These particles are then ejected into the atmosphere by the initial explosion; later by wind, trucks, and helicopters.  For populations in the immediate vicinity of an explosion, they are directly inhaled.  But, as the half-life of U235 is around 4 billion years, these particles remain in an ecosystem for eternity, where they will be cycled and concentrated up the food chain.&lt;br /&gt;&lt;br /&gt;Once in the body, small particles of U235 dust emit radiation that kills or damages surrounding cells over periods of years.  The reported symptoms have been difficult to diagnose, simply because there is no regular pattern to where the U235 dust may lodge in the body.  Since U235 is not metabolized, the particles remain indefinitely causing a myriad of health issues, including cancers, thyroid problems, headaches, muscular atrophy, depression, nervous disorders, GI bleeding, etc.  But the damage hasn't been limited to those initially exposed.  A study of Gulf War veterans revealed that children born after their return had &lt;a href="http://faculty.washington.edu/chudler/alsnew.html"&gt;double&lt;/a&gt; the risk of neurological defects than the average.  Other reported defects include severe illnesses, missing eyes, blood infections, respiratory problems and fused fingers.&lt;br /&gt;&lt;br /&gt;Even if the evidence is not 100% conclusive, there is enough to warrant the halt of DU weapons programs.  The United Nations has issued several &lt;a href="http://prop1.org/2000/du/resource/000310un.htm"&gt;resolutions&lt;/a&gt; banning the use of any active nuclear materials in weapons.  The most recent in '96 was specifically meant to address the US Military's use of DU in the Gulf War.&lt;br /&gt;&lt;br /&gt;That the Bush administration would allow the men and women of our armed forces, people that have pledged their lives for our protection, to be exposed to a known radioactive hazard without their knowledge is unforgivable.  But an even more horrific story is waiting to be played out in Iraq for generations to come, as Iraqis must now live with an environment filled with tens of thousands of tons of U235.  Ten years after the initial Iraqi conflict, the rates of birth defects were being compared to Nagasaki and Hiroshima after the use of atomic bombs.  No one can say what will come in ten more years, but the worst of what observers have forecast is nothing short of a disaster.&lt;br /&gt;&lt;br /&gt;What will this do for our case?  Even if DU turns out to be completely safe, every birth defect, every cancer, every unexplainable sickness will be attributed to us -- for generations.  And if it is true, the condemnation will be resounding.  In either case, we have a public relations disaster, and one clear reason to which we can point if our conflict lasts for years to come.&lt;br /&gt;&lt;br /&gt;And what if we do remain at a state of war indefinitely?  What becomes of a nation after decades without due process of law, with eroding civil liberties or limited freedom of speech?  What becomes of a people that condone the systematic practice of torture over the span of generations?  And what happens when the cancer of a radicalist agenda inevitably spreads internally?  Torture and paranoia are rather blunt instruments.&lt;br /&gt;&lt;br /&gt;Obviously, the Bush administration hasn't thought this one all the way through.&lt;br /&gt;&lt;br /&gt;In order to win our peace, we need to fight our real enemies, starting with our own fear.   And once we're able to look at the world with an unfettered eye, we'll be able to make an honest effort to understand the real basis for suicide bombers, religious fundamentalism, and intolerance.  I guarantee you, it's not because they "hate our freedom".  Only with that knowledge will we be able to address the conditions that give rise to these radical philosophies. And in doing so, we make the world a safer place.&lt;br /&gt;&lt;br /&gt;To paraphrase the words of one of the &lt;a href="http://en.wikipedia.org/wiki/Mahatma_Gandhi"&gt;greatest men in history&lt;/a&gt;:  We must become the change we wish to see in the world.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Torture is wrong&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Suspending our civil liberties is wrong&lt;/li&gt;&lt;li&gt;Enabling a President to disregard centuries of wisdom and law is wrong&lt;/li&gt;&lt;/ul&gt;&lt;a href="http://www.house.gov/writerep/"&gt;Make your own voice heard&lt;/a&gt;.  Contact your representatives and let them know that you stand for the ideals of the US Constitution, the US Bill of Rights, and the Geneva Conventions.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-5370744034087166835?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/5370744034087166835/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=5370744034087166835' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/5370744034087166835'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/5370744034087166835'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2006/09/seeds-we-sow.html' title='The Seeds We Sow...'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-8767734027759849376</id><published>2006-09-14T10:12:00.000-07:00</published><updated>2006-09-14T10:25:55.185-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='technology'/><title type='text'>Making A Game Of Semantics</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://static.flickr.com/84/245185651_05c89bd448.jpg?v=0"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 94px; height: 119px;" src="http://static.flickr.com/84/245185651_05c89bd448.jpg?v=0" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The semantic web was all the hype in the first years of the new millennium.  Six years later, we're no closer to a working system than when the vision was first introduced. But what a vision it was. Semantic technologies wouldn't just change how we searched for information.  They also would set the stage for the evolution of user agents that could perform many of the complex organizational and scheduling tasks that now take hours of our day.  Imagine the following use cases:&lt;br /&gt;&lt;br /&gt;1.  You're in the market to buy new tires.  You tell your semantic web agent that you're looking for tires for your car, which is of a particular make and model.  The semantic agent "knows" what a car is, and what tires are.  And with these relationships, is able to look up your manufacturer's specs for tire models.  It then uses rules to query tire retailers for those models, and the associated pricing for each.  The result is the listing, ordered by price, for each retailer and their location, as well as reviews of the retailer by other customers.&lt;br /&gt;&lt;br /&gt;2.  You've suffered another sleepless night, and turn to your agent: "Find me a doctor within 10 miles specializing in sleep disorders that is on my insurance plan and has openings between today and next Tuesday between 3:00 and 5:00 PM".  Again, the agent is able to draw on a vast network of rules and associations, and is able to query for all needed information and interact with doctor's offices, insurance services, and scheduling services to complete its tasks.  The agent returns shortly with your appointment.&lt;br /&gt;&lt;br /&gt;3.  You're in a pinch, and you need a picture for a presentation that includes a father and son walking down a hiking trail.  The agent is able to interrogate image databases which have been annotated with information about each picture, and is able to retrieve several candidates.&lt;br /&gt;&lt;br /&gt;The key to the technology, and what has proved to be its biggest hurdle, is the capture of the associations and rules which would drive the system.  These rules would allow agents to make decisions, refine queries, and interact with disparate systems to complete tasks.  There are a variety of strategies and formats in which we can represent this data.  Making this data available isn't the problem.  It's the difficulty of getting that information in the first place. The sheer number of facts and relationships that we learn about our world by the time we're an adult is a staggering volume.  For a small team, attempting to gather and translate this amount of information into a knowledge base would be a futile effort. And for a system to be of real value, the knowledge from a great many people would need to be addressed.  Progress, so far, has been slow.&lt;br /&gt;&lt;br /&gt;But one researcher, &lt;span class="normal"&gt;Luis Von Ahn,&lt;/span&gt; has come up with some interesting strategies to help get us much closer to the goal. His contribution has been the development of &lt;span style="font-style: italic;"&gt;Verification Games&lt;/span&gt;.  By turning the act of labeling or defining our world into a game, Von Ahn has found a way to entice millions to help with the task of capturing knowledge.   Von Ahn's first proof of concept, &lt;a href="http://www.espgame.org/"&gt;The ESP Game&lt;/a&gt;, pairs users together in a cooperative effort to label images available on the net.  As each image is shown, contestants provide label suggestions.  When both players guess the same label, points are awarded.  After time, the data can be used to compile the most popular labels for each photograph, results that would be of great value to search engines.&lt;br /&gt;&lt;br /&gt;People have found the game surprisingly addictive.  The reason for this is not simply due to our cultural love of trivia, but is also the result of the dynamics of symmetry.  Von Ahn refers to ESP as a Symmetric Verification Game, since each contestant holds the same role in game play.  Since each participant's input is no more or less valid than that of their pair, the platform provides a neutral environment for free idea association.  This results in game play that is often revealing of our culture, and of ourselves.&lt;br /&gt;&lt;br /&gt;Realizing that he had his finger on a promising concept, Von Ahn set his sights on a more specific application of image labeling.  While general labels are helpful, what would be of real value is to know the content of each photograph. Von Ahn adapted the model of ESP to produce &lt;a href="http://peekaboom.org/"&gt;Peekaboom&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Peekaboom is an Asymmetric Verification Game, where two distinct roles are created:  The "peeker" and a "boomer".  The boomer is presented with an entire image, along with a word associated with content in the image.  On each round during game play, the boomer clicks on areas of the image described by the word.  The peeker is shown only a small region of the image around where the boomer clicks, and is asked to guess the relevant word.  Each time the peeker fails to guess the word, the boomer reveals an additional area of the image.  The result is a detailed map of the image, associating image areas to content: a gold mine for search engines.&lt;br /&gt;&lt;br /&gt;But for the more esoteric goals of the semantic web, more than content labelling is required.  What is needed is a comprehensive set of rules and statements, essentially &lt;a href="http://en.wikipedia.org/wiki/Axioms"&gt;axioms&lt;/a&gt; for a &lt;a href="http://en.wikipedia.org/wiki/Predicate_logic"&gt;predicate logic&lt;/a&gt; based system, that can enable agents to understand core concepts about our world and make decisions.  Von Ahn's concept for gathering axioms is an Asymmetric Verification Game he's titled &lt;a href="http://portal.acm.org/citation.cfm?id=1124784&amp;dl=ACM&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;coll=&amp;CFID=15151515&amp;amp;CFTOKEN=6184618"&gt;Verbosity&lt;/a&gt;.  Like Peekaboom, Verbosity supports two distinct roles.  In Verbosity's context, there is a "narrator" and a "guesser".  In game play, the narrator is given a key word, along with a set of statement templates about the word.   For each round, the narrator would complete a statement, which would then be shown to the guesser.  If the guesser fails to come up with the key word, the round advances, and the narrator completes the next statement.&lt;br /&gt;&lt;br /&gt;The types of templates to be used for statements are a key aspect of the game, as they constrain user input to provide useful data on specific categories, as well as to prevent ambiguous statement definitions.  Possible statement templates could be:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Is near to _____&lt;/li&gt;&lt;li&gt;It has a _____&lt;/li&gt;&lt;li&gt;Is a kind of _____&lt;/li&gt;&lt;li&gt;Is used for _____&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Although work on Verbosity has yet to be completed, his efforts have already attracted attention from the search industry, as well as the artificial intelligence research community.  In his presentation to the UW CS department, Von Ahn was candid about his success of developing a business model out of verification games (still tentative), as well as supportive of the efforts of others along these lines.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.openmind.org/"&gt;Open Mind Initiative&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://labelme.csail.mit.edu/"&gt;LabelMe&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.20q.net/"&gt;20Q.net&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;What Von Ahn and others in this field have done is revolutionary.  In linking game play and knowledge collection, they have created a powerful new approach to building the infrastructure from which semantic web components may evolve.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-8767734027759849376?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/8767734027759849376/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=8767734027759849376' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/8767734027759849376'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/8767734027759849376'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2006/09/making-game-of-semantics.html' title='Making A Game Of Semantics'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-2248117657020866370</id><published>2006-09-11T19:15:00.000-07:00</published><updated>2006-09-11T23:13:57.277-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>First Encounter with JAX-WS</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/8146/862162521303217/1600/java.0.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger2/8146/862162521303217/320/java.0.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;With our latest Java project we decided to make some changes.  First, we decided to adopt a new application server platform, an open source project named Glassfish.  And since we're developing a complex web application with the need for web services, we opted for the JAX-WS framework packaged with Glassfish.  The JAX-WS framework is based on the JSR224 specification, which was introduced in 2004.&lt;br /&gt;&lt;br /&gt;Initial review revealed some promising facts.  First, the JAX-WS philosophy has been to simplify the API where ever possible.  There remain some that&lt;a href="http://rmh.blogs.com/weblog/2006/03/jaxws_is_bad_ba.html"&gt; complain&lt;/a&gt; the API is too still complex, but it's clear that it's an improvement over JAX-RPC. Second, the effort is an evolution of the original  JAX-RPC code base, meaning that JAX-WS is built on lessons learned.  Third, it's based on annotations, which can be a huge improvement over XML descriptors in the right context. In this particular case, it's a great match.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Java Annotations&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;For those unfamiliar to the 1.5 environment, Java now allows class and method declarations to be "annotated" with with meta data classes.   Annotations allow configuration or properties that were once defined in separate XML descriptors or specially formatted comments to be established as compilable entities.  This benefits development in a number of ways.  I find it much easier to browse annotation class definitions than DTDs or XML Schemas.  There's also the benefit of type checking and compile-time errors when used incorrectly.  But the most beneficial aspect is, by far, is the decreased development effort to produce a working system.&lt;br /&gt;&lt;br /&gt;Annotations are right there in the code along with the classes and methods they configure.  This eliminates an entire layer of files that must be referenced and maintained along with the Java code.  One detraction is that, to some extent, this limits code reuse.  In combining code and descriptors, annotations couple classes to a specific environment or task.  But, in the case of EJB3 and JAX-WS, the descriptors are still available for use.   Annotations are simply a short cut.&lt;br /&gt;&lt;br /&gt;Overall, JAX-WS achieves its goal of simplifying the creation of web services.  You can easily generate a full web service starting with nothing more than a stateless EJB3 session class and a special ant target to invoke &lt;span style="font-style: italic;"&gt;wsgen&lt;/span&gt;.  Generating web service clients is just as easy.  Point the JAX-WS utility, &lt;span style="font-style: italic;"&gt;wsimport,&lt;/span&gt; at a WSDL and all the code you'll need will be automatically generated.&lt;br /&gt;&lt;br /&gt;This kind of functionality isn't new.   In fact, JAX-RPC frameworks like Apache's Axis have done this for years.  What's different with JAX-WS?  For one, the JAX-WS team's simplification efforts make a developer's job much easier. For those with sophisticated security concerns, JAX-WS supports JSR-105, the Java XML Digital Signature API (JAX-DSA), for validating XML based signatures.  An XML Signature can be used to secure your data and provide data integrity, message authentication, and signer authentication.   There are some other optimizations, including a spec for message compression.  But, by far, the most important improvements have been focused on &lt;a href="http://blogs.sun.com/sameert/category/Java"&gt;performance&lt;/a&gt;.  Simplification has resulted in a reduction in the lines of code required for execution, and therefore services capable of handling higher volumes of requests.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Creating The Client&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In our application, since the web service is protected by SSL, we opted to send credentials through SOAP headers, instead of x509 certs or JAX-DSA.  To generate our client, we first ran wsimport, using the remote services WSDL address as the WSDL source parameter.  Since the remote service was .Net based, we needed to include the additional parameter "-extension" to enable successful parsing.  The actual command looked similar to:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;wsimport -verbose -extension -s /path/to/source/root http://url-to?wsdl&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The result was the set of objects necessary to communicate with the remote service.  There was one wrinkle, however.  Though wsimport recognized SOAP headers in the WSDL and generated encapsulating objects for them, it failed to generate client methods to accept the header object.  After some initial research, we started down the route of a SOAPHandler, a callback API that allows access to the entire SOAP message.  It was quickly evident that there had to a better way to go.&lt;br /&gt;&lt;br /&gt;And there certainly was.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;SOAP Headers&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It turns out that the &lt;span style="font-style: italic;"&gt;wsimport&lt;/span&gt; spec allows for a configuration file to define special constructs for SOAP headers if they are not automatically generated by the default &lt;span style="font-style: italic;"&gt;wsimport&lt;/span&gt; behavior.  If you intend to have an automated compilation process, this is definitely an important step to take since it eliminates the need to modify the generated code after each iteration.  If you want to take a quick and dirty approach, and modify the generated client API to include SOAPeaders, it's actually quite easy.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;@WebParam&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The key is the WebParam annotation, which provides a boolean argument, "header", to specify whether the parameter is to be placed in the SOAP header of the message.  In our case, we added an extra parameter to each of the client method definitions generated by &lt;span style="font-style: italic;"&gt;wsimport&lt;/span&gt;.  The following code shows examples of the original generated code, and the signatures after our modification (trimmed for brevity):&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Original&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;@WebService&lt;br /&gt;public interface PartnerGatewaySoap {&lt;br /&gt;@WebMethod @WebResult @RequestWrapper @ResponseWrapper&lt;br /&gt;public ClientImportResult createClient(&lt;br /&gt;   @WebParam(name="clientImport")&lt;br /&gt;   ClientImport clientImport);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;After Modification&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;pre&gt;@WebService&lt;br /&gt;public interface PartnerGatewaySoap {&lt;br /&gt;  @WebMethod @WebResult @RequestWrapper @ResponseWrapper&lt;br /&gt;  public ClientImportResult createClient(&lt;br /&gt;      @WebParam(name="clientImport")&lt;br /&gt;      ClientImport clientImport,&lt;br /&gt;      &lt;span style="color: rgb(51, 0, 153);"&gt;@WebParam(name="AuthHeader", header=true, partName="AuthHeader")&lt;/span&gt;&lt;br /&gt;      AuthHeader authHeader);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/span&gt;&lt;br /&gt;It was as simple as that.  Now, when calling the method, the additional parameter is sent via the SOAP header, and we're off and running.  It is important to note that when creating clients for services produced with JAX-WS, the &lt;span style="font-style: italic;"&gt;wsimport&lt;/span&gt; utility generates the correct client method signatures for SOAP headers.  I am assuming that the issues encountered have been due to the fact that the remote service is .Net based, and that there are subtle differences in the way the two frameworks interpret WSDLs.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Creating the Service&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;For our local web service, we started with the generation of a @WebService class to define the methods that will be made available to clients.  The following is an example of our initial class, again modified for brevity:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;pre&gt;@Stateless @WebService&lt;br /&gt;public class WebServiceImpl&lt;br /&gt;{&lt;br /&gt;  Log log = LogFactory.getLog(WebServiceImpl.class);&lt;br /&gt;&lt;br /&gt;  @WebMethod(action="urn:setValues")&lt;br /&gt;  public void setValues(&lt;br /&gt;      @WebParam(name="firstParam", partName="FirstParam")&lt;br /&gt;      Integer firstParam,&lt;br /&gt;      @WebParam(name="secondParam", partName="SecondParam")&lt;br /&gt;      Integer secondParam,&lt;br /&gt;      @WebParam(name="authHeader", header=true, partName="AuthHeader") &lt;br /&gt;      AuthHeader authHeader) {&lt;br /&gt;          log.debug("Reached setValues");&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/span&gt;Once the class was compiled, we then executed the &lt;span style="font-style: italic;"&gt;wsgen&lt;/span&gt; utility to generate all of the auxiliary classes required for the framework.  The command line statement to execute &lt;span style="font-style: italic;"&gt;wsgen&lt;/span&gt; had the following form:&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;wsgen -verbose  -s /path/to/source/root -cp /class:/path.jar com.your.WebServiceImpl&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Other than compiling and jarring up the resulting classfiles for deployment, there's not much more to do.  Glassfish, upon the deployment of the webservice class, will detect the &lt;span style="font-style: italic;font-family:georgia;" &gt;@WebService&lt;/span&gt; annotation, and in turn, autogenerate and deploy a WAR component for the service.&lt;br /&gt;&lt;br /&gt;So far, I've been impressed with the JAX-WS framework, and will continue using it when project requirements call for web services.&lt;br /&gt;&lt;br /&gt;For more information, see the project pages for both &lt;a style="font-family: georgia;" href="https://glassfish.dev.java.net/"&gt;Glassfish&lt;/a&gt; and &lt;a style="font-family: georgia;" href="https://jax-ws.dev.java.net/"&gt;JAX-WS&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-2248117657020866370?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/2248117657020866370/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=2248117657020866370' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/2248117657020866370'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/2248117657020866370'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2006/09/first-encounter-with-jax-ws.html' title='First Encounter with JAX-WS'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-252404335519035162</id><published>2006-09-08T22:42:00.000-07:00</published><updated>2008-03-24T16:25:07.721-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='science'/><title type='text'>Cancer And Evolution</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/8146/862162521303217/1600/met.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 98px; height: 98px;" src="http://photos1.blogger.com/blogger2/8146/862162521303217/320/met.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;In the search for the fountain of life, we've reached another milestone.  We're still far from the goal, and that's probably a very good thing.  For one, we're generations away from interstellar travel, journeys that would require hundreds if not thousands of years to complete.  And to consider introducing dramatic changes on the longevity of our species with our current population would be unthinkable.  But regardless of the outcome, recent findings have brought new light in a surprising direction:  The role of cancer in our evolution.&lt;br /&gt;&lt;br /&gt;In a complex organism like a human being, a full &lt;a href="http://en.wikipedia.org/wiki/DNA"&gt;DNA&lt;/a&gt; sequence can be over 2 billion base pairs. These chains are remarkably frail for holding such an enormously long sequence of data. To visualize this, imagine a thin strip of paper as a strand of DNA.  If the average sheet of paper is .18 millimeters in thickness, our chain would have a width of little more than it's thickness, but would require a length of over 364 km.   Now just imagine that any rip or tear along this length could have disastrous results.&lt;br /&gt;&lt;br /&gt;As a software developer, DNA seemed a natural fit for the &lt;a href="http://en.wikipedia.org/wiki/Von_Neuman"&gt;Von Neuman&lt;/a&gt; computing model, albeit an extraordinary complex one.  John Von Neuman was the first to see computer memory as a homogeneous carrier for both data and computing instructions, and is the recognized father of the digital computing model.  For years, genetic researchers have been analyzing our genetic sequence for known enzymes, transmitters -- proteins that are the data of biology. These are relatively easy to find since the data sequences in DNA directly correspond to their products.  Far too often, the remaining unrecognizable base pairs had been attributed to garbage.  Only recently have geneticists come to understand more about the instruction set contained within our DNA sequence, and the language in which these instructions are encoded.&lt;br /&gt;&lt;br /&gt;As with computing systems, there exists within DNA the mechanisms to detect and correct errors that occur in the code. A cell's sequence is assaulted from a variety of fronts, including oxidation reactions, errors in division, viruses injecting foreign sequences, and cosmic radiation.  In most cases, the cell either repairs itself, or issues a command for self-destruction (&lt;a href="http://en.wikipedia.org/wiki/Apoptosis"&gt;apoptosis&lt;/a&gt;).  However, damage to even these error correcting mechanisms is an eventual certainty.  In the most catastrophic case, a cell is damaged just enough to disable its error detection and correction mechanisms, preventing both correct cellular function or cell suicide.  This is the blueprint for cancer.&lt;br /&gt;&lt;br /&gt;The tie between cancer and senescence turns out to have many connections.  Almost a decade ago, the discovery of the &lt;a href="http://en.wikipedia.org/wiki/Telomerase"&gt;telomere&lt;/a&gt; was announced, and with it our understanding of why our cells stop dividing.   When a cell divides in the process of &lt;a href="http://en.wikipedia.org/wiki/Mitosis"&gt;mitosis&lt;/a&gt;, each of the &lt;a href="http://en.wikipedia.org/wiki/Chromosome"&gt;chromosomes&lt;/a&gt; are bound and stretched out as long chains, which are then split down the middle, much like a zipper being opened.   These halves are then shared between the copy and the original and restored. The enzyme performing the splitting requires a bonding station at the end of each chain, a sequence of DNA called a telomere.  Each time a division occurs, a part of the telomere sequence is discarded.  After a number of divisions, the telomere is too short for enzymatic docking, and cell division becomes impossible.  I find it curious that the length of a telomere appears to be optimized by evolution to be just long enough to support division until severe genetic damage becomes a statistic certainty.&lt;br /&gt;&lt;br /&gt;If we were limited to only the mature cells in our bodies and their ability to divide, we would have a short lifespan of a few years, perhaps only a few months. &lt;a href="http://en.wikipedia.org/wiki/Stem_cells"&gt;Stem cells&lt;/a&gt; make up a crucial, secondary line in the replenishment of cells in our body.   These immortal precursor cells are held in reserve in protected areas of the body such as bone marrow, and are released over time.  Once activated, stem cells produce offspring that differentiate into specific cell types.  It's this flexibility that is so prized by researchers, as stem cells could be applied to heal spinal injuries, stave off demensia, or heal damaged hearts. For research into curing disease and healing the body, stem cells represent the greatest new frontier of medicine.&lt;br /&gt;&lt;br /&gt;With such power comes not only the ability to heal, but also the power to destroy.  &lt;a href="http://www.cshl-symposium.org/doi/abs/10.1101/sqb.2005.70.057#search=%22cancer%20stem%20cell%20ink4%22"&gt;New research&lt;/a&gt; has revealed the existence of a gene, p16-Ink4a, which produces a protein, Ink4.  The protein acts as a chemical messenger to inhibit the function of stem cells.  It turns out that the older we get, the more Ink4 is produced.  In individuals nearing the end of their lifespan, the levels of Ink4 are 10-fold that produced in youths.  As the levels of Ink4 increase, stem cells stop dividing and eventually become completely dormant.  We grow old, deteriorate, and die largely because our stem cells, though ageless, simply quit working.&lt;br /&gt;&lt;br /&gt;But why?  Dr. Norman E. Sharpless of the University of North Carolina sought the explore this question by genetically engineering mice lacking the p16-Ink4a gene.  Though these mice experienced uninhibited stem cell activity, they were far from immortal.  Instead, they developed fatal cancers after only a year.  This research suggests a link between the development of certain types of cancer and stem cells, a tie that is being strengthened by &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=cancer+%22stem+cell%22&amp;amp;btnG=Google+Search"&gt;oncologists&lt;/a&gt; around the world as they find stem cells to be the cause of a growing number of cancer types.&lt;br /&gt;&lt;br /&gt;What is now being assumed is that stem cells, like any other, are vulnerable to damage and malfunction, and that our biology has developed a mechanism to cope with this by essentially shutting them down.  For those wishing to extend human life, the implications of Ink4 are a sign of a tough road ahead.  Before we can help people to live longer, we'll need to solve an issue that life, after billions of years, has only managed to limit.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-252404335519035162?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/252404335519035162/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=252404335519035162' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/252404335519035162'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/252404335519035162'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2006/09/cancer-and-evolution.html' title='Cancer And Evolution'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-6363368013510341355</id><published>2006-09-05T20:47:00.000-07:00</published><updated>2008-12-09T14:46:32.616-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='philosophy'/><category scheme='http://www.blogger.com/atom/ns#' term='literature'/><title type='text'>Understanding The Nature of Myth</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_7XDJakniA48/RsudOsNN9kI/AAAAAAAAAG4/jXU3SDRbpvY/s1600-h/jcampbell.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_7XDJakniA48/RsudOsNN9kI/AAAAAAAAAG4/jXU3SDRbpvY/s320/jcampbell.jpg" alt="" id="BLOGGER_PHOTO_ID_5101343878637549122" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Throughout my life, I find myself drawing upon the wisdom of &lt;a href="http://en.wikipedia.org/wiki/Joseph_Campbell"&gt;Joseph &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;Campbell&lt;/span&gt;&lt;/a&gt;. Joseph was fascinated by myth, the stories that cultures use to capture the human experience, communicate morality, or embody their greatest hopes or fears.&lt;br /&gt;&lt;br /&gt;In his youth, he was drawn to the legends of Native American culture. That fascination then grew to a curiosity of all the world's legends. In cataloging these tales, Campbell was able to build a taxonomy of human story telling. Given that there are fundamental elements of human experience that transcend culture, it should be of little surprise that Campbell was able to identify recurring symbols and figures and distill those down to &lt;a href="http://en.wikipedia.org/wiki/Archetypes"&gt;archetypes&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;As an aspiring writer, I have found his book &lt;a style="font-style: italic;" href="http://www.amazon.com/gp/redirect.html?link_code=ur2&amp;amp;tag=httptapestrbl-20&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;location=%2FHero-Thousand-Faces-Mythos-Books%2Fdp%2F0691017840%2Fsr%3D8-1%2Fqid%3D1157078002%2Fref%3Dpd_bbs_1%3Fie%3DUTF8%26s%3Dbooks"&gt;The Hero with a Thousand Faces&lt;/a&gt; not just thought provoking, but an insightful guide to developing plot structure. All of our great stories involve some element of the hero myth: an underdeveloped, perhaps flawed character goes out into the world to face insurmountable odds, square off against powerful enemies or challenges, and undergoes an evolution that results in their attainment of hero status. This formula is the basis for all legends that have stood the test of time and one that Campbell explores in detail. If you desire to write timeless literature, Campbell's analysis is a good place to start.&lt;br /&gt;&lt;br /&gt;There's other &lt;a href="http://www.context.org/ICLIB/IC12/Campbell.htm"&gt;conclusions&lt;/a&gt; of Campbell's that are of far more value to humanity than a guide to comparative literature. In his study of archetypes, Campbell covered many of the religions on this planet, grew to understand each on its own merit, and discovered in each a common set of figures and principles. What he reasoned was that these stories were not to be taken &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_1"&gt;literally&lt;/span&gt;, but as &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_2"&gt;metaphor&lt;/span&gt; on how we should live our lives.  &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_3"&gt;Literal&lt;/span&gt; interpretation leads to many of the inter-cultural problems we face, whether it be strapping on a bomb to &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_4"&gt;indiscriminately&lt;/span&gt; take the lives of others, or blaming homosexuals and feminists for natural disasters.&lt;br /&gt;&lt;br /&gt;What I take from Campbell's editorials is that God created us all, that we all are capable of comprehending the reality of which we are apart, and that we are only foolish if we opt for one particular creed or religion as the absolute truth. Each has its faults and its moments of clarity. But, in the end, they are all &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_5"&gt;metaphor&lt;/span&gt;. To Campbell, this in no way diminished the sense of spirituality or the role of faith in our society. Conversely, a healthy sense of objectivism only serves to uplift humanity, enabling us to foster empathy for other cultures and reach the heights that God intended.&lt;br /&gt;&lt;br /&gt;If we are to grow beyond the conflict of our current generation, find peace in areas dominated by religious strife, understanding the nature of myth is a good first step.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-6363368013510341355?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/6363368013510341355/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=6363368013510341355' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/6363368013510341355'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/6363368013510341355'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2006/09/understanding-nature-of-myth.html' title='Understanding The Nature of Myth'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_7XDJakniA48/RsudOsNN9kI/AAAAAAAAAG4/jXU3SDRbpvY/s72-c/jcampbell.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-6109973935431450595</id><published>2006-09-02T20:09:00.000-07:00</published><updated>2008-03-24T16:27:06.564-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='science'/><title type='text'>Cracks in the Foundation of String Theory</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://people.cs.uchicago.edu/%7Embw/astro18200/calabi-yau-space-small.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 146px; height: 134px;" src="http://people.cs.uchicago.edu/%7Embw/astro18200/calabi-yau-space-small.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;For nearly a century, a large number of the world's physicists have been dedicating themselves to the search for the &lt;/span&gt;&lt;a style="font-family: georgia;" href="http://en.wikipedia.org/wiki/Theory_of_everything"&gt;Theory of Everything&lt;/a&gt;&lt;span style="font-family:georgia;"&gt; (TOE):  A single, cohesive theory that can express all of the &lt;/span&gt;&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_0"  style="font-family:georgia;"&gt;phenomena&lt;/span&gt;&lt;span style="font-family:georgia;"&gt; of the universe.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;Such a &lt;/span&gt;&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_1"  style="font-family:georgia;"&gt;theory&lt;/span&gt;&lt;span style="font-family:georgia;"&gt; should account for gravity, magnetism, electromagnetic radiation, thermodynamics, the strong and weak atomic forces as well as every particle in nature, regardless of the scale with which we choose to inspect matter. Currently, we have two distinct sets of theories that are used to describe the behavior of matter, each dependent on scale.  On one side, we have Einstein's theories of Special and General Relativity to model the macro world.  On the other, we have Quantum Mechanics, which explains the &lt;/span&gt;&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_2"  style="font-family:georgia;"&gt;phenomena&lt;/span&gt;&lt;span style="font-family:georgia;"&gt; seen when exploring the subatomic, micro world.  Unfortunately, the theories are specific to scale, and one set of rules can not be applied interchangably.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;Much is at stake.  Some believe that the discovery of a definitive TOE will provide insight into even more fundamental questions about our existence or lead to the discovery of fantastic new technologies.  Most, however, are simply unhappy with two disparate theories, Quantum Mechanics and S/G Relativity, to describe nature.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;For the last 20 years, one contender, &lt;/span&gt;&lt;a style="font-family: georgia;" href="http://en.wikipedia.org/wiki/String_theory"&gt;String Theory&lt;/a&gt;&lt;span style="font-family:georgia;"&gt;, has grown from fringe group of &lt;/span&gt;&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_4"  style="font-family:georgia;"&gt;advocates&lt;/span&gt;&lt;span style="font-family:georgia;"&gt; to an entrenched institution.  String Theory is based on the romantic ideal that all matter is the result of interactions of two dimensional, vibrating strings.  As a guitar player, I have to admit that the idea does have an attractive quality.  As a lay-physicist, the concept squared away with much of the higher level physics courses I've taken.  After a certain point, the wave function became the dominant focus of study;  at a certain level, all mater and energy can be modeled as waves, or vibrations.  Just thinking of the universe as a great chorus of harmony and melody is a pleasure.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;There's a few twists with the equations of String theory that, at first glance, seem a bit outrageous.  For starters, it's not verified through either observation or experimentation.  Most scientific theories are the result of cycles of observation, hypothesis, and experiment.  There have been many exceptions, where theoretical explorations have driven the process, putting the hypothetical cart before the horse.  One such case, the search for &lt;/span&gt;&lt;a style="font-family: georgia;" href="http://livefromcern.web.cern.ch/livefromcern/antimatter/history/AM-history01.html"&gt;anti-matter&lt;/a&gt;&lt;span style="font-family:georgia;"&gt;, was entirely the result of Dr. Dirac's examination of the existing equations governing the &lt;/span&gt;&lt;a style="font-family: georgia;" href="http://en.wikipedia.org/wiki/Standard_model"&gt;Standard Model&lt;/a&gt;&lt;span style="font-family:georgia;"&gt; of Quantum Mechanics, and the postulation of additional particles based on the concept of symmetry.  To simplify the mathematics, we can assume the equation &lt;/span&gt;&lt;span style="font-family:Arial,Helvetica,sans-serif;"&gt;x&lt;sup&gt;2&lt;/sup&gt;=4 &lt;/span&gt;&lt;span style="font-family:georgia;"&gt;as representative. The equation has two roots, x = 2 and x = -2.  Until Dirac, it was assumed that the negative root was impossible, a mathematical &lt;/span&gt;&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_5"  style="font-family:georgia;"&gt;anomaly&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;.  Dirac chose to explore what the negative root would look like applied to the standard model, and the concept of anti-matter was born.  Once his papers were published, it took the 3 years before the scientific community managed to develop experiments that confirmed Dirac's hypothesis.  It turned out that a hunch based on the concept of mathematical symmetry was true.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;With anti-matter, Dirac asked the scientific community to swallow a fairly fundamental change in the world of particle physics.  If Dirac's theory was true, the number of particles in the Standard Model &lt;/span&gt;&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;span style="font-family:georgia;"&gt; would double.  This probably wasn't easy for some to accept back in 1933.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;Now, with String Theory, it's advocates are suggesting an even more fantastic vision.  The equations governing strings need 11 dimensional mathematics in order to produce valid results.  Of these dimensions, 3 are spatial, 1 is time, and the rest are...  Somewhere.  The most popular approach has been to wrap these extra dimensions into &lt;/span&gt;&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_6"  style="font-family:georgia;"&gt;infinitesimally&lt;/span&gt;&lt;span style="font-family:georgia;"&gt; small coils, called "&lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Calabi-Yau_manifold"&gt;&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_7"  style="font-family:georgia;"&gt;Calabi&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;-&lt;/span&gt;&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_8"  style="font-family:georgia;"&gt;Yau&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:georgia;"&gt;" spaces after the originators of the geometry.  These dimensions exist everywhere, but have, essentially, zero length in the standard dimensions we currently conceive.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;Even thinking of time as a dimension is a stretch, but we've had nearly a century to become accustomed to the notion.  But 7 extra dimensions can stagger the mind.  Certainly, mathematical constructs exist to support the calculations, but to try and visualize these dimensions as a real world manifestation is nearly impossible.  And that is probably one of the theory's main weaknesses.  It is exceedingly difficult to construct experiments based on concepts that one can hardly visualize.  Even after 40 years of work, the field has yet to provide a single experiment to prove or disprove the work done so far.  This is a work that has existed in an experimental vacuum for far too long, and two new books with long winded titles, referenced below, have been published to underscore that sentiment.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;Another difficulty:  The math.  It is said that only a "handful" of people on the planet are able to comprehend with fullness Einstein's theories of Special and General Relativity.  With String Theory, it may be that no one is fully capable of this degree of understanding.  Difficult equations are certainly not a metric for the success of a theory, but they certainly can cap the rate of progress along hypothetical lines of questioning.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;Despite these two hurdles, the promise of a TOE is too great to deny.  But without experimental support, the spectre of dogma has started to creep in.  In some cases young aspiring &lt;/span&gt;&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_9"  style="font-family:georgia;"&gt;physicists&lt;/span&gt; have felt pressured to go into ST, believing that advancement of the theory a requirement to professorship.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;But there are other players in the game.  One promising upstart, &lt;/span&gt;&lt;a style="font-family: georgia;" href="http://en.wikipedia.org/wiki/Quantum_loop_gravity"&gt;Loop Quantum Gravity&lt;/a&gt;&lt;span style="font-family:georgia;"&gt;, has recently enjoyed some good press.  Originally formulated to provide a theory of gravity, the equations have been expanded to include some of the forces and particles defined in the Standard Model.  Advances have only begun to develop momentum, so it's too early to tell if &lt;/span&gt;&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_10"  style="font-family:georgia;"&gt;LQG&lt;/span&gt;&lt;span style="font-family:georgia;"&gt; can unseat String Theory in terms of &lt;/span&gt;&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_11"  style="font-family:georgia;"&gt;mind share&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;.  But as a theory, &lt;/span&gt;&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_12"  style="font-family:georgia;"&gt;LQG&lt;/span&gt;&lt;span style="font-family:georgia;"&gt; has implications that are just as &lt;/span&gt;&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_13"  style="font-family:georgia;"&gt;fascinating&lt;/span&gt;&lt;span style="font-family:georgia;"&gt; as its competitors.&lt;br /&gt;&lt;br /&gt;In &lt;/span&gt;&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_14"  style="font-family:georgia;"&gt;LQG&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;, matter and the forces of nature are the result of folding of &lt;/span&gt;&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_15"  style="font-family:georgia;"&gt;space time&lt;/span&gt;&lt;span style="font-family:georgia;"&gt; itself.&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;  According to David &lt;/span&gt;&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_16"  style="font-family:georgia;"&gt;Castelvecchi&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;, the web editor at the American &lt;/span&gt;&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_17"  style="font-family:georgia;"&gt;Institute of&lt;/span&gt;&lt;span style="font-family:georgia;"&gt; Physics in Washington D.C., "If electrons and quarks -- and thus atoms and people -- are a consequence of the way space-time tangles upon itself, we could be nothing more than a bundle of stubborn dreadlocks in space."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;Perhaps a tangible piece of proof for any of the theories may come when the &lt;/span&gt;&lt;a style="font-family: georgia;" href="http://en.wikipedia.org/wiki/Large_Hadron_Collider"&gt;Large&lt;/a&gt; &lt;a style="font-family: georgia;" href="http://www.seedmagazine.com/news/2006/07/cern_discovery_for_discoverys.php"&gt;Hadron&lt;/a&gt;&lt;span style="font-family:georgia;"&gt; &lt;/span&gt;&lt;a style="font-family: georgia;" href="http://lhc.web.cern.ch/lhc/"&gt;&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;Collider&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:georgia;"&gt; finally comes on-line.  The energies produced at the &lt;/span&gt;&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_19"  style="font-family:georgia;"&gt;LHC&lt;/span&gt;&lt;span style="font-family:georgia;"&gt; should be great enough to tap into predicted effects of String Theory's extra dimensions, perhaps resulting, in the conclusive case, of the formulation of mini&lt;/span&gt;&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_20"  style="font-family:georgia;"&gt; black holes&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;.  These singularities should evaporate into a shower of particles after only a brief moment, an event which the &lt;/span&gt;&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_21"  style="font-family:georgia;"&gt;LHC's&lt;/span&gt;&lt;span style="font-family:georgia;"&gt; detectors have been built to recognise.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;So, all eyes in the particle physics community are on the &lt;/span&gt;&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_22"  style="font-family:georgia;"&gt;LHC&lt;/span&gt;&lt;span style="font-family:georgia;"&gt; and the secrets it may reveal.  If no definitive proof can be found to support String Theory after the evidence has been collected, it may mean the end of a beautiful, though contrived model of our universe.&lt;/span&gt;&lt;br /&gt;&lt;ul style="font-family: georgia;"&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/gp/redirect.html?link_code=ur2&amp;amp;tag=httptapestrbl-20&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;location=%2FTrouble-Physics-String-Theory-Science%2Fdp%2F0618551050%2Fsr%3D8-1%2Fqid%3D1157428870%2Fref%3Dpd_bbs_1%3Fie%3DUTF8%26s%3Dbooks"&gt;The Trouble With Physics: The Rise of String Theory, The Fall of A Science, And What Comes Next&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/gp/redirect.html?link_code=ur2&amp;amp;tag=httptapestrbl-20&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;location=%2FNot-Even-Wrong-Failure-Physical%2Fdp%2F0465092756%2Fsr%3D1-1%2Fqid%3D1157429234%2Fref%3Dpd_bbs_1%3Fie%3DUTF8%26s%3Dbooks"&gt;Not Even Wrong:  The Failure of &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_23"&gt;String&lt;/span&gt; Theory And The Search for Unity in Physical Law&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.arxiv.org/abs/hep-ph/0503213"&gt;Bilson-Thompson's original paper on LQG published on Arxiv.org&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.arxiv.org/abs/hep-th/0603022"&gt;Smolin, Markopoulou, and Bilson-Thompson produce the lightest particles of the Standard Model with LQG on Arxiv.org&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-6109973935431450595?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/6109973935431450595/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=6109973935431450595' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/6109973935431450595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/6109973935431450595'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2006/09/cracks-in-foundation-of-string-theory.html' title='Cracks in the Foundation of String Theory'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-458777446675623350</id><published>2006-08-30T13:22:00.000-07:00</published><updated>2006-08-30T14:26:59.798-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>EJB3 Wishlist</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://beanworldwide.com/images/250px-Coffee_cup.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 125px; height: 98px;" src="http://beanworldwide.com/images/250px-Coffee_cup.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;J2EE persistence has continued to mature over the past few years with the evolution of &lt;a href="http://media.techtarget.com/tss/BeJUG/EJB3/index.html"&gt;EJB3&lt;/a&gt;.  EJB3 is a huge improvement over its predecessor, EJB2, in a number of areas.  First, EJB3 has done away with the redundant class structures for remoting, as well as the practice of requiring meta data declarations in descriptors.   Instead, EJB3 has been designed around annotations to provide such configurations as transaction models or entity table affinities.  Second, EJB3 has a sophisticated Object Relational Mapping layer, capable of supporting a variety of inheritance strategies.  This allows the business objects in an application to be modeled on hierarchies, helping to normalize data and enhance code reuse, and for these models to be mapped to a database schema.&lt;br /&gt;&lt;br /&gt;Some may disagree with the annotation model, but the reality is that EJB3 has resulted in a 50% reduction in effort required to implement middle tier designs compared to most EJB2 efforts.  And the simplification of the model has resulted in an equivalent decrease in maintenance costs.&lt;br /&gt;&lt;br /&gt;However, our team did run into some issues with the API, and these resulted in a small wish list that I'd like to put to the EJB3 standards committee.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Better Support for Large Batches&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;Specifically with persisting entities, the performance of EJB3 can be significantly compromised in certain situations.  In our case, we used Oracle for the back end database, and were developing a system that in some edge cases, needed to create at least 100k records or more in the span of a single HTTP transaction.  Oracle does not feature auto-increment fields, so primary key generation is handled through a sequence, which is a synchronized resource of the Oracle server.  This sequence ended up being the Achilles heel of the system with regard to batching large sets of entites.&lt;br /&gt;&lt;br /&gt;The reason for this was due to the practice of issuing two queries for every entity sent to the EntityManager's &lt;span style="font-style: italic;"&gt;persist&lt;/span&gt; method.  The initial SQL statement was a "select [sequenceName].nextval from dual" to derive the ID of the entity to be created.  The second call was the SQL insert statement to create the new record.&lt;br /&gt;&lt;br /&gt;What is needed is an API developed around the concept of batch processing, where entities submitted for create (or other operations) are handled in a way to optimize throughput.  In the case of entity creation, this might be handled by skipping the initial ID select for cases where auto-increment database fields aren't available.&lt;br /&gt;&lt;br /&gt;I understand that EJB3 is really an API for the management of individual application objects, and that batch processing is probably outside of the initial intended scope.  However, the reality is that many developers will run into this issue, costing unnecessary time and effort when Session APIs must be refactored from EntityManager calls to PreparedStatements.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Better Support for N:M Mapping Tables&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;The case is a little complex, but it is important.  In the case that you have a mapping table where you're associating a many-to-many relationship between two entities, it is sometimes the practice to include additional fields in the mapping table to provide attributes on the relationship.  If these fields should not be nullable, then powerful annotations like @ManyToMany can't be leveraged.  The developer then has two choices remaining:  Either model the mapping table as an entity and provide mappings between all three, or forego the mapping annotations altogether and manually derive the relationship through queries.  On the various forums where this quandary has been posed, the former was preferred.  This is an ungainly and inefficient approach, since it requires that two separate queries are performed to traverse the relationship.&lt;br /&gt;&lt;br /&gt;What would be ideal would be a call-back or initializer method that could be specified in a @ManyToMany annotation.  This initializer would populate the fields as needed, and then return control back to the ORM layer.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Support for Audit Logging&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Given the growth of Federal legislation governing the auditing of information systems, it would seem a natural fit to provide an annotation API for designating both an audit logging schema as well as the tables or fields that would participate in the audit logging.&lt;br /&gt;&lt;br /&gt;Currently, developers have a choice of either implementing an interceptor strategy, or designing an encapsulating persistence APIs with a logging facade.&lt;br /&gt;&lt;br /&gt;In the former, either AOP or vendor specific APIs are engaged to intercept method calls in the persistence stack to detect loggable operations.  This approach, while attractive in it's transparency to the business method developer, is risky in that errors in the interceptor can be difficult to detect.&lt;br /&gt;&lt;br /&gt;The latter option requires an customized logging API to sit as a facade over the actual persistence calls. While safer in the regard that you're not attempting to apply a generic set of rules to all operations, the amount of coding required is increased over the interceptor approach.  Though more conservative, it is an error prone strategy as well, since it requires the cooperation of each developer to ensure that all necessary data is logged.&lt;br /&gt;&lt;br /&gt;If the EBJ3 spec can reduce inheritance strategies down to the choice between "SINGLE_TABLE", "TABLE_PER_CLASS", or "JOINED", then certainly the specification should be able to define best practices for audit logging, limiting the types of schema down to a few distinct forms.&lt;br /&gt;&lt;br /&gt;Audit logging is an old problem that's only gotten more serious over the last few years.  Instead of requiring development teams to re-invent the wheel at every shop, why not provide a single implementation that we can all leverage?&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-458777446675623350?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/458777446675623350/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=458777446675623350' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/458777446675623350'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/458777446675623350'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2006/08/ejb3-wishlist.html' title='EJB3 Wishlist'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-2942296489002386167</id><published>2006-08-29T13:53:00.000-07:00</published><updated>2006-08-29T14:59:47.499-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='literature'/><title type='text'>Posthumous Heinlein:  Variable Star</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://variablestarbook.com/images/heinlein.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 100px; height: 119px;" src="http://variablestarbook.com/images/heinlein.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I was thrilled to see this today:   A new work from Heinlein.  Heinlein has been one of the most influential authors in my life.  I still read &lt;a style="font-style: italic;" href="http://www.amazon.com/gp/redirect.html?link_code=ur2&amp;tag=httptapestrbl-20&amp;amp;amp;amp;amp;amp;amp;camp=1789&amp;creative=9325&amp;amp;location=%2FStranger-in-a-Strange%2Fdp%2F0441790348%2Fsr%3D1-1%2Fqid%3D1156918572%2Fref%3Dpd_bbs_1%3Fie%3DUTF8%26s%3Dbooks"&gt;Stranger In A Strange Land&lt;/a&gt; once every few years, and have read just about everything else he's published.&lt;br /&gt;&lt;br /&gt;Few authors in any genre, let alone scifi, have his talent for pacing, action, character development, or insight.  When the inhabitants of the moon finally declare independence, they'll refer to &lt;a style="font-style: italic;" href="http://www.amazon.com/gp/redirect.html?link_code=ur2&amp;tag=httptapestrbl-20&amp;amp;amp;amp;amp;amp;amp;camp=1789&amp;creative=9325&amp;amp;location=%2F-Moon-Is-a-Harsh%2Fdp%2F0312863551%2Fsr%3D1-1%2Fqid%3D1156916998%2Fref%3Dpd_bbs_1%3Fie%3DUTF8%26s%3Dbooks"&gt;The Moon Is A Harsh Mistress&lt;/a&gt; and once again call Heinlein visionary.&lt;br /&gt;&lt;br /&gt;I've often wondered why a screenplay for &lt;span style="font-style: italic;"&gt;Stranger&lt;/span&gt; hasn't been put into action, but perhaps the studios aren't betting the American public is ready for the heady,  spiritual message of Michael Valentine Smith.  If you don't know what I'm talking about, you owe it to yourself to find the book and read it.&lt;br /&gt;&lt;br /&gt;Or, perhaps start with the latest to be published by his estate, &lt;span style="font-style: italic;"&gt;Variable Star&lt;/span&gt;.  Heinlein can't really be given the credit for writing, since he was unable to finish the book before his death.  However, his estate has tapped &lt;a href="http://en.wikipedia.org/wiki/Spider_Robinson"&gt;Spider Robinson&lt;/a&gt; to take Heinlein's outlines and plot descriptions to produce a consumable version. Robinson did win both the Hugo and Nebula awards, so if a work of Heinlein was to be ghost-written, they probably couldn't have picked a better surrogate.  Regardless, the plot is  Heinlein, and Spider does, from what I've read so far, a remarkable job at capturing the voice of the master.&lt;br /&gt;&lt;br /&gt;You can see for yourself at the site set up for &lt;a style="font-style: italic;" href="http://variablestarbook.com/index.html"&gt;Variable Star&lt;/a&gt;.  They're releasing eight chapters, two a week, in anticipation of the book's launch in September.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-style: italic;font-family:trebuchet ms;font-size:85%;"  &gt;&lt;b&gt;There was so much to grok, so little to grok from&lt;br /&gt;- &lt;/b&gt;&lt;/span&gt;&lt;span style=";font-family:trebuchet ms;font-size:85%;"  &gt;&lt;b&gt;M.V. Smith&lt;/b&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:trebuchet ms;font-size:85%;"  &gt;&lt;b&gt; &lt;/b&gt;&lt;/span&gt;&lt;span style=";font-family:trebuchet ms;font-size:85%;"  &gt;&lt;b&gt;from&lt;/b&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:trebuchet ms;font-size:85%;"  &gt;&lt;b&gt; Stranger in A Strange Land&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-2942296489002386167?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/2942296489002386167/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=2942296489002386167' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/2942296489002386167'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/2942296489002386167'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2006/08/posthumous-heinlein-variable-star.html' title='Posthumous Heinlein:  Variable Star'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-7844710014251305175</id><published>2006-08-28T21:09:00.000-07:00</published><updated>2006-08-28T21:36:39.405-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='poetry'/><title type='text'>The Poetry of Han Shan</title><content type='html'>&lt;span style="font-size:100%;"&gt;He lived during the 8th century in China, a philosopher, a madman, and a poet possessing a timeless talent.  Han Shan translates into Cold Mountain, the name sake of the hills he resided in before political strife sent him into exile after the &lt;/span&gt;&lt;span style="font-size:100%;"&gt;An Lu-shan Rebellion of 760 AD.  His work is beautiful, haunting, and introspective.&lt;/span&gt;&lt;p  style="text-align: center; color: rgb(0, 0, 0);font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;You find a flower half-buried in leaves,&lt;br /&gt;And in your eye its very fate resides.&lt;br /&gt;Loving beauty, you caress the bloom;&lt;br /&gt;Soon enough, you'll sweep petals from the floor.&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: center; font-family: georgia; color: rgb(0, 0, 0);"&gt; &lt;/div&gt;&lt;p  style="text-align: center; color: rgb(0, 0, 0);font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;Terrible to love the lovely so,&lt;br /&gt;To count your own years, to say "I'm old,"&lt;br /&gt;To see a flower half-buried in leaves&lt;br /&gt;And come face to face with what you are.&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: center; font-family: georgia; color: rgb(0, 0, 0);"&gt; &lt;/div&gt;&lt;p  style="text-align: center; color: rgb(0, 0, 0);font-family:georgia;"&gt;&lt;span style="font-size:100%;"&gt;-   Han Shan, 750&lt;br /&gt;Translated by &lt;a href="http://www.geocities.com/lesliebarclay/ColdMountain.html"&gt;Peter Stambler&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-family:georgia;"&gt;More of Han Shan's work can be found on the commercial site produced by &lt;a href="http://www.coldmountain.com/index.html"&gt;Cold Mountain Web Design&lt;/a&gt;, as well as the above referenced site by Peter Stambler.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-7844710014251305175?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/7844710014251305175/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=7844710014251305175' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/7844710014251305175'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/7844710014251305175'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2006/08/poetry-of-han-shan.html' title='The Poetry of Han Shan'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-844100110122933927</id><published>2006-08-28T15:38:00.000-07:00</published><updated>2006-08-28T15:40:04.567-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='art'/><title type='text'>Bill Watterson Unpublished</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/8146/862162521303217/1600/calvin-hobbes.0.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger2/8146/862162521303217/320/calvin-hobbes.0.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;&lt;a href="http://en.wikipedia.org/wiki/Calvin_and_Hobbes"&gt;Calvin and Hobbes&lt;/a&gt; remains possibly the most popular comic strip on the planet, even after its creator, Bill Watterson, closed the book on the strip in 1995. I know I share with millions in the emotional response felt when reading through the cells that Watterson has so artfully and thoughfully rendered. In the adventures of C &amp; H, he's captured the true essence of both the experience and meaning of childhood.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;Today, I discovered new insight into &lt;/span&gt;&lt;a style="font-family: georgia;" href="http://www.platypuscomix.net/otherpeople/watterson.html"&gt;Watterson&lt;/a&gt;&lt;span style="font-family:georgia;"&gt; provided by &lt;/span&gt;&lt;a style="font-family: georgia;" href="http://platypuscomix.net/"&gt;PlatypusComix.net&lt;/a&gt;&lt;span style="font-family:georgia;"&gt;'s creator, Peter Paltridge.&lt;/span&gt;&lt;span style="font-family:georgia;"&gt; I honestly have yet to meet a bigger fan, and am impressed at the rare collection of Watterson memorabelia that he's managed to put together. Of note is his collection of Watterson's drawings for &lt;span style="font-style: italic;"&gt;Target, The Political Cartoon Quarterly&lt;/span&gt;, where the cartoonist lampoons those that make a living at it.  There's also several entire strips that were published in papers, but never made it into books and so have faded from memory.&lt;br /&gt;&lt;br /&gt;In addition to C&amp;amp;H, Peter shares his collection of &lt;a href="http://www.platypuscomix.net/otherpeople/halfof82.html"&gt;Bloom County&lt;/a&gt; clips, many of which remain unpublished as well.&lt;br /&gt;&lt;br /&gt;Thanks Pete!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-844100110122933927?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/844100110122933927/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=844100110122933927' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/844100110122933927'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/844100110122933927'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2006/08/bill-watterson-unpublished.html' title='Bill Watterson Unpublished'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-7365097121953467657</id><published>2006-08-27T13:49:00.000-07:00</published><updated>2006-08-27T15:38:19.859-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='media'/><title type='text'>Advertising:  Adapting the Business Model</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/8146/862162521303217/1600/television.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 111px; height: 120px;" src="http://photos1.blogger.com/blogger2/8146/862162521303217/320/television.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Times are changing, technology is advancing, and for some industries, this means that business as usual is over.  For media companies, this changing tide has spawned a battle that has consumed millions, perhaps billions of dollars in legal and court fees, lobbying efforts, and investment in technological countermeasures.&lt;br /&gt;&lt;br /&gt;For broadcast and cable television, the evil demon is the DVR, allowing viewers to record and perhaps (gasp) even copy content to be made available to others.  Even more feared is the ability for viewers to fast forward past commercials.&lt;br /&gt;&lt;br /&gt;The industry has positioned itself as a victim in the eyes of congress, and the compensation will be nothing less that the outlaw of analog television signals, forcing millions reliant on public broadcast to go out and buy new sets.  In addition, congress has been so moved by the industry's cries of woe that they implemented a host of laws, including the &lt;a href="http://www.copyright.gov/legislation/dmca.pdf#search=%22DMCA%22"&gt;DMCA&lt;/a&gt;, that will likely force DVR manufacturers to take privileges away from the consumer, including the ability to fast forward through ads.&lt;br /&gt;&lt;span class="down" style="display: block;" id="formatbar_CreateLink" title="Link" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);"&gt;&lt;/span&gt;&lt;br /&gt;The problem is, congress is being lied to.  The networks and media interests have convinced congress that their current model is the only way for them to make money, and if it is challenged, one of the pillars of our economy would be threatened.&lt;br /&gt;&lt;br /&gt;But this is patently untrue, as there is readily available technology that could provide at least two new models for generating revenue.  Models which could realisticly exceed the current strategies both in terms of revenue generation and market efficiency.&lt;br /&gt;&lt;br /&gt;According to KSU, &lt;a href="http://www.telecom.ksu.edu/cable/history.html"&gt;nearly 60% of American households&lt;/a&gt; get their television content from a cable provider, and that percentage is only growing as both high speed Internet and VOIP cable offerings gain traction.  With those numbers, there's no reason why the networks shouldn't explore other avenues for monetizing their content.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ala Cart&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://www.salon.com/"&gt;Salon.com&lt;/a&gt; has successfully employed a business model based on giving customers a choice.  A reader can either pay for a subscription or offer to click on an add and view it for a period of time before returning to the site for a temporary pass.  Why not offer the television viewer the same choice?  Better yet, offer them a choice on which commercials they like to watch.  A network could establish a pool of advertising from which the consumer could choose.  The choice would not only benefit all by allowing the consumer to get information about products in which they have  a real interest.  It would also help raise the quality of advertising as competition would drive up standards.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;All Programming Available PPV On-Demand&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;But like Salon, why not let the user pay directly for the content?  Why force advertising on a populace that would willingly pay a few dollars for high quality content?  The networks might find that their content is worth far more than the current advertising based revenue model could ever support.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Advertising Channels&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;With "On Demand" technology, the game is wide open for reinventing the advertising landscape.  An entire channel dedicated to ads could be founded by the cable companies using their play on request services.  Instead of rolling out predetermined content, a Yahoo-like index would provide the user with the ability to browse ads based on their product type or application, enabling education of the consumer on a level unparalleled in today's marketplace.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Requirements&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;The largest hurdle to bringing these new models to the public is selling the ideas to the networks, content owners, and cable companies.  The technology is already available.  The software would not be difficult to write.  It's just a matter of will.&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;Make a Change for the Better&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Advertising has been the bane of the television experience for decades.  Currently, between 25% - 30% of every hour of broadcasting is dedicated to commercials.  Yet, even at these numbers, some cable and broadcast networks are failing to make good use of their air time.  Every time you see a house ad, it's because the spot couldn't be filled with a paying advertiser.   On some networks, over 30% of advertising space goes unused.  This inefficiency not only means lost revenues for the networks, it means a mind numbing experience for the viewer as the same ads are played over and over.&lt;br /&gt;&lt;br /&gt;This is not a model that deserves protection.&lt;br /&gt;&lt;br /&gt;Our economy is based on consumption and capitalism.  Both rely on an populace educated on the options available to them as a consumer.  But education is a far cry from the blatant attempt at conditioning and mind control that current advertising efforts have become.  The same ads are shown multiple times over a span of an hour.  The audio volume of ads are now so loud that they eclipse the levels of their associated programming.&lt;br /&gt;&lt;br /&gt;This is no way to treat a customer.  More importantly, this is no way to condition a species.  This incredible technology that we have developed should be used to raise up and educate our numbers, not reduce them to test subjects in a misguided Pavlovian experiment.&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-7365097121953467657?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/7365097121953467657/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=7365097121953467657' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/7365097121953467657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/7365097121953467657'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2006/08/advertising-adapting-business-model.html' title='Advertising:  Adapting the Business Model'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-4596553133592200298</id><published>2006-08-26T19:26:00.001-07:00</published><updated>2006-08-26T20:15:20.410-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>CSSE:  Back to The Basics of Sorting</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/8146/862162521303217/1600/sorting-playboard.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 122px; height: 99px;" src="http://photos1.blogger.com/blogger2/8146/862162521303217/320/sorting-playboard.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Most current software languages offer mature sets of data structures, including linked lists, maps, and trees.  In most cases sorting is implemented over these structures with efficient routines.  However, this isn't guaranteed.  Also, if you're going to be using C or C++, or even assembler for development, you may opt to rely on your own sort implementations.&lt;br /&gt;&lt;br /&gt;Beyond edge case coding contexts, there's also the interview process to consider.  I've been to more than a few where a review of sorting algorithms have been a primary criteria for screening.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Sorting Algorithms and &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;Algorithmic&lt;/span&gt; Order&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Given a list of data elements, there's seven main algorithms one can use to re-order the list according to a sort criteria.  The trade off between the algorithms is primarily based on efficiency vs. complexity.  There is another &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_1"&gt;concern&lt;/span&gt; with regard to sorting large lists of data.  Some algorithms use recursion, which can exhaust the call stack of a processing environment if extremely large data sets are provided as input.&lt;br /&gt;&lt;br /&gt;With that in mind, one algorithm  may not be suitable for all applications.  Therefore, knowing the alternatives can help to keep a design on track.  If this topic is of interest to you, I recommend &lt;a href="http://linux.wku.edu/%7Elamonml/algor/sort/sort.html"&gt;&lt;span class="TitleText"&gt;Michael Lamont's&lt;/span&gt;&lt;b class="TitleText"&gt; &lt;/b&gt;&lt;/a&gt;site on sorting as it offers a cut and dry comparison, featuring an evaluation and coding solution for each algorithm.&lt;br /&gt;&lt;span class="down" style="display: block;" id="formatbar_CreateLink" title="Link" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://linux.wku.edu/%7Elamonml/algor/sort/sort.html"&gt;http://linux.wku.edu/~lamonml/algor/sort/sort.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-4596553133592200298?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/4596553133592200298/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=4596553133592200298' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/4596553133592200298'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/4596553133592200298'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2006/08/csse-back-to-basics-of-sorting_26.html' title='CSSE:  Back to The Basics of Sorting'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-7127599586834109202</id><published>2006-08-24T21:46:00.000-07:00</published><updated>2008-03-24T16:28:22.727-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='science'/><title type='text'>Surely, You Must Be Joking...</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/8146/862162521303217/1600/180px-Feynman-bongos.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 106px; height: 148px;" src="http://photos1.blogger.com/blogger2/8146/862162521303217/320/180px-Feynman-bongos.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Dr. Feynman is one of my personal heroes.  His accomplishments, ranging from work on the Los Alamos project, to his pioneering work on Quantum Chromo Dynamics, to his skill at helping others charge forth in exploring the frontiers of physics, firmly cement his place in history.  In addition to that brilliant mind was a charismatic personality and a liberal outlook that combined to create one of the most compelling characters of the 20th century.&lt;br /&gt;&lt;br /&gt;If you haven't heard of Dr. Feynman, memorable aspects of his life in his own hand are available at:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.com/gp/redirect.html?link_code=ur2&amp;amp;tag=httptapestrbl-20&amp;amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;location=%2FSurely-Youre-Joking-Mr-%2Fdp%2F0393316041%2Fsr%3D1-1%2Fqid%3D1156918704%2Fref%3Dpd_bbs_1%3Fie%3DUTF8%26s%3Dbooks"&gt;Surely You're Joking, Mr. Feynman! (Adventures of a Curious Character)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.com/gp/redirect.html?link_code=ur2&amp;amp;tag=httptapestrbl-20&amp;amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;location=%2FWhat-Do-You-Care-What%2Fdp%2F0393320928%2Fsr%3D1-1%2Fqid%3D1156918847%2Fref%3Dpd_bbs_1%3Fie%3DUTF8%26s%3Dbooks"&gt;What Do You Care What Other People Think?: Further Adventures of a Curious Character&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you're interested in his academic contributions, most of his work is also available in paperback form.&lt;br /&gt;&lt;br /&gt;However, what if you wanted to take a lecture from Feynman?  Sadly, he passed away more than a decade ago.  But he left us a gift in the form of a series of lectures for us to enjoy.  Even if you don't understand everything that he has to say, the chance to see him in action is worth the time spent watching the clips.&lt;br /&gt;&lt;br /&gt;So, take some time to get to know a true American hero:  &lt;a href="http://www.feynman.com/"&gt;Dr. Feynman Online&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-7127599586834109202?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/7127599586834109202/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=7127599586834109202' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/7127599586834109202'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/7127599586834109202'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2006/08/surely-you-must-be-joking.html' title='Surely, You Must Be Joking...'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-3504267469297242449</id><published>2006-08-24T18:36:00.000-07:00</published><updated>2008-03-24T16:29:24.005-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='science'/><title type='text'>Intellectual Goldmine: Arxiv.org</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/8146/862162521303217/1600/handpen.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 119px; height: 127px;" src="http://photos1.blogger.com/blogger2/8146/862162521303217/320/handpen.jpg" alt="" border="0" /&gt;&lt;/a&gt;The amount of material on this &lt;a href="http://arxiv.org/"&gt;Arxiv&lt;/a&gt; is actually daunting.  It's also of high quality and, honestly, addictive.  The subtitle on the site says it all:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;Open access to 381,469 e-prints in Physics, Mathematics, Computer Science and Quantitative Biology&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;Just be sure you have a few hours set aside.&lt;br /&gt;&lt;br /&gt;Update:  I should stress that Arxiv.org is not peer reviewed.  Therefore, some of its articles would not pass the muster if an academic publishing criteria were applied.  So, proceed with caution when using Arxiv as a source.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-3504267469297242449?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/3504267469297242449/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=3504267469297242449' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/3504267469297242449'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/3504267469297242449'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2006/08/intellectual-goldmine-arxivorg.html' title='Intellectual Goldmine: Arxiv.org'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-2106206145985527477</id><published>2006-08-24T14:03:00.000-07:00</published><updated>2006-08-24T14:50:10.835-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='politics'/><title type='text'>Bush Admits 9/11 No Relation with Iraq</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/8146/862162521303217/1600/iraq_flag.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 92px; height: 122px;" src="http://photos1.blogger.com/blogger2/8146/862162521303217/320/iraq_flag.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p style="color: rgb(204, 0, 0);"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;T&lt;/span&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;HE PRESIDENT&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;: You know, I've heard this theory about everything was just fine until we arrived, and kind of "we're going to stir up the hornet's nest" theory.  It just doesn't hold water, as far as I'm concerned.  The terrorists attacked us and killed 3,000 of our citizens before we started the freedom agenda in the Middle East.  &lt;/span&gt;&lt;/p&gt;&lt;p style="color: rgb(0, 0, 102);"&gt; &lt;span style="font-weight: bold;"&gt;Q&lt;/span&gt;: What did Iraq have to do with that?  &lt;/p&gt;&lt;p style="color: rgb(0, 0, 102);"&gt; &lt;span style="font-weight: bold;"&gt;THE PRESIDENT&lt;/span&gt;: What did Iraq have to do with what?  &lt;/p&gt;&lt;p style="color: rgb(0, 0, 102);"&gt; &lt;span style="font-weight: bold;"&gt;Q&lt;/span&gt;: The attack on the World Trade Center?  &lt;/p&gt; &lt;span style="color: rgb(0, 0, 102); font-weight: bold;"&gt;THE PRESIDENT&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;: Nothing, except for it's part of -- and nobody has ever suggested in this administration that Saddam Hussein ordered the attack.&lt;br /&gt;&lt;br /&gt;[http://www.whitehouse.gov/news/releases/2006/08/20060821.html]&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Finally, a moment of truth.  It almost seemed to come in an emotion of spite, a frustrated response to an interruption by a White House reporter.  But there the words were, hanging in the air with a weight that stunned the rest of the press corps.  They had reason to be in shock.  The implication of the Hussein regime with 9/11 was the party line of the administration since the war plans were established.&lt;br /&gt;&lt;br /&gt;I am so very tired of lies and dishonor.&lt;br /&gt;&lt;br /&gt;This is the President of the United States, a position that should present the standards of dignity, honor, and eloquence to which we all should strive.  Filling it, we have someone singularly unqualified for the position.  In fact, when all is said and done, I honestly fear for the future of this country.&lt;br /&gt;&lt;br /&gt;One of my hopes in this regard is that our society will recover from the example this president has set, and learn to hold itself, once again, to a higher set of standards.  The other is that the rest of the world will learn to forgive us.&lt;br /&gt;&lt;br /&gt;Certainly, we've never been angels, but over the last six years, we've never been confused with them.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-2106206145985527477?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/2106206145985527477/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=2106206145985527477' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/2106206145985527477'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/2106206145985527477'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2006/08/bush-admits-911-no-relation-with-iraq.html' title='Bush Admits 9/11 No Relation with Iraq'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7062835374515961810.post-5694251249728139682</id><published>2006-08-24T13:09:00.000-07:00</published><updated>2008-03-24T16:28:55.390-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='science'/><title type='text'>Time And The Infinite Realm of Thought</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger2/8146/862162521303217/1600/clock.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; width: 162px; cursor: pointer; height: 146px;" alt="" src="http://photos1.blogger.com/blogger2/8146/862162521303217/320/clock.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Before Einstein's treatises on Special and General Relativity, time was considered a static, abstract entity, existing as a measure by which the metronomic movements of matter through the universe could be gauged.&lt;br /&gt;&lt;br /&gt;With Einstein's theories of Relativity, we gain the concept that time is an integral component of our universe. In fact, it is widely regarded as a unique dimension all of its own, a sibling of the spacial dimensions of up/down, left/right, and back/forward (and if you're into String theory or M-Branes, at least 6 more dimensions). What's more, time becomes dependent on the qualities of the observer and the observed: unique to a particular frame of reference. It is affected by mass and velocity, and can dilate or contract depending on, again, the reference frame of the observer. It can reverse, theoretically, if the observer is traveling faster than the speed of light. It can even stagger to a standstill past the event horizon of the most immensely massive objects in the universe: a black hole. This is because space-time is affected by matter itself. Matter warps space-time, and space-time alters matter. The two are intertwined.&lt;br /&gt;&lt;br /&gt;The concept of the relationship between mass-energy and time is even further complicated when considering the fabric of space-time on scales nearing the Planck length, or 10^-35 meters. On this quantum scale, physicists have discovered that matter can suddenly coalesce from the nothing (vacuum energy, alternate dimensions / universes, etc) in the form of virtual particles. These particles are symmetrically paired opposites, and most often annihilate each other after a short period. Mother nature likes to keep her books, but appears to check them only every few moments. Now consider another interesting phenomena that, the smaller the volume of space we inspect, the more energetic those virtual particle pairs tend to be. Early theoretical explorations into these virtual particles led to calculations that particle energy went asymptotic to infinity as the inspected volume approached zero. This is the basis for the zero-point energy theories that have been floating around. These are largely fantastic, and in decline as more mature theories have begun to cast infinite power at a point to doubt. Nonetheless, these virtual particles are energetic, throwing the fabric of space-time to a literal froth. Time, at these scales, is chaotic, possibly non-continuous, and the source of great discord in the theoretical community.&lt;br /&gt;&lt;br /&gt;Altogether, the picture painted by these concepts has dissolved the concept of time into a personal experience both on the physical and metaphysical levels. It is the observer and the observed that defines time. Gone is the common clock beating out the movement of the celestial bodies, the dance of the atoms within our universe, or the progress of our lives.&lt;br /&gt;&lt;br /&gt;If we take a consciousness to be integral to the definition of an observer, then time itself is but one subject in the infinite realm of thought.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7062835374515961810-5694251249728139682?l=tapestryofthoughts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tapestryofthoughts.blogspot.com/feeds/5694251249728139682/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7062835374515961810&amp;postID=5694251249728139682' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/5694251249728139682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7062835374515961810/posts/default/5694251249728139682'/><link rel='alternate' type='text/html' href='http://tapestryofthoughts.blogspot.com/2006/08/time-and-infinite-realm-of-thought.html' title='Time And The Infinite Realm of Thought'/><author><name>Julian Klappenbach</name><uri>http://www.blogger.com/profile/04251871840972982178</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://bp1.blogger.com/_7XDJakniA48/SJJogSnMojI/AAAAAAAAAQU/Vc67_2zN4oU/S220/MeApril08.jpg'/></author><thr:total>0</thr:total></entry></feed>
