<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;DUAERnY4eCp7ImA9WxBUEU4.&quot;"><id>tag:blogger.com,1999:blog-2472972155627143715</id><updated>2010-02-25T15:41:47.830-07:00</updated><title>Out of my Mind...</title><subtitle type="html">Random thoughts from the mind of Frederic Jean</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://blog.fredjean.net/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://blog.fredjean.net/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/2472972155627143715/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Frederic Jean</name><uri>http://www.blogger.com/profile/01975848477763160312</uri><email>noreply@blogger.com</email></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>47</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><feedburner:info uri="fredjean/outofmymind" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><geo:lat>39.929566</geo:lat><geo:long>-104.949317</geo:long><logo>http://creativecommons.org/images/public/somerights20.gif</logo><xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://blog.fredjean.net/xml/atom/feed.xml" /><feedburner:emailServiceId>fredjean/outofmymind</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Fblog.fredjean.net%2Fxml%2Fatom%2Ffeed.xml" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Fblog.fredjean.net%2Fxml%2Fatom%2Ffeed.xml" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Fblog.fredjean.net%2Fxml%2Fatom%2Ffeed.xml" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://blog.fredjean.net/xml/atom/feed.xml" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Fblog.fredjean.net%2Fxml%2Fatom%2Ffeed.xml" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Fblog.fredjean.net%2Fxml%2Fatom%2Ffeed.xml" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Fblog.fredjean.net%2Fxml%2Fatom%2Ffeed.xml" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><entry><title type="text">Links for 2010-02-09 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/fredjean/outofmymind/~3/1J0I6VaEcoo/fredjean" /><updated>2010-02-10T00:00:00-08:00</updated><id>http://del.icio.us/fredjean#2010-02-09</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://feeds.dzone.com/~r/zones/agile/~3/WbkVOdTTyek/5-reasons-why-agile"&gt;5 Reasons Why Agile Development Must Be Driven from the Top&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/fredjean/outofmymind/~4/1J0I6VaEcoo" height="1" width="1"/&gt;</content><feedburner:origLink>http://del.icio.us/fredjean#2010-02-09</feedburner:origLink></entry><entry gd:etag="W/&quot;CU4NSX05fyp7ImA9WxBREEo.&quot;"><id>tag:blogger.com,1999:blog-2472972155627143715.post-5509933886648693203</id><published>2009-12-28T21:43:00.001-07:00</published><updated>2009-12-29T01:06:38.327-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-29T01:06:38.327-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="JRuby" /><category scheme="http://www.blogger.com/atom/ns#" term="Java" /><category scheme="http://www.blogger.com/atom/ns#" term="Ruby" /><category scheme="http://www.blogger.com/atom/ns#" term="Personal" /><title>The Case of the False Blank</title><content type="html">&lt;p&gt;Stu Halloway tweeted about the following Pastie earlier today:&lt;/p&gt;&lt;script src='http://pastie.org/758946.js'&gt;&lt;/script&gt;&lt;br /&gt;
&lt;p&gt;He questioned the counterintuitive result of blank? returning false on an empty Java array. He then asked which whether Ruby, JRuby or Rails were the culprit.&lt;/p&gt;&lt;p&gt;I played with the Rails console a little bit and started to dig into the code. It turns out that Rails adds a blank? method to the Ruby Object class. Here is it's implementation:&lt;/p&gt;&lt;script src="http://gist.github.com/265132.js?file=blank.rb"&gt;&lt;/script&gt;&lt;br /&gt;
&lt;p&gt;It also aliases blank? to empty? on arrays further down. As a result, the expected behavior of calling blank? on an empty array is to return true:&lt;/p&gt;&lt;script src="http://gist.github.com/265132.js?file=gistfile2.rb"&gt;&lt;/script&gt;&lt;br /&gt;
&lt;p&gt;The Java array does not respond to the empty? method:&lt;/p&gt;&lt;script src="http://gist.github.com/265132.js?file=gistfile4.rb"&gt;&lt;/script&gt;&lt;br /&gt;
&lt;p&gt;We can see that the Java native array does not share the same ancestry as the Ruby Array:&lt;/p&gt;&lt;script src="http://gist.github.com/265132.js?file=gistfile3.rb"&gt;&lt;/script&gt;&lt;br /&gt;
&lt;p&gt;None of the classes and modules returned by x.class.ancestors implement the empty? method. Rails has no choice to fall back to the default implementation and to return false to blank? since any instantiated object isn't nil by definition (except for nil, which is always nil).&lt;/p&gt;&lt;p&gt;The real culprit here isn't Ruby as Stu alluded in a later tweet. Rather, it is the lack of an empty? implementation on the Java native array class ancestry that is the root cause of the surprising behavior. The best fix would be to implement the empty? method on the ArrayJavaProxy class to Rails could call it.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2472972155627143715-5509933886648693203?l=blog.fredjean.net' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=VcimWEmiWDM:ytfKLSG2CMM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=VcimWEmiWDM:ytfKLSG2CMM:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=VcimWEmiWDM:ytfKLSG2CMM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?i=VcimWEmiWDM:ytfKLSG2CMM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=VcimWEmiWDM:ytfKLSG2CMM:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/fredjean/outofmymind/~4/VcimWEmiWDM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.fredjean.net/feeds/5509933886648693203/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.fredjean.net/2009/12/case-of-false-blank.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2472972155627143715/posts/default/5509933886648693203?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2472972155627143715/posts/default/5509933886648693203?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/fredjean/outofmymind/~3/VcimWEmiWDM/case-of-false-blank.html" title="The Case of the False Blank" /><author><name>Frederic Jean</name><uri>http://www.blogger.com/profile/01975848477763160312</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06585259622432699714" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/2.0/" /><feedburner:origLink>http://blog.fredjean.net/2009/12/case-of-false-blank.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUQHSXszfCp7ImA9WxNWEU0.&quot;"><id>tag:blogger.com,1999:blog-2472972155627143715.post-810948455307423193</id><published>2009-10-09T09:48:00.001-06:00</published><updated>2009-10-09T09:48:58.584-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-09T09:48:58.584-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Production" /><category scheme="http://www.blogger.com/atom/ns#" term="Web Development" /><category scheme="http://www.blogger.com/atom/ns#" term="Ruby" /><category scheme="http://www.blogger.com/atom/ns#" term="work" /><category scheme="http://www.blogger.com/atom/ns#" term="Agile Development" /><category scheme="http://www.blogger.com/atom/ns#" term="Development Process" /><title>Application Performance Improvement Is an Iterative Process</title><content type="html">&lt;p&gt;My first mandate when I joined &lt;a href="http://kenai.com"&gt;Project Kenai&lt;/a&gt; was to improve it's performance. Kenai wasn't known for being speedy back then. We had some serious performance issues with both page rendering in the browser as well as generating the content on the server side.&lt;/p&gt;
&lt;p&gt;I had work on projects before were performance testing (and the resulting avalanche of bug reports from it) were held off until the QA phase of the project. A small team of QA engineers would write scripts that exercised the application to get performance data and generate information on where things were slow. I had a few issues with this approach:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;The testing almost always occurred near the end of a release. Many of the performance issues discovered in this process could not be fully resolved in the time frame allocated for the release itself. Most were preempted by other feature bugs as well. Performance always seemed to be job 1.0.1&lt;/li&gt;

  &lt;li&gt;The data never provided information on where the application was spending it's time. This lead to a fair amount of time spent looking at the application code and database queries to see where the hotspot were.&lt;/li&gt;

  &lt;li&gt;The performance tests occurred based on a static set of features and actions. Each URL would be tested in isolation. There were none of the interactions that occur from multiple users doing different things in the application at the same time.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Doing performance testing was still valuable. It helped us understand where we needed to do more work. It was just too little too late for many projects that I worked on.&lt;/p&gt;
&lt;p&gt;I have tried different approaches in the past. I would instrument the application that I worked on to get data, but that was usually done against a development or QA environment. Reading the logs to find the instrumentation data made it difficult to extract valuable information. The instrumentation had a measurable impact on the response time so it was generally turned off in the production deployments.&lt;/p&gt;
&lt;p&gt;Performance testing was different with Project Kenai. Kenai uses the &lt;a href="http://www.newrelic.com"&gt;NewRelic Rails plugin&lt;/a&gt; to get performance data from the application and generates reports that helps understand where the application is spending it's time and what areas could benefit for further investigation. Here is how we normally deal with performance issues:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;We use NewRelic to determine what functions are the slowest and have the most impact to our users.&lt;/li&gt;

  &lt;li&gt;I go through the web site the morning after a deployment to see how the deployment changed the performance of the application.&lt;/li&gt;

  &lt;li&gt;I schedule one or two performance issues if nothing stands out of the ordinary. Any serious performance degradation takes precedence of course.&lt;/li&gt;

  &lt;li&gt;I use the development mode to research the performance problem and work toward a solution. My work environment has different performance than our production and staging sites, so I look for relative improvements rather than absolute measurements.&lt;/li&gt;

  &lt;li&gt;I review the impact of the change in our staging environments. This helps me understand the performance of the application with a full production-like dataset as compared to the developer dataset. Many performance issues only showed themselves when running against a larger dataset than what was available to me in my development environment.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This cycle allowed the team to continually improve the performance of the application. We still have work to do with regards to performance. Most of the work that is left to do is in areas that are difficult to resolve, but we know where they are and we keep looking for ways to keep improving the performance.&lt;/p&gt;

