The Plucky delay is the most important Plucky setting.

An explanation of what the delay is and why it matters

You may have read that Plucky is filtering software designed to support self-control. Unlike software designed to support other-control, such as a parent filtering a device intended to be used by a child, the methods typically employed by those solutions aren’t effective in helping users seeking support with self-control, because the self-control user can’t trust himself with access to the software’s settings for fear he may turn it off at the moment he needs it most.

Essentially, the self-control user needs a solution which allows him a way to tighten the belt as freely as needed in order to construct a filtering solution tailored to his need, but not be allowed to loosen the belt the moment an urge appears. The delay system is that solution.

You might even think of the delay system as the strongest version of yourself. In a moment of weakness, you attempt to disable Plucky or allow access to a bad website, but the delay system prevents you from doing so. Even after you think your strong self has gone and you are at your weakest, the shadow of your strong self remains in the delay system, and the choices you made when you were at your best are continually upheld by Plucky, regardless of how weak and vulnerable you presently feel.

To be clear, the delay system is not a counter. You are not supposed to set it to 0 when you want to add or remove items from your configuration, and you should not expect it to change unless you change it. For best results, you should set your delay to match how long a strong urge lasts, and perhaps even longer.

Most people don’t see a delicious-looking slice of pizza and decide to cheat on their diet tomorrow; they want the pizza immediately, and if denied it, will gradually lose interest. The delay system is designed to keep your strongest self in the driver seat at all times and to thwart the suggestions of impulsive self, and even if you do sometimes wait out your delay and make unhealthy decisions, don’t lose heart. Long-lasting change occurs at the personality level, and these changes are only affected slowly, through repitition, and the results seem to be invisible, but they are real.

Basics

When the delay is 0 (nil), any change to Plucky configuration will have immediate effect.

For example, all the following commands will have immediate effect.

pluck + allow a.com
pluck + allow everything
pluck uninstall

However, when the delay is not 0 (nil), any changes to Plucky configuration that will result in greater access will be delayed.

For example, after the following sequence access to b.com will still not be granted until 30 seconds have elapsed.

pluck + delay 30
pluck + allow b.com

Any decreases to the delay must also survive the delay period. So, given a delay of 30 seconds, after requesting the delay be set to 0, 30 seconds must elapse.

$ pluck + delay 0
$ pluck delay
30
$ sleep 30
$ pluck delay
0

In addition, uninstalling is only permitted when the delay is 0. So the following will not result in Plucky being uninstalled.

pluck + delay 1
pluck uninstall

But the next sequence will.

pluck + delay 0
sleep 30
pluck uninstall

See tips for some other tips on the delay and related features.

Setting the delay

You can set the delay in a console window or using the interface in the browser.

TODO: screencast of setting the delay.

Skipping the delay by using expedite approvals

The delay for any change can be skipped by using expedite.

Varying the delay by time of day

Plucky allows you to vary the delay by time of day.

pluck when 0-8 delay 3600
pluck when 8-12 delay 30
pluck when 12-24 delay 7200

See hrs3 for more on the time format used.

Delay patterns (advanced)

Delay patterns are somewhat complex, hard to describe, and to use them well may require some significant thought. If those hurdles don’t stop you, read on.

It is possible to use different delays for different changes to Plucky configuration through a feature known as “delay patterns”. For example, to specify that the allowing a new youtube video should require a 45 minute delay, the delay pattern + allow https://www.youtube.com/ could be used like so:

pluck delay 45m "+ allow https://www.youtube.com/"

Thus would any rules that allow urls starting with https://www.youtube.com/ be delayed by 45 minutes.

Similarly, to use a delay of 10 hours before removing any rule that blocks:

pluck delay 10h "- block"

To use a delay of 24 hours before a new allow everything rule would take effect:

pluck delay 24h "+ allow everything"

In the 3 examples above, everything between the double quotes is called the delay pattern.

Special syntax can be used to force certain kinds of matching of delay patterns.

Delay pattern that uses the general delay

To use a delay pattern that should use the general delay, whatever its value, use _ instead of an ordinary delay time. E.g.:

pluck delay _ "+ allow https://www.youtube.com/"

While it may seem redundant to specify the general delay, there are cases when this is handy.

Delay pattern details

TL;DR: In Plucky 1.13 or newer, leave out the anchor characters (^, $, or ~) for best results, unless you are changing the dealy of a feature.

As of Plucky 1.13, delay patterns match naturally by default. Older versions of Plucky use loose matching by default.

A delay pattern may match naturally, loosely (a substring match), exactly (an exact match), or prefixedly (a prefix match). Although the ^$ syntax for delay patterns is borrowed from regular expressions, delay patterns are not regular expressions.

A delay pattern starts with an operation character that is + (add) or - (del) to indicate whether the pattern applies to adding rules or to removing existing rules.

After the operation character (+ or -) is a space.

After the space is an optional anchor character, which may be either ~ or ^. If neither are specified the pattern matches naturally, with a few special exceptions.

A pattern may end in a $ character to indicate the end of the pattern.

To restate, the special markers in delay patterns are:

~
match loosely (e.g. + ~youtu matches + allow www.youtube.com)
^
match only if the start of a rule strictly matches the characters that follow (see examples below).
^$
match only if the rule matches exactly, from beginning to end (see examples below).
$
match only if the rule ends with a match for the pattern.

When there is no special marker, the delay pattern matches naturally, which means that the delay pattern is first converted to the internal Plucky language syntax, and then matching is performed over each term in the result, which is what somebody who didn’t read any of this documentation would probably expect.

For example:

pluck delay 1h
pluck delay 45m "+ allow https://www.youtube.com/"                 ## delay new youtube videos by 45 minutes
pluck + allow https://www.youtube.com/watch?v=3dNGacak8Dc          ## delayed 45 minutes
pluck + allow https://www.youtube.com/watch?v=3dNGacak8Dc user:jon ## also delayed 45 minutes
pluck + allow youtube.com                                          ## delayed 1 hour

Be aware that host-specific rules do not at present affect urls, so most of the time, you want to use a url in delay patterns rather than a simple host name.

pluck delay 45m "+ allow a.com"                                    ## probably bad
pluck delay 45m "+ allow https://a.com/"                           ## probably good

Because adding new allow rules, removing any block rules, and allowing everything are three operations that users often want to create a special delay pattern for, the following are handled as special cases to do these three things respectively.

pluck delay 30m "+ allow"            ## delay any new allowances by 30 minutes
pluck delay 10m "+ allow otherwise"  ## delay the allow otherwise rule by 40 minutes
pluck delay 10h "- block"            ## delay removal of any blocks by 10 hours
pluck delay 24h "+ allow everything" ## delay allowing of "everything" by 24 hours

Specifying delays for specific features

To alter how long it takes to add or remove a feature, use ^feature: as in the example below, or else the pattern will not have the desired effect because the specificity of an unanchored pattern will be too low to beat some internal Plucky rules that govern whether adding or removing any given feature should be delayed.

pluck delay 24h "- nhb"            ## fails, match specificity is too low
pluck delay 24h "- ^feature:nhb"   ## works, require 24 hours to remove nhb feature

Importing configurations

On https://u.pluckeye.net/, devices have delays as well as configurations. A delay on a device governs only the delay for changing the configuration assigned to that device; it does not govern changes to the configuration itself.


Last updated: 2023-03-21