Development information

Back to main page

What can you do to help?

Developer Notes

We may want to talk about coding standards sometime.

The QuantityAttribute was modeled after the Quantity idea from Martin Fowler's Analysis Patterns. See the files distributed in the release download, for anything else at this point.

Why in java? I code on linux, you run on windows, etc. C++ is too much work for that, for now, given the minimal payoff for this type of app. Python and scheme (as in framerd) were also contenders but I started spending too much of my limited time learning framerd and re-learning scheme to get very far w/ the project. Don't have as good a reason for not using python, perhaps, though there are fewer python programmers, and I'd like to maximize others' involvement if possible. Python also is enough slower it may matter, has slightly fewer API's into other tools (that's changing fast though). Java can also host python or scheme (perhaps except continuations) if desired. Also, I'm more productive when I can think in one language all the, time, and java is in so many places, from handhelds to big servers, enough OS'es, phones, databases, all kinds of toolkits & vendor api's etc., that for now that's a win--learn once code anywhere. And it's a very active space for
exploring new software engineering tools in the last few years (like junit and things like jakarta). Then my small brain can focus on the
ideas instead of the language. You are free to disagree but that's my rationale for the moment.

Extreme programming/refactoring/junit: These combined helped me break some mental logjams. I think the Refactoring principles (book by Fowler) are very helpful and I hope we use them. Also test first, "YAGNI" and all. Working code whose design is fluid enough to evolve, is better than perfected too-slow design cycles. I also use ant to compile, but that  doesn't seem mandatory.

Why postgresql: it works, is ACID compliant etc., and should be replaceable with anything that implements the Database interface and
passes the same tests (which may have to be reorganized when we add another database type).