aboutsummaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
authorhistoria <gravel.justness270@slmail.me>2024-07-30 00:26:29 -0400
committerhistoria <gravel.justness270@slmail.me>2024-07-30 00:26:29 -0400
commit43d1d1ef9b75e694f1b3e49ceaf319d87f6b14a9 (patch)
tree9a6bf1474ae77363f115f32b2a4ce2b475c6b728 /README.md
parent2438fe0116bb4c8abafb4e236c148ba0f8290e6a (diff)
downloadsoon-43d1d1ef9b75e694f1b3e49ceaf319d87f6b14a9.tar.gz
Removed ! from Julian dates. Minor work on logic.
Diffstat (limited to 'README.md')
-rw-r--r--README.md68
1 files changed, 33 insertions, 35 deletions
diff --git a/README.md b/README.md
index aab7a3e..247ee5f 100644
--- a/README.md
+++ b/README.md
@@ -2,7 +2,7 @@
Then is a minimalist plain text file calendar inspired by [When](https://www.lightandmatter.com/when/when.html). It has simple syntax optimized for the average scheduling case, but supports recurring cases more complex than most calendars. It optionally supports todo lists with deadlines as well.
-Then is a single binary with no dependencies optimized for text nerds who want to manage events directly in their text editor rather than a TUI/GUI. You can columnize, group, sort, and archive events/todos in your .then file(s) to keep them neat, pretty, and human readable.
+Then is a single binary with no dependencies for text nerds who want to manage events directly in their text editor rather than a TUI/GUI. You can columnize, group, sort, and archive events/todos in your .then file(s) to keep them neat, pretty, and human readable.
In terms of features and complexity, Then lies between [When](https://www.lightandmatter.com/when/when.html) and [Remind](https://dianne.skoll.ca/projects/remind/) but aims to be less verbose than either.
@@ -40,7 +40,7 @@ Tue, Taco night (Every Tuesday)
# Logic and Date Ranges
-Mon | Wed | Fri, Submit TPS Report (Every Mon, Wed, or Fri)
+Mon Wed Fri, Submit TPS Report (Every Mon, Wed, or Fri)
Fri !13, Every Friday except the 13th
July 7-13 2024, Shark Week
(Jun 25 2025)-(Jul 4 2025), Japan Trip
@@ -52,17 +52,17 @@ Fri 1W, First Friday of the month
# Combine multiple features for complex recurrence
-Jul 10-19 2025 !(J%3-2), This event repeats July 10, 13, 16, 19
+Jul 10-19 2025 J%3-2, This event repeats July 10, 13, 16, 19
```
## Adding details to events
-Any line starting with a `-` or `+` is attached to the nearest above event. This can be used for details about an event if you don't want to put everything on one line.
+Any line starting with a `+` is attached to the nearest above event. This can be used for details about an event if you don't want to put everything on one line.
```
2025 Jan 5 16:00, Doctor's Appointment
-- 123 Gentoo Road, San Francisco, CA 12345
-- Dr. Elias Berkins, +1 (555)-123-1234
++ 123 Gentoo Road, San Francisco, CA 12345
++ Dr. Elias Berkins, +1 (555)-123-1234
```
## Date Groups
@@ -103,9 +103,9 @@ Prepend any condition with `!` to mean NOT.
```
Fri Jan, Friday AND January (Every Fri in Jan)
-1 15, Every 1st OR 15th
-Fri !13, Every Friday, NOT the 13th
-Sun !(Dec 25), Every Sunday, NOT December 25
+1 15, 1st OR 15th
+Fri !13, Friday, NOT the 13th
+Sun !(Dec 25), Sunday, NOT December 25
2025 Aug 14, 2025 AND August AND the 14th
Sat Sun Aug, Saturday OR Sundays, in August
```
@@ -115,7 +115,7 @@ Sat Sun Aug, Saturday OR Sundays, in August
xW is the xth set of 7 days of a month\
xL is the xth-from-last set of 7 days of a month
-This is mostly useful for certain holidays.
+This is mostly useful for certain holidays and is analogous to the 'a' and 'b' parameters in When.
```
May 2W Sun, Mother's Day (Second Sunday of May)
@@ -137,58 +137,56 @@ Fri 05:00-06:00, Breakfast
Fri 12pm-1pm, Lunch
```
-## Modified Julian Date (`J%x+y`)
+## Modified Julian Date (`J%x+y`) - Repeat every N days
Then supports using a Modified Julian Date as `J`. `J` is the number of days since midnight November 17, 1858. This can be used along with the modulo operator `%` to create complex recurring events.
+This condition returns **true** when the result is 0. This is the opposite of how When works! Since you are always hunting zeros with this function it makes no sense to invert it every time.
+
```
J%3, Every third day
-!(J%14-5), Every other Saturday
-!(J%14+2), Every other Saturday (on the other weeks)
+J%14-5, Every other Saturday
+J%14+2, Every other Saturday (on the other weeks)
Sat J%2, Every other Saturday expressed in a different way
# You can use it for recurring reminders too
-Jul 10-19 2025 !(J%3-2), This event repeats July 10, 13, 16, 19
+Jul 10-19 2025 J%3-2, This event repeats July 10, 13, 16, 19
```
Julian date modulus is definitely weird, but it's a concise way to express multiple uncommon recurring patterns without increasing program complexity and syntax vocabulary for features I virtually never use. Plus it's an homage to [When](https://www.lightandmatter.com/when/when.html), and I love When.
# Why would I use this?
-1. You live in a librebooted, open source, offline cabin in the woods to escape the bloated, dystopian tech world
-2. You use text files and a terminal for every single possible thing
-3. It's fun
-
-Then is minimal and created to meet my personal use case. If your first thought was planning how to sync it to Google Calendar, Then is probably the wrong tool and you'd be overcomplicating your workflow rather than simplifying it.
-
-## Why would I use this over When?
+Then was created to adapt existing CLI calendars to my personal workflow. Then is not only for the niche of people who use their terminal for scheduling, but for a sub-niche who prefer to edit a file over using a TUI which is why concise, legible syntax is so important. This is a very small group of people virtually exclusively using [Remind](https://dianne.skoll.ca/projects/remind/). If you're happy with a web or phone calendar, Then probably won't change your mind.
-I love [When](https://www.lightandmatter.com/when/when.html)! Then was created to simplify When's syntax to remove special characters from average cases.
+Then has a few benefits over similar text file calendars:
-**When**: `* * 1, Mortgage Due`\
-**then**: `1, Mortgage Due`
+1. Then has the most concise syntax. It minimizes special characters and simplifies ranges.
-I also added optional todo/deadline features because I use calendar events like a todo list. I might complete an event like "Change air filters" early or let it run late. I want it on my calendar until it's done, or I want it gone if I've already done it.
+**Then**: `1, Water bill`\
+**When**: `* * 1, Water bill`\
+**Remind**: `REM 1 MSG Water bill`
-## Why would I use this over Remind?
+**Then**: `Jul 1-7 2025, Vacation!`\
+**When**: `m=Jul & d>=1 & d<=7 & y=2025, Vacation!`\
+**Remind**: `REM Jul 1 2025 THROUGH Jul 7 2025 MSG Vacation!`
-I love [Remind](https://dianne.skoll.ca/projects/remind/)! It is incredibly powerful. Then syntax is shorter than Remind for average cases:
+Remind is wordier but nicer for recurring cases cases that require Julian dates, although I rarely do anything this complex. Remind is inarguably more powerful when it comes to conditions and recurrence:
-**Remind**: `REM Jan 1 MSG New Years!`\
-**then**: `Jan 1, New Years!`
+**Then**: `Jul 10-19 2025 J%3-2`\
+**When**: `m=jul & d>=10 & d<=19 & y=2024 & !(j%3-2)`\
+**Remind**: `REM Jul 10 2025 *3 THROUGH Jul 19 2025`
-If you deal with events with unusual recurrence patterns or conditions, Remind is arguably nicer and inarguably much more powerful.
+2. It *optionally* has the ability to archive calendar events. Take the event "Change air filter", scheduled every 6 months. I might see that upcoming and archive this instance a week early, which removes it from my calendar. Or I might let it slide until next weekend, in which case it sticks around until it's done.
-Every 3 days between July 10-19 2025:\
-**Remind**: `REM Jul 10 2025 *3 THROUGH Jul 19 2025`\
-**then**: `Jul 10-19 2025 !(J%3-2)`
+3. It *optionally* shows a to-do list and upcoming deadlines.
# Alternatives
-If you're interested in other plain text file calendars, I highly recommend When or Remind. It's easy to get caught up yak shaving the maximalist Emacs, so Org Mode has a very different vibe.
+If you're interested in other text file calendars, I highly recommend When or Remind. It's easy to get caught up yak shaving the maximalist Emacs, so Org Mode has a very different vibe and I don't find it nearly as productive.
- [When](https://www.lightandmatter.com/when/when.html) - The simplest text file calendar that's flexible enough for real world use.
-- [Remind](https://dianne.skoll.ca/projects/remind/) - The opposite: The most powerful, programmable calendar program ever made (CLI or otherwise) but simple cases are easy and concise.
+- [Remind](https://dianne.skoll.ca/projects/remind/) - The opposite: The most powerful, programmable calendar program ever made (CLI or otherwise) but simple cases are still concise.
- [Better overview here.](https://blog.thechases.com/posts/remind/)
- [Org Mode](https://orgmode.org) - An expansive productivity playground for text with agenda features, but also a time sink trap for tinkerers.