Work

Morse Link

Chat over your local network, where every message is also played out loud as Morse code.

C Sarath Babu's experiment Morse Link, a local network chat. An oscilloscope trace of short and long pulses reading as Morse code

I built a messaging app for a local network where every message is played out loud as Morse code.

You open it, it finds other people on the same network, you pick one, they accept, and you type. Click a message and you hear it beeped out.

dotnet run

Why Morse

Because it is the oldest digital protocol there is and it still works.

Two states, on and off, and everything else is timing. No encoding table needed, no handshake, no shared software. If both ends know the timing, the message goes through.

I wanted to build something where that was the actual transport and not a decoration.

The timing is the protocol

There is nothing to Morse except duration. A dot and a dash are the same sound at different lengths, and the silences carry as much information as the beeps.

dot                    100ms
dash                   300ms
gap between symbols    100ms
gap between letters    300ms
gap between words      700ms

At 800 Hz, because that is the pitch that cuts through room noise without being unpleasant to sit next to.

Get those numbers wrong and it is not slightly off. It is a different message.

Finding each other

No accounts, no server you sign into. You get a four-digit code when you join, you re-register every ten seconds, and everyone scans for peers every two.

Click someone, they get a prompt, they accept or they do not. Close the tab and you unregister yourself.

Messages go over WebSocket as JSON, carrying both the text and the Morse.

{
  "type": "SEND_TEXT",
  "text": "hello",
  "morse": ".... . .-.. .-.. ---",
  "username": "alice",
  "code": "1234"
}

What V1 does not do

Text only. One connection at a time. No history, nothing saved. Local network only. No authentication and no encryption.

The four-digit codes are also not something a person wants to read out loud, which is the sort of thing you only notice after building it.

tl;dr

Type a message, hear it as Morse, send it to someone on the same network.

Source on GitHub