<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title>Keith's Web Blog RSS Feed</title>
<language>en-us</language>
<link>http://www.keithwatanabe.net/index.php</link>
<description>Keith Watanabe's Website</description>
<item>
<title>Java Is NOT An Agile  Language</title>
<link>http://www.keithwatanabe.net/blogs/2007/8/7/9fd8a694e22bb98e7c67f3707bcf2279.html</link>
<description><![CDATA[My big boss asked me why my side of the project has been taking so long.  Why would a business layer be so hard to code up?  Why is the testing ridiculously slow?<br />
<br />
My answer: Java doesn't help this.<br />
<br />
Perhaps, it's my level of expertise in the language, but after dealing with this project, I've come to realize just how HEAVY Java can be.  I haven't had a chance to work in detail with the latest version, so I can't say that some of the newer features have made it better (I'm sure it has, but there are still deficiencies in the language).  It could be my lack of experience with Eclipse.  Maybe I'm not utilizing the right plugins and doing far too much &quot;hand coding&quot; in terms of boilerplate code.<br />
<br />
No, the problem is that the language is too bulky and takes itself too seriously.<br />
<br />
Read that statement again.  Especially the last part.<br />
<br />
Let me provide an example.<br />
<br />
Let's say you have a primitive type that's supposedly a char and is saved into the database as a number (0 or 1).  so in reality you need an int.  But let's say another object requires it either as an int or be turned back into a string.  So if you try to parse it, you might get an exception rather than letting the language auto-convert it.  So you're doing many things here: 1) checking if the value is null; 2) checking if the type can be converted; 3) potentially converting it over to another type; 4) converting it again.  And you may have to wrap all these operations in a big try/catch block.  If you're working with a database that may contain null values, and you're forced to use primitive types, you're royally screwed.  I mean, all you're trying to do is guarantee a value type, but you still need hundreds of checks.<br />
<br />
This is just awful.  And it's just for one value.<br />
<br />
What if you have 40-50 values?  How much of this do you have to deal with?  What if you have to deal with several operations that require you to do this 40-50 times?  What if there's no easy way to loop through the parameters in your object without having to take out the equally bulky Reflection API?<br />
<br />
In perl, since objects are glorified (or blessed more specifically) forms of hashes, arrays, scalars or globs, you could, especially if you use a hash, provide a method that can loop through, utilize the Fields pragma, and easily get the same benefit.<br />
<br />
In PHP, you can utilize variable interpolation by doing something like this for a dynamic method call:<br />
<br />
$obj-&gt;$method()<br />
<br />
You're pretty much out of luck with Java (at least in doing some easily the same way).  You can't naturally take advantage of in-built features to really help you through these situations.<br />
<br />
Worse yet, you might be forced to code declaratively in XML because it's nearly impossible to do something easily and dynamically in Java.  Take Spring and Hibernate as examples of this.<br />
<br />
Out-of-the-box, Java is just a monster of a language.  You are forced to employ various plugins, IDEs, frameworks, etc. to really get any significant and immediate benefit.  And that can take a while to do as well.  <br />
<br />
Notice the words used there: &quot;a while.&quot;  That implies time and implies not moving fast, which in turn implies lack of agility.  <br />
<br />
More of my friends are turning towards languages  like Ruby and being empowered from getting more work done through frameworks like Ruby on Rails.  I think people who continue to use Java are quite arrogant in believing too much in Sun's marketing.  Java only is good in the hands of those that use it.  But for me it's too difficult to get any real benefit that I can see.<br />
<br />
The truth is, at the end of the day, you just want to be productive.  The language is truly irrelevant as long as you and your peers utilizing it understand in detail how to get the best out of it.  I for one see Java as being verbose, cumbersome, and unnecessarily detailed.  The flaws that kept a lot of C/C++ programmers away I think never were truly addressed.  C/C++ programmers have some advantage over Java people since they have more power and speed naturally.  <br />
<br />
Overall, if you need to execute something quickly, consider NOT using Java to do the job, unless your people are extremely adept at it.  Mine aren't, nor am I so I think I will continue to stay away from it where possible.<br />]]></description>
<pubDate>Tue, 07 Aug 2007 09:40:50 -0600</pubDate>
<guid>http://www.keithwatanabe.net/blogs/2007/8/7/9fd8a694e22bb98e7c67f3707bcf2279.html</guid>
</item>
<item>
<title>Frameworks or Spaghetti Code?</title>
<link>http://www.keithwatanabe.net/blogs/2007/9/6/8102a6d6d8fb0e776d636626252e906b.html</link>
<description><![CDATA[I'm developing my own framework and began noticing something odd.  There seems to be this trade off in complexity in designing a good framework vs creating massive numbers of files along with a touch of copy-n-paste that makes for agile programming.  I think many of us would prefer just &quot;getting something out there&quot; by avoiding the stereotypical configuration hell, along with understanding all of a framework's idiosynchrasies.  The thing that sucks with these frameworks is the sheer number of files one must work with as opposed to redoing a unit of work each time.  I have to admit that even the framework I'm working on is starting to get hairy.  It's like you're trying to manage complexity by building more complexity and dependencies into these things.  One slip of a file and you're lost.  Compare that to a single file that looks more like a scripting mess, but which may turn out to be easier to change since everything is centralized.<br />
<br />
I guess one thing in the end to realize is what you expect from such exercises.  I'm still debating whether or not one side is right.  I think in the end though I would like to lean towards the side that eliminates complexity.  Don't you agree?]]></description>
<pubDate>Thu, 06 Sep 2007 00:48:04 -0600</pubDate>
<guid>http://www.keithwatanabe.net/blogs/2007/9/6/8102a6d6d8fb0e776d636626252e906b.html</guid>
</item>
<item>
<title>Prototypes, Agile Programming and Compliments</title>
<link>http://www.keithwatanabe.net/blogs/2008/2/15/0d0a804e23341f769d69c03c2341806c.html</link>
<description><![CDATA[At work I'm building a kind of administration piece for our application.  In a way, it's kinda like a dashboard/portal with some nice little hitches like drag-n-drop and in-place editing.  My boss was really impressed by the in-place editing part, which configures the application, and it showed because he eagerly showed our team leader/senior analyst what the application could do.  I think it was apparent that he realized I could implement an almost unlimited number of things.  Afterwards, apparently he was pondering most of the day better ways for improving some of the interface as he discussed the possibility of doing something like <strong>Yahoo Pipes</strong>.<br />
What this shows to me is that <strong>prototypes</strong> and <strong>agile</strong> style programming are the best way to a compliment in development.  Well, of course the prototype has to work and look nice, but the fact that someone wanted to show another person my work is the real compliment.<br />
<br />
I have to think that my current environment allows me to do positively productive compared to my prior employer.  With my prior employer, you had to receive all these silly sign offs before you could do anything.  Or the crappy <strong>waterfall</strong> methodology for handling software development.  Not to mention the limited technologies that I had to use rather than freely using <strong>Open Source </strong>libraries that I need to do the best job possible.  When the so-called production director had told me that the company was infamously known as having the worst technology in town, there was a <em>reason</em> for that!  I think they're still suffering from their <strong>VB 6.0</strong> legacy code and probably won't make the so-called deadline coming up this April.]]></description>
<pubDate>Fri, 15 Feb 2008 21:55:06 -0700</pubDate>
<guid>http://www.keithwatanabe.net/blogs/2008/2/15/0d0a804e23341f769d69c03c2341806c.html</guid>
</item>
</channel>
</rss>