&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2472972155627143715-810948455307423193?l=blog.fredjean.net' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=oayh8O1FVM8:kTtbhuCXk1c:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=oayh8O1FVM8:kTtbhuCXk1c:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=oayh8O1FVM8:kTtbhuCXk1c:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?i=oayh8O1FVM8:kTtbhuCXk1c:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=oayh8O1FVM8:kTtbhuCXk1c:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/fredjean/outofmymind/~4/oayh8O1FVM8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.fredjean.net/feeds/810948455307423193/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.fredjean.net/2009/10/application-performance-improvement-is.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2472972155627143715/posts/default/810948455307423193?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2472972155627143715/posts/default/810948455307423193?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/fredjean/outofmymind/~3/oayh8O1FVM8/application-performance-improvement-is.html" title="Application Performance Improvement Is an Iterative Process" /><author><name>Frederic Jean</name><uri>http://www.blogger.com/profile/01975848477763160312</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06585259622432699714" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/2.0/" /><feedburner:origLink>http://blog.fredjean.net/2009/10/application-performance-improvement-is.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUYCSHY9cSp7ImA9WxNSF0o.&quot;"><id>tag:blogger.com,1999:blog-2472972155627143715.post-139393078071110788</id><published>2009-08-31T21:52:00.001-06:00</published><updated>2009-08-31T21:52:49.869-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-31T21:52:49.869-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="work" /><category scheme="http://www.blogger.com/atom/ns#" term="General" /><title>Yes, Developers Should Twitter</title><content type="html">&lt;p&gt;I firmly believe that any developer who doesn't use the different tools available to communicate outside of the bubble that is the people they work with or the company they work for is short changing him (or her) self.&lt;/p&gt;
&lt;p&gt;These tools are varied. Twitter is one of them. It is a great way to exchange barbs and keep track of what like-minded (and not so like-minded) developers are doing. It's 140 character format is conductive to bursty exchanges. I certainly enjoy the ongoing conversation that I have with individuals that I respect who happen to hang out on Twitter. The banter might be light at time, but it is still great banter.&lt;/p&gt;
&lt;p&gt;It's not the only medium that developers should use though. Developers need to establish an Internet footprint. It is especially critical for those who are working on web applications or infrastructure. Blogging is another tool available to help developers to establish and expand this Internet footprint. Contributing to projects on &lt;a href="http://kenai.com"&gt;Project Kenai&lt;/a&gt;, &lt;a href="http://github.com"&gt;GitHub&lt;/a&gt; or other project hosting infrastructure is another good way of doing so as well.&lt;/p&gt;
&lt;p&gt;Finally, developers should reach out and network locally. It is not a big investment to take an evening each month to head out and attend a local user group meeting. Doing so shows that you do care about your craft and are willing to invest some time in expanding your knowledge. It is even better when you actively participate into the meetings by presenting or actively networking with other professionals.&lt;/p&gt;
&lt;p&gt;To participate, whether through Twitter, blogs, projects or users group shows that you care. That alone is often enough for an individual to rise above the vast sea of indifferent developers that are prevalent in the so called real world.&lt;/p&gt;

&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2472972155627143715-139393078071110788?l=blog.fredjean.net' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=tybBCOBcqmI:lNsnNcaC2Ts:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=tybBCOBcqmI:lNsnNcaC2Ts:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=tybBCOBcqmI:lNsnNcaC2Ts:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?i=tybBCOBcqmI:lNsnNcaC2Ts:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=tybBCOBcqmI:lNsnNcaC2Ts:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/fredjean/outofmymind/~4/tybBCOBcqmI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.fredjean.net/feeds/139393078071110788/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.fredjean.net/2009/08/yes-developers-should-twitter.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2472972155627143715/posts/default/139393078071110788?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2472972155627143715/posts/default/139393078071110788?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/fredjean/outofmymind/~3/tybBCOBcqmI/yes-developers-should-twitter.html" title="Yes, Developers Should Twitter" /><author><name>Frederic Jean</name><uri>http://www.blogger.com/profile/01975848477763160312</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06585259622432699714" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/2.0/" /><feedburner:origLink>http://blog.fredjean.net/2009/08/yes-developers-should-twitter.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkQDQ34zfyp7ImA9WxJbGEk.&quot;"><id>tag:blogger.com,1999:blog-2472972155627143715.post-6400215052542743138</id><published>2009-07-28T23:12:00.001-06:00</published><updated>2009-07-28T23:12:52.087-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-28T23:12:52.087-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Java" /><category scheme="http://www.blogger.com/atom/ns#" term="Ruby" /><category scheme="http://www.blogger.com/atom/ns#" term="Personal" /><title>Colorado Spring Open Source Users Presentation</title><content type="html">&lt;p&gt;The C&lt;a href="http://www.meetup.com/csopensource/" title="CO Springs Open Source User Group Meetup page"&gt;olorado Springs Open Source Users Group&lt;/a&gt; record the presentation that are given to their group. Here is the recording that was made of my abbreviated introduction to JRuby:&lt;/p&gt;&lt;object width="400" height="300"&gt;
  &lt;param name="allowfullscreen" value="true" /&gt;
  &lt;param name="allowscriptaccess" value="always" /&gt;
  &lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=5121840&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" /&gt;
  &lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=5121840&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300" /&gt;
&lt;/object&gt;
&lt;p&gt;&lt;a href="http://vimeo.com/5121840"&gt;Basic Concepts - Frederic Jean (Intro to JRuby)&lt;/a&gt; from &lt;a href="http://vimeo.com/user1631349"&gt;Kevin Werner&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I have yet to watch the whole presentation as I cringe each time I hear me speak.&lt;/p&gt;

&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2472972155627143715-6400215052542743138?l=blog.fredjean.net' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=EmLJO4e_6OM:0g8Ep6gT5DE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=EmLJO4e_6OM:0g8Ep6gT5DE:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=EmLJO4e_6OM:0g8Ep6gT5DE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?i=EmLJO4e_6OM:0g8Ep6gT5DE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=EmLJO4e_6OM:0g8Ep6gT5DE:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/fredjean/outofmymind/~4/EmLJO4e_6OM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.fredjean.net/feeds/6400215052542743138/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.fredjean.net/2009/07/colorado-spring-open-source-users.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2472972155627143715/posts/default/6400215052542743138?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2472972155627143715/posts/default/6400215052542743138?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/fredjean/outofmymind/~3/EmLJO4e_6OM/colorado-spring-open-source-users.html" title="Colorado Spring Open Source Users Presentation" /><author><name>Frederic Jean</name><uri>http://www.blogger.com/profile/01975848477763160312</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06585259622432699714" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/2.0/" /><feedburner:origLink>http://blog.fredjean.net/2009/07/colorado-spring-open-source-users.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU8CQXw8fip7ImA9WxJbGEk.&quot;"><id>tag:blogger.com,1999:blog-2472972155627143715.post-6781020537682229070</id><published>2009-07-28T23:04:00.001-06:00</published><updated>2009-07-28T23:04:20.276-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-28T23:04:20.276-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Web Development" /><category scheme="http://www.blogger.com/atom/ns#" term="Ruby" /><category scheme="http://www.blogger.com/atom/ns#" term="work" /><category scheme="http://www.blogger.com/atom/ns#" term="General" /><title>Configuring Multiple Connection Pools with JRuby MemCache Client</title><content type="html">&lt;p&gt;The JRuby MemCache Client uses Greg Whalin's Java based MemCache client to connect to the servers that implement the MemCache protocol. This client uses a connection pool to connect to and communicate with the memcached servers.&lt;/p&gt;
&lt;p&gt;There is one pool by default. It is called "default". You do not need to specify a pool name if you only need one connection pool. This would happen if you only need to talk to a group of servers.&lt;/p&gt;
&lt;p&gt;This becomes a little more complicated if you need to communicate with multiple memcached server groups for different purposes. A great example would be using both memcached and Kestrel on the same cluster. This is the situation that we find ourselves under on Project Kenai.&lt;/p&gt;
&lt;p&gt;The solution is simple. You can pass a :pool_name parameter when you are building the configuration for the MemCache client:&lt;/p&gt;
&lt;p&gt;&lt;script src="http://gist.github.com/157876.js"&gt;&lt;/script&gt;&lt;/p&gt;
&lt;p&gt;This results in a separate connection pool being created and allows you to use the JRuby MemCache client to talk to both Kestrel and memcached servers.&lt;/p&gt;

&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2472972155627143715-6781020537682229070?l=blog.fredjean.net' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=qTvOewa94gM:bITAwScNBK0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=qTvOewa94gM:bITAwScNBK0:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=qTvOewa94gM:bITAwScNBK0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?i=qTvOewa94gM:bITAwScNBK0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=qTvOewa94gM:bITAwScNBK0:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/fredjean/outofmymind/~4/qTvOewa94gM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.fredjean.net/feeds/6781020537682229070/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.fredjean.net/2009/07/configuring-multiple-connection-pools.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2472972155627143715/posts/default/6781020537682229070?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2472972155627143715/posts/default/6781020537682229070?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/fredjean/outofmymind/~3/qTvOewa94gM/configuring-multiple-connection-pools.html" title="Configuring Multiple Connection Pools with JRuby MemCache Client" /><author><name>Frederic Jean</name><uri>http://www.blogger.com/profile/01975848477763160312</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06585259622432699714" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/2.0/" /><feedburner:origLink>http://blog.fredjean.net/2009/07/configuring-multiple-connection-pools.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUcEQHc7fip7ImA9WxJUGEs.&quot;"><id>tag:blogger.com,1999:blog-2472972155627143715.post-859025038058375932</id><published>2009-07-17T15:43:00.001-06:00</published><updated>2009-07-17T15:43:21.906-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-17T15:43:21.906-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Production" /><category scheme="http://www.blogger.com/atom/ns#" term="work" /><category scheme="http://www.blogger.com/atom/ns#" term="Development Process" /><title>When You Make a Big Mistake</title><content type="html">&lt;p&gt;You can just feel the panic rising. You were logged into the production database fixing a few records when you made a small mistake with disastrous consequence.&lt;/p&gt;
&lt;p&gt;So what should you do next?&lt;/p&gt;
&lt;p&gt;Stop.&lt;/p&gt;
&lt;p&gt;Step away from the keyboard.&lt;/p&gt;
&lt;p&gt;Breath.&lt;/p&gt;
&lt;p&gt;Get help.&lt;/p&gt;
&lt;p&gt;Odds are that someone who isn't in a near panic state will be able to think clearly about the problem and guide you through a solution that will reduce or even remove the impact of the incident and help you get things back to their normal state.&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;Of course, you should really ask yourself why you were in the production database in the first place... But that's another discussion.&lt;/p&gt;

