Research

What we have measured, on real targets, with the numbers and the data behind every claim.

Every figure says how many shots it rests on. Nothing here is called proven that the shots cannot prove, and where we do not know, it says so.

Reading targets

Why a photo cannot tell you your bullet's size

The same holes measure 0.90 to 1.45 times the bullet depending on the light they were photographed in. Scans of the same sheets agree within three percent.

One hole or two?

Two shots through nearly the same spot leave one ragged hole. Deciding whether a mark is one shot or two is the single measurement that decides whether your group is real, and for a long time GroupLab got it wrong on photographs.

Curled, angled and wrinkled paper

A target you have laid flat on a bench is not flat. Measured against thirty known points, a sheet that looked flat was bent by two thirds of an inch, and that bend is larger than the groups people argue about.

A bullet hole is not the bullet

A .308 bullet does not leave a .308 hole. Paper stretches and springs back, so the hole measures smaller than the bullet, and how much smaller depends on things nobody records.

Zeroing on a blank sheet with a hand-drawn cross

You do not need a printed target to zero a rifle. You need an aim point and a known distance on the paper, and a flatbed scanner already knows the second one.

How GroupLab reads a target

From a photograph to a group size, in six steps, with what each one can get wrong and how you would know.

When shots land on the wrong bull

On a 25 bull sheet, a rifle that is not zeroed puts every shot nearer a bull it was not aimed at. The group you get is then real, precise, and about nothing.

Scans against phone photos: how close is close enough?

We paired 59 range photographs with their flatbed scans and measured the gap. A hole in a photograph sits about 0.03 in from where the scan puts it, which is a fifth of a decent group.

Measuring groups

Range tests

How GroupLab is built

How GroupLab updates itself safely

An updater that can be tricked into installing someone else's file is worse than no updater. Here is what GroupLab checks, what it cannot promise, and the bug that stopped every installed build from updating at all.

Choosing the markers

The little black squares on a GroupLab target are AprilTag 36h11. The choice came down to one number, and the weaker options were measured failing on real target artwork rather than rejected on theory.

Designing a target GroupLab can read

Everything printed on a target sheet is something a hole detector might mistake for a hole. The design is mostly about telling the software what is ink before it has to guess.

What GroupLab sends from your computer

Four things leave your machine, all of them only when you ask. Here is the complete list, what is in each, and the rule that stops a fifth appearing by accident.

Nightly builds, from commit to installer

Every change that passes its tests becomes an installer you can download within about half an hour. Here is what happens in between, and the three mistakes that shaped it.

Cutting the installer from 97 MB to 81 MB

A third of what GroupLab shipped was debug symbols for two libraries that nothing would ever read. Finding it was an accident, and the accident is the point.

Every upload is rebuilt from pixels

A photograph you send is stripped of everything except the camera and the exposure. Not edited, not blurred: the metadata around the image is thrown away and written fresh, and the pixels are copied untouched.