Prompt: Tell us about something that you have created. This can be, for example, a design, a device, an object, an idea or concept. (Please limit your answer to 500 words or fewer.)
A familiar ritual in school: schedules arrive in the mail and everyone springs to their phones and AIM to ask “ What's your schedule?” I realized there had to be a better way, so when schedules came for my sophomore year, I stepped up to provide it. After finding a free webhost with appropriate features, I launched into my first all-night coding session and emerged with my masterpiece: the OLSchedDB v1.0. Word spread, and by the end of summer, over 700 schedules had been entered.
The concept was rather simple: as people entered schedules, a master table of classes was built and the students table recorded students' schedules by their classes' unique ID numbers. The students table could then be efficiently searched for students whose schedule listed a particular class in a particular period. I also included input sanitization to prevent code injection and privacy protection that allowed one to view only his own classes' rosters. The implementation too was relatively simple: unstyled HTML for the interface, PHP for the logic, and SQL for database transactions.
Dealing with user's mistakes and disregard of directions proved more challenging. Originally, the schedule form was a series of text fields with directions to enter classes/teachers as they appeared on one's schedule. Within two days of launch, however, the class table held rows for “WORLD HIST I,” “WORLD HISTORY I,” and “WORLD HISTORY 1” (I'd had foresight enough to normalize case). I manually fixed these inconsistencies and restructured the form so that one could instead select his classes from alphabetized, dynamically-generated lists. Reliability improved considerably, and the site flourished.
As the next summer approached, circumstances conspired against the site's return—both my hard drive and my host's servers crashed, leaving me with neither code nor hosting. Within two days of schedule mailing, however, I'd heard from several people asking, “where is it?” Seeing real demand, I launched into another all night session. the following day, I relaunched, under my own domain, with several improvements including text fields with AJAX suggestions for schedule entry, email verification of accounts to avoid fraudulent and redundant entries, and a new Facebook-mimicking CSS design, giving the site its new name, “Dolphinbook.”
This past summer, my code intact, I relaunched Dolphinbook. To further improve integrity, I spent more hours than previous summers manually correcting the database, added new checks on data, and wrote a set of management tools in Ruby. The most substantial, “fixer,” was a conflict resolution tool that located and listed all classes which a teacher allegedly taught simultaneously and automated their consolidation. Thanks to the separate student and class tables, this was rather complicated.
This project was cool because it let me use my skills to help both friends and classmates I didn't know. Because of copyright notices and my domain, people do know I was responsible, so occasionally an acquaintance will make the connection and say, “Did you make that Dolphinbook thing? That's really cool.” These moments make me feel good, but I'm also glad I helped hundreds of people I'll never meet.