&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2472972155627143715-859025038058375932?l=blog.fredjean.net' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=bbnFblUw4g4:Z6Xb4uO1t38:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=bbnFblUw4g4:Z6Xb4uO1t38:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=bbnFblUw4g4:Z6Xb4uO1t38:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?i=bbnFblUw4g4:Z6Xb4uO1t38:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=bbnFblUw4g4:Z6Xb4uO1t38:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/fredjean/outofmymind/~4/bbnFblUw4g4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.fredjean.net/feeds/859025038058375932/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.fredjean.net/2009/07/when-you-make-big-mistake.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2472972155627143715/posts/default/859025038058375932?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2472972155627143715/posts/default/859025038058375932?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/fredjean/outofmymind/~3/bbnFblUw4g4/when-you-make-big-mistake.html" title="When You Make a Big Mistake" /><author><name>Frederic Jean</name><uri>http://www.blogger.com/profile/01975848477763160312</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06585259622432699714" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/2.0/" /><feedburner:origLink>http://blog.fredjean.net/2009/07/when-you-make-big-mistake.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEUBSX8yfyp7ImA9WxJXGUw.&quot;"><id>tag:blogger.com,1999:blog-2472972155627143715.post-3914469855965894283</id><published>2009-05-06T11:14:00.000-06:00</published><updated>2009-06-13T10:57:38.197-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-13T10:57:38.197-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Java" /><category scheme="http://www.blogger.com/atom/ns#" term="Ruby" /><category scheme="http://www.blogger.com/atom/ns#" term="General" /><title>JRuby MemCache Client Gem</title><content type="html">&lt;p&gt;I wrote a &lt;a href="http://fredjean.net/2009/02/18/memcache-session-store-with-jruby-on-rails"&gt;post&lt;/a&gt; about using the jruby_memcache_client Rails plugin to manage sessions. Since then, &lt;a href="http://github.com/abhiyerra"&gt;Abhi Yerra&lt;/a&gt; made a &lt;a href="http://github.com/abhiyerra/jruby-memcache-client/tree/master"&gt;fork&lt;/a&gt; of Ikai Lan's repository and turned it into a gem. I promptly merged his changes into my repository and I am now publishing my own version of the gem (with a few minor changes).&lt;/p&gt;&lt;p&gt;The new JRuby MemCache Client Gem is API compatible with the Ruby MemCache Client. You should now be able to install the gem into your application and use it directly.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Installing The Gem&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;You need to add github as a source for gems before you can install the new gem. Thsi is a simple one time command to run:&lt;/p&gt;gem sources -a http://gems.github.com

The next step is to install the gem as usual:

&lt;div&gt;jruby -S gem install fredjean-jruby-memcache-client --remote

&lt;strong&gt;Using the JRuby MemCache Client Gem&lt;/strong&gt;

One way to use the JRuby MemCache Client is to add the following to your environment.rb:
&lt;pre class="ruby" name="code"&gt;memcache_options = {
:namespace =&amp;gt; 'fortaleza:production_live:'
}
memcached_servers = [ ENV['MEMCACHED_LOCATION'] || '127.0.0.1:11211']

# Constant used by libs
CACHE = MemCache.new memcached_servers, memcache_options
&lt;span class="Apple-style-span" style="font-family: Georgia, -webkit-fantasy; font-size: medium; white-space: normal; "&gt;
&lt;/span&gt;&lt;/pre&gt;&lt;pre class="ruby" name="code"&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, -webkit-fantasy; font-size: medium; white-space: normal; "&gt;You will then be able to configure Rails to use the :mem_cache_store for both session and cache store.&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2472972155627143715-3914469855965894283?l=blog.fredjean.net' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=QpSEwkD59To:xpQrmp-4Vbk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=QpSEwkD59To:xpQrmp-4Vbk:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=QpSEwkD59To:xpQrmp-4Vbk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?i=QpSEwkD59To:xpQrmp-4Vbk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=QpSEwkD59To:xpQrmp-4Vbk:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/fredjean/outofmymind/~4/QpSEwkD59To" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.fredjean.net/feeds/3914469855965894283/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.fredjean.net/2009/05/jruby-memcache-client-gem.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2472972155627143715/posts/default/3914469855965894283?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2472972155627143715/posts/default/3914469855965894283?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/fredjean/outofmymind/~3/QpSEwkD59To/jruby-memcache-client-gem.html" title="JRuby MemCache Client Gem" /><author><name>Frederic Jean</name><uri>http://www.blogger.com/profile/01975848477763160312</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06585259622432699714" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/2.0/" /><feedburner:origLink>http://blog.fredjean.net/2009/05/jruby-memcache-client-gem.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEUNRnk7eSp7ImA9WxJXGUw.&quot;"><id>tag:blogger.com,1999:blog-2472972155627143715.post-899013973611358522</id><published>2009-05-01T17:45:00.000-06:00</published><updated>2009-06-13T10:58:17.701-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-13T10:58:17.701-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Java" /><category scheme="http://www.blogger.com/atom/ns#" term="Ruby" /><category scheme="http://www.blogger.com/atom/ns#" term="Open Source" /><category scheme="http://www.blogger.com/atom/ns#" term="Agile Development" /><category scheme="http://www.blogger.com/atom/ns#" term="General" /><category scheme="http://www.blogger.com/atom/ns#" term="Personal" /><title>Colorado Springs Introduction to JRuby Talk</title><content type="html">&lt;a href="http://twitpic.com/4b1c7" title="@fredjean talking about JRuby on Twitpic"&gt;&lt;img src="http://twitpic.com/show/thumb/4b1c7.jpg" width="150" height="150" alt="@fredjean talking about JRuby on Twitpic" /&gt;&lt;/a&gt;

I opened up the &lt;a href="http://www.meetup.com/csopensource/" title="CO Springs Open Source User Group Meetup page"&gt;Colorado Springs Open Source User Group&lt;/a&gt; with a very quick introduction to JRuby. The talk was well received and there was a good back and forth with the audience. Many interesting questions were asked and there were a few follow up discussions.

Ben Simo (&lt;a href="http://twitter.com/QualityFrog"&gt;@QualityFrog&lt;/a&gt;) had the following feedback on the presentation:

&lt;p&gt;&lt;a href="http://twitter.com/QualityFrog/status/1670363774"&gt;&lt;img src="http://fredjean.net/files/200905011139.jpg" width="480" height="226" alt="200905011139.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://twitter.com/QualityFrog/status/1670363774"&gt;&lt;/a&gt;This is pretty much what any presenter could hope for :)&lt;/p&gt;&lt;p&gt;Here are the slides:&lt;/p&gt;&lt;div style="width:425px;text-align:left" id="__ss_1373691"&gt;&lt;a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/fredjean/quick-intro-to-jruby?type=presentation" title="Quick Intro To JRuby"&gt;Quick Intro To JRuby&lt;/a&gt;&lt;object style="margin:0px" width="425" height="355"&gt;
   &lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=cospringsintrotojruby-090501124421-phpapp01&amp;amp;stripped_title=quick-intro-to-jruby"&gt;
   &lt;param name="allowFullScreen" value="true"&gt;
   &lt;param name="allowScriptAccess" value="always"&gt;
   &lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=cospringsintrotojruby-090501124421-phpapp01&amp;amp;stripped_title=quick-intro-to-jruby" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;
 &lt;/object&gt;

 &lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;
   View more &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/fredjean"&gt;fredjean&lt;/a&gt;.
 &lt;/div&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2472972155627143715-899013973611358522?l=blog.fredjean.net' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=FJ425qhkd-s:r6n744-4d2U:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=FJ425qhkd-s:r6n744-4d2U:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=FJ425qhkd-s:r6n744-4d2U:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?i=FJ425qhkd-s:r6n744-4d2U:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=FJ425qhkd-s:r6n744-4d2U:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/fredjean/outofmymind/~4/FJ425qhkd-s" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.fredjean.net/feeds/899013973611358522/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.fredjean.net/2009/05/colorado-springs-introduction-to-jruby.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2472972155627143715/posts/default/899013973611358522?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2472972155627143715/posts/default/899013973611358522?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/fredjean/outofmymind/~3/FJ425qhkd-s/colorado-springs-introduction-to-jruby.html" title="Colorado Springs Introduction to JRuby Talk" /><author><name>Frederic Jean</name><uri>http://www.blogger.com/profile/01975848477763160312</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06585259622432699714" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/2.0/" /><feedburner:origLink>http://blog.fredjean.net/2009/05/colorado-springs-introduction-to-jruby.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEQDSXs4eip7ImA9WxJXGUw.&quot;"><id>tag:blogger.com,1999:blog-2472972155627143715.post-4263505637373603582</id><published>2009-03-22T23:26:00.000-06:00</published><updated>2009-06-13T10:59:38.532-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-13T10:59:38.532-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Web Development" /><category scheme="http://www.blogger.com/atom/ns#" term="work" /><category scheme="http://www.blogger.com/atom/ns#" term="Agile Development" /><category scheme="http://www.blogger.com/atom/ns#" term="General" /><category scheme="http://www.blogger.com/atom/ns#" term="Development Process" /><category scheme="http://www.blogger.com/atom/ns#" term="Personal" /><title>Working on One Thing At A Time With Git-Svn</title><content type="html">&lt;p&gt;We've all seen people who have 2 or 3 work in progress items within a single workspace. Even the workspace owner doesn't always know what file belongs where, nor can they really prove that their change will integrate cleanly with the rest of the code. I see this more often with people that have used centralized source code repositories to manage their code. Branching is expensive and checking out a fresh repository sometimes takes more time than actually fixing the bug. It is tempting to cut a corner here and there to be able to do this quick fix and move back to the task at hand. It is a dangerous thing to do though.&lt;/p&gt;&lt;p&gt;I find that I do my best work when I am working on one item at a time, whether we are talking about a feature or a bug. This is one of the reasons why I like git. It's local branching capabilities makes it easy to do just that while still being able to quickly go back to a clean slate when reality intrudes and I have to switch to a different task.
