NYC Java OpenSource Conference

It’s a small world after all. Vic Cekvenich contacted me earlier in the year about speaking at a conference this spring. It finally came together Saturday April 3 in Manhattan. It was fun to meet some of my favorite code warriors, like Clinton Begin and Matt Raible. Not to mention my Struts partner-in-crime, Steve Reaburn. It was even more fun to learn that Jason Carreira of WebWorks fame lives only a few miles from me. Sounds like an excuse to heft a few Guiness some time. :)

Some of the earlier presentations ran long, and mine was right before lunch, so I had to rush a bit to get everyone out on time. Pity really, since it was bleeding edge stuff. I’m working on an example application for Commons Chain of Responsibility package, using the venerable Struts MailReader. The key idea is that you can reduce the Action to a “state adaptor”. The Action “simply” passes the state of the (web) application to the Command, and the Command (or Chain of Commands) does all the dirty work. In this way, the Command is a pure business object and can be used in any environment. Say, a testing environment or a desktop environment.

Given the abbreviated presentation, I’m not sure everyone got it. But, I’m sure I was at least able to put Commons Chain on everyone’s radar. Aside from the Struts example, I’d also like to do a WebWorks example too, along with a generic Servlet and Portlet example.

The one non open-source presentation was about Macromedia’s new Flex platform. Flex is a flashy front end that you can program via XML, using tools that you already have (like IntelliJ). For now, the cost puts it out of reach of many projects ($12,000 for two cpus). Still, Flex is going to be the technology to watch as the price drops. Someday, I’m sure, all web sites will look like Flex.

One very nice thing is that Flex is a presentation-only platform. If you already using a MVC architecture, say in a Struts application, you can just plug it in where you are using JSP or Velocity templates today.

One area where we all should start working together today is Validation. Validation runs up and down an application, as a system layer. The Commons Validator is a nice start, but there’s still much work to be done.

No Fooling

My Struts Quiz made the home page on April 1st, bouncing the book back into the 500s (or better) again – still in the Java top ten! We’re about to make our fourth printing of SIA, and there’s a Japanese translation in the works. The errata has trailed off, so maybe the 4th time will be the charm =:0)

The Retract Bid story went in easily. Did the Right Thing and set it up to mark the records, as if they were deleted. This made it easy to print a log of the retracted bids under the nominal bids. This also keeps all the detail so we can even undo it. (In case of data-entry error.) If I can get through paging today, that will sum up the necessary changes for the public part of the auction. That leaves improvements for fulfillment and user administration for next week. I’m eager to get through this so I can back to work on the Oklahoma project.

Finally go the laser printer fixed. It’s been pulling multiple pages when it heats up for some tie. Turns out there’s a lawsuit. Deadline for filing is the 8th, and my paperwork is even in the mail!

Fanning the Flames

Still haven’t gotten to write any tests for the auction program =:(. There’s way more business logic in the JSPs than I realized. I started to enter some bidding data to develop the tests and ended up debugging the errorhandling on the JavaServer pages. But it works, and that’s the endgame. As soon as this iteration ships, I’d like to take this whole thing back to drawing board and rebuild it, test by test. The reinstall on the new server cured our missing library woes, and everything went up just fine. Once we straighed out which keystore we were using, and the correct certificate type, the SSL certificate updated just fine too. Only glitch is that port 443 is not responding on the new server. It seems to be a firewall issue, but the sysop hasn’t found the problem yet. I tried SSL over 80 and that worked well enough.

The kids need shoes! We got Jake a new pair last night at the mall. Katie almost found a pair, but the purple ones didn’t come in her size. Stopped at Friendlys: slow service, great food. Tried the open meatloaf sandwich. Hmm, hmm good. Jake entertained his mom with the story of the Donner family, while Katie patiently awaited her sundae. Even managed to get back in time for Wife and Kids!

Buy It Now Buys it

Got the new Buy It Now feature up and running now. Wanted to get some tests running against the bid process in the bargain, but the opporunity never presented itself. By the time I got the feature cut into the (monsterous) JSPs, there was very little business logic left. All I needed to do was put in a short clause to close the lot if a valid BIN bid came by. Not to be foiled, I’m forging on with the Retract Bid story. There must be something in there I justifiably test!

Meanwhile, the sysops ran a fresh install on the new server, with the X-Window libraries this time, so Java could run on native threads. JVM and Resin went in just fine. (Tracing that one down drove me nuts!) Still couldn’t get the MySQL benchmark RPM installed. Seems to be some RPM naming glitch (Mysql vs MySql.) N’suth.

DataSource Blues

Been liking the Struts Generic DataSource lately, since it makes it so easy to switch between both databases and containers. But, alas, it’s not working out well for the impending auction launch (April 21). Ran the DBCP over the weekend, and it kept exhausting connections. Tried the settings for reclaiming the connections, but it only helped marginally. The Auction application uses RowSets for retrievals, and they seem to be eating connections unless I use the JNDI form. The Resin connection pools supports JNDI directly, and I know that works just great, so it’s back to that for this launch. Just need to get Tomcat configured to use its JNDI datasource so I can run the IDEA debugger in development. Very glad that I refactored the RowSet routines last week to eliminate duplication. Made switching back and forth between connections and JNDI quick and easy. Kent is absolutely right: normalization is just as important for programs as it is for schemas.

As a prank, Jake changed the screen savers on all the computers today. Reminds me of my networking days. I’d put in a batch of new computers. No one in the office would know how to use them, but still, I’d come back in the next day, and they would have managed to get all screen savers changed. =:0) “Agatha Christy” – “JungleBook” – what a cacophy!