Skip to content

Releases: ahenshaw/ragchew

Release list

ragchew v0.12.0

Choose a tag to compare

@github-actions github-actions released this 19 Aug 15:27

The first release with something to download. Until now ragchew was a
repository you built; from here there is a Windows installer, and archives for
Linux and macOS, below.

Read this before you double-click any of it. Nothing here is signed. A
code-signing certificate costs a few hundred a year and a hardware token, and
so Windows will say "Windows protected your PC" — More info, then Run
anyway
— and macOS will refuse the binary until you right-click it and choose
Open. The Linux binary is built on current Ubuntu and will complain about
glibc on an older distribution; building from source there is a better path
and is one command.

What's in it

A Windows installer. An MSI that puts ragchew in Program Files and the
Start Menu, offers to add it to PATH — worth taking, since a recording and a
--csv flag decode a night of traffic with no window at all — and uninstalls
from Add/Remove Programs like anything else. The executable now carries its own
icon, drawn by the same code that draws the one on the window, so Explorer and
the taskbar show the right thing.

A README that is about the application. It used to open on three protocol
families and a table of submodes, which is the right first page for a codec
library and the wrong one for a program somebody is deciding whether to run. It
now opens on what the window shows, how to install it, and how to use it —
eight screenshots, the panorama and the QSO panel and the rig settings among
them — with the protocol internals, the demo-band measurements and the
validation moved into docs/ rather than cut.

A callsign bug worth knowing about if you run JS8. A JS8 frame carries
about thirteen characters of prose, so a message longer than that is split
across frames wherever the packing happens to land — including through the
middle of a callsign. The tracker read the call out of the first frame and kept
it, so a station like K2LOW arrived, and stayed, as K2L: in the tab, in the
Call field and in the log. The reading is now redone as the rest of the over
lands, and may only ever lengthen a call, never replace it — which fixes the
split without letting the other operator's call take the thread's name when the
exchange turns round.

Faster where it was slow

The waterfall redraws two to four times quicker. Panning, zooming or
resizing throws the image away and draws it again, and two thirds of that was
the color map: an eight-stop search and three interpolations, per pixel, every
time. Sampled into a table it is an index. At 1200×760 a redraw went from 63 ms
to 26, and a zoomed view from 47 ms to 11 — the difference between sixteen
frames a second while dragging and forty.

The band scan runs a thread per mode. It was serial, which on a live
acquisition meant 2.6 s of work against the four seconds the scanner has to do
it in — one core busy, the rest idle. Now 0.7 s. The throughput is not really
the point: a machine slower than this one was over its deadline before it
started, and would quietly scan Olivia less often to keep up. What comes back
is identical either way, and there are tests that hold it there.

Also

  • US spelling throughout the prose, which was inconsistent.
  • LICENSE — the GPL-3.0 text, which the repository has never actually
    carried, and which now ships beside the binaries as the license requires.
  • The signals demo band's JS8 station is W1JSK rather than W1JS8, a call sign
    being letters after its digit. It was being read as no call at all, so that
    thread was named after the quiet operator while the other two were named
    after the loud one.

Every protocol is still checked bit-for-bit against an independent
implementation — fate for JS8, Jalocha's MFSK for Olivia, fldigi's varicode
table for PSK — and the property the tests guard hardest is that a band of
pure noise produces nothing at all. See
docs/internals.md.