Friday Night Race Results Program
User Interface and Data Structure Specifications

A basic principle of volunteer contribution is that whoever does the work gets to do it their way. This specificaiton for the BYC Friday/Chowder Race Results Program is offered as a humble suggestion from the users' point of view.

1) The Boats Database

This is the file that contains all the entry data for each boat entered within the last few years. Addresses and phone numbers are not required for the functioning of the program, but would be nice to have if other uses for the database are contemplated (e.g. generation of paper or electronic mailing lists).

If the database is in a non-text format, there needs to be a very simple and quick utility for editing, expanding, and fixing the database.

Each boat record needs to have a number of extra text fields for boat identification. For example, "Dr Who" might be input as Dr. Who, DrWho, or doctorwho, or Doctor Who. Presumably the name search will be case-insensitive, but all combinations of abbreviation, spaces, and partial names should be included.

Same for sail numbers. "US 123" might be entered as 123, US123, or US 123.

There should also be generic boat records, e.g. "J-24" or "Santana 22" for common classes that might show up to race without having entered.

The rating in the database should be the rating after all corrections except the no-spinnaker credit, because this is normally the only one that's variable for each race.

Experience suggests that maintaining an accurate boat database is by far the most time-consuming part of the entire problem. Entering new entry forms is only the beginning: There are boats racing without entry forms, and many boats change their configurations or get new ratings at random intervals. The method of notifying the RC of these changes is highly variable.

The best approach might be to make the boats database accessible by all racers so that they can enter, modify and maintain their own records themselves. This could be either through a web interface or an editable document on an accessible computer at BYC. Abuse would be unlikely as long as the ratings used are included in the race result print-out.

2) The Starters File

This is a list of ID strings for boats believed to have started the race. It does not need to be accurate or complete, but is a convenience to the program and is used to create an on-screen sorted list of the boats expected at the finish line.

The ID string can be sail number, boat name, owner's name, or boat type (if unique) or some placeholder name for a boat with no known ID data that shows up to race.

The Starters File also contains time of the start of each class (defaulting to the scheduled start time) and the course number, which is used to look up course distance.

The Starters File should be optional. If there is no Starters File, then starting times and course number must be manually input to the finish file.

The Starters File (if it exists), along with the Boats Database, is used to generate a temporary list of boats on the screen of the computer at the finish line. This list is sorted by expected finish order, based on start times, course length, and rating, assuming all boats sail exactly to their rating.

3) The Finish File

This is a text file containing the finish time and an ID string for each boat that finishes, and the course number, distance, and start times.

This file can be created by manual input from a list of ID strings and finish times taken down by hand at the finish line. The Finish File should be a plain text file that can be generated by any text editor.

Or, the Finish File can be generated in real time as boats finish. If there is a Starters File, the boats are listed in predicted finish order on the screen. When a boat approaches the finish line, the user moves the highlight to that boat, then hits the space bar when it crosses the line. The boat should remain on the screen but it becomes marked as finished.

If several boats finish close together it might not be possible to scroll the highlight to each boat fast enough. In that case there should be an easy way to enter a finish time only, not associated with the highlighted boat. The correct association can be filled in as soon as there's time. People will have to remember, or write down, the finish order of a large pack of boats finishing close together. The program will record all the times.

There should also be an option to manually change the sorted order of the finishers as boats are seen approaching the finish line. For example, if a pack of several boats appear to be about to finish very close together, the lines on the screen representing those boats could be manually moved to the top of the screen in the order that they appear likely to finish. The user highlights the first one, hits the space bar when it finishes, and the highlight jumps to the next boat automatically.

The on-screen boat list also shows the spinnaker status of that boat. It should be possible to toggle the spinnaker status from yes to no before or after a boat has finished. There might also be a toggle for driver gender for woman skipper nights.

It should be possible to make changes to the rating or other details contained in the Boats Database without leaving the finish procedure.

It should also be easy to stop and re-start the finish procedure without losing data or finish status, and finish data should auto-backup frequently (might be running on a battery-powered laptop).

4) The Results File

This is the file that makes the printed output. Note that many of the cells on the current paper spreadsheet are not necessary. The printed output should include boat name, boat type, rating, spinnaker status, finish time, corrected place in class, and corrected place in fleet.

Results should be sorted by class and then by corrected time finish order.

Optionally it can include owner's name, sail number, speed over the course, corrected time behind first place, corrected time behind next boat.

For the BYC demographic, assume weak eyes. Print in a big and very readable font, multiple sheets if necessary.

An .html file output option is also nice.

There should also be some provision for displaying results on screen when no printer is available.