&lt;/p&gt;&lt;p&gt;&lt;strong&gt;My Workflow&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://kenai.com/"&gt;Project Kenai&lt;/a&gt; still hosts its repository in a Subversion repository. I quickly started using git-svn to managed my workspace and I base my daily workflow on &lt;a href="http://rcoder.net/"&gt;Lennon's&lt;/a&gt; &lt;a href="http://rcoder.net/content/daily-git-svn"&gt;daily git-svn workflow&lt;/a&gt;. Here is how I approach a task:&lt;/p&gt;&lt;ol&gt;  &lt;li&gt;I make sure that I am at a clean slate and up-to-date. I checkout my master branch (git checkout master) and bring it up to date with the upstream subversion repository (git svn rebase).&lt;/li&gt;  &lt;li&gt;I create a branch against the master branch and switch to it (git checkout -b branch-name). I normally name the branch based on the Jira issue that I'm working against. This makes it easy for me to link the work that I'm doing to the related Jira issue. I do not using any of the git svn commands in this branch. I add files to the index and commit frequently as I work as a safety net. It is easier to revert to a previous state that way.&lt;/li&gt;&lt;li&gt;I then switch to my svn merge branch once work has completed. I make sure that it is up to date (git svn rebase) and run our automated tests. This lets me know that I am working against a clean branch. I then merge my changes from the work branch (git merge --squash branch-name). This condenses all of the commits I did in the branch into one commit that will be merged into the svn merge branch, resolve any merge issues and run the tests again.&lt;/li&gt;&lt;li&gt;I commit the merge into the svn merge branch (git commit) and then push my changes to the Subversion repository (git svn dcommit).&lt;/li&gt;&lt;li&gt;I finally go back to the master branch, update it (git svn rebase) and run the tests to make sure that all is working as expected.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;It may seem a little involved, but it gives me many points where I have a chance to run tests and verify that the work will integrate cleanly with the rest of the team's work.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;When Reality Intrudes&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;I don't always have the luxury of a linear workflow. there are times where I have to jump to a different work item (critical bug) and work on a fix. The workflow that I use allows me to do this very easily since I can go back to a clean slate at any point in time by:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Committing the work in progress&lt;/li&gt;&lt;li&gt;Going back to the master branch&lt;/li&gt;&lt;li&gt;Updating the master branch&lt;/li&gt;&lt;li&gt;Creating a new branch for the new work&lt;/li&gt;&lt;li&gt;Complete the new work and commit it to the Subversion repository.&lt;/li&gt;&lt;li&gt;Go back to the work in progress branch and resume work&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;As a result, my workspace always contains the changes associated with one work item. There isn't confusion on what file needs to be committed nor do I run the risk of having multiple patches applied to a single file and having to sort through them manually when it is time to commit.&lt;/p&gt;&lt;p&gt;The good news is that this very same workflow will work just as well if we switch the Project Kenai's repository to git or Mercurial.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2472972155627143715-4263505637373603582?l=blog.fredjean.net' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=-uiZBo-MtYk:3Z9eku7zn3g:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=-uiZBo-MtYk:3Z9eku7zn3g:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=-uiZBo-MtYk:3Z9eku7zn3g:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?i=-uiZBo-MtYk:3Z9eku7zn3g:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=-uiZBo-MtYk:3Z9eku7zn3g:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/fredjean/outofmymind/~4/-uiZBo-MtYk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.fredjean.net/feeds/4263505637373603582/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.fredjean.net/2009/03/working-on-one-thing-at-time-with-git.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2472972155627143715/posts/default/4263505637373603582?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2472972155627143715/posts/default/4263505637373603582?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/fredjean/outofmymind/~3/-uiZBo-MtYk/working-on-one-thing-at-time-with-git.html" title="Working on One Thing At A Time With Git-Svn" /><author><name>Frederic Jean</name><uri>http://www.blogger.com/profile/01975848477763160312</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06585259622432699714" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/2.0/" /><feedburner:origLink>http://blog.fredjean.net/2009/03/working-on-one-thing-at-time-with-git.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEMHQ34zeip7ImA9WxJXGUw.&quot;"><id>tag:blogger.com,1999:blog-2472972155627143715.post-2052449541074071293</id><published>2009-02-18T16:05:00.000-07:00</published><updated>2009-06-13T11:00:32.082-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-13T11:00:32.082-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Java" /><category scheme="http://www.blogger.com/atom/ns#" term="Web Development" /><category scheme="http://www.blogger.com/atom/ns#" term="Ruby" /><category scheme="http://www.blogger.com/atom/ns#" term="Open Source" /><category scheme="http://www.blogger.com/atom/ns#" term="work" /><title>MemCache Session Store with JRuby on Rails</title><content type="html">&lt;p&gt;&lt;strong&gt;The JRuby MemCache Client Plugin has been replaced by the JRuby MemCache Client Gem. Details can be found at &lt;a href="http://fredjean.net/2009/05/06/jruby-memcache-client-gem/jruby-memcache-client-gem"&gt;JRuby MemCache Client Gem&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;We realized a few weeks ago that we spent a fair amount of time writing &lt;a href="http://kenai.com/" title="Project Kenai"&gt;Project Kenai&lt;/a&gt;'s sessions to our database. We already had decided to start using fragment caching and we were exploring different options on the client side.&lt;/p&gt;&lt;p&gt;Project Kenai's front end is a Ruby on Rails web application that is deployed to Glassfish and running under JRuby. We do have multiple JRuby runtimes per domain. There &lt;a href="http://www.nabble.com/Re%3A-jruby-memcache-client-project-started-on-GitHub-p21138280.html"&gt;are issues with running the Ruby MemCache client with a JRuby on Rails&lt;/a&gt; application, so we paid some attention to &lt;a href="http://www.linkedin.com/in/ikailan"&gt;Ikai Lan&lt;/a&gt;'s &lt;a href="http://github.com/ikai/jruby-memcache-client/tree/master"&gt;jruby-memcache-client library&lt;/a&gt;. It is a wrapper around a Java based MemCache client that support connection pooling back to the memcached servers.&lt;/p&gt;&lt;p&gt;I quickly discovered that Ikai had focused on the Rails cache store but hadn't put work on the session store. I forked his project and started adding support for a session store.&lt;/p&gt;&lt;h3&gt;Using the jruby_memcache_client plugin&lt;/h3&gt;&lt;p&gt;Here are the steps to install the client:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Run "script/plugin install git://github.com/fredjean/jruby_memcache_client.git" in the root of your Rails application. This will install my forked copy of the plugin.&lt;/li&gt;&lt;li&gt;Configure the MemCache client by following the instructions located at &lt;a href="http://wiki.rubyonrails.org/rails/pages/HowtoChangeSessionStore"&gt;http://wiki.rubyonrails.org/rails/pages/HowtoChangeSessionStor&lt;/a&gt;e .&lt;/li&gt;&lt;li&gt;Finally, change the config.action_controller.session_store to use :j_mem_cache_store instead of :mem_cache_store&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Make sure that you have a memcached server running and start your rails application.&lt;/p&gt;&lt;h3&gt;Making sure that it is running&lt;/h3&gt;You can verify that the sessions are sent to the MemCache store by restaring memcache with a more verbose setting. You should then be able to see sessions being put into and retrieved from the session store.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2472972155627143715-2052449541074071293?l=blog.fredjean.net' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=0xTz2pv2iuI:Sx5V4inKezM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=0xTz2pv2iuI:Sx5V4inKezM:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=0xTz2pv2iuI:Sx5V4inKezM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?i=0xTz2pv2iuI:Sx5V4inKezM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=0xTz2pv2iuI:Sx5V4inKezM:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/fredjean/outofmymind/~4/0xTz2pv2iuI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.fredjean.net/feeds/2052449541074071293/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.fredjean.net/2009/02/memcache-session-store-with-jruby-on.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2472972155627143715/posts/default/2052449541074071293?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2472972155627143715/posts/default/2052449541074071293?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/fredjean/outofmymind/~3/0xTz2pv2iuI/memcache-session-store-with-jruby-on.html" title="MemCache Session Store with JRuby on Rails" /><author><name>Frederic Jean</name><uri>http://www.blogger.com/profile/01975848477763160312</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06585259622432699714" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/2.0/" /><feedburner:origLink>http://blog.fredjean.net/2009/02/memcache-session-store-with-jruby-on.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEMCR3Y5cSp7ImA9WxJXGUw.&quot;"><id>tag:blogger.com,1999:blog-2472972155627143715.post-6249630788033169905</id><published>2009-02-10T16:03:00.000-07:00</published><updated>2009-06-13T11:01:06.829-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-13T11:01:06.829-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="General" /><title>Cloud Computing in Plain English</title><content type="html">&lt;p&gt;From &lt;a href="http://blogs.sun.com/Studentzone/entry/head_what_the_heck_is"&gt;WHAT THE HECK IS CLOUD COMPUTING?&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;object width="425" height="344"&gt;
 &lt;param name="movie" value="http://www.youtube.com/v/XdBd14rjcs0&amp;amp;hl=en&amp;amp;fs=1"&gt;
 &lt;param name="allowFullScreen" value="true"&gt;
 &lt;param name="allowscriptaccess" value="always"&gt;
 &lt;embed src="http://www.youtube.com/v/XdBd14rjcs0&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;
