Welcome to the flowtime project code repository 👋
flowtime is an art project and thought experiment that challenges and reimagines our traditional understanding of time. It explores the relationship between our perception of time and our ability to enter flow states, periods of deep focus and engagement with the present moment. In essence, flowtime is a manifestation of timelessness.
The concept emerged from a simple observation: whenever I became aware of time, whether by mechanically looking at my watch or involuntarily catching a glimpse of a screen, I momentarily and unconsciously time travel and lose touch with the present. This sparked a question: what if there were a way to decide consciously whether to know the time or remain immersed in the flow? This was the birth of flowtime.
Although it preserves the familiar structure of 24 hours per day 60 minutes per hour, the order of its hours and minutes is unpredictable and unique each day. Yet it remains universal, meaning the flowtime is the same for everyone, just like conventional time. This uncertainty encourages us to loosen our attachment to time, creating an opportunity to return into the flow of the present moment.
What started as a conceptual exploration has since materialized into a tangible, interactive technology that melds philosophical inquiry with practical application. It is now available in the form of a JavaScript library, a command line tool, a classic Casio watch, and on the official flowtime website.
Concept and development by Lionel Ringenbach (a.k.a. Ucodia), started in September 2017.
To compute the flowtime, the current date and time is used as input. The day and hour periods are derived by concatenating their numerical values. For example, July 21 2018 09:28:42
has identifiers 20180721
for the day period and 2018072109
for the hour period. These identifiers then seed a pseudorandom number generator (PRNG) to produce a deterministic sequence of hours and minutes. This method ensures universality while remaining unpredictable to human beings.
The xorshift32 algorithm generates the random numbers, and the Fisher-Yates algorithm shuffles them, resulting in deterministically random sequences.
This repository houses multiple implementations of the flowtime concept:
- flowtime-js: The original flowtime library for JavaScript
- flowtime-cli: A command line tool to show the current flowtime
- flowtime-watch: A flowtime integration for Casio F-91W as a Sensor Watch firmware
- Flow state on Wikipedia
- Pseudorandom number generator on Wikipedia
- Xorshift on Wikipedia
- Fisher-Yates shuffle on Wikipedia
- Sensor Watch official website
- Lionel Ringenbach (a.k.a. Ucodia) official website
- flowtime project official website