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 bandali@kelar.org 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