&lt;/object&gt;&lt;/p&gt;&lt;p&gt;I think it does a great job of introducing the concept of Cloud Computing without going into the technical details that makes it tick.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2472972155627143715-6249630788033169905?l=blog.fredjean.net' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=KjuWsB3QRyQ:C8ZyDuBEV78:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=KjuWsB3QRyQ:C8ZyDuBEV78:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=KjuWsB3QRyQ:C8ZyDuBEV78:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?i=KjuWsB3QRyQ:C8ZyDuBEV78:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=KjuWsB3QRyQ:C8ZyDuBEV78:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/fredjean/outofmymind/~4/KjuWsB3QRyQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.fredjean.net/feeds/6249630788033169905/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.fredjean.net/2009/02/cloud-computing-in-plain-english.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2472972155627143715/posts/default/6249630788033169905?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2472972155627143715/posts/default/6249630788033169905?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/fredjean/outofmymind/~3/KjuWsB3QRyQ/cloud-computing-in-plain-english.html" title="Cloud Computing in Plain English" /><author><name>Frederic Jean</name><uri>http://www.blogger.com/profile/01975848477763160312</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06585259622432699714" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/2.0/" /><feedburner:origLink>http://blog.fredjean.net/2009/02/cloud-computing-in-plain-english.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEMNQHo6fSp7ImA9WxJXGUw.&quot;"><id>tag:blogger.com,1999:blog-2472972155627143715.post-2559293152604839180</id><published>2009-02-10T15:49:00.000-07:00</published><updated>2009-06-13T11:01:31.415-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-13T11:01:31.415-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="work" /><category scheme="http://www.blogger.com/atom/ns#" term="General" /><category scheme="http://www.blogger.com/atom/ns#" term="Job Search" /><title>Advice for Uncertain Times</title><content type="html">&lt;p&gt;Here are two things that you can do to help yourself and your career in these uncertain times:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Upgrade your skills.&lt;/strong&gt; Continuing to educate yourself is going to be key in standing out from the herd and adding value to your current or future employer. Now is a great time to learn a new language or get exposure to a new technology. The best part is that it doesn't have to be expensive. There are plenty of resources that are low cost or even free on the Internet or in books that will give you a head start on upgrading your skills.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Network.&lt;/strong&gt; Seek out other people in your industry that share similar interests. Find places where great programmers or designers meet in order to exchange information and tips. Don't wait to need a job to network either. It's never too early to establish relationships with individuals outside of your organization or company.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Users Groups in general give you the ability to do both. You do have a chance to meet other individuals that are willing to take some time to learn about technology and to network with other individuals of like mind. They are usually free and will often bribe you to attend with food (Pizza being a favorite around here) or door prizes. Many groups do go out for drinks afterward, extending the networking opportunity.&lt;/p&gt;&lt;p&gt;The &lt;a href="http://boulderjug.org/"&gt;Boulder JUG&lt;/a&gt; and the &lt;a href="http://denverjug.org/"&gt;Denver JUG&lt;/a&gt; are going to host Scott Davis of &lt;a href="http://www.thirstyhead.com/"&gt;ThirstyHead.com&lt;/a&gt; who will present on Lizard Brain Web Design and how to implement DSLs using Groovy. Make your way down to either meetings, learn a new thing or two and network with some of the brightest and motivated developers in the Denver area.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2472972155627143715-2559293152604839180?l=blog.fredjean.net' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=FLYQ0vSoeGs:JF1aZsvtKdA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=FLYQ0vSoeGs:JF1aZsvtKdA:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=FLYQ0vSoeGs:JF1aZsvtKdA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?i=FLYQ0vSoeGs:JF1aZsvtKdA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=FLYQ0vSoeGs:JF1aZsvtKdA:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/fredjean/outofmymind/~4/FLYQ0vSoeGs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.fredjean.net/feeds/2559293152604839180/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.fredjean.net/2009/02/advice-for-uncertain-times.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2472972155627143715/posts/default/2559293152604839180?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2472972155627143715/posts/default/2559293152604839180?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/fredjean/outofmymind/~3/FLYQ0vSoeGs/advice-for-uncertain-times.html" title="Advice for Uncertain Times" /><author><name>Frederic Jean</name><uri>http://www.blogger.com/profile/01975848477763160312</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06585259622432699714" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/2.0/" /><feedburner:origLink>http://blog.fredjean.net/2009/02/advice-for-uncertain-times.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEIGRXY8fCp7ImA9WxJXGUw.&quot;"><id>tag:blogger.com,1999:blog-2472972155627143715.post-8770399522731411195</id><published>2009-01-15T08:57:00.000-07:00</published><updated>2009-06-13T11:02:04.874-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-13T11:02:04.874-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Java" /><category scheme="http://www.blogger.com/atom/ns#" term="Open Source" /><category scheme="http://www.blogger.com/atom/ns#" term="Agile Development" /><category scheme="http://www.blogger.com/atom/ns#" term="Groovy" /><category scheme="http://www.blogger.com/atom/ns#" term="General" /><category scheme="http://www.blogger.com/atom/ns#" term="Personal" /><category scheme="http://www.blogger.com/atom/ns#" term="NetBeans" /><title>Groovy Unit Testing Presentation</title><content type="html">&lt;p&gt;I gave a talk on Groovy Unit Testing to the &lt;a href="http://boulderjug.org/"&gt;Boulder JUG&lt;/a&gt; and the &lt;a href="http://denverjug.org/"&gt;Denver JUG&lt;/a&gt; this week. The talk was well received, and I got some helpful comments that I will certainly incorporate into future version of the talk. The talk covered:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;How to use &lt;a href="http://groovy.codehaus.org/"&gt;Groovy&lt;/a&gt; to author &lt;a href="http://junit.org/"&gt;JUnit 4&lt;/a&gt; test cases&lt;/li&gt;&lt;li&gt;How to use closure and map coercion to mock dependencies&lt;/li&gt;&lt;li&gt;How to use JMockit to mock classes with final or static methods&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I tried something different this time. I used the &lt;a href="http://github.com/pragdave/codex/tree/master"&gt;Codex presentation tool&lt;/a&gt; put together by &lt;a href="http://pragdave.pragprog.com/"&gt;Dave Thomas&lt;/a&gt; and &lt;a href="http://chadfowler.com/"&gt;Chad Fowler&lt;/a&gt; to author the slides. It was a great fit since they are very code heavy. This also allowed me to version the talk and keep a copy of the source up on &lt;a href="http://github.com/fredjean/groovyunittesting/tree/master"&gt;a github repository&lt;/a&gt;. The tool chain generates &lt;a href="http://meyerweb.com/eric/tools/s5/"&gt;S5 presentations&lt;/a&gt; which can be run in a browser.&lt;/p&gt;&lt;p&gt;The slides themselves are &lt;a href="http://fredjean.net/GroovyUnitTesting"&gt;posted on my web site&lt;/a&gt;. It certainly doesn't have the same impact as attending the presentation but there's a lot of material available and there are 2 sample NetBeans projects that illustrate the techniques that I presented on.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2472972155627143715-8770399522731411195?l=blog.fredjean.net' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=0-ZS4qMCELY:aXNgZ4X6Jbg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=0-ZS4qMCELY:aXNgZ4X6Jbg:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=0-ZS4qMCELY:aXNgZ4X6Jbg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?i=0-ZS4qMCELY:aXNgZ4X6Jbg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=0-ZS4qMCELY:aXNgZ4X6Jbg:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/fredjean/outofmymind/~4/0-ZS4qMCELY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.fredjean.net/feeds/8770399522731411195/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.fredjean.net/2009/01/groovy-unit-testing-presentation.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2472972155627143715/posts/default/8770399522731411195?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2472972155627143715/posts/default/8770399522731411195?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/fredjean/outofmymind/~3/0-ZS4qMCELY/groovy-unit-testing-presentation.html" title="Groovy Unit Testing Presentation" /><author><name>Frederic Jean</name><uri>http://www.blogger.com/profile/01975848477763160312</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06585259622432699714" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/2.0/" /><feedburner:origLink>http://blog.fredjean.net/2009/01/groovy-unit-testing-presentation.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEIBRHY7eip7ImA9WxJXGUw.&quot;"><id>tag:blogger.com,1999:blog-2472972155627143715.post-6169444231059467957</id><published>2009-01-13T15:20:00.000-07:00</published><updated>2009-06-13T11:02:35.802-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-13T11:02:35.802-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="General" /><category scheme="http://www.blogger.com/atom/ns#" term="Personal" /><title>How to Speak at a Java Users Group</title><content type="html">&lt;p&gt;How do you speak at a local Java Users Group? It's really simple actually...&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Pick a topic relevant to the group.&lt;/strong&gt; Talk to your friendly local coordinator to see whether your topic is appropriate or of interest to the group. It is very likely that the topic is relevant to the group. Some topics may get some overlap which is why it's best to chat about it first.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Prepare your talk.&lt;/strong&gt; This is actually the harder of speaking at the JUGs. You need to do your research, organize your thoughts and put your presentation together. It is best to start early and do a few practice runs before hand.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Get ready for your talk.&lt;/strong&gt; I find it best to show up early, hook up to the projector and take the chance to relax a little. It is much easier to present when focused and centered than when rushed. It also allows you to test to make sure that you have access to the relevant sites (if needed), that you can interface to the projector and that the batteries in your remote haven't died yet.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Give your talk.&lt;/strong&gt; This is the fun part. Present your topic. Interact with the audience, have some fun with them (not at their expense though). Answer questions as they come. You never know when this will lead the talk into an unexpected detour.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Stick around after the talk.&lt;/strong&gt; Many people will have follow up questions and observations. You might learn something from that conversation.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;It's really that simple. You don't have to be The Expert on a topic and you don't have to be a polished public speaker. You just need an interesting topic, some slides and to show up.&lt;/p&gt;&lt;p&gt;BTW, the &lt;a href="http://boulderjug.org/"&gt;Boulder Java Users Group&lt;/a&gt; is always looking for speakers. You can contact me if you are interested in presenting. We always welcome local speakers.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2472972155627143715-6169444231059467957?l=blog.fredjean.net' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=C6E1js0Lhd4:pbMdAcwOXiQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=C6E1js0Lhd4:pbMdAcwOXiQ:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=C6E1js0Lhd4:pbMdAcwOXiQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?i=C6E1js0Lhd4:pbMdAcwOXiQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=C6E1js0Lhd4:pbMdAcwOXiQ:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/fredjean/outofmymind/~4/C6E1js0Lhd4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.fredjean.net/feeds/6169444231059467957/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.fredjean.net/2009/01/how-to-speak-at-java-users-group.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2472972155627143715/posts/default/6169444231059467957?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2472972155627143715/posts/default/6169444231059467957?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/fredjean/outofmymind/~3/C6E1js0Lhd4/how-to-speak-at-java-users-group.html" title="How to Speak at a Java Users Group" /><author><name>Frederic Jean</name><uri>http://www.blogger.com/profile/01975848477763160312</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06585259622432699714" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/2.0/" /><feedburner:origLink>http://blog.fredjean.net/2009/01/how-to-speak-at-java-users-group.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkMFSXk6cSp7ImA9WxJXFkg.&quot;"><id>tag:blogger.com,1999:blog-2472972155627143715.post-7382526997273338530</id><published>2008-12-14T10:20:00.000-07:00</published><updated>2009-06-10T10:13:38.719-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-10T10:13:38.719-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Open Source" /><category scheme="http://www.blogger.com/atom/ns#" term="Agile Development" /><category scheme="http://www.blogger.com/atom/ns#" term="Groovy" /><category scheme="http://www.blogger.com/atom/ns#" term="Development Process" /><category scheme="http://www.blogger.com/atom/ns#" term="Personal" /><category scheme="http://www.blogger.com/atom/ns#" term="NetBeans" /><title>Groovier Selenium Presentation</title><content type="html">&lt;p&gt;Here are the slides of my Groovier Selenium presentation that I gave at the &lt;a href="http://boulderjug.org"&gt;Boulder JUG&lt;/a&gt;, the &lt;a href="http://www.denverjug.org/index.jsp"&gt;Denver JUG&lt;/a&gt;, the &lt;a href="http://www.denveropensource.org/"&gt;Denver Open Source Users Group&lt;/a&gt; and at the &lt;a href="http://www.meetup.com/csopensource/calendar/7098172/"&gt;Colorado Springs Open Source Software Meetup&lt;/a&gt; group:&lt;/p&gt;
&lt;div style="width:425px;text-align:left" id="__ss_844235"&gt;
  &lt;a style="font:14px Helvetica,Arial,Sans-serif;display:block;margin:12px 0 3px 0;text-decoration:underline;" href="http://www.slideshare.net/fredjean/groovier-selenium-djug-presentation?type=powerpoint" title="Groovier Selenium (Djug)"&gt;Groovier Selenium (Djug)&lt;/a&gt;&lt;object style="margin:0px" width="425" height="355"&gt;
    &lt;param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=groovier-selenium-djug-1229278046302380-1&amp;amp;stripped_title=groovier-selenium-djug-presentation" /&gt;
    &lt;param name="allowFullScreen" value="true" /&gt;
    &lt;param name="allowScriptAccess" value="always" /&gt;
    &lt;embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=groovier-selenium-djug-1229278046302380-1&amp;amp;stripped_title=groovier-selenium-djug-presentation" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355" /&gt;
  &lt;/object&gt;

  &lt;div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"&gt;
    View SlideShare &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/fredjean/groovier-selenium-djug-presentation?type=powerpoint" title="View Groovier Selenium (Djug) on SlideShare"&gt;presentation&lt;/a&gt; or &lt;a style="text-decoration:underline;" href="http://www.slideshare.net/upload?type=powerpoint"&gt;Upload&lt;/a&gt; your own. (tags: &lt;a style="text-decoration:underline;" href="http://slideshare.net/tag/groovy"&gt;groovy&lt;/a&gt; &lt;a style="text-decoration:underline;" href="http://slideshare.net/tag/selenium"&gt;selenium&lt;/a&gt;)
  &lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;The presentations went pretty well and were well attended in all the groups. The audience in all the groups were engaged and had great questions that helped reshape the presentation for the follow up groups.&lt;/p&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2472972155627143715-7382526997273338530?l=blog.fredjean.net' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=7y5dj1UgGIE:RvqLjsDZJD8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=7y5dj1UgGIE:RvqLjsDZJD8:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=7y5dj1UgGIE:RvqLjsDZJD8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?i=7y5dj1UgGIE:RvqLjsDZJD8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=7y5dj1UgGIE:RvqLjsDZJD8:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/fredjean/outofmymind/~4/7y5dj1UgGIE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.fredjean.net/feeds/7382526997273338530/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.fredjean.net/2008/12/groovier-selenium-presentation.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2472972155627143715/posts/default/7382526997273338530?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2472972155627143715/posts/default/7382526997273338530?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/fredjean/outofmymind/~3/7y5dj1UgGIE/groovier-selenium-presentation.html" title="Groovier Selenium Presentation" /><author><name>Frederic Jean</name><uri>http://www.blogger.com/profile/01975848477763160312</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06585259622432699714" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/2.0/" /><feedburner:origLink>http://blog.fredjean.net/2008/12/groovier-selenium-presentation.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkMGQXszcSp7ImA9WxJXFkg.&quot;"><id>tag:blogger.com,1999:blog-2472972155627143715.post-6819064190874577892</id><published>2008-10-19T14:36:00.000-06:00</published><updated>2009-06-10T10:13:40.589-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-10T10:13:40.589-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Personal" /><title>Powell's Endorsement of Obama</title><content type="html">&lt;p&gt;I find this year's election very interesting as a Canadian living in Colorado. I am merely a spectator since I have yet to become an American citizen. Still, I do see this as a pivotal moment in the history of this nation. Americans get to decide what direction they want this country to take.&lt;/p&gt;
