GitXplorerGitXplorer
b

keepintouch

public
10 stars
2 forks
0 issues

Commits

List of commits on branch master.
Unverified
873569baf80dd5a228d20fc7dcba52fd2bf0b009

Updates README with better wording and fixes example

bbenpence committed 10 years ago
Unverified
a530af7b893aa4b9d22256829f305e43b4061703

Sets consistent version number

bbenpence committed 10 years ago
Unverified
c4642bdaee49876ce3388da86e9841e7fad48432

haskell: Changes usage string for consistency with other languages

bbenpence committed 10 years ago
Unverified
867db3c4895af4b8fe2af703b61a729197c6bb6f

haskell: Random Scheduler implementation.

bbenpence committed 10 years ago
Unverified
eea075ed38d99a1f9363301dc3cbc71388b9c78d

Updates the README to match the new API

bbenpence committed 10 years ago
Unverified
4cf787edf6fb7b605c707df6651b38bb292b8027

python: Preliminary implementation

bbenpence committed 10 years ago

README

The README file for this repository.

Summary

keepintouch is a simple program that reminds you to contact people, primarily for the following reasons:

  • Pleasure/virtue: friends, family, mentors, etc.
  • Utility: Social networking

Developed by dbulysse (Benjamin Pence)

Usage

When keepintouch is run on the data file (keepintouch.data in this example), it will schedule the entries from the data file for you, with the contacts you should contact soon first.

$ keepintouch keepintouch.data
Paul Allen
Patrick Bateman
Huey, Louie, Dewie

When keepintouch is run with the argument contact and a person's name, it will change the last contacted date for that person to today:

$ keepintouch keepintouch.data contact Paul Allen
$

$ keepintouch keepintouch.data
Patrick Bateman
Huey, Louie, Dewie

Data Format

Currently, keepintouch expects the user to supply all the people you wish to contact in the following file format:

interval
last contacted
name1

interval
last contacted
name1
name2

...

where each entry has

  • interval: generally how often (in days) you want to communicate with this person/these people
  • last contacted: the day this person/these people were last contacted in the year-month-day format YYYY/MM/DD
  • name(s): the person/people you want to contact, one per line. Multiple names are allowed because often times one regularly contacts a group/family that only requires a single communique or each person in a group at the same time

A sample data file:

30
2014/11/01
Paul Allen

365
2014/11/18
Patrick Bateman

365
2014/12/22
Huey
Louie
Dewie

Scheduling

Weight Scheduler

For each entry in the data file, keepintouch determines a score to sort the entries by:

today - (last contacted + (interval +/- (0% to 25%)))

where the +/- (0% to 25%) added or subtracted is randomized each time you run keepintouch. Entries with the greatest score will be listed to you first and will tend to be those people that you have not contacted in a while and you wish to contact more often. You don't have to use the program on a regular basis.

You can use the Weight Scheduler with either of these commands:

$ keepintouch keepintouch.data schedule weight
$ keepintouch keepintouch.data schedule weight 0.25

Note that with the second command, you can specify how much of the score is left up to chance (0.0 <= weight <= 1.0).

Backlog Scheduler

The Backlog Scheduler is the default scheduler. The Backlog Scheduler will sort the entries by:

today - (last contacted + interval)

Every entry that is due in the future will not be shown. You can use the Backlog Scheduler with these commands:

$ keepintouch keepintouch.data
$ keepintouch keepintouch.data schedule
$ keepintouch keepintouch.data schedule backlog

Random Scheduler

The Random scheduler sorts the entries randomly and is not terribly useful. You can use the Random Scheduler with this command:

$ keepintouch keepintouch.data schedule random