Licensing and rights
jSKone was written by Duncan Macklin in March 2006. jSKone may be used free of charge for any Bible quizzing activity. jSKone is made available on an as-is basis. No warranties are expressed or implied. Duncan Macklin can not be held liable for any consequences occurring from the use of this software. Duncan Macklin retains all other rights not expressly granted above.
Acknowledgments
Many thanks to Andrew Johnson, Jim Lumpkin, Joel Marks and Drew Williams for their knowledge and input of Bible Quiz Fellowship quizzing and scoring. Also to God's Mountain and Midland Ministries for beta testing during 2006 summer camps.
Overview
jSKone is a score keeper program for Bible Quizzing. jSKone can be used to keep score for a tournament, regular season, summer camp or even a coach's personal record keeping. jSKone has two main components: jSKone Admin and jSKone Client. jSKone Admin and jSKone client depend on a Postgres database which can be installed on the same machine as jSKone for single user processing or on a separate database server for tournaments and league processing.
jSKone Requirements
Java Runtime Environment 5.0 (1.5) available at www.java.com/getjava.
PostgreSQL 8.2 available at www.postgresql.org
Installing Postgres
Postgres has very good documentation for installation available at http://pginstaller.projects.postgresql.org/. Postgres should be installed on a computer dedicated solely as the “database server”. The database server should have a fixed IP address, or jSKone clients should connect to the database using the database server's hostname. Generally, follow the installation defaults except as noted below. Be sure to leave the 'Superuser name' as 'postgres' and make note of the password you assign. The password will be needed when creating a jSKone database.

On
the 'Initialise database cluster' page of the installer, check the
'Accept connections on all addresses...' option.
Postgres must be configured to allow jSKone clients to access the database. Postgres security is established in two parts. Part one is client authentication. Clients are verified by their IP address specified in the pg_hba.conf file. Part two is the database user and password.
Client authentication is described in the Postgres documentation at http://www.postgresql.org/docs/8.2/static/client-authentication.html. Postgres configuration can be accessed through Start->PostgreSQL 8.2->pgAdminIII.
Under the File menu select 'open pg_hba.conf...' option. The default file location is “C:\Program Files\PostgreSQL\8.2\data\pg_hba.conf”. Double click the blank line at the bottom of the list to open the 'Client Access Configuration' dialog. The following example allows any IP address to connect to the database server:

Creating a jSKone database
Execute pgsql_database.bat from the explorer window. This .bat file will run psql from the default install location and execute the pgsql_database.sql script from the same path as pgsql_database.bat file. The script is configured to create the default jSKone database – jskdb1. Enter the password for the default postgres administrator when the password prompt appears. The script also creates two default userids for the database [db name]adm to do jSKone administration and [db name]usr to do jSKone Client. The default password for these two users is 'password'.
To create additional databases for alternate leagues or championship quizzes, edit the pgsql_database.sql script and change 'jskdb1' on the first line of the script file to the new database name. Save the file and execute pgsql_database.bat from the explorer window.
Additional database users can be setup and must be given access to the appropriate database tables. A single database user account can be used by more than one jSKone clients at the same time. It is not necessary to establish a separate database user account for each user. It is advisable to have separate user accounts for separate databases to reduce chances of accidentally logging into the wrong database.
Use pgAdmin III (Start->PostgreSQL 8.2->pgAdmin III) to create database users (Login Role in Postgres). Double-click the database server under the Servers icon in the Object Browser pane. Enter the 'postgres' user's password when prompted. Right-click on 'Login Roles' and select 'New Login Role...' Enter the name for the new user. Select the 'Inherits rights from parent roles' option. The user id designated for jSKone administration must be a member of the [database name]admins (eg: jskdb1admins). User ids designated for score keepers must be members of the [database name]scorekeepers role (eg: jskdb1scorekeepers). It is critical in multiple database environments that the users are assigned roles for the appropriate database.
Installing jSKone Admin
jSKone admin can be installed on the database server, or on another machine with network connectivity to the database server. jSKone admin is used to enter quizzers, quiz sites, quiz masters and for general reporting.
Copy the 'skAdmin' directory to the computer where it will be installed.
Using jSKone Admin
Run jSKone Admin by double clicking on the “jSK Admin.jar” found in the directory where it was installed. Enter the appropriate values in the 'jSkone Settings' dialog:

jSkone Admin Dialog