&lt;p&gt;This morning, Colin Powell publicly endorsed Barack Obama. This in itself is an event in itself. He took time to explain the rationale behind his decision to vote for Obama on Meet the Press on MSNBC.com. Take a few moments to listen through the interview if you haven't already.&lt;/p&gt;
&lt;p&gt;&lt;iframe height="339" width="425" src="http://www.msnbc.msn.com/id/22425001/vp/#" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p&gt;His explanation mirrors in many ways my impression of the campaign run by both candidates. It is a thought through, mindful exposition of why Obama is the better choice for President of the United States of America. Powell's rationale is very powerful and in many confirmed why I would vote for Obama if I could.&lt;/p&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2472972155627143715-6819064190874577892?l=blog.fredjean.net' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=goo_CZYcx-I:yKbKeLI-vKQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=goo_CZYcx-I:yKbKeLI-vKQ:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=goo_CZYcx-I:yKbKeLI-vKQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?i=goo_CZYcx-I:yKbKeLI-vKQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=goo_CZYcx-I:yKbKeLI-vKQ:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/fredjean/outofmymind/~4/goo_CZYcx-I" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.fredjean.net/feeds/6819064190874577892/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.fredjean.net/2008/10/powell-endorsement-of-obama.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2472972155627143715/posts/default/6819064190874577892?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2472972155627143715/posts/default/6819064190874577892?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/fredjean/outofmymind/~3/goo_CZYcx-I/powell-endorsement-of-obama.html" title="Powell&amp;#39;s Endorsement of Obama" /><author><name>Frederic Jean</name><uri>http://www.blogger.com/profile/01975848477763160312</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06585259622432699714" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/2.0/" /><feedburner:origLink>http://blog.fredjean.net/2008/10/powell-endorsement-of-obama.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkMGQ3k_cSp7ImA9WxJXFkg.&quot;"><id>tag:blogger.com,1999:blog-2472972155627143715.post-8955369842511360461</id><published>2008-10-03T13:49:00.000-06:00</published><updated>2009-06-10T10:13:42.749-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-10T10:13:42.749-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Personal" /><title>The Me Meme</title><content type="html">&lt;p&gt;Why not...&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;img src="http://blog.fredjean.net/files/200810031448.jpg" width="480" height="360" alt="200810031448.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color: #333333; font-family: 'Lucida Grande'; font-size: 13px; line-height: 20px;"&gt;Take a picture of yourself right now.&lt;br /&gt;
Don’t change your clothes, don’t fix your hair…just take a picture. (should be super-easy with Photobooth)&lt;br /&gt;
Post that picture with NO editing.&lt;br /&gt;
Post these instructions with your picture.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://blog.obiefernandez.com/content/2008/10/the-me-meme.html" style="color: #FF8000; text-decoration: none;"&gt;blog.obiefernandez.com/content/2008/10/the-me-meme.html&lt;/a&gt;&lt;/span&gt;&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/2472972155627143715-8955369842511360461?l=blog.fredjean.net' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=BAVHBmsU0LY:TuSFlYxqX5M:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=BAVHBmsU0LY:TuSFlYxqX5M:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=BAVHBmsU0LY:TuSFlYxqX5M:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?i=BAVHBmsU0LY:TuSFlYxqX5M:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=BAVHBmsU0LY:TuSFlYxqX5M:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/fredjean/outofmymind/~4/BAVHBmsU0LY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.fredjean.net/feeds/8955369842511360461/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.fredjean.net/2008/10/me-meme.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2472972155627143715/posts/default/8955369842511360461?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2472972155627143715/posts/default/8955369842511360461?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/fredjean/outofmymind/~3/BAVHBmsU0LY/me-meme.html" title="The Me Meme" /><author><name>Frederic Jean</name><uri>http://www.blogger.com/profile/01975848477763160312</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06585259622432699714" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/2.0/" /><feedburner:origLink>http://blog.fredjean.net/2008/10/me-meme.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkMGRXYyfyp7ImA9WxJXFkg.&quot;"><id>tag:blogger.com,1999:blog-2472972155627143715.post-5186620570725144282</id><published>2008-09-24T08:50:00.000-06:00</published><updated>2009-06-10T10:13:44.897-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-10T10:13:44.897-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Web Development" /><category scheme="http://www.blogger.com/atom/ns#" term="work" /><category scheme="http://www.blogger.com/atom/ns#" term="Agile Development" /><category scheme="http://www.blogger.com/atom/ns#" term="Development Process" /><title>Elegant Code</title><content type="html">&lt;p&gt;I spent some time going through the &lt;a href="http://elegantcode.com/"&gt;Elegant Code&lt;/a&gt; blog after &lt;a href="http://agileartisans.com/main/blog/129"&gt;Jared blogged about his latest interview&lt;/a&gt;. I was very impressed with the content and added it to my subscription list. I strongly recommend it to anyone who are interested in increasing the elegance and quality of the applications they write.&lt;/p&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2472972155627143715-5186620570725144282?l=blog.fredjean.net' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=M1NGPMgCE64:wsKj6cKUYTk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=M1NGPMgCE64:wsKj6cKUYTk:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=M1NGPMgCE64:wsKj6cKUYTk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?i=M1NGPMgCE64:wsKj6cKUYTk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=M1NGPMgCE64:wsKj6cKUYTk:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/fredjean/outofmymind/~4/M1NGPMgCE64" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.fredjean.net/feeds/5186620570725144282/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.fredjean.net/2008/09/elegant-code.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2472972155627143715/posts/default/5186620570725144282?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2472972155627143715/posts/default/5186620570725144282?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/fredjean/outofmymind/~3/M1NGPMgCE64/elegant-code.html" title="Elegant Code" /><author><name>Frederic Jean</name><uri>http://www.blogger.com/profile/01975848477763160312</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06585259622432699714" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/2.0/" /><feedburner:origLink>http://blog.fredjean.net/2008/09/elegant-code.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkMGR3s9fyp7ImA9WxJXFkg.&quot;"><id>tag:blogger.com,1999:blog-2472972155627143715.post-2870134445458171366</id><published>2008-08-04T12:44:00.000-06:00</published><updated>2009-06-10T10:13:46.567-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-10T10:13:46.567-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Personal" /><title>What I Publish</title><content type="html">&lt;a href="http://wordle.net/gallery/wrdl/104942/What_I_Publish" title="Wordle: What I Publish"&gt;&lt;img src="http://wordle.net/thumb/wrdl/104942/What_I_Publish" style="padding:4px;border:1px solid #ddd" width="532" height="399" /&gt;&lt;/a&gt;&lt;br /&gt;
Here is what I publish through this blog's RSS feed. It's not bound to what I actually write...&lt;br /&gt;
This was created using &lt;a href="http://wordle.net/"&gt;Wordle&lt;/a&gt; and is licensed under a Creative Commons By Attribution License.
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2472972155627143715-2870134445458171366?l=blog.fredjean.net' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=JNP-L9vgQxc:wxgjkSbeTbo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=JNP-L9vgQxc:wxgjkSbeTbo:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=JNP-L9vgQxc:wxgjkSbeTbo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?i=JNP-L9vgQxc:wxgjkSbeTbo:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=JNP-L9vgQxc:wxgjkSbeTbo:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/fredjean/outofmymind/~4/JNP-L9vgQxc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.fredjean.net/feeds/2870134445458171366/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.fredjean.net/2008/08/what-i-publish.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2472972155627143715/posts/default/2870134445458171366?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2472972155627143715/posts/default/2870134445458171366?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/fredjean/outofmymind/~3/JNP-L9vgQxc/what-i-publish.html" title="What I Publish" /><author><name>Frederic Jean</name><uri>http://www.blogger.com/profile/01975848477763160312</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06585259622432699714" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/2.0/" /><feedburner:origLink>http://blog.fredjean.net/2008/08/what-i-publish.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkMGSXs8cSp7ImA9WxJXFkg.&quot;"><id>tag:blogger.com,1999:blog-2472972155627143715.post-7333451523700019299</id><published>2008-08-04T12:41:00.000-06:00</published><updated>2009-06-10T10:13:48.579-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-10T10:13:48.579-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Personal" /><title>What Peeks My Interest</title><content type="html">&lt;a href="http://wordle.net/gallery/wrdl/104937/What_Peeks_My_Interest" title="Wordle: What Peeks My Interest"&gt;&lt;img src="http://wordle.net/thumb/wrdl/104937/What_Peeks_My_Interest" style="padding:4px;border:1px solid #ddd" width="499" height="374" /&gt;&lt;/a&gt;&lt;br /&gt;
Generated by &lt;a href="http://wordle.net/"&gt;Wordle&lt;/a&gt; and published under a &lt;a href="http://creativecommons.org/licenses/by/3.0/us"&gt;Creative Common "By Attribution" license&lt;/a&gt;.
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2472972155627143715-7333451523700019299?l=blog.fredjean.net' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=S3gcKE6iU7Q:t_fIMvLOuLo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=S3gcKE6iU7Q:t_fIMvLOuLo:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=S3gcKE6iU7Q:t_fIMvLOuLo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?i=S3gcKE6iU7Q:t_fIMvLOuLo:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=S3gcKE6iU7Q:t_fIMvLOuLo:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/fredjean/outofmymind/~4/S3gcKE6iU7Q" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.fredjean.net/feeds/7333451523700019299/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.fredjean.net/2008/08/what-peeks-my-interest.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2472972155627143715/posts/default/7333451523700019299?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2472972155627143715/posts/default/7333451523700019299?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/fredjean/outofmymind/~3/S3gcKE6iU7Q/what-peeks-my-interest.html" title="What Peeks My Interest" /><author><name>Frederic Jean</name><uri>http://www.blogger.com/profile/01975848477763160312</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06585259622432699714" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/2.0/" /><feedburner:origLink>http://blog.fredjean.net/2008/08/what-peeks-my-interest.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkMHQXk8eSp7ImA9WxJXFkg.&quot;"><id>tag:blogger.com,1999:blog-2472972155627143715.post-140287976628516642</id><published>2008-07-17T15:09:00.000-06:00</published><updated>2009-06-10T10:13:50.771-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-10T10:13:50.771-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="work" /><category scheme="http://www.blogger.com/atom/ns#" term="General" /><title>Back on blogs.sun.com</title><content type="html">&lt;p&gt;I have been back at Sun for almost a year now. Still, there are a few things that I have yet to take care of. Things like unsubscribing from the Sun Alumni Yahoo! group. Or moving my RSS feed back to blogs.sun.com.&lt;/p&gt;
&lt;p&gt;Well, one of these things have been taken care of since I am now syndicated on blogs.sun.com instead of alumni.sun.com. It will be interesting to see how this affects my FeedBurner numbers...&lt;/p&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2472972155627143715-140287976628516642?l=blog.fredjean.net' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=VfWLTT_JUJ0:vPd14Gsw8eo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=VfWLTT_JUJ0:vPd14Gsw8eo:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=VfWLTT_JUJ0:vPd14Gsw8eo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?i=VfWLTT_JUJ0:vPd14Gsw8eo:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=VfWLTT_JUJ0:vPd14Gsw8eo:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/fredjean/outofmymind/~4/VfWLTT_JUJ0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.fredjean.net/feeds/140287976628516642/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.fredjean.net/2008/07/back-on-blogssuncom.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2472972155627143715/posts/default/140287976628516642?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2472972155627143715/posts/default/140287976628516642?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/fredjean/outofmymind/~3/VfWLTT_JUJ0/back-on-blogssuncom.html" title="Back on blogs.sun.com" /><author><name>Frederic Jean</name><uri>http://www.blogger.com/profile/01975848477763160312</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06585259622432699714" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/2.0/" /><feedburner:origLink>http://blog.fredjean.net/2008/07/back-on-blogssuncom.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkMHQ3s8eSp7ImA9WxJXFkg.&quot;"><id>tag:blogger.com,1999:blog-2472972155627143715.post-2920820885018039653</id><published>2008-05-30T10:06:00.000-06:00</published><updated>2009-06-10T10:13:52.571-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-10T10:13:52.571-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ZK" /><category scheme="http://www.blogger.com/atom/ns#" term="REM" /><title>Released REM 1.5.0 for NetBeans 6.x</title><content type="html">&lt;p&gt;I just pushed REm 1.5.0 for NetBeans 6.x. This releases adds the following features:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Bundles ZK 3.0.5&lt;/li&gt;

  &lt;li&gt;Provides basic syntax highlighting for ZHTML files.&lt;/li&gt;

  &lt;li&gt;Provides basic syntax highlighting for DSP files.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can download the plugin from &lt;a href="http://downloads.sourceforge.net/rem1/REM-1.5.0.zip?use_mirror=osdn"&gt;Sourceforge.net&lt;/a&gt;.&lt;/p&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2472972155627143715-2920820885018039653?l=blog.fredjean.net' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=Bn6MMpOerTQ:7td2-4OWmkI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=Bn6MMpOerTQ:7td2-4OWmkI:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=Bn6MMpOerTQ:7td2-4OWmkI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?i=Bn6MMpOerTQ:7td2-4OWmkI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=Bn6MMpOerTQ:7td2-4OWmkI:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/fredjean/outofmymind/~4/Bn6MMpOerTQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.fredjean.net/feeds/2920820885018039653/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.fredjean.net/2008/05/released-rem-150-for-netbeans-6x.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2472972155627143715/posts/default/2920820885018039653?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2472972155627143715/posts/default/2920820885018039653?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/fredjean/outofmymind/~3/Bn6MMpOerTQ/released-rem-150-for-netbeans-6x.html" title="Released REM 1.5.0 for NetBeans 6.x" /><author><name>Frederic Jean</name><uri>http://www.blogger.com/profile/01975848477763160312</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06585259622432699714" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/2.0/" /><feedburner:origLink>http://blog.fredjean.net/2008/05/released-rem-150-for-netbeans-6x.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkMHRXg_cCp7ImA9WxJXFkg.&quot;"><id>tag:blogger.com,1999:blog-2472972155627143715.post-1077212276035373077</id><published>2008-05-06T17:31:00.000-06:00</published><updated>2009-06-10T10:13:54.648-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-10T10:13:54.648-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Java" /><title>Do You Really Need That Jar File?</title><content type="html">&lt;p&gt;Many Java projects accumulate Jar files. Their numbers just grow until you are not exactly sure why or whether a Jar file is still in use. Traditionally, you answer the question of whether you still need a specific file by removing it from the class path, attempting to build your project, deploying it and seeing whether the application works or not.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.linkedin.com/pub/2/035/080" title="Kyrill's profile on Linked In"&gt;Kyrill Alyoshin&lt;/a&gt; has released a beta version of his loosejar project. The goal is to determine what jar files are not being used by your application. It does so by analyzing what classes are loaded by which class loader. The result is a report that is presented via JMX or through the console (once the VM is shutdown).&lt;/p&gt;
