Sunday, October 29, 2006

Wow

Today is officially my 21st straight day without a day off, though I suppose that technically this counts as a day off because I'm working on something I actually want to work on without getting bugged by anyone, and I'm not working on other stuff that's far more important. Suffice it to say that I'm working on a major project for my employer that's supposed to be taking the back-burner, but I like it enough to work on it in my free time. I've been realizing more and more of the power of Spring's dependency injection features by refactoring all my reusable code out into Interfaces and libraries. When I applied a total refactoring of this on my major back burner project (call it Project "Catch the Assholes"), I finished the refactoring and took a look at what was actually left, and I was quite shocked but not surprised: the only things left were my form and persistence beans, and my controllers. And there were so few connections between what was there that it could almost literally be counted on one hand, because everything was wired together through Spring's XML configuration. I've never decoupled my code to such a degree before and it was quite a pleasant surprise.

A second pleasant surprise I had not long after that was to go through Appfuse and see what it could add to what I had already learned, and I was surprised to see that it was very little. I'd like to take this as a sign that I've gained a lot of valuable knowledge and I'm moving my code to higher levels of cohesion and lower levels of coupling than ever before. I guess we'll see where this goes.

Friday, October 20, 2006

The real post for today

I suppose you have to have an inital post to kick things off, so that's what my last post was. This post is about the ever useful DisplayTag library. ( http://displaytag.sourceforge.net/11 ). It's an oh-so-useful library that's used for displaying collections of java beans and other things on JSP(X) pages. And man does it ever simplify things.

Mmm, software

I hate blogs. People who post on them are usually jerks. I guess this makes me a jerk. But I wanted to start this one for my own personal benefit to log and track my progress as a software developer. To give some background, several months ago I was hired at a small internet startup and have been working at developing reports and small applications for them. My first task was a reports system that generates reports based off of an external developer's system. The external developers are typical (at least from what I've heard) software developers : they're slow to respond to feature requests, there's bugs all over the place (which they're reluctant to fix because it gets in the way of adding new features), and there's no documentation for anything.

As a result of the lack of documentation, everything I do for my work on the reports system is basically a guess. The only real good thing that's come out of developing that reports system is that it has kickstarted the learning process for my learning Java (AJAX even if you will) web development. I started off with writing basic servlets in a simply configured container, as well as very simple JSP(x) pages for displaying my content. The next step was learning to use Jasper Reports (and it's exceedingly useful GUI tool, iReports), and then integrating that into my web environment. From there I learned how to secure the container, and then after that I started learning how to use frameworks in order to write web applications.

My chosen framework has been Spring. Even though it has its quirks (like everything else I suppose), I've found it to be a very easy-to-get-along-with framework overall and it's made my development so much easier that I can really be nothing but grateful to its developers for making it. (Yes, spring kicks ass, so the mantra goes, but that's the last I'll say of it. Dependency Injection and AOP kick ass !). After starting with Spring, I then moved on to leaning Hibernate as my persistence framework, and that led me to getting all of my data access code (SQL, SQL-DDL, JDBC, JTA) automated for me and handled without me having to do anything, which is quite a nice replacement for manually coding JDBC and having to manually deal with Connections.