A short story about which calendar tool to use Matthias Beyer Furtwangen University matthias. beyer@ hs-furtwangen. de

12. Juli 2013

Matthias Beyer (HFU)

How to do "calendar" right

12. Juli 2013

1 / 38

Overview

1

Intro Welchen soll ich nehmen?

2

remind How it works Arbeiten mit remind OMIT Context

3

wyrd

4

Abspann

Matthias Beyer (HFU)

How to do "calendar" right

12. Juli 2013

2 / 38

Wie man es nicht macht

nano vim emacs sonstiger Texteditor

Matthias Beyer (HFU)

How to do "calendar" right

12. Juli 2013

3 / 38

Was man vermeiden will

GTK Qt Tk sonstiges GUI

Matthias Beyer (HFU)

How to do "calendar" right

12. Juli 2013

4 / 38

Was man haben will

Ein Tool, welches schnell, einfach, effizient, über ssh und ohne Maus bedienbar, alle Möglichkeiten bietet, die ein Terminkalender in Buchform bietet und dabei die Unix-Philosophie beachtet (one job one tool).

Matthias Beyer (HFU)

How to do "calendar" right

12. Juli 2013

5 / 38

Tools

calcurse when gcalcli oder googlecl bsdcalendar gnu gcal palcal remind → Welchen soll ich nehmen?

Matthias Beyer (HFU)

How to do "calendar" right

12. Juli 2013

6 / 38

calcurse

Text-based ncurses calendar and scheduling system.

1

Nicht sonderlich One job one tool!

1 Quelle:https: //wiki.archlinux.org/index.php/List_of_Applications#Console_15 Matthias Beyer (HFU)

How to do "calendar" right

12. Juli 2013

7 / 38

when

It’s a very short and simple program, so you can easily tinker with it yourself. 2

→ Kann ja nur zu simple sein

2

Quelle:http://lightandmatter.com/when/when.html

Matthias Beyer (HFU)

How to do "calendar" right

12. Juli 2013

8 / 38

gcalcli / googlecl

Yeah, sync mit meinem Android! Aber sonst halt nix!

Matthias Beyer (HFU)

How to do "calendar" right

12. Juli 2013

9 / 38

bsdcalendar

Haha → Linux? Soll ich mir das jetzt auch noch selbst bauen?

Lassmer mal lieber!

Matthias Beyer (HFU)

How to do "calendar" right

12. Juli 2013

10 / 38

gnu gcal

Sieht ja aus wie cal, kann der überhaupt Termine?

Hmm... neee, lieber nicht!

Matthias Beyer (HFU)

How to do "calendar" right

12. Juli 2013

11 / 38

palcal

Schon ziemlich nah dran: Commandline-Tool → ssh! Suchen mit Regex Für cronjobs geeignet One-time events and a variety of recurring events are supported (daily, weekly, monthly, yearly). Recurring events can have start and end dates. → Yeah! Farben für Termin-Tage Export nach HTML / LATEX.

Matthias Beyer (HFU)

How to do "calendar" right

12. Juli 2013

12 / 38

palcal

Aber: [. . . ] special TODO event type → Unix? Easy to use interface → Suspekt! 3

Vielleicht gibts ja noch was besseres. . .

3

Quelle:http://palcal.sourceforge.net/

Matthias Beyer (HFU)

How to do "calendar" right

12. Juli 2013

13 / 38

remind

design philosophy of [. . . ] Unix utilities: [. . . ] interacts well with other programs cron + gxmessage → Popup Event-Scripting → vim! Hat selbst kein UI → wyrd → ssh → Yeah!

4

4

Quelle:http://roaringpenguin.com/wiki/index.php/Remind_use_case_1

Matthias Beyer (HFU)

How to do "calendar" right

12. Juli 2013

14 / 38

Was remind ist

UNIX command-line Tool, welches textfiles für die Datenbank einließt Datums-Rechner Scriptsprache Klein (120kB executable) und schnell Einfach zu lernen → Witz! Flexibel Frei (GPL) 5

5

Quelle:http://www.roaringpenguin.com/files/download/remind-oclug.pdf

Matthias Beyer (HFU)

How to do "calendar" right

12. Juli 2013

15 / 38

