<?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-37485872</id><updated>2011-11-03T11:34:50.301-05:00</updated><category term='music'/><category term='social networking'/><category term='geek'/><category term='fitness'/><category term='law enforcement'/><category term='programming'/><category term='money'/><title type='text'>yawmark.com</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>64</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-37485872.post-3863283515705954057</id><published>2011-10-04T08:26:00.000-05:00</published><updated>2011-10-04T08:26:33.068-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><title type='text'>Funky Cygwin Path Issues</title><content type='html'>In getting familiar with Stuart Sierra's lovely Clojure test library &lt;a href="https://github.com/stuartsierra/lazytest"&gt;Lazytest&lt;/a&gt;, I ran into a problem running it from the windows command console. The test output had special control codes not properly processed by the console:&lt;br /&gt;&lt;pre class="brush: plain"&gt;E:\development\clojure\calibration&amp;gt;java -cp src;test;lib/*;lib/dev/* lazytest.watch src test&lt;br /&gt;&lt;br /&gt;======================================================================&lt;br /&gt;At &amp;nbsp;#&amp;lt;Date Tue Oct 04 07:45:47 CDT 2011&amp;gt;&lt;br /&gt;Reloading calibration.test.core, calibration.core&lt;br /&gt;&lt;br /&gt;←[33mNamespaces (no cases run)←[0m&lt;br /&gt;&lt;br /&gt;←[33mRan 0 test cases.←[0m&lt;br /&gt;←[32m0 failures.←[0m&lt;br /&gt;&lt;br /&gt;Done.&lt;br /&gt;&lt;/pre&gt;I use &lt;a href="http://code.google.com/p/mintty/"&gt;mintty&lt;/a&gt; for cygwin, which will process those codes correctly, but I then had trouble with the Java classpath:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: plain"&gt;yawmark$ java -cp "src:test:lib/*:lib/dev/*" lazytest.watch src test&lt;br /&gt;java.lang.NoClassDefFoundError: lazytest/watch&lt;br /&gt;Caused by: java.lang.ClassNotFoundException: lazytest.watch&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; at java.net.URLClassLoader$1.run(Unknown Source)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; at java.security.AccessController.doPrivileged(Native Method)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; at java.net.URLClassLoader.findClass(Unknown Source)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; at java.lang.ClassLoader.loadClass(Unknown Source)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; at java.lang.ClassLoader.loadClass(Unknown Source)&lt;br /&gt;Could not find the main class: lazytest.watch. &amp;nbsp;Program will exit.&lt;br /&gt;Exception in thread "main" [~]&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div&gt;After a little &lt;a href="http://cygwin.com/ml/cygwin/2001-08/msg01300.html"&gt;online research&lt;/a&gt;, I found that I needed to decorate the classpath a bit:&lt;br /&gt;&lt;pre class="brush: plain"&gt;java -cp `cygpath --path --windows "src:test:lib/*:lib/dev/*"` lazytest.watch src test&lt;/pre&gt;After that, all is once again right with the world.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-3863283515705954057?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/3863283515705954057/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2011/10/funky-cygwin-path-issues.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/3863283515705954057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/3863283515705954057'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2011/10/funky-cygwin-path-issues.html' title='Funky Cygwin Path Issues'/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-711121634061580252</id><published>2011-06-06T20:28:00.001-05:00</published><updated>2011-06-06T20:28:44.730-05:00</updated><title type='text'></title><content type='html'>Made it to Times Square. S'pose I can make it anywhere now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-711121634061580252?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/711121634061580252/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2011/06/made-it-to-times-square.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/711121634061580252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/711121634061580252'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2011/06/made-it-to-times-square.html' title=''/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-3318661672785096986</id><published>2011-06-06T13:21:00.001-05:00</published><updated>2011-06-06T13:21:34.469-05:00</updated><title type='text'></title><content type='html'>Off to Manhattan.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-3318661672785096986?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/3318661672785096986/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2011/06/off-to-manhattan.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/3318661672785096986'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/3318661672785096986'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2011/06/off-to-manhattan.html' title=''/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-7281376592637151801</id><published>2011-02-18T13:05:00.001-06:00</published><updated>2011-02-18T13:05:24.421-06:00</updated><title type='text'></title><content type='html'>"They didn't care that they'd seen it work in practice because they already knew that it wouldn't work in theory." -- Clay Shirky&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-7281376592637151801?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/7281376592637151801/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2011/02/they-didnt-care-that-theyd-seen-it-work.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/7281376592637151801'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/7281376592637151801'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2011/02/they-didnt-care-that-theyd-seen-it-work.html' title=''/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-3723996708799474181</id><published>2011-01-07T08:11:00.002-06:00</published><updated>2011-01-07T08:13:37.471-06:00</updated><title type='text'>SVN Commits To GoogleCode results in 405 error</title><content type='html'>I received an unexpected error when committing to GoogleCode that looked like this:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;svn: Commit failed (details follow):&lt;br /&gt;svn: Server sent unexpected return value (405 Method Not Allowed) in response to MKCOL request for '....'&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://serverfault.com/questions/11996/subversion-error-405-method-not-allowed-in-response-to-mkcol"&gt;ServerFault&lt;/a&gt; had the answer. Google code allows anonymous checkout with HTTP, but commits require HTTPS. So, I exported my local workspace changes, blew away the workspace, checked out again with HTTPS, and imported my changes. No commit problems after that, and thank goodness once again for the amount of readily-available information on the Internet.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-3723996708799474181?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/3723996708799474181/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2011/01/svn-commits-to-googlecode.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/3723996708799474181'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/3723996708799474181'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2011/01/svn-commits-to-googlecode.html' title='SVN Commits To GoogleCode results in 405 error'/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-1077625644976251706</id><published>2010-11-29T20:57:00.005-06:00</published><updated>2010-12-02T19:29:50.037-06:00</updated><title type='text'>Bummer</title><content type='html'>&lt;div style="text-align: left;"&gt;Inspired by &lt;a href="http://www.codinghorror.com/blog/2010/10/the-keyboard-cult.html"&gt;Jeff Atwood's excellent blog about the keyboard cult&lt;/a&gt;, I was excited to receive my new &lt;a href="http://pckeyboards.stores.yahoo.net//customizer.html"&gt;Unicomp Customizer 104&lt;/a&gt;, delivered just today. To my disappointment, however, it arrived inoperable.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;The box itself was in fine condition.&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://3.bp.blogspot.com/_s5LQws314Es/TPRmww7qFgI/AAAAAAAAACU/beNcqm8Ng9s/s1600/001.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://3.bp.blogspot.com/_s5LQws314Es/TPRmww7qFgI/AAAAAAAAACU/beNcqm8Ng9s/s320/001.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;As I removed the keyboard from its packaging, however, I heard an subtle but ominous rattling noise.&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://3.bp.blogspot.com/_s5LQws314Es/TPRmzLDeFTI/AAAAAAAAACY/oiJX24apTuQ/s1600/022.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://3.bp.blogspot.com/_s5LQws314Es/TPRmzLDeFTI/AAAAAAAAACY/oiJX24apTuQ/s320/022.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;I turned the keyboard toward me, and the tilde key fell to the floor. It just fell right off without out any persuasion or cajoling, like it couldn't get away from its compatriots fast enough.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://2.bp.blogspot.com/_s5LQws314Es/TPRmziaz7wI/AAAAAAAAACc/EPkDSXm-Hl4/s1600/025.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/_s5LQws314Es/TPRmziaz7wI/AAAAAAAAACc/EPkDSXm-Hl4/s320/025.jpg" width="242" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Shortly after that, I noticed that the "CapsLock," "Shift," and "Ctrl" keys on the left side of the keyboard would not depress at all. The underside of the keys overlapped the plastic molding.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://3.bp.blogspot.com/_s5LQws314Es/TPRmz2B_waI/AAAAAAAAACg/9-N4W59xmgo/s1600/027.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://3.bp.blogspot.com/_s5LQws314Es/TPRmz2B_waI/AAAAAAAAACg/9-N4W59xmgo/s320/027.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;The "Enter" key, et al., on the right side had more than adequate spacing.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://4.bp.blogspot.com/_s5LQws314Es/TPRm0V4w_0I/AAAAAAAAACk/_WemJX7fwyc/s1600/028.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://4.bp.blogspot.com/_s5LQws314Es/TPRm0V4w_0I/AAAAAAAAACk/_WemJX7fwyc/s320/028.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;But the "Esc" key and a few friends were distinctly off-kilter.&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://1.bp.blogspot.com/_s5LQws314Es/TPRm0yPQK3I/AAAAAAAAACo/JxB3NZomTy0/s1600/029.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://1.bp.blogspot.com/_s5LQws314Es/TPRm0yPQK3I/AAAAAAAAACo/JxB3NZomTy0/s320/029.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;I'll give the company call tomorrow and arrange for a working replacement. I hope to report a good customer service experience.&lt;br /&gt;&lt;br /&gt;UPDATE (11/30): I got a hold of Chad in the support department. He was very friendly and helpful. Unicomp is sending a replacement today, along with a return label for the original keyboard. So far, so good!&lt;br /&gt;&lt;br /&gt;UPDATE (12/02): No longer a bummer! The new keyboard arrived in great shape, and works like a charm. I was hoping for a good customer service experience, and I got it. Thanks, Unicomp!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-1077625644976251706?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/1077625644976251706/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2010/11/bummer.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/1077625644976251706'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/1077625644976251706'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2010/11/bummer.html' title='Bummer'/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_s5LQws314Es/TPRmww7qFgI/AAAAAAAAACU/beNcqm8Ng9s/s72-c/001.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-4254419647464206021</id><published>2010-11-23T12:26:00.001-06:00</published><updated>2010-11-23T12:26:29.590-06:00</updated><title type='text'></title><content type='html'>Pi is wrong. &lt;a href="http://tauday.com/"&gt;http://tauday.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-4254419647464206021?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/4254419647464206021/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2010/11/pi-is-wrong.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/4254419647464206021'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/4254419647464206021'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2010/11/pi-is-wrong.html' title=''/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-5778412027045058813</id><published>2010-11-16T07:56:00.001-06:00</published><updated>2010-11-16T07:56:09.325-06:00</updated><title type='text'></title><content type='html'>Word of the day: "crapulous" &lt;a href="http://bit.ly/9zh2Qf"&gt;http://bit.ly/9zh2Qf&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-5778412027045058813?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/5778412027045058813/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2010/11/word-of-day-crapulous-httpbit.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/5778412027045058813'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/5778412027045058813'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2010/11/word-of-day-crapulous-httpbit.html' title=''/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-7754059283318741895</id><published>2010-09-10T14:44:00.001-05:00</published><updated>2010-09-10T14:44:46.592-05:00</updated><title type='text'></title><content type='html'>Be mindful that Tuesday morning problems don't become Friday afternoon problems.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-7754059283318741895?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/7754059283318741895/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2010/09/be-mindful-that-tuesday-morning.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/7754059283318741895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/7754059283318741895'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2010/09/be-mindful-that-tuesday-morning.html' title=''/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-9032844719112746042</id><published>2010-08-19T14:57:00.001-05:00</published><updated>2010-08-19T14:57:40.795-05:00</updated><title type='text'></title><content type='html'>"Elegance: The modesty not to draw attention to the difficulties one has surmounted." paraphrasing Alain de Botton via @spolsky&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-9032844719112746042?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/9032844719112746042/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2010/08/elegance-modesty-not-to-draw-attention.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/9032844719112746042'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/9032844719112746042'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2010/08/elegance-modesty-not-to-draw-attention.html' title=''/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-992621825183834659</id><published>2010-08-13T11:25:00.001-05:00</published><updated>2010-08-13T11:25:47.901-05:00</updated><title type='text'></title><content type='html'>Minimum number of moves to solve any Rubik's cube configuration (aka "God's Number"): 20 &lt;a href="http://bbc.in/9rkt7J"&gt;http://bbc.in/9rkt7J&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-992621825183834659?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/992621825183834659/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2010/08/minimum-number-of-moves-to-solve-any.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/992621825183834659'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/992621825183834659'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2010/08/minimum-number-of-moves-to-solve-any.html' title=''/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-7930826890895859283</id><published>2010-07-29T14:05:00.001-05:00</published><updated>2010-07-29T14:05:32.980-05:00</updated><title type='text'></title><content type='html'>Eclipse tips &lt;a href="http://bit.ly/6fq5Zs"&gt;http://bit.ly/6fq5Zs&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-7930826890895859283?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/7930826890895859283/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2010/07/eclipse-tips-httpbit.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/7930826890895859283'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/7930826890895859283'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2010/07/eclipse-tips-httpbit.html' title=''/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-6541795603228638902</id><published>2010-07-28T09:23:00.001-05:00</published><updated>2010-07-28T09:25:30.775-05:00</updated><title type='text'></title><content type='html'>Just read online: "I feel like dancing a marimba." Mambo? Meringue? With a marimba? It's a mystery.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-6541795603228638902?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/6541795603228638902/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2010/07/just-read-online-i-feel-like-dancing.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/6541795603228638902'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/6541795603228638902'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2010/07/just-read-online-i-feel-like-dancing.html' title=''/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-5044094018848652701</id><published>2010-07-28T07:41:00.002-05:00</published><updated>2010-11-30T08:17:15.960-06:00</updated><title type='text'>On technical debt</title><content type='html'>"Bad code isn't Technical Debt, it's an unhedged call option" &lt;a href="http://bit.ly/a3rQcq"&gt;http://bit.ly/a3rQcq&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-5044094018848652701?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/5044094018848652701/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2010/07/bad-code-isnt-technical-debit-its.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/5044094018848652701'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/5044094018848652701'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2010/07/bad-code-isnt-technical-debit-its.html' title='On technical debt'/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-7114954307841813762</id><published>2010-07-26T12:53:00.001-05:00</published><updated>2010-07-26T12:53:20.935-05:00</updated><title type='text'></title><content type='html'>Autism has unique vocal signature, new technology reveals &lt;a href="http://bit.ly/b6xg3g"&gt;http://bit.ly/b6xg3g&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-7114954307841813762?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/7114954307841813762/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2010/07/autism-has-unique-vocal-signature-new.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/7114954307841813762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/7114954307841813762'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2010/07/autism-has-unique-vocal-signature-new.html' title=''/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-437882569047694920</id><published>2010-07-24T07:36:00.001-05:00</published><updated>2010-07-24T07:36:46.015-05:00</updated><title type='text'></title><content type='html'>To market, to market...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-437882569047694920?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/437882569047694920/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2010/07/to-market-to-market.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/437882569047694920'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/437882569047694920'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2010/07/to-market-to-market.html' title=''/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-4001545038394730128</id><published>2010-07-15T07:56:00.001-05:00</published><updated>2010-07-15T07:56:13.805-05:00</updated><title type='text'></title><content type='html'>It costs 1.5 cents to make a penny. A nickel costs 6 cents. In 2009, the U.S Mint lost $22 million making these coins. &lt;a href="http://bit.ly/9vNeNf"&gt;http://bit.ly/9vNeNf&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-4001545038394730128?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/4001545038394730128/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2010/07/it-costs-1.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/4001545038394730128'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/4001545038394730128'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2010/07/it-costs-1.html' title=''/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-8122907325990625792</id><published>2010-05-26T14:22:00.000-05:00</published><updated>2010-05-26T14:25:43.026-05:00</updated><title type='text'>Grails 1.3.1 dependency resolution</title><content type='html'>After upgrading Grails to 1.3.1 from 1.2.2, I repeatedly received "UNRESOLVED DEPENDENCIES" errors. After an inordinate amount of troubleshooting, I stumbled upon the sole archived message on the Internet that recommended deleting (or renaming) the %USER_HOME%\.ivy2 directory. Sure enough, this worked like a charm, so I post the resolution here for posterity. It seems there were some transitive dependencies that weren't getting sorted out. It's all good now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-8122907325990625792?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/8122907325990625792/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2010/05/grails-131-dependency-resolution.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/8122907325990625792'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/8122907325990625792'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2010/05/grails-131-dependency-resolution.html' title='Grails 1.3.1 dependency resolution'/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-5002049231698645468</id><published>2010-05-16T21:28:00.000-05:00</published><updated>2010-05-16T21:46:07.835-05:00</updated><title type='text'>The Light Bulb Is Not Yet On</title><content type='html'>I have reset on going through &lt;a href="http://en.wikipedia.org/wiki/Essentials_of_Programming_Languages"&gt;Essentials of Programming Languages&lt;/a&gt;, and struggling my way through learning Scheme. I wrote a working answer (at least as tested) for a problem in the second chapter, but I feel like I happened upon it through test-driven development. I suppose in some ways that's a good thing, but I can say that it is not a terribly comfortable feeling to write some code but not really grok what it's doing. Anyway, here is the paraphrased problem, and my solution (test cases included):&lt;br /&gt;&lt;br /&gt;Exercise 2.2.9, #3. (&lt;span style="font-weight:bold;"&gt;car&amp;cdr2 s slst errvalue)&lt;/span&gt; generates a procedure composition that, when evaluated, produces the code for a procedure that takes a list with the same structure as &lt;span style="font-style:italic;"&gt;slst &lt;/span&gt;and returns the value in the same position as the leftmost occurrence of &lt;span style="font-style:italic;"&gt;s&lt;/span&gt; in &lt;span style="font-style:italic;"&gt;slst&lt;/span&gt;. If &lt;span style="font-style:italic;"&gt;s&lt;/span&gt; does not occur in &lt;span style="font-style:italic;"&gt;slst&lt;/span&gt;, then &lt;span style="font-style:italic;"&gt;errvalue&lt;/span&gt; is returned.&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: xml"&gt;(define (contains? s los)&lt;br /&gt;  (if (null? los)&lt;br /&gt;      #f&lt;br /&gt;      (if (symbol? (car los))&lt;br /&gt;          (if (eq? s (car los))&lt;br /&gt;              #t&lt;br /&gt;              (contains? s (cdr los)))&lt;br /&gt;          (if (contains? s (car los))&lt;br /&gt;              #t&lt;br /&gt;              (contains? s (cdr los))))))&lt;br /&gt;              &lt;br /&gt;(define (car&amp;cdr2 s slst errvalue)&lt;br /&gt;  (if (contains? s slst)&lt;br /&gt;      (car&amp;cdr2-help s slst 'car)&lt;br /&gt;      errvalue))&lt;br /&gt;&lt;br /&gt;(define (car&amp;cdr2-help s slst lst)&lt;br /&gt;  (if (symbol? (car slst))&lt;br /&gt;      (if (eq? s (car slst))&lt;br /&gt;          lst&lt;br /&gt;          (list 'compose lst (car&amp;cdr2-help s (cdr slst) 'cdr)))&lt;br /&gt;      (if (contains? s (car slst))&lt;br /&gt;          (list 'compose 'car (car&amp;cdr2-help s (car slst) 'cdr))&lt;br /&gt;          (list 'compose lst (car&amp;cdr2-help s (cdr slst) 'cdr)))))&lt;/pre&gt;&lt;br /&gt;          &lt;br /&gt;Here are the tests (schemeunit):          &lt;br /&gt;&lt;pre class="brush: xml"&gt;(define-test-suite 2.2.9&lt;br /&gt;  (test-case "3."&lt;br /&gt;             (check equal?&lt;br /&gt;                    (car&amp;cdr2 'a '() 'fail)&lt;br /&gt;                    'fail)&lt;br /&gt;             (check equal?&lt;br /&gt;                    (car&amp;cdr2 'a '(a) 'fail)&lt;br /&gt;                    'car)&lt;br /&gt;             (check equal?&lt;br /&gt;                    (car&amp;cdr2 'a '(b) 'fail)&lt;br /&gt;                    'fail)&lt;br /&gt;             (check equal?&lt;br /&gt;                    (car&amp;cdr2 'a '(a b) 'fail)&lt;br /&gt;                    'car)&lt;br /&gt;             (check equal?&lt;br /&gt;                    (car&amp;cdr2 'b '(a b) 'fail)&lt;br /&gt;                    '(compose car cdr))&lt;br /&gt;             (check equal? &lt;br /&gt;                    (car&amp;cdr2 'c '(a b c) 'fail)&lt;br /&gt;                    '(compose car (compose cdr cdr)))&lt;br /&gt;             (check equal? &lt;br /&gt;                    (car&amp;cdr2 'd '(a (b c) d) 'fail)&lt;br /&gt;                    '(compose car (compose cdr cdr)))&lt;br /&gt;             (check equal?&lt;br /&gt;                    (car&amp;cdr2 'dog '(cat lion (fish dog) pig) 'fail)&lt;br /&gt;                    '(compose car (compose cdr (compose car (compose cdr cdr)))))&lt;br /&gt;             (check equal? &lt;br /&gt;                    (car&amp;cdr2 'c '((a b) c) 'fail)&lt;br /&gt;                    '(compose car cdr))))&lt;/pre&gt;&lt;br /&gt;Any Schemers care to give me pointers? I sure could use the help.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-5002049231698645468?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/5002049231698645468/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2010/05/light-bulb-is-not-yet-on.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/5002049231698645468'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/5002049231698645468'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2010/05/light-bulb-is-not-yet-on.html' title='The Light Bulb Is Not Yet On'/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-3719621177521566884</id><published>2010-04-29T08:31:00.000-05:00</published><updated>2010-04-29T08:37:21.361-05:00</updated><title type='text'>Stupid coding tricks.</title><content type='html'>In a fit of distraction one day, this was the most ridiculous "solution" for converting a test score to a letter grade I could muster.&lt;br /&gt;&lt;pre class="brush: java"&gt;public static char S2G(int s) {&lt;br /&gt;    return (char)(1249078710&gt;&gt;s/10*3&amp;7|64);&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://thedailywtf.com/"&gt;DailyWTF-worthy&lt;/a&gt;, I say.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-3719621177521566884?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/3719621177521566884/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2010/04/stupid-coding-tricks.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/3719621177521566884'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/3719621177521566884'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2010/04/stupid-coding-tricks.html' title='Stupid coding tricks.'/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-882566608913224785</id><published>2010-03-20T19:05:00.001-05:00</published><updated>2010-03-20T19:05:37.376-05:00</updated><title type='text'></title><content type='html'>NCAA Wrestling Championships + ESPN Hi-Def == great television.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-882566608913224785?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/882566608913224785/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2010/03/ncaa-wrestling-championships-espn-hi.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/882566608913224785'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/882566608913224785'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2010/03/ncaa-wrestling-championships-espn-hi.html' title=''/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-8649001211080307551</id><published>2010-03-20T11:04:00.001-05:00</published><updated>2010-03-20T11:04:53.520-05:00</updated><title type='text'></title><content type='html'>heavyWetSnow.clear();&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-8649001211080307551?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/8649001211080307551/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2010/03/heavywetsnow.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/8649001211080307551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/8649001211080307551'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2010/03/heavywetsnow.html' title=''/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-3950321698446821758</id><published>2010-03-09T09:48:00.000-06:00</published><updated>2010-03-09T10:41:42.388-06:00</updated><title type='text'>Estimation and planning</title><content type='html'>A &lt;a href="http://www.construx.com/Page.aspx?hid=2537"&gt;2008 survey of 500 software practitioners&lt;/a&gt; found that four of the top five “Most Damaging Classic Mistakes Overall” in software development are directly related to project estimation and planning. Each mistake was rated as having a severe and serious impact to projects in which the mistakes occur. In order of frequency and severity, these four mistakes are:&lt;br /&gt;&lt;br /&gt;1. Unrealistic expectations&lt;br /&gt;2. Overly optimistic schedules&lt;br /&gt;4. Wishful thinking&lt;br /&gt;5. Confusing estimates with targets&lt;br /&gt;&lt;br /&gt;&lt;resonates /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-3950321698446821758?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/3950321698446821758/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2010/03/estimation-and-planning.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/3950321698446821758'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/3950321698446821758'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2010/03/estimation-and-planning.html' title='Estimation and planning'/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-3386012659572547454</id><published>2009-12-31T20:25:00.000-06:00</published><updated>2009-12-31T20:26:19.564-06:00</updated><title type='text'>These are a few of my favorite teams...</title><content type='html'>Northwest Bearcats - Division II National Champs&lt;br /&gt;Nebraska Cornhuskers - Holiday Bowl Champs&lt;br /&gt;Iowa State Cyclones - Insight Bowl Champs &lt;br /&gt;&lt;br /&gt;It's been a great season.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-3386012659572547454?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/3386012659572547454/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2009/12/these-are-few-of-my-favorite-teams.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/3386012659572547454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/3386012659572547454'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2009/12/these-are-few-of-my-favorite-teams.html' title='These are a few of my favorite teams...'/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-3947514805728759393</id><published>2009-11-11T07:50:00.000-06:00</published><updated>2009-11-11T07:53:02.249-06:00</updated><title type='text'>Veterans Day</title><content type='html'>A very thankful Veterans Day, from me and my family. A special gratitude, admiration, and respect for my brother, who is currently serving in Iraq. Here's to wrapping up a successful tour quickly and a safe return home.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-3947514805728759393?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/3947514805728759393/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2009/11/veterans-day.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/3947514805728759393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/3947514805728759393'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2009/11/veterans-day.html' title='Veterans Day'/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-4189918405362987047</id><published>2009-08-27T15:27:00.000-05:00</published><updated>2009-09-09T11:21:39.269-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Unexpected SimpleDateFormat Behavior</title><content type='html'>Failing test case:&lt;br /&gt;&lt;pre class="brush: java"&gt;&lt;br /&gt;import static org.junit.Assert.*;&lt;br /&gt;import java.text.*;&lt;br /&gt;import org.junit.Test;&lt;br /&gt;&lt;br /&gt;public class DateFormatTests {&lt;br /&gt;&lt;br /&gt;  @Test&lt;br /&gt;  public void testRequiredTwoDigitDay() {&lt;br /&gt;      DateFormat df = new SimpleDateFormat("yyyyMMdd");&lt;br /&gt;      df.setLenient(false);&lt;br /&gt;      try {&lt;br /&gt;          df.parse("2009081");&lt;br /&gt;          fail("Expected two-digit day");&lt;br /&gt;      } catch (ParseException e) {&lt;br /&gt;          e.printStackTrace();&lt;br /&gt;      }&lt;br /&gt;  }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Argh. &lt;/span&gt;&lt;br /&gt;&lt;a href="http://java.sun.com/javase/6/docs/api/java/text/SimpleDateFormat.html"&gt;&lt;br /&gt;SimpleDateFormat API Javadocs&lt;/a&gt;:&lt;br /&gt;&lt;blockquote&gt;For parsing, the number of pattern letters is ignored unless it's needed to separate two adjacent fields.&lt;/blockquote&gt;Tricksy API javadocs. We hatessss it forever.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-4189918405362987047?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/4189918405362987047/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2009/08/unexpected-simpledateformat-behavior.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/4189918405362987047'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/4189918405362987047'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2009/08/unexpected-simpledateformat-behavior.html' title='Unexpected SimpleDateFormat Behavior'/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-7245636281485998219</id><published>2009-08-27T06:18:00.001-05:00</published><updated>2009-09-20T07:44:30.762-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Java - Resolving NullPointerException</title><content type='html'>In Java, the NullPointerException (NPE) is generally a simple exception to resolve. In very basic terms, it means that one is trying to access a property or call a method on an object that does not exist. Read the error message to find the line where the NPE occurred. Examine that line to determine which reference is a likely candidate to be null. Dig a little deeper to find out why that reference is null and fix the application to either ensure the reference is not null or to handle the reference gracefully if it is null.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-7245636281485998219?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/7245636281485998219/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2009/08/resolving-nullpointerexception.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/7245636281485998219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/7245636281485998219'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2009/08/resolving-nullpointerexception.html' title='Java - Resolving NullPointerException'/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-8646053893664284771</id><published>2009-08-25T18:55:00.000-05:00</published><updated>2009-08-27T06:20:08.462-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='money'/><title type='text'>Upside down.</title><content type='html'>Total U.S. debt held by the public as of August, 2009: &lt;a href="http://bit.ly/RaLG "&gt;$7.3 trillion&lt;/a&gt; &lt;br /&gt;Projected deficit for 2010: &lt;a href="http://bit.ly/P47bY "&gt;$1.5 trillion&lt;/a&gt; &lt;br /&gt;Total value of all gold ever mined at $941/oz.: &lt;a href="http://bit.ly/DbJec"&gt;$4.8 trillion&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-8646053893664284771?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/8646053893664284771/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2009/08/upside-down.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/8646053893664284771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/8646053893664284771'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2009/08/upside-down.html' title='Upside down.'/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-1917786860814090078</id><published>2009-08-03T13:53:00.000-05:00</published><updated>2009-08-27T06:20:26.531-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='music'/><title type='text'>My Way: A Tribute To Frank Sinatra</title><content type='html'>I was lucky enough to be invited by a friend to perform in "My Way: A Tribute To Frank Sinatra" over this past weekend  (7/31 - 8/1/2009). The performance was in Sioux City, IA. It was a great couple of nights; we played to around 1,300 people over the two shows and received standing ovations for both performances. During Friday's performance, we started to get some severe weather around intermission. Randy Peters, the artistic director and his crew moved the entire performance indoors; not a small task. The audience patiently waited for another full setup and sound check, and stuck with us through the second act. What a great group of folks! &lt;br /&gt;&lt;br /&gt;The ensemble was as follows: &lt;br /&gt;Sandy Henry (Vocalist)&lt;br /&gt;Don Nelson (Bassist)&lt;br /&gt;Stephen Morrow (Vocalist)&lt;br /&gt;Brad Halbersma (Pianist)&lt;br /&gt;Brenda Ashley (Vocalist)&lt;br /&gt;Kimberly Bata (Percussionist)&lt;br /&gt;Charlie Reese (Vocalist)&lt;br /&gt;&lt;br /&gt;I've certainly gained an entirely new appreciation for Sinatra and his music. Among the ensemble pieces, I had several feature solos, including: &lt;br /&gt;&lt;br /&gt;"I've Got The World On A String"&lt;br /&gt;"Fly Me To The Moon"&lt;br /&gt;"The Lady Is A Tramp"&lt;br /&gt;"My Lean Baby"&lt;br /&gt;"I've Got You Under My Skin"&lt;br /&gt;"(Love Is) The Tender Trap"&lt;br /&gt;"One For My Baby (And One More For The Road)"&lt;br /&gt;"Summer Wind"&lt;br /&gt;"That's Life"&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.summerwindproductions.com/The%20Songs.html"&gt;&lt;br /&gt;A full list of the songs from the performance (58!)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And here is an online announcement from the local paper:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bit.ly/NIgoU"&gt;Sioux City Journal: Songs of Ol' Blue Eyes presented&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I cannot thank the cast and crew enough for letting me be a part of this wonderful show!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-1917786860814090078?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/1917786860814090078/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2009/08/my-way-tribute-to-frank-sinatra.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/1917786860814090078'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/1917786860814090078'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2009/08/my-way-tribute-to-frank-sinatra.html' title='My Way: A Tribute To Frank Sinatra'/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-2561962614003956300</id><published>2009-07-13T17:39:00.000-05:00</published><updated>2009-07-13T18:22:18.701-05:00</updated><title type='text'>What's what about who's who</title><content type='html'>Once again, I've been "chosen as a potential candidate" by the &lt;a href="http://en.wikipedia.org/wiki/Vanity_press"&gt;Vanity Press&lt;/a&gt;. This time it's the "Biltmore Who's Who" folks. They salute me for my executive and professional accomplishments and, given my background, believe my profile would make a "fitting addition" to the &lt;span style="font-style:italic;"&gt;Honors Edition&lt;/span&gt; of their publication.&lt;br /&gt;&lt;br /&gt;That is, if I just fill out the response form to tell them where I work, what industry I'm in, and what my "personal specialty" is. &lt;br /&gt;&lt;br /&gt;*snort*&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-2561962614003956300?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/2561962614003956300/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2009/07/whats-what-about-whos-who.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/2561962614003956300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/2561962614003956300'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2009/07/whats-what-about-whos-who.html' title='What&apos;s what about who&apos;s who'/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-4631980744234536387</id><published>2009-06-18T23:04:00.000-05:00</published><updated>2009-06-18T23:09:24.783-05:00</updated><title type='text'>Holy Cow!</title><content type='html'>A dinner guest of mine was wearing a bright blue t-shirt with a stylized white portrait of &lt;a href="http://en.wikipedia.org/wiki/Harry_Caray"&gt;Harry Caray&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;My two-year-old daughter informed him, "I like your shirt." &lt;br /&gt;&lt;br /&gt;He responded, "Oh, you know who this is?" &lt;br /&gt;&lt;br /&gt;She answered, "Yeah. It's God."&lt;br /&gt;&amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-4631980744234536387?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/4631980744234536387/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2009/06/holy-cow.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/4631980744234536387'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/4631980744234536387'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2009/06/holy-cow.html' title='Holy Cow!'/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-422265268610886240</id><published>2009-04-26T14:09:00.000-05:00</published><updated>2009-08-27T06:20:40.536-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><title type='text'>Netbeans 6.5 + Grails</title><content type='html'>I'm not pleased with the apparent behavior of NetBeans 6.5 when creating a new Grails domain class. I'm unable to create a domain class anywhere other than the default package; the dialog keeps asking for a "valid class name":&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_s5LQws314Es/SfSzhXbpzoI/AAAAAAAAAAg/rtZtCt4S7hU/s1600-h/new-domain-class.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:left;cursor:pointer; cursor:hand;width: 400px; height: 183px;" src="http://1.bp.blogspot.com/_s5LQws314Es/SfSzhXbpzoI/AAAAAAAAAAg/rtZtCt4S7hU/s400/new-domain-class.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5329081644893195906" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This name works fine for creating a Groovy class, just not a Grails domain class. So, why won't the Grails support allow it?&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;UPDATE (2009-05-08): This seems to be straightened out in NetBeans 6.7 (beta).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-422265268610886240?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/422265268610886240/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2009/04/netbeans-65-grails.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/422265268610886240'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/422265268610886240'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2009/04/netbeans-65-grails.html' title='Netbeans 6.5 + Grails'/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_s5LQws314Es/SfSzhXbpzoI/AAAAAAAAAAg/rtZtCt4S7hU/s72-c/new-domain-class.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-8747885672008496365</id><published>2009-04-14T09:53:00.000-05:00</published><updated>2009-04-15T06:35:59.062-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>XPath Voodoo</title><content type='html'>I had a use case for &lt;a href="http://webtest.canoo.com/webtest/manual/WebTestHome.html"&gt;Canoo Web Test&lt;/a&gt; to verify the value of a table cell. In an attempt to obtain the value using an &lt;a href="http://www.w3.org/TR/xpath"&gt;XPath query&lt;/a&gt;, I used the following expression: &lt;br /&gt;&lt;pre&gt;//form[@id='myFormName']/table/tr[2]/td[2]&lt;/pre&gt;&lt;br /&gt;My test failed, reporting that this expression didn't return any value at all. I verified this was the correct path by looking at the XHTML source. It was only through inspecting the XHTML using the &lt;a href="http://getfirebug.com/"&gt;Firebug plugin for Firefox&lt;/a&gt; did I see a mystery &amp;lt;tbody&amp;gt; tag. I'm not sure at which point that gets injected, or even why. The injection appears to be a misinterpretation of &lt;a href="http://www.w3.org/TR/xhtml1/"&gt;XTHML 1.0 strict&lt;/a&gt; (the specified DOCTYPE). When I added the &amp;lt;tbody&amp;gt; tag to the XPath expression -- which I remind you is &lt;em&gt;not&lt;/em&gt; in the XHTML source -- the test passed. Here is the working expression:&lt;br /&gt;&lt;pre&gt;//form[@id='myFormName']/table/tbody/tr[2]/td[2]&lt;/pre&gt;&lt;br /&gt;I haven't figured out what I'm missing, yet.&lt;br /&gt;&amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-8747885672008496365?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/8747885672008496365/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2009/04/xpath-voodoo.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/8747885672008496365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/8747885672008496365'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2009/04/xpath-voodoo.html' title='XPath Voodoo'/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-8217686664339367567</id><published>2009-04-02T07:29:00.000-05:00</published><updated>2009-06-08T10:43:10.698-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='law enforcement'/><title type='text'>Justice</title><content type='html'>Just today I saw the news that my friend's murderer was &lt;a href="http://notes.mshp.dps.mo.gov/si01/si01p001.nsf/9300de8f24f618a68625729800536892/211cf5b10f20c87a86257586007719a1?OpenDocument"&gt;found guilty&lt;/a&gt;, with sentencing on the way. &lt;br /&gt;&lt;br /&gt;I met Dewayne as an EVOC instructor and greatly enjoyed his company during the much-too-short time I got to spend with him. Dewayne's wonderfully affable disposition made him a joy to be around. He never seemed to be without a smile, but he was always ready to take care of business. Hard-working and friendly; Dewayne had these qualities in spades.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.mshp.dps.missouri.gov/MSHPWeb/UltimateSacrifice/OfficerPages/sergeantDwayneGraham.html"&gt;SGT Dewayne Graham&lt;/a&gt; was a great man, and I'm honored to have known him. I hope this verdict brings some small amount of comfort to his family, and I'm hopeful for swift and severe justice during sentencing.&lt;br /&gt;&lt;br /&gt;UPDATE:  On May 22, 2009, Dewayne's murderer was &lt;a href="http://www.examiner.com/a-2030569~Death_sentence_for_man_who_killed_Mo__trooper.html"&gt;sentenced to death&lt;/a&gt;.&lt;br /&gt;&amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-8217686664339367567?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/8217686664339367567/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2009/04/justice.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/8217686664339367567'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/8217686664339367567'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2009/04/justice.html' title='Justice'/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-1525808074171517295</id><published>2009-03-31T06:26:00.000-05:00</published><updated>2009-03-31T06:29:12.506-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fitness'/><title type='text'>1,000 excuses</title><content type='html'>A good friend of mind said there were thousands of excuses to avoid exercising, but great reward in finding the reason to go ahead and exercise anyway.&lt;br /&gt;&lt;br /&gt;Wise words that -- when followed -- always seem to make my day better.&lt;br /&gt;&amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-1525808074171517295?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/1525808074171517295/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2009/03/1000-excuses.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/1525808074171517295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/1525808074171517295'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2009/03/1000-excuses.html' title='1,000 excuses'/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-5471732242988050205</id><published>2009-03-30T21:45:00.000-05:00</published><updated>2009-03-30T21:53:39.581-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>It's here!</title><content type='html'>I've started in on "&lt;a href="http://www.apress.com/book/view/1590599950"&gt;The Definitive Guide to Grails, 2nd Edition&lt;/a&gt;," by Graeme Rocher and Jeff Brown, after having just received it via post today. The &lt;a href="http://groovy.codehaus.org/"&gt;Groovy&lt;/a&gt;/&lt;a href="http://www.grails.org/Home"&gt;Grails&lt;/a&gt; combo never ceases to amaze me. The first couple chapters (as far as I've read, yet) are a simple introduction to the Grails platform, which cover starting up a rudimentary CRUD web application, complete with &lt;a href="http://www.grails.org/Scaffolding"&gt;dynamic scaffolding&lt;/a&gt; for a couple related domain classes. &lt;br /&gt;&lt;br /&gt;I'm anxiously looking forward to digging into more detail as I'm familiar with the material so far. Slow and steady wins the race, however, and I don't want to risk missing any updated juicy tidbits by skipping ahead.&lt;br /&gt;&amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-5471732242988050205?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/5471732242988050205/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2009/03/tdgg2e.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/5471732242988050205'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/5471732242988050205'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2009/03/tdgg2e.html' title='It&apos;s here!'/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-5351861118778156803</id><published>2009-03-26T19:25:00.000-05:00</published><updated>2009-03-26T19:30:23.158-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Estimation error</title><content type='html'>&lt;blockquote&gt;"There's no point in being exact about something if you don't even know what you're talking about."&lt;br /&gt;-- John von Neumann, as quoted in "&lt;a href="http://www.stevemcconnell.com/est.htm"&gt;Software Estimation&lt;/a&gt;" by Steve McConnell&lt;/blockquote&gt;&lt;br /&gt;&amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-5351861118778156803?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/5351861118778156803/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2009/03/estimation-error.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/5351861118778156803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/5351861118778156803'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2009/03/estimation-error.html' title='Estimation error'/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-4281070413764830499</id><published>2009-03-26T12:45:00.000-05:00</published><updated>2009-03-26T12:57:06.483-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Software Estimation: Demystifying the Black Art</title><content type='html'>At work, I just received "&lt;a href="http://www.stevemcconnell.com/est.htm"&gt;Software Estimation: Demystifying the Black Art&lt;/a&gt;," by Steve McConnell. I found his book "&lt;a href="http://www.stevemcconnell.com/cc.htm"&gt;Code Complete&lt;/a&gt;" to be enlightening and practical, so I'm looking forward to reading what McConnell has to say about the art and science of software estimating. I'll be comparing the text to another favorite of mine; "&lt;a href="http://www.mountaingoatsoftware.com/book/1"&gt;Agile Estimating and Planning&lt;/a&gt;," by Mike Cohn.&lt;br /&gt;&amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-4281070413764830499?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/4281070413764830499/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2009/03/software-estimation-demystifying-black.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/4281070413764830499'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/4281070413764830499'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2009/03/software-estimation-demystifying-black.html' title='Software Estimation: Demystifying the Black Art'/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-8501549114694042977</id><published>2009-03-23T18:13:00.000-05:00</published><updated>2009-03-30T21:53:17.105-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>The Definitive Guide to Grails, Second Edition</title><content type='html'>I'm anxiously awaiting &lt;a href="http://www.apress.com/book/view/1590599950"&gt;The Definitive Guide to Grails, Second Edition&lt;/a&gt; to arrive by mail. I've been playing around with this framework and never cease to be amazed. I understand that other "RAD" web frameworks like Django and Rails probably offer similar features, but &lt;a href="http://www.grails.org/"&gt;Grails&lt;/a&gt;' foundation of &lt;a href="http://groovy.codehaus.org/"&gt;Groovy&lt;/a&gt; is especially attractive to me. &lt;br /&gt;&lt;br /&gt;I'll try my best to be patient until TDGG2E shows up.&lt;br /&gt;&amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-8501549114694042977?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/8501549114694042977/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2009/03/grails-grails-grails.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/8501549114694042977'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/8501549114694042977'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2009/03/grails-grails-grails.html' title='The Definitive Guide to Grails, Second Edition'/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-1293374209085692326</id><published>2009-03-17T16:14:00.000-05:00</published><updated>2009-03-17T16:32:37.806-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><title type='text'>Hardest. Puzzle. Ever.</title><content type='html'>&lt;blockquote&gt;A hundred prisoners are each locked in a room with three pirates, one of whom will walk the plank in the morning. Each prisoner has 10 bottles of wine, one of which has been poisoned; and each pirate has 12 coins, one of which is counterfeit and weighs either more or less than a genuine coin. In the room is a single switch, which the prisoner may either leave as it is, or flip. Before being led into the rooms, the prisoners are all made to wear either a red hat or a blue hat; they can see all the other prisoners' hats, but not their own. Meanwhile, a six-digit prime number of monkeys multiply until their digits reverse, then all have to get across a river using a canoe that can hold at most two monkeys at a time. But half the monkeys always lie and the other half always tell the truth. Given that the Nth prisoner knows that one of the monkeys doesn't know that a pirate doesn't know the product of two numbers between 1 and 100 without knowing that the N+1th prisoner has flipped the switch in his room or not after having determined which bottle of wine was poisoned and what colour his hat is, what is the solution to this puzzle? &lt;/blockquote&gt;&lt;a href="http://www.cartalk.com/content/read-on/2008/08.23.2.html"&gt;&lt;br /&gt;Heh&lt;/a&gt;.&lt;br /&gt;&amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-1293374209085692326?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/1293374209085692326/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2009/03/hardest-puzzle-ever.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/1293374209085692326'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/1293374209085692326'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2009/03/hardest-puzzle-ever.html' title='Hardest. Puzzle. Ever.'/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-5124756835730903047</id><published>2009-03-16T17:19:00.001-05:00</published><updated>2009-03-17T17:34:50.358-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><title type='text'>Public Key</title><content type='html'>-----BEGIN PGP PUBLIC KEY BLOCK-----&lt;br /&gt;Version: GnuPG v1.4.9 (Cygwin)&lt;br /&gt;&lt;br /&gt;mQGiBEm+zwERBADsHQy49oSv5fPerZxNOMoghXTLfXXgIqf0onIY+5fbHFingIUD&lt;br /&gt;2vcLHen1myjLwudHCcELIQ6cZ7DZdKFllyryJXAt1pH3dBHEj3wYMA+Ttn+JeCUu&lt;br /&gt;JtHSbp9JyOH8/CWAGJf36CsMI9JEm9eTnaZcNvXqfqkFXah3iFn1IBOKkwCgm5uJ&lt;br /&gt;9oYBs4MKXH7YqO5+4ihoUEUD/ilRU0iGvJOyjXazJydlIZF+R8qEoJmPmOxlpJeg&lt;br /&gt;cBM7Lh9ItbWnFhfOv7uZhY+Huh4vGsFKfrrdlIBiQY42yWbZNzUPFjOPkGmS7DFE&lt;br /&gt;/NSgTXJ8vQxwkUa+r1P9SgdfjlWstfO4vz317uofTXVMsPhV9fukdQM4MkeV1Iz3&lt;br /&gt;tSwtBADSxe/jtBRTjaeM1K9/njPoXlFfpVQm6WgKWcc5rlsg4f8BCs4YiwJ/e0Ut&lt;br /&gt;IPpUUg3mAvnv2qD3LA0J655A1QOywUprNJLdnRMwWGxcmvk/IXZK6GCnrzNy1KJe&lt;br /&gt;LOozzbXI5vooolQ3XzGfVWsEPtSs4Rc7gE6W5Os8nesYpIY1FrQsU3RlcGhlbiBN&lt;br /&gt;b3Jyb3cgKHlhd21hcmspIDxzdGV2ZUB5YXdtYXJrLmNvbT6IYAQTEQIAIAUCSb7P&lt;br /&gt;AQIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJECn+LI9fbxGUyQQAn3iqKJjt&lt;br /&gt;984hXVXCEk7BKwsJqNlMAJ0cWQVNpXwz3YZ7KXsTW8+z7dq+fLkCDARJvs8BEAgA&lt;br /&gt;l8l4Vy9A0ZJWmAHwTdNUSxMCEo0zF1qOwCCdSnuu8k27Zo4RBmh7n6P9/ahOdaMR&lt;br /&gt;gTRNrMg+E6hJzsl9EgQ04eQKkhO4vSZpLGtR7MU9WrovMzIEluNCHfcPtuFC86Gm&lt;br /&gt;z53O1IsjVI25rChAON0mCQmCrerBfQ4whogsTlk5EE7NaqP6CwgFK0Z0ElJlrJQA&lt;br /&gt;alyd21TvrZRYLku4YfpN/SyCi3BQFJoISSDhTkD0lk1gqKfbbVFyDcyewBeaFsuX&lt;br /&gt;hHzP+brTvleLhDSaxfAzKK5E0zZm5pVS7IhpKGCttHV6N5ewRoPP+8N7af8nSwGs&lt;br /&gt;nYRwdAfcjF4iSQ4dlok/+wADBQf4pn/0Sehvs1zMNji+cwuqKjK4FG2+CNmswVZ7&lt;br /&gt;jYoXOI7pv2JeolTBqKd8pm678rj77b9+Ut7SNcDZBlGKuy3FZipNC7UpW9/KMwfY&lt;br /&gt;AnZXZY7a+NxXfAujX1q57G0F1lTBdE7iQVWvsWojVXYKdFyhtvZNMhDJ3osyrgTK&lt;br /&gt;TdBwK2YjOS/rplQrbCfnvTY5o0IViV07n2dhttpCFP6taZNS+avf1DXZKof1Old/&lt;br /&gt;gdxCjUcSRa1jGJvP/3tvPOVz+i8pafEOWzCaZ1NCU1ABlB/CMJzEEITh8xbHPGf8&lt;br /&gt;gnl/CEm1cIa8ib3ZX/LlFD8O3Cw8JrR4hkOFGt2DMrneKHMkiEkEGBECAAkFAkm+&lt;br /&gt;zwECGwwACgkQKf4sj19vEZQxOwCfcp8gu8lmz7vaYcMQ75tqDXbIcygAn3RVOnRX&lt;br /&gt;Sv1eHcd2OUH12juEbQjA&lt;br /&gt;=V3fM&lt;br /&gt;-----END PGP PUBLIC KEY BLOCK-----&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-5124756835730903047?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/5124756835730903047/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2009/03/public-key.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/5124756835730903047'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/5124756835730903047'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2009/03/public-key.html' title='Public Key'/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-2085232828639383715</id><published>2009-03-12T08:38:00.000-05:00</published><updated>2009-03-12T08:41:31.010-05:00</updated><title type='text'>Getting What You Want</title><content type='html'>&lt;blockquote&gt;"The indispensable first step to getting what you want is this: Decide what you want."&lt;br /&gt;-- Ben Stein&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-2085232828639383715?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/2085232828639383715/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2009/03/getting-what-you-want.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/2085232828639383715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/2085232828639383715'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2009/03/getting-what-you-want.html' title='Getting What You Want'/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-6706492241872757147</id><published>2009-03-10T15:12:00.000-05:00</published><updated>2009-03-10T15:39:59.271-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='money'/><title type='text'>This is soaring?</title><content type='html'>&lt;a href="http://finance.yahoo.com/"&gt;Yahoo!&amp;reg; Finance&lt;/a&gt; reports today that "Stocks Soar on Bank Rally." Not to rain on anyone's parade, but a 380-point bounce in the Dow after losing more than 50% of its market value since last October (a high of 14,093 to 6,547 yesterday) is not what I'd call "soaring," given the context.&lt;br /&gt;&amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-6706492241872757147?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/6706492241872757147/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2009/03/this-is-soaring.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/6706492241872757147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/6706492241872757147'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2009/03/this-is-soaring.html' title='This is soaring?'/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-4586846958888613078</id><published>2009-03-09T11:25:00.000-05:00</published><updated>2009-03-09T11:30:34.961-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='money'/><title type='text'>...And Pretty Soon You're Talking About Real Money</title><content type='html'>&lt;a href="http://www.bloomberg.com/apps/news?pid=20601087&amp;sid=aZ1kcJ7y3LDM"&gt;Global Financial Assets Lost $50 Trillion Last Year, ADB Says&lt;/a&gt; &lt;br /&gt;&amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-4586846958888613078?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/4586846958888613078/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2009/03/and-pretty-soon-youre-talking-about.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/4586846958888613078'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/4586846958888613078'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2009/03/and-pretty-soon-youre-talking-about.html' title='...And Pretty Soon You&apos;re Talking About Real Money'/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-8208825416891335956</id><published>2009-03-08T14:41:00.000-05:00</published><updated>2009-03-09T11:32:00.986-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Theory vs. Practice</title><content type='html'>"The difference between theory and practice is smaller in theory than in practice."&lt;br /&gt;&lt;span style="font-style:italic;"&gt;-- Unattributed&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-8208825416891335956?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/8208825416891335956/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2009/03/theory-vs-practice.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/8208825416891335956'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/8208825416891335956'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2009/03/theory-vs-practice.html' title='Theory vs. Practice'/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-2443352816835240711</id><published>2009-03-05T15:19:00.001-06:00</published><updated>2009-03-09T11:31:22.585-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='money'/><title type='text'>Bigger than a breadbox</title><content type='html'>&lt;a href="http://www.pagetutor.com/trillion/index.html"&gt;What a trillion dollars looks like&lt;/a&gt;.&lt;br /&gt;&amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-2443352816835240711?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/2443352816835240711/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2009/03/bigger-than-breadbox.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/2443352816835240711'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/2443352816835240711'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2009/03/bigger-than-breadbox.html' title='Bigger than a breadbox'/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-1053169400478499076</id><published>2009-02-22T10:18:00.000-06:00</published><updated>2009-02-22T18:23:47.900-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fitness'/><title type='text'>"Holidays The Healthy Way" Weight Loss Challenge</title><content type='html'>Recently at work, we had a "weight loss challenge" that started in early December and ran through February 13, 2009. With the expert help of my live-in chef and nutritionist (aka, &lt;a href="http://www.facebook.com/home.php#/profile.php?id=1612117804"&gt;Terri&lt;/a&gt;), I won the competition by a healthy margin. I started at ~208 pounds and finished the competition around 176, losing around 32 pounds (a little over 15% of my total body weight) in ten weeks. The big secret to my success was watching what I eat and exercising regularly. I know that's not a particularly revolutionary idea, but it's one many of us - that is, me - seem to struggle with. For the most part, however, once I paid close attention to what I ate and how much exercise I did week-to-week, the process managed itself.&lt;br /&gt;&lt;br /&gt;The goal now is to keep working on converting fat to muscle and not fall back into bad habits. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-1053169400478499076?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/1053169400478499076/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2009/02/holidays-healthy-way-weight-loss.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/1053169400478499076'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/1053169400478499076'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2009/02/holidays-healthy-way-weight-loss.html' title='&quot;Holidays The Healthy Way&quot; Weight Loss Challenge'/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-3879391697220913858</id><published>2009-02-22T09:38:00.000-06:00</published><updated>2009-02-22T09:40:34.248-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='social networking'/><title type='text'>Facebook is the new crack.</title><content type='html'>&lt;a href="http://www.facebook.com/home.php"&gt;I'm just sayin'.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Or maybe it's the old crack and I'm just that far behind the times.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-3879391697220913858?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/3879391697220913858/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2009/02/facebook-is-new-crack.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/3879391697220913858'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/3879391697220913858'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2009/02/facebook-is-new-crack.html' title='Facebook is the new crack.'/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-803495905015013900</id><published>2008-06-21T09:02:00.000-05:00</published><updated>2009-09-09T10:28:40.913-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Update: "Days Difference" with Joda</title><content type='html'>The more I play with the &lt;a href="http://joda-time.sourceforge.net/"&gt;Joda Time API&lt;/a&gt;, the more I like it. Revisiting the &lt;a href="http://yawmark.blogspot.com/2007/12/calculate-difference-in-days.html"&gt;"calculating difference in days"&lt;/a&gt; problem, here's the Joda/Groovy equivalent:&lt;br /&gt;&lt;pre class="brush: groovy"&gt;import org.joda.time.LocalDate&lt;br /&gt;import static org.joda.time.Days.*&lt;br /&gt;&lt;br /&gt;date1 = new LocalDate(2008, 3, 10)&lt;br /&gt;date2 = new LocalDate(2008, 3, 12)&lt;br /&gt;assert 2 == daysBetween(date1, date2).days&lt;/pre&gt;&lt;br /&gt;What's not to like? :o)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-803495905015013900?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/803495905015013900/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2008/06/update-days-difference-with-joda.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/803495905015013900'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/803495905015013900'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2008/06/update-days-difference-with-joda.html' title='Update: &quot;Days Difference&quot; with Joda'/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-8551139462669260963</id><published>2008-05-16T22:27:00.000-05:00</published><updated>2009-09-09T10:29:37.912-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>DGG Confusion #1 (among many to come, I'm sure)</title><content type='html'>I'm working my way through &lt;a href="http://www.apress.com/book/view/1590597583"&gt;The Definitive Guide to Grails&lt;/a&gt;. Chapter 6 covers testing, and I'm a bit stuck on the GroovyMock example in listing 6-9. I'm using Grails 1.0.2, and as entered*, the test fails with "No call to 'getParams' expected at this point. Still 1 call(s) to 'redirect' expected." I tried &lt;span style="font-style: italic;"&gt;demanding&lt;/span&gt; a call to getParams, but that leads down a path of yet more confusing errors.&lt;br /&gt;&lt;br /&gt;So, I'll keep beating my head against it for a while, and hopefully post back with some results.&lt;br /&gt;&lt;br /&gt;* &lt;pre class="brush: groovy;"&gt;void testUpdateNotFound() {&lt;br /&gt; def bc&lt;br /&gt; def mock = new MockFor(BookmarkController)&lt;br /&gt; mock.demand.redirect { Map params -&gt;&lt;br /&gt;     assert params.action == bc.edit&lt;br /&gt; }&lt;br /&gt; mock.use {&lt;br /&gt;     bc = new BookmarkController()&lt;br /&gt;     bc.params.id = 5&lt;br /&gt;     bc.update.call()&lt;br /&gt; }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;[UPDATE] Nothing that a little Googling won't help, and I'm happy to know I'm not just insane (well, at least not with this particular problem). I'm using version 1.5.1, and according to a &lt;a href="http://jira.codehaus.org/browse/GROOVY-1871"&gt;bug report&lt;/a&gt;, Groovy's MockFor is a bit squiffy in versions 1.5.1 and 1.5.4. Unfortunately, the bug's still open, so I'll have to pass over that part of the book for now. I can do that in good conscience. :o)&lt;br /&gt;&lt;br /&gt;[UPDATE #2] This works with Groovy 1.5.6 (with "method pointers"):&lt;br /&gt;&lt;pre class="brush: groovy;"&gt;import groovy.mock.interceptor.*&lt;br /&gt;&lt;br /&gt;class BookmarkController {&lt;br /&gt;    def update = { redirect("value from original") }&lt;br /&gt;    def redirect = { println "Original class: $it" }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;class BookmarkTests extends GroovyTestCase {&lt;br /&gt;    void testUpdate() {&lt;br /&gt;        def bc&lt;br /&gt;        def mock = new MockFor(BookmarkController)&lt;br /&gt;        mock.demand.redirect { println "Mock class: $it" }&lt;br /&gt;        mock.use {&lt;br /&gt;            bc = new BookmarkController() &lt;br /&gt;            bc.&amp;update.call()&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;new BookmarkController().&amp;update.call()&lt;br /&gt;new BookmarkTests().testUpdate()&lt;/pre&gt;&lt;br /&gt;...but I'm not sure that does much for DGG Listing 6-9. Hmph.&lt;br /&gt;&amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-8551139462669260963?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/8551139462669260963/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2008/05/dgg-confusion-1-among-many-to-come-im.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/8551139462669260963'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/8551139462669260963'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2008/05/dgg-confusion-1-among-many-to-come-im.html' title='DGG Confusion #1 (among many to come, I&apos;m sure)'/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-8221748637542047316</id><published>2007-12-26T10:24:00.000-06:00</published><updated>2009-03-09T11:33:34.386-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Confusion</title><content type='html'>&lt;blockquote&gt;&lt;span style="font-style:italic;"&gt;On two occasions I have been asked, – "Pray, Mr. Babbage, if you put into the machine wrong figures, will the right answers come out?" In one case a member of the Upper, and in the other a member of the Lower, House put this question. I am not able rightly to apprehend the kind of confusion of ideas that could provoke such a question.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;-- Charles Babbage, English mathematician, philosopher, and mechanical engineer&lt;/blockquote&gt;&lt;br /&gt;&amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-8221748637542047316?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/8221748637542047316/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2007/12/confusion.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/8221748637542047316'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/8221748637542047316'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2007/12/confusion.html' title='Confusion'/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-8517969999253038866</id><published>2007-12-22T19:07:00.000-06:00</published><updated>2009-09-09T10:30:38.856-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Calculate Difference in Days</title><content type='html'>Java has no built-in "give me the difference in days" API methods. One commonly-suggested solution is to get the difference in milliseconds between two dates and, using the number of milliseconds in a day, determine the number of days. Unfortunately, daylight savings time creates some problems with this method, as the following Groovy script demonstrates:&lt;br /&gt;&lt;pre class="brush: groovy;"&gt;#! /usr/bin/groovy&lt;br /&gt;&lt;br /&gt;df = new java.text.SimpleDateFormat('yyyy-MM-dd')&lt;br /&gt;&lt;br /&gt;// These dates cross DST...&lt;br /&gt;startDate = df.parse('2007-03-10')&lt;br /&gt;endDate = df.parse('2007-03-12')&lt;br /&gt;&lt;br /&gt;expectedDifferenceInDays = 2&lt;br /&gt;&lt;br /&gt;// Here's the problem with millis:&lt;br /&gt;millisInADay = 1000 * 60 * 60 * 24&lt;br /&gt;differenceInMillis = endDate.time - startDate.time&lt;br /&gt;actualDifferenceInDays = differenceInMillis / millisInADay&lt;br /&gt;&lt;br /&gt;assert expectedDifferenceInDays != actualDifferenceInDays&lt;br /&gt;assert actualDifferenceInDays &lt; expectedDifferenceInDays&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Here's a more straightforward solution using Java's Calendar API:&lt;br /&gt;&lt;pre class="brush: groovy;"&gt;#! /usr/bin/groovy&lt;br /&gt;&lt;br /&gt;df = new java.text.SimpleDateFormat('yyyy-MM-dd')&lt;br /&gt;&lt;br /&gt;// These dates cross DST...&lt;br /&gt;startDate = df.parse('2007-03-10')&lt;br /&gt;endDate = df.parse('2007-03-12')&lt;br /&gt;&lt;br /&gt;expectedDifferenceInDays = 2&lt;br /&gt;&lt;br /&gt;calendar = Calendar.instance&lt;br /&gt;calendar.time = startDate&lt;br /&gt;actualDifferenceInDays = 0&lt;br /&gt;while (calendar.time.before(endDate)) {&lt;br /&gt;    actualDifferenceInDays++&lt;br /&gt;    calendar.add(Calendar.DATE, 1)&lt;br /&gt;}&lt;br /&gt;assert expectedDifferenceInDays == actualDifferenceInDays&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Note that what constitutes "a day" is subject to interpretation... :o)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-8517969999253038866?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/8517969999253038866/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2007/12/calculate-difference-in-days.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/8517969999253038866'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/8517969999253038866'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2007/12/calculate-difference-in-days.html' title='Calculate Difference in Days'/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-5463685762179840861</id><published>2007-10-03T07:12:00.000-05:00</published><updated>2009-03-17T17:35:44.681-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Write simple code</title><content type='html'>&lt;i&gt;Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.&lt;/i&gt; &lt;br /&gt;-- attributed to Brian Kernighan&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-5463685762179840861?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/5463685762179840861/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2007/10/debugging-is-twice-as-hard-as-writing.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/5463685762179840861'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/5463685762179840861'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2007/10/debugging-is-twice-as-hard-as-writing.html' title='Write simple code'/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-1276509569857256618</id><published>2007-09-14T23:14:00.000-05:00</published><updated>2009-09-09T10:31:28.073-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Integer Palindromes</title><content type='html'>File this one under "Silly, Simple Code Snippet Of The Day"™...&lt;br /&gt;&lt;br /&gt;Several times on various programming forums, I've seen question about how to find out if an integer value is a palindrome or not (the number is the same "forwards" and "backwards"; e.g., 71317 would be a palindrome, while 71316 would not). Most of the  suggested solutions revolve around converting the integer value to a string and reversing the characters. This makes sense, given that "71317" is just a character representation of a number, and many language APIs have ready-made facilities for reversing strings of characters (or at least arrays). That said, finding out if a number is a palindrome using basic math is dead simple, too. Here's a base-10 example in C#:&lt;br /&gt;&lt;pre class="brush: csharp;"&gt;    using System.Diagnostics;&lt;br /&gt;&lt;br /&gt;    class ScratchUtils&lt;br /&gt;    {&lt;br /&gt;        public static int Reverse(int i)&lt;br /&gt;        {&lt;br /&gt;            int result = 0;&lt;br /&gt;            while (i != 0)&lt;br /&gt;            {&lt;br /&gt;                result = (result * 10) + (i % 10);&lt;br /&gt;                i /= 10;&lt;br /&gt;            }&lt;br /&gt;            return result;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        public static bool IsPalindrome(int i)&lt;br /&gt;        {&lt;br /&gt;            return i == Reverse(i);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        public static void Main()&lt;br /&gt;        {&lt;br /&gt;            Debug.Assert(  0 == Reverse(0));&lt;br /&gt;            Debug.Assert(  1 == Reverse(1));&lt;br /&gt;            Debug.Assert( 21 == Reverse(12));&lt;br /&gt;            Debug.Assert(-21 == Reverse(-12));&lt;br /&gt;&lt;br /&gt;            Debug.Assert(IsPalindrome(1));&lt;br /&gt;            Debug.Assert(IsPalindrome(11));&lt;br /&gt;            Debug.Assert(!IsPalindrome(12));&lt;br /&gt;            Debug.Assert(IsPalindrome(121));&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-1276509569857256618?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/1276509569857256618/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2007/09/integer-palindromes.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/1276509569857256618'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/1276509569857256618'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2007/09/integer-palindromes.html' title='Integer Palindromes'/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-2353743841943411856</id><published>2007-09-11T09:45:00.000-05:00</published><updated>2009-03-17T17:35:44.681-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Java - Cannot Resolve Symbol</title><content type='html'>You get a "cannot resolve symbol" message because the compiler doesn't recognize something you've typed. It's as if you instructed your friend to "fernt PL^%", to which s/he would likely reply, "Huh?". The compiler errors will tell exactly which symbols it does not recognize; correct these errors by properly defining variables, importing the correct classes, implementing the appropriate methods, etc.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-2353743841943411856?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/2353743841943411856/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2007/09/java-cannot-resolve-symbol.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/2353743841943411856'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/2353743841943411856'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2007/09/java-cannot-resolve-symbol.html' title='Java - Cannot Resolve Symbol'/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-3496742891105739930</id><published>2007-09-02T11:52:00.000-05:00</published><updated>2009-09-09T10:32:15.935-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>.NET - Connecting to SQL Server Express from VWDE</title><content type='html'>I was trying a &lt;a href="http://asp.net/learn/videos/video-06.aspx"&gt;tutorial for Visual Web Developer Express&lt;/a&gt;, and kept running into problems connecting to SQL Server Express. When I tried to configure the security settings by clicking on the security tab in the ASP.NET Web Site Administration Tool, I received the following error:&lt;br /&gt;&lt;blockquote&gt;There is a problem with your selected data store. This can be caused by an invalid server name or credentials, or by insufficient permission. It can also be caused by the role manager feature not being enabled. Click the button below to be redirected to a page where you can choose a new data store.&lt;/blockquote&gt;&lt;br /&gt;After researching a bit, I used the SQL Server Configuration Manager to use "Local System" as the built-in account (found under the [Log On] tab for the running SQL Server Express instance). Then, I had to add a Web.config to my project with the following connection strings:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: xml"&gt;&amp;lt;connectionStrings&amp;gt;&lt;br /&gt;  &amp;lt;remove name="LocalSqlServer"/&amp;gt;&lt;br /&gt;  &amp;lt;add name="LocalSqlServer"&lt;br /&gt;   connectionString="Data Source=localhost;&lt;br /&gt;         Initial Catalog=aspnetdb;&lt;br /&gt;         Integrated Security=True"&lt;br /&gt;     providerName="System.Data.SqlClient"/&amp;gt;&lt;br /&gt;&amp;lt;/connectionStrings&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;After that, the connection succeeded, and I was able to continue with the tutorial.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-3496742891105739930?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/3496742891105739930/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2007/09/i-was-trying-tutorial-for-visual-web.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/3496742891105739930'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/3496742891105739930'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2007/09/i-was-trying-tutorial-for-visual-web.html' title='.NET - Connecting to SQL Server Express from VWDE'/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-8706726695311403409</id><published>2007-08-15T10:16:00.000-05:00</published><updated>2007-08-15T10:18:37.381-05:00</updated><title type='text'>Newsbite Of The Day</title><content type='html'>From a &lt;a href="http://www.mcclatchydc.com/227/story/18902.html"&gt;story&lt;/a&gt; about rising food prices:&lt;br /&gt;&lt;blockquote&gt;Half the nation’s families earn below the median family income of about $56,000.&lt;/blockquote&gt;&lt;br /&gt;Well, yeah. That's pretty much what "median" means. &lt;br /&gt;&lt;br /&gt;In other shocking news, half the nation’s families earn above the median family income of about $56,000.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-8706726695311403409?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/8706726695311403409/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2007/08/newsbite-of-day.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/8706726695311403409'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/8706726695311403409'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2007/08/newsbite-of-day.html' title='Newsbite Of The Day'/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-1535468089623611393</id><published>2007-07-06T23:51:00.000-05:00</published><updated>2009-09-09T10:34:13.602-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Groovy and the Lambda Calculus</title><content type='html'>I've been playing around with the &lt;a href="http://groovy.codehaus.org/"&gt;Groovy&lt;/a&gt; language, and have recently been involved in a &lt;a href="http://forum.java.sun.com/thread.jspa?threadID=5191704"&gt;discussion&lt;/a&gt; regarding the addition of closures to Java. Tangents lead to tangents, and all of a sudden, I find myself reading about &lt;a href="http://perl.plover.com/lambda/tpj.html#Lambda_Calculus"&gt;Perl and the Lambda Calculus&lt;/a&gt;. Oy.&lt;br /&gt;&lt;br /&gt;I had just started trying to get my head around the idea of the lambda calculus when the author brought up the subject of "&lt;a href="http://perl.plover.com/lambda/tpj.html#Currying"&gt;currying&lt;/a&gt;", and discussed the "Lambda Calculus Way"™ of writing an addition function built on the concept that functions can only take a single argument. The author showed how to express such a thing in Perl:&lt;br /&gt;&lt;pre class="brush: perl"&gt;    sub add {&lt;br /&gt;        my $x = shift;&lt;br /&gt;        my $f = sub {&lt;br /&gt;            my $y = shift;&lt;br /&gt;            return $x + $y;&lt;br /&gt;        }&lt;br /&gt;        return $f;   &lt;br /&gt;    }&lt;/pre&gt;&lt;br /&gt;Groovy supports writing code like this too, so I thought I'd see what I could come up with in Groovy syntax. Here's the beast:&lt;br /&gt;&lt;pre class="brush: groovy"&gt;    def add (x) {&lt;br /&gt;        return {&lt;br /&gt;            y -&gt; return x + y&lt;br /&gt;        }&lt;br /&gt;    }&lt;/pre&gt;&lt;br /&gt;And the test...&lt;br /&gt;&lt;pre class="brush: groovy"&gt;    assert 7 == add(3)(4) // whew.&lt;/pre&gt;&lt;br /&gt;If there's a Groovy expert out there reading this blog, let me know if there's a better way. All right, back to the &lt;a href="http://perl.plover.com/lambda/tpj.html#Lambda_Calculus"&gt;essay&lt;/a&gt;...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-1535468089623611393?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/1535468089623611393/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2007/07/groovy-and-lambda-calculus.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/1535468089623611393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/1535468089623611393'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2007/07/groovy-and-lambda-calculus.html' title='Groovy and the Lambda Calculus'/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-5738649399710692535</id><published>2007-07-04T09:38:00.000-05:00</published><updated>2007-07-04T09:41:44.429-05:00</updated><title type='text'>Independence Day</title><content type='html'>Have a happy and safe &lt;a href="http://en.wikipedia.org/wiki/Independence_Day_%28United_States%29"&gt;Independence Day&lt;/a&gt;!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-5738649399710692535?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/5738649399710692535/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2007/07/independence-day.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/5738649399710692535'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/5738649399710692535'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2007/07/independence-day.html' title='Independence Day'/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-3750956242475377882</id><published>2007-07-04T09:09:00.000-05:00</published><updated>2009-03-17T17:35:44.682-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Non-Static Members and Static Contexts</title><content type='html'>A question commonly asked on Java forums concerns an error message similar to the following: &lt;br /&gt;&lt;br /&gt;&lt;code&gt;non-static variable cannot be referenced from a static context&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;In Java, &lt;span style="font-style:italic;"&gt;static&lt;/span&gt; means "something pertaining to an object class". Often, the term &lt;span style="font-style:italic;"&gt;class &lt;/span&gt;is substituted for &lt;span style="font-style:italic;"&gt;static&lt;/span&gt;, as in "class method" or "class variable." &lt;span style="font-style:italic;"&gt;Non-static&lt;/span&gt;, on the other hand, means "something pertaining to an actual instance of an object. Similarly, the term &lt;span style="font-style:italic;"&gt;instance&lt;/span&gt; is often substituted for &lt;span style="font-style:italic;"&gt;non-static&lt;/span&gt;, as in "instance method" or "instance variable." &lt;br /&gt;&lt;br /&gt;The error comes about because static &lt;a href="http://java.sun.com/docs/books/jls/third_edition/html/names.html#34757"&gt;members&lt;/a&gt; (methods, variables, classes, etc.) don't require an instance of the object to be accessed; they belong to the class. But a non-static member belongs to an instance -- an individual object. There's no way in a static context to know &lt;span style="font-style:italic;"&gt;which &lt;/span&gt;instance's variable to use or method to call. Indeed, there may not be any instances at all! Thus, the compiler happily tells you that you can't access an instance member (non-static) from a class context (static).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-3750956242475377882?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/3750956242475377882/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2007/07/non-static-members-and-static-contexts.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/3750956242475377882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/3750956242475377882'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2007/07/non-static-members-and-static-contexts.html' title='Non-Static Members and Static Contexts'/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-8190435518045088142</id><published>2007-06-25T10:42:00.000-05:00</published><updated>2009-09-09T11:20:20.777-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Java Strings and Hash Codes</title><content type='html'>The question often arises as to how Java can use String values in &lt;a href="http://java.sun.com/docs/books/jls/third_edition/html/statements.html#14.11"&gt;switch/case statements&lt;/a&gt;; e.g.:&lt;br /&gt;&lt;pre class="brush:java"&gt;switch(s) {&lt;br /&gt;    case "Foo": doSomething();     break;&lt;br /&gt;    case "Bar": doSomethingElse(); break;&lt;br /&gt;}&lt;/pre&gt;The short answer is that one can't. In Java (versions before 5), the expression evaluated in the switch statement must be a char, byte, short, or int. With auto-unboxing and the new &lt;a href="http://java.sun.com/docs/books/tutorial/java/javaOO/enum.html"&gt;enum capabilities&lt;/a&gt; of Java 5 and later versions, switch expression may also include Character, Byte, Short, Integer, or enum types. Furthermore, every case expression must be assignable to the same type as what is declared in the switch statement. This means that if your switch statement is an int type, your case statements can be int types, byte types, short types, etc. If, on the other hand, your switch statement is a byte type, the compiler will bark if you try to use an int type in a case expression. In short, however, switch statements with String types (and any type not mentioned above) are simply not available in Java.&lt;br /&gt;&lt;br /&gt;Back to the problem of using String values... Every so often, someone will suggest using the string's hash code (an int value) as the value to use as a  switch. There are a couple problems with this idea. First, the case expressions must be &lt;em&gt;constant&lt;/em&gt;, meaning that the compiler isn't going to accept the result of hashCode() as a valid case. Second, and perhaps a more fundamental issue, string hash codes aren't guaranteed to be unique. Far from it, in fact. The only thing string hash codes guarantee is that strings with different hash codes are guaranteed to be &lt;em&gt;not&lt;/em&gt; equal. &lt;br /&gt;&lt;br /&gt;So, what is an appropriate solution? It all depends on the design, of course. Most likely, using enums would be a fair approach. In his seminal book &lt;a href="http://www.martinfowler.com/books.html#refactoring"&gt;Refactoring&lt;/a&gt;, Martin Fowler recommends looking at &lt;a href="http://www.javaranch.com/campfire/StoryPoly.jsp"&gt;polymorphism&lt;/a&gt; for a more object-oriented design. And if one &lt;em&gt;must&lt;/em&gt; have switchy strings in a Java-ish environment, there is always &lt;a href="http://groovy.codehaus.org/Logical+Branching"&gt;Groovy&lt;/a&gt;...&lt;br /&gt;&lt;br /&gt;~&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-8190435518045088142?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/8190435518045088142/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2007/06/java-strings-and-hash-codes.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/8190435518045088142'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/8190435518045088142'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2007/06/java-strings-and-hash-codes.html' title='Java Strings and Hash Codes'/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-1344819008705421505</id><published>2007-06-21T08:15:00.000-05:00</published><updated>2009-03-17T17:35:44.683-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Final Variables and Anonymous Inner Classes</title><content type='html'>Anonymous inner classes require final variables because of the way they are implemented in Java. An anonymous inner class (AIC) uses local variables by creating a private instance field which holds a copy of the value of the local variable. The inner class isn't actually using the local variable, but a copy. It should be fairly obvious at this point that a "Bad Thing"™ can happen if either the original value or the copied value changes; there will be some unexpected data synchronization problems. In order to prevent this kind of problem, Java requires you to mark local variables that will be used by the AIC as &lt;span style="font-weight:bold;"&gt;final&lt;/span&gt; (i.e., unchangeable). This guarantees that the inner class' copies of local variables will always match the actual values.&lt;br /&gt;&lt;br /&gt;~&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-1344819008705421505?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/1344819008705421505/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2007/06/final-variables-and-anonymous-inner.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/1344819008705421505'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/1344819008705421505'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2007/06/final-variables-and-anonymous-inner.html' title='Final Variables and Anonymous Inner Classes'/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-9164717801505595232</id><published>2007-06-21T08:12:00.001-05:00</published><updated>2007-06-21T08:12:50.007-05:00</updated><title type='text'>The Usual Suspects</title><content type='html'>He burns down the threads they post in and the forums they lurk in, he deletes accounts of recurring trolls. And like *that*...&lt;br /&gt;&lt;br /&gt;...he was gone. &lt;br /&gt;&lt;br /&gt;Underground. &lt;br /&gt;&lt;br /&gt;No one has ever seen him again. He becomes a myth, a spook story that regulars tell their kids at night. If you write "i = i++", Keyser Sunze will get you. &lt;br /&gt;&lt;br /&gt;And nobody really ever believes...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-9164717801505595232?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/9164717801505595232/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2007/06/usual-suspects.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/9164717801505595232'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/9164717801505595232'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2007/06/usual-suspects.html' title='The Usual Suspects'/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-37485872.post-116318590962378317</id><published>2006-11-10T13:10:00.000-06:00</published><updated>2006-11-10T13:14:43.460-06:00</updated><title type='text'>Links</title><content type='html'>&lt;a href="http://java.sun.com/docs/books/jls/third_edition/html/j3TOC.html"&gt;The Java Language Specification&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/37485872-116318590962378317?l=yawmark.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yawmark.blogspot.com/feeds/116318590962378317/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://yawmark.blogspot.com/2006/11/links.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/116318590962378317'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/37485872/posts/default/116318590962378317'/><link rel='alternate' type='text/html' href='http://yawmark.blogspot.com/2006/11/links.html' title='Links'/><author><name>yawmark</name><uri>http://www.blogger.com/profile/08415930998333586813</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://photos1.blogger.com/blogger/6402/529/320/s3.jpg'/></author><thr:total>0</thr:total></entry></feed>
