<?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-6344534139430912156</id><updated>2012-02-16T03:48:39.796-08:00</updated><category term='General'/><category term='personal'/><category term='Java'/><category term='Unit Testing'/><category term='Encinitas'/><title type='text'>Poor Inner Life</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://poorinnerlife.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344534139430912156/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://poorinnerlife.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Keith</name><uri>http://www.blogger.com/profile/07716011408062466831</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>15</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6344534139430912156.post-8255135126018184678</id><published>2008-10-25T09:57:00.001-07:00</published><updated>2008-10-25T09:57:55.915-07:00</updated><title type='text'></title><content type='html'>&lt;br&gt;&lt;img src="http://static.pixelpipe.com/13730811-415b-43bd-8f30-716eaea12659_m.jpg" /&gt;&lt;br&gt;Posted via &lt;a href="http://pixelpipe.com"&gt;Pixelpipe&lt;/a&gt;.&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344534139430912156-8255135126018184678?l=poorinnerlife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://poorinnerlife.blogspot.com/feeds/8255135126018184678/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344534139430912156&amp;postID=8255135126018184678' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344534139430912156/posts/default/8255135126018184678'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344534139430912156/posts/default/8255135126018184678'/><link rel='alternate' type='text/html' href='http://poorinnerlife.blogspot.com/2008/10/posted-via-pixelpipe.html' title=''/><author><name>Keith</name><uri>http://www.blogger.com/profile/07716011408062466831</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344534139430912156.post-3159577551375793953</id><published>2008-09-27T09:28:00.000-07:00</published><updated>2008-09-27T09:43:21.494-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Encinitas'/><title type='text'>Beaching my mind</title><content type='html'>My mind is beginning to accept that I live near the beach.  Heretofore, my brain had a hardwired "beach == vacation" association.  Slowly this is breaking down.  I've always loved the beach -- sand castles, beach chairs, strolling the shore, you name it.  Now I fall asleep listening to  the waves roll in.&lt;br /&gt;&lt;br /&gt;&lt;div style="margin: 0px auto 10px; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_dGaiBDWzFMU/SN5fN9N1w8I/AAAAAAAAAQo/Fyp2RqJYGS4/s1600-h/dst_sunset.jpg"&gt;&lt;img src="http://1.bp.blogspot.com/_dGaiBDWzFMU/SN5fN9N1w8I/AAAAAAAAAQo/Fyp2RqJYGS4/s320/dst_sunset.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="text-align: center; font-weight: bold; font-style: italic;font-size:75%;" &gt;Will I be able to *not* live near the beach ever again?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;/div&gt;&lt;br /&gt;Encinitas is definitely surfer-friendly.  Instead of the usual pedestrian crossing signs, you'll likely see one of these: &lt;br /&gt;&lt;br /&gt;&lt;div style="margin: 5px auto 10px; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_dGaiBDWzFMU/SN5fNgQdZ_I/AAAAAAAAAQg/0QZcsqNKmCE/s1600-h/surferSign.jpg"&gt;&lt;img src="http://4.bp.blogspot.com/_dGaiBDWzFMU/SN5fNgQdZ_I/AAAAAAAAAQg/0QZcsqNKmCE/s320/surferSign.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="text-align: center; font-weight: bold; font-style: italic;font-size:75%;" &gt;Surfer crosswalk&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344534139430912156-3159577551375793953?l=poorinnerlife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://poorinnerlife.blogspot.com/feeds/3159577551375793953/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344534139430912156&amp;postID=3159577551375793953' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344534139430912156/posts/default/3159577551375793953'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344534139430912156/posts/default/3159577551375793953'/><link rel='alternate' type='text/html' href='http://poorinnerlife.blogspot.com/2008/09/beaching-my-mind.html' title='Beaching my mind'/><author><name>Keith</name><uri>http://www.blogger.com/profile/07716011408062466831</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_dGaiBDWzFMU/SN5fN9N1w8I/AAAAAAAAAQo/Fyp2RqJYGS4/s72-c/dst_sunset.jpg' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344534139430912156.post-5584488944163402158</id><published>2008-09-20T09:39:00.000-07:00</published><updated>2008-09-22T08:08:24.184-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='personal'/><category scheme='http://www.blogger.com/atom/ns#' term='Encinitas'/><title type='text'>Stuff</title><content type='html'>When I asked my &lt;a href="http://briancollison.com/nucleus/"&gt;brother&lt;/a&gt; for move advice a month or two ago, he said "Sell your TV to Dad and get rid of everything else."  I regarded him with utter horror.  Get rid of my stuff?!?  I ignored him -- obviously he was trying to trick me, gaining a leg up on a lifelong sibling rivalry.  I opted to have my stuff moved to California; I'd merely have to endure 3 or 4 weeks of Spartan Encinitas living before my things arrived.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_dGaiBDWzFMU/SNe0Vj2VDXI/AAAAAAAAAII/n2pezBgBlfE/s1600-h/livingRoomFront.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_dGaiBDWzFMU/SNe0Vj2VDXI/AAAAAAAAAII/n2pezBgBlfE/s320/livingRoomFront.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5248862173216968050" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style='text-align:center;font-weight:bold;font-size:80%;font-style: italic;top-margin:-5px;'&gt; &lt;!-- caption --&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;After the first week or two, I began to see my brother's point of view.  I had an air mattress and a laptop, and I began to wonder just why the hell I needed anything from my East Coast life.  I entertained thoughts of the moving truck, making its way across the country, being involved in some great accident, my stuff ablaze amidst melting bubble wrap.  Not exactly a fantasy, but certainly the scenario did not evoke the sense of loss it once would have.&lt;br /&gt;&lt;br /&gt;This week, my stuff arrived, my apartment has been transformed into a mini-warehouse.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_dGaiBDWzFMU/SNezCQmoBbI/AAAAAAAAAIA/TkLbfDWz1Sk/s1600-h/0920081020.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_dGaiBDWzFMU/SNezCQmoBbI/AAAAAAAAAIA/TkLbfDWz1Sk/s320/0920081020.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5248860742121686450" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;My beloved couch, a stylish, comfortable piece with me for 8 years, I now consider a casualty of the move, at its girth prohibited the necessary maneuvering around critical corners to my apartment.  This, as reported by the large Russian mover who I regard as an expert on the matter.  Instead of finding a place in my new living room, it now lives in an Encinitas self-storage unit.  I'm reminded of the guilt I felt as a child, leaving our dog at the kennel.&lt;br /&gt;&lt;br /&gt;Tyler Durden, from &lt;a href="http://www.imdb.com/title/tt0137523/"&gt;Fight Club&lt;/a&gt;, proffered "The things you own end up owning you."  That's true, and I'd like to add that your stuff can also start charging you $84 a month in storage fees for the pleasure.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344534139430912156-5584488944163402158?l=poorinnerlife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://poorinnerlife.blogspot.com/feeds/5584488944163402158/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344534139430912156&amp;postID=5584488944163402158' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344534139430912156/posts/default/5584488944163402158'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344534139430912156/posts/default/5584488944163402158'/><link rel='alternate' type='text/html' href='http://poorinnerlife.blogspot.com/2008/09/stuff.html' title='Stuff'/><author><name>Keith</name><uri>http://www.blogger.com/profile/07716011408062466831</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_dGaiBDWzFMU/SNe0Vj2VDXI/AAAAAAAAAII/n2pezBgBlfE/s72-c/livingRoomFront.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344534139430912156.post-5473203698934772727</id><published>2008-09-10T09:50:00.000-07:00</published><updated>2008-09-10T17:18:56.034-07:00</updated><title type='text'>Beach Commute</title><content type='html'>Rather than traversing Encinitas streets to get to the office, I opted today to do a "Beach Commute", walking the shore to the office.  It isn't particularly convenient to do so, nor does it save me any time.  Nevertheless, for novelty alone, I wanted to do it.  Also, poor inner life reader Tom had requested more photos, and this would be an opportunity to supply some.&lt;br /&gt;&lt;br /&gt;These are the stairs that lead down from D Street to the beach.  Starbucks has not yet put a store here, so I had to do without my usual morning coffee.&lt;br /&gt;&lt;br /&gt;&lt;div style='text-align:center;margin:0px auto 10px;'&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_dGaiBDWzFMU/SMf8GYLWpvI/AAAAAAAAAFQ/De2sRKXBgNI/s1600-h/0910080801.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_dGaiBDWzFMU/SMf8GYLWpvI/AAAAAAAAAFQ/De2sRKXBgNI/s400/0910080801.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5244437477595719410" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style='text-align:center;font-weight:bold;font-size:80%;font-style: italic;top-margin:-5px;'&gt;The on ramp.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Fortunately, not only are flip-flops acceptable at my office, they are encouraged.  &lt;br /&gt;&lt;br /&gt;&lt;div style='text-align:center;margin:0px auto 10px;'&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_dGaiBDWzFMU/SMgWogdqdcI/AAAAAAAAAFY/xlDGH32y6gE/s1600-h/0910080805.jpg"&gt;&lt;img  src="http://3.bp.blogspot.com/_dGaiBDWzFMU/SMgWogdqdcI/AAAAAAAAAFY/xlDGH32y6gE/s320/0910080805.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5244466651237873090" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style='text-align:center;font-weight:bold;font-size:80%;font-style: italic;top-margin:-5px;'&gt;Treads are wearing thin&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The beach was pretty empty around 8:00 when I began my commute.  Surfers seem to be a perpetual part of the landscape here -- sure enough, many were around.  I can't imagine ever having a hobby/lifestyle that dictated such early mornings.&lt;br /&gt;&lt;br /&gt;&lt;div style='text-align:center;margin:0px auto 10px;'&gt;&lt;a href='http://1.bp.blogspot.com/_dGaiBDWzFMU/SMf64nh9W3I/AAAAAAAAAFI/3JjzDZlyHPE/s1600-h/0910080804.jpg'&gt;&lt;img src='http://1.bp.blogspot.com/_dGaiBDWzFMU/SMf64nh9W3I/AAAAAAAAAFI/3JjzDZlyHPE/s320/0910080804.jpg' border='0' alt='' /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style='text-align:center;font-weight:bold;font-size:80%;font-style: italic;top-margin:-5px;'&gt;HOV lanes open&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;!-- ocean view --&gt;&lt;br /&gt;&lt;div style='text-align:center;margin:0px auto 10px;'&gt;&lt;a href='http://3.bp.blogspot.com/_dGaiBDWzFMU/SMf64dNQYiI/AAAAAAAAAFA/1dDBY1lImjE/s1600-h/0910080819.jpg'&gt;&lt;img src='http://3.bp.blogspot.com/_dGaiBDWzFMU/SMf64dNQYiI/AAAAAAAAAFA/1dDBY1lImjE/s320/0910080819.jpg' border='0' alt='' /&gt;&lt;/a&gt;&lt;br/&gt; &lt;span style='text-align:center;font-weight:bold;font-size:80%;font-style: italic;top-margin:-5px;'&gt;Rubbernecking required&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I naively assumed the tide was simply out during the mornings and in during the evenings.  I knew there'd be a chance I'd have to get my feet wet, though.  My main worry was my laptop, which I was carrying in my backpack.  Wisely I had put two plastic shopping bags around it, making it impervious to water.&lt;br /&gt;&lt;br /&gt;&lt;div style='text-align:center;margin:0px auto 10px;'&gt;&lt;a href='http://4.bp.blogspot.com/_dGaiBDWzFMU/SMf64RfVplI/AAAAAAAAAE4/jI9WSx9eRdc/s1600-h/0910080823.jpg'&gt;&lt;img src='http://4.bp.blogspot.com/_dGaiBDWzFMU/SMf64RfVplI/AAAAAAAAAE4/jI9WSx9eRdc/s320/0910080823.jpg' border='0' alt='' /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style='text-align:center;font-weight:bold;font-size:80%;font-style: italic;top-margin:-5px;'&gt;water main breakage affecting all lanes&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I thought I'd just have water around my ankles.  My mistake -- I arrived to the office with drenched shorts (but laptop intact).  &lt;br /&gt;&lt;br /&gt;&lt;div style='text-align:center;margin:0px auto 10px;'&gt;&lt;a href='http://3.bp.blogspot.com/_dGaiBDWzFMU/SMf64cvgkcI/AAAAAAAAAEw/TQwMHK-JhGY/s1600-h/0910080823a.jpg'&gt;&lt;img src='http://3.bp.blogspot.com/_dGaiBDWzFMU/SMf64cvgkcI/AAAAAAAAAEw/TQwMHK-JhGY/s320/0910080823a.jpg' border='0' alt='' /&gt;&lt;/a&gt;&lt;br/&gt;&lt;span style='text-align:center;font-weight:bold;font-size:80%;font-style: italic;top-margin:-5px;'&gt;Fear not, cigarettes remained dry&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I'm not sure that I'll repeat this route soon, but it was fun nevertheless.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344534139430912156-5473203698934772727?l=poorinnerlife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://poorinnerlife.blogspot.com/feeds/5473203698934772727/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344534139430912156&amp;postID=5473203698934772727' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344534139430912156/posts/default/5473203698934772727'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344534139430912156/posts/default/5473203698934772727'/><link rel='alternate' type='text/html' href='http://poorinnerlife.blogspot.com/2008/09/beach.html' title='Beach Commute'/><author><name>Keith</name><uri>http://www.blogger.com/profile/07716011408062466831</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_dGaiBDWzFMU/SMf8GYLWpvI/AAAAAAAAAFQ/De2sRKXBgNI/s72-c/0910080801.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344534139430912156.post-4059671992736810726</id><published>2008-09-06T08:18:00.000-07:00</published><updated>2008-09-06T09:38:40.051-07:00</updated><title type='text'>Getting to know Encinitas</title><content type='html'>Nearly all my beach experiences in my life have been with resort-orientated shores, mainly on the East Coast.  When I thought about the beach before, images of &lt;a href="http://neverwriteitdown.files.wordpress.com/2007/08/ocean_city_md.jpg"&gt;high rise hotels&lt;/a&gt;, &lt;a href="http://www.wildwoodsnj.com/wildwood-gallery.cfm?mca=1000000015&amp;amp;sca=1000000025"&gt;boardwalks&lt;/a&gt;, and &lt;a href="http://cosmicadventure.com/gallery/albums/album47/East_coast_pier.jpg"&gt;piers&lt;/a&gt; danced in my head.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Encinitas,_California"&gt;Encinitas&lt;/a&gt; lies in stark contrast to these notions.  While there are hotels in the area, they seem small, and I don't think I've seen one that sits beach front.  The shore here seems casually but profoundly regarded -- woven into the town's cloth without overpowering it.   I'd have a hard time comparing Encinitas to any of the beaches on the East Coast -- &lt;a href="http://www.njcapemay.com/"&gt;Cape May&lt;/a&gt; and &lt;a href="http://www.rehoboth.com/"&gt;Rehoboth&lt;/a&gt; come close, but even these seem more touristy than my present surroundings.  All the glitz and garish trappings that typifies East Coast beach towns seem absent here.&lt;br /&gt;&lt;br /&gt;That this vision of Encinitas was not corrupted by monetary interest is no doubt due to the laudable stewardship of the city's planners and leaders.  Perhaps too, the landscape has shaped Encinitas's growth -- &lt;a href="http://www.californiacoastalimages.com/files/Beach%20stairs%20of%20encinitas%20ca%20home%20page.jpg"&gt;cliffs&lt;/a&gt; separate the town and the shore.  Only a couple Encintas streets end with stairways that provide beach access -- the rest end with great cliff-top vistas of the ocean, but no way to get down.&lt;br /&gt;&lt;br /&gt;The main road through the town, "Highway 101", is surrounded on both sides by charming restaurants and shops.  &lt;a href="http://local.yahoo.com/CA/Encinitas/Retail+Shopping/Clothing/Vintage+Used+Clothing"&gt;More chic second-hand clothing stores&lt;/a&gt; than I've seen in one town provides, if nothing else, hip window dressing.  &lt;a href="http://www.estreetcafe.com/index.jsp"&gt;"E Street Cafe"&lt;/a&gt;, the coffee shop from which I'm presently writing, I can say with certainty is the best coffee shop I've ever patronized.  Roomy, free wireless internet, and great art on their walls are aspects that draw me in (and, oh yeah, good coffee).  Not a single nationally-owned fast-food restaurant lies beside the town's stretch of 101, decidedly inconvenient for someone without a car and groceries.  In town there are more churches than I'd have anticipated, many for unfamiliar denominations like "Church of Spiritual Unity" (healing starts at 11am).&lt;br /&gt;&lt;br /&gt;Of course, there are things I'd like to have in the area that aren't.  The single movie theater here is more of an art-house theater, and doesn't even show "current" art house movies.  Catching whichever blockbuster is the current rage means driving 20 minutes to the next town.  And for a beach town, there's a surprising lack of dedicated ice-cream shops.  There's a restaurant that has a good selection of ice-cream, I'm told, but something tells me if I ordered a large chocolate malt milkshake I'd be disappointed.&lt;br /&gt;&lt;br /&gt;I feel like I'm missing a large part of Encinitas without a vehicle -- and I don't just mean seeing places that lie outside of walking distance (though that's certainly a large part of it).  Until my car arrives (due 9/10 ), I'm unable to get a feel for the traffic's ebbs and flows, shortcuts, and other aspects culture one must be driving to appreciate.&lt;br /&gt;&lt;br /&gt;I'm very much looking forward to getting to know the town better.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344534139430912156-4059671992736810726?l=poorinnerlife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://poorinnerlife.blogspot.com/feeds/4059671992736810726/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344534139430912156&amp;postID=4059671992736810726' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344534139430912156/posts/default/4059671992736810726'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344534139430912156/posts/default/4059671992736810726'/><link rel='alternate' type='text/html' href='http://poorinnerlife.blogspot.com/2008/09/getting-to-know-encinitas.html' title='Getting to know Encinitas'/><author><name>Keith</name><uri>http://www.blogger.com/profile/07716011408062466831</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344534139430912156.post-1518173609760279911</id><published>2008-08-31T09:06:00.000-07:00</published><updated>2008-08-31T09:23:34.687-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>Week One in Encinitas</title><content type='html'>After a week in an Encinitas, I cannot yet say my new surroundings feel "normal", nor any of my habits routine.  My furniture is still en route, and although I expect its arrival to restore some normalcy.&lt;br /&gt;&lt;br /&gt;My last apartment in Northern Virginia was somewhat secluded, no downtown-area lent itself to gatherings or throngs of pedestrians.  As I explore my new surroundings, it isn't the proximity to the ocean that I'm struck by, nor the appearance of palm trees.  Rather, while walking in my neighborhood, the thought that echoes in my mind is "&lt;span style="font-style:italic;font-weight:bold;"&gt;My God, what are all these people doing around my place?!?&lt;/span&gt;".&lt;br /&gt;&lt;br /&gt;I'm finally feeling effective at my job, truly becoming part of the software development team.  I think because I place such a high value on teamwork, working remotely is a handicap to which I'm particularly sensitive.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344534139430912156-1518173609760279911?l=poorinnerlife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://poorinnerlife.blogspot.com/feeds/1518173609760279911/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344534139430912156&amp;postID=1518173609760279911' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344534139430912156/posts/default/1518173609760279911'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344534139430912156/posts/default/1518173609760279911'/><link rel='alternate' type='text/html' href='http://poorinnerlife.blogspot.com/2008/08/week-one-in-encinitas.html' title='Week One in Encinitas'/><author><name>Keith</name><uri>http://www.blogger.com/profile/07716011408062466831</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344534139430912156.post-5908479236887403597</id><published>2008-08-24T08:06:00.000-07:00</published><updated>2008-08-24T08:21:10.844-07:00</updated><title type='text'>First 24 hours in Encinitas</title><content type='html'>After a week of stress inducing packing and other move-related activities, I have arrived in my new home in Encinitas, sans most of my possessions, which will take another two weeks before being delivered..  Although situated physically, my mind has not yet accepted my new residence, and somewhere in its recesses believes my Northern Viginia apartment exists, beckoning with its comfortable couch and big screen TV.  Naturally my new apartment is all but bare -- were it not for the generosity of my brother, I would not even have an air mattress on which to sleep.&lt;br /&gt;&lt;br /&gt;I'm reminded of my college days, where both my physical dorm and intangible mindset were blank slates, to be filled with Target purchases and new habits respectively.  In time, my Northern Virginia baggage will arrive, but it will be made to adorn my new environment, and not vice-versa.&lt;br /&gt;&lt;br /&gt;Here are a couple shots of my place, for your benefit and mine, as routinely telling myself "I live by the beach" has proven insufficient to convince my mind.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Meager beach view from my bathroom.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_dGaiBDWzFMU/SLF7B5wdv5I/AAAAAAAAADU/vp3gnfcEaks/s1600-h/beach_view_small.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_dGaiBDWzFMU/SLF7B5wdv5I/AAAAAAAAADU/vp3gnfcEaks/s400/beach_view_small.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5238103114222780306" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Just outside my place&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_dGaiBDWzFMU/SLF7CIfortI/AAAAAAAAADc/JMlJvmPvbtI/s1600-h/outside_++beach_small.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_dGaiBDWzFMU/SLF7CIfortI/AAAAAAAAADc/JMlJvmPvbtI/s400/outside_++beach_small.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5238103118178725586" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Not within 2 hours of landing was I reminded how cigarettes are so reviled here in Encinitas.  Bereft of my beloved entertainment system, my brother and I went to the local bar shortly after I unlocked my apartment.  While enjoying some "fresh air" outside amongst the other nicotine castaways, an attractive girl asked to have a cigarette.  We started talking, the "I moved here two hours ago" line being an effective if fleeting conversational gambit.  Sandy, a schoolteacher whose name I've changed to protect her reputation amongst her 5th grade students, advised me that a single male best not find himself amongst the maligned Encinitas smokers, as  he'd have little hope of igniting romance with the tips of his Parliament Lites.  Many residents regarded the habit with disdain, she related.  Bikers would often scowl at someone with a cigarette -- funny that it took me a second for me to realize she was referring to bicyclists and not the cigar-chomping, tattoo-adorned, denim wearing gearheads that the image first conjured for me.&lt;br /&gt;&lt;br /&gt;I suppose its ironic her admonishment could have only occurred had she asked me for a cigarette, and that she herself should think the habit so disgusting when she was smoking (although she's one of those folks who only lights up when drinking).  I came to the conclusion that its probably better to be a hypocritical health-nut than a principled smoker.&lt;br /&gt;&lt;br /&gt;Cigarettes, of course, came with me, an entire carton given premium space in my luggage.  The addiction which ties me to them suffers no jet lag and is remarkably portable.  The routine and habit which regulated their use, like the post-urination ceremony or the celebratory smoke after completing a PS3 game, are in flux.  As I've done with my furniture and accumulated junk, it has become time to decide what of my East Coast life will my West Coast environment be made to accomodate.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344534139430912156-5908479236887403597?l=poorinnerlife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://poorinnerlife.blogspot.com/feeds/5908479236887403597/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344534139430912156&amp;postID=5908479236887403597' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344534139430912156/posts/default/5908479236887403597'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344534139430912156/posts/default/5908479236887403597'/><link rel='alternate' type='text/html' href='http://poorinnerlife.blogspot.com/2008/08/first-24-hours-in-encinitas.html' title='First 24 hours in Encinitas'/><author><name>Keith</name><uri>http://www.blogger.com/profile/07716011408062466831</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_dGaiBDWzFMU/SLF7B5wdv5I/AAAAAAAAADU/vp3gnfcEaks/s72-c/beach_view_small.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344534139430912156.post-1518837771860590736</id><published>2008-08-09T13:15:00.000-07:00</published><updated>2008-08-09T13:35:43.317-07:00</updated><title type='text'>Navigating Search with Compass</title><content type='html'>I have been on two projects where Google-style searching was a requested feature.  For each, I used &lt;a href="http://compass-project.org/"&gt;Compass&lt;/a&gt;, which bridges the gap between &lt;a href="http://Hibernate.org"&gt;Hibernate&lt;/a&gt; and &lt;a href="http://lucene.apache.org"&gt;Lucene&lt;/a&gt;.  One of those projects was recently deployed and is handling thousands of queries a day on an index that includes a few million documents.  Prior to this deployment, searching was performed through SQL/Hibernate queries which, we were finding, did not necessarily scale very well.&lt;br /&gt;&lt;br /&gt;I am pleased as pie with Compass.  The documentation is a little daunting -- mirroring Hibernate is but one of Compass's many features which the online reference covers.  In the end, though, integrating with Compass amounts to little more than annotating the classes you intend to index and using Compass's query API to generate search results.&lt;br /&gt;&lt;br /&gt;I had run into out-of-memory problems when building the initial index with Compass.  After many hours of tweaking configuration settings, I finally was able to fix this by appending "useCursorFetch=true" to the MySql JDBC Url, a problem &lt;a href="http://forum.compass-project.org/thread.jspa?messageID=294419&amp;#294419"&gt;described by this forum post&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I highly recommend Compass if your project needs search functionality.  My hat goes off to Compass developers.  Many thanks for providing a fantastic open-source framework.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344534139430912156-1518837771860590736?l=poorinnerlife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://poorinnerlife.blogspot.com/feeds/1518837771860590736/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344534139430912156&amp;postID=1518837771860590736' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344534139430912156/posts/default/1518837771860590736'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344534139430912156/posts/default/1518837771860590736'/><link rel='alternate' type='text/html' href='http://poorinnerlife.blogspot.com/2008/08/navigating-search-with-compass.html' title='Navigating Search with Compass'/><author><name>Keith</name><uri>http://www.blogger.com/profile/07716011408062466831</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344534139430912156.post-2668022575033423500</id><published>2008-08-03T12:44:00.000-07:00</published><updated>2008-08-03T13:22:30.066-07:00</updated><title type='text'>My Comments on "Four harmful Java idioms..."</title><content type='html'>Recently published on JavaWorld, &lt;a href="http://www.javaworld.com/javaworld/jw-07-2008/jw-07-harmful-idioms.html?page=3"&gt;Four harmful Java idioms, and how to fix them&lt;/a&gt; struck me as something I could have written &lt;span style="font-style: italic;"&gt;if I lived on Bizarro World&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Point by point:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1. Use a naming convention to distinguish three kinds of data, not two: local variables, fields, and method arguments.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The author seems to discount another injury made unto the code's reader, that of a code's noise level.  Prefixing variables to indicate scope creates tiny conceptual speed bumps the reader must navigate.  IDEs already format variables according to scope, so there's no discernible benefit.  If you're using notepad/vi/emacs, then I've no sympathy for you, and I'd be hard-pressed to enact a style guideline to accommodate outdated development environments.&lt;br /&gt;&lt;br /&gt;We're fortunate enough to be programmers in a time when programming languages are expressive.  Attempts to make the code less English-like, like using prefixes, I regard with suspicion.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3.  Don't use JavaBeans for modeling the database.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;His thoughts regarding JavaBeans applied to database records rest upon a premise I just am unable to reconcile with my own approach.   Namely, my "JavaBeans" aren't modeling database records, they are modeling my domain.  The database is also modeling the domain, though naturally through normalized tables and such and not through Java's OO design.  It seems to me if a developer attempts to model the database,  he/she is ditching Java's rich expressiveness in favor of the bleaker designs of RDMS.  I can see how this would lead one to opt for "immutable classes" instead of JavaBeans.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;4. Order items in a class in terms of decreasing scope, with private items appearing last.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Again, were we programming in notepad, this might make more sense.  With an IDE, I simply hit a key and navigate to a private member's declaration.  Further, I'm sure I'm not alone in that I'm accustomed to seeing a class's "vital stats" by looking at the top of it.  If I had to switch to the bottom to view its private couplings (probably a class's most important vital stat), insanity might quickly ensue.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Conclusion&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You'll notice that I haven't addressed his point #2, favor package-by-feature over package-by-layer.  I'd really have to work with such a package design before having an opinion on it, and the article is devoid of any examples.  Those interested in hearing more about that I'd recommend perusing a discussion that occurred on TheServerSide &lt;a href="http://www.theserverside.com/news/thread.tss?thread_id=49372"&gt;here&lt;/a&gt; , which, not coincidentally, was started by news of the author's own web4j release (probably the only Java web framework that isn't open source).  In fact, that discussion will also provide some context in which to judge other aspects of the author's thesis.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344534139430912156-2668022575033423500?l=poorinnerlife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://poorinnerlife.blogspot.com/feeds/2668022575033423500/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344534139430912156&amp;postID=2668022575033423500' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344534139430912156/posts/default/2668022575033423500'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344534139430912156/posts/default/2668022575033423500'/><link rel='alternate' type='text/html' href='http://poorinnerlife.blogspot.com/2008/08/java-on.html' title='My Comments on &quot;Four harmful Java idioms...&quot;'/><author><name>Keith</name><uri>http://www.blogger.com/profile/07716011408062466831</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344534139430912156.post-3270866152521351422</id><published>2008-07-16T16:21:00.000-07:00</published><updated>2008-07-16T16:49:43.682-07:00</updated><title type='text'>Heading West</title><content type='html'>Pursuing an opportunity with the &lt;a href="http://vervewireless.com/"&gt;company&lt;/a&gt; for whom my brother works, I am moving to the West Coast.  The San Diego area shall soon count me as a resident, and I'm determined not to lose my East Coast sensibilities -- namely understanding sarcasm and semi-hostile aloofness.  Having remained in the same apartment (some might say "remained inside") for what must be 8 years, its an exciting prospect.  Life defining even.&lt;br /&gt;&lt;br /&gt;Today I've put the security deposit + rent on an apartment I found a block from the ocean, &lt;a href="http://maps.google.com/maps?f=q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=444+4th+St,+Encinitas,+CA+92024&amp;amp;sll=38.878761,-77.225078&amp;amp;sspn=0.012261,0.029354&amp;amp;ie=UTF8&amp;amp;ll=33.049681,-117.296841&amp;amp;spn=0.006601,0.014677&amp;amp;z=16&amp;amp;iwloc=addr"&gt;444 1/2 D Street&lt;/a&gt;.  You can see it &lt;a href="http://maps.google.com/maps?f=q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=444+1%2F2+4th+Street,+encinitas,+ca&amp;amp;sll=33.05031,-117.294931&amp;amp;sspn=0.006601,0.014677&amp;amp;layer=c&amp;amp;ie=UTF8&amp;amp;ll=33.051497,-117.295854&amp;amp;spn=0.01018,0.027122&amp;amp;z=16&amp;amp;cbll=33.046384,-117.296816&amp;amp;panoid=P3Guy9taMyhQ1grNIe7GwQ&amp;amp;cbp=2,311.4048965554584,,0,5"&gt;here&lt;/a&gt; beside the station wagon.  Now comes the actual move part of the move, a process I look forward to surviving.&lt;br /&gt;&lt;br /&gt;Will keep you posted.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344534139430912156-3270866152521351422?l=poorinnerlife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://poorinnerlife.blogspot.com/feeds/3270866152521351422/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344534139430912156&amp;postID=3270866152521351422' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344534139430912156/posts/default/3270866152521351422'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344534139430912156/posts/default/3270866152521351422'/><link rel='alternate' type='text/html' href='http://poorinnerlife.blogspot.com/2008/07/heading-west.html' title='Heading West'/><author><name>Keith</name><uri>http://www.blogger.com/profile/07716011408062466831</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344534139430912156.post-7595308003534785442</id><published>2007-10-27T09:49:00.000-07:00</published><updated>2007-10-27T10:08:00.611-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>JSF First Impressions</title><content type='html'>The web application we're currently building is using JSF.  I confess that nothing I've heard about JSF appealed to me, but with an open mind I've been getting my hands dirty with the actual coding.  Most of my prejudices were indeed confirmed.  However, relying on pre-built components is very nice, specifically we're using JBoss's &lt;a href="labs.jboss.com/jbossrichfaces/"&gt;richfaces.&lt;/a&gt;  The last web application I worked on was very UI-centric, and much of its development involved integrating and customizing the &lt;a href="http://dojotoolkit.org/"&gt;Dojo&lt;/a&gt; widget library -- very tedious work.  That I'm no longer required to do so is a benefit of JSF I'm enjoying.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.theserverside.com/news/thread.tss?thread_id=47344#241709"&gt;&lt;br /&gt;This recent post on "The server side"&lt;/a&gt; sums up nicely my impressions of JSF (I especially like the term "Old School HTTP wranglers").  I'd add to it by saying that traditional page design workflow isn't as straight-forward with JSF.  With action-based web frameworks, it was rather easy for a HTML designer with some technical acumen to directly edit JSPs to implement a look and feel.  Not so with JSF -- you're farther away from the final HTML.  Its the components you include on the page that generate DIV tags and so forth.  Having accrued 10+ years experience working with HTML, I find this the most frustrating aspect of JSF.  We've been given a series of HTML Mockups from a design firm, and integrating has proved to be very challenging.  I wonder if JSF merely shifts work efforts from HTML editing to Component customization.&lt;br /&gt;&lt;br /&gt;I'm still not sold on JSF, but may be singing a different tune once we start implementing fancy AJAX and UI controls.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344534139430912156-7595308003534785442?l=poorinnerlife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://poorinnerlife.blogspot.com/feeds/7595308003534785442/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344534139430912156&amp;postID=7595308003534785442' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344534139430912156/posts/default/7595308003534785442'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344534139430912156/posts/default/7595308003534785442'/><link rel='alternate' type='text/html' href='http://poorinnerlife.blogspot.com/2007/10/jsf-first-impressions.html' title='JSF First Impressions'/><author><name>Keith</name><uri>http://www.blogger.com/profile/07716011408062466831</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344534139430912156.post-7542437537541314009</id><published>2007-09-17T05:33:00.000-07:00</published><updated>2007-09-17T06:23:55.098-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Unit Testing'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Redefining the Integration Test</title><content type='html'>Recently I had been discussing with another developer the distinction between "integration test" and "unit test", and he echoed the same wisdom heard elsewhere.  An integration test is any time a test case requires outside resources (i.e. external database, other servers, etc) in order to execute.   This is the same definition proffered by a &lt;a href="http://www.nofluffjuststuff.com/"&gt;No Fluff Just Stuff&lt;/a&gt; conference I had attended a while ago.  While I agree that this has been a good rule of thumb, I feel as if it may be time to reexamine this position.&lt;br /&gt;&lt;br /&gt;The problem these days its so easy to spin-up resources from within one's test case that I'm not sure that's a fair unit/integration litmus test.  Presently, I count libraries like &lt;a href="http://unitils.sourceforge.net/"&gt;Unitils&lt;/a&gt;, &lt;a href="http://dbunit.sourceforge.net/"&gt;DbUnit&lt;/a&gt;, and &lt;a href="http://hsqldb.org/"&gt;Hypersonic&lt;/a&gt; as tools in my testing arsenal.  The latter is an in-memory database, and by leveraging it within my test case I eliminate the need to have, for example, &lt;a href="http://www.mysql.com/"&gt;MySQL&lt;/a&gt; running during test execution.&lt;br /&gt;&lt;br /&gt;In many of my tests, I've swapped out use of MySQL with Hypersonic, allowing my test case to be truly autonomous.  Using the classic test definition, I've made my test case go from integration to unit test.  Merely by changing the spring context file to point to an actual running database, Presto! -- its an integration test again.  There's something amiss with the test definition, I feel, when traversing between the two types of test is so easily made.&lt;br /&gt;&lt;br /&gt;I'm compelled then to reflect on what unit testing means to me.  One of my core beliefs is that unit testing is about isolation -- truly testing only that code which is executed within a class.  Take your typical DAO method (excuse the formatting):&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:courier new;"&gt;public Widget getWidgetByLabel(String label) {&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-family:courier new;"&gt;  List results = hibernateTemplate.find("select w from Widget w where w.label=?", label);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  if(results.isEmpty()) {&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;    throw new WidgetNotFoundException("No widget exists with the label:" + label);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  return (Widget) results.get(0);   // ignoring too many results for now.&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;When I put on my unit-testing peering specks, I see very little logic to test here.  This is a happy conclusion -- having too much logic within one's DAO is not a good thing.  My unit test for this method would merely insure:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;The proper arguments are passed to the hibernateTemplate.find() method.&lt;/li&gt;&lt;li&gt;An empty List will trigger an exception.&lt;/li&gt;&lt;li&gt;A non-empty List will make the method return the first object in the list.&lt;/li&gt;&lt;/ol&gt;However, now that I can easily create an instance of Hypersonic, create the database schema, and initiate a Hibernate session factory, my test can easily verify things like proper Hibernate mapping of my Widget object, and that the HSQL syntax is correct.  All this without the necessity of external resources.  But these sorts of verifications are about the collaboration -- or &lt;span style="font-style: italic;"&gt;integration&lt;/span&gt; of other objects and tools.&lt;br /&gt;&lt;br /&gt;Therefore, I think I'm revising my personal litmus test.  Only when a test case is truly testing in isolation will I consider it a unit test.  If a test case involves logic in other classes and libraries, I shall regard these as integration tests, even if it requires no outside resources.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344534139430912156-7542437537541314009?l=poorinnerlife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://poorinnerlife.blogspot.com/feeds/7542437537541314009/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344534139430912156&amp;postID=7542437537541314009' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344534139430912156/posts/default/7542437537541314009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344534139430912156/posts/default/7542437537541314009'/><link rel='alternate' type='text/html' href='http://poorinnerlife.blogspot.com/2007/09/redefining-integration-test.html' title='Redefining the Integration Test'/><author><name>Keith</name><uri>http://www.blogger.com/profile/07716011408062466831</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344534139430912156.post-1113682624858369546</id><published>2007-09-16T07:10:00.000-07:00</published><updated>2007-09-16T08:20:09.836-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Bamboo Disappointment</title><content type='html'>Being a big fan of &lt;a href="http://www.atlassian.com/"&gt;Atlassian&lt;/a&gt;'s Confluence and Jira, it was with much anticipation that installed &lt;a href="http://www.atlassian.com/software/bamboo/"&gt;Bamboo&lt;/a&gt;, the &lt;a href="http://martinfowler.com/articles/continuousIntegration.html "&gt;continuous integration&lt;/a&gt; (CI) engine they've released.  Perhaps these high expectations led to my ultimate disappointment with Bamboo, but truly the features I've come to expect in a commercial CI product are nowhere to be found.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;No concept of inherited project structure.&lt;/span&gt;&lt;br /&gt;If you have 20 modules you would like to build, defining behavior and properties for each is a daunting task.  &lt;a href="http://www.pmease.com/"&gt;QuickBuild&lt;/a&gt; and &lt;a href="http://www.anthillpro.com/"&gt;AntHillPro&lt;/a&gt; both allow for a hierarchal organization of modules, so that a child may inherit properties (like environmental variables, build targets, etc) of its parent.  In Bamboo, when creating a "Plan", I can clone an existing module, but that's it.  Should I have the need to change a property for all plans, I'll be forced to configure each through the web GUI.  A tedious process -- even with &lt;a href="http://cruisecontrol.sourceforge.net"&gt;Cruisecontrol&lt;/a&gt; I could search &amp;amp; replace &lt;a href="http://cruisecontrol.sourceforge.net/main/configxml.html"&gt;config.xml&lt;/a&gt; in a text editor to make wholesale changes.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Alien nomenclature&lt;/span&gt;&lt;br /&gt;In Bamboo, you have top-level "projects", and beneath them you have "plans", which represent the modules being built.  I've never used the word "plan" before when describing a module's build, and frankly the limited options offered by Bamboo to govern build behavior makes it a dubious word choice.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;No passing of properties&lt;/span&gt;&lt;br /&gt;It is sometimes desirable to direct a CI engine to pass arbitrary properties to one's build process, and vice versa.  I don't mean "static" environmental variables, rather I refer to dynamic properties like &lt;a href="http://www.spiderstrategies.com/blog/?p=37"&gt;"version number"&lt;/a&gt;.  No such functionality is present in Bamboo.  &lt;a href="http://luntbuild.javaforge.com"/&gt;Luntbuild&lt;/a&gt; and &lt;a href="http://www.pmease.com/"&gt;Quickbuild&lt;/a&gt; both allow for this using OGNL expressions.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;No concept of build promotion&lt;/span&gt;&lt;br /&gt;Most commercial CI products have evolved to include "Application Lifecycle Management", so you may describe how a build can go from being development-status to gold.  Implicit in this is a workflow allowing QA to promote and release builds.  None of this is even hinted at in Bamboo -- it does not even tag your build.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Summary&lt;/span&gt;&lt;br /&gt;Features that Bamboo stresses seem misplaced.  You'll see much mention of its heralded &lt;a href="http://www.atlassian.com/software/bamboo/features/telemetry.jsp"&gt;"Build Telemetry"&lt;/a&gt;, on the product's site.  Through this feature, you can generate nice graphs and statistics about one's build.  But honestly, I've regarded charts and graphs in CI engines as a feature present because they're easy to add.  While its fun to see how often one's build has been broken, I've never seen a lasting need for such statistics.&lt;br /&gt;&lt;br /&gt;These are merely the shortcomings I've experienced, but I'm sure there are others -- like remote builds (where the CI Engine is deployed to multiple servers) for which I've no immediate need, but will no doubt be experienced by others.  Its hard to see what advantages Bamboo offers beyond a free product like &lt;a href="http://luntbuild.javaforge.com/"&gt;Luntbuild&lt;/a&gt; besides a pleasing user interface.  Indeed, Luntbuild's features like OGNL expressions and Eclipse plugin makes it, in my opinion, more feature-rich than Bamboo.&lt;br /&gt;&lt;br /&gt;My favorite build server remains &lt;a href="http://www.pmease.com/"&gt;QuickBuild&lt;/a&gt;.  It was with tremendous ease that I was able to control and manage many modules at once.  To be fair, though, its been awhile since I've looked at &lt;a href="http://www.anthillpro.com"&gt;AntHill Pro&lt;/a&gt; or &lt;a href="http://www.jetbrains.com/teamcity/"&gt;TeamCity&lt;/a&gt; from JetBrains, both products that looked promising when I reviewed early versions.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344534139430912156-1113682624858369546?l=poorinnerlife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://poorinnerlife.blogspot.com/feeds/1113682624858369546/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344534139430912156&amp;postID=1113682624858369546' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344534139430912156/posts/default/1113682624858369546'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344534139430912156/posts/default/1113682624858369546'/><link rel='alternate' type='text/html' href='http://poorinnerlife.blogspot.com/2007/09/bamboo-disappointment.html' title='Bamboo Disappointment'/><author><name>Keith</name><uri>http://www.blogger.com/profile/07716011408062466831</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344534139430912156.post-2757242782445110066</id><published>2007-08-19T07:42:00.000-07:00</published><updated>2007-08-19T08:24:00.051-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>Starting New Job</title><content type='html'>Next week I start my new job.  I'm excited to get started.&lt;br /&gt;&lt;br /&gt;Having &lt;a href="http://www.keithcollison.com/center.jpg"&gt;worked from home&lt;/a&gt; for the past 6 months, I'm sure there will be some adjustments I'll have to make.  Certainly my pajamas are probably no longer considered acceptable work attire.  Although there were aspects of working from home I thoroughly enjoyed, there was a loss of team spirit which I'm looking forward to having again.&lt;br /&gt;&lt;br /&gt;What really excites me, though, is jumping into some new code, especially since the code with which I had been working left much to be desired.  I'm embarrassed to admit that despite Java5's age, I've not yet been on a project which uses it.  Naturally I've boned up on Generics, Enums, etc, but no amount of reading replaces the familiarity I gain from using something day-in and day-out.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344534139430912156-2757242782445110066?l=poorinnerlife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://poorinnerlife.blogspot.com/feeds/2757242782445110066/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344534139430912156&amp;postID=2757242782445110066' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344534139430912156/posts/default/2757242782445110066'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344534139430912156/posts/default/2757242782445110066'/><link rel='alternate' type='text/html' href='http://poorinnerlife.blogspot.com/2007/08/starting-new-job.html' title='Starting New Job'/><author><name>Keith</name><uri>http://www.blogger.com/profile/07716011408062466831</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6344534139430912156.post-6687668771803624966</id><published>2007-08-02T10:11:00.000-07:00</published><updated>2007-08-02T10:52:58.056-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>Yawlp</title><content type='html'>Awhile ago, I decided it would be immoral of me to deprive the sphere o'blogs my erudite, insightful voice of reason.  But it took time for this idea to be realized, chiefly due to my inability to create a blog title that I thought would accurately describe my online essence.  Finally I said to hell with it --  I'd never find the perfect title (I lack my &lt;a href="http://blog.briancollison.com/"&gt;brother's&lt;/a&gt; talent for &lt;a href="http://www.mightarise.com/"&gt;catchy&lt;/a&gt;, pithy names).  So I choose the apt, but not perfect, title "Rich Inner Life".  With dismay I found it was &lt;a href="http://richinnerlife.blogspot.com/"&gt;not available&lt;/a&gt;, and therefore christened this blog "Poor Inner Life."  Like, y'know, to be ironic.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6344534139430912156-6687668771803624966?l=poorinnerlife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://poorinnerlife.blogspot.com/feeds/6687668771803624966/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6344534139430912156&amp;postID=6687668771803624966' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6344534139430912156/posts/default/6687668771803624966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6344534139430912156/posts/default/6687668771803624966'/><link rel='alternate' type='text/html' href='http://poorinnerlife.blogspot.com/2007/08/yawlp.html' title='Yawlp'/><author><name>Keith</name><uri>http://www.blogger.com/profile/07716011408062466831</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
