Youth culture killed my dog http://www.papermountain.org/blog/index.cgi Constantly one step behind the next big thing en-us Kentucky Ruby Users Group November 2006 Meeting http://www.papermountain.org/blog/index.cgi/Tech/Ruby/KYRUGNov2006.txl <p>We had an excellent turn out at this month&#8217;s meeting. I can feel the momentum!</p> <p>I did a <a href="http://www.papermountain.org/talks/continuations">lightning talk on continuations</a> . My aim was to titlate rather than illuminate. I believe I was successful. Oh&#8230;and just to be clear the example code is from <a href="http://onestepback.org/">Jim Weirich</a> .</p> <p>If you are in the area be sure join us next month. The <a href="http://www.kyrug.com">Kentucky Ruby Users Group</a> meets on the first Thursday of each month, but we haven&#8217;t settled into a permanent meeting location yet.</p> Calling All Ruby Nubies http://www.papermountain.org/blog/index.cgi/Tech/Ruby/CallingAllRubyNubies.txl <p>Good friends and fellow Rubists <a href="http://doodle.barelylegible.com/blog/">Darren Day</a> and Chuck Fouts are presenting <a href="http://www.missiondata.com/seminars_ruby.shtml">You&#8217;ll Be Seeing&#8230;Ruby: An Introduction to the Ruby Programming Language</a> .</p> <ul> <li>Fri. March 31, 2006</li> <li>8:30 a.m. &#8211; Registration and continental breakfast</li> <li>9:00 &#8211; 11:00 a.m. &#8211; Seminar Presentation</li> </ul> <ul> <li>U of L Shelby Campus Information Technology Resource Center (iTRC)</li> <li>9001 Shelbyville Road, Louisville, KY 40222</li> </ul> <p>I attended a preview of the seminar this past Sunday and I highly recommend it. Two long time Ruby skeptics in the audience (of four total) were so moved they are looking at using Ruby for their next projects. So if you are in the Louisville area, curious about Ruby, and like free breakfast, I don&#8217;t see how you could pass this up.</p> RubyConf 2005 http://www.papermountain.org/blog/index.cgi/Tech/Ruby/RubyConf2005.txl <p>By now you&#8217;ve read the <a href="http://rplanet.technomancy.us/">trip reports</a> , viewed the <a href="http://www.zenspider.com/Languages/Ruby/RubyConf2005.html">slides</a> , and listened to the <a href="http://yhrhosting.com:7000">presentations</a> . If you haven&#8217;t then shame on you, because there is lots of good stuff there. So I&#8217;ll just talk about what RubyConf did for me and how you should change your life to take advantage of my new found knowledge.</p> <p>First of all I got to do fan boy things like thank <a href="http://www.rubyist.net/~matz/">Matz</a> for Ruby.</p> <p><img src="http://www.papermountain.org/images/me_and_matz.jpg" alt="" /></p> <p>Note that <a href="http://www.martinfowler.com/">Martin Fowler</a> snuck into the picture, but I had to smudge him out since my understanding is that you have to buy a book from him before you can take his picture.</p> <p>I also got to have lots of great conversations with my fellow rubyists. Some of it was finally getting to put faces with irc nicks and blog entries. But the chance encounters at the lunch table and at the laptop filled tables during the panels were also edifying. I&#8217;m not a gregarious person by nature, so I am very glad I pushed myself to talk to people while at the conference. Talking things over with smart people that have similar goals is one of the best ways to generate interesting ideas. Now I just need to follow through on some of them.</p> <p>Probably the best part though was just spending three days concentrating on something like Ruby with lots of other people that were also enthusiastic about it. You could smell the Ruby in the air. Many of us spend our days working to pay the mortgage, changing diapers, and cooking dinner. Even though those things are important it is good for the spirit to put all of that on hold for a few days and just geek out. That I am posting a blog entry should be proof enough that RubyConf was very energizing.</p> <p>My plan is to go to at least two conferences a year. I went to <a href="http://www.nofluffjuststuff.com/">No Fluff Just Stuff</a> and RubyConf this year. And I am very happy with the results. Next year I plan to be at RubyConf again. I would also like to go to a large conference like <a href="http://conferences.oreillynet.com/os2005/"><span class="caps">OSCON</span></a> or maybe an <a href="http://en.wikipedia.org/wiki/Open_space_conference">open space conference</a> .</p> <p>So what are you doing to make yourself a better programmer and advance your career? One of the things should be regularly attending conferences.</p> Conferences http://www.papermountain.org/blog/index.cgi/Tech/Conferences.txl <p>There are two conferences I&#8217;ll be attending soon: <a href="http://www.nofluffjuststuff.com/show_view.jsp?showId=42">Cincinati No Fluff<br /> Just Stuff</a> and <a href="http://www.rubycentral.org/conference/">RubyConf</a>.<br /> If you would like to meet up to discuss <a href="http://www.seaside.st">Seaside</a><br /> like web frameworks in Java<br /> ( <a href="http://lakeshore.sourceforge.net">Lakeshore</a> ) or Ruby drop me a line<br /> at <a href="mailto:hensleyl@papermountain.org">hensleyl@papermountain.org</a> .</p> Poor Man's Ajax http://www.papermountain.org/blog/index.cgi/Tech/Javascript/PoorMansAjax.txl <p>Last summer I began working on extending <a href="http://www.cincomsmalltalk.com/userblogs/avi/View.ssp">Avi Bryant&#8217;s</a> <a href="http://www.cincomsmalltalk.com/userblogs/avi/blogView?showComments=true&amp;entry=3268075684">liveUpdater.js</a> and integrating it into <a href="http://borges.rubyforge.org/">Borges</a> . I was successful as far as that went and reported my results <a href="http://www.papermountain.org/blog/index.cgi/Tech/Ruby/BorgesDHTML.rdoc">here</a> and <a href="http://www.papermountain.org/blog/index.cgi/Tech/Ruby/AutoCompleteXMLHttpRequest.txl">here</a> . Unfortunately Borges turned out to be a dead end because of some fundamental problems with its implementation.</p> <p>However <a href="http://cvs.sourceforge.net/viewcvs.py/lakeshore/lakeshore/resources/liveUpdater.js?view=markup">my fork of liveUpdater.js</a> has went on to lead a productive part in the <a href="http://lakeshore.sourceforge.net">Lakeshore</a> project (more about it later). liveUpdater has been a core piece of the user interface for many commercial applications written by myself, the gentle folk at <a href="http://www.missiondata.com/">Mission Data</a> , and several other people that are using Lakeshore. So in short, liveUpdater is under active development and is being used successfully in several commercial applications.</p> <p>Enough with the history lesson&#8230; take a look at the <a href="http://www.papermountain.org/demos/live/">demo</a> . What&#8217;s happening is that some event on the client side (a keypress, a click, etc) triggers a request to the server via XMLHttpRequest. The server returns one or more snippets of <span class="caps">HTML</span>. The snippets replace existing sections of the current document based on their &#8220;id&#8221;. Very nice things are now possible with only a tiny amount (or in the case of Lakeshore, no) javascript coding. You get the dynamic feel and most of the responsiveness that is promised by <a href="http://www.adaptivepath.com/publications/essays/archives/000385.php">Ajax</a> without splitting your logic between the client and the server.</p> <p>Here is how the &#8220;Update time&#8221; link on the <a href="http://www.papermountain.org/demos/live/">demo</a> works. The <span class="caps">HTML</span> contains an empty div with an id of &#8220;time&#8221;. The &#8220;Update time&#8221; link is set to use liveUpdater with a target <span class="caps">URL</span> of <a href="http://www.papermountain.org/demos/live/live-demos-source.html">time.cgi</a> :<br /> <pre><br /> document.getElementById(&#8216;time-link&#8217;).onclick = liveUpdaterUri(&#8216;time-link&#8217;,&#8216;time.cgi&#8217;)<br /> </pre></p> <p>time.cgi sets the content type of its response to &#8220;text/xml&#8221;. It returns a body element containing a div with the current time. Note that the id of the div matches the id of the empty div in the original <span class="caps">HTML</span> document. If you wished to replace additional elements on the page just include them in the body element.</p>