Archive for April, 2005

Color me Flickr’d

So, as of Tuesday night, we officially unveiled our GA bits to the public Internet. It was a little anticlimactic, given that our marketing launch was 3 weeks ago. But a 1.0 is a 1.0, no matter how early the party was…

To celebrate, my boss got all us devs “pro” accounts at Flickr (and a promise of celebrations to come). A welcome and creative gesture, to say the least. As such, I have begun to upload my entire digital photo collection. At 2G of bandwidth a month, no storage limit, unlimited photosets, and all its other geeky features, Flickr will eventually replace my gallery installation.

I’ve got a lot of tagging to do…

Read Full Post »


Mission Accomplished

Our build is now Maven-free, and I couldn’t be more pleased. I found that Ant 1.6.2, ant-contrib, and Ivy make for a really good Maven replacement.

I realize it’s been out for over a year, but Ant 1.6 is a huge improvement over previous versions. Macros and imports make life so much easier when writing complex build scripts. I especially love the ability to simulate Maven-like pre- and postGoals with the import feature. It’s even more flexible than Maven in this regard, as Maven doesn’t allow preGoals and postGoals to have prequisites.

Ant-contrib has some nice tasks that make writing ant files easier. It makes ant more like a scripting language than a makefile, but sometimes pragmatism has to win out over purity.

I’ll save comments about Ivy for another post. Needless to say, I’m pretty pleased.

As expected, our build times with ant (especially when running automated tests) are now significantly faster than they were with Maven, and without that out-of-memory annoyance. A comment from Scott Farquhar suggested that Maven, like Ant, could also have its unit tests configured to run in a single, separate thread. That this option is not listed in the maven documentation for this feature is, I feel, representative of the sad state of Maven plugin documentation. However, when I actually tried this on a branch that still has the maven build running, the majority of the unit tests failed due to a LinkageError when loading the Node class. Google suggests others have run into this issue, as well. At this point, I refuse to read another line of Jelly to figure out a problem in a build we no longer support.

The biggest downside to this change is that we’ve lost all the features that came for free from the default set of Maven plugins. I’ve been able to get the important features (such as war file generation, JSP compilation, and appserver installation and control) replaced with some custom ant import files. I’m currently working on a replacement for the Intellij IDEA maven plugin.

For any Maven lovers who may stumble upon this post: I have no doubt that Maven works amazingly well for you, and chances are quite good that the reason I couldn’t get it to work the way I wanted is because I’m a moron.

I’m fine with that. I hope you are too.

Read Full Post »

Perusing javablogs, I discovered that a friend from college, Rich Unger, has a journal on java.net and recently mused on the proliferation of J2EE frameworks. I decided this was as good an opportunity as any to geek out in my blog, given that I’ve been neglecting it of late.

Despite the fact that he lists things like “Hibernate” (an Object/Relational mapping tool), “Velocity” (a text templating language agnostic to J2ee or web frameworks), “SiteMesh” (a Servlet filter for decorating pages with common layout components like headers and sidebars), and “EJB” (component-based framework for creating distributed enterprise Java apps), I believe Rich’s real astonishment is at the number of Java web frameworks available to webapp developers. Indeed, this can’t really be argued against; Java web frameworks are legion. New ones pop up all the time, each created seemingly to meet the whims of another development style. As a wise man once said, that’s the beauty of standards: there’s so many to choose from.

I think, though, it’s a common mistake (especially among webapp development newcomers) to confuse web frameworks with application frameworks. I would guess there aren’t many experienced J2EE developers who didn’t, at one time or another, work on a project that failed to make this distinction. A web framework, if done well, only provides a solution for one tier of a typical J2EE application: the UI. This is also the reason, as Rich puts it, that “the folks at Spring seem to take it for granted that Tapestry is something best relegated to the UI layer.” They do that because that’s what Tapestry and other such web frameworks are built to solve: organizing code and content in the UI tier of a J2EE application. Once you start using a web framework for more than that, though, you’re really asking for headaches. Placing business logic and persistence code directly into your Struts actions or JSP pages, for example, invites a host of problems into your application.

