<?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-21461076</id><updated>2011-06-22T22:26:24.257-07:00</updated><title type='text'>The Gratuitous Developer</title><subtitle type='html'>Blog brought to you by the creators of &lt;a href='http://www.drlunch.com'&gt;Dr. Lunch&lt;/a&gt;</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://gratuitousdeveloper.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21461076/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://gratuitousdeveloper.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Brian</name><uri>http://www.blogger.com/profile/02474167972854342266</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>19</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-21461076.post-116482855154621217</id><published>2006-11-29T11:29:00.000-08:00</published><updated>2006-11-29T11:29:11.710-08:00</updated><title type='text'>Tasty and del.icio.us</title><content type='html'>I'm riding a wave of hipness as I have switched my bookmarks to del.icio.us.  I looked at del.icio.us before, but couldn't make the switch from my Yahoo! bookmarks.   One of the things that made the difference this time was the Firefox add-on that replaces Firefox's bookmarking with del.icio.us.  The add-on comes with a handy toolbar that provides me quick access to my bookmarks.   You can organize by bookmark (most recent or most used) or tags.  I like using the tags.  Here are my shared bookmarks...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://del.icio.us/jrehfeld"&gt;jrehfeld's bookmarks on del.icio.us&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21461076-116482855154621217?l=gratuitousdeveloper.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gratuitousdeveloper.blogspot.com/feeds/116482855154621217/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21461076&amp;postID=116482855154621217' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21461076/posts/default/116482855154621217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21461076/posts/default/116482855154621217'/><link rel='alternate' type='text/html' href='http://gratuitousdeveloper.blogspot.com/2006/11/tasty-and-delicious.html' title='Tasty and del.icio.us'/><author><name>James</name><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>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21461076.post-116405920339882190</id><published>2006-11-20T12:09:00.000-08:00</published><updated>2006-11-20T13:46:44.560-08:00</updated><title type='text'>Almost as cool as a Mac user...</title><content type='html'>Because I now own a Nintendo Wii, I feel like I am so counter-culture.  PS3?  Bleh!  XBOX 360? Pweh!  My son and I were 48th of 69 in line at Super Target at 6:30 Sunday morning.  By 8:42 am, we were proud owners of a Wii, and we spent the next 10+ hours playing tennis, bowling, and fishing (Zelda). &lt;br /&gt;&lt;br /&gt;So my coolness factor increased, in my mind, to a level below a Mac user, in his mind.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21461076-116405920339882190?l=gratuitousdeveloper.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gratuitousdeveloper.blogspot.com/feeds/116405920339882190/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21461076&amp;postID=116405920339882190' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21461076/posts/default/116405920339882190'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21461076/posts/default/116405920339882190'/><link rel='alternate' type='text/html' href='http://gratuitousdeveloper.blogspot.com/2006/11/almost-as-cool-as-mac-user.html' title='Almost as cool as a Mac user...'/><author><name>James</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21461076.post-116355141875722390</id><published>2006-11-14T16:43:00.000-08:00</published><updated>2006-11-14T16:47:31.886-08:00</updated><title type='text'>Sticking it to the Man!</title><content type='html'>The client I am at blocks all IM and external email so staying in touch with friends and family is quite difficult, considering I don't like talking on the phone.  Google Talk worked for a while, but was recently shut down (I cried myself to sleep that night).  &lt;br&gt;&lt;br&gt;In my constant fight for human (IMing) rights, I am resorting to using a shared Google document (i.e., Writely).  This solution cannot be declared a success yet as the adoption rate from my friends is quite minimal.  Ok, its zero.&lt;br&gt;&lt;br&gt;By the way, I wrote this blog entry using Google Docs.  The shared features are "pretty slick" as Brian commented.  Give it a try ==&gt; &lt;a title="Google Docs" href="http://docs.google.com"&gt;Google Docs&lt;/a&gt; &lt;br&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21461076-116355141875722390?l=gratuitousdeveloper.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gratuitousdeveloper.blogspot.com/feeds/116355141875722390/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21461076&amp;postID=116355141875722390' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21461076/posts/default/116355141875722390'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21461076/posts/default/116355141875722390'/><link rel='alternate' type='text/html' href='http://gratuitousdeveloper.blogspot.com/2006/11/sticking-it-to-man.html' title='Sticking it to the Man!'/><author><name>James</name><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-21461076.post-116353249395606416</id><published>2006-11-14T11:28:00.000-08:00</published><updated>2006-11-14T11:44:21.386-08:00</updated><title type='text'>Java build scripts to build Java?</title><content type='html'>Dr. Dobb's Java Blog had a &lt;a title="post" href="http://www.ddj.com/blog/javablog/archives/2006/10/xml_and_the_ugl.html"&gt;post&lt;/a&gt; about a Java-based approach to Ant build scripts.  The author suggests that writing Ant scripts in XML is too challenging and complicated since XML isn't really a programming language, but the example in the post of the Java programmed scripts seems much, much harder to read.  &lt;br&gt;&lt;br&gt;Personally, I like the declarative nature of XML Ant scripts, and writing build scripts in Java seems over-engineered.  However, I am open to alternatives to using XML for scripting, and a true scripting language may be better suited.  &lt;br&gt;&lt;br&gt;One of the comments mentions using Groovy for build scripts, which seems interesting, and needs more investigation.&lt;br&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21461076-116353249395606416?l=gratuitousdeveloper.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gratuitousdeveloper.blogspot.com/feeds/116353249395606416/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21461076&amp;postID=116353249395606416' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21461076/posts/default/116353249395606416'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21461076/posts/default/116353249395606416'/><link rel='alternate' type='text/html' href='http://gratuitousdeveloper.blogspot.com/2006/11/java-build-scripts-to-build-java.html' title='Java build scripts to build Java?'/><author><name>James</name><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-21461076.post-114066929216015600</id><published>2006-02-22T20:28:00.000-08:00</published><updated>2006-02-22T20:34:52.180-08:00</updated><title type='text'>This is slick...</title><content type='html'>...and also not related to development, Dr Lunch or anything else.  But having said that, if you are one of the 6 people in the world that has a) all of your music stored in iTunes on a Mac, and b) you have an XBox 360, then run, don't walk, over to pick yourself up a copy of &lt;a href="http://www.nullriver.com/index/products/connect360"&gt;Connect 360 from nullriver&lt;/a&gt;.  In literally 3 minutes you'll be streaming all your music and photos from your Mac to your XBox 360.  As someone famous once said "It just works". Your music shows up, all of your playlists that you've built in iTunes are right there on your Xbox, and everything works beautifully (which the exception that you can't play FairPlay protected AAC files you bought from the iTunes Music store, but hey, that's a suckers game anyway, right?)   Pay 'em their $10 registration fee and you have yourself the very functional equivalent of a Squeezebox for a fraction of the cost.  (Assuming, you know, you already blew your kitty on the Xbox and the Mac and the nice receiver, and some nice &lt;a href="http://www.bwspeakers.com/index.cfm/fuseaction/global.main"&gt;B&amp;W speakers&lt;/a&gt;.  Slick as hell.  I'd like to find the guys who wrote this and give them a big hug.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21461076-114066929216015600?l=gratuitousdeveloper.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gratuitousdeveloper.blogspot.com/feeds/114066929216015600/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21461076&amp;postID=114066929216015600' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21461076/posts/default/114066929216015600'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21461076/posts/default/114066929216015600'/><link rel='alternate' type='text/html' href='http://gratuitousdeveloper.blogspot.com/2006/02/this-is-slick.html' title='This is slick...'/><author><name>Brian</name><uri>http://www.blogger.com/profile/02474167972854342266</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-21461076.post-113957873867280594</id><published>2006-02-10T04:58:00.000-08:00</published><updated>2006-02-10T05:50:38.203-08:00</updated><title type='text'>Primadonna</title><content type='html'>If we ever want to give Drake his google maps &lt;a href="http://en.wikipedia.org/wiki/Mashup_%28web_application_hybrid%29"&gt;mash-up&lt;/a&gt;, we're going to have to store addresses with restaurants (also zip codes). Which raises two issues:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;How do we get addresses? Obviously we don't ask the user for them, 'cause if someone asked me to find and key in addresses for 12 restaurants before I could start using their system, I would fall out of my chair laughing. And if I hit my head on the corner of a desk on the way down, I'd sue. The only approach I can see is to do a yahoo search everytime a restaurant is created (using the restaurant name and group zip) and then prompt with "Do you mean X (at 12345 Y Street)?" And that has &lt;a href="http://www.roughtype.com/archives/2006/02/the_truthiness.php"&gt;risks&lt;/a&gt;, too.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;A lotta people like these here chain restaurants. So we run into an issue when "The Lunchtastics" in MI and "The Lunchmatics" in OH both want to include Chili's in their list of restaurants. Obviously there are about 12 million ways to solve this one, but all of them add more data. Plus if we're really moving to the tag model, it would be nice to know that the Chili's in MI and the Chili's in OH are both "crappy" "chains."&lt;/li&gt;&lt;/ol&gt;Whatever solution we come up with, I think Drake better start looking into the best practice way to parse the response data from Yahoo's Local Search Web Service in Ruby -- there's gotta be some way to dynamically create objects once you figure out Yahoo's XML-style.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21461076-113957873867280594?l=gratuitousdeveloper.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gratuitousdeveloper.blogspot.com/feeds/113957873867280594/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21461076&amp;postID=113957873867280594' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21461076/posts/default/113957873867280594'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21461076/posts/default/113957873867280594'/><link rel='alternate' type='text/html' href='http://gratuitousdeveloper.blogspot.com/2006/02/primadonna.html' title='Primadonna'/><author><name>Phelps</name><uri>http://www.blogger.com/profile/07998301896772845949</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-21461076.post-113957611314182363</id><published>2006-02-10T04:35:00.000-08:00</published><updated>2006-02-10T04:55:13.153-08:00</updated><title type='text'>It's True! We're So Lame!</title><content type='html'>So, apropos of nothing, an amusing excerpt:&lt;br /&gt;&lt;blockquote&gt;XML is not the answer.  It is not even the question ... "Some people, when confronted with a problem, think “I know, I’ll use XML.” Now they have two problems."&lt;/blockquote&gt;Well, maybe not apropos of absolutely nothing. &lt;a href="http://dirtsimple.org/2004/12/python-is-not-java.html"&gt;The article&lt;/a&gt; I snipped it from is moderately amusing (if unnecessarily abusive) for those &amp;lt;shudder&amp;gt;Java&amp;lt;/shudder&amp;gt; developers among us who are currently checking out flavor-of-the-month languages like Python (underhanded dig at Python intended solely to offset Java abuse).&lt;br /&gt;&lt;br /&gt;In our defense, though, I think there are plenty of Java developers out there just as appalled by the disgusting sprawl of XML as any other right-thinking human being -- things like &lt;a href="http://xdoclet.sourceforge.net/xdoclet/index.html"&gt;this&lt;/a&gt; wouldn't exist if there weren't. That said, in some ways the situation is even worse than dirtSimple knows.&lt;br /&gt;&lt;blockquote&gt;In Java, XML can be your savior because it lets you implement domain-specific languages and increase the flexibility of your application "without coding". In Java, avoiding coding is an advantage because coding means recompiling.&lt;/blockquote&gt;The sad fact is that you don't even always avoid a recompile. I mean, change the XML in your deployment descriptors and you're ejbc'ing again. Thank God I work for an organization enlightened enough that they never went down the entity bean path.&lt;br /&gt;&lt;br /&gt;I mean, really...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21461076-113957611314182363?l=gratuitousdeveloper.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gratuitousdeveloper.blogspot.com/feeds/113957611314182363/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21461076&amp;postID=113957611314182363' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21461076/posts/default/113957611314182363'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21461076/posts/default/113957611314182363'/><link rel='alternate' type='text/html' href='http://gratuitousdeveloper.blogspot.com/2006/02/its-true-were-so-lame.html' title='&lt;a href=&apos;http://www.snpp.com/episodes/1F10.html&apos;&gt;It&apos;s True! We&apos;re So Lame!&lt;/a&gt;'/><author><name>Phelps</name><uri>http://www.blogger.com/profile/07998301896772845949</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-21461076.post-113933701613297981</id><published>2006-02-07T10:21:00.000-08:00</published><updated>2006-02-07T10:30:16.133-08:00</updated><title type='text'>Fourth Place is Just the Third Loser</title><content type='html'>Many thanks to the blogger behind &lt;a href="http://rockandrolllifestyle.blogspot.com/2006/01/nine-quartets.html"&gt;rock and roll lifestyle&lt;/a&gt; for including us in his/her "Four sites I visit daily" list. Lord knows you can't challenge the taste of anyone who watches &lt;a href="http://televisionwithoutpity.com/show.cgi?show=163"&gt;Project Runway&lt;/a&gt;. I tell you what, the temptation to go back and retitle Drake's oh so boringly named "&lt;a href="http://gratuitousdeveloper.blogspot.com/2006/02/java-15-by-default-from-command-line.html"&gt;Java 1.5 by default from the command line on a Mac&lt;/a&gt;" to "Make it work" in honor of &lt;a href="http://www.bravotv.com/Project_Runway/Fashion_101/About_Tim.shtml"&gt;the lovable Mr. Gunn&lt;/a&gt; is almost overwhelming.&lt;br /&gt;&lt;br /&gt;Keep spreading the word and keep the Dr. Lunch dream alive!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21461076-113933701613297981?l=gratuitousdeveloper.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gratuitousdeveloper.blogspot.com/feeds/113933701613297981/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21461076&amp;postID=113933701613297981' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21461076/posts/default/113933701613297981'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21461076/posts/default/113933701613297981'/><link rel='alternate' type='text/html' href='http://gratuitousdeveloper.blogspot.com/2006/02/fourth-place-is-just-third-loser.html' title='Fourth Place is Just the Third Loser'/><author><name>Phelps</name><uri>http://www.blogger.com/profile/07998301896772845949</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-21461076.post-113933633054094281</id><published>2006-02-07T05:58:00.000-08:00</published><updated>2006-02-07T10:18:50.553-08:00</updated><title type='text'>One of These Days I Gotta Get Myself Organizized</title><content type='html'>So James and I were talking the other day about the need for some kind of formal defect/enhancement tracking, and it was all abstract and "wouldn't it be nice"-ish. Then in the shower this morning I had 6.8 million ideas and nowhere to put them, and I realized there was no way I would ever be able to hold them all in my head, let alone prioritize them, and all the sudden the walls were closing in and next thing I knew I was curled up in a little ball on the floor sobbing softly to myself...&lt;br /&gt;&lt;br /&gt;So I think we need to accelerate our plans in this department...&lt;br /&gt;&lt;br /&gt;I suppose if we really want to be all Web 2.0-y, we could use the free version of &lt;a href="http://www.basecamphq.com"&gt;Basecamp&lt;/a&gt; (allegedly perfect for people with 1 project). We don't really need file sharing, since any files we're sharing ought to be in SVN anyway, but  &lt;a href="http://www.bugzilla.org/"&gt;Bugzilla&lt;/a&gt; is probably more appropriate. This just in -- Drake says Bugzilla is a nightmare, so I guess we're back to square one. Suggestions are more than welcome.&lt;br /&gt;&lt;br /&gt;Anyway since we don't have a better space right now, a few strategic initiatives:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The central stumbling block to the Dr. Lunch experience (IMHO) is the effort involved in starting things up. You have to create a user account, create a group account, invite other people to join your group (all of whom have to create user accounts), then everyone adds restaurants, then you get to the "fun" part. I started to try to address this issue with the concept of "public" groups which allow outsiders (presumably outsiders new to Dr. Lunch) to request invitations to the group. Not only do you not have to create a group in this case, you don't even have to have any friends. I really like this, particularly the social aspect of it all, but I think we need to pursue simplification further. "Group-less" searches were one of the things I came up with -- if we had a zip code from a user, we could use average restaurant ratings to suggest some place nearby (also would be great for Dr. Lunch users on the road). Drake is a big fan of pulling restaurants from some sort of &lt;a href="http://developer.yahoo.net/search/local/V2/localSearch.html"&gt;external source&lt;/a&gt; to eliminate the need to type things in (and maybe find some places users didn't know about before), and I definitely think we should be incorporating this. Finally, we need to make signing in and starting up a group seem simpler. More like a single step.&lt;/li&gt;&lt;li&gt;Clearly Dr. Lunch was Web 2.0-ish before Web 2.0 was even called Web 2.0 (I'd like to remind new readers that my tongue is always at least 3/4 in cheek when I use the term Web 2.0), we let users control their data from the start. Users create and rate restaurants, add styles, etc. One thing we missed tho' is the whole concept of "Tagging," which I think has real applications here. My initial thought is that we take all the style data we have in our database right now and turn it into "tags". Then we let people add all sorts of non-style related tags. So instead of having an "Italian" restaurant, you'd have an "Italian" "Fast" "Expensive" restaurant and an "Italian" "Slow" "Cheap" restaurant. This kind of information would allow us to provide much better choices -- obviously some days you need a quick lunch, and Dr. Lunch should be able to adapt to those days.&lt;/li&gt;&lt;li&gt;We're getting some near duplicate restaurants and styles. Like "Rudys BBQ", "Rudys" and "Rudys Country Store &amp;amp; Bar-B-Q" (all in Austin). This is a problem when we're trying to display a list of nearby restaurants. I don't know how to solve it, but I know we can't be the only ones with this issue. Suggestions?&lt;/li&gt;&lt;/ul&gt;And a few tactical issues:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I need to make tables that page -- searching for nearby restaurants in some zip codes provides ridiculously long lists, they should fit on a page if they're going to be manageable.&lt;/li&gt;&lt;li&gt;We have email addresses for our users, once a decision has been made, we should let people email it to everyone else who is going to lunch, along with a meeting place and a time.&lt;/li&gt;&lt;li&gt;We need more flexible distances when searching for nearby restaurants. 5 miles is a long way in urban settings.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Ok, I feel a little better now...&lt;br /&gt;&lt;br /&gt;Tightness in my chest is slowly loosening...&lt;br /&gt;&lt;br /&gt;But if we don't figure out a better place to put these things than on our blog, I know it's just going to come back...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21461076-113933633054094281?l=gratuitousdeveloper.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gratuitousdeveloper.blogspot.com/feeds/113933633054094281/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21461076&amp;postID=113933633054094281' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21461076/posts/default/113933633054094281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21461076/posts/default/113933633054094281'/><link rel='alternate' type='text/html' href='http://gratuitousdeveloper.blogspot.com/2006/02/one-of-these-days-i-gotta-get-myself.html' title='One of These Days I Gotta Get Myself Organizized'/><author><name>Phelps</name><uri>http://www.blogger.com/profile/07998301896772845949</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-21461076.post-113913004218037450</id><published>2006-02-05T00:59:00.000-08:00</published><updated>2006-02-07T21:08:59.940-08:00</updated><title type='text'>Java 1.5 by default from the command line on a Mac</title><content type='html'>Maybe someone else will find this useful, it was sure a head-scrater for me for a while. The good ol' Mac with its "oh, we have to have a non-standard UNIX file layout" was giving me quite a puzzler on how you are supposed to set your preferences for what version of Java to run from a command line. If you have the &lt;a href="http://docs.info.apple.com/article.html?artnum=301073"&gt;Java 5.0 Release 1&lt;/a&gt;  from Apple it comes with a little utility which lets you decide what order to use the JVMs on your machine. Setting it to use 5.0 before 1.4.2 does not affect items run from Terminal or any other command line application. Thanks for nothing Apple.&lt;br /&gt;&lt;br /&gt;So to make this work (maybe this is intuitive for some people, but I'm not a big Mac developer or anything). Create or update the .profile in your home directory with the following:&lt;br /&gt;&lt;br /&gt;PATH=.:/System/Library/Frameworks/JavaVM.framework/&lt;br /&gt;Versions/1.5/Commands:$PATH&lt;br /&gt;JAVA_HOME:/System/Library/Frameworks/JavaVM.framework/&lt;br /&gt;Versions/1.5/Home&lt;br /&gt;&lt;br /&gt;Presto! Anything you run from the command line goes via Java 5, or 1.5 or whatever the hell they are calling it these days. Simple, easy, and doesn't involve messing with any system links which some people seem to think is evil for some reason or another.&lt;br /&gt;&lt;br /&gt;Hopefully one of these days Apple switches all machines over to run Java 5 by default.  Sure would be nice for those of us who run Tomcat 5.5 and don't want to mess with the Java 1.4 compatability library.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21461076-113913004218037450?l=gratuitousdeveloper.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gratuitousdeveloper.blogspot.com/feeds/113913004218037450/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21461076&amp;postID=113913004218037450' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21461076/posts/default/113913004218037450'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21461076/posts/default/113913004218037450'/><link rel='alternate' type='text/html' href='http://gratuitousdeveloper.blogspot.com/2006/02/java-15-by-default-from-command-line.html' title='Java 1.5 by default from the command line on a Mac'/><author><name>Brian</name><uri>http://www.blogger.com/profile/02474167972854342266</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21461076.post-113909138888635518</id><published>2006-02-04T13:59:00.000-08:00</published><updated>2006-02-04T14:22:57.953-08:00</updated><title type='text'>Progress</title><content type='html'>Can I tell you how much I love progress?&lt;br /&gt;&lt;br /&gt;4 or 5 or 6 years ago when I started this whole thing up, I had an issue. A ton of the functionality on &lt;a href="http://www.drlunch.com"&gt;the site&lt;/a&gt; is location dependent (finding new restaurants, finding groups to lunch with, etc.), which basically means if someone creates a group with a bogus zip code, it really hoses things up somethin' powerful. So my solution was to shell out $29.95 to &lt;a href="http://www.zipcodedownload.com/"&gt;these guys&lt;/a&gt;, in exchange for a nice list off all the active zip codes in the US, complete with latitude and longitude, and if anybody tries to enter a zip that's not in my list, WHAMMO, it's error message time.&lt;br /&gt;&lt;br /&gt;Well, that's all well and good, but the &lt;a href="http://www.usps.com/"&gt;US postal service&lt;/a&gt; rests for no man, and, as it turns out, new zip codes pop up every day. Now, I thought about all sorts of solutions at the time, most seriously screen scraping &lt;a href="http://www.zipinfo.com/search/zipcode.htm"&gt;this site&lt;/a&gt;, since they're nice enough to have a remarkably predictable GET-based URL structure that's easy to fake out. But screen scraping is so 18th century, and, on top of that, I was pretty sure that it would be morally wrong. Anyway, I set up Dr. Lunch to send us an alert whenever someone tried to use a zip we didn't recognize, so we would find out about it and fix it, like, 3 hours too late.&lt;br /&gt;&lt;br /&gt;Well, you know, time passes, and, as it passes, it brings progress. This week, progress reveals itself in the form of a bitchin' &lt;a href="http://developer.yahoo.net/maps/rest/V1/geocode.html"&gt;REST "web service" from yahoo&lt;/a&gt;. ("Web service" is in quotes here 'cause this whole "REST" thing makes it all little too easy. Web services should be painful.) Anyway, as of about 11 AM this morning, if you enter a zip code that's not in our original list, Dr. Lunch runs out and asks Mr. Yahoo. And if Mr. Yahoo says, "I've heard of that," well the Doctor just slams that data right into our database and you, the user, never even know what happened. It's, like, seamless, man. And, in one fell swoop, one of the more irritating shortcomings of the site is resolved.&lt;br /&gt;&lt;br /&gt;God, I love progress.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21461076-113909138888635518?l=gratuitousdeveloper.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gratuitousdeveloper.blogspot.com/feeds/113909138888635518/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21461076&amp;postID=113909138888635518' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21461076/posts/default/113909138888635518'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21461076/posts/default/113909138888635518'/><link rel='alternate' type='text/html' href='http://gratuitousdeveloper.blogspot.com/2006/02/progress.html' title='Progress'/><author><name>Phelps</name><uri>http://www.blogger.com/profile/07998301896772845949</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-21461076.post-113909033834478746</id><published>2006-02-04T13:53:00.000-08:00</published><updated>2006-02-04T14:23:43.723-08:00</updated><title type='text'>Developing For The Whole World</title><content type='html'>So I was finally able to reproduce our fun little bug by logging in to &lt;a href="http://www.drlunch.com"&gt;Dr. Lunch&lt;/a&gt;, manually deleting all of my cookies and then clicking on the sign off button. That got me to the point where I could fix things, but all the while I'm thinking, "this seems a pretty unlikely sequence of events in the real world." I mean, who does this?&lt;br /&gt;&lt;br /&gt;Then I'm shooting the breeze with one of my co-workers, who says "what if someone had cookies turned off?" What would happen? The exact same thing as happened in my exceptionally elaborate testing scenerio. D'oh. Well, at least I can sleep tonight.&lt;br /&gt;&lt;br /&gt;And, really, this is the wonderful thing about developing Dr. Lunch vs. developing in the corporate world. In the corporate world, no one turns off cookies. Or, if they do, you get a call and you say "turn back on cookies" and then you have a good laugh about how all users are idiots. But when you're developing for the wide open world, not really and option, G.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21461076-113909033834478746?l=gratuitousdeveloper.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gratuitousdeveloper.blogspot.com/feeds/113909033834478746/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21461076&amp;postID=113909033834478746' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21461076/posts/default/113909033834478746'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21461076/posts/default/113909033834478746'/><link rel='alternate' type='text/html' href='http://gratuitousdeveloper.blogspot.com/2006/02/developing-for-whole-world.html' title='Developing For The Whole World'/><author><name>Phelps</name><uri>http://www.blogger.com/profile/07998301896772845949</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-21461076.post-113893172976442183</id><published>2006-02-02T17:33:00.000-08:00</published><updated>2006-02-04T14:24:19.953-08:00</updated><title type='text'>Quality Is Job Four</title><content type='html'>Arggg...&lt;br /&gt;&lt;br /&gt;Typical  launch week...&lt;br /&gt;&lt;br /&gt;I sit around with visions in my head of all the glorious new functionality I'm going to add in the coming weeks (can't wait to incorporate this spiffy little &lt;a href="http://developer.yahoo.net/maps/rest/V1/geocode.html"&gt;web service&lt;/a&gt; from the kind folks at yahoo to make sure that nobody with a zip code created in the 2 years since I forked out $25 for a complete list gets prevented from signing up) and then all the sudden we're getting oddball NullPointerExceptions (non-repeatable, of course)...&lt;br /&gt;&lt;br /&gt;C'est la vie, I suppose...&lt;br /&gt;&lt;br /&gt;Logging is turned up to "FINER" now, so hope drake has plenty of drive space...&lt;br /&gt;&lt;br /&gt;I'll let you know when I figure it out...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21461076-113893172976442183?l=gratuitousdeveloper.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gratuitousdeveloper.blogspot.com/feeds/113893172976442183/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21461076&amp;postID=113893172976442183' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21461076/posts/default/113893172976442183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21461076/posts/default/113893172976442183'/><link rel='alternate' type='text/html' href='http://gratuitousdeveloper.blogspot.com/2006/02/quality-is-job-four.html' title='Quality Is Job Four'/><author><name>Phelps</name><uri>http://www.blogger.com/profile/07998301896772845949</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-21461076.post-113889291878239079</id><published>2006-02-02T06:52:00.000-08:00</published><updated>2006-02-04T14:25:57.620-08:00</updated><title type='text'>Backwards Compatibility Is For Suckers</title><content type='html'>Ok, so Dr. Lunch is officially a going concern again, having just undergone its first upgrade in (figuratively) forever. Thanks to Drake we're hooked into google analytics, so we have cool interactive graphs to tell us that for some strange reason all our hits are being routed through Guam. Thanks to James, we're one step closer to buzzword compliance -- "hibernate," folks, only 2 years behind the curve. And just for good measure, I fixed the CSS bug that made Dr. Lunch so remarkably unattractive when viewed via Firefox. For those of you keeping score out there, &amp;lt;!-- doesn't start a CSS comment, no matter what MS encouraged me to believe back in its days of browser dominance.&lt;br /&gt;&lt;br /&gt;We also took the opportunity to upgrade to Java 5 and Tomcat 5.5, which leads me to my rant for the day. Here's the &lt;a href="http://tomcat.apache.org/tomcat-5.5-doc/jndi-datasource-examples-howto.html"&gt;HOW TO page on JNDI datasources&lt;/a&gt; for Tomcat 5.5. Let's look a little closer, shall we?&lt;br /&gt;&lt;blockquote&gt;&lt;b&gt;Please note that JNDI resource configuration has changed somewhat between Tomcat 5.0.x and Tomcat 5.5.x.&lt;/b&gt;  You will most likely need to modify your JNDI resource configurations to match the syntax in the example below in order to make them work in Tomcat 5.5.x.&lt;/blockquote&gt;Now, I'm used to clean and smooth migrations between different versions of Tomcat, so I didn't bother to read the HOW TO. Why would I? I didn't need to know HOW TO. Our JNDI resource configuration was already TO'd. It had been TO'd for years. So, needless to say, the first time we dropped our little Dr. Lunch WAR into Tomcat 5.5, it crapped out. The cute little WAR that had served us in good times and bad, through Tomcat 2, 3, 4 and 5(.0). And now, all the sudden, it doesn't work. And is there a helpful error message, like, "hey, we decided we liked attributes more than elements, so your context.xml file doesn't work anymore"? No, my friends, there was not. And, as far as I can tell, that's what it came down to. Attributes over Elements. &lt;pre&gt;&lt;br /&gt;   &amp;lt;name&amp;gt;&lt;br /&gt;     password&lt;br /&gt;   &amp;lt;/name&amp;gt;&lt;br /&gt;   &amp;lt;value&amp;gt;&lt;br /&gt;     foo&lt;br /&gt;   &amp;lt;/value&amp;gt;&lt;br /&gt;&lt;/pre&gt; gets replaced by &lt;pre&gt;&lt;br /&gt;   password='foo'&lt;br /&gt;&lt;/pre&gt;Cleaner? Yes. Simpler? Yes. Way easier to parse? Boy, howdy. Worth breaking backwards compatibility over? Not even if you'd been subjected to a weekend of waterboarding. I mean, given the choice between attributes and nested elements in XML, I choose attributes every time (and, just for the record, I was doing it before it was cool, when I had to argue it out with everyone). But deciding 7 or 9 years into a product's lifecycle that you're going to change how your product gets configured because you like the way one style looks better than the other? Or because you want to cut out some lines of code you wrote years ago? That's boarderline deviant. Fear that this sort of change is going to sneak by is the reason I'm never allowed to upgrade anything at any organization with a bottom without 16 months of nagging.&lt;br /&gt;&lt;br /&gt;Now I know the developers of Tomcat are smart fellows (and fellettes). And I'm sure they had some remarkably good reason to break backwards compatibility. Maybe I could even find out what it was if I looked. Maybe I even will, now that I'm done expressing my ill-informed rage. But, really, I better read about a Y2K-sized calamity that was in the offing or else that little vein in my forhead is going to pop out every time I think about this for at least a few months.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21461076-113889291878239079?l=gratuitousdeveloper.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gratuitousdeveloper.blogspot.com/feeds/113889291878239079/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21461076&amp;postID=113889291878239079' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21461076/posts/default/113889291878239079'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21461076/posts/default/113889291878239079'/><link rel='alternate' type='text/html' href='http://gratuitousdeveloper.blogspot.com/2006/02/backwards-compatibility-is-for-suckers.html' title='Backwards Compatibility Is For Suckers'/><author><name>Phelps</name><uri>http://www.blogger.com/profile/07998301896772845949</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-21461076.post-113888823814732496</id><published>2006-02-02T05:38:00.000-08:00</published><updated>2006-02-04T14:26:56.550-08:00</updated><title type='text'>Bright Lights, Big Battle Station</title><content type='html'>The light hurts my eyes....thanks to Drake and Phelps for letting me out of "the hole" now that the new and improved &lt;a href="http://www.drlunch.com"&gt;Dr. Lunch&lt;/a&gt; is a fully-functional battle station...er...a technological terror...oh forget it.&lt;br /&gt;&lt;br /&gt;Anyway, now its on to reconciling the changes needed (i.e., the schema and Hibernate mappings) to support the current Java-based Dr. Lunch and a Rails-based Dr. Lunch.  For example,&lt;br /&gt;&lt;ul&gt;&lt;li&gt;the 'version' columns should be changed to 'lock_version' to take advantage of Rails' automatic optimistic locking.&lt;/li&gt;&lt;li&gt;the 'created_date' columns should be changed to 'created_at' to take advantage of the Rails' automatic date population feature.&lt;/li&gt;&lt;/ul&gt;I have already created the model classes in Rails, but I need to also setup the test cases ('cause its the right thing to do!).&lt;br /&gt;&lt;br /&gt;Well, back into "the hole."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21461076-113888823814732496?l=gratuitousdeveloper.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gratuitousdeveloper.blogspot.com/feeds/113888823814732496/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21461076&amp;postID=113888823814732496' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21461076/posts/default/113888823814732496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21461076/posts/default/113888823814732496'/><link rel='alternate' type='text/html' href='http://gratuitousdeveloper.blogspot.com/2006/02/bright-lights-big-battle-station.html' title='Bright Lights, Big Battle Station'/><author><name>James</name><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-21461076.post-113868936606755429</id><published>2006-01-30T22:23:00.000-08:00</published><updated>2006-02-04T14:27:16.313-08:00</updated><title type='text'>CSS</title><content type='html'>Fine, fine.... now that I know this works, here is some real content.&lt;br /&gt;&lt;br /&gt;So, both for my professional life and for Dr. Lunch, I've been looking into doing some real work with &lt;a href="http://www.w3.org/Style/CSS/"&gt;CSS&lt;/a&gt;.  Previously I had kinda, sort of known about in the half-ass way developers who don't really want to know anything about design kind of intutively know how it works and then don't really worry themselves about it very much -- now that I'm getting into it, I can see that is really a powerful tool and slick as hell to boot.&lt;br /&gt;&lt;br /&gt;Being a good and rightous person I went and picked up two O'Reilly books to get up to speed on CSS:  &lt;a href="http://www.oreilly.com/catalog/css2/index.html"&gt;Cascading Style Sheets: The Definitive Guide, Second Edition&lt;/a&gt; and &lt;a href="http://www.oreilly.com/catalog/cssckbk/index.html"&gt;CSS Cookbook&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Quick reviews after spending the weekend reading both of them (oh yes, exciting days around the Drake household this weekend.  I did win $500 playing blackjack Saturday night though, if anyone cares, so its not like the weekend was a total waste).  I usually really like O'Reilly books, and thought some of the &lt;i&gt;Cookbook&lt;/i&gt; series were very good references -- I use my Java Cookbook quite a bit.  CSS Cookbook though -- ugh.  Save your money.  If you are competent enough to do rudimentary CSS you aren't going to find anything in here that's actually useful.  If you don't know CSS, I think you time is better spent reading other books.  I see this one going on my bookshelf, gathering dust, and eventually turning into a beautiful butterfly or something. &lt;br /&gt;&lt;br /&gt;Cascading Style Sheets: The Definitive Guide, however, is an excellent reference and tells you everything you'd ever want to know on the subject, and has lots of useful advice for how to deal with various quirks you come across among the various flavors of browsers you might have to deal with on a public web site.  I highly recommend it if you are getting into doing serious development using CSS.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21461076-113868936606755429?l=gratuitousdeveloper.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gratuitousdeveloper.blogspot.com/feeds/113868936606755429/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21461076&amp;postID=113868936606755429' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21461076/posts/default/113868936606755429'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21461076/posts/default/113868936606755429'/><link rel='alternate' type='text/html' href='http://gratuitousdeveloper.blogspot.com/2006/01/css.html' title='CSS'/><author><name>Brian</name><uri>http://www.blogger.com/profile/02474167972854342266</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-21461076.post-113868856758173062</id><published>2006-01-30T22:22:00.000-08:00</published><updated>2006-02-04T14:27:35.770-08:00</updated><title type='text'>Check The Mic</title><content type='html'>*tap tap*&lt;br /&gt;&lt;br /&gt;Is thing thing on?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21461076-113868856758173062?l=gratuitousdeveloper.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gratuitousdeveloper.blogspot.com/feeds/113868856758173062/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21461076&amp;postID=113868856758173062' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21461076/posts/default/113868856758173062'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21461076/posts/default/113868856758173062'/><link rel='alternate' type='text/html' href='http://gratuitousdeveloper.blogspot.com/2006/01/check-mic.html' title='Check The Mic'/><author><name>Brian</name><uri>http://www.blogger.com/profile/02474167972854342266</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-21461076.post-113820663416725011</id><published>2006-01-25T07:48:00.000-08:00</published><updated>2006-02-04T14:28:23.580-08:00</updated><title type='text'>Call The Doctor</title><content type='html'>So, here's the post I probably should have started out with.&lt;br /&gt;&lt;br /&gt;The one that might have prevented painful head scratching when reading my actual initial post.&lt;br /&gt;&lt;br /&gt;The one with the whos and the whys.&lt;br /&gt;&lt;br /&gt;So here we go.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.dooryard.ca/nigh-on.html"&gt;Nigh-on&lt;/a&gt; 4 years ago now, I was on a software development project in Austin, Texas with Brian Drake and James Rehfeld (both of whom are, needless to say, almost as talented and handsome as myself). Over the course of our time in Texas, eating lunch became a major focus of our day. This is what happens when you work on a project away from home. Anyhow, trying to figure out &lt;span style="font-weight: bold;"&gt;where&lt;/span&gt; to go to lunch always seemed to consume (no pun intended) far too much of our allotted lunch break.&lt;br /&gt;&lt;br /&gt;These were, those of you who were around will remember, heady days. You could buy your pet food on the web, and the people who provided you with that service were rolling around naked in giant piles of money. Surely, I though, the web, which had solved so many of our other social ills, would solve this one. Unfortunately, a few hours on google suggested I was wrong.&lt;br /&gt;&lt;br /&gt;Now there wasn't much on TV, and, remember, I'm 1500 miles away from home here, so I sat down and wrote a little web app for a larf. You can read more about it all &lt;a href="http://rombuu.dyndns.org/about.jsp#Origin"&gt;here&lt;/a&gt;. Anyway, I ran it internally for a bit, but it was my officemate, Brian Drake (henceforth to be referred to only as "Drake", because I constantly misspell "Brian"), who kept that from being the proverbial end of that. He started a contest to rename the site when we found a squatter on the initial "whatsforlunch.com," he registered the eventual winner ("&lt;a href="http://www.drlunch.com"&gt;drlunch.com&lt;/a&gt;"), he paid for the first few years of hosting, and he's been hosting it himself since then.&lt;br /&gt;&lt;br /&gt;A shocking number of people found the site, and I discovered just how many bugs appear when you have thousands of people hitting a site you wrote for a larf. I did my best to clean things up, but then Dr. Lunch just sat there, chugging along untouched, up until a few months ago.&lt;br /&gt;&lt;br /&gt;When...&lt;br /&gt;&lt;br /&gt;James was studying up on &lt;a href="http://www.hibernate.org/"&gt;hibernate&lt;/a&gt;  and looking for a testcase to play with. I'd been meaning to move Dr. Lunch over to hibernate for ages, but had never gotten around to it, so I suggested he give it a go. Meanwhile, like every other geek in the world, I was getting excited about &lt;a href="http://www.rubyonrails.org/"&gt;Ruby on Rails&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/AJAX"&gt;AJAX&lt;/a&gt; and from thence arose my grand plan: create two versions of &lt;a href="http://www.drlunch.com"&gt;Dr. Lunch&lt;/a&gt;, one running on the trendiest Java stack available and one running on Rails. The user, in this vision, would be able to toggle between the two versions and end up with a seemless lunchtime experience. Developers everywhere would be fascinated. We would be able to record our experiences during the effort in this here blog, which might (just maybe) be of some interest to someone thinking about Java or Rails or the intersection of/transition between the two.&lt;br /&gt;&lt;br /&gt;Of course we may talk about a few other things as well -- I know Drake's been dying to have a forum to talk about his feelings on the true meaning of Arbor Day, and I've got a list a mile long of things I can be snarky about -- but basically it should be about software, about what goes into making it work and about whether or not massive overhyped technologies can live up to their hype.&lt;br /&gt;&lt;br /&gt;Phew, that was a slog to read through, huh? It certainly was to write. Things will be breezier in the future, honest.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21461076-113820663416725011?l=gratuitousdeveloper.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gratuitousdeveloper.blogspot.com/feeds/113820663416725011/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21461076&amp;postID=113820663416725011' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21461076/posts/default/113820663416725011'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21461076/posts/default/113820663416725011'/><link rel='alternate' type='text/html' href='http://gratuitousdeveloper.blogspot.com/2006/01/call-doctor.html' title='Call The Doctor'/><author><name>Phelps</name><uri>http://www.blogger.com/profile/07998301896772845949</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-21461076.post-113819744098608762</id><published>2006-01-25T05:43:00.000-08:00</published><updated>2006-02-04T14:28:50.946-08:00</updated><title type='text'>The Gratuitous Developer</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/5090/2171/1600/firstcut.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://photos1.blogger.com/blogger/5090/2171/320/firstcut.jpg" alt="" border="0" /&gt;&lt;/a&gt;So Drake and I had a great debate ("great" in the sense of "large" rather than in the sense of being important or having any fine qualities) yesterday about the redesign of &lt;a href="http://www.drlunch.com"&gt;Dr. Lunch&lt;/a&gt; (very preliminary cut of the log in page at right).&lt;br /&gt;&lt;br /&gt;I think it's pretty impressive when you consider that I'm a software developer with all the graphic design sense of a llama, but apparently Drake didn't agree, because I had to listen to a huge rant about "usability".&lt;br /&gt;&lt;br /&gt;What you can't see looking at a static picture is that thanks to the magic of the magical folks at &lt;a href="http://script.aculo.us/"&gt;script.aculo.us&lt;/a&gt;, each form magically disappears when you click on the header and then reappears when you click it again. Obviously though, when you first hit the page, you don't see a form until you click on its header, because anything else would be ridiculous, right?&lt;br /&gt;&lt;br /&gt;Well, apparently Drake believes that what's ridiculous is forcing someone to click on something -- particularly something that doesn't look "link-y" in the traditional HTML sense -- just to log in, and, ok, he's complete right. But the fun of Dr. Lunch is that the whole thing &lt;span style="font-weight: bold;"&gt;can&lt;/span&gt; be ridiculous, and I can make absurd arguments like that &lt;a href="http://www.executivesummary.com/archives/2005/10/writeboard_and.php"&gt;making our site less usable actually makes it more "Web 2.0"&lt;/a&gt;, just to watch Drake's blood boil, because who's going to stop me?&lt;br /&gt;&lt;br /&gt;Anyway, part of the fun of Dr. Lunch, insofar as it is fun, is that the whole thing is totally gratuitous. I mean, who really needs an over-engineered, self-important website to tell them where to go to lunch? Then again, who wants to go through life with only what they need? I mean, isn't the gratuitous what makes life worth living?&lt;br /&gt;&lt;br /&gt;Anyway, my desire to ensure I'd completely overthought the issue got me out to drag out the virtual dictionary for its thoughts on gratuitous-ness, and, well, here you go:&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt; a&lt;/b&gt; &lt;b&gt;:&lt;/b&gt; given unearned or without recompense &lt;b&gt;b&lt;/b&gt; &lt;b&gt;:&lt;/b&gt; not involving a return benefit, compensation, or consideration &lt;b&gt;c&lt;/b&gt; &lt;b&gt;:&lt;/b&gt; costing nothing &lt;b&gt;: &lt;a href="http://www.webster.com/dictionary/free"&gt;&lt;span style=""&gt;FREE&lt;/span&gt;&lt;/a&gt;&lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;not called for by the circumstances &lt;b&gt;: &lt;a href="http://www.webster.com/dictionary/unwarranted"&gt;&lt;span style=""&gt;UNWARRANTED&lt;/span&gt;&lt;/a&gt;&lt;/b&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;And, really, isn't that what we're up to here? Something totally unwarranted offered completely free? So there you go.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/21461076-113819744098608762?l=gratuitousdeveloper.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gratuitousdeveloper.blogspot.com/feeds/113819744098608762/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=21461076&amp;postID=113819744098608762' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/21461076/posts/default/113819744098608762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/21461076/posts/default/113819744098608762'/><link rel='alternate' type='text/html' href='http://gratuitousdeveloper.blogspot.com/2006/01/gratuitous-developer.html' title='The Gratuitous Developer'/><author><name>Phelps</name><uri>http://www.blogger.com/profile/07998301896772845949</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>
