Importance of improvements

Skip to first unread message


Mar 30, 2014, 5:04:20 PM3/30/14
(context: I'm rewriting and porting tagtime to node.js; I have a version that does everything I need it to but it's super limited )

If I rewrite the ping algorithm (keeping backwards compatibility with standard period=45min seed=666), is Paul and Benja's idea of making all ping schedules synced regardless of gap¹ something people would value, or is the consensus that period should just always be 45min?

Is it useful to have the api be backwards compatible; that is, to have an executable script named that does the same things with the same arguments, and ditto for the rest, or would such as "tagtime.js ping <args>" be entirely adequate?

- Alice

p.s. i'm pretty sure this is true but can someone check it for me to make sure my understanding is correct?: "the union of two 90min tagtime pingsets will have the same distribution as a single 45min tagtime pingset"

1) if you have a smaller gap then you'll just get *additional* pings in between. Or if bigger you just will not get some of the pings

Daniel Reeves

Mar 30, 2014, 9:42:44 PM3/30/14
My impressions:

1. There's maybe/barely enough demand to justify configurable gap
time. (Though mostly people should stick to 45 minutes.)
2. No need for the node.js version to mimic the "" command line syntax.
3. The way I get intuition about the distribution is to think about
the equivalent (but hideous and inefficient) implementation where
every second you decide with fixed independent probability whether to
ping that second. If the gap is 45m = 2700s then that fixed
probability is 1/2700. With a 90m gap you'd be pinging each second
with 1/5400 probability. So half as often. I'm actually not sure if
that answers your question...
> --
> You received this message because you are subscribed to the Google Groups
> "tagtime" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to
> For more options, visit

-- -- search://"Daniel Reeves"
Goal tracking + Commitment contracts ==


Apr 4, 2014, 2:50:57 PM4/4/14
to tagtime
is this a reasonably sane configurable gap time algorithm?

default seed is 666
we can get many seeds with (seed+v for v in 0…)
you take your ping frequency (say 1/7 or 1/45 or 1/90) and then you get the first ⌈yours/(1/45)⌉ seeds (7 seeds, 1 seed, or 1 seed) with fractional part yours/(1/45) - ⌈yours/(1/45)⌉ + 1 (~0.428,1,0.5)
then you generate seed sequences with (seed*7⁵^v % 2³¹-1 for v in 0…) for each seed
then you generate gap sequences for each seed sequence (-45*60*log(v / 2³¹-1) for v in seeds)
then you generate ping sequences for each gap sequence (1184083200 + <sum of all gaps so far> for gaps)
then you filter the last ping sequence with its seed for its seed sequence and function{(bit_reverse(seed) / 2³¹-1) ≤ fractional_part}
then you merge all the ping sequences into a final grand ping sequence
now you're done!

(i have tested it to make sure it still has the same distribution)
Reply all
Reply to author
0 new messages