Skip to content
popojanPublic

About

Mondrian-style clock with an 88-billion-year period

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

86 Commits

Folders and files

Repository files navigation

Now Clock

Never repeats for 88 billion years. Encodes recoverable origin and unique signature in every minute.

A clock cycling through 60 states per minute, each a subset sum of {1, 2, 4, 6, 12, 15, 20}. These weights cover Farey sequence $F_6$ exactly. Period: $2^{30} \times 3^{16}$ minutes.

How It Works

The clock face consists of 7 rectangular cells with areas 1, 2, 4, 6, 12, 15, and 20 units. Each second displays a unique combination of cells that sum to that second (0–59). The specific combination chosen each second depends on the minute number (k), creating a unique 60-pattern sequence for every minute in the period.

Project Structure

  • src/ - C terminal implementation
  • web/ - Clock webpage (HTML/CSS/JS)
  • inverse/ - Python video analyzer (reconstructs clock origin from video recordings)
  • tests/ - Test scripts

Terminal Clock

Build from repository root:

make
bin/now            # Live clock
bin/now -l         # In-place updates (no scroll)
bin/now -p emoji   # Emoji preset

Display Options

-a          ASCII borders
-p PRESET   Preset: cjk (default), blocks, blocks1, distinct, kanji, emoji
-f CHARS    Custom 7 UTF-8 fill characters
-1          Half-width mode
-w          Wide fills (for CJK/emoji)
-l          In-place update (TTY only)
-s          Simulate (fast, no delay)
-b          Bits: output cell mask as 7 binary digits (positions: 20,15,12,6,4,2,1)
-d          Decimal: output cell mask as number (0-127)
-r          Raw: output binary byte per second (bit 7 reserved for future use)
-i          Inverse: read any format (visual, bits, decimal, raw), output origin

Round-trip Test

bin/now -s -n 120 | bin/now -i -s

Note: Use -s for both encoder and decoder when testing with simulated data.

Signatures

Encode a unique identifier into your clock that can be auto-detected from recordings:

bin/now -P 7 -l                       # Live clock with signature 7
bin/now -P 7 -n 180 -s | bin/now -i -s # Encode and auto-detect

Options:

  • -P VALUE - Clock signature (coprime with 60 recommended, but any value works)
  • -N SALT - Optional salt for era cycling (default: 0)

The signature is encoded in the permutation pattern and auto-detected from any 2-minute recording, while preserving the full 88-billion-year period through era cycling.

Technical Details

Permutation Function

The perm(k) function maps a minute number to 60 display indices:

  • 20 seconds have 1 option (deterministic)
  • 18 seconds have 2 options (18 bits)
  • 16 seconds have 3 options (~25 bits)
  • 6 seconds have 4 options (12 bits)

Total entropy: ~55 bits per minute, sufficient for the 46-quadrillion-minute period.

Dependencies

  • Terminal clock: C compiler (gcc/clang)
  • Web clock: None (pure HTML/CSS/JS)

License

CC BY-NC 4.0 - Non-commercial use only

About

Mondrian-style clock with an 88-billion-year period

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages