Hacker News
Show HN: Programmable timer web app (for gym workouts or stretching sessions)
Two things (I suppose) are special about it:
- The timers are “programmable”, so you can freely express your own routines and procedures in a declarative notation.
- The app is all static (no backend): the entire program is encoded in the URL and can be bookmarked or shared/transferred via QR-code.
You can check it out at https://timer.jotaen.net, optionally with a demo program pre-loaded: https://timer.jotaen.net/#demo.
Source code is at https://github.com/jotaen/timer. I’ve also written up a small behind-the-scenes on my blog: https://www.jotaen.net/SAKxq
r3trohack3r
|next
[-]
After clicking the link and seeing the demo: man, I’ve always wanted a programmable timer.
This is awesome, can see myself using this for workouts and focus sessions. Thank you for sharing.
benn0
|root
|parent
|next
[-]
Such a compelling idea - feels completely obvious after seeing the demo that this is what I want in a timer.
jotaen
|root
|parent
|previous
[-]
altmanaltman
|root
|parent
[-]
aquariusDue
|next
|previous
[-]
Also when I saw the HN post I knew something was familiar and I remembered an old project of yours: x[it]!
From time to time I still think about that one. Are you still engaging with x[it] or have you moved on in a sense?
jotaen
|root
|parent
[-]
I consider the [x]it! file format mostly complete, so in a way there isn’t much for me to do anymore. But I guess that’s also a good thing about such standards – that there is little to no maintenance burden compared to “actual” software.
(Links for reference: https://xit.jotaen.net and https://klog.jotaen.net)
aitchnyu
|next
|previous
[-]
It needs an example of nested loop and skipping last item, with comments.
jotaen
|root
|parent
[-]
Probably only minor ones; three come to mind:
- The web app has to be loaded every time (~700K total right now), whereas the native app works offline. This could be mitigated with a progressive web app, though.
- Fullscreen mode is usually blocked by mobile devices for websites, so you always see e.g. the address bar. That’s just a visual thing, though.
- I’d assume that native audio APIs would allow for more control (and are likely easier to work with too).
perilunar
|root
|parent
[-]
Not sure how that would work with the state being saved in the URL — you'd need to save each routine separately I think.
unfinished_thum
|root
|parent
[-]
Keeping the state in the URL actually avoids this. There is no storage to be separated. The cost is what perilunar said, one shortcut per routine.
redmoonx
|previous
[-]
Functions, variables, data structures... Intervals (timers) as a first-class citizen - an actual keyword "timer"[1] that works like const or let.
Anyway, this is really cool.
[1] Where are my VB6 devs??