DEV Community

Cover image for Clock Time, Event Time, and TimeSignalMe
Yoram Kornatzky
Yoram Kornatzky

Posted on • Edited on • Originally published at yoramkornatzky.com

Clock Time, Event Time, and TimeSignalMe

Clock Time and Event Time

People have two distinct concepts of time, clock time, as signaled by the hour, and event time, a time block reserved for an event, such as brainstorming. Both are useful, but in different circumstances during a day of work.

For a more detailed discussion of the concepts, including references to research, see David Kadavy's article Are You on ‘Clock Time’ or ‘Event Time?’.

TimeSignalMe

TimeSignalMe is a web application incorporating both concepts of time to be shared across a group.

A group sharing a time signal can work with a clock or an event time for productive work.

Using a shared time block for meetings or brainstorming is quite common, that is, sharing Event Time. In contrast, we seldom share Clock Time. We believe this ignores the multi-faceted nature of the shared time sense of a group.

With in-person work, hybrid work, and remote work, we all need a shared sense of time, both Clock Time and Event Time. Yes, even if we are all in the same place, each at their desk, we still need to feel the time passing in the shared sense.

Sessions

Users start a group session, within which they can run a single Clock Time process and multiple Event Time processes.

The user can then invite other users to the session via a link so that other users can join the session via their email.

Implementation Sketch

This application fits the TALL stack - Laravel, Livewire(https://laravel-livewire.com), Alpine.js[https://alpinejs.dev], and Tailwind for the web part.

However, for the active timer, we better use ReactPHP.

So we create one-time timers for Event Time,

$timer = $loop->addTimer($time, function() {
     broadcast(new EventTime(...)); 
});
Enter fullscreen mode Exit fullscreen mode

and periodic timers for Clock Time,

$timer = $loop->addPeriodicTimer($time, function() {
   broadcast(new ClockTime(...));
});
Enter fullscreen mode Exit fullscreen mode

Communicating with Laravel through the broadcasting of events, EventTime, and ClockTime.

Top comments (0)