Don’t lose this

After reading Phil Windley‘s post about login.utah.gov, I wanted to check it out for myself. We’ve just finished a structure to users affiliated with the ASRS to register and login to future applications, and I was interested in the state-wide direction that Utah has taken.

In doing so, I stumbled across this site that is a pretty cool collection of the Utah state developers’ common practices, tools, and such. I’d like to keep watching it.

Letting your Ant climb over the wall

It’s been quite interesting to play with Ant 1.6. I’ve trying to figure out the best way to share macrodef snippets between projects, and I think I found my preferred way for now. There are two ways I see for sharing Ant macros:

  1. Placing a common project in a well-known directory (typically up the directory hierarchy a bit), and then having all build files import that file
  2. Using the new antlib to define the macros, and then bringing those definitions into the current build file

I think that the metaphor I’ll use is that common build files are a part of a separate, deployable project. This approach should support:

  • One central place to change the shared macros
  • Easy inclusion of local common macros and targets alongside third party macros and targets
  • Sharing local macros with others external to this organization
  • Consistent use of the shared macros in each project without requiring per-machine or per-login configuration

To meet those needs, I’ll do the following:

  • Create a separated, versioned project for common build tasks, macros, etc. whose deliverable product is a JAR file
  • From the project perspective, treat the common build JAR like any other Java library, and check the JAR into that project’s version control tree
  • Use a standard directory in each project to hold all antlibs
  • Invoke Ant using the new ant -lib [commonAntlibDir] [target] method
  • Define namespaces at the beginning of each project file, using the xmlns:myTasks="antlib:my.domain.ant" syntax to automagically grab the shared task from the Ant classpath that includes the local project commonAntlibDir directory

One challenge is that always using ant -lib ... is bound to become tedious. Perhaps the local environment could be set to use this automatically, but that violates one of the goals. I’d prefer setting up the Ant libraries per-project rather than cluttering my local Ant installation, and hoping that everyone else has the needed libraries. This approach comes closest to doing that consistently than any other I’ve seen so far. We’ll have to see. YMMV.

O’Reilly chaning its process?

I touched on O’Reilly’s publishing process in this post a little while ago, but I found an interesting note in James Duncan Davidson’s blog about his latest O’Reilly publishing experience. It will be interesting to watch how this type of work progresses.

Let it Stop, Let it Stop, Let it STOP!

deseretnews.com | Nature takes toll in Utah, West

“We broke that one-day record with Friday’s storm,” Eubank said. “The most snowfall for any 24-hour period was 18.4 inches on Oct. 17-18, 1984.”

This monster snow storm delayed my in-laws trip to visit us in sunny Arizona by more than 8 hours! I may include details later, but it was a day of endlessly shifting plans.

New Ant tasks make build reuse a slice of pie

Stefan Bodewig notes some of the main improvements in the Ant 1.6 release in this entry. I think that between the <import>, <subant> and <macrodef> tasks, I should be able to easily make a pretty killer reusable build system.

Personal Imaging Anyone?

Blue Sky On Mars: December 23, 2003 Archives

Digital imaging for personal recordkeeping?

If the legal issues can be worked out, someone should develop a digital recordkeeping system for mere mortals (as opposed to MegaCorps). Just look at Fool.com: Records You Need to Keep, and you can see how even average folk can get buried in a mountain of paperwork.

I think that’s a really cool idea. My wife and I have been trying to figure out how to do something similar with our bills for a while, but we’ve never cared enough to go through with it.

Putting Bullets In Their Place

Mike Clark’s Weblog

I’m also rethinking how to put bulletware in its rightful place

I really like Mike Clark, and these are interesting ideas about conveying information.

Does your login page Yahoo?

Yahoo! Mail – The best free web-based email!

The Yahoo! mail login page uses some interesting ideas. They hash information on the client-side before attempting to login. They also store retries, and a challenge in hidden fields as well.

I should look into this a bit more. Some of this may be used to make it difficult for scripts to login. Some may be used to make it safer for users of public computers and prevent sensitive information from being cached on the client.

Does the location.href really instruct the browser to begin loading the URL while the current JavaScript continues execution? I find that hard to believe, but I’ll check it out.

Refactoring the Publishing Process

Erik Hatcher and Steve Loughran mention a future paper I’d really like to read in this excerpt of antbook-update.pdf (application/pdf Object)

Some day soon we will explain how the book was done, and how books could be
done better in future in a little paper, Refactoring the Publishing Process [4].
For now, key points are:

  • CVS server on a Redhat 7.1 system, “eiger” in the home DMZ.
  • Home stateful firewall (WebRamp) set to allow port 22, ssh through.
  • Office XP with tracking enabled.
  • Ant wherever we could.

Steve says “I don’t know how it has ended up that you need to have a home
DMZ to keep your server and 802.11b LAN separate from your other boxes,
with two levels of firewall to make deploying across a house complex, but it has.
It’s bad enough defending against script kiddies, pretty soon I’ll have to worry
about the RIAA too.”

So far I haven’t seen this paper, but the idea seems great and I hope to see it soon!

Looks Like PVCS Isn’t Popular

Merant VM web client: VM web client Project Databases

6 users have logged in since November 19, 2003

Granted, you have to call their sales group to get a login to this demo, but obviously people aren’t beating down their door. I’ve got a long list of gripes with PVCS Version Manager [7.5.1.0 (Build 297) to be exact]. Not the least of which is a woefully inadequate branching and merging model. Their sales docs and data sheet don’t seem to hint that much has changed. Though, at this link they say

Merant Version Manager – automates common team development tasks, protects code for safe reuse and parallel development, and prevents lost changes and content errors

More than source code protection

Merant Version Manager enables and automates complex team tasks such as parallel development, visual differencing, branching and merging, identification of merge conflicts, promotion levels and team workflow.

Even the long title (taken directly from the web page) leaves a bad impression of pure sales jargon or a blatant attempt at a high search rank.

I’ll leave my technical beef with PVCS for another post.

Email testing may as well be Snailmail

Our current implementation of testing emails received is WAY too slow!! It uses a sleep loop to watch an IMAP inbox for a message with a particular subject. There are several problems.

  • The mailbox needs to be cleaned of all test e-mails before each test, in case a stray message of the same subject was left by a failed previous test: TIME CONSUMING
  • The current mail server we use to deliver test e-mails takes more than 1 minute per message.
  • All testing is blocked until the e-mail arrives for the current test. Any way to make parallel tests would really help. Any way to have asynchronously look for an e-mail and then fail a test after it’s passed might help too.

The merits of testing the actual IMAP/POP inbox for a message are highly debatable too. Unit testing usually should use mock objects to fake complex parts of the system, but this is funtional end-to-end testing. So what should it do? Is it useful? We’re up to 67 minutes of test time. This is getting ridiculous.

Flashy Updates

Not only has Hibernate released a new stable version, but I really like the way their “Recent Site Upddates” table looks. It’s all tables and CSS, using mouse events to change the row colors. It’s compact, and pretty. I like it.