Once every few years or so, I find myself writing software for a non-profit organization. No, never the same one twice :-)

I first did this almost 20 years ago, for the Philadelphia Folk Festival, in Clipper v. 5.0, a compiled dBase - derivative, under MSDOS. The great thing about Clipper (at the time) was that it had “everything” - a functional programming language, a database (almost relational, but no SQL), and a “graphics” library that let you easily put things like forms on the screen. That was two more things than Turbo C++ had at the time :-)

It was pretty primitive compared to today’s environments (though it did have both ones and zeros) - to put up a “dialog box”, you had to save off the contents of the screen area that you were going to overlay, clear the area, draw a border using those nifty ASCII border characters, and then place the text in the box. To “close” the dialog, you restored the saved-off screen info. Lots of fun.

Interestingly though, it did have a few built-in objects, some object-oriented syntax for dealing with them, and, believe it or not, closures. I can’t remember what they were called - “code blocks”, maybe?

Anyway, I digress. As I was thinking about the building blocks of the current application - for the local Office of Emergency Management - I was thinking about how far we’ve come in the last 20 years.

The project is still in the planning stages, but here’s what I’m thinking:

  • Web App - so that many people can have access - just a dream 20 years ago.
  • Front-end to be written with GWT - all of the Web 2.0 goodness, hopefully little of the JavaScript pain.
  • Back-end in MySQL - just because it’s what the web host has
  • Data access layer - JPA over Hibernate, made easy via Spring - not only do we have SQL now, but we’re so tired of it that we try not to use it directly :-)
  • Server-side web app framework - Spring MVC
  • Authentication and authorization - Spring Security (formerly ACEGI)
  • Reporting - JasperReports.