<?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-11934535</id><updated>2011-11-09T11:01:57.261-08:00</updated><title type='text'>Software Nomad</title><subtitle type='html'>.. whose only fixed address is on the Internet.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://software-nomad.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11934535/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://software-nomad.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>John</name><uri>http://www.blogger.com/profile/02814236966431915733</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>23</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-11934535.post-112562805769153729</id><published>2005-09-01T19:08:00.000-07:00</published><updated>2005-09-05T19:31:23.546-07:00</updated><title type='text'>Unit Tests II</title><summary type='text'>Our current project is approaching delivery. As you would expect when the word "release" is uttered, the bugs start wriggling to the surface. I just wasted some time trying to figure out a page that is supposed to display current and future data, but not data that is historical. The issue was that an item with a date in the year 2009 was getting filtered out as historical. The isHistory method </summary><link rel='replies' type='application/atom+xml' href='http://software-nomad.blogspot.com/feeds/112562805769153729/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11934535&amp;postID=112562805769153729' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11934535/posts/default/112562805769153729'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11934535/posts/default/112562805769153729'/><link rel='alternate' type='text/html' href='http://software-nomad.blogspot.com/2005/09/unit-tests-ii.html' title='Unit Tests II'/><author><name>John</name><uri>http://www.blogger.com/profile/02814236966431915733</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11934535.post-112534498077412814</id><published>2005-08-29T12:35:00.000-07:00</published><updated>2005-09-05T10:13:55.103-07:00</updated><title type='text'>Magic Numbers</title><summary type='text'>Our code guidelines state clearly that "magic number" are not permitted. We run Checkstyle to pick up style related violations. So, despite this, what do I find when I'm poking around fixing something unrelated?   private static final int PARAM_INDEX_THREE = 3;   private static final int PARAM_INDEX_FOUR = 4;   private static final int PARAM_INDEX_FIVE = 5;   private static final int </summary><link rel='replies' type='application/atom+xml' href='http://software-nomad.blogspot.com/feeds/112534498077412814/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11934535&amp;postID=112534498077412814' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11934535/posts/default/112534498077412814'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11934535/posts/default/112534498077412814'/><link rel='alternate' type='text/html' href='http://software-nomad.blogspot.com/2005/08/magic-numbers.html' title='Magic Numbers'/><author><name>John</name><uri>http://www.blogger.com/profile/02814236966431915733</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11934535.post-112502521465755399</id><published>2005-08-25T19:32:00.000-07:00</published><updated>2005-08-25T20:02:33.703-07:00</updated><title type='text'>Freedom Languages</title><summary type='text'>A thought provoking article over at Code Craft. Kevin compares languages that try to remove constructs that are deemed confusing or easy to misuse with languages that try to remove constructs that reduce programmer freedom. According to Kevin, C++, Java, C are examples of safety languages; his freedom languages include Python and Ruby.For what it's worth, I find programming in a safety language (</summary><link rel='replies' type='application/atom+xml' href='http://software-nomad.blogspot.com/feeds/112502521465755399/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11934535&amp;postID=112502521465755399' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11934535/posts/default/112502521465755399'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11934535/posts/default/112502521465755399'/><link rel='alternate' type='text/html' href='http://software-nomad.blogspot.com/2005/08/freedom-languages.html' title='Freedom Languages'/><author><name>John</name><uri>http://www.blogger.com/profile/02814236966431915733</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11934535.post-111905701012125884</id><published>2005-06-17T18:05:00.000-07:00</published><updated>2005-06-17T18:24:49.616-07:00</updated><title type='text'>Lucky Typo</title><summary type='text'>Our project uses Cruise Control for continuous integration, and of late, the builds have been taking way to long to complete. The main culprit are the Struts Test Case tests. One single test was taking over 12 seconds to run, and we have many of them. Something was wrong, but no one could figure out what it was. It was the usual problem; we were so busy, there was no time to look at it. And, of </summary><link rel='replies' type='application/atom+xml' href='http://software-nomad.blogspot.com/feeds/111905701012125884/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11934535&amp;postID=111905701012125884' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11934535/posts/default/111905701012125884'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11934535/posts/default/111905701012125884'/><link rel='alternate' type='text/html' href='http://software-nomad.blogspot.com/2005/06/lucky-typo.html' title='Lucky Typo'/><author><name>John</name><uri>http://www.blogger.com/profile/02814236966431915733</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11934535.post-111885656016388537</id><published>2005-06-15T10:20:00.000-07:00</published><updated>2005-06-15T10:30:22.283-07:00</updated><title type='text'>Java is wierd</title><summary type='text'>It all began when I wrote a simple class with overloaded methods:   public abstract Object apply (Object obj);   public Object apply (Collection collection)   {      for (Iterator i = collection.iterator (); i.hasNext(); )      {         apply (i.next());      }      return this;   }Note that the first version is abstract (as was the class, of course). The second method, which takes a Collection </summary><link rel='replies' type='application/atom+xml' href='http://software-nomad.blogspot.com/feeds/111885656016388537/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11934535&amp;postID=111885656016388537' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11934535/posts/default/111885656016388537'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11934535/posts/default/111885656016388537'/><link rel='alternate' type='text/html' href='http://software-nomad.blogspot.com/2005/06/java-is-wierd.html' title='Java is wierd'/><author><name>John</name><uri>http://www.blogger.com/profile/02814236966431915733</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11934535.post-111742474555494828</id><published>2005-05-29T20:41:00.000-07:00</published><updated>2005-05-29T20:45:45.560-07:00</updated><title type='text'>Approaching desktop usability</title><summary type='text'>I read this tongue-in-cheek article over at News Forge. Nicely written from the perspective of  a (Gnu/)Linux user evaluating Windows XP. The title say it all; Windows rapidly approaching desktop usability. Miller makes an issue out of a problem with an LCD monitor during installation. More seriously, he complains  "Windows XP networking: Not for amateurs". I know his pain; I have struggled long </summary><link rel='replies' type='application/atom+xml' href='http://software-nomad.blogspot.com/feeds/111742474555494828/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11934535&amp;postID=111742474555494828' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11934535/posts/default/111742474555494828'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11934535/posts/default/111742474555494828'/><link rel='alternate' type='text/html' href='http://software-nomad.blogspot.com/2005/05/approaching-desktop-usability.html' title='Approaching desktop usability'/><author><name>John</name><uri>http://www.blogger.com/profile/02814236966431915733</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11934535.post-111629680864739818</id><published>2005-05-16T19:22:00.000-07:00</published><updated>2005-05-16T19:26:48.653-07:00</updated><title type='text'>Debugging Javascript</title><summary type='text'>Debugging Javascript has its own set of challenges; often aggrevated by a lengthy build/deploy cycle time. With the increased usage of asynchronous server calls (now with the fancy buzz word, Ajax), life has become a few notches more difficult. We still have the tried and tested alert pop-ups, And there are Javascript debuggers where one can step through the code line by line. Alas, with a </summary><link rel='replies' type='application/atom+xml' href='http://software-nomad.blogspot.com/feeds/111629680864739818/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11934535&amp;postID=111629680864739818' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11934535/posts/default/111629680864739818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11934535/posts/default/111629680864739818'/><link rel='alternate' type='text/html' href='http://software-nomad.blogspot.com/2005/05/debugging-javascript.html' title='Debugging Javascript'/><author><name>John</name><uri>http://www.blogger.com/profile/02814236966431915733</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11934535.post-111532402037653380</id><published>2005-05-05T12:40:00.000-07:00</published><updated>2005-05-05T13:13:40.406-07:00</updated><title type='text'>Unit Tests</title><summary type='text'>I'm a "test early, test often" sort of person, so unit tests seem natural to me. This leaves me constantly amazed when I find people who write unit tests to fulfill the letter, but not the spirit. I'm referring to unit tests that fail to test anything significant; or anything at all. Yes, I have seen (more than one) example of (supposed) unit tests that cannot fail – no assertion – or in the </summary><link rel='replies' type='application/atom+xml' href='http://software-nomad.blogspot.com/feeds/111532402037653380/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11934535&amp;postID=111532402037653380' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11934535/posts/default/111532402037653380'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11934535/posts/default/111532402037653380'/><link rel='alternate' type='text/html' href='http://software-nomad.blogspot.com/2005/05/unit-tests.html' title='Unit Tests'/><author><name>John</name><uri>http://www.blogger.com/profile/02814236966431915733</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11934535.post-111504749490750809</id><published>2005-05-02T08:11:00.000-07:00</published><updated>2005-05-02T08:24:54.906-07:00</updated><title type='text'>Validation</title><summary type='text'>There's an interesting article over at Juicy Studio on client-side form validation. It's the old Javascript validation stuff we've been doing for ages; with a new twist. I note there is still a lot of confusion; client-side validation is mostly a fast check for well-formedness, not actual validity. To check the latter usually requires a trip to the database. Another point is that we can (and </summary><link rel='replies' type='application/atom+xml' href='http://software-nomad.blogspot.com/feeds/111504749490750809/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11934535&amp;postID=111504749490750809' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11934535/posts/default/111504749490750809'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11934535/posts/default/111504749490750809'/><link rel='alternate' type='text/html' href='http://software-nomad.blogspot.com/2005/05/validation.html' title='Validation'/><author><name>John</name><uri>http://www.blogger.com/profile/02814236966431915733</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11934535.post-111457145455142141</id><published>2005-04-26T20:01:00.000-07:00</published><updated>2005-04-26T20:12:47.216-07:00</updated><title type='text'>Ruby Love</title><summary type='text'>Ruby is the "Most Loved" programming language? That's one way of reading Thomas David Baker's Google results. Intepretation of the raw statistics is difficult, but my explanation of the astoundingly high Love/Hate ration is Ruby's Principal of Least Surprise. Things work the way you expect them to; by design. Isn't that the way all programming languages should be?Category: Programming,Ruby</summary><link rel='replies' type='application/atom+xml' href='http://software-nomad.blogspot.com/feeds/111457145455142141/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11934535&amp;postID=111457145455142141' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11934535/posts/default/111457145455142141'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11934535/posts/default/111457145455142141'/><link rel='alternate' type='text/html' href='http://software-nomad.blogspot.com/2005/04/ruby-love.html' title='Ruby Love'/><author><name>John</name><uri>http://www.blogger.com/profile/02814236966431915733</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11934535.post-111429001413141498</id><published>2005-04-23T13:54:00.000-07:00</published><updated>2005-04-23T17:41:09.680-07:00</updated><title type='text'>Process, Philosophy or Religion</title><summary type='text'>As I have admitted before, I work in software development. That means that I attempt to create useful1 software for people.Starting from the requirements2, I:think until it hurtsscratch out a bare-bones solution (back of envelope style))hack it until it worksUmm,  no. You can't tell clients that, can you? let's try that again:Perform Analysis on the requirementsDevelop the Analysis model into an </summary><link rel='replies' type='application/atom+xml' href='http://software-nomad.blogspot.com/feeds/111429001413141498/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11934535&amp;postID=111429001413141498' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11934535/posts/default/111429001413141498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11934535/posts/default/111429001413141498'/><link rel='alternate' type='text/html' href='http://software-nomad.blogspot.com/2005/04/process-philosophy-or-religion.html' title='Process, Philosophy or Religion'/><author><name>John</name><uri>http://www.blogger.com/profile/02814236966431915733</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11934535.post-111401533703465058</id><published>2005-04-20T09:36:00.000-07:00</published><updated>2005-04-20T09:43:18.080-07:00</updated><title type='text'>Web pages</title><summary type='text'>When we build web pages we fill them with contain many things:Content – that's the main stuff, the focus and purpose of the page.Navigation – not part of the above, but ways to get to other pagesFine print – again, not prime content, but necessary stuff like contact details and legalese.Ambience – signs or hints that you are at the right place.Fluff – stuff that makes no contribution to the </summary><link rel='replies' type='application/atom+xml' href='http://software-nomad.blogspot.com/feeds/111401533703465058/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11934535&amp;postID=111401533703465058' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11934535/posts/default/111401533703465058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11934535/posts/default/111401533703465058'/><link rel='alternate' type='text/html' href='http://software-nomad.blogspot.com/2005/04/web-pages.html' title='Web pages'/><author><name>John</name><uri>http://www.blogger.com/profile/02814236966431915733</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11934535.post-111395858094287402</id><published>2005-04-19T17:50:00.000-07:00</published><updated>2005-04-19T17:58:20.566-07:00</updated><title type='text'>Javascript</title><summary type='text'>Javascript has acquired a rather dubious reputation. In part, this was due to some unbelievably bad implementation; in part it was (is) due to some excruciatingly bad code out there. Javascript today (and I should perhaps write EcmaScript) is altogether another thing. Still many developers hav litle clue how to write even moderately good Javascript. For those who wish to learn good Javascript </summary><link rel='replies' type='application/atom+xml' href='http://software-nomad.blogspot.com/feeds/111395858094287402/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11934535&amp;postID=111395858094287402' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11934535/posts/default/111395858094287402'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11934535/posts/default/111395858094287402'/><link rel='alternate' type='text/html' href='http://software-nomad.blogspot.com/2005/04/javascript.html' title='Javascript'/><author><name>John</name><uri>http://www.blogger.com/profile/02814236966431915733</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11934535.post-111392447684988093</id><published>2005-04-19T08:25:00.000-07:00</published><updated>2005-04-19T08:29:29.473-07:00</updated><title type='text'>Naming consistency</title><summary type='text'>I recently had to interface to some code written by another project. My attention was drawn to some data transfer objects (DTOs) and the lack of consistency in naming attributes. A common feature of these DTOs were an object ID and a display text. The object IDs were variously named as id, value, typeCode; often in combination with the class name. The display text were correspondingly named value</summary><link rel='replies' type='application/atom+xml' href='http://software-nomad.blogspot.com/feeds/111392447684988093/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11934535&amp;postID=111392447684988093' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11934535/posts/default/111392447684988093'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11934535/posts/default/111392447684988093'/><link rel='alternate' type='text/html' href='http://software-nomad.blogspot.com/2005/04/naming-consistency.html' title='Naming consistency'/><author><name>John</name><uri>http://www.blogger.com/profile/02814236966431915733</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11934535.post-111375213409138420</id><published>2005-04-17T08:34:00.000-07:00</published><updated>2005-04-17T13:33:51.280-07:00</updated><title type='text'>Permissions</title><summary type='text'>I run Linux on mylaptop. It's a sort of mongrel Debian unstable installation that used Knoppix to side-step the usual Debian installation pain. One of the first things I did was to apt-get Firefox. Then along came updates; now we have reached 1.03. Installing red-hot fresh Firefox releases means a manual install; if you want to use apt-get, you have to wait until the .deb package is released.For </summary><link rel='replies' type='application/atom+xml' href='http://software-nomad.blogspot.com/feeds/111375213409138420/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11934535&amp;postID=111375213409138420' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11934535/posts/default/111375213409138420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11934535/posts/default/111375213409138420'/><link rel='alternate' type='text/html' href='http://software-nomad.blogspot.com/2005/04/permissions.html' title='Permissions'/><author><name>John</name><uri>http://www.blogger.com/profile/02814236966431915733</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11934535.post-111317784401529905</id><published>2005-04-10T17:03:00.000-07:00</published><updated>2005-04-17T13:39:08.756-07:00</updated><title type='text'>Interviews</title><summary type='text'>Every so often, my colleagues and I are asked to interview a candidate for a project. We read the resume (or CV as it is referred to in some places) and schedule a time when one of can talk to the candidate; A first time interview is invariably done by phone; only short-listed candidates get to a face-to-face meeting.Our initial impression of the candidate is formed by the few pages that </summary><link rel='replies' type='application/atom+xml' href='http://software-nomad.blogspot.com/feeds/111317784401529905/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11934535&amp;postID=111317784401529905' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11934535/posts/default/111317784401529905'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11934535/posts/default/111317784401529905'/><link rel='alternate' type='text/html' href='http://software-nomad.blogspot.com/2005/04/interviews.html' title='Interviews'/><author><name>John</name><uri>http://www.blogger.com/profile/02814236966431915733</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11934535.post-111310671437526611</id><published>2005-04-09T21:16:00.000-07:00</published><updated>2005-04-17T13:32:41.580-07:00</updated><title type='text'>Subversion</title><summary type='text'>Somehow there is always some issue with source code repositories. Like most developers, I have, at various times, used many different tools. Some simmple, some complex; some good, some truely evil. Many times, the choice of the SCM tool was forced by outside constraints; no budget (i.e. must use a free tool); client has a corporate wide policy that must be followed; must run on a certain </summary><link rel='replies' type='application/atom+xml' href='http://software-nomad.blogspot.com/feeds/111310671437526611/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11934535&amp;postID=111310671437526611' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11934535/posts/default/111310671437526611'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11934535/posts/default/111310671437526611'/><link rel='alternate' type='text/html' href='http://software-nomad.blogspot.com/2005/04/subversion.html' title='Subversion'/><author><name>John</name><uri>http://www.blogger.com/profile/02814236966431915733</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11934535.post-111301062704814491</id><published>2005-04-08T18:36:00.000-07:00</published><updated>2005-04-17T13:31:57.836-07:00</updated><title type='text'>Inheritance</title><summary type='text'>For some reason, inheritance has been under attack recently. One source that people frequently cite is an article by Allen Holub, called  "Why extends is evil". Allen has been around for long enough to have acquired the status of knowing what he is talking about. I remember reading his articles in DDJ, myself. That makes it more surprising that his article totally misses the point of inheritance.</summary><link rel='replies' type='application/atom+xml' href='http://software-nomad.blogspot.com/feeds/111301062704814491/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11934535&amp;postID=111301062704814491' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11934535/posts/default/111301062704814491'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11934535/posts/default/111301062704814491'/><link rel='alternate' type='text/html' href='http://software-nomad.blogspot.com/2005/04/inheritance.html' title='Inheritance'/><author><name>John</name><uri>http://www.blogger.com/profile/02814236966431915733</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11934535.post-111284965616426722</id><published>2005-04-07T08:52:00.000-07:00</published><updated>2005-04-17T13:37:22.603-07:00</updated><title type='text'>Jsp page architecture</title><summary type='text'>What architecture should I use when using Java Server Pages? Sun leaves us guessing. There is "Model 1" — which loosely translated means the JSP page contains everything in a hodge-podge. And there is "model 2" — which, again roughly translated, means that you do your homework first and let the JSP do just the display part of the deal. That still leaves us with a lot of questions. Here's my </summary><link rel='replies' type='application/atom+xml' href='http://software-nomad.blogspot.com/feeds/111284965616426722/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11934535&amp;postID=111284965616426722' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11934535/posts/default/111284965616426722'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11934535/posts/default/111284965616426722'/><link rel='alternate' type='text/html' href='http://software-nomad.blogspot.com/2005/04/jsp-page-architecture.html' title='Jsp page architecture'/><author><name>John</name><uri>http://www.blogger.com/profile/02814236966431915733</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11934535.post-111276012082500926</id><published>2005-04-05T20:46:00.000-07:00</published><updated>2005-04-06T15:24:16.123-07:00</updated><title type='text'>Where to start</title><summary type='text'>Where do you start when you have a new task delivered to you? I'm assuming now that the requirements are there and clear enough to procede (breathtaking assumption, isn't it)? What do you look for as you do your analysis?I find that while I am going through the usual business of identifying objects (nouns) and actions (methods) I'm looking for patterns (not the GOF type — not yet) and symmetry. </summary><link rel='replies' type='application/atom+xml' href='http://software-nomad.blogspot.com/feeds/111276012082500926/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11934535&amp;postID=111276012082500926' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11934535/posts/default/111276012082500926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11934535/posts/default/111276012082500926'/><link rel='alternate' type='text/html' href='http://software-nomad.blogspot.com/2005/04/where-to-start.html' title='Where to start'/><author><name>John</name><uri>http://www.blogger.com/profile/02814236966431915733</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11934535.post-111275786201590255</id><published>2005-04-05T19:55:00.000-07:00</published><updated>2005-04-05T20:24:22.016-07:00</updated><title type='text'>Tables static or dynamic</title><summary type='text'>Right now, I seem to be caught up with tables — the (X)HTML sort. My current project has lots of them. No, not for layout; that's so last millenium. We use tables to present tabular data; results and summaries, for example. And tables to accumulate entered data prior to submitting a page. Those are the dynamic ones. The user enters data into text fields and selects from dropdowns, but instead of </summary><link rel='replies' type='application/atom+xml' href='http://software-nomad.blogspot.com/feeds/111275786201590255/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11934535&amp;postID=111275786201590255' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11934535/posts/default/111275786201590255'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11934535/posts/default/111275786201590255'/><link rel='alternate' type='text/html' href='http://software-nomad.blogspot.com/2005/04/tables-static-or-dynamic.html' title='Tables static or dynamic'/><author><name>John</name><uri>http://www.blogger.com/profile/02814236966431915733</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11934535.post-111271651097847250</id><published>2005-04-05T08:43:00.000-07:00</published><updated>2005-04-05T08:55:10.980-07:00</updated><title type='text'>Thinking objects</title><summary type='text'>Thinking in terms objects is so natural for me that I tend to forget that some people don't. Long back, I remeber someone putting ot like this. The world is divided into two; those who see objects in everything and those who can't understand what all the fuss is about. For me, using object is a way of reducing the signal to noise ratio of the code.That Allows me to concentrate on the interesting </summary><link rel='replies' type='application/atom+xml' href='http://software-nomad.blogspot.com/feeds/111271651097847250/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11934535&amp;postID=111271651097847250' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11934535/posts/default/111271651097847250'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11934535/posts/default/111271651097847250'/><link rel='alternate' type='text/html' href='http://software-nomad.blogspot.com/2005/04/thinking-objects.html' title='Thinking objects'/><author><name>John</name><uri>http://www.blogger.com/profile/02814236966431915733</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11934535.post-111267789088013709</id><published>2005-04-04T22:07:00.000-07:00</published><updated>2005-04-04T22:11:30.880-07:00</updated><title type='text'>Watir 1.2</title><summary type='text'>Watir 1.2 has been released. Support for tables is much improved, but there are still some niggly details that need fixing.  Also, the newWindow unit test fails when I try to run it.  I don't know if this is me or if the released code has a bug. Still nice job so far.</summary><link rel='replies' type='application/atom+xml' href='http://software-nomad.blogspot.com/feeds/111267789088013709/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11934535&amp;postID=111267789088013709' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11934535/posts/default/111267789088013709'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11934535/posts/default/111267789088013709'/><link rel='alternate' type='text/html' href='http://software-nomad.blogspot.com/2005/04/watir-12.html' title='Watir 1.2'/><author><name>John</name><uri>http://www.blogger.com/profile/02814236966431915733</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