Was remind nicht ist Shared. Nur für persönlichen Gebrauch Standard-Kompatibel. iCal Konverter in/out Man kann mehr ausdrücken als andere Kalendertools verstehen

Matthias Beyer (HFU)

How to do "calendar" right

12. Juli 2013

16 / 38

Geschichte von remind

1989: remind v1.0 (never Released) 1990: remind v2.0 (SunOS) 1992: remind v3.0 instead of Master thesis bis 2005: Weitergearbeitet aber dann versickern lassen 2007: Arbeit an remind wieder aufgenommen 6

6

Quelle:http://www.roaringpenguin.com/files/download/remind-oclug.pdf

Matthias Beyer (HFU)

How to do "calendar" right

12. Juli 2013

17 / 38

How it works 1

Einlesen von reminder-File Ausführen des reminder-Files Eine Zeile = Ein Kommando, Backslash notation erlaubt Zeilen mit oder ; sowie leere Zeilen sind ignoriert

Matthias Beyer (HFU)

How to do "calendar" right

12. Juli 2013

18 / 38

Vorraussetzungen

Use your favourite text editor (emacs or. . . that other one. . . ) 7

7

Quelle:http://www.roaringpenguin.com/files/download/remind-oclug.pdf

Matthias Beyer (HFU)

How to do "calendar" right

12. Juli 2013

19 / 38

reminder scripten

Listing 1: Einfache reminder 1

3

# Kommentar REM 6 J a n u a r y MSG F a b i a n s G e b u r t s t a g REM 4 Feb MSG P a t r i c i a s G e b u r t s t a g REM T h u r s d ay AT 1 9 : 0 0 MSG Unfug

Matthias Beyer (HFU)

How to do "calendar" right

12. Juli 2013

20 / 38

reminder scripten - 2

Listing 2: Schwerere reminder 2

FSET i s G o o d ( d a t e ) \ monnum ( moondate ( 2 , d a t e ) ) == \ monnum ( moondate ( 2 , moondate ( 2 , d a t e ) +1) ) → WTF?

Matthias Beyer (HFU)

How to do "calendar" right

12. Juli 2013

21 / 38

Warnings

Listing 3: Warning reminders 1

REM 6 Jan +5 MSG %"E l e a n o r ’ s A n n i v e r s a r y %" i s %b Am 6 Jan und schon 5 Tage davor "%b"→ ïn 3 day’s tim, "tomorrow", . . .

Matthias Beyer (HFU)

How to do "calendar" right

12. Juli 2013

22 / 38

Letzter Tag eines Monats?

Listing 4: tricky reminder 1

REM Mon 1 −−7 MSG L a s t Monday o f t h e month Mon 1 → Erster Montag am oder for dem 1. des Monats –7 → minus 7 Tage

Matthias Beyer (HFU)

How to do "calendar" right

12. Juli 2013

23 / 38

Nichtwöchentliche reminder

Listing 5: nichtwöchentlich reminder 1

REM 7 Sep 2007 ∗14 MSG J e d e r z w e i t e F r e i t a g REM 10 Mar 2008 ∗1 UNTIL 14 Mar 2008 MSG March Break 8

*n → Wiederhole alle n Tage UNTIL → Bis Enddatum

8

Quelle:http://www.roaringpenguin.com/files/download/remind-oclug.pdf

Matthias Beyer (HFU)

How to do "calendar" right

12. Juli 2013

24 / 38

Verdammte Ferien!

Sich wiederholende reminder sind im Urlaub/an Feiertagen ungültig. Lösung → OMIT Context

Matthias Beyer (HFU)

How to do "calendar" right

12. Juli 2013

25 / 38

Verdammte Ferien!

Beispiel: Meeting jeden Montag, aber wenn Feiertag ist wird es auf den Dienstag verschoben.

Matthias Beyer (HFU)

How to do "calendar" right

12. Juli 2013

26 / 38

OMITS

Volle OMITs: OMIT 3 Sep 2007 MSG Labour Day Partiell: OMIT 25 Dec MSG Christmas

Matthias Beyer (HFU)

How to do "calendar" right

12. Juli 2013

27 / 38

Beispiele

Listing 6: OMIT Beispiel 2

4

