<?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-18440957</id><updated>2011-11-24T14:17:21.679-05:00</updated><category term='Browsers'/><category term='Geometry'/><category term='Reality'/><category term='Agile'/><category term='Musings'/><category term='XP'/><category term='Evil'/><category term='Ruby'/><category term='Programming'/><category term='Papers'/><category term='Web'/><category term='Rails'/><title type='text'>def..end</title><subtitle type='html'>Ruby, Rails, and a smattering of other cruft from the back of Dave's mind.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>74</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-18440957.post-7124533095336217800</id><published>2011-02-21T12:48:00.003-05:00</published><updated>2011-02-21T12:54:55.417-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Reality'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='Rails'/><title type='text'>Laissez les bons temps rouler!</title><summary type='text'>Starting on the day before Mardi Gras, I will be joining EdgeCase working in their Cincinnati office. To me, a much bigger party than they'll be having in the French Quarter!This is a phenomenal opportunity, working alongside the genius of Jim Weirich and Scott Barron every day, and collocated with the Gaslight Software crew. (Let me tell you, this is a really smart room.)Many thanks to Joe, Ken,</summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/7124533095336217800/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=7124533095336217800' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/7124533095336217800'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/7124533095336217800'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2011/02/laissez-les-bons-temps-rouler.html' title='Laissez les bons temps rouler!'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-3525136639401819256</id><published>2010-02-14T08:11:00.002-05:00</published><updated>2010-02-14T08:59:30.172-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Reality'/><category scheme='http://www.blogger.com/atom/ns#' term='Evil'/><category scheme='http://www.blogger.com/atom/ns#' term='Browsers'/><title type='text'>Prototype and Witch's Brew</title><summary type='text'>When things work differently in one part of a package than they do in another - for no apparently good reason - programming indigestion may occur. When you beat your head against the code for too long trying to figure out why things are screwing up, big headaches are sure to come. The cause of my current indigestion and headache? Element.insert in prototype.I have some javascript code that </summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/3525136639401819256/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=3525136639401819256' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/3525136639401819256'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/3525136639401819256'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2010/02/prototype-and-witchs-brew.html' title='Prototype and Witch&apos;s Brew'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-3580022396125759241</id><published>2009-09-08T09:14:00.002-04:00</published><updated>2009-09-08T10:12:02.945-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><title type='text'>A little Hash goodness</title><summary type='text'>Some quick refactoring this weekend had me throwing together some tidbits.module Enumerable  # return Hash of enumeration to yielded values  def collect_hash hash={}    inject(hash) {|h,e| h[e] = block_given? ? yield(e) : nil; h }  end  # return Hash of enumeration to non-nil yielded values  def select_hash hash={}, &amp;block    collect_hash(hash,&amp;block).compact  endendclass Hash  # return Hash with</summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/3580022396125759241/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=3580022396125759241' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/3580022396125759241'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/3580022396125759241'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2009/09/little-hash-goodness.html' title='A little Hash goodness'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-4824326187400589492</id><published>2009-08-27T13:12:00.004-04:00</published><updated>2009-08-28T10:47:47.568-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Rails'/><title type='text'>The Missing Link in RJS Chaining</title><summary type='text'>One of the things that make Ruby and Rails my respective current language and web framework of choice is the collective ingenuity that has made building things easy. These folks have thought of everything, gosh darn it, and I get to use it. A good day is when I get something working, and with Ruby and Rails I have a lot of those days.Imagine my dismay however, when on a recent project I had the </summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/4824326187400589492/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=4824326187400589492' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/4824326187400589492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/4824326187400589492'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2009/08/missing-link-in-rjs-chaining.html' title='The Missing Link in RJS Chaining'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-442759465768155696</id><published>2009-03-05T08:06:00.006-05:00</published><updated>2009-03-06T11:07:11.882-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Evil'/><category scheme='http://www.blogger.com/atom/ns#' term='Browsers'/><category scheme='http://www.blogger.com/atom/ns#' term='Rails'/><title type='text'>Why Can't We All Just Get Along?</title><summary type='text'>While building a browser-based graphical editor in Rails for a client, I ran across an cross-technology compatibility problem. The reason was not immediately apparent and caused me quite a bit of head-scratching. After sleeping on it for a night, I finally figured it out and found a workaround.In the graphical editing app that I'm building, one of the things a user does is create selections of </summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/442759465768155696/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=442759465768155696' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/442759465768155696'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/442759465768155696'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2009/03/why-cant-we-all-just-get-along.html' title='Why Can&apos;t We All Just Get Along?'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-5473168025222612337</id><published>2008-11-26T09:54:00.003-05:00</published><updated>2008-11-26T11:24:58.413-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Rails'/><title type='text'>Users, Roles, Rights and Sights</title><summary type='text'>Chad Fowler's Rails Recipes book lays out authorization as the interrogation of the many-to-many connections between users and roles, and between roles and rights, a right being a named controller-action pair. The many-to-many relationships are established using roles_users and rights_roles tables in the database.This indirection makes bulk assignment of rights easy, simply by assigning roles to </summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/5473168025222612337/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=5473168025222612337' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/5473168025222612337'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/5473168025222612337'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2008/11/users-roles-rights-and-sights.html' title='Users, Roles, Rights and Sights'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-211666447672311682</id><published>2008-10-15T06:57:00.002-04:00</published><updated>2008-10-15T13:03:15.274-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='Rails'/><title type='text'>Enhancements to Railroad</title><summary type='text'>A picture is worth a thousand words, and is certainly easier to talk about than reading a bunch of code. At least for me.On a recent Rails project two dozen models and sixty associations were needed to drive the application. A medium sized effort. However, it's tough to talk users through the complexity when the need arises, even when you're just dealing with a small chunk. After drawing circles </summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/211666447672311682/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=211666447672311682' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/211666447672311682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/211666447672311682'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2008/10/enhancements-to-railroad.html' title='Enhancements to Railroad'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-8244844044226655167</id><published>2008-10-07T07:39:00.003-04:00</published><updated>2008-10-07T07:44:27.597-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reality'/><category scheme='http://www.blogger.com/atom/ns#' term='Musings'/><title type='text'>Another Tuesday Morning Zen Moment</title><summary type='text'>Wrangling an older dog and a new puppy has brought a certain form of enlightenment to me. I can express it best as a koan.Student: Master, what is the sound of one dog barking?Master: Nothing like the sound of two dogs barking.</summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/8244844044226655167/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=8244844044226655167' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/8244844044226655167'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/8244844044226655167'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2008/10/another-tuesday-morning-zen-moment.html' title='Another Tuesday Morning Zen Moment'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-7701560978862874</id><published>2008-09-23T13:48:00.007-04:00</published><updated>2008-09-23T14:54:51.434-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Rails'/><title type='text'>Installing Rails Plugins from Local Sources</title><summary type='text'>I'm usually reluctant to go change "big things", almost always prefering to work around any issues I encounter. On the rare occaision though, I find I really must make changes or I'd forget what I did and struggle with it again later.The script/plugin install command in Rails is a wonderful thing. It fetches code from repositories (like subversion or github) and installs it into your Rails </summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/7701560978862874/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=7701560978862874' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/7701560978862874'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/7701560978862874'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2008/09/installing-rails-plugins-from-local.html' title='Installing Rails Plugins from Local Sources'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-4736720270002587561</id><published>2008-08-15T06:39:00.000-04:00</published><updated>2008-08-15T11:24:37.053-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='Musings'/><category scheme='http://www.blogger.com/atom/ns#' term='Browsers'/><category scheme='http://www.blogger.com/atom/ns#' term='Rails'/><title type='text'>Rails, Prototype, Ajax and Forms Walk into a Bar...</title><summary type='text'>Rails is my friend. Prototype is my friend's foreign friend. Ajax is my child-prodigy friend. Forms is my long-time blue-collar friend. Submit buttons are pieces of currency, among many other Internet coins and bills. Recently my friends and I got together at the local web bar to have a beer.Rails, Prototype and Ajax had been hanging out together lately, and while it seems they knew Forms fairly </summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/4736720270002587561/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=4736720270002587561' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/4736720270002587561'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/4736720270002587561'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2008/08/rails-prototype-ajax-and-forms-walk.html' title='Rails, Prototype, Ajax and Forms Walk into a Bar...'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-3201224725901681995</id><published>2008-07-16T13:24:00.004-04:00</published><updated>2008-07-16T15:00:01.042-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='Rails'/><title type='text'>Running Fast and the Demise of Dynamic Scaffolding in Rails</title><summary type='text'>Sometimes things just get away from you. You get distracted, turn your head, and then when you look back everything's changed."In this place it takes all the running you can do, to keep in the same place."- Red Queen to Alice in Lewis Carroll's Through the Looking GlassAdmittedly I haven't been on the Rails edge for a while. My day job keeps me in Java, and my own work has been more focused on </summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/3201224725901681995/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=3201224725901681995' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/3201224725901681995'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/3201224725901681995'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2008/07/running-fast-and-demise-of-dynamic.html' title='Running Fast and the Demise of Dynamic Scaffolding in Rails'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-1447677924539166601</id><published>2008-06-23T08:50:00.004-04:00</published><updated>2009-08-27T15:57:48.367-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Rails'/><title type='text'>A Little Easier EasyLogging</title><summary type='text'>In need of easier access to thresholding, I added some more methods:one to pull the current threshold level,five to interrogate the current threshold with respect to a given level, andfive to set the current threshold levelas they relate to the default logger. These are available as mixed-in methods on the EasyLog Module and class methods of EasyLogger class.Additionally, I added special support </summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/1447677924539166601/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=1447677924539166601' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/1447677924539166601'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/1447677924539166601'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2008/06/little-easier-easylogging.html' title='A Little Easier EasyLogging'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-1475026930957005495</id><published>2008-06-13T11:03:00.004-04:00</published><updated>2008-06-13T11:22:24.540-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Papers'/><title type='text'>Creating Alternate Ruby Objects</title><summary type='text'>One of the things I've found slightly frustrating about Ruby is the new method. Nearly twenty years ago I was writing code in Objective-C on NeXT, which had explicit allocation and initialization:   Object foo = [[Foo alloc] init]Using this invocation, foo could be any sort of Object, and init could return any sort of Object. Ruby (and most other OO languages, for that matter) combine the </summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/1475026930957005495/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=1475026930957005495' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/1475026930957005495'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/1475026930957005495'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2008/06/creating-alternate-ruby-objects.html' title='Creating Alternate Ruby Objects'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-6356812456385072762</id><published>2008-06-09T13:23:00.004-04:00</published><updated>2008-06-09T13:59:47.989-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Reality'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><title type='text'>The Joy of Testing with EasyLog</title><summary type='text'>In a previous entry I talked about my EasyLogging infrastructure. I'm even happier about it now. I ended up writing some tests and code over the weekend and found myself wanting to track values during my development iterations. With my log_debug statements in the code I simply needed to establish the logging context in the test case to see what my value flows looked like.At the beginning of the </summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/6356812456385072762/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=6356812456385072762' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/6356812456385072762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/6356812456385072762'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2008/06/joy-of-testing-with-easylog.html' title='The Joy of Testing with EasyLog'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-207988178449000356</id><published>2008-06-09T10:51:00.008-04:00</published><updated>2008-06-09T11:20:02.365-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Reality'/><category scheme='http://www.blogger.com/atom/ns#' term='Evil'/><title type='text'>Another Ruby Inconsistency</title><summary type='text'>Maybe it's just me, but I keep finding interpreter issues underlying my code. The latest has to do with accessing the file system. In the context of unit testing,require 'test/unit'require 'fileutils'class TC_File_Access &lt; Test::Unit::TestCase  def setup    rm_r "temp" if File.exist? "temp"  end  def test_non_exisitent_intermediate    mkdir "temp"    touch "temp/foo"    assert_raise(Errno::</summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/207988178449000356/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=207988178449000356' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/207988178449000356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/207988178449000356'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2008/06/another-ruby-inconsistency.html' title='Another Ruby Inconsistency'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-3103899157519551930</id><published>2008-05-29T16:20:00.004-04:00</published><updated>2008-05-29T16:38:18.474-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Papers'/><title type='text'>Easy Logging For Ruby</title><summary type='text'>In the spirit of invisible infrastructure, I built some framework around the Ruby Logger class and made it more succinct, more ubiquitous, and easier to use. The results are discussed in Easy Logging For Ruby, a paper describing the motivation and code that allows a developer to add logging to Ruby code with virtually no effort.The code is available Chunks of Ruby Infrastructure project as part </summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/3103899157519551930/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=3103899157519551930' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/3103899157519551930'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/3103899157519551930'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2008/05/easy-logging-for-ruby.html' title='Easy Logging For Ruby'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-8595341676700717494</id><published>2008-05-20T17:04:00.007-04:00</published><updated>2008-05-22T00:40:15.450-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Reality'/><category scheme='http://www.blogger.com/atom/ns#' term='Evil'/><title type='text'>How Accurate Is Your Clock?</title><summary type='text'>I bumped my head against another one. While Ruby is not equal in all environments, I at least want to control the difference wherever possible.When you do a Time.now, you'll get something like  Tue May 20 17:08:21 -400 2008Lets say that you're formating that time for a log message though...  Time.now.strftime "%m/%d/%y %H:%M:%S"which gives  05/20/08 17:08:21Great, except that you'd like subsecond</summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/8595341676700717494/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=8595341676700717494' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/8595341676700717494'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/8595341676700717494'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2008/05/how-accurate-is-your-clock.html' title='How Accurate Is Your Clock?'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-4027189701854922148</id><published>2008-05-16T14:40:00.006-04:00</published><updated>2008-05-16T15:30:13.006-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><title type='text'>In the Spirit of Brevity, class_attr Methods</title><summary type='text'>Ruby is the language for coding brevity with elegance. The more you "get" Ruby, the less code you end up writing. One of the ways you do this is to just metacode the things you find yourself doing a lot and become more productive. And that's a beautiful thing! Recently, I've found myself writing and rewriting class attribute accessors, likeclass Foo  def self.bar    @@bar  end  def self.bar=(bar)</summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/4027189701854922148/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=4027189701854922148' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/4027189701854922148'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/4027189701854922148'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2008/05/in-spirit-of-brevity-classattr-methods.html' title='In the Spirit of Brevity, class_attr Methods'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-6952091088874452220</id><published>2008-05-11T09:51:00.004-04:00</published><updated>2008-05-14T08:42:15.927-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Reality'/><category scheme='http://www.blogger.com/atom/ns#' term='Evil'/><title type='text'>Life in the Windows-Bizarro Universe</title><summary type='text'>You know what my biggest coding-rant about Windows is? Drive designators. They just suck.Back in the pre-PC days when Unix was the new kid on the block, the notion of path specifications became popular. It was a big change from Dataset declarations in JCL; directories as files was a concept that made sense. It caught on quickly and everyone wanted to do it the Unix way. (One of my first projects </summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/6952091088874452220/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=6952091088874452220' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/6952091088874452220'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/6952091088874452220'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2008/05/life-in-windows-bizarro-universe.html' title='Life in the Windows-Bizarro Universe'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-2122097355443784639</id><published>2008-05-08T06:22:00.004-04:00</published><updated>2008-05-16T15:36:41.493-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Browsers'/><title type='text'>Opening a URL in a Viewer from Ruby</title><summary type='text'>While web apps are all the rage, what with the browser being ubiquitous and everything, there are still some features that don't scale - usually stuff that requires a lot of high-bandwidth data getting manipulated and displayed. Sorry, but interactive data-heavy apps just don't yet run well enough on the web to make the jump. For other things, yes; but not for these.Unfortunately, applications </summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/2122097355443784639/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=2122097355443784639' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/2122097355443784639'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/2122097355443784639'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2008/04/opening-url-in-viewer-from-ruby.html' title='Opening a URL in a Viewer from Ruby'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-87902431498269903</id><published>2008-05-05T13:41:00.006-04:00</published><updated>2008-05-05T16:11:07.388-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><title type='text'>Exploratory Surgery and Unit Testing</title><summary type='text'>Test Driven Development is one of those milestones in your development career that once reached, seldom causes you to look back. When writing unit tests before you write the code to pass them becomes second nature, and re-running the unit tests on each change becomes part of the development process, quality simply mushrooms.But the Church of TDD has several orthodoxies. One sect insists that only</summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/87902431498269903/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=87902431498269903' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/87902431498269903'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/87902431498269903'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2008/05/exploratory-surgery-and-unit-testing.html' title='Exploratory Surgery and Unit Testing'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-659590923052060196</id><published>2008-04-29T06:37:00.006-04:00</published><updated>2008-04-29T08:06:27.936-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><title type='text'>An Optional Require for Ruby</title><summary type='text'>In the fine balance between code organization and keeping the system quiet, I like to err on the side of silence. I just don't like warnings and noise coming from the compiler and runtime, and will sometimes code around the squeaky parts of a system so I don't have to listen to the racket. Despite the messiness of my physical reality, I like to keep my virtual reality well-organized and clean. </summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/659590923052060196/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=659590923052060196' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/659590923052060196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/659590923052060196'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2008/04/optional-require-for-ruby.html' title='An Optional Require for Ruby'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-5664020651328005957</id><published>2008-04-24T10:41:00.004-04:00</published><updated>2008-04-24T11:14:59.380-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Musings'/><title type='text'>Future Science: Augmented Wetware Processor</title><summary type='text'>During a recent hallway conversation a friend and I were considering heads up displays in aircraft and automobiles, and the difficulties in doing the same things with spectacles. A lot of work has already been done in these areas and some remarkable things have been built that add information to the optical channel. Since the signal-processing bandwidth of the eyes is the highest of our senses, </summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/5664020651328005957/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=5664020651328005957' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/5664020651328005957'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/5664020651328005957'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2008/04/future-science-augmented-wetware.html' title='Future Science: Augmented Wetware Processor'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-8742331263468019764</id><published>2008-04-15T13:37:00.003-04:00</published><updated>2008-04-15T14:11:25.121-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Reality'/><category scheme='http://www.blogger.com/atom/ns#' term='Musings'/><title type='text'>Mulling and Pondering...</title><summary type='text'>It's happening again.I'm turning another corner in my software development life only to find myself revisiting some of the same issues I've resolved before. Whenever this happens I learn again that though my instincts were good, the solutions I came up with need to be cleansed of my habits from that time. Interestingly, what comes out of this process is something a little simpler, a little more </summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/8742331263468019764/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=8742331263468019764' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/8742331263468019764'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/8742331263468019764'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2008/04/mulling-and-pondering.html' title='Mulling and Pondering...'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-3310016325501135736</id><published>2008-03-06T13:41:00.005-05:00</published><updated>2008-03-06T16:47:32.551-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Papers'/><title type='text'>The Units Pipe Dream...</title><summary type='text'>Much of what's driven my off-off-hours development over the last year is the architecture, design and coding of a Units Framework for Ruby. While there are a few out there, this one is different - predicated on a NumericWithUnits, units are added to Numerics transparently. They act exactly like Numerics without units, but assert their types when appropriate and handle conversions automatically, </summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/3310016325501135736/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=3310016325501135736' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/3310016325501135736'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/3310016325501135736'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2008/03/units-pipe-dream.html' title='The Units Pipe Dream...'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-6836324386618299282</id><published>2008-02-24T11:11:00.006-05:00</published><updated>2008-02-24T12:37:41.737-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Musings'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><title type='text'>Cleverness</title><summary type='text'>In some recent writing, I once again was thinking about how I'd get something done. I realized that in this instance it was time for a clever solution rather than something more rigorous or systematic. So I popped out some code that did the job quickly, with a dash of elegance and bravado.Afterwards, it got me thinking that one of the greatest compliments I've gotten when I've done this sort of </summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/6836324386618299282/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=6836324386618299282' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/6836324386618299282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/6836324386618299282'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2008/02/cleverness_24.html' title='Cleverness'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-4195694574257356907</id><published>2008-01-06T12:16:00.000-05:00</published><updated>2008-01-09T16:37:35.109-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reality'/><category scheme='http://www.blogger.com/atom/ns#' term='Evil'/><title type='text'>Screaming...</title><summary type='text'>About this time last year I got a Mac and have been absolutely loving it. I cut my teeth on Unix back in the 70s and to me, Apple got it completely right.This morning I logged onto a Windows machine I hadn't touched in nearly a year.While I use Windows to do development at work, I'm usually in Eclipse - well-insulated from the OS. However, this brief taste of what I left behind, actually getting </summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/4195694574257356907/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=4195694574257356907' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/4195694574257356907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/4195694574257356907'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2008/01/screaming.html' title='Screaming...'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-3579746195604559231</id><published>2007-11-29T13:44:00.000-05:00</published><updated>2007-11-29T13:53:31.391-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Reality'/><category scheme='http://www.blogger.com/atom/ns#' term='Evil'/><title type='text'>Arrg...</title><summary type='text'>Jump onto windows. Go into the irb.irb(main):001:0&gt; puts 0.000011.0e-005Now, get on a mac. Go into the irb.irb(main):001:0&gt; puts 0.000011.0e-05Three digit versus two digit defaults for exponents. I hate sounding like a hobgoblin, but I really want the same results on different platforms without jumping through extra hoops.Arrg.</summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/3579746195604559231/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=3579746195604559231' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/3579746195604559231'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/3579746195604559231'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2007/11/arrg.html' title='Arrg...'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-4176471041846360801</id><published>2007-11-08T13:32:00.000-05:00</published><updated>2007-11-29T13:52:11.194-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reality'/><title type='text'>Transcience and Tragedy</title><summary type='text'>It saddens me deeply to be reminded of the transcience of life; now in the form imminent demise of my friend and business partner of seven years, Wendel R. Wendel, from Creutzfeldt-Jakob Disease.The disease is a human version of mad-cow, killing brain cells with an infectious protein that catalyzes healthy proteins into copies of itself at an exponential rate. Because it's not water-soluble like </summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/4176471041846360801/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=4176471041846360801' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/4176471041846360801'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/4176471041846360801'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2007/11/transcience-and-tragedy.html' title='Transcience and Tragedy'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-4042165262300423516</id><published>2007-10-09T06:17:00.000-04:00</published><updated>2007-10-09T06:26:08.597-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reality'/><category scheme='http://www.blogger.com/atom/ns#' term='Musings'/><title type='text'>TechnoSmiles</title><summary type='text'>Suddenly, from the depths of your mind, up bubbles a childhood memory... a snippet of a song lyric - just a few words and a fragment of a tune. An online search, a glance at few entries to get the name of the song, a buzz over to a music repository, and a double click. Thirty-five years melt away as you listen.We live in the best of times: we still have the mysteries of the past, but now we have </summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/4042165262300423516/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=4042165262300423516' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/4042165262300423516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/4042165262300423516'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2007/10/technosmiles.html' title='TechnoSmiles'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-7041357465677274596</id><published>2007-08-04T15:04:00.000-04:00</published><updated>2007-08-04T17:09:03.270-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reality'/><title type='text'>Reverie of an Aging Programmer</title><summary type='text'>As I find myself writing on a Saturday afternoon with my 48th-an-a-half birthday approaching, having just started working at a new client this week, and with my wife off on a weekend sabbatical, I seem to be in a reflective mood.I've spent a lot of time doing software development.I've been doing it so long that it's like music to me now. I've written several software symphonies, many programming </summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/7041357465677274596/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=7041357465677274596' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/7041357465677274596'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/7041357465677274596'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2007/08/reverie-of-aging-programmer.html' title='Reverie of an Aging Programmer'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-1540023757803607603</id><published>2007-07-29T08:42:00.000-04:00</published><updated>2007-07-29T08:58:05.197-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Reality'/><category scheme='http://www.blogger.com/atom/ns#' term='Evil'/><title type='text'>Teeny Weeny Little Pains</title><summary type='text'>While writing on some Ruby code, I hit a snag. I'm developing some infrastructure for engineering programming and was curious about values not coming out exactly right.Having a few minutes, I got into irb and entered     (1..100).select{ |i| 10**-i - 10.0**-i != 0.0 }.join " "Imagine my surprise when I got back    21 23 24 25 26 28 29 30 32 34 39 42 45 49 50 54 56 60 63 66 72 75 81 82 84 86 88 91</summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/1540023757803607603/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=1540023757803607603' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/1540023757803607603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/1540023757803607603'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2007/07/teeny-weeny-little-pains.html' title='Teeny Weeny Little Pains'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-2503435287355840641</id><published>2007-06-19T14:04:00.000-04:00</published><updated>2007-06-19T15:29:19.056-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Musings'/><title type='text'>MetaThought</title><summary type='text'>Curiously, I find myself being driven to devise common ways to abstract context in my infrastructures. Initially it was an afterthough, but now it's become a metathought, becoming an approach rather than an artifact. I'm wondering now if it has more to do with the problems I'm working on or the way I'm going about coding their solutions. How far can abstracting context go?From a practical </summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/2503435287355840641/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=2503435287355840641' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/2503435287355840641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/2503435287355840641'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2007/06/metathought.html' title='MetaThought'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-2404241667947945210</id><published>2007-05-23T06:19:00.000-04:00</published><updated>2007-05-23T06:58:38.727-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><title type='text'>The Other Side of the MethodicHash</title><summary type='text'>It surprised me a little. Is my tendency to complete finally starting to disappear, lost to the quick turn-around time of agile - the build-only-what-you-need mentality?When I looked over the MethodicHash, I missed a simple addition. I should have done the assignment side as well. Since I wasn't using it, I didn't write it. But now in retrospect, for completeness:  class MethodicHash &lt; Hash    </summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/2404241667947945210/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=2404241667947945210' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/2404241667947945210'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/2404241667947945210'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2007/05/other-side-of-methodichash.html' title='The Other Side of the MethodicHash'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-9134089296283181746</id><published>2007-05-22T18:22:00.000-04:00</published><updated>2007-05-22T19:50:34.081-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reality'/><category scheme='http://www.blogger.com/atom/ns#' term='Geometry'/><title type='text'>Geodesic Dome Sighting</title><summary type='text'>Daniel Ellingsen of Plug In ICA worked with his organization and produced "Wildflowers of Manitoba" using TekCAD, my 3D CAD system. The exhibit features a partially-covered 2-frequency icosahedral geodesic built with steel pipe and carriage bolts. The art piece is currently on a short tour in Canada at the Montreal Biennale this May and June at the Parisian Laundry Gallery."Impressive creation </summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/9134089296283181746/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=9134089296283181746' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/9134089296283181746'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/9134089296283181746'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2007/05/geodesic-dome-sighting.html' title='Geodesic Dome Sighting'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-4673368752247848523</id><published>2007-05-22T16:26:00.000-04:00</published><updated>2007-05-23T07:00:03.497-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><title type='text'>The MethodicHash Class</title><summary type='text'>Ruby is just a delight to work with. I really need to write a book about how easy it is to create new dialectic constructs that improve the way you can write your code using the language. Once upon a time I was chided for the heavy use of macros in my C and C++ code; in Ruby, you can build the language structures dynamically and it just feels so good!Today I put together a little magic on the </summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/4673368752247848523/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=4673368752247848523' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/4673368752247848523'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/4673368752247848523'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2007/05/methodichash-class.html' title='The MethodicHash Class'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-3811682153253392408</id><published>2007-05-22T09:39:00.000-04:00</published><updated>2007-05-22T09:53:08.491-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Geometry'/><title type='text'>Some Ruby 3D Math Classes</title><summary type='text'>I converted some of my TekCAD 3D math legacy into Ruby and released a few classes as the eymiha_math3-0.1.0 gem on RubyForge as part of my "chunks of ruby infrastructure" project.Included are:Point3 - a cartesian 3D point, with lots of computational methodsPoint3c - a cyclindical 3D pointPoint3s - a spherical 3D pointEnvelope3 - an envelope useful for generating 3D extentsQuaternion - a </summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/3811682153253392408/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=3811682153253392408' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/3811682153253392408'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/3811682153253392408'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2007/05/some-ruby-3d-math-classes.html' title='Some Ruby 3D Math Classes'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-5915480880019059925</id><published>2007-05-16T20:38:00.000-04:00</published><updated>2007-05-16T22:47:42.377-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Papers'/><title type='text'>Handling Forward Reference in Ruby</title><summary type='text'>While doing some DSL work, I found myself with forward referencing problems. I needed to be able to create structures that used information that wasn't yet available. I took a step back and designed a forward reference capture and resolution framework that let me keep my DSL work clean and didn't choke when things are used before they're defined.I wrote a description of the system and uploaded </summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/5915480880019059925/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=5915480880019059925' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/5915480880019059925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/5915480880019059925'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2007/05/handling-forward-reference-in-ruby.html' title='Handling Forward Reference in Ruby'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-5395581544404816332</id><published>2007-04-05T14:40:00.000-04:00</published><updated>2007-05-16T22:52:09.933-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Musings'/><title type='text'>Understands and Groks in Ruby</title><summary type='text'>When I fashioned an approximately_equals method for Numeric in Ruby, I missed something. I want to not get epsilon (the maximum difference to still be considered equal) from Numeric if a different epsilon can be found in a derived class closer to the instance on the inheritence chain. While I'm probably going to do this through an include, it did turn me on to a chain of mail that was talking </summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/5395581544404816332/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=5395581544404816332' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/5395581544404816332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/5395581544404816332'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2007/04/understands-and-groks-in-ruby.html' title='Understands and Groks in Ruby'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-5831447364018242763</id><published>2007-04-05T12:58:00.000-04:00</published><updated>2007-05-16T22:52:47.210-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Papers'/><title type='text'>Gem_raker - A Rake-based Rubygem for Developing Rubygems</title><summary type='text'>While turning some of my old C, C++ and Java library code into Rubygems, I found I was creating an unmanageable mess... changes kept propagating and I needed an easy way to automate testing and installing my locally developed gems. The result is gem_raker, a clean rake-based assembly line for gems.You can take a look at a description of the system or download it and see if it does what you need.</summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/5831447364018242763/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=5831447364018242763' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/5831447364018242763'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/5831447364018242763'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2007/04/gemraker-rake-based-rubygem-for.html' title='Gem_raker - A Rake-based Rubygem for Developing Rubygems'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-3540025559893172055</id><published>2007-03-15T13:33:00.000-04:00</published><updated>2007-03-15T23:44:31.057-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><title type='text'>All Things Being Equal...</title><summary type='text'>Ruby, like many other languages, can test for equality. Like it's contemporaries, the language's equality operation returns true if two things are equal and false if not. For instance, when testing two real numbers in Ruby, equality acts as you'd expect  5.0/4 == 1.25                            =&gt; true  5.0/4 == 1.24                            =&gt; false and works appropriately for other types as </summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/3540025559893172055/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=3540025559893172055' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/3540025559893172055'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/3540025559893172055'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2007/03/all-things-being-equal.html' title='All Things Being Equal...'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-1411044465795049656</id><published>2007-03-09T12:15:00.000-05:00</published><updated>2007-03-10T12:45:37.152-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reality'/><category scheme='http://www.blogger.com/atom/ns#' term='Musings'/><title type='text'>Closer to Yottabytes!</title><summary type='text'>In "Digital Data will Increase Sixfold by 2010" (http://www.channelregister.co.uk/2007/03/08/digital_data_explosion), O'Brien claims that it is suggested 988 Billion Megabytes - almost one Zettabyte - will be in play by the end of the decade. Of course, much of this data won't be unique, but that's still an awful lot of ones and zeros.I'm wondering how long it'll be before we have a million times</summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/1411044465795049656/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=1411044465795049656' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/1411044465795049656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/1411044465795049656'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2007/03/closer-to-yottabytes.html' title='Closer to Yottabytes!'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-598302811818755548</id><published>2007-02-15T14:38:00.000-05:00</published><updated>2007-02-15T14:48:41.552-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reality'/><category scheme='http://www.blogger.com/atom/ns#' term='Evil'/><title type='text'>Jet Shoes, Flying Cars, and Meals-in-a-Pill Dept.</title><summary type='text'>By now why aren't we all living in weatherproofed domes so it never happens that a neighbor's huge pine tree gets coated with ice in a big winter storm and a branch rips off and lands on your electric and cable wires that extend across the street and knocks out your power for three days or more and you have no light or heat or connectivity and have to find somewhere else to sleep so you don't </summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/598302811818755548/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=598302811818755548' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/598302811818755548'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/598302811818755548'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2007/02/jet-shoes-flying-cars-and-meals-in-pill.html' title='Jet Shoes, Flying Cars, and Meals-in-a-Pill Dept.'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-116553354881060511</id><published>2006-12-07T18:03:00.000-05:00</published><updated>2007-01-08T09:23:32.042-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XP'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><title type='text'>Very Proud To Use XP Am I</title><summary type='text'>The XPJUG XP-Fiesta Official Song - a foreign musical interpretation of a software development methodology   http://www.youtube.com/watch?v=zpw8h4OGNxg"Dear XP" - Samurai KatamarisI realized for the first time   the true strength of human collaboration.Two chairs next to each other   but one computer together   watching flowing clouds   and the source code.XP, Dear XPOn the wall   we remember the</summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/116553354881060511/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=116553354881060511' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/116553354881060511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/116553354881060511'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2006/12/very-proud-to-use-xp-am-i.html' title='Very Proud To Use XP Am I'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-116414276818135016</id><published>2006-11-21T15:49:00.000-05:00</published><updated>2007-01-08T09:24:24.225-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reality'/><category scheme='http://www.blogger.com/atom/ns#' term='Musings'/><title type='text'>More People Everyday...</title><summary type='text'>Wow. When I was back in grade school, the population statistics I remember were that the US population was 250 million, and the world population was 4 billion. Big numbers, and I thought, if I could just get everyone to send me a dollar...Ah, the dreams of youth.A quick trip to the population clocks at http://www.census.gov/main/www/popclock.html took me by surprise. The US population has just </summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/116414276818135016/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=116414276818135016' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/116414276818135016'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/116414276818135016'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2006/11/more-people-everyday.html' title='More People Everyday...'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-116248977485197565</id><published>2006-11-02T11:54:00.000-05:00</published><updated>2007-01-08T09:37:37.447-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><title type='text'>Lame Duck Typing</title><summary type='text'>"If it walks like a duck and quacks like a duck, it must be a duck," while true, sometimes this must be combined with another epigram to arrive at what Ruby gives you:"If it walks into a forest and quacks but there's nobody there to hear it, is it a duck?"The problem isn't with duck typing, per se, but in testing the duckiness of an object. Consider a foo object that has a bar method, and a </summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/116248977485197565/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=116248977485197565' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/116248977485197565'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/116248977485197565'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2006/11/lame-duck-typing.html' title='Lame Duck Typing'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-116163469443633111</id><published>2006-10-23T15:58:00.000-04:00</published><updated>2007-01-08T09:25:36.515-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><title type='text'>From Knismesis to Gargalesis - The Fine Art of Tickling</title><summary type='text'>I have found myself with the need to send notifications, or tickle, certain entities when an expected event has not taken place.In asynchronous worlds, things can happen whenever they happen; in synchronous worlds, things proceed in lockstep. The real world embodies both extremes, and all the places inbetween. Tickling is predicated on an inverse relationship between asynchronicity and expected </summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/116163469443633111/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=116163469443633111' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/116163469443633111'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/116163469443633111'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2006/10/from-knismesis-to-gargalesis-fine-art.html' title='From Knismesis to Gargalesis - The Fine Art of Tickling'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-115877335139912623</id><published>2006-09-20T12:57:00.000-04:00</published><updated>2007-01-08T09:38:43.380-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Reality'/><category scheme='http://www.blogger.com/atom/ns#' term='Browsers'/><title type='text'>Growing Pains and Browsers</title><summary type='text'>Why can't the browser writers make html and the DOM behave according to a standard? By now you'd expect standardization, but no, they apparently still don't get it. Just this morning I've butted my head against more three differences between IE and Firefox!1 - Table Cells. IE formats table cells painfully. After an input text field, a break pushes a large vertical space while Firefox doesn't. To </summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/115877335139912623/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=115877335139912623' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/115877335139912623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/115877335139912623'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2006/09/growing-pains-and-browsers.html' title='Growing Pains and Browsers'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-115868441992196629</id><published>2006-09-19T12:39:00.000-04:00</published><updated>2007-05-16T22:49:07.741-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Papers'/><category scheme='http://www.blogger.com/atom/ns#' term='Rails'/><title type='text'>Establishing Session Context</title><summary type='text'>I'm a big fan of context sensitivity. I'm also a big fan of Rails. Recently the two topics crossed paths in the guise of contextual overlap in the session of a large Rails application I've been building, and I decided to get rid of the headache. I've built some code to establish disjoint contexts in the session, transparent to normal Rails development.Feel free to take a look and comment...</summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/115868441992196629/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=115868441992196629' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/115868441992196629'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/115868441992196629'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2006/09/establishing-session-context.html' title='Establishing Session Context'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-115784008604665138</id><published>2006-09-09T17:07:00.000-04:00</published><updated>2007-01-08T09:40:39.161-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reality'/><category scheme='http://www.blogger.com/atom/ns#' term='Rails'/><title type='text'>Domain Orientation and Rails</title><summary type='text'>Over the last two years I've switched my development target to web apps. Though it started earlier than this, while I was still building TekCAD I was purposefully writing Java and Swing to earn my rent. The transition to full-time J2EE work that I made was good, but when I started doing Ruby and Rails my application-building days got much better.Ruby and Rails are just vehicles, however. While </summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/115784008604665138/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=115784008604665138' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/115784008604665138'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/115784008604665138'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2006/09/domain-orientation-and-rails.html' title='Domain Orientation and Rails'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-115711342301670806</id><published>2006-09-01T07:59:00.000-04:00</published><updated>2007-01-08T09:47:25.452-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reality'/><category scheme='http://www.blogger.com/atom/ns#' term='Evil'/><title type='text'>Living through Worry</title><summary type='text'>This is my twentieth consecutive day on the bench. While there, I'm writing a kick-ass time-tracking system on rails and creating proposals. However, I worry about my employment future.My wife is finishing her second week of work in the current year as an elementary school librarian. But she is not able to be a librarian because she has to teach 95% of her time, nearly 1000 kids per week. I worry</summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/115711342301670806/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=115711342301670806' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/115711342301670806'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/115711342301670806'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2006/09/living-through-worry.html' title='Living through Worry'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-115498131139224906</id><published>2006-08-07T15:42:00.001-04:00</published><updated>2007-01-08T09:43:51.511-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Rails'/><title type='text'>Rails Aggregations Ready for Prime Time?</title><summary type='text'>Aggregation (or composition) of database fields into value objects in Rails has given me some fits lately. While a valuable abstraction, it unfortunately does not yet cohabitate nicely enough with the rest of Rails to make them painless.Using the example from section 15.2 in "Agile Development with Rails", a Name is a group of three fields (first, initial, last) that is used in a Customer. Great.</summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/115498131139224906/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=115498131139224906' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/115498131139224906'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/115498131139224906'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2006/08/rails-aggregations-ready-for-prime.html' title='Rails Aggregations Ready for Prime Time?'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-115383341702317016</id><published>2006-07-25T08:35:00.000-04:00</published><updated>2007-01-08T09:44:30.030-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Reality'/><category scheme='http://www.blogger.com/atom/ns#' term='Rails'/><title type='text'>Tipping Points and Big Adventures</title><summary type='text'>In Malcolm Gladwell's year-2000 neo-classic, "The Tipping Point: How Little Things Can Make a Big Difference", the phenomenon of epidemics is explored. He explains how small events catalyze sweeping changes and discusses them in many different contexts.Many of us have been anticipating the Ruby and Rails tipping point to be close at hand. It is clear to me that this is happening now. The growth </summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/115383341702317016/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=115383341702317016' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/115383341702317016'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/115383341702317016'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2006/07/tipping-points-and-big-adventures.html' title='Tipping Points and Big Adventures'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-115325630759389059</id><published>2006-07-18T16:58:00.000-04:00</published><updated>2007-01-08T09:45:23.732-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Reality'/><category scheme='http://www.blogger.com/atom/ns#' term='Rails'/><title type='text'>All is not CRUD</title><summary type='text'>CRUD (Create, Retrieve, Update, and Delete) operations are the basis for virtually all record-oriented database activity. At RailsConf 2006, David Heinemeier Hansson, the opinionated creator of the Rails framework, argued that CRUD and the parallel operations in http (Post, Get, Put, and Delete) and Rails (Create, Find, Update, and Destroy) are all analogous. This is absolutely true.He went on to</summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/115325630759389059/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=115325630759389059' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/115325630759389059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/115325630759389059'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2006/07/all-is-not-crud.html' title='All is not CRUD'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-115316793460027632</id><published>2006-07-17T16:10:00.000-04:00</published><updated>2007-01-08T09:46:16.929-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reality'/><category scheme='http://www.blogger.com/atom/ns#' term='Rails'/><title type='text'>RailsConf 2006 - Redux</title><summary type='text'>One of the most interesting things I noticed at the RailsConf 2006 (held in late June in Chicago) was the Java-bashing (mostly tongue-in-cheek) that was going on. This in itself was not unusual; the majority of the folks in attendance made the transition from J2EE to Rails. What surprised me was there was no .Net bashing - .Net is not even a blip on their radar.While this could mean many things, </summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/115316793460027632/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=115316793460027632' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/115316793460027632'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/115316793460027632'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2006/07/railsconf-2006-redux-1.html' title='RailsConf 2006 - Redux'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-114977232017200534</id><published>2006-06-08T08:46:00.000-04:00</published><updated>2007-01-08T09:46:55.447-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='Evil'/><title type='text'>Bad Magic</title><summary type='text'>One of my companies uses an ISP a few time zones away. I created all of the pages for our site, while the business guys set up the e-commerce portion of the site, all done about three or four years ago. It was a good value at the time. But this weekend the ISP had a massive crash that supposedly corrupted several of their servers. Of course, it hit our site and took it offline.Besides being down </summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/114977232017200534/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=114977232017200534' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/114977232017200534'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/114977232017200534'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2006/06/bad-magic.html' title='Bad Magic'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-114427509850557953</id><published>2006-04-05T17:56:00.000-04:00</published><updated>2007-01-08T09:48:19.746-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Musings'/><title type='text'>Moment of Artificial Wonder</title><summary type='text'>Nature keeps time, but doesn't bother about counting. People do like to count however. Especially us math geeks.A close friend of mine (who's also fascinated by numbers) pointed out to me yesterday that early this morning, at one hour, two minutes and three seconds after midnight - and noon if you go by a twelve-hour clock - the time and date was officially  01:02:03 4/5/06Perhaps an uneventful </summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/114427509850557953/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=114427509850557953' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/114427509850557953'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/114427509850557953'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2006/04/moment-of-artificial-wonder.html' title='Moment of Artificial Wonder'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-114363819576689393</id><published>2006-03-29T07:57:00.000-05:00</published><updated>2007-01-08T09:48:56.052-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Musings'/><title type='text'>... name of my dog</title><summary type='text'>When I got married for the second time, I inherited a dog. A good fellow named Mickey, with a keen nose and ear, keeping us safe from all the things that go bump in the night with a bark that can wake one from even the soundest sleep. He marks his spacious territory that is my yard with considerable regularity and consistency, something that, because of polite society, requires my out-of-doors </summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/114363819576689393/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=114363819576689393' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/114363819576689393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/114363819576689393'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2006/03/name-of-my-dog.html' title='... name of my dog'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-114098349279603755</id><published>2006-02-26T14:02:00.000-05:00</published><updated>2007-01-08T09:49:19.716-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reality'/><category scheme='http://www.blogger.com/atom/ns#' term='Musings'/><title type='text'>Realized Calling</title><summary type='text'>I don't remember when it started, but for more than thirty-five years I've been an author. Whether it's software, articles, fiction, commentary, music, painting, sculpture, documentation, woodworking, architecture, drawing, email, or even blog entries, I've spent the majority of my waking hours authoring in different mediums. The purpose of what I author are myriad. I've spent a lot of time with </summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/114098349279603755/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=114098349279603755' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/114098349279603755'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/114098349279603755'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2006/02/realized-calling.html' title='Realized Calling'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-114045713124739575</id><published>2006-02-20T12:28:00.000-05:00</published><updated>2007-01-08T09:49:40.198-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Reality'/><title type='text'>Ruby Till the End of Time...</title><summary type='text'>or, more precisely, Mon Jan 18 22:14:07 Eastern Standard Time 2038.But give the very next second a try...puts Time.local(2038,1,18,22,14,8)Yikes!That's the limit when you start at the Epoch and count the seconds using 31 bits. It suprised me, as this was something I bumped my head against on UNIX so long ago (I've seen a frightfully large percentage of those 31 bits!) Not too big a suprise though</summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/114045713124739575/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=114045713124739575' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/114045713124739575'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/114045713124739575'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2006/02/ruby-till-end-of-time.html' title='Ruby Till the End of Time...'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-113915587550317030</id><published>2006-02-05T10:40:00.002-05:00</published><updated>2007-01-08T09:50:52.439-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Browsers'/><category scheme='http://www.blogger.com/atom/ns#' term='Rails'/><title type='text'>Firefox and IE, and Rails Pain</title><summary type='text'>I'm doing some Ajax in Rails and I found some more weirdness in the behavioral differences between Firefox and IE. I've abstracted a few snippets of code that should illustrate the issue...I have a form that contains a table holding a cell with a select that fires some ajax on a change, and the input field that is the target of the ajax change in another cell. I know that I could do this </summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/113915587550317030/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=113915587550317030' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/113915587550317030'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/113915587550317030'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2006/02/firefox-and-ie-and-rails-p_113915587550317030.html' title='Firefox and IE, and Rails Pain'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-113812028840878865</id><published>2006-01-24T11:23:00.000-05:00</published><updated>2007-05-16T22:51:05.206-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Papers'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><title type='text'>Getting DRYer Through Metaprogramming</title><summary type='text'>Recently I did some metaprogramming. I was faced with some soggy Ruby code I'd evolved, and wanted to evaporate some of the moisture. By using metaprogramming, I was able to DRY things out again. Click the link to read a short description of my exploits.</summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/113812028840878865/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=113812028840878865' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/113812028840878865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/113812028840878865'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2006/01/getting-dryer-through-metaprogramming.html' title='Getting DRYer Through Metaprogramming'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-113751523388822219</id><published>2006-01-17T10:23:00.000-05:00</published><updated>2007-01-08T09:52:43.872-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Musings'/><title type='text'>MetaThought</title><summary type='text'>Missing-Method Exception Handling in Dynamic Object-Oriented Systemsor...Can Good Congruence Processing Work Outside of an Intelligent Mind?It's funny. You're talking with someone and they throw things out at you, and you've never heard about what they're saying, but it all starts to seem like something else you have experience with. It fits into familiar patterns - it seems close to something </summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/113751523388822219/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=113751523388822219' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/113751523388822219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/113751523388822219'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2006/01/metathought.html' title='MetaThought'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-113744116448684624</id><published>2006-01-16T14:46:00.000-05:00</published><updated>2007-01-08T09:53:18.293-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reality'/><title type='text'>Not that I'm keeping track or anything, but...</title><summary type='text'>There are 31556995201 seconds in this millenium. We're up one second so far from the original plan, thanks to that leap second at the beginning of the year.(No, I'm not really obsessed. I'm writing a little time utility library.)</summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/113744116448684624/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=113744116448684624' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/113744116448684624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/113744116448684624'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2006/01/not-that-im-keeping-track-or-anything.html' title='Not that I&apos;m keeping track or anything, but...'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-113682924473458266</id><published>2006-01-09T12:07:00.000-05:00</published><updated>2007-01-08T09:53:48.268-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><title type='text'>Web Apps and Native Apps</title><summary type='text'>A web app is not a native app. I know this in my head, but in my heart I want them to be the same. Rails is ever so nice. The deeper I go, the cleaner it seems - the thin client attitude just feels so right, especially when Ruby and Rails make it so easy. This is the way I should be doing all my app development.And yet, a web app is not a native app. The controls aren't the same. The browser </summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/113682924473458266/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=113682924473458266' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/113682924473458266'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/113682924473458266'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2006/01/web-apps-and-native-apps.html' title='Web Apps and Native Apps'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-113649129222841507</id><published>2006-01-05T14:43:00.000-05:00</published><updated>2007-01-08T09:54:29.531-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Evil'/><category scheme='http://www.blogger.com/atom/ns#' term='Browsers'/><title type='text'>Fixing a Communication-impaired Windows Box</title><summary type='text'>Yahhh. No Rails spoken here. WEBrick runs, but the browser can't get a response. And it just hangs there. No logs. And you can't kill it. And you look everywhere on the system for some record of what's happenning. And you scour the net, searching for a tidbit of information that could lead you to the truth, a fix and salvation...What would keep WEBrick and a browser from talking? All the host </summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/113649129222841507/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=113649129222841507' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/113649129222841507'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/113649129222841507'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2006/01/fixing-communication-impaired-windows.html' title='Fixing a Communication-impaired Windows Box'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-113641758867037290</id><published>2006-01-04T18:23:00.000-05:00</published><updated>2007-01-08T09:55:07.658-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='XP'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='Rails'/><title type='text'>"Just Stay on the Golden Path"</title><summary type='text'>Jim Wierich and Scott Barron did excellent presentations on Rails at the XP-Agile Cincinnati User's Group meeting last night. Jim gave a rapid-fire intro to Rails, and Scott built an Contact Management app with Ajax support using test-driven development before our eyes.During Jim's talk, he buzzed on the phrase "The Golden Path" - Rails' standard way of doing things. This was echoed around the </summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/113641758867037290/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=113641758867037290' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/113641758867037290'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/113641758867037290'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2006/01/just-stay-on-golden-path.html' title='&quot;Just Stay on the Golden Path&quot;'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-113614765269998216</id><published>2006-01-01T15:28:00.000-05:00</published><updated>2007-01-08T09:55:44.466-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reality'/><category scheme='http://www.blogger.com/atom/ns#' term='Musings'/><title type='text'>Not as much as I wanted, but better than nothing...</title><summary type='text'>Well, these days I keep asking for an extra few hours a day as a Christmas present. The extra time would let me get ahead of all the extra stuff that seems to appear out of nowhere onto my schedule.I guess Santa was listening a little. A leap second was added to the calendar yesterday - the first in the new millenium. I thought things had started to feel just a tad out of sync for the last few </summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/113614765269998216/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=113614765269998216' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/113614765269998216'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/113614765269998216'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2006/01/not-as-much-as-i-wanted-but-better.html' title='Not as much as I wanted, but better than nothing...'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-113388172198053972</id><published>2005-12-06T09:18:00.000-05:00</published><updated>2007-01-08T11:47:24.891-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reality'/><category scheme='http://www.blogger.com/atom/ns#' term='Musings'/><title type='text'>Upcoming Blue Moons</title><summary type='text'>While not an officially recognized star-gazer or anything, I have always been enamored by celestial events. I enjoy being humbled by the unceasing regularity of the heavens. It reminds me not to take things so seriously, since there are some things out there that won't change no matter how great my successes, how frustrated I get or how badly I screw up. Anytime is a good time for us to have a </summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/113388172198053972/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=113388172198053972' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/113388172198053972'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/113388172198053972'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2005/12/upcoming-blue-moons.html' title='Upcoming Blue Moons'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-113345445884588859</id><published>2005-12-01T11:02:00.000-05:00</published><updated>2007-01-08T11:48:24.819-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Reality'/><title type='text'>Where did the Time Go?</title><summary type='text'>Time is the devourer of all things. - OvidIt's amazing. This week in an email to a friend I made a quick catalog of all the things going on in my life. After I finished the note, I read it again and saw I was buring the candle at both ends, in the middle, and learned the curtains have also caught fire.As a present to myself this Christmas, I've decided that it's about time to write myself a time </summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/113345445884588859/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=113345445884588859' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/113345445884588859'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/113345445884588859'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2005/12/where-did-time-go.html' title='Where did the Time Go?'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-113225362067683344</id><published>2005-11-17T13:33:00.000-05:00</published><updated>2007-01-08T11:49:10.934-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Musings'/><title type='text'>A Question of Balance</title><summary type='text'>As I write more Ruby, thoughts of what should go where have occurred to me. While having monolithic packages take the load off package users, the question of performance penalties arise. If everything is loaded up front when a simple require is done, a full package monolithm may take more time to load than that required when just a simple piece of functionality is needed.I'm thinking that a nice </summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/113225362067683344/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=113225362067683344' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/113225362067683344'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/113225362067683344'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2005/11/question-of-balance.html' title='A Question of Balance'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-113172044084031471</id><published>2005-11-11T09:32:00.000-05:00</published><updated>2007-01-08T11:51:04.527-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Geometry'/><title type='text'>MetaThought</title><summary type='text'>Following up Point3 with work on Vector3 has made me think that I'd really like to do this all in N dimensions. It'd certainly be neat to be able to operate upon, transform and visualize higher dimensional structures, and see what that means in multi-dimensional information spaces when they're given a geometric interpretation. Being able to pivot and cluster in a higher information dimension </summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/113172044084031471/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=113172044084031471' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/113172044084031471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/113172044084031471'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2005/11/metathought.html' title='MetaThought'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-113150940255421326</id><published>2005-11-09T02:10:00.000-05:00</published><updated>2007-01-08T11:51:45.965-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Geometry'/><title type='text'>Ruby 3D Point</title><summary type='text'>I need to do some 3D structure analysis for a contract. While I already have a substantial amount of Java code that I could use, I've decided to build up some capabilities for the work in Ruby.The first object I put together for this is Point3, a cartesian 3D point, and a basis for most of the work to follow. (Test cases are in tc_point.rb) Instances of the class can be created from coordinates </summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/113150940255421326/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=113150940255421326' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/113150940255421326'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/113150940255421326'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2005/11/ruby-3d-point.html' title='Ruby 3D Point'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18440957.post-113131889532236610</id><published>2005-11-06T18:09:00.000-05:00</published><updated>2007-05-16T22:51:37.581-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Papers'/><title type='text'>Going From Java To Ruby</title><summary type='text'>As I began learning Ruby, I started porting some of the simpler objects in my toolbox. I wrote a short paper about the effort made to transition two of these objects, Duration and Stopwatch, as well as a plea for Java developers to start learning Ruby.</summary><link rel='replies' type='application/atom+xml' href='http://def-end.blogspot.com/feeds/113131889532236610/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18440957&amp;postID=113131889532236610' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/113131889532236610'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18440957/posts/default/113131889532236610'/><link rel='alternate' type='text/html' href='http://def-end.blogspot.com/2005/11/going-from-java-to-ruby.html' title='Going From Java To Ruby'/><author><name>Dave Anderson</name><uri>http://www.blogger.com/profile/14469858519254321143</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='26' height='32' src='http://3.bp.blogspot.com/_MOd0nK_msqY/SxRnGiXK_YI/AAAAAAAAABI/XTe-M_L6efw/S220/dave.jpg'/></author><thr:total>0</thr:total></entry></feed>
