Circle of Dependencies
Just starting to dig into Spring in Action. So far so good until I run into the first example. It’s just a Hello World style example so what could go wrong?
First issue crops up when I notice the following line:
BeanFactory factory = new XmlBeanFactory(new FileInputStream("hello.xml"));
IntelliJ just keeps barking at me that the constructor for
1
|
XmlBeanFactory
|
can only take a
1
|
org.springframework.core.io.FileSystemResource
|
. Digging through the APIs I find that since I’m using Spring 1.2.2, this has changed since the book’s printing. At least there’s a reference to it in Manning’s forums for the book. And they mention in the book that the examples are for 1.1.3.
After that I do a very dumb thing. I setup a simple unit test to invoke the HelloWorld method. So far so good. I run the test:
java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory (long stack trace follows)
OK, so I assume I’ve just screwed up my path to the hello.xml file. That would be the bonehead move that costs me 45 minutes. Somehow I had it in my head that all the dependent libraries must be wrapped up in the spring.jar. After lots of red bars, I finally try importing
1
|
org.apache.commons.logging
|
. Of course IntelliJ can’t find it. A simple addition to my
1
|
lib
|
directory and my classpath and BooYa green bar. I sleep a lot better with green bars.
Coding for Managers
I haven’t written a line of code in about a week at work. Sure I’ve reviewed some code, and made suggestions for developers, but I haven’t typed out any code in about a week now. It seems like management issues keep overwhelming any day to day coding or research. I’m beginning to feel like an ‘Enterprise Architect,’ I just draw pretty UML diagrams and let the programmers implement my design. Danger! Danger! Will Robinson.
So this week things will change. I’m putting together a JUnit intro for our organization since many of them still don’t get the paradigm. And I’m coding in a half decent IDE, like IntelliJ, not just living in the ever so horrible PowerPoint IDE. ‘Code or Die’ like the old skateboard video game goes.
Dude Where’s My CVS
I’d been tooling around looking at CVS hosting options since I’m doing some hobbyist type development with a friend. Turns out in the preface for Spring in Action, one of the authors thanks CVSDude. 2 MB and one account login for free, 200 MB and 5 accounts for $10 bucks a month, sounds about right.
A Slightly Different View: The Polymorphic Podcast
I’ve been catching up with thePolymorphic Podcast. The host, Craig Shoemaker, puts on a development oriented show focused around .NET. At first I figured I’d just sample one show on Unit Testing, get an idea of whether NUnit is really any different. I figured it probably would be too .NET focused and not that interesting. As it turns out like many well rounded developers he’s more open minded about technologies even if he spends pretty much all his time doing .NET development.
It’s nice to see another former web designer make the transition to a solid software developer. I’m not sure I can claim to have ever been much of a web designer, but by the standards of ’94 and ’95 knowing the ins and outs of producing an animated gif with GifBuilder qualified you as a web guru practically.
Craig focuses on current techniques and tools such as unit testing, AJAX, and object to relational mappers. It was nice to learn during an interview that .NET developers are starting to look at design patterns and unit testing frameworks. There’s a realization that a book like Head First Design Patterns is really valuable even if all the example code is in java.
There’s some .NET specific content, I really don’t care how ASP.NET does URL rewriting for example, but in general the content and commentary more than makes up for it. Worth checking out if you like listening to development topics on your iPod.
Following In My Father’s Footsteps: Hipster PDA
I realized on a short trip back home, that I’ve currently adopted a habit of my Dad. He’s an electrical engineer by training, and he picked up programming pretty early on. I still remember he actually used pocket protectors, built his own television, and proudly showed me his slide rules.
Anyway as early as I can remember my father carried around a .5 mm pencil and a little 3×5 spiral notebook. Lately I found myself frustrated with trying to track things on a Palm Pilot, a Mac, and a Dell laptop that blue screens about once a day. So I reverted to a, Hipster PDA, basically a stack of 3×5 cards with my lists on them.
After 3 weeks now it’s working pretty well. Of course this means I have to admit to myself that my Dad was onto something that I largely ignored for twenty odd years.
Management wise I find that keeping my major projects on an easy to modify 3×5 cards helps me stay on top of things. When you have 5 or 6 projects that comes in pretty handy. And because they’re always in sync reviewing them a few times a day is a lot easier which means I do it more often and stay on top of things better. I struggle a bit with it when I have 8 out of 10 items done on a card and I have to move the two items to a new card manually, but it does lead to another review.
The really nice thing is when I do a weekly review of everything I can spread out all my 3×5 project cards across my desk and get a good big picture idea of where I am. And the low tech 3×5 cards and lists fit in well with Agile ideas like information radiators, CRC cards, product backlogs, and adapting to changing priorities.