Installing jSKone Client
jSKone Client can be installed on the database server, or on another machine with network connectivity to the database server. JSKone Client is used to keep score during a quiz.
Copy the 'skClient' directory to the computer where it will be installed.
Using jSKone Client
Run jSKone Client by double clicking on the “jSK Client.jar” found in the directory where it was installed. Enter the appropriate values in the 'jSkone Settings' dialog:


The 'New Quiz' dialog:
Fill in the values, select teams and click 'Start Quiz' to start a new quiz. Click the 'Open' button to open a previously scheduled quiz. Quiz name is not case sensitive (i.e. 'Cat' is the same as 'cAT'). The 'Open Quiz' dialog appears when the 'Open' button is clicked.

JSKone Client Dialog

Backing up a Postgres database
An appropriate backup schedule should be established to ensure safe keeping of the data. Chapter 23 in the PgAdmin III utility describes the available methods of backup and restore.
Version 2.0 Summary
This is a summary of jSKone 2.0 enhancements:
Quiz names are no longer case sensitive
jSKone now uses the settings stored in the database 'config' table if it has been created using the jSKone admin. If the 'config' table has not been created or if the DB User doesn't have privilege to the 'config' table, jSKone Admin and jSKone Client use BQF standards as defaults, (5 active seats per team, 5 questions for quizout, 3 errors for error out, 5th person answering bonus).
The 'settings' menu option in jSKone Admin allows administration of the scoring parameters. If the database was created from a version 1.0 script and the 'config' table doesn't exist, then jSKone Admin will offer to create a 'config' table on the fly. The following prompt asks permission to create the new 'config' table. (note: if different userids are used to connect jSKone Client and jSKone Admin, then 'table access' privileges to the 'config' table must be granted to each of the additional users.)

The settings menu allows changes to scoring parameters for league variations.

jSKone Client defaults to 'Load configuration from database' when connecting to the database. If the 'Load configuration from database' option is manually unchecked, the scoring configuration from this dialog is in effect until the jSKone Client is restarted.

Reporting features have been extended and may be sorted by any combination of columns. Double click any column header to select major sort key, single click any additional column headers as secondary sort sequences.

Column positions may be altered by dragging column headings left or right.
Reporting may be done by date range. Date Range reports have a comment in the bottom status line stating, “This report is date filtered”.
Team reporting has been extended.
The Quizzes tab displays a list of quizzes and the status of each quiz
Double-clicking a quiz shows the following dialog at the time the quiz was clicked. This dialog shows each team in the quiz with current score and current overtime score (if applicable).

Coaches sign-off feature. When setting the status to Complete, there is an additional option for signoff. In the signoff mode, the timeout button for each team becomes a red octagon to indicate that a coach needs to review the score. After each coach reviews the score, the red octagon may be clicked and changed into a green checkmark. The green checkmark indicates that a coach has agreed to the ending score. A quiz with all three coaches signed off is set to a “signed off” status. If all three coaches fail to signoff, the quiz is simply set to a “Complete” status. A quiz in the signoff status can not be altered. If adjustments need to be made, the status of the quiz must be changed to an active period.

Technical Jargon
jSKone is a Java based client application which uses JDBC to communicate to a Postgres database. Postgres is a BSD licensed RDBMS available at www.postgresql.org and distributed on the jSKone media under the BSD license. jSKone requires Java Runtime 5.0 which may already be installed on the computer or may be downloaded and installed from www.java.com/getjava.
Postgres may be configured for performance or reliability. It is always recommended to configure Postgres for reliability even with UPS and other hardware fail over solutions. Postgres default implementation is for reliability.(See Write-Ahead-Logging (WAL) and fsync topics in Postgres documentation).
One of its many features is the displaying of seats in a quiz instead of quizzers, which keeps a better view of quizzers. It's designed to be user friendly by keeping commonly used items (new quiz, toss question, quiz status) in the toolbar. The scores are saved to the database in real-time; so that if a score keeper forgets to set the status to complete, they are still in the database.
Another feature is the fact that jSKONE is written in Java, so it can run on many different platforms. The scores are saved to the database in real-time, so that score keepers don't forget to save the quiz and also allows stats to be accessed immediatly.
The best feature is probably the fact that jSKONE is free for any Bible quizzing organization, coach or team. It was decided to make it free so that anyone in Bible quizzing can afford to keep score the same way as everyone else.