tmdconv

tmdconv[1] is my entry for OFFLFIRSOCH 2024, the inaugural
OFFLine-FIRst SOftware CHallenge, announced by Solderpunk
in the beginning of the month[2].

The idea of OFFLFIRSOCH is to write and share a piece of
software that is offline-first, during the month of March.
The software should either not use the internet at all, or
be able to work well when a connection is not available.

To quote Solderpunk:

> [The software should be] fundamentally designed around the
> assumption that the internet is not always available and
> maintains 90% or more of its functionality when used
> offline, and will continue to do so no matter whether it
> gets internet access once per week, once per month, once
> per year or even longer.

I love the idea, because it challenges and invites us to
take a stand against 'Service as a Software Substitute' or
SaaSS[3], and perhaps help others do the same by sharing our
work.  I highly recommend reading the entire announcement.

But back to tmdconv.

I happen to currently work for a geographically distributed
company where members of each team may be located in several
different time zones across the globe.  As such, I regularly
have to convert times in one time zone to another for
meetings, etc.  I do most of the commonly-used conversions
in my head, but for the less frequently used ones or around
daylight saving changes, it can be very tempting to reach
for online tools for the conversions.  tmdconv is how I've
stopped doing that. :)

tmdconv.sh, the tiny menu-based date converter, is a small
POSIX shell script for converting date/time in one time zone
to another, using the 'date' utility, as provided e.g. by
GNU coreutils.  It has a default 'terminal' interface mode,
where the date/time and time zone prompts are done using
'fzf', and the result is printed to stdout.  There is also a
'graphical' mode, where prompts are done using 'dmenu' if on
X11 and 'wmenu' if on Wayland, and the result is displayed
as a system notification using 'notify-send'.

tmdconv.sh lets me do this computation on my own machine,
which I own and control, and do it *much* more efficiently
and simpler too, by skipping the bloated and likely nonfree
implementations in JavaScript, and instead using the lovely
date utility from GNU coreutils on my Debian-based system.

If like me you also like small, composable tools that do one
thing and do it well, give tmdconv a try - you might like it
too!  Have any comments or feedback?  Write to me at
[email protected] via email, I'd be happy to hear from you.

Take care, and so long for now.

P.S.  Happy Pi Day!  Enjoy the Pi symbol ASCII art by jgs.

                            ,;;;;;;;;;;;;'
                           ;;'';;'';;'''
                           '   ;;  ;;
                               ;;  ;;
                       jgs     ;;  ;;
                               ;'  ;'

[1] https://kelar.org/~bandali/software/tmdconv/
   gopher://kelar.org/1/~bandali/software/tmdconv/
   gopher://zaibatsu.circumlunar.space/1/~bandali/software/tmdconv/
   gemini://zaibatsu.circumlunar.space/~bandali/software/tmdconv/
[2] gopher://zaibatsu.circumlunar.space/0/~solderpunk/phlog/announcing-offlfirsoch-2024.txt
   gemini://zaibatsu.circumlunar.space/~solderpunk/gemlog/announcing-offlfirsoch-2024.gmi
[3] https://www.gnu.org/philosophy/who-does-that-server-really-serve.html