Archive for the “software” Category

Well, I finally had to bite the bullet and migrate a large Wicket project from 1.3 to 1.4.  I was really not looking forward to it because of all the generic mess and model changes.

This was nothing against the Apache Wicket team, since they do an incredible job on the BEST Java framework ever (it is more than that.. but that is further down).

I just thought of having to review so much code and updating the ever growing set of Wicket “component” libraries, but that was the actual reason for the surge of change.

Some of the key sub projects I was leveraging were all converted (for sometime now) and were really starting to not go back to their 1.3x branches to update the older code.  I saw the 1.3x branches dying.  NO!!!!

I was trying to keep some of my key sub component / libraries manually synced from their newer bigger brother 1.4 code trees, but that was getting ever increasing painful and foolish.  Not to mention to find bug issues fixed in the 1.4 branches, but not in the 1.3x code base I was using.   So the decision was to maintain old branches for the sub projects (not my code even) or update my project and use all new 1.4 code for everything.

Jump… 1.4            1.4 is a very good great thing.

I know in the Wicket community there has been some huge Generic battles and long, long, long threads on it was the wrong approach, too verbose, too much code for no bang, blah, blah, blah. It was painful to watch since last year (thankfully they took it out of the forum and gave it a wiki home for folks to die over).

I actually find so far that 9 out of 10 times, it has made my code more understandable and actually working with models even more concise.  You get the added benefit of types collisions be detected in your IDE (if you use a real one) / compile time on models in the code that you would not get until you actually put the wrong object in a model for a component… then crash and burn and do a wtf was I thinking!  Nothing beats detecting issues before ever running a line of code.  I have C (not ++ or #, C) flashbacks of trying to figure out what code didn’t work, but would compile.  Boy I am glad I don’t code in that world anymore.

I am glad though, that I did hold out past the 1.4M3 period.  Much of the early on back and forth over how to implement generics was not pretty and I could only think of moving code from M1, M2 to M3, to RC…   Even sweet utility classes (albiet small classes) like ListModel and MapModel really do ease the coding and sets up the enhanced model design even better.   Once again, it makes the code more understandable as to what the Model contains and what you are working on.

Of course with any cleaning, updating has spurred on some good old refactoring of my own to leverage some new efforts in 1.4 branch and even how I plan to continue to leverage Apache Cayenne in some more elegant base Model designs of my own.  Should help with the whole deteaching and seperation level between Cayenne and Detachable models in Wicket so much cleaner.

So the dread, regret and final excitement was all part of my 1.4 migration.  At this point all projects will of course be 1.4x and some day 1.5… (Ajax enhancements could be even more awesome to come.)

Once again, it just goes to show that Wicket never steers me wrong and increases my I love for the whole framework project (99.9% of the time) that much better.  It makes Java Web development fun and exciting.  Come on kids, drink the cool aid, it won’t hurt ya!

SIDENOTE:

Wicket is not just a web framework, but a Java web way of life.   I don’t how many times I have told the story of that I will not / never (never say never right) go back to doing JSP development period.  It is just wrong once you see the light.

Tags: , , , , , , ,

Comments 3 Comments »

Coding Horror has a sweet write up on Coding Buddy.

But the part I loved the best when it showed up in the RSS feed was the associated sketch.

Priceless

Priceless

I know on several projects I have ran into this and even though in certain situation you can’t blurt out WTF, but you sure are thinking it along with the slow dull screams of WTF am I doing on this project!

Coding Buddy, its truly fact and not a work of fiction.  It can make a big difference.  I know even a conference call can help shake out the WLF/minute level.  Being someone that is working on three projects (day job and other) coding buddy is solely missed.

Sometimes you don’t get the added benefit of sitting next to other developers all day.  Sometimes that is good, sometimes it makes you review some of you project code months later and the WTF meter is pegged.  What the heck was going on then.. normally deadlines that “others” wanted met, 60 days before the project even started.  I count myself lucky that in all my development life I have only been in one project that I would call a complete failure and that ship just sank of horrible death.  Definatly no coding buddies there and a bunch of developers all on islands to themselves.  Never good.

Design first, Think often, Refactor more AND talk to a coding buddy (even if it is your childhood furry bear) so the w/min levels are under control.

Friends don’t let friends code without a buddy.

Tags: ,

Comments No Comments »

The Apache Wicket team is proud to present the second release candidate of Apache Wicket 1.4. This is the first Wicket version with java 1.5 as minimum requirement.

1.4 is really starting to shape up and since the whole generic movement in the project has settled since M3 days, I am going to have to jump from 1.3 to 1.4 big brother.

Wicket is the only way!

Tags: , , , , , ,

Comments No Comments »

There is a great Coding Horror write up by Jeff which gives a interesting perspective (most likely management.. but still the same) on the trade off of what your developer costs you and what new more powerful hardware costs you.

Hardware is Cheap, Programmers are Expensive

The post eludes to several key points, many of which I try to get management on numerous efforts to understand all the time.  Some hold true, but there is a point of no return.  Sometimes just throwing iron at it will only make more of mess (especially in the energy conscious era we have stepped into these recent years.)

Remember the quote, “To make money, you have to spend money.”… well the spin I see here is, “To save money, you have to spend money, sometimes.”

This directly ties into the The Programmer’s Bill of Rights.

I remember the days of Windows development that I heard that they did not want to give the development team too fast of machines, since then the code they wrote would never perform well on “normal” hardware that end users would have.  That was some what true, but much less important (excluding fancy fancy stuff) in a web centric world.  Now it has to deal with the size of the pipe and not the engine.

Over the years I have seen more times than not, is not about optimizing (as eluded to by Jeff) but cleaning and/or refactoring.  I usually find 9 out of 10 times if I refactor code when trying to make more out of it I get more bang for the buck.  But that also means you live a life of refactoring (which all good developer should).  This helps with:

  • Stop the code decay / erosion.  All code dies over time.  (Try to get management to understand that one right?  Some developers don’t even understand it sadly enough.)
  • Make the code more clear and concise for future developers who will have to read it.  (If it doesn’t you probably refactored wrong).
  • Enhance the current functionality with less code (more bang for the buck).  Yes Virgina, there is a Santa Claus and this can happen to you too.
  • Evolve the code to newer library/standards/technology.

The last bullet point is something I have found very important in the Java world.  You find that you have (or someone else) has written code for a project 5,6,10 years ago based upon JDK, lib, etc at the time.  If you evolve the code to use more modern JDK run-time libraries or even specific 3rd party libs/projects that didn’t exist back then, you can get some great windfall.  (Of course done with great scrutiny).

As always, there is not just black and white.  There is not just one solution to all problems.  Find the right shoe and make sure it fits.

Tags: , ,

Comments No Comments »

Apache Wicket 1.3.5 released.  The only way to do Java web development anymore IMO.

The Apache Wicket team is proud to announce the availability of the fifth
maintenance release: Apache Wicket 1.3.5. A lot of bugs have been squashed and
several improvements implemented. It is recommended you update to Wicket 1.3.5
at your earliest convenience.

Apache Wicket 1.3.3 Release news

Tags: , , , ,

Comments No Comments »

Download Day 2008

Tags: , , ,

Comments No Comments »