In working on my Character Sheet Manager for Geist characters, I’m finally building something that I’ve wanted for a couple of years now in projects at work — an Exception logger. Just a piece of middleware that grabs exceptions and logs them somewhere. In my case that’s Redmine, which has an API for manipulating issues. It’s not a perfect API, alas, because I can’t add notes to issues; I have to update the description of the original item. Django makes this very, very easy to build. I have an app in my project just for this Redmine connectivity, and I can keep its code and tests separate and independent.
I’m never sure how robust to build out something like this. It’s going to prove handy to me in the case of this app and others I’ll be building out, but there’s no way I’m going to try to implement every nook and cranny of Redmine’s API — I don’t need it. If I release it, though, other people could want the things I don’t need. What’s the right balance in releasing a tool?
As always when working on an app, it’s a struggle not to over-engineer things. This Character Sheet Manager project consists of two apps (ignoring the Redmine integration): the Game Manager and the Sheet Manager. The Game Manager is (right now) just a data app — it’s for me (and Greg) to put in Merits, Skills, various powers, etc. The Sheet Manager will be the consumer of said data.
But character creation logic — knowing how many skills someone gets, knowing how many specialties — is really per-game knowledge. But it’s the same for all White Wolf games of this version. …But what if I want to support something like Scion, where the rules differ a bit?
But… I don’t want to support them right now, and might not ever. Is this also a case of You Ain’t Gonna Need It? Right now, I kinda just want to get it out the door and in use as an evolving prototype. I don’t mind refactoring and rewriting some, but I don’t want to shoot my foot completely off, either.
In related news, there’s apparently been grumbling in global-level out of character Geist mailing lists about the existing character sheet. I should hurry.