While working to finish the latest beta of Qwicap, I've also re-read Stewart Brand's book The Clock of the Long Now, which has previously tickled my mind in interesting ways. In that book, specifically on page 120, Jaron Lanier is quoted:
The computer code we are offhandedly writing today could become the deeply embedded standards for centuries to come. Any programmer or system designer who takes that realization on and feels the full karmic burden, gets vertigo.
I've had that feeling from the beginning of the Qwicap project, and it grows with each new release. (And I've only been thinking in terms of a decade or two.) The work on the latest beta has included several vertigo inducing issues, from big things like creating an internationalization/multi-lingualization architecture, to seemingly trivial issues in the process of adopting Java 1.5 features, like whether, where, and how best, to add support for the "for each" loop and its associated
Iterable interface to the public API.
There's been another kind of vertigo, too; one for which I know of no clever name. It occurs as the point of completion for the current beta seems to recede further into the future with every day I spend working on it. I'm getting plenty of work done on it, but, get one new feature more-or-less sorted-out, and it either uncovers the need for related work elsewhere in the code, or reveals whole new vistas of work in the form of features that suddenly seem both inevitable, and urgent, because, if I don't implement them now, while they can be cleanly integrated into the rest of the new work, I'll have to implement them awkwardly later. And thus the completion date seems to retreat further into the future the more I work to finish this beta. I'll be relieved when it's finally released.