OMIT 25 Dec MSG C h r i s t m a s REM 26 Dec −1 MSG T r i g g e r e d on 24 Dec REM 26 Dec −−1 MSG T r i g g e r e d on 25 Dec REM 26 Dec +1 MSG S t a r t w a r n i n g 24 Dec f o r \%y−\%m −\%d REM 26 Dec ++1 MSG S t a r t w a r n i n g 24 Dec f o r \%y−\%m −\%d 9

9

Quelle:http://www.roaringpenguin.com/files/download/remind-oclug.pdf

Matthias Beyer (HFU)

How to do "calendar" right

12. Juli 2013

28 / 38

REM vs OMIT

Normalerweiße wird ein REM getriggert wenn es auf ein OMITteten Tag fällt, aber man kann das ändern!

Matthias Beyer (HFU)

How to do "calendar" right

12. Juli 2013

29 / 38

Beispiele

Listing 7: OMIT Beispiel 2 1

3

5

7

# C h r i s t m a s i s a Tuesday i n 2007 OMIT 25 Dec MSG C h r i s t m a s OMIT 26 Dec MSG B o x i n g Day REM REM REM REM

Wed Wed Wed Wed

MSG T r i g g e r e d on 26 t h anyway BEFORE MSG T r i g g e r e d on 24 t h AFTER MSG T r i g g e r e d on 27 t h SKIP MSG S k i p p e d on 26 t h

10 Quelle:

http://www.roaringpenguin.com/files/download/remind-oclug.pdf

10

\unskip\penalty\@M\vrulewidth\z@height\z@depth\dp¸

Matthias Beyer (HFU)

How to do "calendar" right

12. Juli 2013

30 / 38

OMIT-Kontext zwischenspeichern

Man kann den OMIT-Kontext zwischenspeichern um einen neuen anzulegen!

Matthias Beyer (HFU)

How to do "calendar" right

12. Juli 2013

31 / 38

Beispiele

Listing 8: OMIT PUSH 2

4

6

PUSH−OMIT−CONTEXT CLEAR−OMIT−CONTEXT # add a bunch o f e x c e p t i o n s OMIT . . . w h a t e v e r . . . OMIT . . . w h a t e v e r . . . REM . . . SKIP MSG w h a t e v e r POP−OMIT−CONTEXT 11

11

Quelle:http://www.roaringpenguin.com/files/download/remind-oclug.pdf

Matthias Beyer (HFU)

How to do "calendar" right

12. Juli 2013

32 / 38

Beispiele

Listing 9: OMIT PUSH - Anwendungsbeispiel 1

3

5

PUSH−OMIT−CONTEXT OMIT 8 J u l y 2013 THROUGH 26 J u l y 2013 MSG Pruefungszeit OMIT 27 J u l y 2013 THROUGH 30 S e p t 2013 MSG Semesterferien REM T h u r s da y SKIP AT 1 9 : 0 0 DURATION 3 : 0 0 MSG Unfug POP−OMIT−CONTEXT 12

→ Äussere OMITs gelten nicht für Unfug-Rem! 12

Quelle:http://www.roaringpenguin.com/files/download/remind-oclug.pdf

Matthias Beyer (HFU)

How to do "calendar" right

12. Juli 2013

33 / 38

STOP!

Bis hierher, alles schön und gut! Aber niemand will so Termine verfassen! → Lösung: wyrd!

Matthias Beyer (HFU)

How to do "calendar" right

12. Juli 2013

34 / 38

Was ist wyrd

→ → → →

ncurses Interface für remind Einfach zu benutzen Terminübersicht Genau das was man als Interface zu remind will

Matthias Beyer (HFU)

How to do "calendar" right

12. Juli 2013

35 / 38

Screenshot

Matthias Beyer (HFU)

How to do "calendar" right

12. Juli 2013

36 / 38

Ressources

→ http://roaringpenguin.com/products/remind → http://www.linuxjournal.com/article/3529 → http://pessimization.com/software/wyrd/

Matthias Beyer (HFU)

How to do "calendar" right

12. Juli 2013

37 / 38

Fragen und Antworten

→ Fragen? → Fragt sich, ob ich die wirklich beantworten kann!

Matthias Beyer (HFU)

How to do "calendar" right

12. Juli 2013

38 / 38