Polishing New Web Apps

It is always difficult to prevent summer web development projects from bleeding into the start of the school year, complicating an already very busy time. I gave myself four projects to complete this summer: a new admission inquiry and visit scheduling form for prospective applicants, a new attendance form for teachers, conversion of our student directory from mySQL to MSSQL with Blackbaud table structure, and conversion of the community service learning database from flat text file to mySQL/MSSQL.

Fortunately, I was able to finish new development on three of the four by the start of school and managed to complete the fourth over the Memorial Day long weekend. In addition, the work I have had to complete during school operation has been limited to bug fixes and little feature additions. The worst case scenario happens when the application is not quite finished and I am trying to complete new features while users are hitting the server and the application itself. However, it is also impossible to find all of the bugs until 500 users return from summer vacations and begin to use the scripts.

The attendance form is really a year-long test of online attendance before everyone has to use it when we open our new building on Sacramento St. Attendance is a “mission-critical” application in a school, and this has to work flawlessly in order for everyone to use it next year. Interestingly, half of our teachers have committed to submit all of their attendance online, which suggests a new level of convenience over the old paper process. Currently, the attendance script only mimics the paper process, allowing the teacher to mark students tardy or absent and then format this data for import into Blackbaud, our student information system. Over the course of the year, we will add features so that teachers may review the attendance records of students, and students will be able to view their own attendance records.

The best idea my colleague Ina and I came up with was to limit the functions of the web script and continue to use our student information system to perform core administrative functions. This allows the heaviest users of the attendance system to maintain their current routines and use a fast, powerful desktop application to manage attendance rather than a slow web application with a limited feature set. However, Blackbaud’s data is stored in an accessible MSSQL database, which allows the web script to display whatever information we feel students and teachers need to see. The MSSQL database is accessed via a read-only user, making it no more vulnerable to enterprising student hackers than it was before! Most importantly, this decision dramatically limited the number of features the web script had to handle.

The Admission script took much longer to develop, and we had to settle for a smaller feature set than we originally desired. The application allows potential applicants to input family information, which is then formatted for download and import into Blackbaud. It took many iterations to get the input -> import sequence to work properly, and we still are weeding out small problems. We learned that collecting input on such widely varying information as family details is exponentially more complicated than collecting attendance data. Blackbaud had numerous specific requirements about the format of such items as gender, address information, and activity information that it took a long time before most of the import exceptions were weeded out. Still, we are happy with the partial automation of about 1,000 applicant inquiries!

Our community service learning program requires students to write action plans and learning contracts, then submit the hours of service that they perform to the CSL office. Two years ago, this was a 100% paper process with the Reception staff required to input all of the hours data submitted by students. Last year, we moved the process competely to our web site, but I built the script on a flat text file database, and many of the relationships between the action plans, learning contracts, and hours broke in the process. This resulted in unexpected reporting results and errors. This year, I trust the conversion to mySQL will eliminate these problems. There is a lot less that can go wrong with a relational database structure. mySQL queries can automatically link tables, whereas everything is manual with a flat text file database, including the management of carriage returns in the data files.

Our student directory was a big hit last year with the teachers, who used it to look up name, parent, and contact information for students. The only problem with the script last year was that the data was not live, so I had to periodically export student information from Blackbaud into mySQL in order to keep the database relatively up-to-date. As a result, an address change might not be reflected in the online directory for weeks after its submission. This year, everything is live, which made the SQL queries more complicated (because of Blackbaud’s normalized table structure) but performance better and ongoing maintenance a lot simpler. Now, when a parent phones in an address change, this is immediately reflected in the online directory, and course changes are immediately reflected in class lists and online attendance forms.

Comments are closed.