12 Nov 2005
I saw Crash for the second time this weekend (second for me, first for Sarah). I won’t get into the details but I really enjoyed it the first time, and this time I picked up a few minor details that went un-noticed in the theatre. It’s a movie seemingly full of off-the-wall loose ends that all end up fitting together.
It’s a provoking movie and I’d recommend it to all, you won’t be disappointed. As an aside, it’s nice to see a number of big names come together with the result not being some over-hyped summer blockbuster.
IMDB likes it too, 8.5/10 and #57 on it’s top 250 list.
Tonight we went and saw Jarhead, Jamie Foxx’s latest film. It’s a movie about war (era: desert shield/storm) in which the main character(s) were thrawted in each attempt to kill. All in all, a somewhat interesting movie about a group of marines, their training regiment and the determination to kill that goes along with battle. Sadly, not much more than that.
Crash 1, Jarhead 0.
07 Nov 2005
Refactoring tools are fantastic. I am an IDEA fan, and I think their refactoring support is second to none.
However, as great as it all seems, I think that refactoring tools can be overrated compared to other important factors.
For example, I was watching someone on a typical Java project with a particular stack, and watching their deploy cycle was making me cringe.
Sure they tried to do a lot out of the container, blah blah, but at some point they had to keep testing in the browser, which meant rebuilds of their project, and tomcat doing reloads for non-trivial changes.
The project was a medium size, and the cycle was painful to watch.
As I was watching this happen for a period of days, I compared to another current project where I would make changes and hit reload in the browser to see test.
I am saving time consistently, on a minute by minute basis.
On the other hand, it is quite infrequent for me to sit there and wish that I had “insert name of fancy refactoring”. When this happens it can be a pain, that is for sure. I hope that tools get better and better for non Java/static languages.
However, the more I thought about the comparison, the more I realised the the theoretical in me “man i love those refactorings. I just need them!” was dwarfed by the pragmatic reality of “man it is so painful to work in that stack, having these slowdowns CONSTANTLY”.
I tend to agree with Dion.
I’m currently working on a fairly large enterprise java project (Client: Thick=Swing, Thin=Struts, Server: Session/Entity Beans with a partial migration to Hibernate/Spring). It’s gotten to the point where a full deploy (meaning dropping the tables, deploying the ear which will re-create the db, and populating a few reference records) was taking > 6 minutes. This was without any sort of automated per-build unit testing that would normally occur.
Don’t get me wrong, I love refactorings but as long as my editor doesn’t mess up my explicit/implicit structures during a refactoring, I’m quite content with the current state of things.
I’m a big proponent of frequent deploys, tests, and commits. Where this falls down is when each iteration takes minutes to execute (in my early example, JBoss took 45s to start&deploy with JRockit, and a build/deploy would take on the order of 4 minutes provided the database was not re-created).
Luckily we’re going through a fairly substantial re-architecture of our backend and a nice side-effect is that the build/deploy/test turn-around times appear to be going down. I’ve migrated to TestNG, Subversion, Hibernate, Spring and Java5. We’re still using JBoss as our application container but only serving a single EJB 3.0 stateless session bean facading a cleanly defined Spring-based infrastructure.
I was skeptical at first but I’m quite happy with the relative (compared to xdoclet) simplicity that JBoss’ EJB 3.0 implementation offers. One class, one remote (pre-existing) interface and we’re done.
The application of Spring on the client and server sides allow us to easily unit test inside and outside of the container. The in-server infrastructure is quite thin and easily tested. The re-architecting effort is still underway so I don’t have firm numbers on the efficiency savings (in terms of development/deployment time) but I would expect it to be at least an order of magnitude less.
22 Oct 2005
Last weekend I was fortunate enough to make it down to Seattle for No Fluff Just Stuff.
The conference was excellent and I came away with an excess of ideas.
Sessions I attended (i don’t have my notes handy so my comments are based on what I remember of the topics):
Herding Racehorses and Racing Sheep – Dave Thomas : Excellent speaker and informative talk.
Unit Testing with Jython – Stuart Holloway : Cool ideas, I like the idea of easily being able to run a superclass test against all of the implementing sub-classes. The talk didn’t really focus on the specifics of unit testing java but more on how you can play with the execution semantics of python/jython to make life more interesting.
Stretching Java – Bruce Tate: Good speaker and talk. A little anti-java but having had experience with Ruby/Rails, a lot of his commentary had basis.
Keynote – Jason Hunter: Talked about his experiences with Sun, Jakarta and how Tomcat came to inception. Interesting.
Being Productive with Java in the Enterprise – Ben Galbraith: Another good talk. I like the concept of picking an enterprise stack (something that .NET gives you by default, but you’re forced to choose best of breed in J2EE-land) and having resources dedicated to the stacks extension.
Ruby on Rails – Dave Thomas: Excellent talk. Gave the ‘look what i can do in 5 minutes’ demonstration of bulding a CRUD app in Rails.
A Pragmatic Look at Agile Architecture – Mark Richards: Decent talk, it did have relevence to the goings on at work.
Ajaxian JavaScript Frameworks – Ben Galbraith: Actually wasn’t all that fond of the talk. I didn’t attend the previous timeslot’s Ajax talk so I missed the cool stuff. What I did catch was just a discussion of what exactly xmlRequestObject is and how these frameworks work which I already understand to a certain degree.
The Fallacies of Enterprise Systems – Ted Neward: Ted’s a good guy. The talk went over a list of 11 common falacies when developing enterprise systems and, in my opinion, they were all bang on. It’s obvious what they are, but in development-land we tend to take a lot of things for granted without realizing the implications.
Introduction to Web Services, 2005 Edition – Ted Neward: Talked about the latest WS standards, web services shouldn’t be used for RPC, etc. I don’t have too much experience or interest in web services right now but it was interesting to attend the talk.
J2EE Command Pattern – Mark Richards: Extremely relevant to my work and it was actually a very good concrete talk.
Ruby on Rails – David Geary: I wanted to end the show with a fun presentation. Unfortunately and largely because I attended Dave Thomas’ talk on Rails, this was not it. David took the same approach as Dave and went through a short demonstration of the different pieces. I had to cut out early to make it back to Canada so I’m not sure if the two presentations ended up diverging.
In a show like this it was difficult to attend all the sessions I wanted to due to conflicts. There was a huge underlying push towards Ruby/Rails but that didn’t distract too much from the Java/OSS nature of the conference. Unfortunately the speaker slated to give the Advanced Hibernate talk had a wife about to give birth and was unable to give the talk (I was really looking forward to the talk but perhaps I’ll find something equivalent from JavaZone/JIA or JavaOne Online).
All in all, an excellent show and I look forward to going back next year. Favourite Speakers: Dave Thomas, Bruce Tate, Ted Neward.