<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4536035864522363422</id><updated>2011-07-30T12:59:25.945-07:00</updated><category term='moving'/><category term='pairprogramming'/><category term='javascript'/><category term='XP'/><category term='codekata'/><category term='thankful'/><category term='coreyhaines'/><category term='programming'/><category term='Blog Tips'/><category term='Plaxo'/><category term='Java JUG'/><category term='extremeprogramming'/><category term='Java'/><category term='ajax tdd javascript'/><category term='opensocial'/><category term='bestpractices'/><category term='Plaxo Pulse'/><category term='feedback'/><category term='agile'/><category term='LinkedIn'/><category term='Flickr'/><category term='dsl'/><category term='codingdojo'/><category term='fluentinterfaces'/><category term='xp principles'/><title type='text'>Michael Finney At Your Service, The Smiling Software Developer</title><subtitle type='html'>Hi! This is the old location of my blog. Come on over to http://smilingfinney.blogspot.com/ where I am still
living the Yes Attitude of Software Development. (Smiling is still an agile software development action.)

I am Michael Finney; How can I help you?</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://finneycanhelp.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4536035864522363422/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://finneycanhelp.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Michael Finney</name><uri>http://www.blogger.com/profile/17457098547399793906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://farm1.static.flickr.com/117/312510265_cc676435cd_m.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>20</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4536035864522363422.post-7668968089490458063</id><published>2010-10-30T10:10:00.003-07:00</published><updated>2010-10-30T10:10:51.563-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='moving'/><title type='text'>New Blog Location</title><content type='html'>Hi,&lt;br /&gt;&lt;br /&gt;My new blog location is at &lt;a href="http://smilingfinney.blogspot.com/"&gt;http://smilingfinney.blogspot.com/&lt;/a&gt;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;All the posts have been imported. So, &lt;a href="http://smilingfinney.blogspot.com/"&gt;come on over &lt;/a&gt;!&amp;nbsp; :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4536035864522363422-7668968089490458063?l=finneycanhelp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://finneycanhelp.blogspot.com/feeds/7668968089490458063/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4536035864522363422&amp;postID=7668968089490458063' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4536035864522363422/posts/default/7668968089490458063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4536035864522363422/posts/default/7668968089490458063'/><link rel='alternate' type='text/html' href='http://finneycanhelp.blogspot.com/2010/10/new-blog-location.html' title='New Blog Location'/><author><name>Michael Finney</name><uri>http://www.blogger.com/profile/17457098547399793906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://farm1.static.flickr.com/117/312510265_cc676435cd_m.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4536035864522363422.post-2184761798913646040</id><published>2009-11-29T07:28:00.001-08:00</published><updated>2010-07-05T16:38:07.067-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='thankful'/><category scheme='http://www.blogger.com/atom/ns#' term='bestpractices'/><title type='text'>People Who Care And Share</title><content type='html'>&lt;a href="http://www.flickr.com/photos/zenera/4143176573/" title="photo sharing"&gt;&lt;img alt="" src="http://farm3.static.flickr.com/2737/4143176573_d65e18c715_m.jpg" style="border: solid 2px #000000;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size: 0.9em; margin-top: 0px;"&gt;&lt;a href="http://www.flickr.com/photos/zenera/4143176573/"&gt;Thankful*&lt;/a&gt;&lt;br /&gt;Originally uploaded by &lt;a href="http://www.flickr.com/people/zenera/"&gt;zenera&lt;/a&gt;&lt;/span&gt; &lt;br /&gt;It's wonderful that people care enough to share. People care about the gifts they have and share the fruits of their gift with the world.&lt;br /&gt;&lt;br /&gt;From the software world, this can lead to books such as &lt;a href="http://blog.objectmentor.com/articles/2008/04/08/clean-code-whew"&gt;Clean Code&lt;/a&gt; by Uncle Bob Martin. From Flickr, it can be zenera who posts wonderful photos and shares them freely.&lt;br /&gt;&lt;br /&gt;Thank you all. I am grateful.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4536035864522363422-2184761798913646040?l=finneycanhelp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://finneycanhelp.blogspot.com/feeds/2184761798913646040/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4536035864522363422&amp;postID=2184761798913646040' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4536035864522363422/posts/default/2184761798913646040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4536035864522363422/posts/default/2184761798913646040'/><link rel='alternate' type='text/html' href='http://finneycanhelp.blogspot.com/2009/11/people-who-care-and-share.html' title='People Who Care And Share'/><author><name>Michael Finney</name><uri>http://www.blogger.com/profile/17457098547399793906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://farm1.static.flickr.com/117/312510265_cc676435cd_m.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm3.static.flickr.com/2737/4143176573_d65e18c715_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4536035864522363422.post-4244603502476398120</id><published>2009-09-19T10:13:00.000-07:00</published><updated>2009-09-19T10:36:54.630-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='bestpractices'/><title type='text'>Be Privileged And Skip JavaScript's Prototype</title><content type='html'>&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;Reading &lt;a href="http://jspro.org/"&gt;Pro JavaScript&lt;/a&gt;'s second chapter "Object-Oriented JavaScript" reminded me that I do not use the prototype property to add public methods to a JavaScript object. I use "Privileged Methods" (pg 36) instead.&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;In the book, John&lt;span&gt;&lt;span&gt; refers to &lt;a href="http://javascript.crockford.com/"&gt;Douglas Crockford's Jav&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"   style="font-family:'Times New Roman';font-size:medium;"&gt;&lt;span style="font-size:+1;"&gt;&lt;span class="Apple-style-span"  style="color:#330033;"&gt;&lt;/span&gt;&lt;a href="http://javascript.crockford.com/"&gt;aScript&lt;/a&gt; site and the Privileged technique described in the &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_1"&gt;web page&lt;/span&gt; titled &lt;a href="http://javascript.crockford.com/private.html"&gt;Private Members in JavaScript&lt;/a&gt;. I quote from the &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_2"&gt;web page&lt;/span&gt;:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="font-family:'Times New Roman';font-size:medium;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre; "&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre; "&gt; &lt;/span&gt; &lt;/span&gt;&lt;/span&gt;"A &lt;i&gt;privileged&lt;/i&gt; method is able to access the private variables and methods, and is itself accessible to the public methods and the outside."&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;If you are looking for more code examples beyond what Douglas Crockford provides, Quizzpot shows more code examples at &lt;a href="http://www.quizzpot.com/2009/04/private-methods-and-privileged-methods/"&gt;Private and privileged methods in JavaScript&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Using Privileged Methods is a great technique when coding JavaScript objects. Have fun doing it. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4536035864522363422-4244603502476398120?l=finneycanhelp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://finneycanhelp.blogspot.com/feeds/4244603502476398120/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4536035864522363422&amp;postID=4244603502476398120' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4536035864522363422/posts/default/4244603502476398120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4536035864522363422/posts/default/4244603502476398120'/><link rel='alternate' type='text/html' href='http://finneycanhelp.blogspot.com/2009/09/javascript.html' title='Be Privileged And Skip JavaScript&apos;s Prototype'/><author><name>Michael Finney</name><uri>http://www.blogger.com/profile/17457098547399793906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://farm1.static.flickr.com/117/312510265_cc676435cd_m.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4536035864522363422.post-6422040908343185528</id><published>2009-08-16T08:02:00.001-07:00</published><updated>2009-08-16T08:10:29.343-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ajax tdd javascript'/><title type='text'>JavaScript, TDD, JQuery</title><content type='html'>&lt;span class="Apple-style-span"  style=" ;font-family:'Times New Roman';"&gt;&lt;div style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; width: auto; font: normal normal normal 100%/normal Georgia, serif; text-align: left; "&gt;In the area of Ajax and JavaScript, the rate of change has increased where I work. I believe this is reflective of the industry in general.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Since there is so much for one to look at, people will want to focus on those things which are essential.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Items of immediate interest are (in no particular order):&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Object Oriented JavaScript Best Practices&lt;/li&gt;&lt;li&gt;TDDing JavaScript&lt;/li&gt;&lt;li&gt;&lt;a href="http://jquery.com/"&gt;JQuery&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://code.google.com/p/js-test-driver/"&gt;JsTestDriver&lt;/a&gt; and its eclipse &lt;a href="http://js-test-driver.googlecode.com/svn/update/plugins/" style="text-decoration: none;"&gt;plugin&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;a href="http://blog.james-carr.org/"&gt;James Carr&lt;/a&gt; and I had fun integrating &lt;a href="https://hudson.dev.java.net/"&gt;Hudson &lt;/a&gt;with &lt;a href="http://code.google.com/p/js-test-driver/"&gt;JsTestDriver&lt;/a&gt;. It's a good step towards TDDing JavaScript.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here's to the future&lt;/div&gt;&lt;div&gt;:)&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4536035864522363422-6422040908343185528?l=finneycanhelp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://finneycanhelp.blogspot.com/feeds/6422040908343185528/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4536035864522363422&amp;postID=6422040908343185528' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4536035864522363422/posts/default/6422040908343185528'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4536035864522363422/posts/default/6422040908343185528'/><link rel='alternate' type='text/html' href='http://finneycanhelp.blogspot.com/2009/08/ajax-javascript-tdd-jquery.html' title='JavaScript, TDD, JQuery'/><author><name>Michael Finney</name><uri>http://www.blogger.com/profile/17457098547399793906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://farm1.static.flickr.com/117/312510265_cc676435cd_m.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4536035864522363422.post-4962736049281634281</id><published>2009-02-01T10:46:00.000-08:00</published><updated>2009-03-15T13:26:45.223-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='codekata'/><category scheme='http://www.blogger.com/atom/ns#' term='coreyhaines'/><title type='text'>Corey Haines and Code Katas</title><content type='html'>Surrounded by the smell of burnt popcorn and listening to the video &lt;a href="http://programmingtour.blogspot.com/2009/02/road-thoughts-practice.html"&gt;Road Thoughts - Practice : 'Doing it right' vs 'Getting it done'&lt;/a&gt; really drove home some thoughts.&lt;br /&gt;&lt;br /&gt;Do &lt;a href="http://en.wikipedia.org/wiki/Kata_%28programming%29"&gt;Katas&lt;/a&gt;. Do the same problems over and over again. Apply different techniques and approaches. Some quotes from the video:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;"don't  wait for those things to be ingrained..." over time. &lt;/li&gt;&lt;li&gt;Practice. "1 hour a day; as much as  you can." &lt;/li&gt;&lt;li&gt;"Write small problems or solutions to a problem."&lt;/li&gt;&lt;/ul&gt;Practicing is essential. Practicing effectively is the goal. Practicing efficiently is a challenge.&lt;br /&gt;&lt;br /&gt;For a Refactoring kata, what may work for you is setting up some code that needs to be refactored along with the needed JUnit Tests. Once at a satisfactory level of refactoring, you can blow away the refactored solution and refactor again from the start. Where to store such an exercise or Refactoring starting point?&lt;br /&gt;&lt;br /&gt;I have given some thought to creating a Java project using &lt;a href="http://code.google.com/hosting/"&gt;Google's Project Hosting&lt;/a&gt; that contains things to practice on. I could apply the following labels to the project; &lt;a href="http://code.google.com/hosting/search?q=label%3AJava+label%3Akata&amp;amp;projectsearch=Search+Projects"&gt;label:Java label:kata&lt;/a&gt;. There are a couple projects in there now with those labels. I even see a &lt;a href="http://code.google.com/p/java-katas/"&gt;"java-katas" project&lt;/a&gt;, but it is currently void of code.&lt;br /&gt;&lt;br /&gt;Another thing to think about is practicing with a framework such as &lt;a href="http://struts.apache.org/2.x/"&gt;Struts2&lt;/a&gt;. Perhaps another project could be created which has the labels of Java, kata, struts2.&lt;br /&gt;&lt;br /&gt;If &lt;a href="http://maven.apache.org/"&gt;Maven 2&lt;/a&gt;  is gaining enough popularity, maybe an even better solution is to create Maven archetypes which contain everything you need to practice particular things. Imagine creating a temporary project that is based off a starter template/archetype. Everything you need is downloaded automatically and you're ready to practice.&lt;br /&gt;&lt;br /&gt;Well, good luck to you in your quest to practice. Time for me to practice and eat more carefully prepared popcorn.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Update! (March 15, 2009) - &lt;/span&gt; &lt;a href="http://code.google.com/p/funkata/"&gt;http://code.google.com/p/funkata/&lt;/a&gt; now exists.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4536035864522363422-4962736049281634281?l=finneycanhelp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://finneycanhelp.blogspot.com/feeds/4962736049281634281/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4536035864522363422&amp;postID=4962736049281634281' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4536035864522363422/posts/default/4962736049281634281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4536035864522363422/posts/default/4962736049281634281'/><link rel='alternate' type='text/html' href='http://finneycanhelp.blogspot.com/2009/02/corey-haines-and-code-katas.html' title='Corey Haines and Code Katas'/><author><name>Michael Finney</name><uri>http://www.blogger.com/profile/17457098547399793906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://farm1.static.flickr.com/117/312510265_cc676435cd_m.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4536035864522363422.post-5566273221830257088</id><published>2008-11-26T18:54:00.000-08:00</published><updated>2008-11-26T18:57:11.523-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Wrapping 3rd Party Code Is Clean Code Crafty</title><content type='html'>The &lt;a href="http://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882"&gt;Clean Code&lt;/a&gt; book by Robert C. Martin has great points about system boundaries. In chapter 8 titled &lt;span style="font-style: italic;"&gt;Boundaries&lt;/span&gt; and in the section called &lt;span style="font-style: italic;"&gt;Using Third-Party Code&lt;/span&gt;, the book shares why and how to wrap 3rd party code.&lt;br /&gt;&lt;br /&gt;Points For Why To Wrap Third Party Code (page 115):&lt;br /&gt;&lt;ol&gt;&lt;li&gt;The third party code can evolve&lt;/li&gt;&lt;li&gt;Your wrapper's interface can be made to precisely suit your application's needs&lt;/li&gt;&lt;/ol&gt; Like the book says on page 115, "If you use a boundary interface like Map, keep it inside the class, or close family of classes, where it is used."&lt;br /&gt;&lt;br /&gt;That's huge! I also like the "Sensors" class example which has a method that will give you a "Sensor" class. Sensors giving you a Sensor, implies a naming rule-of-thumb which I also like.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4536035864522363422-5566273221830257088?l=finneycanhelp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://finneycanhelp.blogspot.com/feeds/5566273221830257088/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4536035864522363422&amp;postID=5566273221830257088' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4536035864522363422/posts/default/5566273221830257088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4536035864522363422/posts/default/5566273221830257088'/><link rel='alternate' type='text/html' href='http://finneycanhelp.blogspot.com/2008/11/wrapping-3rd-party-code-is-clean-code.html' title='Wrapping 3rd Party Code Is Clean Code Crafty'/><author><name>Michael Finney</name><uri>http://www.blogger.com/profile/17457098547399793906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://farm1.static.flickr.com/117/312510265_cc676435cd_m.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4536035864522363422.post-3138199703007871499</id><published>2008-11-01T12:37:00.000-07:00</published><updated>2008-11-01T12:46:19.414-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='feedback'/><category scheme='http://www.blogger.com/atom/ns#' term='pairprogramming'/><title type='text'>Pair Programming - Pair Share Feedback</title><content type='html'>I discovered that the most satisfying pair programming experience is when the following cycle happens:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Pair&lt;/li&gt;&lt;li&gt;Share&lt;/li&gt;&lt;li&gt;Feedback&lt;/li&gt;&lt;/ol&gt;Pair - You do the work. You &lt;a href="http://en.wikipedia.org/wiki/Pair_programming"&gt;Pair Program&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Share - I share or my partner shares knowledge. Beyond sharing while pairing, this can be additional followup information. Most recently, this was in the form of a follow up email from me with resources.&lt;br /&gt;&lt;br /&gt;Feedback - Feedback on the knowledge and the pair programming experience itself is exchanged.&lt;br /&gt;&lt;br /&gt;Pair, Share, Feedback. Yes!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4536035864522363422-3138199703007871499?l=finneycanhelp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://finneycanhelp.blogspot.com/feeds/3138199703007871499/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4536035864522363422&amp;postID=3138199703007871499' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4536035864522363422/posts/default/3138199703007871499'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4536035864522363422/posts/default/3138199703007871499'/><link rel='alternate' type='text/html' href='http://finneycanhelp.blogspot.com/2008/11/pair-programming-pair-share-feedback.html' title='Pair Programming - Pair Share Feedback'/><author><name>Michael Finney</name><uri>http://www.blogger.com/profile/17457098547399793906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://farm1.static.flickr.com/117/312510265_cc676435cd_m.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4536035864522363422.post-911729050132459978</id><published>2008-09-07T18:18:00.000-07:00</published><updated>2009-02-01T09:40:05.783-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='codingdojo'/><category scheme='http://www.blogger.com/atom/ns#' term='codekata'/><title type='text'>Coding Dojo Outcome</title><content type='html'>Two &lt;a href="http://www.codingdojo.org/"&gt;Coding Dojos&lt;/a&gt; were cofacilitated by &lt;a href="http://www.linkedin.com/pub/9/6a7/903"&gt;Ryan&lt;/a&gt; and myself.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The Dojos were:&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Great fun and exciting too&lt;/li&gt;&lt;li&gt;An excellent opportunity for those who are shy; You're in front of an audience coding.&lt;/li&gt;&lt;li&gt;Best when the story / &lt;a href="http://codekata.pragprog.com/"&gt;CodeKata&lt;/a&gt; was small, focused, and simple to work on&lt;/li&gt;&lt;li&gt;Better when the JUnit red bar indicated that the audience should not talk&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;Styles of writing code and tests were shared on the fly. New tricks were discovered. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In all, it was awesome!&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&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/4536035864522363422-911729050132459978?l=finneycanhelp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://finneycanhelp.blogspot.com/feeds/911729050132459978/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4536035864522363422&amp;postID=911729050132459978' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4536035864522363422/posts/default/911729050132459978'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4536035864522363422/posts/default/911729050132459978'/><link rel='alternate' type='text/html' href='http://finneycanhelp.blogspot.com/2008/09/coding-dojo-outcome.html' title='Coding Dojo Outcome'/><author><name>Michael Finney</name><uri>http://www.blogger.com/profile/17457098547399793906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://farm1.static.flickr.com/117/312510265_cc676435cd_m.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4536035864522363422.post-4775665262339541321</id><published>2008-08-17T15:05:00.000-07:00</published><updated>2009-02-01T09:40:24.185-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='codingdojo'/><category scheme='http://www.blogger.com/atom/ns#' term='codekata'/><title type='text'>Code Kata Quest for a Coding Dojo</title><content type='html'>In my quest to find &lt;a href="http://en.wikipedia.org/wiki/Kata_%28programming%29"&gt;Code Katas&lt;/a&gt; for an upcoming &lt;a href="http://www.codingdojo.org/"&gt;Coding Dojo&lt;/a&gt; at work, I searched quite a while for something suitable for our needs.&lt;br /&gt;&lt;br /&gt;Dave Thomas' &lt;a href="http://codekata.pragprog.com/2007/01/kata_nine_back_.html"&gt;Back to the CheckOut&lt;/a&gt; at &lt;a href="http://codekata.pragprog.com/"&gt;http://codekata.pragprog.com/&lt;/a&gt; is good. The others there did not seem to exactly fit what we want right now. Either they were&lt;br /&gt;&lt;ul&gt;&lt;li&gt;too academic (often single function solutions)&lt;/li&gt;&lt;li&gt;the ramp up in explaining the problem was too high&lt;br /&gt;&lt;/li&gt;&lt;li&gt;or there was no coding involved in solving the Kata&lt;/li&gt;&lt;/ul&gt;The other Code Katas of Dave's may be exactly what others are looking for.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Perhaps if the Klondike one at &lt;a href="http://codekata.pragprog.com/2007/01/kata_twenty_klo.html"&gt;http://codekata.pragprog.com/2007/01/kata_twenty_klo.html&lt;/a&gt; was sectioned into several exercises, the ramp up of explaining the Kata would be manageable.&lt;br /&gt;&lt;br /&gt;Looking elsewhere, I see &lt;a href="http://www.codingdojo.org/"&gt;http://www.codingdojo.org&lt;/a&gt; has a KataCatalogue. Nothing there that seemed to fit as of this writing (August 17, 2008).&lt;br /&gt;&lt;br /&gt;In the future, looking at something like &lt;a href="http://www.headfirstlabs.com/"&gt;Head First&lt;/a&gt; books may be promising.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4536035864522363422-4775665262339541321?l=finneycanhelp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://finneycanhelp.blogspot.com/feeds/4775665262339541321/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4536035864522363422&amp;postID=4775665262339541321' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4536035864522363422/posts/default/4775665262339541321'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4536035864522363422/posts/default/4775665262339541321'/><link rel='alternate' type='text/html' href='http://finneycanhelp.blogspot.com/2008/08/code-kata-quest-for-coding-dojo.html' title='Code Kata Quest for a Coding Dojo'/><author><name>Michael Finney</name><uri>http://www.blogger.com/profile/17457098547399793906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://farm1.static.flickr.com/117/312510265_cc676435cd_m.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4536035864522363422.post-9131308800222327220</id><published>2008-08-03T05:59:00.000-07:00</published><updated>2008-08-03T06:15:33.638-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dsl'/><title type='text'>Next Language Making Language?</title><content type='html'>The question is not “What’s the next language?” The question is “What is the next language making language?”&lt;br /&gt;&lt;br /&gt;The answer: It will be a language that comes downloaded with out of the box sensible examples so you can use what is given to you right away. Yet, the language itself will easily support the creation of domain specific languages (DSL).&lt;br /&gt;&lt;br /&gt;A &lt;a href="http://www.google.com/search?q=domain+specific+languages"&gt;search for "domain specific languages" in google&lt;/a&gt; results in definitions of DSL and languages that can be used for making DSLs. The results are interesting!&lt;br /&gt;&lt;br /&gt;Clearly, the demand for new languages is always there. Trying to model something new using an old programming language is sometimes like eating yesterday's breakfast. &lt;br /&gt;&lt;br /&gt;Wanting to write in a way which is powerful yet expressive and clear is the foundation for new languages. Demanding a language which supports your domain and how you want to express yourself will always exist! &lt;br /&gt;&lt;br /&gt;So, keep your eyes open. Explore. Share the results!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4536035864522363422-9131308800222327220?l=finneycanhelp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://finneycanhelp.blogspot.com/feeds/9131308800222327220/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4536035864522363422&amp;postID=9131308800222327220' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4536035864522363422/posts/default/9131308800222327220'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4536035864522363422/posts/default/9131308800222327220'/><link rel='alternate' type='text/html' href='http://finneycanhelp.blogspot.com/2008/08/next-language-making-language.html' title='Next Language Making Language?'/><author><name>Michael Finney</name><uri>http://www.blogger.com/profile/17457098547399793906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://farm1.static.flickr.com/117/312510265_cc676435cd_m.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4536035864522363422.post-8858311672627927799</id><published>2008-07-19T18:46:00.000-07:00</published><updated>2008-07-19T18:57:09.653-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='opensocial'/><title type='text'>Social Web And Window Shopping</title><content type='html'>Social web. What do you think that means?&lt;br /&gt;&lt;br /&gt;Imagine walking down the sidewalk. You stop at the big display window for a store. You're looking at this really cool item being displayed. Near you, there are a few people there looking too. You strike up a quick conversation with the person next to you. You and she share insights and then walk on; both a little wiser and happier. The shopping experience is much more enjoyable and memorable.&lt;br /&gt;&lt;br /&gt;This same social experience can be had on the web. See the video:&lt;br /&gt;&lt;br /&gt;&lt;object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="viddler" height="288" width="437"&gt;&lt;param name="movie" value="http://www.viddler.com/player/265c049e/453.119/"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;embed src="http://www.viddler.com/player/265c049e/453.119/" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" name="viddler" height="288" width="437"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4536035864522363422-8858311672627927799?l=finneycanhelp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://finneycanhelp.blogspot.com/feeds/8858311672627927799/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4536035864522363422&amp;postID=8858311672627927799' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4536035864522363422/posts/default/8858311672627927799'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4536035864522363422/posts/default/8858311672627927799'/><link rel='alternate' type='text/html' href='http://finneycanhelp.blogspot.com/2008/07/social-web-and-window-shopping.html' title='Social Web And Window Shopping'/><author><name>Michael Finney</name><uri>http://www.blogger.com/profile/17457098547399793906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://farm1.static.flickr.com/117/312510265_cc676435cd_m.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4536035864522363422.post-7578895280092575120</id><published>2008-07-05T08:23:00.000-07:00</published><updated>2008-07-06T08:11:42.718-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><title type='text'>System Metaphor Gold</title><content type='html'>&lt;o:p&gt;&lt;/o:p&gt;A good System Metaphor is a golden thing to have. It's the theme that ties everything and everyone together. In an existing system with a great System Metaphor, one can find anticipated concepts reflected in the code easier. A System Metaphor is also a fantastic communication bridge between the Customer and Developers.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://xp123.com/xplor/xp0004/index.shtml"&gt;The System Metaphor&lt;/a&gt; article by William Wake explains what a System Metaphor is.  I suggest going beyond the article and checking out his book titled &lt;a href="http://www.amazon.com/exec/obidos/ASIN/0201733978/xp123com"&gt;Extreme Programming Explored&lt;/a&gt; to see the "More Examples" section provided in chapter 6.&lt;br /&gt;&lt;br /&gt;Examples of System Metaphor and discussions about System Metaphors have been going on for at least 8 years. At &lt;a href="http://c2.com/cgi/wiki?SystemMetaphor"&gt;http://c2.com/cgi/wiki?SystemMetaphor&lt;/a&gt;, people such as AlistairCockburn and MichaelFeathers have debated on how to make System Metaphor work best. Interestingly, Martin Fowler stated in his &lt;a href="http://martinfowler.com/articles/xp2002.html#id60384"&gt;XP 2002 Conference&lt;/a&gt; article "...I don't     worry too much about metaphor when working with XP...." Has he changed his mind since then?&lt;br /&gt;&lt;br /&gt;A thought currently in my head is what to do about System Metaphor Disharmony. If an existing system lacks a System Metaphor that we can recognize, a System Metaphor conceptual rehashing is necessary. Adding communicative new code and cleaning up old code is just easier with a System Metaphor.&lt;br /&gt;&lt;br /&gt;So, go forward! Find those System Metaphors! Go for the Gold! :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4536035864522363422-7578895280092575120?l=finneycanhelp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://finneycanhelp.blogspot.com/feeds/7578895280092575120/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4536035864522363422&amp;postID=7578895280092575120' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4536035864522363422/posts/default/7578895280092575120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4536035864522363422/posts/default/7578895280092575120'/><link rel='alternate' type='text/html' href='http://finneycanhelp.blogspot.com/2008/07/system-metaphor-gold.html' title='System Metaphor Gold'/><author><name>Michael Finney</name><uri>http://www.blogger.com/profile/17457098547399793906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://farm1.static.flickr.com/117/312510265_cc676435cd_m.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4536035864522363422.post-285342898102216906</id><published>2008-06-13T18:33:00.000-07:00</published><updated>2008-06-13T19:01:52.775-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Testing an Annotation</title><content type='html'>I found neat ways to test annotations.&lt;br /&gt;&lt;br /&gt;Here is some annotation test code using &lt;a href="http://junit.org/"&gt;JUnit&lt;/a&gt;&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;public class LongParameterListRefactoringTest {&lt;br /&gt;&lt;br /&gt; @Test&lt;br /&gt; public void isAnnotationWhenAsked() throws Exception {&lt;br /&gt;  assertTrue(LongParameterListRefactoring.class.isAnnotation());&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; @Test&lt;br /&gt; public void annotationIsAnnotated() throws Exception {&lt;br /&gt;  assertTrue(LongParameterListRefactoring.class.getAnnotations().length &gt; 0);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; @Test&lt;br /&gt; public void isAnnotatedWithRetentionAnnotation() throws Exception {&lt;br /&gt;  Annotation annotation = LongParameterListRefactoring.class.getAnnotations()[0];&lt;br /&gt;  assertTrue(annotation instanceof Retention);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; @Test&lt;br /&gt; public void isAnnotatedAsSourceCodeAnnotation() throws Exception {&lt;br /&gt;  Annotation annotation = LongParameterListRefactoring.class.getAnnotations()[0];&lt;br /&gt;  Retention retention = (Retention)annotation;&lt;br /&gt;  assertEquals(RetentionPolicy.SOURCE, retention.value());&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;This code lived at the &lt;a href="https://sourceforge.net/projects/seepeople"&gt;SeePeople&lt;/a&gt; project.&lt;br /&gt;&lt;br /&gt;Note: annotationIsAnnotated has since been changed. Can you guess why?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4536035864522363422-285342898102216906?l=finneycanhelp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://finneycanhelp.blogspot.com/feeds/285342898102216906/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4536035864522363422&amp;postID=285342898102216906' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4536035864522363422/posts/default/285342898102216906'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4536035864522363422/posts/default/285342898102216906'/><link rel='alternate' type='text/html' href='http://finneycanhelp.blogspot.com/2008/06/testing-annotation.html' title='Testing an Annotation'/><author><name>Michael Finney</name><uri>http://www.blogger.com/profile/17457098547399793906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://farm1.static.flickr.com/117/312510265_cc676435cd_m.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4536035864522363422.post-1897294105344222040</id><published>2008-03-25T03:46:00.000-07:00</published><updated>2008-03-25T05:02:50.723-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xp principles'/><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='extremeprogramming'/><title type='text'>Yes, Smile and Repeat Yourself</title><content type='html'>If you care enough about something, you will repeat yourself. That's a good thing.&lt;br /&gt;&lt;br /&gt;"I love you!", I said to my wife this morning. I said it yesterday. I've said it for over a decade. I never grow tired of it. I care about my wife and that miracle we call love.&lt;br /&gt;&lt;br /&gt;Writing great code is important! Creating things of value is important! Being someone of value is important! &lt;a href="http://en.wikipedia.org/wiki/Extreme_Programming#XP_values"&gt;Communication, Simplicity, Feedback, Courage, and Respect&lt;/a&gt; are all important values.&lt;br /&gt;&lt;br /&gt;If I am asked the same question repeatedly, I am happy to answer someone who sincerely seeks knowledge and wisdom.&lt;br /&gt;&lt;br /&gt;Human communication often requires things to be repeated. It may take 10 times! I saw this in a training class I just took. The same question was asked 2 minutes after the answer was already given. The trainer, &lt;a href="http://agileprogrammer.com/oneagilecoder"&gt;Brian Button&lt;/a&gt;, calmly responded with a smile and gave the same answer.&lt;br /&gt;&lt;br /&gt;That's the way to go! Smile, support communication, and move on.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4536035864522363422-1897294105344222040?l=finneycanhelp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://finneycanhelp.blogspot.com/feeds/1897294105344222040/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4536035864522363422&amp;postID=1897294105344222040' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4536035864522363422/posts/default/1897294105344222040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4536035864522363422/posts/default/1897294105344222040'/><link rel='alternate' type='text/html' href='http://finneycanhelp.blogspot.com/2008/03/yes-smile-and-repeat-yourself.html' title='Yes, Smile and Repeat Yourself'/><author><name>Michael Finney</name><uri>http://www.blogger.com/profile/17457098547399793906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://farm1.static.flickr.com/117/312510265_cc676435cd_m.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4536035864522363422.post-7540528546970109152</id><published>2008-01-26T08:29:00.000-08:00</published><updated>2008-03-25T05:03:54.116-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xp principles'/><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='extremeprogramming'/><title type='text'>XP Principles Support You - Kent Beck Again</title><content type='html'>&lt;div&gt;I read and heard something extremely powerful which led me to share with you this link to the Implementation Patterns book interview with Kent Beck: &lt;a href="http://www.infoq.com/interviews/beck-implementation-patterns"&gt;http://www.infoq.com/interviews/beck-implementation-patterns&lt;/a&gt;. I wish to share with you one small sliver of insight said in this very inspirational and insightful interview.&lt;br /&gt;&lt;br /&gt;In response to "XP is ...practice oriented.........patterns and XP and how they work together?", Kent Beck goes way beyond the question and shares beautiful Agile insights. Here is one insight:&lt;br /&gt;&lt;br /&gt;He reminds us there are 3 things to consider with Agile Development; values, principles, and practices. He talks about being Agile and not just doing Agile practices.&lt;br /&gt;&lt;br /&gt;In answer to a statement such as "XP was made for the people and not the other way around", I hope you and I remember that that is why Extreme Programming (XP) Principles are published too. They are in the &lt;a href="http://www.amazon.com/exec/obidos/tg/detail/-/0201616416"&gt;XP white book &lt;/a&gt;and are &lt;a href="http://martinfowler.com/bliki/PrinciplesOfXP.html"&gt;listed in Martin Fowler's Bliki&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;When a practice is not working for us in a particular context, Extreme Programming Principles are what we can retreat to. Sitting on our XP principles, we can figure out how to tweak a practice, replace a practice, drop a practice, or add a practice as we need to.&lt;br /&gt;&lt;br /&gt;In that Implementation Patterns book interview mentioned above, Kent does a great job of telling us how we should step back and examine a practice in light of a principle. It's said in that interview, it's said in Martin Fowler's Bliki post ( &lt;a href="http://martinfowler.com/bliki/PrinciplesOfXP.html"&gt;http://martinfowler.com/bliki/PrinciplesOfXP.html&lt;/a&gt; ), and it is repeated here.&lt;br /&gt;&lt;br /&gt;Hopefully, you and I will remember.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4536035864522363422-7540528546970109152?l=finneycanhelp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://finneycanhelp.blogspot.com/feeds/7540528546970109152/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4536035864522363422&amp;postID=7540528546970109152' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4536035864522363422/posts/default/7540528546970109152'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4536035864522363422/posts/default/7540528546970109152'/><link rel='alternate' type='text/html' href='http://finneycanhelp.blogspot.com/2008/01/xp-principles-support-you-kent-beck.html' title='XP Principles Support You - Kent Beck Again'/><author><name>Michael Finney</name><uri>http://www.blogger.com/profile/17457098547399793906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://farm1.static.flickr.com/117/312510265_cc676435cd_m.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4536035864522363422.post-1156306572925117231</id><published>2007-12-27T04:36:00.000-08:00</published><updated>2008-01-05T09:40:01.588-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fluentinterfaces'/><category scheme='http://www.blogger.com/atom/ns#' term='dsl'/><title type='text'>Fluent Interfaces, Domain Specific Languages, OO Roots</title><content type='html'>&lt;p&gt;I see industry backing for Fluent Interfaces. It is in more places than you may know. In my opinion, all people in the software industry will want to know what Fluent Interfaces are, where they are used, and how they fit into the canvas of what they care about.&lt;br /&gt;&lt;br /&gt;What are Fluent Interfaces? Fluent Interfaces is an API style that empowers the user of the API to programatically express something in a natural and easy to read way. Martin Fowler describes Fluent Interfaces well. See &lt;a href="http://martinfowler.com/bliki/FluentInterface.html"&gt;http://martinfowler.com/bliki/FluentInterface.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.linkedin.com/in/steveasher"&gt;&lt;br /&gt;Steve Asher&lt;/a&gt; explores Fluent Interfaces in-depth from the user and designer point of view at his Build Without Boundaries blog at &lt;a href="http://buildwithoutboundaries.blogspot.com/"&gt;http://buildwithoutboundaries.blogspot.com&lt;/a&gt;. Search for Fluent API. &lt;/p&gt;&lt;p&gt;Having Martin Fowler support Fluent Interfaces is huge. I also see Fluent Interfaces as the bridge towards Domain Specific Languages (DSL). Are DSLs a possibility in mainstream software development?&lt;/p&gt;&lt;p&gt;Kent &lt;a href="http://saloon.javaranch.com/cgi-bin/ubb/ultimatebb.cgi?ubb=get_topic&amp;amp;f=42&amp;amp;t=001109"&gt;wrote in a JavaRanch post&lt;/a&gt; that there is a transition from OO languages to DSLs (Domain Specific Languages). What a powerful statement! Is it true? What's the sticking power to Fluid Interfaces and DSLs?&lt;br /&gt;&lt;/p&gt;&lt;p&gt;The Object Oriented (OO) approach to programming caught on because it feels natural. We play with objects in life. We speak about them within the context of a domain. The customers speak from within their domain perspective. The easier the trip between the problem domain concepts and reflecting those concepts in code the better.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Who's presenting their API / functionality via a Fluent Interface? Thanks to &lt;a href="http://www.linkedin.com/in/steveasher"&gt;Steve Asher&lt;/a&gt;, I now know JUnit has begun that journey. See &lt;a href="http://junit.sourceforge.net/doc/ReleaseNotes4.4.html"&gt;http://junit.sourceforge.net/doc/ReleaseNotes4.4.html&lt;/a&gt; where the assertThat(...) example is given. JMock uses a fluid interface too. See &lt;a href="http://jmock.org/expectations.html"&gt;http://jmock.org/expectations.html&lt;/a&gt; If you search for "new Expectations" twice you will see examples of a Fluid Interface in action. It is used also where I work at CARFAX. Again, I refer you to the &lt;a href="http://buildwithoutboundaries.blogspot.com/"&gt;Build Without Boundaries&lt;/a&gt; blog.&lt;br /&gt;&lt;br /&gt;Similar to the time when people implemented Object Oriented concepts via languages like C and Ada, we will see people using Fluid Interfaces and other approaches with existing languages. The benefits are likely to outweigh most difficulties and challenges.&lt;br /&gt;&lt;br /&gt;The next step for DSLs and Fluid Interfaces will be stronger support and perhaps new languages entirely. Will the fashion of Fluid Interfaces and DSLs hold? Time will tell.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4536035864522363422-1156306572925117231?l=finneycanhelp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://finneycanhelp.blogspot.com/feeds/1156306572925117231/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4536035864522363422&amp;postID=1156306572925117231' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4536035864522363422/posts/default/1156306572925117231'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4536035864522363422/posts/default/1156306572925117231'/><link rel='alternate' type='text/html' href='http://finneycanhelp.blogspot.com/2007/12/fluent-interfaces-domain-specific.html' title='Fluent Interfaces, Domain Specific Languages, OO Roots'/><author><name>Michael Finney</name><uri>http://www.blogger.com/profile/17457098547399793906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://farm1.static.flickr.com/117/312510265_cc676435cd_m.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4536035864522363422.post-876209919502528409</id><published>2007-11-29T04:34:00.000-08:00</published><updated>2007-11-29T18:04:16.655-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='XP'/><title type='text'>xUnit Patterns and the Mid-Missouri XP Meeting</title><content type='html'>&lt;div&gt;The Mid-Missouri XP (Extreme Programming) group meeting last night was quite enjoyable. &lt;a href="http://www.james-carr.org"&gt;James Carr&lt;/a&gt; led the meeting. James Carr's great experience with test frameworks and Software Development in general really showed through in a positive light.&lt;br /&gt;&lt;br /&gt;We dove right into &lt;a href="mailto:testautomationpatterns_at_gerardmeszaros.com"&gt;Gerard Meszaros&lt;/a&gt;' XUnit Test Patterns site at &lt;a href="http://xunitpatterns.com/"&gt;http://xunitpatterns.com/&lt;/a&gt; and specifically &lt;a href="http://xunitpatterns.com/Test%20Double.html"&gt;http://xunitpatterns.com/Test%20Double.html&lt;/a&gt;. We covered Test Stub, Test Spy, Mock Object, Fake Object, and much more.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;I put forth the questions: What are the essential Test Patterns? Where is the &lt;a href="http://books.google.com/books?q=UML+Distilled+Guide"&gt;UML Distilled &lt;/a&gt;version of Test Patterns? The answer was Fake Object and Test Stub will get you to where you want to be 95% of the time. &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;There was much discussion too. The people who attended had dived into various things and were just great people too. We swapped stories of experience and various technologies that we have explored. Since many people there used Java, one great example of a test framework that was mentioned is JMock.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;(You can hook up with what the Mid-Missouri XP group is doing at &lt;a href="http://tech.groups.yahoo.com/group/mid_mo_xp/"&gt;http://tech.groups.yahoo.com/group/mid_mo_xp/&lt;/a&gt; : In the group, there is a &lt;a href="http://tech.groups.yahoo.com/group/mid_mo_xp/message/101"&gt;post about the meeting from James Carr&lt;/a&gt; )&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&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/4536035864522363422-876209919502528409?l=finneycanhelp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://finneycanhelp.blogspot.com/feeds/876209919502528409/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4536035864522363422&amp;postID=876209919502528409' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4536035864522363422/posts/default/876209919502528409'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4536035864522363422/posts/default/876209919502528409'/><link rel='alternate' type='text/html' href='http://finneycanhelp.blogspot.com/2007/11/xunit-patterns-and-mid-missouri-xp.html' title='xUnit Patterns and the Mid-Missouri XP Meeting'/><author><name>Michael Finney</name><uri>http://www.blogger.com/profile/17457098547399793906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://farm1.static.flickr.com/117/312510265_cc676435cd_m.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4536035864522363422.post-163646383491513706</id><published>2007-11-10T05:30:00.000-08:00</published><updated>2007-11-10T05:40:48.656-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Blog Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='Plaxo'/><title type='text'>Check My Pulse Via The Plaxo Pulse Lifestream Widget</title><content type='html'>To add the Plaxo Pulse Lifestream Widget to your blog that is located on blogger.com:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Go to &lt;a href="http://www.blogger.com/"&gt;http://www.blogger.com&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Sign in (log into) your account&lt;/li&gt;&lt;li&gt;Click the "Layout" link of the blog you want to add the Plaxo Pulse Widget to&lt;/li&gt;&lt;li&gt;If not already active/selected, click on the "Template" tab&lt;br /&gt;&lt;/li&gt;&lt;li&gt;If not already active/selected, click on "Page Elements" sub-tab&lt;/li&gt;&lt;li&gt;You should be at the "Add and Arrange Page Elements" screen&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Copy the HTML you got from activating your Plaxo Pulse Widget (Need the HTML? go to &lt;a href="http://pulse.plaxo.com/pulse"&gt;http://pulse.plaxo.com/pulse&lt;/a&gt; , (sign in) and click on '&lt;a href="http://pulse.plaxo.com/pulse/widget/"&gt;Create a "lifestream" widget&lt;/a&gt;'  Follow the directions.)&lt;/li&gt;&lt;li&gt;Again on the "Add and Arrange Page Elements" screen, click "Add a Page Element" link - located on the right hand of the screen&lt;/li&gt;&lt;li&gt;A window pops up with "Choose a New Page Element" at the top&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Click the "ADD TO BLOG" button on the page in the "HTML/JavaScript" section&lt;br /&gt;&lt;/li&gt;&lt;li&gt;You'll see a screen which says "Title" and "Content".&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Paste the HTML into the "Content" section&lt;/li&gt;&lt;li&gt;Go back up to where it says "Title" and give this widget a title. Mine is "My Plaxo Pulse"&lt;/li&gt;&lt;li&gt;Hit the "SAVE CHANGES" button.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;See the "&lt;span id="save-message-inner"&gt;Page element added" text now at the top of your blogger.com web page screen.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span id="save-message-inner"&gt;Click on "View Blog" or navigate to your blog via &lt;/span&gt;&lt;a href="http://www.blogger.com/"&gt;http://www.blogger.com&lt;/a&gt; and click "View Blog"&lt;/li&gt;&lt;li&gt;See your Plaxo Pulse Lifestream Widget on your blog!&lt;br /&gt;&lt;/li&gt;&lt;li&gt;To see mine (Michael Finney blog)  look at &lt;a href="http://finneycanhelp.blogspot.com/"&gt;http://finneycanhelp.blogspot.com&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;My Plaxo Pulse Lifestream widget is titled "My Plaxo Pulse" although the text "Check My Pulse" is more prominent with its white text on a blue background.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Enjoy. Feel free to ask questions and do not forget to ask Blogger.com and Plaxo Pulse ( Plaxo.com ) for help as well if you need it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4536035864522363422-163646383491513706?l=finneycanhelp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://finneycanhelp.blogspot.com/feeds/163646383491513706/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4536035864522363422&amp;postID=163646383491513706' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4536035864522363422/posts/default/163646383491513706'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4536035864522363422/posts/default/163646383491513706'/><link rel='alternate' type='text/html' href='http://finneycanhelp.blogspot.com/2007/11/check-my-pulse-via-plaxo-pulse.html' title='Check My Pulse Via The Plaxo Pulse Lifestream Widget'/><author><name>Michael Finney</name><uri>http://www.blogger.com/profile/17457098547399793906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://farm1.static.flickr.com/117/312510265_cc676435cd_m.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4536035864522363422.post-2867260340986888389</id><published>2007-11-09T04:30:00.000-08:00</published><updated>2007-11-29T04:13:30.742-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Java JUG'/><title type='text'>Gateway Jug in St. Louis</title><content type='html'>I visited the &lt;a href="http://www.gatewayjug.org/index.htm"&gt;Gateway JUG in St. Louis&lt;/a&gt;. I enjoyed the pizza, people, and topics. The topic of the evening was &lt;a href="http://en.wikipedia.org/wiki/Web_2"&gt;Web 2.0&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;There's so much that a person gets from going to such events. Undoubtedly, a person is exposed to tips and other technologies as a result. I plan on going to the Gateway JUG again.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4536035864522363422-2867260340986888389?l=finneycanhelp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://finneycanhelp.blogspot.com/feeds/2867260340986888389/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4536035864522363422&amp;postID=2867260340986888389' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4536035864522363422/posts/default/2867260340986888389'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4536035864522363422/posts/default/2867260340986888389'/><link rel='alternate' type='text/html' href='http://finneycanhelp.blogspot.com/2007/11/gateway-jug-in-st-louis.html' title='Gateway Jug in St. Louis'/><author><name>Michael Finney</name><uri>http://www.blogger.com/profile/17457098547399793906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://farm1.static.flickr.com/117/312510265_cc676435cd_m.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4536035864522363422.post-1131190859932793101</id><published>2007-10-28T07:12:00.000-07:00</published><updated>2007-11-29T04:14:30.526-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='LinkedIn'/><category scheme='http://www.blogger.com/atom/ns#' term='Plaxo Pulse'/><category scheme='http://www.blogger.com/atom/ns#' term='Flickr'/><category scheme='http://www.blogger.com/atom/ns#' term='Plaxo'/><title type='text'>Plaxo, Flickr, LinkedIn Are All Coming Together</title><content type='html'>I see how &lt;a href="http://www.linkedin.com/in/finney"&gt;LinkedIn,&lt;/a&gt; &lt;a href="http://www.plaxo.com/"&gt;Plaxo&lt;/a&gt;, and things like &lt;a href="http://www.flickr.com/"&gt;Flickr&lt;/a&gt; can finally come together, via &lt;a href="http://finneycanhelp.myplaxo.com/"&gt;Plaxo's Pulse&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4536035864522363422-1131190859932793101?l=finneycanhelp.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://finneycanhelp.blogspot.com/feeds/1131190859932793101/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4536035864522363422&amp;postID=1131190859932793101' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4536035864522363422/posts/default/1131190859932793101'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4536035864522363422/posts/default/1131190859932793101'/><link rel='alternate' type='text/html' href='http://finneycanhelp.blogspot.com/2007/10/plaxo-flickr-linkedin-is-all-coming.html' title='Plaxo, Flickr, LinkedIn Are All Coming Together'/><author><name>Michael Finney</name><uri>http://www.blogger.com/profile/17457098547399793906</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://farm1.static.flickr.com/117/312510265_cc676435cd_m.jpg'/></author><thr:total>0</thr:total></entry></feed>
