your instructor

headshot of Brian HughesBrian Hughes is a Web Application Developer, as well as the head of web technology (aka. Webmaster), for Dartmouth College in Hanover, NH. He's been building database-backed web applications since the mid-90's, using such technologies as FileMaker Pro, MySQL, Lasso, Perl, Zope, PHP, and even CGIs written entirely in AppleScript. In the late 90's he started using the UserLand Frontier scripting environment to build, and deploy, dozens of production web applications.

All of that changed in mid-2005 when he discovered Ruby on Rails. Since then he's been doing Ruby and Rails programming nearly full-time, and has built and deployed several Rails applications, including the misson-critical web-based system used by Dartmouth to track all student applicant interviews. See a description of that application below.

Brian brings his depth of experience to the classroom to help you get a strong start in learning how to build web applications using Rails.

some details

Interview Tracking System

Dartmouth College receives 13,000-14,000 applications for admission each year, from all over the world. In addition to reading each application, Dartmouth's Admissions Office also wants as many of those applicants as possible to have a face-to-face interview with at least one Dartmouth alumnus. This is done by coordinating about 3000 alumni volunteers, broken up into almost 300 geographical districts. Each district has one or more coordinators, who work directly with Admissions to assign applicatants to interviewers.

Until the fall of 2004, this was a completely manual process. In the spring and summer of 2004, Brian designed and built the "I-Track" interview tracking system. I-Track takes applicant contact information from Admissions and makes it available to the district coordinators. Those coordinators then have the ability to manage the assigning of their applicant pool to their interview volunteers.

The 2004 version of I-Track was built in Frontier, not Rails, and had no facility for interviewers to log in. Nor could the coordinators assign more than one interviewer to an applicant. In mid-June 2005, Brian began re-writing I-Track in Rails. By mid-October 2005, not only had he taught himself Ruby on Rails, but the completely re-written I-Track 2.0 was put into production, with nearly twice the number of features, and over 10 times the number of users, as 1.0. That kind of productivity, due to the Ruby programming language and the Rails framework, is simply not possible in any other web application framework currently out there.

Usher Lottery System

The Hopkins Center at Dartmouth College plays host to well over a hundred performances each year, in their many performance venues. "The Hop" supplies ushers for each of these performances. These ushers -- students, staff, faculty and local community members -- participate in a lottery each term for those performances they want to usher.

In the summer of 2003, Brian developed the Hop Ushers system for the Hopkins Center Events staff. They use the system to record the "shows" that are happening, each term, at each of the venues. Each show can be performed on multiple dates, and each performance needs a team of ushers.

The ushers each have a login to the system, where they can indicate which performances they would like to attend at the start of each term. They submit a ranked set of preferences, within certain constraints, for the performances they want. But they don't just get assigned to the performances that they pick.

At a designated date/time, the Event Staff runs "The Lottery", which is a fairly complex script that does a weighted, random assignment of ushers to performances. The real complexity comes in when there are more ushers signed up than a performance needs. The lottery procedure tracks those ushers that didn't get a performance at a given rank. It uses that information to up-rank the usher's remaining ranks by one, for the rest of the lottery run. This system is scheduled to be re-written into a Rails-based application this summer.