Thursday, March 24, 2005

The System

For the last four years I've worked on an information handling system (The System) for my self. A system to categorize, sort and index all my digital resources (my PDF documents, that nifty word template, plain text code snippets etc). The domain model (DM) for the system has been complete and feature frozen for the last three years but the implementation approach and technical platform has changed numerous times.

I've actually had three proof of concept implementations for the domain model up and running:
v0.1 (early fall of 2001) Unix file system implementation + Apache with directory browsing as the interface
v0.2 (winter of 2001) Logic in PHP, storage in LDAP
v0.3 (fall of 2002) Logic in Java, storage in LDAP with new schema

The current version is implemented in Java, using Hibernate to persist the model to an RDBMS, the basic find, add, remove, edit functionality is in place but since I'm now half way through DDD I've started to reconsider if some of my Value Objects are actually Entities and vice versa as well as whether my aggregates are "correct" for my DM. This illustrates the fundamental problem and the, relatively short, lifecycle of each implementation.
Come up with a cool implementation technique
Throw the basic model and logic together with some unit tests
Start hacking on a UI (so far it's been web and/or Swing), velocity decreases (UI is booring)
Find a new cool book/pattern/technique/implementation approach
Terminate, archive solution and start over using/applying whatever was discovered in step 4
The worst part is that I'm actually quite comfortable with this even though I curse myself since the darn thing's never going to be finished. And I do need the system. The worst possible scenario would be that someone else (Microsoft would be über worst) comes up with a complete and working system so that I'd have to permanently discontinue my work in this area. Especially since they seem to have a wire tap on my brain considering their recent release of libCheck. I actually (belive it or not) prototyped a tool like that in the fall of 2003 although my implementation was a bit more rough. My thought was to implement an (n)Ant task used to bump the version number if the public API had changed.

Well easter holiday is knocking at the door, maybe I'll be able to get my shit together and do some work on The System during the next few days. Now I'm going to check in todays work and then I'm off to hold a (technical) recruitment interview.

0 Comments:

Post a Comment

<< Home