Skip to content

Repository files navigation

grayline

About

Grayline shows every shortwave broadcast that is on air at this minute, and for each one it works out how much of the path between my chair and the transmitter is sitting in darkness. The current season holds 9,319 transmissions and about 700 of them are on the air at any given moment.

I'm new to shortwave, so I should say that up front. I started this because I wanted a real application built on Sley UI, the component library I wrote, and a second demo over the same invented data would not have told me anything. A schedule of ten thousand real broadcasts, with the numbers computed rather than made up, does.

The board is one table, a band rail down the left edge and a UTC hour ruler across the top. The ruler is also the time filter, so a drag on it narrows the table. Nothing else on the page moves except the mark at the current minute.

The gray line

A shortwave signal doesn't travel in a straight line to your radio. It refracts off the F layer of the ionosphere, which sits around 300 km up, and that layer sees sunrise before the ground underneath it does. The horizon dip at that height works out to 17.3 degrees of solar elevation, which means there's a band circling the earth where the ground is dark and the layer above it is still lit. That band is the gray line, and it's where the lower bands carry furthest.

So the darkness column has three states rather than two. Blue is a path whose F layer is in the earth's shadow, orange is the gray line, and the pale band is daylight. The app samples 25 points along the great circle and reports what it finds. It does not predict whether you'll actually hear anything, because that depends on solar flux, your antenna and the noise floor in your street, and I'd be making it up.

I checked the solar math against three things I could verify independently, and it agreed with all three. Two European capitals came out within 0.003 degrees of each other, which looked like a bug until I worked out that their latitude and longitude cancel almost exactly.

The data

The schedule is EiBi, compiled by Eike Bierwirth and published at eibispace.de. It's free to download, copy, distribute and use inside other software, which is unusually generous for a dataset this good. 1,824 transmitter sites carry coordinates, so most paths are computed from a real location rather than a country centroid.

A station that uses one site most of the time names none at all, and EiBi gives no way to recover which one it is. About a fifth of the rows are placed at the mean of their country's sites instead, and those are marked with a ~ so you can tell them apart.

Rebuild the snapshot with node scripts/build-schedule.mjs. The raw files cache locally, so a second run needs no network, and --refresh fetches them again.

Running it

npm install
npm run dev

The fonts are Iosevka and Iosevka Aile, subset down from 4.29 MB to 104 kB by scripts/subset-fonts.mjs. That step needs fonttools and the output is committed, so a plain checkout builds without Python.

I'm still not sure the three-state darkness bar is the right way to show this. A single percentage would be easier to sort by and it would throw away the thing that makes the gray line interesting, so I've kept the bar for now.

About

What is on shortwave right now, and how much of the path from your chair to the transmitter is in darkness. Built on Sley UI.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages