Skip to main content

Four internets: how Reticulum, I2P, Yggdrasil and Nostr differ

· 15 min read
UR3PKI
Software Engineer

Reticulum, I2P, Yggdrasil and Nostr keep getting lined up together — and wrongly so. They are not competitors: they fix different floors of the same building. One replaces radio and routing, the second hides who talks to whom, the third hands out addresses, the fourth takes your account away from the platforms.

500 bytesReticulum's MTU. It lives on a 300 bit/s channel — where TCP/IP will not even start
3 + 3Other people's nodes between a client and a site in I2P: its outbound tunnel plus the site's inbound tunnel
0200::/7The Yggdrasil range. An IPv6 address here is a public key fingerprint
0How much Nostr relays know about each other. The client spreads the copies itself

Reticulum up close: a network stack where the address is a key

· 22 min read
UR3PKI
Software Engineer

Reticulum is not a messenger, not a VPN and not a "network for shady business". It is a complete network stack in which the address is a key fingerprint, encryption has no off switch, and the carrier can be a LoRa radio, a piece of wire or ordinary TCP. This note takes it apart layer by layer: from the bits in the packet header to the board on the desk. The radio physics underneath is in the LoRa deep dive.

500 bytesThe MTU — the packet size ceiling. Chosen to fit into a LoRa frame
16 bytesThe whole address: 128 bits of truncated SHA-256 — and no registry
19 bytesThe whole header of an ordinary packet, address included
128The maximum number of hops a packet can travel through transport nodes

Meshtastic up close: how messages hop through other nodes

· 20 min read
UR3PKI
Software Engineer

Meshtastic is not a stack or a platform but a finished product: a cheap board with a LoRa radio, a phone over Bluetooth — and a chat that works where there is neither mobile coverage nor internet. This note is about how exactly a message hops through other people's nodes, how much airtime that costs and why a mesh chokes when there are too many nodes. The radio physics underneath is in the LoRa deep dive.

237 bytesThe payload ceiling in one packet. Anything longer is cut or does not go
16 bytesThe whole header: to whom, from whom, packet number, flags, channel
3 / 7How many relays are allowed by default and at most
1.07 kbit/sThe speed of the LongFast preset — the one almost the whole world runs on

LoRa up close: chirps, spreading factor, time on air and range

· 26 min read
UR3PKI
Software Engineer

Meshtastic and Reticulum sit on the same physics: a modulation that reads a signal weaker than the noise floor and pays for it in time. This note is about that physics: how a chirp works, where the range comes from, what every knob in the settings does, what the hardware is made of and what gets built on top — from LoRaWAN to drones and satellites.

−20 dBA signal a hundred times weaker than the noise — and it still gets read. LoRa's main trick
−137 dBmReceiver sensitivity at SF12 and 125 kHz bandwidth
32.8 msThe length of one SF12 symbol. Modern Wi-Fi moves a megabyte in that time
4096Possible starting points of one "whistle" at SF12 — 12 bits per symbol

A 1:1 Dipole Balun on the NanoVNA: What S11 Proves

· 10 min read
UR3PKI
Software Engineer

The antenna from the previous note — two legs of twisted pair, about twenty metres each, six metres up — worked beautifully on receive. What did not work was the place where the wire meets the cable. To begin with there was a twisted joint and insulating tape: a solution that lasts until the first rain and does not hold electrically at all.

On 8 December 2023 I built a proper centre: a balun on a ferrite toroid inside a sealed box. And, more to the point of this note, I checked it with an analyser — and then worked out that I had checked something other than what I thought.

SFI, SSN, K and A Indices: How to Read Propagation

· 8 min read
UR3PKI
Software Engineer

Every conversation about HF conditions comes down to four numbers: SFI, SSN, the K index and the A index. They get passed on the air, printed in forecasts and written in logs — but not everyone can read them.

In short: the first two say how much the Sun is giving out (and therefore how dense the ionosphere is), and the last two say how quiet the Earth's magnetic field is (and therefore whether a storm is choking that ionosphere).

Below is a full account of each index: what it means physically, how to read it, what it affects and when it is worth getting on the air. Beside each section there is a live gauge that pulls the current value from NOAA and shows where we stand.

A Morse Decoder in a Browser Tab: DeepCW on ONNX

· 7 min read
UR3PKI
Software Engineer

Audio from the sound card turns into text, and all of it happens in the tab: nothing is uploaded to a server, nothing calls out to somebody else's API. A 14 MB neural network sits next to the page, the ONNX runtime is built into the same bundle, and after the first load the page works with no network at all.

The interesting part is not that it works. The interesting part is how many ways there are to get it wrong, none of which announce themselves with an error.

The Morse tree: a variable-length code a century before Huffman

· 6 min read
UR3PKI
Software Engineer

Morse code is usually presented as a table: a letter, and beside it the dots and dashes. In that form it looks like an arbitrary list, and all you can do with it is memorise it.

It is in fact a binary tree, and in that form you can see the engineering decision taken in the 1840s: the frequency of a letter sets its depth. E is one dot, T one dash, because those are the commonest letters in English. Q, J and Z sit all the way down on the fourth level. Alfred Vail arrived at this not by theory but by counting: he counted the letters in the type cases of a local newspaper.

A variable-length code, allocated by symbol frequency. A hundred-odd years before Shannon and Huffman explained why that works.

UaHamAward: One Log for Twenty Operators

· 15 min read
UR3PKI
Software Engineer

The idea for this platform is mine; I laid down the architecture back in 2025 and wrote it myself.

On 6 March 2026 I showed it running for the first time — from my own laptop, through ngrok, with a link that lived until midnight. Even then it kept a shared log, accepted contacts from WSJT-X over UDP, imported ADIF with duplicate checking, and had separate dashboards for hunters and for organisers. The next evening the bridge for digital modes appeared — for Windows, Linux and macOS.

In April, seven weeks after that demonstration, the special callsign EN40CNP was on the air for the 40th anniversary of Chornobyl. Two weeks, 1565 contacts, several operators — and the whole log was merged by hand: the platform was not yet ready for real use. Vitalii, UT0UI, put the experience most precisely: “merging logs after the fact by hand is a right pain”.

By August it was ready. What follows is what came of it: the platform uahamaward.com, on which the “35th anniversary of Ukraine's independence” award made 17,387 contacts in 31 days, and not one of them was merged by hand — neither during the month nor after it.