<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Late to the Party: Category Java</title>
    <link>http://cwilliams.textdriven.com/articles/category/java</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>Ruby. Rails. Stuff.</description>
    <item>
      <title>RadRails dying off?</title>
      <description>&lt;p&gt;Kyle Shank of the &lt;a href="http://www.radrails.org/"&gt;RadRails&lt;/a&gt; team has mentioned that he and Matt are both working on a web startup. &lt;a href="http://www.radrails.org/blog/2007/3/5/radrails-future_1173078407"&gt;Looks like the priority of RadRails is lower&lt;/a&gt; for them - after all, RadRails doesn't make money.&lt;/p&gt;

&lt;p&gt;It's a shame that this sort of thing happens, but I can't say I'm all that surprised. I've been working on &lt;a href="http://rubyeclipse.sourceforge.net"&gt;RDT&lt;/a&gt; for nearly 4 years now and I can definitely say that people just don't pay for free things. You can beg for donations, but you shouldn't expect them. Given the amount of time and effort - and the sheer number of downloads - it just doesn't pay the bills to run an open source project that passively solicits donations. I estimate the per-user donations for RDT to be at about 1.4 cents*. And if we take out the one large donor?  .00071 cents per user.&lt;/p&gt;

&lt;p&gt;That doesn't quite cut it for rent and food, unless of course you get the entire world to use your product.&lt;/p&gt;

&lt;p&gt;I wish Kyle and Matt well and hope that others from the community step forward and help lead the project onward.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt;: Looks like RadRails isn't dying off - it's &lt;a href="http://www.crn.com/software/197801078"&gt;getting new ownership&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;* This estimate assumes we count RadRails users as RDT users, because RadRails contains RDT. It also uses just the raw zip downloads from Sourceforge for both projects. There is a large number of users we are not counting here who have downloaded via Eclipse's update site mechanism, and who use RDT from other distributions available.&lt;/em&gt;&lt;/p&gt;</description>
      <pubDate>Tue, 06 Mar 2007 14:02:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:fb4bb0b3-a040-4804-90fe-bc0f0bb369bb</guid>
      <author>chris.a.williams@gmail.com (Chris)</author>
      <link>http://cwilliams.textdriven.com/articles/2007/03/06/radrails-dying-off</link>
      <category>Programming</category>
      <category>Personal</category>
      <category>Ruby</category>
      <category>Java</category>
      <category>RDT</category>
      <category>radrails</category>
      <category>open</category>
      <category>source</category>
    </item>
    <item>
      <title>RDT gets Refactoring support</title>
      <description>&lt;p&gt;Well the &lt;a href="http://jutopia.tirsen.com/articles/2007/01/30/and-you-didnt-think-it-could-be-done"&gt;cat is out&lt;/a&gt; &lt;a href="http://on-ruby.blogspot.com/2007/02/ruby-refactoring-rubicon.html"&gt;of the bag&lt;/a&gt;: &lt;a href="http://r2.ifsoftware.ch/trac"&gt;Mirko Stocker and his cohorts&lt;/a&gt; have committed their refactoring support to &lt;a href="http://rubyeclipse.sourceforge.net/"&gt;&lt;abbr title="Ruby Development Tool"&gt;RDT&lt;/abbr&gt;&lt;/a&gt;'s Subversion repository.&lt;/p&gt;

&lt;p&gt;This means we'll be able to roll out 0.9.0 with this support. Right now we're working to get it integrated into the build process, so that it will begin showing up in our new builds. I'm pretty excited myself, because I've had little chance to try out their work.&lt;/p&gt;

&lt;p&gt;This refactoring support joins other recent work in RDT which allows us to do some occurence marking of variables, code completion and other exciting features (thanks &lt;a href="http://jayunit.net/"&gt;Jason&lt;/a&gt;!). There's certainly a long way yet to go to get the tools polished - for instance we still have a hard time doing code completion (or much else) on a file which is being edited while the syntax is temporarily incorrect (the &lt;a href="http://www.jruby.org"&gt;JRuby&lt;/a&gt; parser is great, but not so forgiving) - but we're constantly marching forward.&lt;/p&gt;

