<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;DUEERHg4fyp7ImA9WhRRFE4.&quot;"><id>tag:blogger.com,1999:blog-7022592537325150312</id><updated>2011-11-27T17:46:45.637-06:00</updated><category term="XmlSlurper" /><category term="Web Development" /><category term="XmlParser" /><category term="XML" /><category term="TagSoup" /><category term="Screen-Scraping" /><category term="HTTP response code: 503" /><category term="Groovy" /><category term="Scalability" /><title>About Nothing</title><subtitle type="html">A blog (mostly) about nothing by a software engineer that loves to spend time with his family, golf, run, play hockey and discuss all things related to science, politics and our civilization.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://stevefinck.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://stevefinck.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/7022592537325150312/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Steve Finck</name><uri>http://www.blogger.com/profile/00111289021695221865</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_l2NoBR63c4U/SWiekfb1SBI/AAAAAAAAAAM/fMfZeEBrtiE/S220/Photo+7.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>40</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/stevefinck" /><feedburner:info uri="stevefinck" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;AkUCRn86fip7ImA9WxBREEQ.&quot;"><id>tag:blogger.com,1999:blog-7022592537325150312.post-7250072221110456246</id><published>2009-12-29T08:43:00.003-06:00</published><updated>2009-12-29T08:51:07.116-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-29T08:51:07.116-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="TagSoup" /><category scheme="http://www.blogger.com/atom/ns#" term="Groovy" /><category scheme="http://www.blogger.com/atom/ns#" term="XmlSlurper" /><category scheme="http://www.blogger.com/atom/ns#" term="Screen-Scraping" /><title>HTML Parsing With Groovy and TagSoup</title><content type="html">I'm working on an app where I need to parse some HTML.  This is the first time I've had to do screen-scraping with Groovy.  After a bit of trial and error I think I'm getting the hang of it. The HTML I'm working with isn't well-formed, so the default Groovy XmlSlurper and XmlParser puke. After some digging I found &lt;a target="_new" href="http://home.ccil.org/~cowan/XML/tagsoup/"&gt;TagSoup&lt;/a&gt;. It "parses HTML as it is found in the wild: poor, nasty and brutish, though quite often far from short".&lt;br /&gt;&lt;br /&gt;It made my parsing much easier. Thanks John Cowan!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7022592537325150312-7250072221110456246?l=stevefinck.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/h-Cr7VQJmDHVTHIVb0olM5AIQ5g/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/h-Cr7VQJmDHVTHIVb0olM5AIQ5g/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/h-Cr7VQJmDHVTHIVb0olM5AIQ5g/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/h-Cr7VQJmDHVTHIVb0olM5AIQ5g/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/stevefinck/~4/jcMy0bS7Hb8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://stevefinck.blogspot.com/feeds/7250072221110456246/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7022592537325150312&amp;postID=7250072221110456246" title="53 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7022592537325150312/posts/default/7250072221110456246?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7022592537325150312/posts/default/7250072221110456246?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/stevefinck/~3/jcMy0bS7Hb8/html-parsing-with-groovy-and-tagsoup.html" title="HTML Parsing With Groovy and TagSoup" /><author><name>Steve Finck</name><uri>http://www.blogger.com/profile/00111289021695221865</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_l2NoBR63c4U/SWiekfb1SBI/AAAAAAAAAAM/fMfZeEBrtiE/S220/Photo+7.jpg" /></author><thr:total>53</thr:total><feedburner:origLink>http://stevefinck.blogspot.com/2009/12/html-parsing-with-groovy-and-tagsoup.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU8MRXY4fCp7ImA9WxBREEU.&quot;"><id>tag:blogger.com,1999:blog-7022592537325150312.post-4229129759309047750</id><published>2009-12-29T05:38:00.008-06:00</published><updated>2009-12-29T05:58:04.834-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-29T05:58:04.834-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="XmlParser" /><category scheme="http://www.blogger.com/atom/ns#" term="XML" /><category scheme="http://www.blogger.com/atom/ns#" term="Groovy" /><category scheme="http://www.blogger.com/atom/ns#" term="XmlSlurper" /><category scheme="http://www.blogger.com/atom/ns#" term="HTTP response code: 503" /><title>Groovy XmlSlurper and HTTP 503 Response Code</title><content type="html">I struggled a bit  when trying to parse some XHTML with Groovy's XmlSlurper (and XmlParser).  I was receiving the following:&lt;br /&gt;&lt;br /&gt;Caught: java.io.IOException: Server returned HTTP response code: 503 for URL: http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&lt;br /&gt;&lt;br /&gt;It turns out that &lt;a target="_new" href="http://www.w3.org/blog/systeam/2008/02/08/w3c_s_excessive_dtd_traffic"&gt;the guys from W3C got sick of dealing with the excessive traffic for their DTDs&lt;/a&gt;. So now they return a Service Unavailable (HTTP 503) if they detect parser requests.&lt;br /&gt;&lt;br /&gt;To solve the problem I had to set the loading of external DTDs to false.  Here's the code.&lt;br /&gt;&lt;br /&gt;def slurper = new XmlSlurper()&lt;br /&gt;slurper.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false)&lt;br /&gt;def results = slurper.parseText(htmlResponse)&lt;br /&gt;&lt;br /&gt;Googling for the answer wasn't extremely helpful. &lt;a target="_new" href="http://kanemu1117nc.blogspot.com/2009/10/xmlslurper.html"&gt;This blog post helped (I think it's in Japanese)&lt;/a&gt;.  &lt;a target="_new" href="http://blog.sweetxml.org/2009/08/resolving-xhtml1-dtd-locally-avoiding.html"&gt;This post also helped&lt;/a&gt;.  Thanks guys!&lt;br /&gt;&lt;br /&gt;I decided to re-post the solution since it took me awhile googling for the answer.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7022592537325150312-4229129759309047750?l=stevefinck.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/4ZtWCCrFx839pcoiD3Fk8NdaZ5E/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4ZtWCCrFx839pcoiD3Fk8NdaZ5E/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/4ZtWCCrFx839pcoiD3Fk8NdaZ5E/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4ZtWCCrFx839pcoiD3Fk8NdaZ5E/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/stevefinck/~4/I6djKHSO7Pk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://stevefinck.blogspot.com/feeds/4229129759309047750/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7022592537325150312&amp;postID=4229129759309047750" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7022592537325150312/posts/default/4229129759309047750?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7022592537325150312/posts/default/4229129759309047750?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/stevefinck/~3/I6djKHSO7Pk/groovy-xmlslurper.html" title="Groovy XmlSlurper and HTTP 503 Response Code" /><author><name>Steve Finck</name><uri>http://www.blogger.com/profile/00111289021695221865</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_l2NoBR63c4U/SWiekfb1SBI/AAAAAAAAAAM/fMfZeEBrtiE/S220/Photo+7.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://stevefinck.blogspot.com/2009/12/groovy-xmlslurper.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUYAQ3w_fCp7ImA9WxBSGUw.&quot;"><id>tag:blogger.com,1999:blog-7022592537325150312.post-3749268150853878720</id><published>2009-12-27T06:30:00.004-06:00</published><updated>2009-12-27T06:32:22.244-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-27T06:32:22.244-06:00</app:edited><title>The Science of Avatar</title><content type="html">An interesting read on the &lt;a target="_new" href="http://www.aintitcool.com/node/43440?utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed%3A+google%2FYRZh+%28Raj%27s+shared+items+in+Google+Reader%29"&gt;science of Avatar&lt;/a&gt;. I still haven't seen the movie; just too much going on with the holidays.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7022592537325150312-3749268150853878720?l=stevefinck.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/boUbG6AiCd8YUPHNg7eHix5hvp8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/boUbG6AiCd8YUPHNg7eHix5hvp8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/boUbG6AiCd8YUPHNg7eHix5hvp8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/boUbG6AiCd8YUPHNg7eHix5hvp8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/stevefinck/~4/0HClbxKJ5g4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://stevefinck.blogspot.com/feeds/3749268150853878720/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7022592537325150312&amp;postID=3749268150853878720" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7022592537325150312/posts/default/3749268150853878720?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7022592537325150312/posts/default/3749268150853878720?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/stevefinck/~3/0HClbxKJ5g4/science-of-avatar.html" title="The Science of Avatar" /><author><name>Steve Finck</name><uri>http://www.blogger.com/profile/00111289021695221865</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_l2NoBR63c4U/SWiekfb1SBI/AAAAAAAAAAM/fMfZeEBrtiE/S220/Photo+7.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://stevefinck.blogspot.com/2009/12/science-of-avatar.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D04CRHkyfip7ImA9WxBTEko.&quot;"><id>tag:blogger.com,1999:blog-7022592537325150312.post-1338426007127530450</id><published>2009-12-08T06:32:00.004-06:00</published><updated>2009-12-08T06:39:25.796-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-08T06:39:25.796-06:00</app:edited><title>(Near) Real-Time Analytics</title><content type="html">At my new gig, I've been asking whether the team has considered the possibility of using map/reduce or a similar grid-based solution to conduct our analytics in (near) real-time.  Interestingly enough, I ran across &lt;a href="http://natishalom.typepad.com/nati_shaloms_blog/2009/10/how-mapreduce-and-the-cloud-are-affecting-analytics-applications.html" target="_blank"&gt;Nati Shalom's post on real-time analytics&lt;/a&gt; yesterday.  This should help give me some ammunition to convince everyone that we need to move in this direction for the solution we're building.  Thanks Nati!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7022592537325150312-1338426007127530450?l=stevefinck.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/u3fuXokX8XHriY3u4c1MC1XWiQE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/u3fuXokX8XHriY3u4c1MC1XWiQE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/u3fuXokX8XHriY3u4c1MC1XWiQE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/u3fuXokX8XHriY3u4c1MC1XWiQE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/stevefinck/~4/FqbkVf4h4lw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://stevefinck.blogspot.com/feeds/1338426007127530450/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7022592537325150312&amp;postID=1338426007127530450" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7022592537325150312/posts/default/1338426007127530450?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7022592537325150312/posts/default/1338426007127530450?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/stevefinck/~3/FqbkVf4h4lw/near-real-time-analytics.html" title="(Near) Real-Time Analytics" /><author><name>Steve Finck</name><uri>http://www.blogger.com/profile/00111289021695221865</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_l2NoBR63c4U/SWiekfb1SBI/AAAAAAAAAAM/fMfZeEBrtiE/S220/Photo+7.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://stevefinck.blogspot.com/2009/12/near-real-time-analytics.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D04NQHk8eCp7ImA9WxBTEko.&quot;"><id>tag:blogger.com,1999:blog-7022592537325150312.post-7865621772983677533</id><published>2009-12-08T06:16:00.003-06:00</published><updated>2009-12-08T06:39:51.770-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-08T06:39:51.770-06:00</app:edited><title>A Feast for Crows</title><content type="html">I just finished re-reading George R. R. Martin's &lt;a href="http://en.wikipedia.org/wiki/A_Feast_for_Crows" target="_new"&gt;A Feast for Crows&lt;/a&gt;. I enjoyed it more than the first time I read it. My favorite still continues to be A Storm of Swords.  Now if he'd just publish A Dance with Dragons!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7022592537325150312-7865621772983677533?l=stevefinck.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/WBl_PhFIdj2KaSng6W4b-YJ6R1c/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WBl_PhFIdj2KaSng6W4b-YJ6R1c/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/WBl_PhFIdj2KaSng6W4b-YJ6R1c/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WBl_PhFIdj2KaSng6W4b-YJ6R1c/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/stevefinck/~4/Tg8AFvcQ43k" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://stevefinck.blogspot.com/feeds/7865621772983677533/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7022592537325150312&amp;postID=7865621772983677533" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7022592537325150312/posts/default/7865621772983677533?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7022592537325150312/posts/default/7865621772983677533?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/stevefinck/~3/Tg8AFvcQ43k/feast-for-crows.html" title="A Feast for Crows" /><author><name>Steve Finck</name><uri>http://www.blogger.com/profile/00111289021695221865</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_l2NoBR63c4U/SWiekfb1SBI/AAAAAAAAAAM/fMfZeEBrtiE/S220/Photo+7.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://stevefinck.blogspot.com/2009/12/feast-for-crows.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0MGSXgzcCp7ImA9WxJREkw.&quot;"><id>tag:blogger.com,1999:blog-7022592537325150312.post-6421058446031724619</id><published>2009-05-13T06:45:00.003-05:00</published><updated>2009-05-13T06:50:28.688-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-13T06:50:28.688-05:00</app:edited><title>The Definitive Guide to Grails</title><content type="html">I finished up The Definitive Guide to Grails close to a month ago, but I forgot to blog about it (I'm using my blog to help keep track of which books I've read). It was an excellent read. I'm sold on Groovy and Grails, particularly for Java shops. Given the recent SpringSource purchase of G2One, I expect Groovy and Grails to gain much wider adoption in the enterprise.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7022592537325150312-6421058446031724619?l=stevefinck.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/DXoHtJlsrOxYPKHKrhUGX5y8pHU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DXoHtJlsrOxYPKHKrhUGX5y8pHU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/DXoHtJlsrOxYPKHKrhUGX5y8pHU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DXoHtJlsrOxYPKHKrhUGX5y8pHU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/stevefinck/~4/IqP48vfLGLo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://stevefinck.blogspot.com/feeds/6421058446031724619/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7022592537325150312&amp;postID=6421058446031724619" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7022592537325150312/posts/default/6421058446031724619?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7022592537325150312/posts/default/6421058446031724619?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/stevefinck/~3/IqP48vfLGLo/definitive-guide-to-grails.html" title="The Definitive Guide to Grails" /><author><name>Steve Finck</name><uri>http://www.blogger.com/profile/00111289021695221865</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_l2NoBR63c4U/SWiekfb1SBI/AAAAAAAAAAM/fMfZeEBrtiE/S220/Photo+7.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://stevefinck.blogspot.com/2009/05/definitive-guide-to-grails.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0AMQn0zcSp7ImA9WxVUF0w.&quot;"><id>tag:blogger.com,1999:blog-7022592537325150312.post-5227956008091449728</id><published>2009-03-22T05:58:00.003-05:00</published><updated>2009-03-22T06:03:03.389-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-22T06:03:03.389-05:00</app:edited><title>The Productive Programmer</title><content type="html">I just finished up &lt;a href="http://oreilly.com/catalog/9780596519780/" target="_new"&gt;The Productive Programmer&lt;/a&gt; by &lt;a href="http://nealford.com/" target="_new"&gt;Neal Ford&lt;/a&gt;.  It was so good I decided to buy my own copy.  It definitely made me realize how much more efficient I can make myself.  There are a ton of tips for both Mac and Windows.  One of the major themes was automate everything you can.  Thanks Neal!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7022592537325150312-5227956008091449728?l=stevefinck.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/YaUXpyaOtS3lyWCmyI761QQJwVw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YaUXpyaOtS3lyWCmyI761QQJwVw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/YaUXpyaOtS3lyWCmyI761QQJwVw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YaUXpyaOtS3lyWCmyI761QQJwVw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/stevefinck/~4/btosKSS4CiA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://stevefinck.blogspot.com/feeds/5227956008091449728/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7022592537325150312&amp;postID=5227956008091449728" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7022592537325150312/posts/default/5227956008091449728?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7022592537325150312/posts/default/5227956008091449728?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/stevefinck/~3/btosKSS4CiA/productive-programmer.html" title="The Productive Programmer" /><author><name>Steve Finck</name><uri>http://www.blogger.com/profile/00111289021695221865</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_l2NoBR63c4U/SWiekfb1SBI/AAAAAAAAAAM/fMfZeEBrtiE/S220/Photo+7.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://stevefinck.blogspot.com/2009/03/productive-programmer.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D04NSXc4cSp7ImA9WxVUEE8.&quot;"><id>tag:blogger.com,1999:blog-7022592537325150312.post-7213309117019107601</id><published>2009-03-13T15:15:00.007-05:00</published><updated>2009-03-14T05:19:58.939-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-14T05:19:58.939-05:00</app:edited><title>No Fluff Just Stuff</title><content type="html">Today is the first day of the &lt;a href="http://www.nofluffjuststuff.com/show_view.jsp?showId=81" target="_new"&gt;Twin Cities Software Symposium&lt;/a&gt;.  The first talk I attended was REST: Information Driven Architectures for the 21st Century by &lt;a href="http://www.nofluffjuststuff.com/conference/speaker/brian_sletten.html" target="_new"&gt;Brian Sletten&lt;/a&gt;.  Very informative.  Definitely not an introductory REST talk.  I'm curious to hear Brian's Semantic SOA talk later today.  A couple things that stuck included &lt;a href="http://www.postel.org/postel.html" target="_new"&gt;Jon Postel's&lt;/a&gt; &lt;span style="font-style:italic;"&gt;"Be liberal in what you accept, and conservative in what you send."&lt;/span&gt;  &lt;br /&gt;&lt;br /&gt;A couple of things Brian talked about that sound like they're worth investigating include &lt;a href="http://www.sinatrarb.com/" target="_new"&gt;Sinatra&lt;/a&gt;, a DSL for building web applications in Ruby and &lt;a href="http://labs.systemone.at/retrievr/" target="_new"&gt;retrievr&lt;/a&gt;, which lets you find &lt;a href="http://www.flickr.com/"&gt;Flickr&lt;/a&gt; photos by creating a sketch of what you're after.&lt;br /&gt;&lt;br /&gt;Brian's new gig sounds pretty cool: &lt;a href="http://leagueoflegends.com/" target="_new"&gt;League of Legends&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7022592537325150312-7213309117019107601?l=stevefinck.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/awR-xChGYVAX3qcPr_IJE_rEtKA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/awR-xChGYVAX3qcPr_IJE_rEtKA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/awR-xChGYVAX3qcPr_IJE_rEtKA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/awR-xChGYVAX3qcPr_IJE_rEtKA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/stevefinck/~4/4msbu9h61OQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://stevefinck.blogspot.com/feeds/7213309117019107601/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7022592537325150312&amp;postID=7213309117019107601" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7022592537325150312/posts/default/7213309117019107601?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7022592537325150312/posts/default/7213309117019107601?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/stevefinck/~3/4msbu9h61OQ/no-fluff-just-stuff.html" title="No Fluff Just Stuff" /><author><name>Steve Finck</name><uri>http://www.blogger.com/profile/00111289021695221865</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_l2NoBR63c4U/SWiekfb1SBI/AAAAAAAAAAM/fMfZeEBrtiE/S220/Photo+7.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://stevefinck.blogspot.com/2009/03/no-fluff-just-stuff.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0MAQn48eyp7ImA9WxVWGU0.&quot;"><id>tag:blogger.com,1999:blog-7022592537325150312.post-8987789242019314258</id><published>2009-03-01T06:05:00.002-06:00</published><updated>2009-03-01T06:10:43.073-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-01T06:10:43.073-06:00</app:edited><title>Einstein</title><content type="html">I recently finished reading &lt;a href="http://www.amazon.com/Einstein-Life-Universe-Walter-Isaacson/dp/0743264746/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1235909205&amp;sr=1-1" target="_new"&gt;Einstein: His Life and Universe&lt;/a&gt;, a biography by Walter Isaacson.  I enjoyed it very much.  It gave excellent insight into the man.  The most interesting thing to me was that even though he was brilliant, he struggled with things in his everyday life just like everyone else.  His family life wasn't perfect and neither were many other aspects of his life.  I love the fact he was a non-conformist not only in science, but in political affairs as well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7022592537325150312-8987789242019314258?l=stevefinck.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/wbRvFipsy7UHjh9Y9zib-ImB2sg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wbRvFipsy7UHjh9Y9zib-ImB2sg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/wbRvFipsy7UHjh9Y9zib-ImB2sg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wbRvFipsy7UHjh9Y9zib-ImB2sg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/stevefinck/~4/VvK_p8D8d8c" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://stevefinck.blogspot.com/feeds/8987789242019314258/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7022592537325150312&amp;postID=8987789242019314258" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7022592537325150312/posts/default/8987789242019314258?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7022592537325150312/posts/default/8987789242019314258?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/stevefinck/~3/VvK_p8D8d8c/einstein.html" title="Einstein" /><author><name>Steve Finck</name><uri>http://www.blogger.com/profile/00111289021695221865</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_l2NoBR63c4U/SWiekfb1SBI/AAAAAAAAAAM/fMfZeEBrtiE/S220/Photo+7.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://stevefinck.blogspot.com/2009/03/einstein.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEQHQX8-cSp7ImA9WxVXFkg.&quot;"><id>tag:blogger.com,1999:blog-7022592537325150312.post-1886251589528449684</id><published>2009-02-14T17:04:00.008-06:00</published><updated>2009-02-14T18:05:30.159-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-14T18:05:30.159-06:00</app:edited><title>Crystal Clear</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.amazon.com/Crystal-Clear-Human-Powered-Methodology-Development/dp/0201699478"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 80px; height: 90px;" src="http://2.bp.blogspot.com/_l2NoBR63c4U/SZdbvnSiX2I/AAAAAAAAAB0/rxiKqlguKEE/s200/crystalclear.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5302807959810760546" /&gt;&lt;/a&gt;&lt;br /&gt;I just finished up &lt;a href="http://www.amazon.com/Crystal-Clear-Human-Powered-Methodology-Development/dp/0201699478" target="_new"&gt;Crystal Clear&lt;/a&gt; by &lt;a href="http://alistair.cockburn.us/" target="_new"&gt;Alistair Cockburn&lt;/a&gt;.  A very good book, but it was a stretch to get it to 300 pages. The first chapter threw me for a loop the way it was structured and the last chapter, a case study, was a dud. While the team size for Crystal should be 8 or less, a case study with 1.5 developers doesn't sound like a very good case study. However, the chapters in between were excellent. Cockburn admittedly structured each chapter differently attempting to cater to different readers. It gave me some insights into how a successful team should interact and was very complementary to the other Agile documentation that I've seen. I definitely liked his guidance on Walking Skeleton and Incremental Re-architecture. It helped me reinforce the concept of an Architectural Slice that I've been conveying to the folks on the large Java project that I'm currently working on.&lt;br /&gt;&lt;br /&gt;Kudos to Andy Miller for recommending this book!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7022592537325150312-1886251589528449684?l=stevefinck.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ov9EPDPKF7mJcreIc2XLo64lk1A/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ov9EPDPKF7mJcreIc2XLo64lk1A/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ov9EPDPKF7mJcreIc2XLo64lk1A/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ov9EPDPKF7mJcreIc2XLo64lk1A/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/stevefinck/~4/Ubn-pQIXU8I" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://stevefinck.blogspot.com/feeds/1886251589528449684/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7022592537325150312&amp;postID=1886251589528449684" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7022592537325150312/posts/default/1886251589528449684?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7022592537325150312/posts/default/1886251589528449684?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/stevefinck/~3/Ubn-pQIXU8I/crystal-clear.html" title="Crystal Clear" /><author><name>Steve Finck</name><uri>http://www.blogger.com/profile/00111289021695221865</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_l2NoBR63c4U/SWiekfb1SBI/AAAAAAAAAAM/fMfZeEBrtiE/S220/Photo+7.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_l2NoBR63c4U/SZdbvnSiX2I/AAAAAAAAAB0/rxiKqlguKEE/s72-c/crystalclear.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://stevefinck.blogspot.com/2009/02/crystal-clear.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D08FRXk6fip7ImA9WxVXFk8.&quot;"><id>tag:blogger.com,1999:blog-7022592537325150312.post-3768187264347505352</id><published>2009-02-14T09:13:00.003-06:00</published><updated>2009-02-14T09:36:54.716-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-14T09:36:54.716-06:00</app:edited><title>Shipped It!</title><content type="html">&lt;a href="http://www.jaredrichardson.net/" target="_new"&gt;Jared Richardson&lt;/a&gt; of &lt;a href="http://www.pragprog.com/titles/prj/ship-it" target="_new"&gt;Ship It!&lt;/a&gt; fame spoke at the &lt;a href="http://www.intertech.com/UserGroups/JavaUserGroup.aspx" target="_new"&gt;TCJUG&lt;/a&gt; on Monday.  His topic was your career.  He started out a bit slow, but the pace picked up as his presentation progressed.  I think most folks got quite a bit out of it, but it reminded me of several presentations I had seen before.  Particularly there was some overlap with a presentation I went to several years ago by Dave Thomas at NFJS Denver.  Dave's theme was about investing in your career.  That was the first time I heard Dave's infamous "Herding Racehorses and Racing Sheep".&lt;br /&gt;&lt;br /&gt;I did learn some new stuff at Jared's presentation.  In particular I learned about &lt;a href="http://qik.com" target="_new"&gt;qik&lt;/a&gt;, which looks pretty cool.  It allows you to share a live video feed from your phone; Jared had someone in the audience do the live feed to qik using Jared's iPhone.  I liked Jared's acronym for public speaking (L)ock eyes, (I)ntonation, (P)ause as well.  This will definitely come in handy for me in the future.&lt;br /&gt;&lt;br /&gt;The part that surprised me the most was how few people in the audience new about Blogs and Feed Readers.  Another shocker was how few people had heard of &lt;a href="http://www.pragprog.com/titles/tpp/the-pragmatic-programmer" target="_new"&gt;The Pragmatic Programmer&lt;/a&gt;.  Maybe people were just too lazy to raise their hands.  If not, c'mon TCJUG attendees!  &lt;br /&gt;&lt;br /&gt;Thanks for flying all the way to Minnesota to enlighten us Jared!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7022592537325150312-3768187264347505352?l=stevefinck.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/QEqBA0Q9xBRi-TDGbOlqwemcN9s/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QEqBA0Q9xBRi-TDGbOlqwemcN9s/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/QEqBA0Q9xBRi-TDGbOlqwemcN9s/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QEqBA0Q9xBRi-TDGbOlqwemcN9s/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/stevefinck/~4/V_ZggUgl7dQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://stevefinck.blogspot.com/feeds/3768187264347505352/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7022592537325150312&amp;postID=3768187264347505352" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7022592537325150312/posts/default/3768187264347505352?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7022592537325150312/posts/default/3768187264347505352?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/stevefinck/~3/V_ZggUgl7dQ/shipped-it.html" title="Shipped It!" /><author><name>Steve Finck</name><uri>http://www.blogger.com/profile/00111289021695221865</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_l2NoBR63c4U/SWiekfb1SBI/AAAAAAAAAAM/fMfZeEBrtiE/S220/Photo+7.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://stevefinck.blogspot.com/2009/02/shipped-it.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0EFQ3w8fip7ImA9WxVQFEw.&quot;"><id>tag:blogger.com,1999:blog-7022592537325150312.post-1932698094555169342</id><published>2009-01-31T06:19:00.007-06:00</published><updated>2009-01-31T08:20:12.276-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-31T08:20:12.276-06:00</app:edited><title>Groovy Encapsulation - Say What?</title><content type="html">I'm reading &lt;a href="http://www.pragprog.com/titles/sdgrvr/groovy-recipes" target="_new"&gt;Groovy Recipes&lt;/a&gt; by &lt;a href="http://thirstyhead.com/" target="_new"&gt;Scott Davis&lt;/a&gt; and find this troubling:&lt;br /&gt;&lt;br /&gt;class Book3{ &lt;br /&gt;  private String title &lt;br /&gt;  private String getTitle(){} &lt;br /&gt;  private void setTitle(title){} &lt;br /&gt;} &lt;br /&gt;def b3 = new Book3() &lt;br /&gt;b3.@title = "Groovy Recipes" &lt;br /&gt;println b3.@title &lt;br /&gt;===&gt; Groovy Recipes &lt;br /&gt;&lt;br /&gt;In Groovy, private attributes can be modified, even if you use private setters.  That's not cool.  I'm hoping there's some way to enforce encapsulation, but it's not looking good right now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7022592537325150312-1932698094555169342?l=stevefinck.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/U_0ouTYRg8IFMFriH5q1oiib_WM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/U_0ouTYRg8IFMFriH5q1oiib_WM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/U_0ouTYRg8IFMFriH5q1oiib_WM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/U_0ouTYRg8IFMFriH5q1oiib_WM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/stevefinck/~4/qx9YmMbnJMc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://stevefinck.blogspot.com/feeds/1932698094555169342/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7022592537325150312&amp;postID=1932698094555169342" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7022592537325150312/posts/default/1932698094555169342?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7022592537325150312/posts/default/1932698094555169342?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/stevefinck/~3/qx9YmMbnJMc/groovy-encapsulation-say-what.html" title="Groovy Encapsulation - Say What?" /><author><name>Steve Finck</name><uri>http://www.blogger.com/profile/00111289021695221865</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_l2NoBR63c4U/SWiekfb1SBI/AAAAAAAAAAM/fMfZeEBrtiE/S220/Photo+7.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://stevefinck.blogspot.com/2009/01/groovy-encapsulation-say-what.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkYBSXgzcSp7ImA9WxVRGU0.&quot;"><id>tag:blogger.com,1999:blog-7022592537325150312.post-3621976251951661936</id><published>2009-01-25T06:52:00.001-06:00</published><updated>2009-01-25T10:15:58.689-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-25T10:15:58.689-06:00</app:edited><title>Groovy!</title><content type="html">I just finished up &lt;a href="http://www.infoq.com/minibooks/grails" target="_new"&gt;Getting Started with Grails&lt;/a&gt; the free book from &lt;a href="http://www.infoq.com" target="_new"&gt;InfoQ&lt;/a&gt; by &lt;a href="http://jasonrudolph.com/" target="_new"&gt;Jason Rudolph&lt;/a&gt;.  An excellent book.  Thanks Jason!  I thought it was so good I decided to pay for it (even though it's free) to help support the author and InfoQ.  There's a few discrepancies because the book is almost two years old and quite a bit has changed in Grails since then, but I had very few problems working through the examples with the latest version of Grails.&lt;br /&gt;&lt;br /&gt;I'm definitely on the Groovy and Grails learning train.  Both still seem very promising to me (being a Java guy) and I'm going to continue investigating both.  While I set out to learn more about Ruby and Rails this year, the winds have shifted and I'm now focused on Groovy and Grails.  I purchased the PDF version of &lt;a href="http://thirstyhead.com/" target="_new"&gt;Scott Davis'&lt;/a&gt; book &lt;a href="http://www.pragprog.com/titles/sdgrvr/groovy-recipes" target="_new"&gt;Groovy Recipes&lt;/a&gt; and &lt;a href="http://www.amazon.com/gp/product/1590599950" target="_new"&gt;The Definitive Guide to Grails&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7022592537325150312-3621976251951661936?l=stevefinck.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/MdIJeZCHr2QnyJBCWtL2L5Yqf5Y/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MdIJeZCHr2QnyJBCWtL2L5Yqf5Y/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/MdIJeZCHr2QnyJBCWtL2L5Yqf5Y/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MdIJeZCHr2QnyJBCWtL2L5Yqf5Y/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/stevefinck/~4/ljic1jAHzxY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://stevefinck.blogspot.com/feeds/3621976251951661936/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7022592537325150312&amp;postID=3621976251951661936" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7022592537325150312/posts/default/3621976251951661936?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7022592537325150312/posts/default/3621976251951661936?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/stevefinck/~3/ljic1jAHzxY/groovy.html" title="Groovy!" /><author><name>Steve Finck</name><uri>http://www.blogger.com/profile/00111289021695221865</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_l2NoBR63c4U/SWiekfb1SBI/AAAAAAAAAAM/fMfZeEBrtiE/S220/Photo+7.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://stevefinck.blogspot.com/2009/01/groovy.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkUERHYzfyp7ImA9WxVRGU0.&quot;"><id>tag:blogger.com,1999:blog-7022592537325150312.post-2914251250898679486</id><published>2009-01-17T06:38:00.001-06:00</published><updated>2009-01-25T10:16:45.887-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-25T10:16:45.887-06:00</app:edited><title>Hockey Day Minnesota</title><content type="html">Today is &lt;a href="http://wild.nhl.com/team/app/?service=page&amp;page=NHLPage&amp;id=18611" target="_new"&gt;Hockey Day Minnesota&lt;/a&gt;.  I'm going to try to honor that by getting my daughters out on the neighbor's pond followed up by taking them to the University of Minnesota Women's game against Bemidji State.  It'll then be on to termite practice where the kids will get to play pond hockey instead of practicing.  We'll wind it down with watching some of the Gopher and Wild games.  It should be a ton of fun!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7022592537325150312-2914251250898679486?l=stevefinck.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/9AT0T4R724KdGWJQ2Ye1mzD1608/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9AT0T4R724KdGWJQ2Ye1mzD1608/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/9AT0T4R724KdGWJQ2Ye1mzD1608/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9AT0T4R724KdGWJQ2Ye1mzD1608/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/stevefinck/~4/2oUTZL03vUY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://stevefinck.blogspot.com/feeds/2914251250898679486/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7022592537325150312&amp;postID=2914251250898679486" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7022592537325150312/posts/default/2914251250898679486?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7022592537325150312/posts/default/2914251250898679486?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/stevefinck/~3/2oUTZL03vUY/hockey-day-minnesota.html" title="Hockey Day Minnesota" /><author><name>Steve Finck</name><uri>http://www.blogger.com/profile/00111289021695221865</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_l2NoBR63c4U/SWiekfb1SBI/AAAAAAAAAAM/fMfZeEBrtiE/S220/Photo+7.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://stevefinck.blogspot.com/2009/01/hockey-day-minnesota.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkUHRHo7eyp7ImA9WxVRGU0.&quot;"><id>tag:blogger.com,1999:blog-7022592537325150312.post-1316734569320524412</id><published>2009-01-17T06:14:00.001-06:00</published><updated>2009-01-25T10:17:15.403-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-25T10:17:15.403-06:00</app:edited><title>Code Freeze</title><content type="html">I attended the &lt;a href="http://www.umsec.umn.edu/events/Code-Freeze-2009" target="_new"&gt;Code Freeze&lt;/a&gt; conference at the University of Minnesota on Thursday.  It was an excellent local event, especially considering it was an all-day event for only $90.  This was the first year I've attended Code Freeze; this year's theme was Maximizing Developer Value.  &lt;a href="http://nealford.com" target="_new"&gt;Neal Ford&lt;/a&gt; kicked things off and as usual he knocked it out of the park.  His topic was On the Lamb from the Furniture Police.  It covered the fact that as programmers we're hired to concentrate for long periods of time, yet corporate environments provide the exact opposite affect.&lt;br /&gt;&lt;br /&gt;Other speakers included Luke Francl, &lt;a href="http://ntschutta.com/jat/" target="_new"&gt;Nate Schutta&lt;/a&gt;, Susan Standiford, Andy Miller and Tomo Lennox.  I was very impressed with Nate's presentation, it seemed to directly pick-up where Neil left off.  I was particularly interested in Nate's comments about the working of the human brain, as it is an area of interest for me.&lt;br /&gt;&lt;br /&gt;I was also intrigued by Andy's presentation entitled "Why I don’t estimate with "points" (and how you too can be delivered from the tedium of repetitive estimation)".  Andy and I are currently at the same client working together on a large re-engineering project.  I haven't work with Andy for long, but I was very impressed with his presentation and was impressed with his pragmatic approach to estimating.  It definitely opened my eyes to new ideas.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7022592537325150312-1316734569320524412?l=stevefinck.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/NBJ8JS9aDJY88Dyo3wI5ofQIhJ8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/NBJ8JS9aDJY88Dyo3wI5ofQIhJ8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/NBJ8JS9aDJY88Dyo3wI5ofQIhJ8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/NBJ8JS9aDJY88Dyo3wI5ofQIhJ8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/stevefinck/~4/x1Cn36sZ-uE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://stevefinck.blogspot.com/feeds/1316734569320524412/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7022592537325150312&amp;postID=1316734569320524412" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7022592537325150312/posts/default/1316734569320524412?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7022592537325150312/posts/default/1316734569320524412?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/stevefinck/~3/x1Cn36sZ-uE/code-freeze.html" title="Code Freeze" /><author><name>Steve Finck</name><uri>http://www.blogger.com/profile/00111289021695221865</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_l2NoBR63c4U/SWiekfb1SBI/AAAAAAAAAAM/fMfZeEBrtiE/S220/Photo+7.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://stevefinck.blogspot.com/2009/01/code-freeze.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkMEQH87eyp7ImA9WxVRGU0.&quot;"><id>tag:blogger.com,1999:blog-7022592537325150312.post-8363981061748880331</id><published>2009-01-10T07:38:00.001-06:00</published><updated>2009-01-25T10:20:01.103-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-25T10:20:01.103-06:00</app:edited><title>Hackers and Painters</title><content type="html">One of my 2009 resolutions is to read more.  I just finished up &lt;a href="http://www.amazon.com/Hackers-Painters-Big-Ideas-Computer/dp/0596006624" target="_new"&gt;Hackers and Painters&lt;/a&gt;.  I had made it half-way through a couple of years ago and decided to start over and I made it all the way through.  A quick and insightful read.  &lt;a href="http://www.paulgraham.com/" target="_new"&gt;Paul Graham&lt;/a&gt; is fairly opinionated, which makes for a good read.  I've never seen Lisp, but I am very curious if it as good as he claims.  Based on my experiences, I definitely agree with his thoughts on development productivity.  It makes me that much more interested in learning Ruby and Rails.  The last time I worked seriously with a dynamic language was with Perl in college when we were building the Heil X6 SMT's kernel, simulator and assembler.  The Heil X6 was the computer we (a team of 6 graduate and undergraduates) built in our ECE 554 Digital Engineering Lab using FPGAs that we had to hand-wire.  What a trip!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7022592537325150312-8363981061748880331?l=stevefinck.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/dKjm2Ucilvq8R5cLbbPg_IBiQyU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dKjm2Ucilvq8R5cLbbPg_IBiQyU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/dKjm2Ucilvq8R5cLbbPg_IBiQyU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dKjm2Ucilvq8R5cLbbPg_IBiQyU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/stevefinck/~4/if8u9tS0P1g" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://stevefinck.blogspot.com/feeds/8363981061748880331/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7022592537325150312&amp;postID=8363981061748880331" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7022592537325150312/posts/default/8363981061748880331?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7022592537325150312/posts/default/8363981061748880331?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/stevefinck/~3/if8u9tS0P1g/hackers-and-painters.html" title="Hackers and Painters" /><author><name>Steve Finck</name><uri>http://www.blogger.com/profile/00111289021695221865</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_l2NoBR63c4U/SWiekfb1SBI/AAAAAAAAAAM/fMfZeEBrtiE/S220/Photo+7.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://stevefinck.blogspot.com/2009/01/hackers-and-painters.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkUNQn8-eSp7ImA9WxVRGU0.&quot;"><id>tag:blogger.com,1999:blog-7022592537325150312.post-85295609646032841</id><published>2009-01-10T07:13:00.002-06:00</published><updated>2009-01-25T10:18:13.151-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-25T10:18:13.151-06:00</app:edited><title>Groovy and Grails</title><content type="html">At the DevJam Jam Session on Wednesday, &lt;a href="http://mikehugo.com/" target="_new"&gt;Mike Hugo&lt;/a&gt; gave a presentation on Groovy and Grails.  I had heard Scott Davis speak about Groovy and Grails over a year ago and thought it was pretty cool, but back then it didn't feel real.  Since then Grails has produced a 1.0 release; put simply I was extremely impressed.  Mike is a very good presenter, his slides had very few words and some great pictures.  He kept it lively with some humorous slides plus some succinct demos.  I've been looking at Ruby on Rails off and on over the last couple of years.  One of my New Year's resolutions for 2009 was to really dig into Rails and write a decent sized application.  However, after Mike's presentation I began to think that a better investment of my time may be in Grails given that it runs on the JVM and plays very nicely with the Java language.  I downloaded Grails yesterday and played around with it a bit.  Very nice.  Just like with Rails, it's amazingly easy to get a site up and running quickly.  Grails is still a 1.0 release, so I have some concerns about it's maturity.  However, it runs on the JVM and uses Spring, Hibernate and SiteMesh under the covers.  Obviously all of them are very mature.  &lt;br /&gt;&lt;br /&gt;After the presentation by Mike, we entered the Fish Bowl round table discussion, which I believe is the best part of the Jam Sessions.  I'm amazed by the brain power in the room at these sessions and I definitely like the Fight Club mentality.  The conversation touched on a number of topics including the advantages / disadvantages of statically vs dynamically typed languages.  The consensus seemed to be we're definitely seeing a movement toward dynamically typed languages.  Someone even dropped the Lisp quote along the lines of Hackers and Painters ("...we could do that in Lisp back in 1968..."), which was interesting given that I just finished the book. One person, who seemed to know a ton about language theory (he even dropped F#), mentioned that he thinks that the gulf between the two is getting bigger and bigger: static languages are becoming more strongly typed and dynamic languages are/will become more dynamic.  It makes sense to me given where I see the Java language headed and makes my desire to learn Ruby and Groovy that much stronger.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7022592537325150312-85295609646032841?l=stevefinck.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/jzlfTKswj8xbcONSF8ThKWRNXCc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jzlfTKswj8xbcONSF8ThKWRNXCc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/jzlfTKswj8xbcONSF8ThKWRNXCc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jzlfTKswj8xbcONSF8ThKWRNXCc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/stevefinck/~4/619UwJkxg4Q" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://stevefinck.blogspot.com/feeds/85295609646032841/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7022592537325150312&amp;postID=85295609646032841" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7022592537325150312/posts/default/85295609646032841?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7022592537325150312/posts/default/85295609646032841?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/stevefinck/~3/619UwJkxg4Q/groovy-and-grails.html" title="Groovy and Grails" /><author><name>Steve Finck</name><uri>http://www.blogger.com/profile/00111289021695221865</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_l2NoBR63c4U/SWiekfb1SBI/AAAAAAAAAAM/fMfZeEBrtiE/S220/Photo+7.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://stevefinck.blogspot.com/2009/01/groovy-and-grails.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkYFQnc_eSp7ImA9WB9aF0w.&quot;"><id>tag:blogger.com,1999:blog-7022592537325150312.post-4484633622374477726</id><published>2008-01-05T09:31:00.000-06:00</published><updated>2008-01-07T07:55:13.941-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-01-07T07:55:13.941-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Scalability" /><category scheme="http://www.blogger.com/atom/ns#" term="Web Development" /><title>Building Scalable Web Sites</title><content type="html">I just finished reading the book &lt;a href="http://www.amazon.com/Building-Scalable-Web-Sites-applications/dp/0596102356/ref=pd_bbs_sr_1?ie=UTF8&amp;s=books&amp;qid=1199547405&amp;sr=8-1" target="_blank"&gt; Building Scalable Web Sites&lt;/a&gt; by Cal Henderson of &lt;a href="http://www.flickr.com" target="_blank"&gt;Flickr&lt;/a&gt; fame.  It was a very interesting read and covered quite a few things I wasn't expecting.  Most of the code was PHP, which I've never worked with, so that in itself was cool to see for the first time.  He covered a ton of topics, including walking through how they scaled Flickr.  I got the most out of chapter 9: Scaling Web Applications.  He also gives a decent overview of Web Services in the last chapter, which I wasn't expecting.  The book was easy to read and some of the difficult topics he explained clearly and concisely.&lt;br /&gt;&lt;br /&gt;Overall it was an excellent book and I would recommend it to anyone building web sites regardless of whether or not they're using PHP.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7022592537325150312-4484633622374477726?l=stevefinck.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/mA-bdJ7ovGjzwK6uAOF2_XS4PEU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/mA-bdJ7ovGjzwK6uAOF2_XS4PEU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/mA-bdJ7ovGjzwK6uAOF2_XS4PEU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/mA-bdJ7ovGjzwK6uAOF2_XS4PEU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/stevefinck/~4/BQ8NuiOmXFU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://stevefinck.blogspot.com/feeds/4484633622374477726/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7022592537325150312&amp;postID=4484633622374477726" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7022592537325150312/posts/default/4484633622374477726?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7022592537325150312/posts/default/4484633622374477726?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/stevefinck/~3/BQ8NuiOmXFU/building-scalable-web-sites.html" title="Building Scalable Web Sites" /><author><name>Steve Finck</name><uri>http://www.blogger.com/profile/00111289021695221865</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_l2NoBR63c4U/SWiekfb1SBI/AAAAAAAAAAM/fMfZeEBrtiE/S220/Photo+7.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://stevefinck.blogspot.com/2008/01/building-scalable-web-sites.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE4DR3w8eCp7ImA9WB9aFUk.&quot;"><id>tag:blogger.com,1999:blog-7022592537325150312.post-157113732719234143</id><published>2007-12-21T08:44:00.000-06:00</published><updated>2008-01-05T09:29:36.270-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-01-05T09:29:36.270-06:00</app:edited><title>Spring 2.5 Upgrade</title><content type="html">&lt;span style="font-size:100%;"&gt;I upgraded out platform infrastructure to Spring 2.5 this morning.  It was pretty straight-forward, although I had one painful issue.  For any of our tests that use Hibernate, I was getting the following error:&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Caused by: org.hibernate.HibernateException: saveOrUpdate is not valid without active transaction&lt;br /&gt;at org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:297)&lt;br /&gt;at $Proxy39.saveOrUpdate(Unknown Source)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;After a bit of digging, I realized we had the following Hibernate property set:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:85%;"&gt;&lt;prop key="hibernate.current_session_context_class"&gt;&amp;lt;prop key="hibernate.current_session_context_class"&amp;gt;org.hibernate.context.ThreadLocalSessionContext&amp;lt;/prop&amp;gt;&lt;/prop&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Basically, this was preventing Spring from managing the transaction context correctly.  Once I removed it, all of our tests passed.  I wonder if this is the reason why we've had some problems with NOT_SUPPORTED and SUPPORTS previously.  This will require some additional testing...&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/7022592537325150312-157113732719234143?l=stevefinck.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/pE8Rqg8FDTe5ACGu0fxYFMfkY7A/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pE8Rqg8FDTe5ACGu0fxYFMfkY7A/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/pE8Rqg8FDTe5ACGu0fxYFMfkY7A/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pE8Rqg8FDTe5ACGu0fxYFMfkY7A/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/stevefinck/~4/bjUocJXg7Mk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://stevefinck.blogspot.com/feeds/157113732719234143/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7022592537325150312&amp;postID=157113732719234143" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7022592537325150312/posts/default/157113732719234143?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7022592537325150312/posts/default/157113732719234143?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/stevefinck/~3/bjUocJXg7Mk/spring-25-upgrade.html" title="Spring 2.5 Upgrade" /><author><name>Steve Finck</name><uri>http://www.blogger.com/profile/00111289021695221865</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_l2NoBR63c4U/SWiekfb1SBI/AAAAAAAAAAM/fMfZeEBrtiE/S220/Photo+7.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://stevefinck.blogspot.com/2007/12/spring-25-upgrade.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkIDRHY6eip7ImA9WB9bEUo.&quot;"><id>tag:blogger.com,1999:blog-7022592537325150312.post-7808972175341806785</id><published>2007-12-20T10:57:00.000-06:00</published><updated>2007-12-20T11:09:35.812-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-12-20T11:09:35.812-06:00</app:edited><title>Spore</title><content type="html">I stumbled across a new PC game today entitled &lt;a href="http://www.spore.com" target="_blank"&gt;Spore&lt;/a&gt;.  It's not GA yet, but it looks extremely interesting.  It looks like &lt;a href="http://www.2kgames.com/civ4/home.htm" target="_blank"&gt;Civilization&lt;/a&gt; meets &lt;a href="http://thesims.ea.com/" target="_blank"&gt;The Sims&lt;/a&gt;.  Spore was created by Will Wright, the creator of The Sims.  Here's the &lt;a href="http://video.google.com/videoplay?docid=8372603330420559198" target="_blank"&gt;video&lt;/a&gt; I watched.  You start as a single-celled organism and you evolve your species all the way up to an advanced spaced-based civilization.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7022592537325150312-7808972175341806785?l=stevefinck.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/diwsaPQ8de5jxOrYhhKimNOYJOA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/diwsaPQ8de5jxOrYhhKimNOYJOA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/diwsaPQ8de5jxOrYhhKimNOYJOA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/diwsaPQ8de5jxOrYhhKimNOYJOA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/stevefinck/~4/3GJ8x2e8bb0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://stevefinck.blogspot.com/feeds/7808972175341806785/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7022592537325150312&amp;postID=7808972175341806785" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7022592537325150312/posts/default/7808972175341806785?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7022592537325150312/posts/default/7808972175341806785?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/stevefinck/~3/3GJ8x2e8bb0/spore.html" title="Spore" /><author><name>Steve Finck</name><uri>http://www.blogger.com/profile/00111289021695221865</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_l2NoBR63c4U/SWiekfb1SBI/AAAAAAAAAAM/fMfZeEBrtiE/S220/Photo+7.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://stevefinck.blogspot.com/2007/12/spore.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0UMR3k9fCp7ImA9WB9UF04.&quot;"><id>tag:blogger.com,1999:blog-7022592537325150312.post-5213580029235174290</id><published>2007-12-15T10:08:00.000-06:00</published><updated>2007-12-15T10:14:46.764-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-12-15T10:14:46.764-06:00</app:edited><title>Desktop Matters (TSE Day 4)</title><content type="html">In the second session of the morning, I decided to attend the talk entitled &lt;b&gt;Desktop Matters&lt;/b&gt; by Jim Moore.  I didn't learn much in this presentation.  He walked through  the history of computers from a UI perpsective: mainframe to client server to web.  He then went into UI technologies that are available today to build rich applications: Flex, Apollo, Silverlight, GWT, WebStart, etc.  He had a couple of bullets points for each, but he didn't get into much detail in terms of what each does.  I would've liked to have seen more in the way of the positives vs. negatives of each and some recommendations.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7022592537325150312-5213580029235174290?l=stevefinck.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/TwSLP9wZzIkmgS4OPlbsaleLz6w/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/TwSLP9wZzIkmgS4OPlbsaleLz6w/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/TwSLP9wZzIkmgS4OPlbsaleLz6w/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/TwSLP9wZzIkmgS4OPlbsaleLz6w/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/stevefinck/~4/WBU0ijfDrgg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://stevefinck.blogspot.com/feeds/5213580029235174290/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7022592537325150312&amp;postID=5213580029235174290" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7022592537325150312/posts/default/5213580029235174290?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7022592537325150312/posts/default/5213580029235174290?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/stevefinck/~3/WBU0ijfDrgg/desktop-matters-tse-day-4.html" title="Desktop Matters (TSE Day 4)" /><author><name>Steve Finck</name><uri>http://www.blogger.com/profile/00111289021695221865</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_l2NoBR63c4U/SWiekfb1SBI/AAAAAAAAAAM/fMfZeEBrtiE/S220/Photo+7.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://stevefinck.blogspot.com/2007/12/desktop-matters-tse-day-4.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk8FSHgzeSp7ImA9WB9UF04.&quot;"><id>tag:blogger.com,1999:blog-7022592537325150312.post-7985474248142097928</id><published>2007-12-15T09:43:00.000-06:00</published><updated>2007-12-15T10:06:59.681-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-12-15T10:06:59.681-06:00</app:edited><title>Architecture Enforcement with AspectJ (TSE Day 4)</title><content type="html">I just attended an extremely interesting session entitled &lt;b&gt;Architecture Enforcement with AspectJ and Other Tools&lt;/b&gt; given by Alef Arendsen and Ramnivas Laddad.  They first showed &lt;a href="http://www.headwaysoftware.com/index.php" target="_blank"&gt;Structure101&lt;/a&gt;, which gives you a visual representation of your architecture, including displaying package structure, cyclic dependencies, etc.  I hadn't heard of Structure101 previously.  It looks like there are several versions including both free and for-fee.&lt;br /&gt;&lt;br /&gt;They next showed several examples of using &lt;a href="http://www.eclipse.org/aspectj/" target="_blank"&gt;AspectJ&lt;/a&gt; to enforce architecture rules both at compile-time and runtime.  This included rules like:&lt;br /&gt;&lt;br /&gt;- don't use straight JDBC, instead use Spring JDBC&lt;br /&gt;- don't return null Collections&lt;br /&gt;- ensure that non-thread safe objects are never accessed by multiple threads simultaneously&lt;br /&gt;&lt;br /&gt;It was all AspectJ plus Java.  Very cool!  The compile-time errors show up as standard compile errors in Eclipse and the runtime errors can be exceptions or some type of log message using Log4j or similar.  This presents some very interesting options if you're working on a medium to large-sized team and want to enforce a clean architecture.  I can already think of a number of places that this would help us immensely.  It sounds like it's well worth the investment.  Obviously you'll still want to have a Software Architecture document, but this gives you a way to enforce what's in the document.&lt;br /&gt;&lt;br /&gt;I am a little concerned about the runtime overhead of AspectJ for the enforcement of the runtime rules, but it's worth experimenting with to see how much overhead is actually involved.  I asked the speakers about this and I'm not sure they understood the question, but they mentioned the overhead was minimal.  I'm worried about the case where you wind up with hundreds (or even thousands) of runtime rules and the overhead that is introduced.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7022592537325150312-7985474248142097928?l=stevefinck.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Oy4rDaaoFE9JLJeqmkF7eNhWfoU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Oy4rDaaoFE9JLJeqmkF7eNhWfoU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Oy4rDaaoFE9JLJeqmkF7eNhWfoU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Oy4rDaaoFE9JLJeqmkF7eNhWfoU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/stevefinck/~4/zLZeOqo2Z6w" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://stevefinck.blogspot.com/feeds/7985474248142097928/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7022592537325150312&amp;postID=7985474248142097928" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7022592537325150312/posts/default/7985474248142097928?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7022592537325150312/posts/default/7985474248142097928?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/stevefinck/~3/zLZeOqo2Z6w/architecture-enforcement-with-aspectj.html" title="Architecture Enforcement with AspectJ (TSE Day 4)" /><author><name>Steve Finck</name><uri>http://www.blogger.com/profile/00111289021695221865</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_l2NoBR63c4U/SWiekfb1SBI/AAAAAAAAAAM/fMfZeEBrtiE/S220/Photo+7.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://stevefinck.blogspot.com/2007/12/architecture-enforcement-with-aspectj.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0MERXw9eSp7ImA9WB9UFks.&quot;"><id>tag:blogger.com,1999:blog-7022592537325150312.post-1012235931805926242</id><published>2007-12-14T13:30:00.000-06:00</published><updated>2007-12-14T13:43:24.261-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-12-14T13:43:24.261-06:00</app:edited><title>GigaSpaces - The Spring Experience Day 3 Afternoon</title><content type="html">I just finished attending the session presented by Nati Shalom from &lt;a href="http://www.gigaspaces.com" target="_blank"&gt;GigaSpaces&lt;/a&gt;.  It reinforced a lot of the ideas I've been reading about in his various &lt;a href="http://www.gigaspaces.com/os_papers.html" target="_blank"&gt;white papers&lt;/a&gt; and &lt;a href="http://natishalom.typepad.com/" target="_blank"&gt;blog entries&lt;/a&gt;.  I'm extremely impressed with the GigaSpaces technology.  If you're not familiar with GigaSpaces, I'd highly recommend taking a look at it if you are writing a mid-size or large-scale application.  Basically, it's a grid platform for messaging, processing and data.  One interesting thing I learned is that they're holding an &lt;a href="http://openspaces.org/display/ODC/OpenSpaces+Developer+Challenge" target="_blank"&gt;OpenSpaces Developer Challenge&lt;/a&gt; that officially started on December 10th.  Final submissions are required by April 2nd, 2008.  First prize is a $10,000 gift card from Amazon, Best Buy, Circuit City and Apple.  That's a lot of toys for any geek to have in their hand!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7022592537325150312-1012235931805926242?l=stevefinck.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/z9Rt7ntNblBEYa4646vO5MKWGho/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/z9Rt7ntNblBEYa4646vO5MKWGho/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/z9Rt7ntNblBEYa4646vO5MKWGho/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/z9Rt7ntNblBEYa4646vO5MKWGho/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/stevefinck/~4/Cs3bRPytINQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://stevefinck.blogspot.com/feeds/1012235931805926242/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7022592537325150312&amp;postID=1012235931805926242" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7022592537325150312/posts/default/1012235931805926242?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7022592537325150312/posts/default/1012235931805926242?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/stevefinck/~3/Cs3bRPytINQ/gigaspaces-spring-experience-day-3.html" title="GigaSpaces - The Spring Experience Day 3 Afternoon" /><author><name>Steve Finck</name><uri>http://www.blogger.com/profile/00111289021695221865</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_l2NoBR63c4U/SWiekfb1SBI/AAAAAAAAAAM/fMfZeEBrtiE/S220/Photo+7.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://stevefinck.blogspot.com/2007/12/gigaspaces-spring-experience-day-3.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkQHQHo4fCp7ImA9WB9UFkk.&quot;"><id>tag:blogger.com,1999:blog-7022592537325150312.post-8394267766604571879</id><published>2007-12-14T09:49:00.000-06:00</published><updated>2007-12-14T10:05:31.434-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-12-14T10:05:31.434-06:00</app:edited><title>Practical Enterprise Concurrency</title><content type="html">In the second session of the morning, I attended a talk by Rob Harrop on &lt;b&gt;Practical Enterprise Concurrency&lt;/b&gt;.  It's a highly technical topic and Rob did a great job of presenting it.  It's obvious he knows what he's talking about.  He covered a variety of topics including:&lt;br /&gt;&lt;br /&gt;- The Java Memory Model&lt;br /&gt;- Common Bug Patterns&lt;br /&gt;- JDK Concurrency Utilities&lt;br /&gt;- Testing Concurrent Applications&lt;br /&gt;- Concurrency in Java 7&lt;br /&gt;&lt;br /&gt;The bug patterns were pretty common ones that I had seen previously.  He touched on the Condition interface as a replacement for wait/notify, which I wasn't previously aware of.  He also touched on CountDownLatch as being useful for scheduling parallel tasks.  I really need to read the &lt;a href="http://www.amazon.com/Java-Concurrency-Practice-Brian-Goetz/dp/0321349601/ref=pd_bbs_sr_1?ie=UTF8&amp;s=books&amp;qid=1197648263&amp;sr=1-1" target="_blank"&gt;Java Concurrency in Practice&lt;/a&gt; book I purchased a couple of months ago.&lt;br /&gt;&lt;br /&gt;Overall it was an excellent presentation.  In the future, I'll ensure I attend any of Rob's presentations, regardless of the topic.  Tonight he's hosting a BOF entitled &lt;b&gt;Extreme Scalability&lt;/b&gt;, which should be very interesting given the scalability research I've been doing as of late.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7022592537325150312-8394267766604571879?l=stevefinck.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/I8T1Oshv_tzdR8Jbr9zgSmmCo9k/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/I8T1Oshv_tzdR8Jbr9zgSmmCo9k/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/I8T1Oshv_tzdR8Jbr9zgSmmCo9k/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/I8T1Oshv_tzdR8Jbr9zgSmmCo9k/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/stevefinck/~4/3vPK8nCKl00" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://stevefinck.blogspot.com/feeds/8394267766604571879/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7022592537325150312&amp;postID=8394267766604571879" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7022592537325150312/posts/default/8394267766604571879?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7022592537325150312/posts/default/8394267766604571879?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/stevefinck/~3/3vPK8nCKl00/practical-enterprise-concurrency.html" title="Practical Enterprise Concurrency" /><author><name>Steve Finck</name><uri>http://www.blogger.com/profile/00111289021695221865</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_l2NoBR63c4U/SWiekfb1SBI/AAAAAAAAAAM/fMfZeEBrtiE/S220/Photo+7.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://stevefinck.blogspot.com/2007/12/practical-enterprise-concurrency.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEACR389fyp7ImA9WB9UFkk.&quot;"><id>tag:blogger.com,1999:blog-7022592537325150312.post-5612808884717460356</id><published>2007-12-14T07:41:00.000-06:00</published><updated>2007-12-14T08:32:46.167-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-12-14T08:32:46.167-06:00</app:edited><title>The Spring Experience - A Bad Start to Day 3</title><content type="html">I'm off to a horrible start this morning.  I couldn't get coffee (or orange juice) from the servers at breakfast.  I'm a coffee junkie, so needless to say it wasn't a good start.  &lt;br /&gt;&lt;br /&gt;The talk I'm sitting in is entitled &lt;b&gt;Batch Processing Performance&lt;/b&gt; and is being done by a couple of consultants from Accenture.  The first speaker is having all kinds of difficulties: microphones, projector and believe it or not, even PowerPoint.  I'll try to take the optimistic approach and know that the day can only get better.  &lt;br /&gt;&lt;br /&gt;After struggling to get going for about 15 minutes, the speaker started off by reciting word-for-word a 1,000 word article published in Computer Weekly.  What a complete waste.  I should have walked out 5 minutes ago when he mentioned his title, which included the word "manager".  After listening for another 10 minutes without any improvement, I'm walking out now...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7022592537325150312-5612808884717460356?l=stevefinck.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/RDM8YUkmS6EAf8bcce4l7q-ZU_E/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/RDM8YUkmS6EAf8bcce4l7q-ZU_E/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/RDM8YUkmS6EAf8bcce4l7q-ZU_E/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/RDM8YUkmS6EAf8bcce4l7q-ZU_E/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/stevefinck/~4/R605Bu45FPw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://stevefinck.blogspot.com/feeds/5612808884717460356/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=7022592537325150312&amp;postID=5612808884717460356" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/7022592537325150312/posts/default/5612808884717460356?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/7022592537325150312/posts/default/5612808884717460356?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/stevefinck/~3/R605Bu45FPw/spring-experience-day-3-morning.html" title="The Spring Experience - A Bad Start to Day 3" /><author><name>Steve Finck</name><uri>http://www.blogger.com/profile/00111289021695221865</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="26" height="32" src="http://1.bp.blogspot.com/_l2NoBR63c4U/SWiekfb1SBI/AAAAAAAAAAM/fMfZeEBrtiE/S220/Photo+7.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://stevefinck.blogspot.com/2007/12/spring-experience-day-3-morning.html</feedburner:origLink></entry></feed>

