Checkpoint Reporter documentation


The following is a rough guide for how to use the software. Note that as the software is in a pre-alpha state, things are likely to change.

The latest version is 0.0.4. Substitute the version tag in examples below if you are using an older version.

Supported platforms

Tier 1 support

These platforms are actively used by the authors, and are known to work.

Tier 2 support

These platforms are not always used by the authors for development and testing, but are accessible to the authors for testing if problems are reported. The software should work, but may not be tested thoroughly (or at all) on these platforms, feel free to report back.

Tier 3 support

These platforms are not accessible to developers for testing or development, so if issues are encountered, help will be needed from those with access to the platform to nail down any issues. That said, the software should still theoretically work, so please do test and report back!

Future platforms

These platforms are not currently supported, but we hope to in the future.

Unsupported platforms

The following platforms will never be supported by this project as it is today.

Requirements

In order to run Checkpoint Reporter, you will need version 8 (or later) of the Java Runtime environment. Either the Oracle build or OpenJDK can be used. (There are other builds of Java as well, you're welcome to try and report back.)

You may, at your option, install the full Java Development Kit instead if you do Java development on your machine, but this is overkill for simply running this software.

On Microsoft Windows

Windows 10 and later

Builds for Microsoft Windows 10 and later are availabe on the Oracle Java downloads page.

Older releases

A build of Java v8 compatible with older Windows releases (including Microsoft Windows XP) can be found on archive.org.

The software is known to work on Windows 7 and Windows 10 and should work (but not yet tested) on Windows Vista, 8, 8.1 and 11. Compatibility reports are welcome.

On Apple MacOS X

Builds for Apple MacOS X are likely to be found on the Oracle Java downloads page.

The software is confirmed to work on MacOS X with sufficiently recent Java, but exact version details are not known.

Linux distributions

Debian GNU/Linux, Ubuntu and derivatives

Debian ship multiple Java releases, all with names of the form openjdk-${VER}-jre. So long as ${VER} is at least version 8, you should be fine:

Debian 13 (Trixie), Ubuntu 22.04 (Jammy) and Ubuntu 24.04 (Noble)
sudo apt-get update
sudo apt-get install -y openjdk-21-jre
Debian 12 (Bookworm), Debian 11 (Bullseye)
sudo apt-get update
sudo apt-get install -y openjdk-17-jre

Gentoo Linux

sudo emerge --sync
sudo emerge dev-java/openjdk-jre-bin

Other OSes

See OpenJDK's download page for guidance.

Installation

Assuming Java is already installed. Download the CheckpointReporter-0.0.4.jar file to your preferred location on your computer.

e.g. on Linux using wget, assuming you want to put it in ~/wicen/checkpint-reporter:

mkdir -pv ~/wicen/checkpoint-reporter
cd ~/wicen/checkpoint-reporter
wget https://codeberg.org/sjlongland/checkpoint-reporter/releases/download/0.0.4/CheckpointReporter-0.0.4.jar

Verifying downloads

If you wish to check the authenticity of your download, again assuming wget, GnuPG and sha256sum are present:

wget -O- https://keys.openpgp.org/vks/v1/by-fingerprint/B30754FDFBA1BD1D694D9B079795D2EFD3F7BD42 | gpg --import
wget -c https://codeberg.org/sjlongland/checkpoint-reporter/releases/download/0.0.4/CheckpointReporter-0.0.4.jar.sha256sum https://codeberg.org/sjlongland/checkpoint-reporter/releases/download/0.0.4/CheckpointReporter-0.0.4.jar.sha256sum.asc
gpg --verify CheckpointReporter-0.0.4.jar.sha256sum.asc CheckpointReporter-0.0.4.jar.sha256sum
sha256sum -c CheckpointReporter-0.0.4.jar.sha256sum

If all is well, you should see something like this (example from the 0.0.3 release):

$ gpg --verify CheckpointReporter-0.0.3.jar.sha256sum.asc CheckpointReporter-0.0.3.jar.sha256sum
gpg: Signature made Fri 20 Jun 2025 20:41:16 AEST
gpg:                using EDDSA key BE51976693B42045085FA318A6D5E7FE9C9B60C0
gpg: Good signature from "Stuart Longland <me@vk4msl.com>" [full]
$ sha256sum -c CheckpointReporter-0.0.3.jar.sha256sum
CheckpointReporter-0.0.3.jar: OK

gpg might warn the key is untrusted, this is okay. (You don't have to trust my key.) So long as it says "Good signature", your hash file is authentic. …and so long as sha256sum says the .jar file is OK, the file is not corrupted or tampered with.

Starting the program

Generic OS instructions

  1. Open a command line prompt and navigate to the location where the CheckpointReporter-0.0.4.jar is kept.
  2. Run: java -jar CheckpointReporter-0.0.4.jar

Bigger fonts and anti-aliasing

If you find the default font difficult to read, Java can be convinced to use bigger fonts and enable anti-aliasing:

java -Dswing.aatext=true \
     -Dswing.plaf.metal.controlFont=Arial-20 \
     -Dswing.plaf.metal.userFont=Arial-20 \
     -jar CheckpointReporter-0.0.4.jar

Substitute Arial-20 with your preferred font and font size. (Use quotes around fonts with spaces! e.g. "Times New Roman"-20).

Microsoft Windows

You can run the program by just double-clicking on the .jar file in Windows Explorer.

Apple MacOS X

The program has been confirmed to run under MacOS X by another WICEN member (version information unknown). Apple being Apple, it should know what to do if you double-click on it in the Finder window.

Linux

As per the generic instructions:

cd /path/to/your/checkpoint-reporter
java -jar CheckpointReporter-0.0.4.jar

You might find your desktop's file manager knows how to run a .jar file, your mileage may vary.

A debugging wrapper script

A wrapper script that picks up the latest .jar file in the directory and directs the logging output to a file for debugging is shared below:

#!/bin/sh

mydir="$( dirname "${0}" )"
jarfile=$(
    ls -1t "${mydir}"/CheckpointReporter-*.jar | head -n 1
)
logfile="${mydir}/cpr-$( date -Imin ).log"

java -Dswing.aatext=true \
     -Dswing.plaf.metal.controlFont=Arial-20 \
     -Dswing.plaf.metal.userFont=Arial-20 \
     -jar "${jarfile}" "$@" 2>&1 | tee "${logfile}"
xz -9v "${logfile}"

You can then run this wrapper script instead.

If you get a problem, this will create a .log.xz file in the same directory with a log of what happened, that can be emailed along with the station log (.txt file).

First run

Setting the station ID

The station ID is a 10-character alphanumeric identifier for the amateur radio station operating the checkpoint. 10 characters are provided so there is room for long callsigns (such as foundation licensees' 4-letter suffixes) and a station-managed identifier suffix. It must be unique for each instance of the software.

The first time you run the program, no station ID is set, it will assume a station ID of NoStnIdSet. To change it, click Edit and select Station ID, then enter the new ID into the pop-up dialogue box.

The pop-up dialogue box asking for the new station ID

The format used should conform to APRS station identifier conventions (upper case letters, digits and hyphens), but this is not enforced.

You only need to do this once, but can change it any time by the same process. It'll be stored in your user profile settings (~/.java/.userPrefs/com/vk4msl/checkpointreporter/prefs.xml on Linux/Unix, I think it uses the registry on Microsoft Windows).

The main window

The main window

The screen you'll see has two major panes. On the left is a navigation tree. As you define checkpoints and competitors, you'll see this fill out. Clicking on nodes here will change the pane on the right which displays the information selected.

The navigation tree is a work-in-progress, and sometimes as you create entities, they do not show up in the left pane. Collapsing and expanding a parent node will re-load the children for that node.

Setting up for an event

First step, go into the File menu and Save As, save the event file somewhere. From here, it'll automatically write to that file, you do not need to keep telling it to save.

By default, if you open a new file, it'll throw you straight across to the "New Event" screen. There are three fields:

Only the name is required, but you can fill the others out if you wish.

Click OK and you'll be taken to the new event.

Adding locations

Next step, go over to the Locations tab, and click Add. Here, you'll define the locations where your checkpoint(s) are situated. There are again three fields:

Next to the OK button, there's an Add More check-box you can tick if you intend to add more than one location, to save you navigating back to the event's Locations tab and having to click Add again.

As you do this, you should notice the locations appearing in the left-hand navigation tree.

Adding divisions

Once that is done, click on Divisions in the left-hand navigation pane, and once again, you'll see you're back at the Events, but looking at the Divisions tab. Click Add to add your first division.

Divisions just have a name, but like locations, you can add more than one if that's relevant to the check-point you're running (or you're running base). Usually, it's the length of the course being run; 320k, 80k… etc. The program is smart enough to recognise a numeric prefix and will sort by that in ascending order.

Adding competitors

Once you've added your divisions, you can fill in the competitors and stages for each. Click on the first division in the left-hand navigation, you'll be looking at the Competitors tab. If you know the competitor ranges at this point, you can click the add button, and it will take you to a screen where you can add competitors on mass.

There's a From and To field here, that defines the (inclusive) range of bib numbers. "Add One" just adds whatever number is in the From field, while "Add Range" adds all the numbers. You can subtract as well by clicking "Remove One", "Remove Range" or "Remove Selection".

When you're happy with the list of numbers, hitting OK will create the competitors in one hit.

Adding stages

Go to the division and clicking Stages; then hit the Add button, you'll be taken to a form like the other "Add" forms for defining a stage. There are two fields:

The name is the name of the stage. On horse rides, you might make mention of what colour/number arrows they're following ("red arrows #1", etc). The order defines "in what order" this stage is visited, with 1 being the first. Like the others, there's an "Add More" so you can list out all your stages.

Adding checkpoints

Go to one of the stages in your left-hand pane, it'll list the checkpoints, and again, there's an Add button.

The checkpoints form has 3 fields and a check box:

Taking scores

At this point, you're ready to take scores.

Scoring can be done from the checkpoint (All Sightings tab) or the location by clicking the Add button down the bottom. If you're working with multiple events, it's recommended you go to the location and add the competitor sightings there.

Scoring for a single check-point

If you've just got the one check-point running, navigate to it and click the Add button down the bottom. It will take you to the "Add Sightings" panel. You should see "from Checkpoint" is selected and the checkpoint chosen in the drop-down box.

The add sightings panel, for checkpoints

If you're entering in previously recorded times, you can choose "Time Given" and punch in the 24-hour time (minus colon), otherwise if you set it to "Time Now", each log entry will be recorded at the current time.

There is a comment field, which you can fill in to make some remark about the competitors going through (e.g. if they make a comment about bad signage or some issue, you can note it here). Right-hand side just above the numeric pad there's a text field, click that.

In the text field, you can enter your competitor numbers, pressing ENTER each time. Pressing BACKSPACE, DELETE or - (for the USB numpad users) will erase the entire field allowing you to re-enter a number. Alternatively, if your computer has a touch screen, you can tap the buttons on the screen. Each time you hit ENTER, the sighting is logged in the table to the left, most recent at the top.

The Competitor column will indicate one of two things:

A sighting with an unknown competitor number

You can correct a single score by selecting it and pressing Edit Sightings. Similarly, if for example the check-point is wrong for a group, you can highlight all the wrong ones, click "Edit Sightings", and from that form, tick "Change the Location" and specify a different check-point.

Scoring for a multiple simultaneous check-points

The add sightings panel, for locations

The procedure here is the same, but instead of navigating to each check-point as they come in, it is easier to select the location of your check-point and entering them "at the location" instead.

Once they are through, you can select blocks of them, and use the "Edit Sightings" feature to assign check-points to them all.

Selecting sightings for edit The edit sightings panel

Sending in unsent sightings

At some point, you'll need to radio these scores in. In the "Go" menu, select "Unsent Sightings" or press F9. You'll be taken to the "Unsent Sightings" tab of the first check-point that has at least one score unsent.

The unsent sightings panel

Down the bottom there's fields for the number of sightings, and time duration to select… adjust those as desired, then click Select.

Selected unsent sightings

It will highlight the first matching block, and down the bottom, will suggest a common time to report for all of them. Additionally, if there are other unsent times on other check-points, down the bottom it will also tell you the name of the next checkpoint with those times.

Go pester base, get their attention now, tell them which division and check-point (top of screen) you're sending.

When they acknowledge, read out that time, and the highlighted competitor numbers. If there's more in that table, finish with "More", alternatively if that's the last block but there's more for another checkpoint, say "More for <division> / <checkpoint>".

When base acknowledges, click "Mark as Reported", then "Select" (if there are more), or use the "Go To" button to go to the next checkpoint with unsent sightings.

Identifying unrecognised competitor numbers

If a number is unrecognised, it is shown with a question mark (and no division). If it turns out, that number should have been added to the division (and it wasn't a mistake elsewhere) you can go back to the Competitors listing on the division, click Add, and add that one or two missed numbers as before (enter them into the "From" field and click "Add One").

Then, go to the location listing, and click "Identify". The unrecognised numbers should now be replaced with "[Division] Number" like the others.

Non-starters, Vet-outs and Withdraws

Competitors pull out, or get pulled out. When they do, we need to record that information. Go to the Competitors tab of the relevant division, and select the competitors affected. (You can hold CTRL down to individually toggle competitors as selected.) Click Edit.

Competitors being selected for elimination

You'll be taken to a mass-edit form. Ensure 2. Status is ticked, choose ELIMINATED as the status, then choose a reason from the drop-down box below (or enter your own). Then click OK. You'll be taken back to the Competitors listing from before, but the status of the affected competitors will be updated.

Competitors being eliminated

Similarly, you can undo such a withdraw/vet-out by simply changing the status to ACTIVE.

Navigation

That basically covers the features implemented just now. The "Go" menu is meant as a way to hook keyboard events, but serves as a way to quickly "jump" to different sections quickly using the function keys and ESCAPE button. ESCAPE brings keyboard focus to the navigation tree so you can use arrow keys. The others jump to related events, divisions, checkpoints, etc.

All entry fields should have a keyboard mnemonic underlined, you can reach that by holding down ALT and pressing the underlined letter; it should take you to that field.

Most view screens have a Delete and Edit button top-right; Alt-D will delete, Alt-E will edit. On the table views; Alt-G will "Go To", Alt-A will "Add", Alt-T will "Edit" and Alt-L will "Delete", selected rows.