# All Commitments Have Deadline

fleetingSome commitments come with clear deadline. Some come with a very imprecise and vague one.

I assume here that you already defined what done means and what doing looks like.

Consider a commitment that does not have a deadline, guess that you did nothing toward it during the next 30 years. How do you feel? Bad?

If so, it means that you have an implicit deadline. Trying to make it more explicit will help reason about the task.

If not, it is most likely something to put into your someday/maybe list.

I don’t advocate to setup arbitrary deadline, like “in 2 months and see if I do it”. This is rather finding out one that was here all along but that you did not realize yet.

Now, with a simple dichotomy, you can reach a deadline with one day precision in less than 14 questions.

See for example the algorithm I use to find mine (which is a clk command):

```
@command()
def deadline_dichotomy():
"Compute the deadline that suits you"
upper = 30 * 365
lower = 1
current = (upper + lower) // 2
message = lambda current: (
f"{natural_delta(current * 3600 * 24)}, {current / 30.:.2f} months"
f", {datetime.now() + timedelta(days=current):%Y-%m-%d}")
while upper > lower + 1:
if click.confirm(f"{message(current)}: too big?", default=True):
upper = current
else:
lower = current
current = (upper + lower) // 2
click.echo(
f"Again at most {int(math.log2(upper - lower))+1} iterations")
click.echo(f"Your deadline is {message(current)}")
```

Then,

I suggest you stop the algorithm when you start feeling bad about the duration. If you realize that 1 year is too long but 6 month is sort of may be good, consider giving a deadline of 6 months.

For example, I have to fix a piece of furniture at home, the algorithm looks like.

```
clk deadline-dichotomy
```

#+RESULT

```
15 years 0 day, 182.50 months, 2038-01-23: too big? [Y/n]:
Again at most 13 iterations
7 years 183 days, 91.27 months, 2030-07-27: too big? [Y/n]:
Again at most 12 iterations
3 years 274 days, 45.63 months, 2026-10-27: too big? [Y/n]:
Again at most 11 iterations
1 year 320 days, 22.83 months, 2024-12-12: too big? [Y/n]:
Again at most 10 iterations
343 days 0 hour, 11.43 months, 2024-01-05: too big? [Y/n]:
Again at most 9 iterations
172 days 0 hour, 5.73 months, 2023-07-18: too big? [Y/n]:
Again at most 8 iterations
86 days 0 hour, 2.87 months, 2023-04-23: too big? [Y/n]: n
Again at most 7 iterations
129 days 0 hour, 4.30 months, 2023-06-05: too big? [Y/n]:
```

At that point, I realize that it should be done before the month of June, later than that seems wrong to me.