&lt;p&gt;Look for &lt;a href="http://rubyeclipse.mktec.com/cgi-bin/trac.py/roadmap"&gt;0.9.0 to come out sometime this month (we're aiming for the 15th)&lt;/a&gt;!&lt;/p&gt;</description>
      <pubDate>Tue, 06 Feb 2007 16:37:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:1af8c68c-4cb7-4341-a638-b8e396d9f737</guid>
      <author>chris.a.williams@gmail.com (Chris)</author>
      <link>http://cwilliams.textdriven.com/articles/2007/02/06/rdt-gets-refactoring-support</link>
      <category>Programming</category>
      <category>Personal</category>
      <category>Ruby</category>
      <category>Java</category>
      <category>refactoring</category>
      <category>ruby</category>
      <category>eclipse</category>
      <category>ide</category>
    </item>
    <item>
      <title>JRuby guys hired by Sun, Netbeans Ruby IDE to come?</title>
      <description>&lt;p&gt;Given the news about Sun hiring the &lt;a href="http://www.jruby.org"&gt;JRuby&lt;/a&gt; developers, I thought I should chime my two cents in on the ongoing blog discussions.&lt;/p&gt;
&lt;p&gt;First, and foremost, congratulations to Thomas and Charles. This is great news for their project and for Ruby in general. It goes a long way to say that the company behind Java is now supporting a project to run Ruby on the JVM. Maybe now I can give presentations on Ruby at my employer and not be chased with pitchforks and tar.&lt;/p&gt;
&lt;p&gt;Next, I'd like to address a number of commenters out there. In particular, &lt;a href="http://www.redmonk.com/cote/archives/2006/09/el_rey_de_caf.html"&gt;Cote'&lt;/a&gt;: Hi there. There's already a project out there to make Eclipse into a Ruby IDE. I's called &lt;a href="http://rubyeclipse.sourceforge.org"&gt;RDT&lt;/a&gt; and I'm one of the lead developers. It's also the set of plugins that those &lt;a href="http://www.radrails.org"&gt;RadRails&lt;/a&gt; guys build on top of. Go check it out. Oh, and &lt;a href="http://www.tbray.org/ongoing/When/200x/2006/09/07/JRuby-guys"&gt;Tim Bray should too&lt;/a&gt;. He makes no mention of it, but maybe that has to do with politics...&lt;/p&gt;
&lt;p&gt;Speaking of politics, the underlying tone behind the news is that Sun is looking to create a Ruby IDE in Netbeans. I have to say I'm a bit torn over this. It's great to see a large company want to create a full Ruby IDE and competition leads to better products for the end users, the Ruby community. But can Sun please get over itself and acknowledge Eclipse exists? It seems a bit of a waste of time for them to roll their own IDE rather than support an existing editor like RDT (or &lt;a href="http://freeride.rubyforge.org/wiki/wiki.pl"&gt;FreeRIDE&lt;/a&gt;, or whatever). I guess it's a bit too naive of me to think that they'd do something that didn't push their corporate agenda to some extent. Well, I guess I could always ask IBM to throw me some cash...&lt;/p&gt;</description>
      <pubDate>Thu, 07 Sep 2006 22:40:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:f88671d7-6659-47c7-9391-e972b1cb1d88</guid>
      <author>chris.a.williams@gmail.com (Chris)</author>
      <link>http://cwilliams.textdriven.com/articles/2006/09/07/jruby-guys-hired-by-sun-netbeans-ruby-ide-to-come</link>
      <category>Programming</category>
      <category>Personal</category>
      <category>Ruby</category>
      <category>Java</category>
      <category>RDT</category>
      <category>eclipse</category>
      <category>netbeans</category>
      <category>sun</category>
      <category>jruby</category>
      <category>hire</category>
      <category>developers</category>
      <category>ruby</category>
    </item>
    <item>
      <title>Tim Bray on Ruby IDEs</title>
      <description>&lt;p&gt;Tim Bray has been posting an &lt;a href="http://www.tbray.org/ongoing/When/200x/2006/08/17/JRuby"&gt;ongoing series of articles&lt;/a&gt; documenting his experience in creating a Ruby based Atom protocol exerciser. His inisghts are a nice look from a newcomer to the language and he makes a good case for a number of areas where Ruby is behind the times and behind other prevailing languages.&lt;/p&gt;
&lt;p&gt;One such case is in &lt;a href="http://www.tbray.org/ongoing/When/200x/2006/09/05/What-Ruby-Needs"&gt;&lt;abbr title="Integrated Development Environment"&gt;IDE&lt;/abbr&gt;s&lt;/a&gt;. I've been aware of this since I began looking at Ruby, and obviously with my work on &lt;abbr title="Ruby Development Tools"&gt;RDT&lt;/abbr&gt; I've been trying to help out in this regard.&lt;/p&gt;
&lt;p&gt;I would encourage Tim and other newcomers to the language to give &lt;a  hfef="http://rubyeclipse.sourceforge.net/"&gt;RDT&lt;/a&gt; a serious try. While we're light-years away from the level of functionality found in Java support for Eclipse, we've been making some exciting progress on RDT lately.&lt;/p&gt;
&lt;p&gt;In fact, for those who don't mind the bleeding edge, you can download our nightly builds via Eclipse's update mechanism at &lt;a href="http://updatesite.rubypeople.org/nightly"&gt;http://updatesite.rubypeople.org/nightly&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The latest builds now include the work that was completed by &lt;a href="http://soc.jayunit.net/"&gt;Jason in his Google Summer of Code project&lt;/a&gt;. So the astute among you should now notice mark occurences support for variables, and even some code completion. We're working to polish those features up and get code completion working under more conditions. Right now, it'll work easily to complete variable names in scope or methods on a declared type. There are some severe limitations as to when the method completion will work for now: it's the first method in the chain on the object and the type is able to be inferred (i.e. declared in scope). To try out the type inferrencing (and show I'm not lying!), you can use a simple example of invoking code completion on code like "1.".&lt;/p&gt;
&lt;p&gt;I know, it's a long way from the &lt;abbr title="Java Development Tools"&gt;JDT&lt;/abbr&gt;, but we're getting there. And with a pending patch to &lt;a href="http://www.jruby.org"&gt;JRuby&lt;/a&gt;, we'll also be able to integrate the &lt;a href="http://morki.ch/rubyrefactoring"&gt;refactoring/code generation work by Mirko and company&lt;/a&gt;.&lt;/p&gt;</description>
      <pubDate>Wed, 06 Sep 2006 13:33:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:550b1197-29d8-4ba3-bdee-1b8782a97168</guid>
      <author>chris.a.williams@gmail.com (Chris)</author>
      <link>http://cwilliams.textdriven.com/articles/2006/09/06/tim-bray-on-ruby-ides</link>
      <category>Programming</category>
      <category>Personal</category>
      <category>Ruby</category>
      <category>Java</category>
      <category>ruby</category>
      <category>RDT</category>
      <category>eclipse</category>
      <category>java</category>
      <category>refactoring</category>
      <category>programming</category>
      <category>ide</category>
      <category>editor</category>
    </item>
    <item>
      <title>Google Summer of Code</title>
      <description>&lt;p&gt;Google has again decided to run it's &lt;a href="http://code.google.com/soc/"&gt;Summer of Code&lt;/a&gt; - funding students to work on open source projects. Unfortunately, last year Ruby wasn't able to get in by the deadline, but this year David Black made sure Ruby Central was a participating organization. We had 14 mentors signup and (last count I saw) 84 student proposals.&lt;/p&gt;

&lt;p&gt;The proposal review period is over and project allocations have been announced. Ruby Central received funding for 10 proposals, and &lt;a href="http://code.google.com/soc/ruby/about.html"&gt;the successful projects have been announced&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Among those accepted projects is work by Jason Morrison on &lt;a href="http://rubyeclipse.sourceforge.net/"&gt;&lt;abbr title="Ruby Development Tools"&gt;RDT&lt;/abbr&gt;&lt;/a&gt;! He's a student at &lt;a href="http://www.rit.edu"&gt;&lt;abbr title="Rochester Institute of Technology"&gt;RIT&lt;/abbr&gt;&lt;/a&gt; (my alma mater) who helped start up our local Ruby/Rails group. I'll be his mentor, and he'll be working on trying to improve &lt;abbr title="Ruby Development Tools"&gt;RDT&lt;/abbr&gt; to do some code resolution and type inferrence in an effort to improve code completion and other features (such as marking occurences of variables) for our project. Hopefully he'll also be releasing some sort of white paper/documentation to benefit the greater Ruby community beyond &lt;abbr title="Ruby Development Tools"&gt;RDT&lt;/abbr&gt;/&lt;a href="http://jruby.sourceforge.net/"&gt;JRuby&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Thansk to Jason for the great proposal, and expect to see some more news about his work here in the future.&lt;/p&gt;</description>
      <pubDate>Fri, 26 May 2006 13:03:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:4138fc95-0ce2-4a86-b46e-822db9c60503</guid>
      <author>chris.a.williams@gmail.com (Chris)</author>
      <link>http://cwilliams.textdriven.com/articles/2006/05/26/google-summer-of-code</link>
      <category>Java</category>
      <category>Personal</category>
      <category>Programming</category>
      <category>Ruby</category>
      <category>Rochester</category>
    </item>
    <item>
      <title>Ruby Can Learn From Perl</title>
      <description>&lt;p&gt;I followed an interesting link off of &lt;a href="http://www.tbray.org/ongoing/When/200x/2005/11/20/Regex-Promises"&gt;Tim Bray's posting&lt;/a&gt;, which explains the differences in &lt;a href="http://www.tbray.org/ongoing/When/200x/2004/08/22/PJre"&gt;Java and Perl regex performance&lt;/a&gt;. The original article posted by Tim Bray notes his surprise that Java actually beats Perl in terms of the performance of regexes. However, it seems that Perl is losing the benchmark because &lt;a href="http://perlmonks.org/index.pl?node_id=502408"&gt;they've implemented a better way to decrease some exponential matches to linear time.&lt;/a&gt; So the question is, is the tradeoff worth it? And if it is, then Ruby could stand to gain from implementing something similar to Perl.&lt;/p&gt;
&lt;p&gt;Here's a simple test case, which shows that Ruby falls in the same camp as Java - they don't handle the edge case in favor of keeping faster general regex. Run the following script and try increasing that 20 by one each run and see how the amount of time to finish increases - it's frightening.&lt;/p&gt;

&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;notextile&gt;&lt;span class="ident"&gt;string&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;
&lt;span class="number"&gt;20&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;times&lt;/span&gt; &lt;span class="punct"&gt;{&lt;/span&gt; &lt;span class="ident"&gt;string&lt;/span&gt; &lt;span class="punct"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;foo &lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;}&lt;/span&gt;
&lt;span class="ident"&gt;string&lt;/span&gt; &lt;span class="punct"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;fo&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;
&lt;span class="ident"&gt;start&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="constant"&gt;Time&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;now&lt;/span&gt;
&lt;span class="ident"&gt;string&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;match&lt;/span&gt;&lt;span class="punct"&gt;(/&lt;/span&gt;&lt;span class="regex"&gt;^(&lt;span class="escape"&gt;\s&lt;/span&gt;*foo&lt;span class="escape"&gt;\s&lt;/span&gt;*)*$&lt;/span&gt;&lt;span class="punct"&gt;/)&lt;/span&gt;
&lt;span class="ident"&gt;end_time&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="constant"&gt;Time&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;now&lt;/span&gt;
&lt;span class="ident"&gt;puts&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;finished in &lt;span class="expr"&gt;#{end_time - start}&lt;/span&gt; seconds&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;/notextile&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

</description>
      <pubDate>Mon, 21 Nov 2005 19:21:05 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:3e3f0f39-02d2-4279-9be5-3072e2385cd3</guid>
      <author>chris.a.williams@gmail.com (Chris)</author>
      <link>http://cwilliams.textdriven.com/articles/2005/11/21/ruby-can-learn-from-perl</link>
      <category>Programming</category>
      <category>Java</category>
      <category>Ruby</category>
      <category>ruby</category>
      <category>perl</category>
      <category>java</category>
      <category>regex</category>
      <category>regular</category>
      <category>expression</category>
    </item>
    <item>
      <title>Using the Ruby Development Tools plug-in for Eclipse</title>
      <description>&lt;p&gt;I just noticed today that there's a nice new article up on IBM's developerworks entitled &lt;a href="http://www-128.ibm.com/developerworks/java/library/os-rubyeclipse/?ca=drs-"&gt;Using the Ruby Development Tools plug-in for Eclipse&lt;/a&gt;. The article gives a nice little overview of using the &lt;a href="http://rubyeclipse.sourceforge.net"&gt;Ruby Development Tools Plugins&lt;/a&gt; within Eclipse and developing Ruby code with them. The article ends by incorrectly stating that the current release is 0.5.0, we've &lt;a href="http://cwilliams.textdriven.com/articles/2005/09/29/ruby-development-tools-0-6-0-is-out"&gt;launched 0.6.0&lt;/a&gt; with a significant number of new features. Hopefully this will help drum up some new users and even developers for the plugins!&lt;/p&gt;</description>
      <pubDate>Thu, 13 Oct 2005 14:25:40 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:db3be5c9416df888023c3b0694496c24</guid>
      <author>chris.a.williams@gmail.com (Chris)</author>
      <link>http://cwilliams.textdriven.com/articles/2005/10/13/using-the-ruby-development-tools-plug-in-for-eclipse</link>
      <category>Ruby</category>
      <category>Java</category>
      <category>Programming</category>
      <category>RDT</category>
      <category>ruby</category>
      <category>eclipse</category>
      <category>development</category>
      <category>idea</category>
      <category>tools</category>
      <category>developerworks</category>
      <category>thoughtworks</category>
    </item>
    <item>
      <title>From Java to Ruby</title>
      <description>&lt;p&gt;I've written up a nice summary page to help Java programmers transition &lt;a href="http://cwilliams.textdriven.com/pages/java_to_ruby"&gt;from Java to Ruby (with love)&lt;/a&gt;. This is for all those Java programmers interested in taking a peek at Ruby, but don't know where to start. I've gathered up a bunch of useful links and information to help you check out the language.&lt;/p&gt;</description>
      <pubDate>Fri, 07 Oct 2005 15:57:45 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:624dcbd360a71df2532294f548edffb9</guid>
      <author>chris.a.williams@gmail.com (Chris)</author>
      <link>http://cwilliams.textdriven.com/articles/2005/10/07/from-java-to-ruby</link>
      <category>Programming</category>
      <category>Ruby</category>
      <category>Java</category>
    </item>
    <item>
      <title>Close your Streams</title>
      <description>&lt;p&gt;All right, so this post isn't for most programmers out there. It is, however, meant for any new Java programmers, or just really aloof ones.&lt;/p&gt;
&lt;p&gt;I work at a large Fortune 500 company as a contractor. We're working on a project in Java that is now on about it's 4th or 5th year of life.&lt;/p&gt;
&lt;p&gt;One of my co-workers, who's been working on the project for at least 3 years now had the following code in one of her classes:&lt;/p&gt;
&lt;pre class="code"&gt;
try {
  Connection conn = getConnection(url);
  Request req = new Request(message);
  Response resp = conn.sendMessage(req);
  if (resp == null || resp.isErrorCode()) {
    sendFailure();
  } else {
    sendSuccess();
  }
  conn.close();		           			
} catch (IOException e) {
  e.printStackTrace();		           		
}	
&lt;/pre&gt;
&lt;p&gt;See the problem?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Exactly.&lt;/strong&gt; She didn't close her socket in a finally clause. That means if we do get an Exception, the socket might never be closed properly.&lt;/p&gt;
&lt;p&gt;She should have done something like this:&lt;/p&gt;
&lt;pre class="code"&gt;
Connection conn = null;
try {
  conn = getConnection(url);
  Request req = new Request(message);
  Response resp = conn.sendMessage(req);
  if (resp == null || resp.isErrorCode()) {
    sendFailure();
  } else {
    sendSuccess();
  }           			
} catch (IOException e) {
  e.printStackTrace();		           		
} finally {
  try {
    // always properly close the connection
    if(conn != null) conn.close();
  } catch (CommException e) {
    // ignore
  }
}			
&lt;/pre&gt;
&lt;p&gt;Just another reason why Ruby is nicer. Using the block form of IO.open ensures that the stream will always get closed, and that we don't have to do all sorts of double-wrapping with try-catch code.&lt;/p&gt;</description>
      <pubDate>Fri, 15 Jul 2005 15:57:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:5a23a0793b7012f967d727afb6173c43</guid>
      <author>cwilliams</author>
      <link>http://cwilliams.textdriven.com/articles/2005/07/15/close-your-streams</link>
      <category>Programming</category>
      <category>Ruby</category>
      <category>Java</category>
    </item>
  </channel>
</rss>
