7 个版本
0.1.6 | 2023年10月15日 |
---|---|
0.1.5 | 2023年8月22日 |
#1366 在 命令行工具
63KB
937 行
prac
面向实践生活的反馈型实用工具。
TL;DR;
哇,最小主义宣言并没有那么让人无法忍受,我向你保证!但如果你真的很懒,只需运行 prac help
,然后运行 prac help <子命令>
。帮助信息相当完整。
我会从 prac add -i
(交互式)开始,然后运行 prac session -i
以开始练习会话,然后运行 prac list
以选择下一步要做什么。只需记住,你指定的是一个时间段,而不是持续时间——这是每月跑一次 30 分钟的 5k 和每 30 分钟跑一次 5k 的区别。我知道我会更喜欢哪种。
这个工具的大部分功能不在于其功能,而在于其方法,因此我建议你继续阅读。
最小主义宣言
问题
你有一些高层次的价值,这些价值应该在反映你生活意图的某些常规实践中体现出来。现代生活很忙碌,鉴于我们有日历、待办事项列表、番茄钟等众多工具来克服我们的自然动机,这些事情经常取代我们的实践,在这个过程中,也取代了我们的价值。
我们需要一个系统,将我们的生活实践与我们的外在动机活动放在同等地位,即使只是为了给我们一个合理的借口来遵守我们的价值观。我们需要一个工具来帮助我们摆脱我们的工具。
现有的(无)解决方案
现有的生产力工具对不可打断的有价值实践持有敌对态度。我们开始接受我们工作中的某些肤浅性。我们容忍生产力工具的干扰机制,因为这些工具具体在干扰什么并不清楚。我们的生活实践并不会因为这种不重要而受益。
此外,人类并不总是需要这些工具。在日历出现之前,就存在仪式性的善意。在用技术补充我们的实践时,我们应该确保每个方面都是真正有益的。我们知道何时应该继续前进。
方法
在进行其他任何操作之前,首先需要添加练习,除了用prac add'. 我建议用交互式的方式来完成这个操作:
prac add -i'
♥ prac add -i
What would you like to practice?: discrete mathematics (algorithms)
How often (not how long) would you like to practice "discrete mathematics (algorithms)?": 1week 3days
关于练习,你的日历有一个很有用的目的——以火攻火。为了阻止自己和他人安排与你价值观冲突的事情,你可以为练习设定明确的时间。关闭所有非紧急通知。接下来怎么办呢?
由于日程安排技术已经使我们与练习的最后一次发生之间产生了很大的距离,时钟至少可以告诉我们每次练习已经过去了多久。这就是prac list
。
数字在时间上只有当安排日程时才有用,而且人类在这方面真的很糟糕,所以prac list
只显示时间流逝作为一个视觉提示——作为我们指定为希望参加活动频率的周期的分数。
♥ prac list
communicate gratitude ▬▬▬▬▬▬▬▬▬▬▬
distributed systems programming ▬
daily log ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
exercise ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
kierkegaard ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
steno ▬▬▬▬▬
太好了,我们掌握了分布式系统编程!然而,看起来我们有一段时间没有做速记了,也许我们应该从这里开始。
提示:配置你的shell配置,在第一次提示时使用
prac list
来提醒你的优先事项!
要开始特定任务的会话,我们使用prac session...
。我建议使用prac session -i
进行交互模式。我们还应该指定我们希望练习多长时间。
♥ prac session steno 2h
Prac将关注练习的时间。可选地,使用带有作业完成通知的终端在预期的参与持续时间过后提醒你。
你继续进行,直到指定的时间结束或你卡住了——哪个先到,就停止,没有必要过于焦虑。简单地再次运行prac list
communicate gratitude ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
distributed systems programming ▬▬▬▬
daily log ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
exercise ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
kierkegaard
steno ▬▬▬▬▬▬▬▬
我们看到条形图随时间推进,并且kierkegaard
方便地重置,标记了我们的参与。我们看到锻炼是最远的,但也许Keirkegaard用感激之情激励了我们,所以我们将传达感激之情。重点是prac
向您提供了您可能没有的信息,以便您自己做出最佳决定。如果我想简单地告诉你去做“最晚”的任务,我会这样做。那个界面会容易得多。
提示:除了较长的块之外,还可以安排1-2小时的专用“prac storm”,其中只有当练习可以合理控制在10-15分钟之内时才尝试。然后坚持这样做。
如果你是一个反思型的人,使用prac list --cumulative
还可以显示你为每个项目总共投入了多长时间,使你能够为自己的工作感到自豪,并根据你的价值观调整你的优先事项。
如果你发现任务的条形图经常运行到窗口的末尾,或者它从未接近关闭,你可以用prac edit-period -i
(交互式)来调整周期。
prac list --d
上的-d
标志添加了一个“危险条形图”,它是对所有练习周期的加权求和显示。你应该考虑将周期设定在可以保持危险条形图不超过一半满的地方。
如果你熟悉终端编辑器,你应该使用prac notes
记录目标、进度和其他内容。这会打开$EDITOR
,它通常默认为vi。如果你对这一切都不熟悉,最好不使用这个命令。
设计
为什么是时间段?为什么不选择一个绝对的日历窗口,在这个窗口内活动可以自由参与呢?
绝对的时间窗口对于建立固定的平均完成间隔很理想(就像在给药时希望的那样)。我们更关心的是做我们本来打算做的事情(用最小侵入性的引导),而只是观察时间如何安排。
尽管我们有更少的时间去做,但在绝对的日历时间段中,下一次参与并不会变得更容易,尽管上一次完成得晚一些。对于我们特别感兴趣的事情,我们也不应该等待下一个窗口。如果我们错过了上一个时间段,我们应该补上吗?所有这些考虑都使得人们很容易打破并放弃基于绝对日历时间段建立的系统。
从上次参与开始的时间段对我们来说很自然,因为上次参与是下一次参与最敏感的事件。经常提前于“计划”或者偶尔落后都是可以的。我们在时间段内持续提前或延后参与,这只是表明我们应该相应地调整时间段。
如果你在所有事情上都落后了,不需要放弃,只需prac reset
重新开始,一切从头开始。Prac有意设计来避免任何脱轨事件。
名义上,prac是常规调度系统的替代方案,但实际上它是一个常规发现系统。日常练习在周期的末尾将接近于前一天完成的时间,这自然会激励用户进入节奏。这同样适用于任何其他日历对齐的周期。此外,prac有一个可配置的宽限期,以允许意外常规不会越来越早地出现。
最后,设置任何窗口都涉及到安排。在宏观层面,这并不一定有害,只要你永远不要制定任何不可能的日程。我相信,日常的、每周的、季度的等组织分配,最好花时间反思而不是计划,但开销似乎是可以管理的(如果不是愉快的)。然而,借助软件的“帮助”,你可以每天让自己面临一个程序生成的任务列表,其复杂程度远远超过你头脑中能产生的,或者甚至用笔和纸也能产生。为了适应所有这些,你唯一的选项就是微观安排一天,这既需要中断,又对当时最适合练习的活动完全无感。一个不可能的日程几乎不可避免。启用这一点将违背prac的整个目的。
周期语法
由于不知道更好的方法,我编写了一个小型的持续时间解析器(systemd.time的大约超集)。每当您看到持续时间/时间参数时,您可以这样输入时间:
1day
2days # plural is fine
3days15hours # combined quantities
1w4d # abbreviations
4M # just be careful... M is month, m is minute
中间的空白是允许的,但您仍然需要在cli中用引号引用,以便作为单个参数捕获。
"1Y 2M 3w 4d 5h 6m 7s"
"1 day"
"1day 30 min"
有多种方式来写相同的单位,以下所有都是等效的。
2seconds
2second
2sec
2s
有关完整的语法,请参阅src/time/time.pest。错误足够好,可以帮助您解决问题。
许可:MIT
依赖关系
~13–24MB
~337K SLoC