<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Configuring Entropy</title>
<link>http://www.mamaliz.org/blogs/entropy/</link>
<description>Adventures in standardizing a development environment.
</description>
<language>en</language>
<copyright>Copyright 2006</copyright>
<lastBuildDate>Wed, 29 Mar 2006 14:03:46 -0500</lastBuildDate>
<generator>http://www.movabletype.org/?v=3.2</generator>
<docs>http://blogs.law.harvard.edu/tech/rss</docs> 

<item>
<title>Success</title>
<description><![CDATA[<p>We have a new configuration manager here, somebody who used to work here, and has now come back.  Luckily, I finished the build/release product before he got here, and he seems to like it - at least he isn't complaining to me.  Our build/release system is very complicated, as it has to build something that the government calls "segments".  Don't ask, you won't like the answer.</p>

<p>So, while I wait for another bunch of projects to come to a point that I can port them to this process/product - I am looking for a new issue tracker tool.  Nobody likes the tool we are using right now, the configuration manager least of all.  So, I am looking for an issue manager that uses subversion.  Trac seems to be the best bet.  So, I am trying to build it, knowing nada, zip, nothing about Python.</p>

<p>It isn't building.  It can't seem to find the sqlite library.  It should be able to find it - I dropped the exe and dll into System32.</p>

<p>I put a Please help me on the mailing list - but zip so far.</p>

<p>More & more I want to write the issue/requirements tracker that has been in my head for so long.  I would write it in either java, php or Ruby on Rails.  I would put an embedded firebird database behind it.  Now, I have to get people to believe that they should let me do this at work.  I am too damn old and tired to do it at home in my oh so copious spare time.</p>

<p><br />
</p>]]></description>
<link>http://www.mamaliz.org/blogs/entropy/archives/2006/03/success.html</link>
<guid>http://www.mamaliz.org/blogs/entropy/archives/2006/03/success.html</guid>
<category>Configuration Management</category>
<pubDate>Wed, 29 Mar 2006 14:03:46 -0500</pubDate>
</item>
<item>
<title>Why I hate maven</title>
<description><![CDATA[<p><br />
To quote the great Fred Eaglesmith "49 tons of diesel locomotive couldn't bring me back to you".</p>

<p>I have reached the stage of hating maven, I used to just mildly dislike it.  In fact, if I had the time right now, I might just move my dependency management to Ivy.  That isn't going to happen yet though.</p>

<ol>
<li> The useful plugins are all in beta </li>
<li> There is close to no documentation for any plugin I want to use </li>
<li> When I ask the user's list for lessons learned/documentation/whatever you want to call it - I don't even get a "you ignorant slut" for an answer. </li>
<li>When I tried to get the code for the war task through svn - the war task is NO LONGER IN THE SVN REPOSITORY</li>
<li>I can't get the scope of transitive dependencies </li>
</ol>

<p>So, now all I use maven for is to build an eclipse classpath that I then edit so that my regular attributes (like src and docs) are in it.</p>

<p>I have written a nifty common war task though - although it uses excludesfile.  What do you bet excludesfile gets deprecated in the next version of Ant?  It would be just my luck.<br />
</p>]]></description>
<link>http://www.mamaliz.org/blogs/entropy/archives/2006/01/why_i_hate_mave.html</link>
<guid>http://www.mamaliz.org/blogs/entropy/archives/2006/01/why_i_hate_mave.html</guid>
<category>maven</category>
<pubDate>Wed, 25 Jan 2006 14:37:18 -0500</pubDate>
</item>
<item>
<title>Syntactic Sugar</title>
<description><![CDATA[<p>I usually spend the last half hour of work reading blogs related to my job.  Even though I am not currently using Ruby or Rails I am still trying to keep up.  I am also not doing much java (other than ant tasks) so I don't worry too much about it - Java is Java, and I am trying to get farther from it every day.</p>

<p>But, in reading blogs, it seems that I can't go even 1 day without reading the phrase "syntactic sugar".  It seems to be the newest catch phrase, and it is beginning to annoy me.  Also, I am not sure why so many people feel there shouldn't be such a thing.</p>

<p>People, if syntactic sugar makes my life easier, I am all for it.  I really don't care if the compile takes another minute - ant and vulcan are managing that for me anyway.  If you want to go back to barebones languages, I am sure we can find a PDP-11 somewhere for you.</p>

<p>One of our junior programmers today suggested that smart people had already solved the standardized build project.  Hell, some of us have solved it 3 or 4 times.  But each company has tradition and rules.  A standardized build for Treasury is different from a standardized build for the small piece of DOD I am working for.  Among other things, they solve different problems.  And you have different big feet around that you don't want to step on.  I still prefer my old build to the one I am now using, but I have to respect their work and build on it - not destroy it.</p>

<p>By the way, one of our really really FANTASTIC programmers has written a replacement for anthill/cruisecontrol.  I am just getting used to it - it is excellent.  Go look at Vulcan on sourceforge.</p>

<p>In other news, I have been doing almost nothing but ant for a few weeks.  Ant sucks as a scripting language (as it should).  I am still considering moving some of the scripting over to Ruby, but I have managed with Ant this long - I have just been informed that we simply don't have the time for me to refactor.  The one project that should be done by march has turned into 13.  Most of them are exactly alike (and we have a backup), but I am getting a bit concerned.</p>]]></description>
<link>http://www.mamaliz.org/blogs/entropy/archives/2006/01/syntactic_sugar.html</link>
<guid>http://www.mamaliz.org/blogs/entropy/archives/2006/01/syntactic_sugar.html</guid>
<category></category>
<pubDate>Wed, 04 Jan 2006 16:45:46 -0500</pubDate>
</item>
<item>
<title>Ant</title>
<description><![CDATA[<p>Yah, it has been a while, but I have been doing all sorts of stuff.  Right now I am concentrating on ant.  I wouldn't be concentrating on ant if import could be used within a target (why can't it).  I was generating a file that needs to be imported.  Unfortunately, if the file isn't there, you can't compile.  I want this to be a single button thing, so now my ant task (which worked just fine thank you) has to generate a path.  </p>

<p>All of this will help me when I start my next story - I have 3 projects right now, the next story is the first story in the second project.  The ant stuff I am doing now could go opensource (it is a replacement for the eclipseclasspath plugin).  The next stuff is DOD, so I probably will not be blogging about it.</p>

<p>I got two books on ant.  Luckily, the O'Reilly book has been updated.  I am taking notes for a possible book.  I am a smart person - and it is not easy for me to figure out path oriented tasks.<br />
</p>]]></description>
<link>http://www.mamaliz.org/blogs/entropy/archives/2005/12/ant_1.html</link>
<guid>http://www.mamaliz.org/blogs/entropy/archives/2005/12/ant_1.html</guid>
<category>Ant</category>
<pubDate>Sat, 10 Dec 2005 09:39:43 -0500</pubDate>
</item>
<item>
<title>Strange but true</title>
<description><![CDATA[<p>I work with a group that has really bought into Agile development (and Crystal).  15 of us in one big room, with a bunch of computers.  Lots of bulletin boards and white boards.  Lots of color coded index cards.  The room I dreamed about in my last job.</p>

<p>Everybody here pairs (except me).  Everybody uses agile techniques (I use some of them).  Everybody else knows what stories they are working on.  My job changes every day (and I like it that way).  </p>

<p>I find this strange because I am the person who is supposedly building the tools to make life easier for the programmers.  It seems that I am also the new Subversion Queen.  I am writing (or helping with) the opensource code,  on a project that is as not opensource as a government project can be.</p>

<p>All of this would be ok, but I am not getting any practice on stories and iterations - and I was weak on them to begin with.  I am putting X-Planner through its paces, but I don't do enough agile work to really test the code.  So, other programmers here tell me what they need changed.</p>

<p>I have offered to teach Ant for grownups if anybody is interested.  I really don't want to be a single point of failure.  Of course, I never really wanted to become an Ant specialist either.<br />
</p>]]></description>
<link>http://www.mamaliz.org/blogs/entropy/archives/2005/11/strange_but_tru.html</link>
<guid>http://www.mamaliz.org/blogs/entropy/archives/2005/11/strange_but_tru.html</guid>
<category>Agile Development</category>
<pubDate>Wed, 16 Nov 2005 16:58:10 -0500</pubDate>
</item>
<item>
<title>Build/release</title>
<description><![CDATA[<p>Until we find somebody who wants to do it, I have been named acting Build/Release Engineer at my new shop.  This is to go along with my more formal title of Toolsmith and person who is available for anybody to work with (I guess that isn't a real title).  They decided that I was the best person to be the acting B/R person because I am terribly interested in getting agile to play nicely with CMMI 3 (moving to CMMI 4 in the next year).  Reasonable decision.</p>

<p><b>But</b>, as usual, there is a problem here.  I have <strong>No </strong> idea what a build/release engineer does when you also have 2 configuration engineers on the project.  For some reason, I can't see how you can be one without being the other.  Right now, I am automating the build process, but I would be doing that anyway in my role as toolsmith.  If anybody who reads this (and there aren't that many readers) has a good definition of what the various people do - I would love to read the defs.</p>

<p>Maven2:  We are giving up on maven 2 except for library management.  I don't like a whole lot of things about it, but what I dislike the most is that it seems to believe that if you are managing with maven, you want to manage everything with maven.  Well, all of you maven people, I don't want maven writing over my classpath file.  I want it to update it.  I don't want it to overwrite my project file either.  And I certainly am not going to trust my code to a project that is averaging 100 bugreports a day after it is released.  It is nice that they decided to rewrite maven - but they need better quality control.  </p>

<p>I am refactoring the stuff I wrote 2 weeks ago.  My partner in crime (even if he is across the whole damn country) is trying to get me to look at ivy.  I am not sure if we can get Ivy to do what he seems to want it to do.</p>

<p>I got XPlanner working today.  I am going to install it on a real machine tomorrow.  I then will decide what we want to do with it.<br />
</p>]]></description>
<link>http://www.mamaliz.org/blogs/entropy/archives/2005/11/buildrelease.html</link>
<guid>http://www.mamaliz.org/blogs/entropy/archives/2005/11/buildrelease.html</guid>
<category>Configuration Management</category>
<pubDate>Mon, 14 Nov 2005 16:52:05 -0500</pubDate>
</item>
<item>
<title>Maven (yet again)</title>
<description><![CDATA[<p><br />
Hey, I used to go crazy writing about firebird.  Well, I don't have a chance to play with firebird right now, instead I am busy screwing around with maven2.  I have pretty much given up on it.</p>

<p>Of course, it is also possible that I am an idiot and that eclipse plugin code  is beautiful and I can't figure out how it should be tested because I am a twit.  Many people would probably agree there.  BUT - I did ask another programmer to look at it and he said something like "You aren't going to try and extend THAT?????? Are you?????"  This is not a case of "Not invented by me".   This is a case where there are 5 unittests, named unittest1,2...5. and none of them test anything other than if the code throws an exception.  Thank you, that is not what I call a reasonable unit test.  Also, the code is not easily testable because it takes (I think) 10 parameters to construct the class I was going to extend.  Somebody up there does not approve of dependency injection.</p>

<p>In other words, they wrote legacy code.   </p>

<p>So, I am letting the eclipse plugin build a file that I will never use.  I am then pulling a dom from it.  I am then comparing it with a dom from a .classpath file that I have already written.  Doms are then being merged.</p>

<p>Interestingly enough the artifact class does not build a good string for a jar name.  Silly shit like that.  200 messages a day since they released Maven 2...and too many of them are jira cases.  The plugin left my eclipse projects uncompilable.</p>

<p>So, I will do what I can - and then decide whether I want to rewrite the plugin.  I doubt it.  Maybe for maven 3?<br />
</p>]]></description>
<link>http://www.mamaliz.org/blogs/entropy/archives/2005/11/maven_yet_again.html</link>
<guid>http://www.mamaliz.org/blogs/entropy/archives/2005/11/maven_yet_again.html</guid>
<category>maven</category>
<pubDate>Wed, 02 Nov 2005 14:44:43 -0500</pubDate>
</item>
<item>
<title>Back in the saddle</title>
<description><![CDATA[<p>I have been working at the new company for about 4 days (I did NO coding/design/headwork during my vacation).  Luckily, they want me to do what I am good at.  Right now it is working with maven.</p>

<p>Yes, I still hate Maven.  I also think that it is where we are going to go for at least some of our projects.  Maven 2 has been released, and I am now extending it's eclipse plugin.  I want it to learn how to update a .classpath, and how to include src and javadoc resources when building a .classpath from a POM.  I am hoping that this will get around what we consider to be weaknesses within both eclipse and maven.</p>

<p>While doing this, I am making use of the plexus toolkit (because maven already uses it).  Excellent toolkit.  I would do some things differently, but I was able to get used to it in 1 day.  It is going to become part of those files that I carry around with me from project to project and job to job.</p>

<p>After I get this all finished we will make a decision about how much farther to go with maven.  Right now we are just going to go with standardizing resources every developer needs to be able to find.   This means that some developers will have to do things differently, but I am NOT the person who has to enforce Best Practices here.  </p>

<p>It is so much fun working with a crew of really bright people again.  I swear, I haven't worked with a crew like this since I got my dream junior programmer at Nasdaq.</p>]]></description>
<link>http://www.mamaliz.org/blogs/entropy/archives/2005/10/back_in_the_sad.html</link>
<guid>http://www.mamaliz.org/blogs/entropy/archives/2005/10/back_in_the_sad.html</guid>
<category>Standards</category>
<pubDate>Thu, 27 Oct 2005 13:18:51 -0500</pubDate>
</item>
<item>
<title>Changing spaces</title>
<description><![CDATA[<p>Today is my last day at Company M.  I am taking a week or so off to relax, knit and work on the 3 opensource projects I am committed to.  Sometimes I wonder how I managed to persuade myself that I could actually work on 3 projects in my copious spare time.  Especially seeing that my pair programmer for the big one just moved across the country from me.  But, that isn't what I am blogging about.</p>

<p>What I am blogging about is Maven2.  I am one of those fanatic maven haters.  It bit me in the ass when I first started here, and I (with company blessing) took all the code OUT of maven.  Actually, there are pieces of maven I like, mostly the war and jar plugins.  But, they aren't worth the maven workaround.</p>

<p>I am a software nazi.  I believe in a standard build structure.  Unfortunately, my standard build structure is not the same as maven2's standard build structure.  m2 has a tree that starts as src/target (fine so far).  But src then splits into main and test. Then both of these break into java and resources.   It just lost me there.  I think that the use of main adds complexity.   Mine starts as src/test. They both then split into java and config.  I could rename config, but I think that it is actually more descriptive than resources, which has a very specific meaning in java.   Both are perfectly acceptable build structures, but I don't want to user the main style build.  I could (and might) change my build to mirror the m2 build, but I am still not sure how well it would work.</p>

<p>I am also still working on adding a ruby on rails project inside a project.</p>

<p><br />
What I loved maven for was the ability to pull jars/poms from ibiblio.  I am going to look at<a href="http://jayasoft.org/ivy"> ivy</a> next week and see if it will work to pull my dependency tree instead.  If it does as good a job (or better) than m2, I will stop thinking about m2.</p>

<p>BTW, one of the things I HATE about m2 is that it STOPS pulling all the dependencies and chokes the minute it needs to use a sun library.<br />
</p>]]></description>
<link>http://www.mamaliz.org/blogs/entropy/archives/2005/10/changing_spaces.html</link>
<guid>http://www.mamaliz.org/blogs/entropy/archives/2005/10/changing_spaces.html</guid>
<category>Standards</category>
<pubDate>Wed, 12 Oct 2005 11:29:12 -0500</pubDate>
</item>
<item>
<title>New Company</title>
<description><![CDATA[<p>I just signed an offer letter from another consulting company.  I know some of the people in the new team, but I really have no idea what sort of project I will be on.  I do know that the new company has redesigned their teams around Agile processes.</p>

<p>This happens at just the right time.  My main  quickstart is well tested, I start the administration piece of the authorization software today.  The company I am working for has no projects that fit me well.  I am not sure if they have ever bought into OO, much the less java, .NET or agile processes.  My beloved manager has moved to a new job in a big (non-consulting) company that will be perfect for him.</p>

<p>Bill (the manager) and I will continue working on the quickstarts, and the business objects that started this whole mess.  They will be opensource.   First release (probably just the quickstarts, the common jar and the authorization code should be ready to roll by November.<br />
</p>]]></description>
<link>http://www.mamaliz.org/blogs/entropy/archives/2005/10/new_company.html</link>
<guid>http://www.mamaliz.org/blogs/entropy/archives/2005/10/new_company.html</guid>
<category>Blogging</category>
<pubDate>Fri, 07 Oct 2005 09:28:36 -0500</pubDate>
</item>
<item>
<title>Embedded Firebird and the new Spring testing classes</title>
<description><![CDATA[<p>I have moved all of my Spring Dao tests from a roll your own test framework to one that is based on spring's<br />
AbstractTransactionalDataSourceSpringContextTests<br />
(a classname that is just too damn long and I will never remember).  These tests (and some others) are in the spring-mocks package.  Really nice except for a few issues I am learning to deal with (mostly the fact that transactions are never committed unless you force the issue).  No problem with the sanity tests, so I decided to try the authorizationDao from some classes that are getting major refactoring).</p>

<p>This dao needs a lot of data to be in the database (this is the project that is going to use ruby on rails to fill the database).  I (like most people) have used dbunit to put this data in.  Part of setup.  Well, setup and onSetup are final for this test - so I moved the dbunit setup (which had been in a static initializer) to onSetUpBeforeTransaction.  All of a sudden my tests were not failing - they were going into some weird state and I had to kill eclipse in order to close the database.  But, as soon as I moved the database to local (from embedded) everything went just fine.</p>

<p>I think that we had deadlock on the embedded firebird.  My cure for this now (other than giving up on the spring class and rolling my own which would happily use dbunit) is to stop using embedded firebird and call through local.  I still might roll my own, but it depends a lot on what else has to be done in the next two weeks.</p>]]></description>
<link>http://www.mamaliz.org/blogs/entropy/archives/2005/09/embedded_firebi.html</link>
<guid>http://www.mamaliz.org/blogs/entropy/archives/2005/09/embedded_firebi.html</guid>
<category>Firebird</category>
<pubDate>Thu, 29 Sep 2005 13:36:18 -0500</pubDate>
</item>
<item>
<title>Firebird and spring jdbc</title>
<description><![CDATA[<p>If you want to do anything real with firebird and spring jdbc you need to know your id.  There are incrementer classes in the spring framework for a few databases, but none for firebird.</p>

<p>Here is one for firebird.  Thanks to Roman who seems to be in charge of firebird-java for giving me the sql.</p>

<p><br />
import javax.sql.DataSource;<br />
import org.springframework.jdbc.support.incrementer.OracleSequenceMaxValueIncrementer;</p>

<p>public class FirebirdSequenceMaxValueIncrementer extends<br />
        OracleSequenceMaxValueIncrementer<br />
{<br />
     /**<br />
     * <br />
     */<br />
    public FirebirdSequenceMaxValueIncrementer()<br />
    {<br />
        super();<br />
        <br />
    }</p>

<p>    /**<br />
     * Convenience constructor.<br />
     * @param ds the DataSource to use<br />
     * @param incrementerName the name of the sequence to use<br />
     */<br />
    public FirebirdSequenceMaxValueIncrementer(DataSource ds, String incrementerName) {<br />
       super(ds,incrementerName);<br />
    }</p>

<p>    public FirebirdSequenceMaxValueIncrementer(String incrementerName)<br />
    {<br />
        super();<br />
        setIncrementerName(incrementerName);<br />
    }</p>

<p>    protected String getSequenceQuery()<br />
    {<br />
        return "SELECT gen_id(" + getIncrementerName() + ",1) FROM rdb$database";<br />
    }</p>

<p>}</p>]]></description>
<link>http://www.mamaliz.org/blogs/entropy/archives/2005/09/firebird_and_sp.html</link>
<guid>http://www.mamaliz.org/blogs/entropy/archives/2005/09/firebird_and_sp.html</guid>
<category>Firebird</category>
<pubDate>Fri, 23 Sep 2005 09:13:52 -0500</pubDate>
</item>
<item>
<title>Sample program</title>
<description><![CDATA[<p>I got my sample build working the way I want to (actually this is the build for the common libraries - but it works well as a teaching device).  I have examples (in the sanity tests) for simple tables and parent/child tables using Spring/hibernate.  I am now working on building the same samples (same tests) using spring/jdbc.  I am not even considering having people not use spring.  While I don't think it solves all problems, it solves enough to keep me happy.</p>

<p>After I finish the jdbc examples I have to decide whether to do the same for jdo and ibatis.  </p>

<p>Honestly, I don't think anybody in the company will ever use these, but it doesn't hurt and keeps me busy.  As long as I look busy, I will probably keep this job.</p>

<p>Still not sure about jdo and ibatis though.  This is turning into an awful lot of work.<br />
</p>]]></description>
<link>http://www.mamaliz.org/blogs/entropy/archives/2005/09/sample_program.html</link>
<guid>http://www.mamaliz.org/blogs/entropy/archives/2005/09/sample_program.html</guid>
<category>java</category>
<pubDate>Thu, 22 Sep 2005 12:27:02 -0500</pubDate>
</item>
<item>
<title>database or no database?</title>
<description><![CDATA[<p>I just finished the no database build environment.  mg asked me why anybody would ever want to use it?  I am now wondering this myself.  I am not sure that any build environment should not include a test database (preferably embedded).</p>

<p>Any opinions on this?<br />
</p>]]></description>
<link>http://www.mamaliz.org/blogs/entropy/archives/2005/09/database_or_no.html</link>
<guid>http://www.mamaliz.org/blogs/entropy/archives/2005/09/database_or_no.html</guid>
<category>Configuration Management</category>
<pubDate>Sat, 17 Sep 2005 16:06:48 -0500</pubDate>
</item>
<item>
<title>Ant</title>
<description><![CDATA[<p>I hate ant, I hate it with a passion, but I still like it more than I like maven.  At least is ant is stable for some version of stable.  Maven will have major changes while I am still trying to get a project out the door.</p>

<p>Right now I am trying to get ant and hibernate playing together.  I am a newcomer to hibernate 3 (I hated hibernate 2 and used it daily).  I think I am a reasonably intelligent person.  So, tell me, why can't I get the reverse engineering task working in less than an hour?  I not only need to get it working, I then need to document how/why/when on it.  Let me tell you, the information on the web is very sparse for hibernate 3 tools.  And, of course, nobody has come out with a decent book on hibernate 3.  I have no idea if any are even planned.</p>

<p>Makes me think more and more of just going with straight spring/jdbc.  Wouldn't have to teach one more framework.  Wouldn't have to tear my hair out.  Wouldn't have to document the how and why of hibernate tools.</p>

<p>Of course,  I have also realized that I need to write a short, humorous, and factual manual on how to use ant. And why it will make your life easier and keep your manager from strangling you.  I don't want to go into the api, I don't want to teach people how to write tasks.  I just want to explain how to get hibernate working and how to build/deploy a war file.</p>

<p>Damn, I wish there was a decent book on hibernate 3.  Or even on ant.<br />
</p>]]></description>
<link>http://www.mamaliz.org/blogs/entropy/archives/2005/09/ant.html</link>
<guid>http://www.mamaliz.org/blogs/entropy/archives/2005/09/ant.html</guid>
<category>Ant</category>
<pubDate>Wed, 14 Sep 2005 13:27:26 -0500</pubDate>
</item>


</channel>
</rss>