&lt;p&gt;The project is hosted on &lt;a href="http://code.google.com/p/loosejar/" title="Loosejar project URL on Google Code."&gt;Google Code&lt;/a&gt; and it is released under the Apache Software License v2.0.&lt;/p&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2472972155627143715-1077212276035373077?l=blog.fredjean.net' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=cknowU_AB84:vv0VXvTjzwM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=cknowU_AB84:vv0VXvTjzwM:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=cknowU_AB84:vv0VXvTjzwM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?i=cknowU_AB84:vv0VXvTjzwM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=cknowU_AB84:vv0VXvTjzwM:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/fredjean/outofmymind/~4/cknowU_AB84" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.fredjean.net/feeds/1077212276035373077/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.fredjean.net/2008/05/do-you-really-need-that-jar-file.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2472972155627143715/posts/default/1077212276035373077?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2472972155627143715/posts/default/1077212276035373077?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/fredjean/outofmymind/~3/cknowU_AB84/do-you-really-need-that-jar-file.html" title="Do You Really Need That Jar File?" /><author><name>Frederic Jean</name><uri>http://www.blogger.com/profile/01975848477763160312</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06585259622432699714" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/2.0/" /><feedburner:origLink>http://blog.fredjean.net/2008/05/do-you-really-need-that-jar-file.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkMHR3gycCp7ImA9WxJXFkg.&quot;"><id>tag:blogger.com,1999:blog-2472972155627143715.post-7315085765090019174</id><published>2008-02-28T05:57:00.000-07:00</published><updated>2009-06-10T10:13:56.698-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-10T10:13:56.698-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Groovy" /><category scheme="http://www.blogger.com/atom/ns#" term="General" /><title>Groovy Fizz and Buzz</title><content type="html">&lt;p&gt;The &lt;a href="http://tickletux.wordpress.com/2007/01/24/using-fizzbuzz-to-find-developers-who-grok-coding/"&gt;FizzBuzz programming interview&lt;/a&gt; question &lt;a href="http://www.dougalstanton.net/blog/index.php/2008/02/26/my-shame-is-complete"&gt;raised it's head again&lt;/a&gt;. I've managed to resist the temptation to implement it in any languages so far. Until this morning that is...&lt;/p&gt;
&lt;p&gt;So I fired up the Groovy Console and played a little. A nice feature of the console is that it displays a history of the scripts it ran. This allows me to present an evolution of my FizzBuzz program.&lt;/p&gt;
&lt;p&gt;I first started with a rather naive implementation:&lt;/p&gt;
&lt;pre&gt;
(1..100).each { 
  def out = "" 
  if ((it % 3) == 0) { out += "Fizz" } 
  if ((it % 5) == 0) { out += "Buzz" } 
  if (out == "" ) { out = it } 
  println out
}
&lt;/pre&gt;
&lt;p&gt;Not bad for something that I came up with in about 10 minutes. It doesn't really take advantage of Groovy's features though. So I refined it a bit by using the ternary operator:&lt;/p&gt;
&lt;pre&gt;
(1..100).each {
  def out = (it % 3) == 0 ? "Fizz" : ""
  out += (it % 5) == 0 ? "Buzz" : ""
  println (out == "" ? it : out)
}
&lt;/pre&gt;
&lt;p&gt;This is a slight improvement over the first version. I still didn't feel that this was Groovy enough for me. I decided to play with the List collect method. This applies a closure to all items in a collection. The first pass was the following code segment:&lt;/p&gt;
&lt;pre&gt;
println ((1..100).collect {
  def out = (it % 3) == 0 ? "Fizz" : ""
  out += (it % 5) == 0 ? "Buzz" : ""
  out == "" ? it : out
})
&lt;/pre&gt;
&lt;p&gt;This ended up printing the list returned by the collect method. Really close, but not quite what I was hoping for. After all, the challenge is to print the results, not quite a string representation of a list. It was easy then to go from the code above to the code below:&lt;/p&gt;
&lt;pre&gt;
(1..100).collect {
  def out = (it % 3) == 0 ? "Fizz" : ""
  out += (it % 5) == 0 ? "Buzz" : ""
  out ?: it
}.each { println it }
&lt;/pre&gt;
&lt;p&gt;This printed the list just like the first pass. It's definitively Groovier (in my opinion) than the original implementation. It still does fall short of the capabilities of Groovy.&lt;/p&gt;
&lt;p&gt;So here's my final implementation:&lt;/p&gt;
&lt;pre&gt;
(1..100).collect {
     ((it % 3) == 0 ? "Fizz" : "") &amp;lt;&amp;lt; ((it % 5) == 0 ? "Buzz" : "") ?: it
}.each { println it }
&lt;/pre&gt;
&lt;p&gt;This takes full advantage of Groovy's power. It is a little harder to read, which is a downside. It does take full advantage of many of Groovy's powerful features:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;A range to generate the list of numbers to process. Ranges return an iterator that iterates from the start of the range to the end of the range.&lt;/li&gt;

  &lt;li&gt;The collect method which applies a closure to each item in the collection (or iterator) and returns the results as a list.&lt;/li&gt;

  &lt;li&gt;The each method, which iterates through a list and applies a closure to it. It returns the collection that it iterated through.&lt;/li&gt;

  &lt;li&gt;Closures, which are implemented quite well in Groovy.&lt;/li&gt;

  &lt;li&gt;Operator overloading. The &amp;lt;&amp;lt; operator is overloaded on the String class to concatenate two Strings together.&lt;/li&gt;

  &lt;li&gt;The brand new Elvis operator (?:) which returns the alternate value if the expression evaluates to false.&lt;/li&gt;

  &lt;li&gt;Groovy returns the last expression of a block as the result of the block. This includes closures and methods.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I do think that I'll incorporate this question in future interviews. It has quite a few interesting subtleties and implementations that are only rivaled by the Singleton pattern. I guess that the last group of interviewees got it a little easier...&lt;/p&gt;&lt;br /&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2472972155627143715-7315085765090019174?l=blog.fredjean.net' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=6KqNYcf87mI:gvKSwqeYnGA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=6KqNYcf87mI:gvKSwqeYnGA:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=6KqNYcf87mI:gvKSwqeYnGA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?i=6KqNYcf87mI:gvKSwqeYnGA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=6KqNYcf87mI:gvKSwqeYnGA:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/fredjean/outofmymind/~4/6KqNYcf87mI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.fredjean.net/feeds/7315085765090019174/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.fredjean.net/2008/02/groovy-fizz-and-buzz.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2472972155627143715/posts/default/7315085765090019174?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2472972155627143715/posts/default/7315085765090019174?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/fredjean/outofmymind/~3/6KqNYcf87mI/groovy-fizz-and-buzz.html" title="Groovy Fizz and Buzz" /><author><name>Frederic Jean</name><uri>http://www.blogger.com/profile/01975848477763160312</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06585259622432699714" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/2.0/" /><feedburner:origLink>http://blog.fredjean.net/2008/02/groovy-fizz-and-buzz.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkMHSXkzeCp7ImA9WxJXFkg.&quot;"><id>tag:blogger.com,1999:blog-2472972155627143715.post-6874703164358246179</id><published>2008-01-20T18:02:00.000-07:00</published><updated>2009-06-10T10:13:58.780-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-10T10:13:58.780-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="General" /><category scheme="http://www.blogger.com/atom/ns#" term="Personal" /><title>New Countertops and Sink</title><content type="html">&lt;p style="text-align: center;"&gt;&lt;img src="http://blog.fredjean.net/files/P1200003.jpg" width="480" height="360" alt="Our new kitchen"/&gt;&lt;/p&gt;
