<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>Grok Programming</title>
	<atom:link href="http://www.grok-programming.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.grok-programming.com</link>
	<description>common sense software development</description>
	<pubDate>Thu, 17 Apr 2008 00:54:49 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5</generator>
	<language>en</language>
			<item>
		<title>See Groovy Run</title>
		<link>http://www.grok-programming.com/2008/02/26/see-groovy-run/</link>
		<comments>http://www.grok-programming.com/2008/02/26/see-groovy-run/#comments</comments>
		<pubDate>Tue, 26 Feb 2008 14:29:56 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
		
		<category><![CDATA[groovy]]></category>

		<category><![CDATA[scripting languages]]></category>

		<guid isPermaLink="false">http://www.grok-programming.com/2008/02/26/see-groovy-run/</guid>
		<description><![CDATA[eWeek has an interesting article on Groovy&#8217;s rise in the ranks of programming languages.
&#8220;Groovy now ranks 31 on the list of top programming languages, according to Davis and data from the TIOBE Software BV. Groovy had cracked the top 100 six months ago, moving from 103 to 52, and jumped to its current position in [...]]]></description>
			<content:encoded><![CDATA[<p>eWeek has an interesting article on <a href="http://www.eweek.com/c/a/Application-Development/Groovy-Climbing-Programmer-Ranks/" title="eWeek Groovy article" target="_blank">Groovy&#8217;s rise in the ranks of programming languages</a>.</p>
<p>&#8220;<span class="Article_Date"><span class="txt"><em>Groovy now ranks 31 on the list of top programming languages, according to Davis and data from the TIOBE Software BV. Groovy had cracked the top 100 six months ago, moving from 103 to 52, and jumped to its current position in a January poll.</em>&#8220;</span></span></p>
<p>It is fantastic to see <a href="http://groovy.codehaus.org/" title="Groovy programming language homepage" target="_blank">Groovy</a> getting some real positive attention I can only hope that will spur people to more work on the <a href="http://groovy.codehaus.org/Eclipse+Plugin" title="Groovy Eclipse Plugin homepage" target="_blank">Groovy Eclipse plugin</a>. <img src='http://www.grok-programming.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.grok-programming.com/2008/02/26/see-groovy-run/feed/</wfw:commentRss>
		</item>
		<item>
		<title>If I could only have one book&#8230;</title>
		<link>http://www.grok-programming.com/2008/02/26/if-i-could-only-have-one-book/</link>
		<comments>http://www.grok-programming.com/2008/02/26/if-i-could-only-have-one-book/#comments</comments>
		<pubDate>Tue, 26 Feb 2008 14:12:08 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
		
		<category><![CDATA[books]]></category>

		<category><![CDATA[software development]]></category>

		<category><![CDATA[agile]]></category>

		<category><![CDATA[domain driven design]]></category>

		<category><![CDATA[oop]]></category>

		<category><![CDATA[uml]]></category>

		<guid isPermaLink="false">http://www.grok-programming.com/2008/02/26/if-i-could-only-have-one-book/</guid>
		<description><![CDATA[One of the questions one of my friends asked in a comment on another posting was,  “So, if you could recommend only 1 technical book I get through this year, which one would it be?”  I read way too many books.  In fact, my doctor says if I don&#8217;t stop I&#8217;ll turn [...]]]></description>
			<content:encoded><![CDATA[<p>One of the questions one of my friends asked in a comment on another posting was,  “So, if you could recommend only 1 technical book I get through this year, which one would it be?”  I read way too many books.  In fact, my doctor says if I don&#8217;t stop I&#8217;ll turn into a nerd.  I&#8217;m willing to risk it.  Anyway, I&#8217;m far from one to shrink away from such a vague and wide ranging question.  These aren&#8217;t book reviews but simply a few of the reasons I think the book is pretty good or where it could be better.  So in  no specific order here they are&#8230;.<span id="more-11"></span></p>
<p><a href="http://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215/ref=pd_bbs_sr_1?ie=UTF8&amp;s=books&amp;qid=1203369225&amp;sr=8-1" title="Amazon link for the ">Domain-Driven Design: Tackling Complexity in the Heart of Software</a></p>
<p>I love this book and return to it once a year at least.  This book brought into focus for me the power and expressiveness that a healthy domain model can add to an application.  I know a lot of people don&#8217;t buy into the idea of domain objects having both data and behavior and prefer an <a href="http://martinfowler.com/bliki/AnemicDomainModel.html" title="Martin Fowler's thoughts on anemic domain model" target="_blank">anemic domain model</a> but those people are crazy.  This books gives fantastic tactics and strategies for building a domain model including topics such as tips for those times when your project has to share a domain model with another project.  The downside of this book is that is it written in a more academic style and is a bit hard to read in spots.</p>
<p><a href="http://www.amazon.com/Integrating-Agile-Development-World-Programming/dp/1584503645/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1203428789&amp;sr=8-1" title="Amazon page for Integrating Agile Development in the Real World" target="_blank">Integrating Agile Development in the Real World</a></p>
<p>I&#8217;d actually picked up this book on a pure whim but loved it.  It gives a fantastic introduction to numerous <a href="http://en.wikipedia.org/wiki/Agile_software_development" title="Agile software development page on wikipedia" target="_blank">agile methodologies</a> and how to fit them into a project developing real applications.  It is a guide to implementing the theories of agile development in a meaningful way. The book does a really good job of providing examples and explaining the &#8220;why&#8221; behind various agile behaviors. A big plus to this book is that it is a really easy read.</p>
<p><a href="http://www.amazon.com/Applying-UML-Patterns-Introduction-Object-Oriented/dp/0131489062/ref=pd_bbs_sr_1?ie=UTF8&amp;s=books&amp;qid=1203428855&amp;sr=8-1" title="Amazon page for " target="_blank">Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development</a></p>
<p>While this book has &#8220;Introduction&#8221; in the title it is a bit more advanced than that.  The writing style wasn&#8217;t really my bag but the content is extremely useful.  I&#8217;ve referenced this book when a more junior developer is looking to get a more solid grounding in OOP and a taste of Agile development.</p>
<p><a href="http://www.amazon.com/Pragmatic-Programmer-Journeyman-Master/dp/020161622X/ref=pd_bbs_sr_1?ie=UTF8&amp;s=books&amp;qid=1203429322&amp;sr=1-1" title="Amazon link for " target="_blank">The Pragmatic Programmer: From Journeyman to Master</a></p>
<p>This one being on the list is a bit of a no-brainer.  It is a fantastically easy read since each of the chapters are pretty small and well-focused.  The book as a whole isn&#8217;t that long either.  This book wanders around a bit covering topics from learning to use an editor really well to software design issues.<br />
<a href="http://www.amazon.com/Agile-Software-Development-Cooperative-Game/dp/0321482751/ref=pd_bbs_3?ie=UTF8&amp;s=books&amp;qid=1203429382&amp;sr=1-3" title="Amazon page for " target="_blank">Agile Software Development: The Cooperative Game</a></p>
<p>Okay, this book is a fantastic look at communication and software development methodologies but it isn&#8217;t an easy read.  <a href="http://en.wikipedia.org/wiki/Alistair_Cockburn" title="Alistair Cockburn wikipedia page" target="_blank">Alistair Cockburn</a> really goes into detail about the data and theories he used when forming the <a href="http://www.agilekiwi.com/crystal_clear.htm" title="Crystal methodologies introduction" target="_blank">Crystal methodologies</a> but the same applies to general Agile development.  If you have the time to work through this book you&#8217;ll have learned a great amount about the &#8220;whys&#8221; of Agile development.</p>
<p>Looking back I apparently like books with colons and sub-titles.  I know these aren&#8217;t just one book but considering how many I read a year narrowing it down to five is pretty good.</p>
<p>On the plus side I&#8217;m looking forward to the new <a href="http://solutionsfit.com/blog/2008/01/31/announcing-jboss-seam-second-edition/" title="JBoss Seam Second Edition book annoucement" target="_blank">JBoss Seam, Second Edition</a>.  I won&#8217;t mention that a friend of mine, <a href="http://solutionsfit.com/blog/" target="_blank" title="solutionsfit.com blog">Jacob Orshalick</a> is a co-author on the book too.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.grok-programming.com/2008/02/26/if-i-could-only-have-one-book/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Why Fit Isn&#8217;t</title>
		<link>http://www.grok-programming.com/2008/02/18/why-fit-isnt/</link>
		<comments>http://www.grok-programming.com/2008/02/18/why-fit-isnt/#comments</comments>
		<pubDate>Mon, 18 Feb 2008 19:53:18 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
		
		<category><![CDATA[rant]]></category>

		<category><![CDATA[functional testing]]></category>

		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://www.grok-programming.com/2008/02/18/why-fit-isnt/</guid>
		<description><![CDATA[On the project that I&#8217;m working on we reached a point where we needed to integration test the major component that we are building. We already have unit tests with good code coverage for each of the individual pieces.  Call me crazy but I wanted to ensure the whole work flow, well, worked. Correctly. [...]]]></description>
			<content:encoded><![CDATA[<p>On the project that I&#8217;m working on we reached a point where we needed to <a href="http://en.wikipedia.org/wiki/Integration_testing" title="Integration testing wikipedia page">integration test</a> the major component that we are building. We already have <a href="http://en.wikipedia.org/wiki/Unit_test" title="Unit testing wikipedia page">unit tests</a> with good code coverage for each of the individual pieces.  Call me crazy but I wanted to ensure the whole work flow, well, worked. Correctly. You know, test the fact that all these little units happily working in unison would produce output that would make sure everyone on the project team stayed employed. I also wanted a way to run these test in a more or less automated fashion so developers wouldn&#8217;t have to remember to do it.  To that end the project team started taking a look at <a href="http://fit.c2.com/" title="Fit testing framework homepage" target="_blank">Fit</a> and <a href="http://fitnesse.org/" title="FitNess testing framework homepage">FitNess</a> to see if that would do what we wanted. Both are useless.<span id="more-10"></span></p>
<p>Now you may be wondering why I would so glibly throw out the U-bomb about both <a href="http://fit.c2.com/" title="Fit testing framework homepage" target="_blank">Fit</a> and <a href="http://fitnesse.org/" title="FitNess testing framework homepage">FitNess</a>.  Surely some value must have been found with either of the tools. Nope.  Nothing but a huge sink of developer time looking into them. Before I start getting assaulted with comments and email about how <a href="http://fit.c2.com/" title="Fit testing framework homepage" target="_blank">Fit</a> and/or <a href="http://fitnesse.org/" title="FitNess testing framework homepage">FitNess</a> worked great for you (<em>or so help me the <a href="http://fit.c2.com/" title="Fit testing framework homepage" target="_blank">Fit</a> and/or <a href="http://fitnesse.org/" title="FitNess testing framework homepage">FitNess</a> folks themselves</em>) hear me out. I am sure that a lot of smart people put serious time into both projects and I really don&#8217;t want to take that away from them.  Take this whole post as intended: constructive criticism.  And ranting.  So in no particular order&#8230;.</p>
<p><strong>Documentation</strong><br />
Documentation from the <a href="http://fit.c2.com/" title="Fit testing framework homepage" target="_blank">Fit</a> project was laughable at best. It was so poor it made the <a href="http://www.hibernate.org/hib_docs/v3/api/" title="Hibernate project's JavaDocs" target="_blank">Hibernate JavaDocs</a> look like Shakespeare in comparison. The <a href="http://fitnesse.org/" title="FitNess testing framework homepage">FitNess</a> folks had their act together in this aspect.  At least you could learn something from their website.  But I think both groups suffer from the &#8220;we-got-a-book-to-sell&#8221; syndrome where they have no reason to provide good documentation because they want to you to shell out currency for their dead trees. In my book that&#8217;s shameful and unethical.  Modern open-source projects should take a page out of <a href="http://www.springframework.org/" title="Spring framework's homepage" target="_blank">Spring&#8217;s website</a> and <a href="http://static.springframework.org/spring/docs/2.5.x/reference/index.html" title="Spring 2.5.x's reference manual" target="_blank">reference manual</a> as an example of what they should be putting out.</p>
<p><strong>Examples</strong><br />
So since the documentation wasn&#8217;t too much help surely the time and effort was spent on coming up with reasonable examples.  Nope.  The examples given were trivial and so far removed from what a real world project would need a tool like <a href="http://fit.c2.com/" title="Fit testing framework homepage" target="_blank">Fit</a> and <a href="http://fitnesse.org/" title="FitNess testing framework homepage">FitNess</a> for.  They were good for a laugh though.  So I suppose that&#8217;s a plus.  I mean of course I&#8217;d want to turn over <a href="http://fit.c2.com/" title="Example of using Fit" target="_blank">test of a simple payroll calculations</a> to users.  I really think I could come up with an intent revealing test for multiplication without having to involve HTML tables or a wiki.</p>
<p>Examples with both projects should involve something that typical developers would understand and be &#8220;meaty&#8221; enough to address some serious development needs.  Maybe a set of examples for a blog, forum, or wiki where multiple domain objects and services have to interact to get work done.</p>
<p><strong>Source Code</strong><br />
Attempting to &#8220;Use the Source, Luke!&#8221; I downloaded <a href="http://fit.c2.com/" title="Fit testing framework homepage" target="_blank">Fit&#8217;s</a> 1.1 source code bundle.  I figured that having <a href="http://en.wikipedia.org/wiki/Ward_Cunningham" title="Ward Cunningham's wikipedia entry">Ward Cunningham</a> involved then surely I&#8217;d learn something by reading the source.  And I did!  I learned that you don&#8217;t have to comment anything.  Anything at all.  And that having classes with multiple, unrelated responsibilities is what all the cool kids are doing. Multiple overrides of the intent revealing names such as &#8220;at&#8221;, &#8220;mark&#8221;, and &#8220;check&#8221;.  Lastly, we should simply throw away any of the visibility modifiers except public.  Honestly it made me want to gouge out my eyes with red-hot branding irons. I didn&#8217;t have the heart to look at the <a href="http://fitnesse.org/" title="FitNess testing framework homepage">FitNess</a> source code.  I can only hope it was better.</p>
<p>It doesn&#8217;t look like any serious work has been done on <a href="http://fit.c2.com/" title="Fit testing framework homepage" target="_blank">Fit</a> since 2005 - early 2006 from what I can tell.  To me that spells &#8220;dead project&#8221;.  I don&#8217;t know for sure but the whole <a href="http://fit.c2.com/" title="Fit testing framework homepage" target="_blank">Fit</a> project seems like something that someone once cared about but has since let go to seed.  Sad really since I think a testing tool like it would be very helpful to a lot of developers and project teams.</p>
<p>On the plus side a friend of mine, <a href="http://solutionsfit.com/blog/" title="Jacob's blog" target="_blank">Jacob Orshalick</a>, sent me a link for <a href="http://www.concordion.org/" title="Concordion testing tool homepage" target="_blank">Concordion</a> which I&#8217;ll have to take a serious look at and report back on.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.grok-programming.com/2008/02/18/why-fit-isnt/feed/</wfw:commentRss>
		</item>
		<item>
		<title>No.  Reading a book doesn&#8217;t mean you &#8220;know&#8221; anything.</title>
		<link>http://www.grok-programming.com/2008/01/14/no-reading-a-book-doesnt-mean-you-know-anything/</link>
		<comments>http://www.grok-programming.com/2008/01/14/no-reading-a-book-doesnt-mean-you-know-anything/#comments</comments>
		<pubDate>Mon, 14 Jan 2008 18:28:56 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
		
		<category><![CDATA[rant]]></category>

		<category><![CDATA[books]]></category>

		<category><![CDATA[developers]]></category>

		<category><![CDATA[learning]]></category>

		<guid isPermaLink="false">http://www.grok-programming.com/2008/01/14/no-reading-a-book-doesnt-mean-you-know-anything/</guid>
		<description><![CDATA[One of my pet peeves lately is software developers who believe that simply reading a book makes them an expert at some aspect of delivering working applications.  You know the type of person that has just finished Agile Web Development with Rails is now selling themselves as a &#8220;Rails expert&#8221;. They aren&#8217;t.  Let&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>One of my pet peeves lately is software developers who believe that simply reading a book makes them an expert at some aspect of delivering working applications.  You know the type of person that has just finished <a href="http://www.amazon.com/Agile-Web-Development-Rails-2nd/dp/0977616630/ref=pd_bbs_sr_1?ie=UTF8&amp;s=books&amp;qid=1200333610&amp;sr=8-1" title="Amazon link for " target="_blank">Agile Web Development with Rails</a> is now selling themselves as a &#8220;Rails expert&#8221;. They aren&#8217;t.  Let&#8217;s take a look at what you really have to do to &#8220;know&#8221; anything.<br />
<span id="more-9"></span><br />
There is no way that our profession will be taken seriously when we have a segment of the people claiming they are the next <a href="http://www.loudthinking.com/" target="_blank">David Heinemeier Hansson</a> because they just got done with a book.  These same people get on a project that has very real costs and deadlines and simply choke. They have a good idea of the big picture or are restricted to what the examples in the book show and that&#8217;s the extent of what they know.  You can identify these people because they sound like they know what they&#8217;re talking about when sitting in front of management or kicking around concepts at lunch but somehow can&#8217;t perform the most basic of actions without either asking for help or taking an incredible amount of time to do it.  Want a quick way to see if someone really knows anything about a subject?  Ask them the &#8220;why wouldn&#8217;t you&#8230;&#8221; type questions about a subject.  Most books cover the &#8220;why you need to do&#8230;&#8221; but don&#8217;t cover when you should break away from the recipe given in the book.</p>
<p>I often tell people that they (<em>&#8220;they&#8221; is me too</em>) don&#8217;t really know anything until they&#8217;ve had to work around the &#8220;asshole&#8221; of X.  X can be a language, framework, library, application, etc. etc.  &#8220;Asshole&#8221; is the nasty, ugly parts of X.  Like real assholes no one wants to admit they have one but we all know that we all do.  For example, you don&#8217;t know anything about <a href="http://www.hibernate.org/" title="Hibernate ORM homepage" target="_blank">Hibernate</a> until you&#8217;ve had the &#8220;pleasure&#8221; of trying to map some seriously jacked up natural keys in a legacy schema.  You can read all the Hibernate related books that you want but you are still a joke until you&#8217;ve worked around Hibernate&#8217;s ugly nasty parts.</p>
<p>In the interest of full disclosure I will admit that I read 2 to 3 development-related books a month.  But unlike those people I&#8217;m ranting against here I see the information I get from a book as just a single starting point to help frame actual honest learning that will happen after I&#8217;m done with the book.  For example, I have read 3 different books on <a href="http://perl.com/" title="Perl programming language homepage" target="_blank">Perl</a> but do I know Perl?  NO!  I&#8217;m familiar with some of the concepts in the language and could probably understand a large amount of Perl scripts if I were to read them.  Does Perl appear on my resume?  No.  Would I attempt to lead a Perl-based project?  No.  Why?  Because I am still a Perl noob that only has a high level, weak understanding of the language.  I haven&#8217;t seen Perl&#8217;s ugly bits.</p>
<p>So why do you read a book?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.grok-programming.com/2008/01/14/no-reading-a-book-doesnt-mean-you-know-anything/feed/</wfw:commentRss>
		</item>
		<item>
		<title>How to Manage Your Eclipse Add-Ons Painlessly</title>
		<link>http://www.grok-programming.com/2007/12/13/how-to-manage-your-eclipse-add-ons-painlessly/</link>
		<comments>http://www.grok-programming.com/2007/12/13/how-to-manage-your-eclipse-add-ons-painlessly/#comments</comments>
		<pubDate>Fri, 14 Dec 2007 02:27:55 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
		
		<category><![CDATA[eclipse]]></category>

		<category><![CDATA[ide]]></category>

		<guid isPermaLink="false">http://www.grok-programming.com/2007/12/13/how-to-manage-your-eclipse-add-ons-painlessly/</guid>
		<description><![CDATA[I&#8217;ve been an Eclipse user since somewhere around 2002 and one of the things that has really annoyed me over all of that time is how hands on managing the IDE&#8217;s environment has been.  I dreaded having to switch out computers or start all over with Eclipse when I changed jobs.  It was [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been an <a href="http://www.eclipse.org/" title="Eclipse Platform homepage" target="_blank">Eclipse</a> user since somewhere around 2002 and one of the things that has really annoyed me over all of that time is how hands on managing the <a href="http://en.wikipedia.org/wiki/Integrated_development_environment" title="Integrated development environment entry on WikiPedia" target="_blank">IDE</a>&#8217;s environment has been.  I dreaded having to switch out computers or start all over with Eclipse when I changed jobs.  It was back to the find and install plugin mambo each and every time. It appears that there are some new tools on the horizon that are trying to help developers in just this situation.  Each of them tries to ease the developers life a little bit by taking away the pain and agony of setting up Eclipse.</p>
<p><span id="more-6"></span></p>
<p>Each of these tools is a little bit different and I&#8217;m not trying to review them per se.  This is more of an introduction for those that might not be familiar with some of the options out there.  Now I know that some other nameless IDEs have had plugin management built in for a while (I&#8217;m looking at you <a href="http://www.jetbrains.com/idea/" title="IDEA homepage" target="_blank">IntelliJ IDEA</a>) but Eclipse has not.</p>
<p><strong><a href="http://www.easyeclipse.org/site/home/" title="EasyEclipse homepage" target="_blank">EasyEclipse</a></strong></p>
<p><a href="http://www.easyeclipse.org/site/home/" title="EasyEclipse homepage" target="_blank">EasyEclipse</a> is a distribution of Eclipse like Ubuntu is to Linux.  They have different packages of open-source plugins targeted to specific development needs.  For example, they have <a href="http://www.easyeclipse.org/site/distributions/desktop-java.html" title="EasyEclipse Desktop Java" target="_blank">Desktop Java</a>, <a href="http://www.easyeclipse.org/site/distributions/server-java.html" title="EasyEclipse Server Java" target="_blank">Server Java</a>, and <a href="http://www.easyeclipse.org/site/distributions/mobile-java.html" title="EasyEclipse Mobile Java" target="_blank">Mobile Java</a> distributions.  I&#8217;ve used various EasyEclipse distributions in the past and I&#8217;ve found them easy to install and rock solid.  I suppose the only thing I don&#8217;t care for is that lately they don&#8217;t seem to be keeping up with the latest versions of Eclipse or the bundled plugins.  But if you&#8217;re don&#8217;t care about being on the latest greatest then that might not matter to you.</p>
<p><strong><a href="http://www.poweredbypulse.com/" title="Pulse homepage" target="_blank">Pulse</a></strong></p>
<p><a href="http://www.poweredbypulse.com/" title="Pulse homepage" target="_blank">Pulse</a> is what I&#8217;ve been playing around with recently.  It is a service that allows you to create profiles of Eclipse add-ons and have them downloaded automagically to your machine.  When you have to move to another machine you simply install the Pulse software, login, choose a previously created profile and let it setup Eclipse with all your selected add-ons ready to go.  I like that it is easy, very quick to get going, and has a fantastic interface (including a &#8220;Pulse Explorer&#8221; within Eclipse itself).  The downside is that it is a new service in beta and there are a few annoying gotchas (i.e. <em>currently you can&#8217;t switch workspaces without shutting down Eclipse and selecting another workspace</em>).  The repository is a bit on the small side but the developer <a href="http://www.genuitec.com/" title="Genuitec homepage" target="_blank">Genuitec</a> looks like they&#8217;re really working to expand the add-ons selection.</p>
<p><strong><a href="http://www.yoxos.com/en/home.html" title="Yoxos homepage" target="_blank">Yoxos</a></strong></p>
<p><a href="http://www.yoxos.com/en/home.html" title="Yoxos homepage" target="_blank">Yoxos</a> is a Eclipse add-on distribution service that is a plugin to Eclipse.  You really have to try their <a href="http://www.innoopract.com/en/products/yoxos-eclipse-distros/yoxos-developer.html" title="Yoxos On Demand page" target="_blank">Yoxos On Demand</a> to see an amazing web demo. Yoxos uses its web interface as the starting point (<em>as opposed to Pulse&#8217;s executable</em>) but after that you interact with the Yoxos interface within Eclipse itself.  The plugin selection they have is easily the best and most wide ranging of the ones mentioned here.</p>
<p>I do wish that any of these services would allow me to upload my own Eclipse preferences files and attach them to my account so that they could follow me around too. (<em>hint, hint, big money to be made here</em>)</p>
<p>Over the long haul I think Pulse is going to have the biggest impact.  I&#8217;m not saying the other guys don&#8217;t have their place but seeing how well Genuitec&#8217;s <a href="http://www.myeclipseide.com/" title="MyEclipse IDE Add-On homepage" target="_blank">MyEclipse</a> has been managed these folks know what they&#8217;re doing.  I do wonder how they plan on making any money off of Pulse without charging people to use it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.grok-programming.com/2007/12/13/how-to-manage-your-eclipse-add-ons-painlessly/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Mr. Fowler, back up this train!</title>
		<link>http://www.grok-programming.com/2007/12/07/mr-fowler-back-up-this-train/</link>
		<comments>http://www.grok-programming.com/2007/12/07/mr-fowler-back-up-this-train/#comments</comments>
		<pubDate>Fri, 07 Dec 2007 15:25:01 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
		
		<category><![CDATA[groovy]]></category>

		<category><![CDATA[jruby]]></category>

		<category><![CDATA[ruby]]></category>

		<category><![CDATA[scripting languages]]></category>

		<guid isPermaLink="false">http://www.grok-programming.com/2007/12/07/mr-fowler-back-up-this-train/</guid>
		<description><![CDATA[Martin Fowler on his bliki (part blog, part wiki) has a new entry about the ongoing debate about using Groovy or JRuby on the Java VM.  I really don&#8217;t have a problem with anything he wrote there.  I agree that both languages are interesting and worth developers getting to know and that Ruby [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://en.wikipedia.org/wiki/Martin_Fowler" title="Martin Fowler entry on WikiPedia" target="_blank">Martin Fowler</a> on his <a href="http://martinfowler.com/bliki" title="Martin Fowler's bliki" target="_blank">bliki</a> (<em>part blog, part wiki</em>) has a new entry about the ongoing debate about using <a href="http://en.wikipedia.org/wiki/Groovy" title="Groovy programming language on WikiPedia" target="_blank">Groovy</a> or <a href="http://en.wikipedia.org/wiki/Jruby" title="JRuby entry on WikiPedia" target="_blank">JRuby</a> on the <a href="http://en.wikipedia.org/wiki/Java_Virtual_Machine" title="Java Virtual Machine entry on WikiPedia" target="_blank">Java VM</a>.  I really don&#8217;t have a problem with anything he wrote there.  I agree that both languages are interesting and worth developers getting to know and that Ruby probably has the edge on where things are going in the future.  But one of the largest driving factors as to why a development team might choose either Groovy or JRuby wasn&#8217;t covered at all.  So with apologies to both Martin Fowler and Ronald Reagan (<em>not that I think he&#8217;s particularly upset with my hijacking of one of his more famous lines</em>) I&#8217;d like to make my small addition.</p>
<p><span id="more-5"></span></p>
<p>My Dad&#8217;s dad was a blue-collar, regular joe who worked as a <a href="http://en.wikipedia.org/wiki/Boilermaker" title="What is a boilermaker?" target="_blank">boilermaker</a> for more years than I&#8217;ve been alive.  He also grew up in a very large, very poor family in Louisiana during the 1920&#8217;s and 30&#8217;s.  He was very much a no nonsense kind of guy.  As I grew up he would often say comments or sayings that on the surface seemed pretty basic and simple but as you thought about them you started to see how complex and deep they really were.  I also noticed that the sayings would be more clever the more cans of beer that were missing from his case.  Anyway, one of my favorites was &#8220;Son, if you want to move a train, you back up the engine to it&#8230;and pull.&#8221;  Yeah, no kidding.  Thanks grandpa.</p>
<p>The heart (<em>and the clever part</em>) of that saying is what is missing from Martin Fowler&#8217;s entry.  Go ahead and take into account all of the things he lists on the page but also add in the costs of overcoming the peopleware issues of trying to pull your organization in a new direction.  There are a lot of developers out there that aren&#8217;t very skilled.  These poor lost souls barely understand idiomatic Java after years of working on Java-related projects.  You are not going to move an organization of these folks by throwing down the gauntlet and simply willing them to move. You are going to have to take the active roll of backing up your engine to pull their massive weight.</p>
<p><a href="http://groovy.codehaus.org/" title="Groovy homepage" target="_blank">Groovy</a> is a nice way to get Java developers - skilled or not - exposed to some of the ideas and idioms that scripting languages bring to the table without leaving the safety of Java (<em>the language</em>).  It isn&#8217;t an all or nothing deal with Groovy like it is with <a href="http://www.ruby-lang.org/en/" title="Ruby homepage" target="_blank">Ruby</a>/JRuby.  You can take your time acclimating developers to the new world instead of simply throwing them into the deep end and hope they swim.  It is just like you wouldn&#8217;t back up a train engine, attach the cars, and then try to floor it to get the whole thing moving.</p>
<p><a href="http://jruby.codehaus.org/" title="JRuby homepage" target="_blank">JRuby</a> on the other hand appears to be focused on getting Ruby developers a foothold into the JVM.  I&#8217;m not saying JRuby doesn&#8217;t bring anything to the table for a entrenched team of Java developers I&#8217;m just saying the overhead of doing so is higher than Groovy since you can&#8217;t fall back to a more Java-like idiom if you need to.  But if you have the development staff that can just jump in and go all out by all means do so.</p>
<p>So, take Mr. Fowler&#8217;s advice about Groovy and JRuby but don&#8217;t forget to think about how you&#8217;re going to back up to the train.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.grok-programming.com/2007/12/07/mr-fowler-back-up-this-train/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Domain Specific Languages Podcast</title>
		<link>http://www.grok-programming.com/2007/12/06/domain-specific-languages-podcast/</link>
		<comments>http://www.grok-programming.com/2007/12/06/domain-specific-languages-podcast/#comments</comments>
		<pubDate>Thu, 06 Dec 2007 18:36:06 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
		
		<category><![CDATA[domain specific language]]></category>

		<category><![CDATA[java]]></category>

		<category><![CDATA[ruby]]></category>

		<category><![CDATA[domain specific languages]]></category>

		<guid isPermaLink="false">http://www.grok-programming.com/2007/12/06/domain-specific-languages-podcast/</guid>
		<description><![CDATA[ThoughtWorks has put out its first podcast covering Domain Specific Languages.  The presentation and audio quality is bit rough but the content is interesting and well worth the listen.
]]></description>
			<content:encoded><![CDATA[<p><a href="http://http://www.thoughtworks.com" title="ThoughtWorks homepage" target="_blank">ThoughtWorks</a> has put out its <a href="http://www.thoughtworks.com/what-we-say/podcasts.html" title="DSL podcast" target="_blank">first podcast</a> covering <a href="http://en.wikipedia.org/wiki/Domain-specific_programming_language" title="Domain Specific Language entry on WikiPedia" target="_blank">Domain Specific Languages</a>.  The presentation and audio quality is bit rough but the content is interesting and well worth the listen.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.grok-programming.com/2007/12/06/domain-specific-languages-podcast/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Polyglot Programming: Is it just too much to ask?</title>
		<link>http://www.grok-programming.com/2007/11/25/polyglot-programming-is-it-just-too-much-to-ask/</link>
		<comments>http://www.grok-programming.com/2007/11/25/polyglot-programming-is-it-just-too-much-to-ask/#comments</comments>
		<pubDate>Mon, 26 Nov 2007 00:39:15 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
		
		<category><![CDATA[groovy]]></category>

		<category><![CDATA[java]]></category>

		<category><![CDATA[java platform]]></category>

		<category><![CDATA[jruby]]></category>

		<category><![CDATA[polyglot programming]]></category>

		<category><![CDATA[ruby]]></category>

		<category><![CDATA[neal ford]]></category>

		<guid isPermaLink="false">http://www.grok-programming.com/2007/11/25/polyglot-programming-is-it-just-too-much-to-ask/</guid>
		<description><![CDATA[Neal Ford, the guy directly responsible for my career (yes, all legal claims need to go his direction), has on his Meme Agora blog, numerous conference keynotes, and various podcasts has pushed forth the idea of Polyglot Programming. The basic idea behind Polyglot Programming is that various aspects of a computer program could be written in multiple implementation languages that target a specific platform. More specifically think of all the computer languages that all run on top of Java's VM and choosing a few from that set for your application and you've got the idea. You would choose what to use based on what language could most easily solve the problems related to a specific aspect of the application. For example, on a JEE web application you might write the view in Ruby on Rails running on JRuby, implement the controller layer in Groovy code in Spring, and use plain ole Java for the model because you have 90% of it already written for a previous application.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.nealford.com/" title="Neal Ford's Website" target="_blank">Neal Ford</a>, the guy directly responsible for my career (<em>yes, all legal claims need to go his direction</em>), has on his <a href="http://memeagora.blogspot.com" title="Neal Ford's long running blog" target="_blank">Meme Agora</a> blog, numerous conference keynotes, and <a href="http://www.javaworld.com/podcasts/jtech/2007/112007jtech006.html" title="JavaWorld podcast interview with Neal Ford" target="_blank">various podcasts</a> has pushed forth the idea of Polyglot Programming.  The basic idea behind Polyglot Programming is that various aspects of a computer program could be written in multiple <a href="http://en.wikipedia.org/wiki/Computer_languages" title="Computer languages on WikiPedia" target="_blank">implementation languages</a> that target a specific platform.  More specifically think of all the computer languages that all run on top of <a href="http://en.wikipedia.org/wiki/Java_VM" title="Java Virtual Machine on Wikipedia" target="_blank">Java&#8217;s VM</a> and choosing a few from that set for your application and you&#8217;ve got the idea.  You would choose what to use based on what language could most easily solve the problems related to a specific aspect of the application.  For example, on a <a href="http://en.wikipedia.org/wiki/Java_Platform%2C_Enterprise_Edition" title="Java, Enterprise Edition on WikiPedia" target="_blank">JEE</a> web application you might write the view in <a href="http://www.rubyonrails.org/" title="Ruby on Rails homepage" target="_blank">Ruby on Rails</a> running on <a href="http://jruby.codehaus.org/" title="JRuby home page" target="_blank">JRuby</a>, implement the controller layer in <a href="http://groovy.codehaus.org/" title="Groovy homepage" target="_blank">Groovy</a> code in <a href="http://www.springframework.org/" title="Spring Framework home page" target="_blank">Spring</a>, and use plain ole Java for the model because you have 90% of it already written for a previous application.</p>
<p><span id="more-3"></span>Neal uses an example I thought I&#8217;d expand on to make the point of Polyglot Programming.  Think of Java as wood; you know, the stuff they get from trees.  You happen to be a structural engineer that is involved in building buildings.  Now imagine that no matter what type of building you were asked to build you used wood.  For a large number of building types that would be just fine.  But then you&#8217;d run into limitations of the material.  Say someone says they want you to build the world&#8217;s tallest building.  Breaking out the tried and trusted wood wouldn&#8217;t get the job done.  You&#8217;d have to use a wide range of materials each targeting a specific need of getting the skyscraper built.  The idea of using one material all the time for all problems seems almost insane, doesn&#8217;t it?</p>
<p>At first, I thought Neal had gone farther off his rocker because there would be no way that you&#8217;d be able to sell the Polyglot Programming idea to an organization that already had 500 <a href="http://java.sun.com/" title="Java Language home page" target="_blank">Java</a> programmers and 100 <a href="http://msdn2.microsoft.com/en-us/netframework/default.aspx" title=".NET Developer Network" target="_blank">.NET</a> developers that has been cranking out projects for years.  Asking to toss into the technology stack another 200+ languages that run on the Java VM and who knows how many for the <a href="http://en.wikipedia.org/wiki/Common_Language_Runtime" title="CLR entry on WikiPedia" target="_blank">CLR</a> is a bit much.  On top of that, through my personal experience trying to staff development teams, I&#8217;ve found that finding developers that have a reasonable understanding of Java let alone knowing anything about <a href="http://www.ruby-lang.org/en/" title="Ruby language homepage" target="_blank">Ruby</a>, Groovy, or <a href="http://www.jython.org/Project/index.html" title="Jython home page" target="_blank">Jython</a> is an incredible stretch.  Add those together and while I thought the idea of Polyglot Programming was a good concept I didn&#8217;t think it would survive in the &#8220;real world&#8221;.</p>
<p>Thinking about it a bit more I realized that I&#8217;d already been doing a form of Polyglot Programming for years.  Sure, I wasn&#8217;t throwing different languages at the JVM but I have piled <a href="http://java.sun.com/javaee/javaserverfaces/" title="JavaServer Faces homepage" target="_blank">JSF</a>, Spring, and <a href="http://www.hibernate.org/" title="Hibernate ORM homepage" target="_blank">Hibernate</a> on top of Java/JEE to produce web applications.  Each of these frameworks adds a <a href="http://en.wikipedia.org/wiki/Domain_Specific_Language" title="Domain Specific Language entry on WikiPedia" target="_blank">DSL</a>-like layer to the application&#8217;s technology stack.  Each is already adding to the cognitive load that a developer has to understand to be effective on a project.  I am already asking developers to know something more than just Java/JEE or even the Java platform.  I am already adding to the technology stack of the organizations I work for.  Thinking about it in that light putting the idea of Polyglot Programming isn&#8217;t that much of a stretch.</p>
<p>Targeting a specific platform and relegating the programming language choice to what the language can do for you to solve your problems instead of just defaulting to some generalize programming language is an incredibly powerful idea.  Being able to alter the tools you&#8217;re using over time while not having to go back to re-write legacy applications because you aren&#8217;t moving off of the target platform can save organizations lots in development costs.</p>
<p>So, I&#8217;m just left wondering where the hidden costs in Polyglot Programming are.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.grok-programming.com/2007/11/25/polyglot-programming-is-it-just-too-much-to-ask/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