That’s why frameworks like Spring are so compelling. Spring is an application framework. In fact, while it is incredibly well suited for J2EE development, it works beautifully in environments that wouldn’t normally be considered under the J2EE umbrella, such as in the Spring Rich Client Project.

Part of Spring’s charm is that it (typically) doesn’t attempt to reinvent the wheel. It provides a clean and consistent interface (both through its API and its IoC configuration model) for many, if not all, of the technologies you would use in a typical J2EE application. Spring’s effectiveness in this regard can’t be understated. Rich complained about a proliferation of web frameworks, but have you seen a list of the “core” set of J2EE technologies? They include, but are not limited to, JTA, JMS, JDBC, JMX, EJB, JavaMail, JSP , and servlets. Note that only those last two are specific to the web tier. Yet all of these technologies have different APIs, different exception hierarchies, different configuration mechanisms, different programming models. The beauty of Spring is that it provides a unified front for these technologies, allowing for easier coding, testing, and configuration.

This is why there’s no contradiction when coupling Struts and Spring. While Spring does provide an MVC library for implementing the view tier of a web application, it doesn’t mandate its use, and provides direct support for a number of other view technologies, including the ever-popular Struts. Thus, Struts is not a direct competitor of Spring, just Spring’s MVC layer.

I could discuss this at length, but I’ve already exceeded the point where anyone would find this post worth reading. For more information about what goes into writing J2EE applications, I really recommend Rod Johnson’s books “Expert One-on-One J2EE Design and Development” and “Expert One-on-One J2EE Development without EJB“. While the second one is certainly Spring-friendly, the first was written prior to Spring, and is the tome that inspired the development of Spring in the first place. It provides a really powerful overview into the technologies and architectures available when creating J2EE applications.

Read Full Post »

Bad Blogger

I’m an awful blogger.

I mean, really bad.

I’ve totally failed this part of my quarterly goals. So it goes.

I really want to get into this. And I receive friendly pressure from friends and coworkers to write more. I don’t think they really want to read what I have to write. I think they just feel bad for me and my continually static dynamic content.

So I’m trying a little harder, as evidenced by my “flurry” of posts this morning. I’ve even got a few stewing in the hopper. I’m setting a personal goal of 5 posts per week, but don’t hold me to that. I also promise that if it doesn’t happen, I refuse to apologize for it.

A reason for my unprolificness is that I’m turned off by WordPress’s default editing environment. I’d like to find a decent editor that lets me work with WordPress drafts on the server. A preview feature would be nice but not necessary. Hell, I don’t even need an HTML toolbar. Is there a WordPress emacs mode out there? An eclipse plugin? For the 2 or 3 people actually reading this, what do you use to edit your blogs?

Read Full Post »

Ballard in springtime

Originally uploaded by shaug.

This month marks 3.5 years living in Ballard for Cheryl and me. July will be 5 years since we moved form St. Louis. This weekend, we visited some friends from church, and at one point they asked if we were committed to Seattle. At this point, I have a hard time imagining ourselves anywhere else. As a software developer, there are only a few places around the country where my job prospects would be better than they are here, and none of them hold any appeal to us. We’ve established roots, and now we’re raising a Seattle native. We’re going to be here for many more springs.

Read Full Post »

Duet in black and white

duet in black and white

Originally uploaded by shaug.

John put in a request for this in black and white. Picasa was willing to oblige (though I couldn’t figure out how to make a copy of the image in the same folder without doing so in my file manager). Follow the image link to Flickr if you’d like to see higher resolutions.

Read Full Post »



Originally uploaded by shaug.

Cheryl took this striking photo of Ani and Ani on the piano. They make quite a pair, if you ask me. This is also a representative photo of Ani of late—she’ll pull herself to standing on anything that will bear her weight. Of course, since Ani has no comprehension of her mass and the weight-bearing capacity of anything non-Ani, she’ll attempt to pull herself to standing on most anything. We’re in what we call her “head bonking” stage.

Read Full Post »