&lt;p&gt;Our old countertops where in really bad shape, and it was driving my wife to insanity (or so she claims). We had done everything we could think of to extend their life. We painted them, we glued the old formica in place. But the paint started to chip and the formica didn't stay glued on very long. So we decided that we had to address the countertop situation.&lt;/p&gt;
&lt;p&gt;We remembered passing by a booth at the Flatiron Mall advertising an engineered granite solution by &lt;a href="http://www.granitetransformations.com/" title="Granite Transformations Home Page"&gt;Granite Transformations&lt;/a&gt;. It happens that I occasionally drive by their local franchise. We stopped by on a Saturday afternoon, got some information and scheduled an estimate. We did have a little sticker shock at first so we decided to compare other options before going ahead. It turns out that they were competitive with other options from Lowes and Home Depots.&lt;/p&gt;
&lt;p&gt;I had to take out the sink before the installation could occur, so we decided to upgrade the sink at the same time.&lt;/p&gt;
&lt;p&gt;The installation itself is a two step process. First, a template is built to facilitate the fabrication process. The team showed up right on time for the appointment and created the template. Three days later, they showed up for the installation proper. There was very little demolition involved. The old countertops didn't need to be ripped out since this is an overlay product. They were done right on time for lunch.&lt;/p&gt;
&lt;p&gt;I decided to install the sink myself. It did turn into a bit of a saga, like any home improvement projects that I take on. It was promptly resolved once I found the right feed lines for the sink. Within a few hours the sink and new faucets were installed and tested.&lt;/p&gt;
&lt;p&gt;My lovely wife is simply in love with the new kitchen and raves about it. I love it too and feel a lot of pride in having installed the sink myself. We are already compiling a list of projects to do next. It never really stops...&lt;/p&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2472972155627143715-6874703164358246179?l=blog.fredjean.net' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=4bUJnLrqrgo:anCVwhVXgvs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=4bUJnLrqrgo:anCVwhVXgvs:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=4bUJnLrqrgo:anCVwhVXgvs:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?i=4bUJnLrqrgo:anCVwhVXgvs:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/fredjean/outofmymind?a=4bUJnLrqrgo:anCVwhVXgvs:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/fredjean/outofmymind?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/fredjean/outofmymind/~4/4bUJnLrqrgo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.fredjean.net/feeds/6874703164358246179/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://blog.fredjean.net/2008/01/new-countertops-and-sink.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2472972155627143715/posts/default/6874703164358246179?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2472972155627143715/posts/default/6874703164358246179?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/fredjean/outofmymind/~3/4bUJnLrqrgo/new-countertops-and-sink.html" title="New Countertops and Sink" /><author><name>Frederic Jean</name><uri>http://www.blogger.com/profile/01975848477763160312</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="06585259622432699714" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/2.0/" /><feedburner:origLink>http://blog.fredjean.net/2008/01/new-countertops-and-sink.html</feedburner:origLink></entry><entry><title type="text">Links for 2009-03-30 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/fredjean/outofmymind/~3/YIxwqXU87NE/fredjean" /><updated>2009-03-31T00:00:00-07:00</updated><id>http://del.icio.us/fredjean#2009-03-30</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.codinghorror.com/blog/archives/001248.html"&gt;The Ugly American Programmer&lt;/a&gt;&lt;br/&gt;
English is already the lingua franca of the hacker culture. Being able to understand it and express yourself in it is a basic requirement to be effective as a programmer.&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/fredjean/outofmymind/~4/YIxwqXU87NE" height="1" width="1"/&gt;</content><feedburner:origLink>http://del.icio.us/fredjean#2009-03-30</feedburner:origLink></entry><entry><title type="text">Links for 2009-03-02 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/fredjean/outofmymind/~3/Aszz2Wx3SXs/fredjean" /><updated>2009-03-03T00:00:00-08:00</updated><id>http://del.icio.us/fredjean#2009-03-02</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://feedproxy.google.com/~r/DilbertDailyStrip/~3/VAjGoSrBifo/"&gt;Comic for March 2, 2009&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/fredjean/outofmymind/~4/Aszz2Wx3SXs" height="1" width="1"/&gt;</content><feedburner:origLink>http://del.icio.us/fredjean#2009-03-02</feedburner:origLink></entry><entry><title type="text">Links for 2009-02-24 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/fredjean/outofmymind/~3/tCImGlqOZGw/fredjean" /><updated>2009-02-25T00:00:00-08:00</updated><id>http://del.icio.us/fredjean#2009-02-24</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.cuddletech.com/blog/pivot/entry.php?id=1019"&gt;Ben Rockwood: LinkedIn Replaced The Resume; or 21st Century Relevance&lt;/a&gt;&lt;br/&gt;
Your online presence and &amp;quot;searchability&amp;quot; is a big factor when it comes to getting hired to do interesting work. You handicap yourself severely if you aren&amp;#039;t active and present on the Internet.&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/fredjean/outofmymind/~4/tCImGlqOZGw" height="1" width="1"/&gt;</content><feedburner:origLink>http://del.icio.us/fredjean#2009-02-24</feedburner:origLink></entry><entry><title type="text">Links for 2009-02-09 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/fredjean/outofmymind/~3/oltw6z_d0XM/fredjean" /><updated>2009-02-10T00:00:00-08:00</updated><id>http://del.icio.us/fredjean#2009-02-09</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://feedproxy.google.com/~r/GeekHero/~3/Qt_yN1zTWAk/"&gt;FOSS Windows&lt;/a&gt;&lt;br/&gt;
This pretty much fits my opinion...&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/fredjean/outofmymind/~4/oltw6z_d0XM" height="1" width="1"/&gt;</content><feedburner:origLink>http://del.icio.us/fredjean#2009-02-09</feedburner:origLink></entry><entry><title type="text">Links for 2009-02-06 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/fredjean/outofmymind/~3/r9WtCTP6usY/fredjean" /><updated>2009-02-07T00:00:00-08:00</updated><id>http://del.icio.us/fredjean#2009-02-06</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://agiletesting.blogspot.com/2009/02/load-balancing-in-amazon-ec2-with.html"&gt;Agile Testing: Load Balancing in Amazon EC2 with HAProxy&lt;/a&gt;&lt;br/&gt;
How to use HAProxy to load balance between multiple EC2 instances.&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/fredjean/outofmymind/~4/r9WtCTP6usY" height="1" width="1"/&gt;</content><feedburner:origLink>http://del.icio.us/fredjean#2009-02-06</feedburner:origLink></entry><entry><title type="text">Links for 2009-02-05 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/fredjean/outofmymind/~3/XTs0LjNbB1U/fredjean" /><updated>2009-02-06T00:00:00-08:00</updated><id>http://del.icio.us/fredjean#2009-02-05</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://feedproxy.google.com/~r/sonatype/~3/Neg-Ba9_YZs/"&gt;Nexus Professional: What is Staging?&lt;/a&gt;&lt;br/&gt;
While this is obvious marketing, the approach described can be implemented using currently available tools. It does describe one way to decouple development teams and reduce the impact of working with a monolithic code base.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://highscalability.com/canonical-cloud-architecture"&gt;The Canonical Cloud Architecture&lt;/a&gt;&lt;br/&gt;
Discusses the basic architectural patterns for applications that target the cloud.&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/fredjean/outofmymind/~4/XTs0LjNbB1U" height="1" width="1"/&gt;</content><feedburner:origLink>http://del.icio.us/fredjean#2009-02-05</feedburner:origLink></entry></feed>
