Skip to content

ERnsTL/awesome-internettime

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

68 Commits
 
 
 
 
 
 

Repository files navigation

Awesome Swatch Internet Time (.Beats) Awesome

A curated list of awesome Swatch Internet Time libraries, software and resources.

Contributions like pull requests and discussion are welcome :-)

Contents

Official, Basic Info

Web Clocks and Converters

Community

Original Swatch Net Time Watches

  • Swatch does not sell them any more.
  • search for Swatch Originals .Beat Net Time SQN101

Smart Watches

Mobile

Operating Systems

GNOME:

  • clock Override
    • would be best solution since it can do @ time already
    • but it is necessary to fix it for Gnome v40+, author is not happy with performance on v40+ but it is possible
  • date menu formatter
    • works for Gnome v40+ but has no @time
    • Modification for @time with help of code snippet from this function in clock-override extension, bit of a hack:
      editor ~/.local/share/gnome-shell/extensions/date-menu-formatter@marcinjakubowski.github.com/extension.js
      
    • Add import and timezone at top (note that date-menu-formatter uses an other date system for the other date formats, todo):
      const GLib = imports.gi.GLib;
      let bmttz = GLib.TimeZone.new('+01');
      
    • Add beat time display in update():
      setText(Utils.convertFromPattern(this._formatter.format(PATTERN, new Date())) + "  @" + this.formatBeatTime());
      
      If you want to add UTC display as well:
      var now = new Date();
      var utc = new Date(now.getTime() + now.getTimezoneOffset() * 60000);
      setText(
          Utils.convertFromPattern(this._formatter.format(PATTERN, now)) + 
          "  @" + this.formatBeatTime() + 
          "  Z" + Utils.convertFromPattern(this._formatter.format('kk:mm', utc))
      );
      
      If you want the ISO 8601 calendar week as well:
      var now = new Date();
      var utc = new Date(now.getTime() + now.getTimezoneOffset() * 60000);
      setText(
          Utils.convertFromPattern(this._formatter.format(PATTERN, now)) + 
          "  @" + this.formatBeatTime() + 
          "  Z" + Utils.convertFromPattern(this._formatter.format('kk:mm', utc)) + 
          "  W" + now.getWeekNumber()
      );
      
      ...and add function for ISO8601 calendar week at the top from the source
    • Add function below:
      formatBeatTime() {
          var bmtnow = GLib.DateTime.new_now(bmttz);
          var beat_time = 0 | ( bmtnow.get_second() + ((bmtnow.get_minute() * 60) + (bmtnow.get_hour() * 3600)) ) / 86.4;
          return ('000' + beat_time).slice(-3);
      }
      
    • Test change without rebooting:
      dbus-run-session -- gnome-shell --nested --wayland
      
    • Restart GNOME shell by pressing Alt+F2 and enter "r" for restart (all windows remain open as they were).

KDE:

  • TODO

Applications

Programming Languages, Libraries

Project listings:

Rust:

Go:

C:

Shell script:

The script is so trivial, I show it here directly:

 $ printf "@$(( ( ( ( $(date "+%s") + 3600 ) % 86400 ) * 10 ) / 864 ))\n"

JavaScript:

TypeScript and React:

Python:

PHP:

C#:

Elixir:

Typescript:

Java:

Kotlin and Android:

Perl:

Method of Calculation

  • Get time now either in UTC or UTC+1 where Biel is located. Re-use the timezone object since it will not change. Getting UTC is usually easy, then simply add +1 to the hour part in the calculations below.
  • Method using seconds as basis using multiplication. On x86, multiplication is faster than division and floating point division is faster than integer division.
    beats = ( now.get_second() + ((now.get_minute() * 60) + ((now.get_hour() + 0) * 3600)) ) / 86.4
    
  • Method using hour as basis using division:
    beats = (now.get_hour() + (now.get_minute() / 60) + now.get_second() / 3600) * 1000 / 24
    
  • Method using some form of "time since midnight" in UTC+1. For example, if this is efficient to acquire:
    unixutc = time(NULL);
    # unix time is always UTC, so add 1 hour
    unixbmt = unixutc + 3600;
    # get seconds since midnight
    secsincemidnight = unixbmt % 86400;
    beats = secsincemidnight / 86.4;
    
  • Any more?

Discussions

Advantage:

  • Worldwide synchronized clocks.

Disadvantage:

  • Cannot easily deduce if somebody is awake at that time or not. Then again,
    • they don't have to accept the meeting invitation for that time. OTOH, avoid meetings anyway.
    • There is often times an online status function in internet communications platforms and telephone systems these days have a DND function when not available for calls.
  • There is UTC.

Limitations:

  • The Earth will always go around the sun. Meaning, it will never be physically day or night everywhere at the sime time. There will always be two choices:
    1. Favoring the local day/night and roughly following the biological cycle but having to calculate for worldwide coordination or
    2. favoring easy worldwide coordination without calculations, as in the case of Internet Time, but requiring to take care of the availability of others, which in today's networked systems is easy to do.

News Articles

Related

About

List of Awesome Swatch Internet Time Tools

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published