Skip to main content

Practice braille, Morse, semaphore.

Project description

borse

borse is a terminal program meant to practice reading braille, Morse code, and semaphore, which are common encodings for puzzle hunts. Also supports A1Z26 practice.

Usage

uvx borse

Or you can install from PyPI by using uv, pip, etc.

Configuration

Configuration is stored in ~/.config/borse/config.toml by default, e.g.

progress_file = "/home/evan/.config/borse/progress.json"
words_per_game = 10
single_letter_probability = 0.3

Your daily progress is also automatically saved and displayed on the main menu.

Hints for memorizing the encodings

Actually this is a note-to-self.

Remembering braille

For Grade 1 (just the letters A-Z), the chart on Wikipedia is helpful! The trick is to memorize just the first 10 symbols for A-J, which only use the upper four dots. That's because K-T are the same as A-J with one extra dot, while UVXYZ are A-E with one extra dot.

In real life, Grade 2 braille has some additional contractions. It might be nice to add these into borse at some point.

Remembering Morse code

In Morse code, the most frequent letters are shorter. So I think it's a lot easier to remember Morse code as a binary tree, since the common letters will all be towards the top. I found this picture on the Internet:

A Morse code binary tree

I think the dot looks like 0 and a dash looks like a (rotated) 1, so it makes sense to me that dots are in the left of the tree.

Then you can just memorize the letters in each row in order. Here are some terrible mnemonics I made up that worked for me for the first three rows (you're on your own for the last one):

(Also, surdwkgo is also the name of a Taiwanese CodeForces grandmaster.)

If you're learning Morse code for actual usage rather than puzzle hunt usage (meaning you plan to hear the sounds, not see them in a hunt spreadsheet) then in fact you need to practice with the sounds and not the visuals. It's simply too slow to try to remap sounds visually at 20+ WPM; you need to do hear the letter directly from the audio. (In fact I think people don't even count the dits and dashes, they just hear the letter automatically.) So really in this case you should be using a real training rather than my silly puzzle hunt hobby project, e.g. https://lcwo.net/.

Remembering semaphore

If you look at a semaphore chart, what you'll find is that there are some groups of adjacent letters that just differ in one hand rotating clockwise. For example, the letters from A-G are obtained by fixing one arm at 6 o'clock and rotating the other arm all the way from 7:30 to 4:30.

So in my head, I organize the letters in "blocks", where each block starts with two arms at a 45-degree angle, and then having the other arm rotate clockwise. The resulting blocks are then easier to remember:

  • A block: ABCDEFG
  • H block: HIKLMN (note J is missing)
  • O block: OPQRS
  • T block: TUY (note the additional Y)
  • # block: #JV (this is the weird exceptions one)
  • W block: WX
  • Z block: Z

I don't know if A HOT #WZ means anything to you.

Development

Set up by cloning the repository and running

uv sync
uv run prek install # pre-commit hooks

To manually run the linter and tests:

uv run prek --all-files # run linter
uv run prek --all-files --hook-stage pre-push

FAQ

  • Where does the name come from?

    From Braille mORse SEmaphore.

  • Should "braille" be capitalized?

    No.

  • Why would you spend time learning this?

    It could be a great conversation starter for a first date…

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

borse-0.5.1.tar.gz (119.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

borse-0.5.1-py3-none-any.whl (42.0 kB view details)

Uploaded Python 3

File details

Details for the file borse-0.5.1.tar.gz.

File metadata

  • Download URL: borse-0.5.1.tar.gz
  • Upload date:
  • Size: 119.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for borse-0.5.1.tar.gz
Algorithm Hash digest
SHA256 c81c0094f090d7d167844c77616befc6e18a81217334385ac91cbf573a87f5fe
MD5 728d8cba6717da3abbb2f9cc5513cc9a
BLAKE2b-256 7779731539db94efa55e583470087fa0c6cfb4956e05fe42a5a51d218732abbe

See more details on using hashes here.

Provenance

The following attestation bundles were made for borse-0.5.1.tar.gz:

Publisher: release.yml on vEnhance/borse

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file borse-0.5.1-py3-none-any.whl.

File metadata

  • Download URL: borse-0.5.1-py3-none-any.whl
  • Upload date:
  • Size: 42.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for borse-0.5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 27fc36b51c501a88ea21e138fec54a89b8d17f1ea59ff22117fff5fd22181421
MD5 8c6597bc97297c201c1c569f97c43dde
BLAKE2b-256 7d6fbe71f2baad6f1177eefd8103fdd648d6ed72d08e97d9a50ed68678c1aa94

See more details on using hashes here.

Provenance

The following attestation bundles were made for borse-0.5.1-py3-none-any.whl:

Publisher: release.yml on vEnhance/borse

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page