59763158c22def28bdb853fb48f9f0d490f4dcc6
[worg.git] / users / bzg.org
1 #+TITLE:      Bastien's Worg page
2 #+AUTHOR:     Bastien
3 #+EMAIL:      bzg AT altern DOT org
4 #+OPTIONS:    H:3 num:nil toc:t \n:nil ::t |:t ^:t -:t f:t *:t tex:t d:(HIDE) tags:not-in-toc
5 #+STARTUP:    align fold nodlcheck hidestars oddeven lognotestate
6 #+SEQ_TODO:   TODO(t) INPROGRESS(i) WAITING(w@) | DONE(d) CANCELED(c@)
7 #+TAGS:       Write(w) Update(u) Fix(f) Check(c)
8 #+LANGUAGE:   en
9 #+PRIORITIES: A C B
10 #+CATEGORY:   worg
11
12 [[file:../index.org][{Back to Worg's index}]]
13
14 Here I store thoughts and code about Org, along with links to some
15 tutorials I wrote.
16
17 * Webpages published with Org
18
19 - My [[http://bzg.fr][homepage]]
20
21 * Some tutorials
22
23 - [[file:org-tutorials/org-column-screencast.org][Org Column screencast]]
24 - [[file:org-tutorials/org-column-view-tutorial.org][Org Column Tutorial]]
25 - [[file:org-tutorials/org-spreadsheet-intro.org][Introduction to Org spreadsheet system]]
26 - [[file:org-tutorials/orgtutorial_dto-fr.org][Translation of David O'Toole tutorial]]
27 - [[file:org-tutorials/tables.org][Introduction to tables in Org]]
28 - [[http://bzg.fr/org-playing-with-lists-screencast.html]["Playing with plain lists" screencast]]
29
30 * Remarks on "What makes a good GTD list manager?"
31
32 I've read this inspiring article by Kelly Forrister: [[http://www.davidco.com/blogs/kelly/archives/2008/04/what_makes_a_go.html]["What makes a good GTD
33 list manager?"]]  Let's see how Org-mode qualifies:
34
35 : Sorting lists by context - many programs have a "category" feature that
36 : will easily support this.
37
38 *Yes.* Sorting by contexts is at heart of Org-mode, and can be implemented
39 in various ways.  Context can be set as a [[http://orgmode.org/manual/Tags.html][tag]], a [[http://orgmode.org/manual/Categories.html][category]], or any other
40 [[http://orgmode.org/manual/Properties-and-Columns.html][property]] of an item: you can then easily narrow your org file to a view
41 where only selected tags are presented, or define an agenda view to only
42 present what is relevant to the context.
43
44 : Ability to assign a due date - not forcing it on all of them, but allowing
45 : it for those that need it.
46
47 =C-c C-d= assigns a due date in =org-mode= buffers or in agenda views.  You
48 can also select several items in an agenda view and change the due date of
49 all of them in one keystroke.
50
51 : Portable for on the go access - can be synched to a handheld or printed.
52
53 Check MobileOrg -- both for Android and iPhone.
54
55 : Easily accessible - less than 60 seconds to get something in/out.
56
57 Emacs starts quite fast these days.  So I guess the 60 seconds test is okay
58 with Org.
59
60 : More attractive to you than repelling - you've got to like the system
61 : you're entrusting your brain to.
62
63 Subjective, of course, but I like Org.
64
65 : Doesn't force priority codes - if you know GTD, you know that forcing
66 : priority codes is old news and rarely accurate anyway.
67
68 Org doesn't force anything.  Priority codes are easy to add and remove, and
69 it's easy to sort agenda view (or items in a subtree) depending on priority
70 cookies, but you're not forced to.
71
72 : Place to capture additional notes - attached to an item to capture relevant
73 : info related to the item.
74
75 Check out =C-c C-z= to add a note to an item from an =org-mode= buffer
76 (=org-add-note=) or from an agenda view (=org-agenda-add-note=).  This
77 comes as a complement to the general =org-capture= mechanism (see the
78 [[http://orgmode.org/manual/Capture.html#Capture][manual]]).  Notes can also be added depending on the TODO state change:
79 check =org-log-*= variables: check the [[http://orgmode.org/manual/In_002dbuffer-settings.html][summary of in-buffer settings]] 
80 and the family of =logdone, lognotedone, ...= options.
81
82 : Ability to search and sort in various ways.
83
84 Well, it's so central in Org it doesn't really need a comment.  Only check
85 out this [[http://orgmode.org/worg/org-tutorials/advanced-searching.html][great documentation page]] by Matt Lundin.
86
87 : Robust enough to handle all of your stuff.
88
89 Org is as robust as any plain text file.  Do this qualify?  :)
90
91 * My configuration
92
93 Here is my Org configuration.
94
95 ** Agenda variables
96
97 | Variable                              | Value                                              | Why?                               |
98 |                                       | <50>                                               |                                    |
99 |---------------------------------------+----------------------------------------------------+------------------------------------|
100 | org-agenda-file-regexp                | "\\.org\\'"                                        |                                    |
101 | org-agenda-files                      | '("~/org/bzg.org" "~/install/git/Worg/worg-todo.org") |                                    |
102 | org-agenda-include-diary              | nil                                                | I don't use the diary anymore      |
103 | org-agenda-remove-tags                | t                                                  | Don't clutter the agenda view      |
104 | org-agenda-restore-windows-after-quit | t                                                  | I think this should be the default |
105 | org-agenda-skip-deadline-if-done      | t                                                  |                                    |
106 | org-agenda-skip-scheduled-if-done     | t                                                  |                                    |
107 | org-agenda-skip-timestamp-if-done     | t                                                  |                                    |
108 | org-agenda-sorting-strategy           | '((agenda time-up priority-down category-keep) (todo priority-down category-keep) (tags priority-down category-keep) (search category-keep)) |                                    |
109 | org-agenda-start-on-weekday           | 1                                                  | Week starts on monday, right?      |
110 | org-combined-agenda-icalendar-file    | "~/org/org.ics"                                    | I want to use a single file        |
111 | org-deadline-warning-days             | 7                                                  |                                    |
112 | org-icalendar-include-todo            | 'all                                               |                                    |
113 | org-stuck-projects                    | '("+LEVEL=1" ("NEXT" "TODO" "DONE"))               |                                    |
114 | org-scheduled-past-days               | 100                                                |                                    |
115 |---------------------------------------+----------------------------------------------------+------------------------------------|
116
117 #+BEGIN_SRC emacs-lisp
118 (setq org-agenda-custom-commands
119       '(;; Daily agenda view
120         (" " "Today" agenda "List of tasks for today" 
121          ((org-agenda-ndays 1)
122           (org-deadline-warning-days 3)
123           (org-agenda-sorting-strategy '(time-up todo-state-up priority-down))))
124
125         ;; Everything that has a NEXT keyword
126         ("," . "NEXT")
127         (",," tags-todo "Status={Work}/NEXT" nil)
128         (",!" tags-todo "-Status={Work}/NEXT" nil)
129         (",+" tags-todo "Status={Leisure}/NEXT" nil)
130         (",?" tags-todo "Status={GTD}/NEXT" nil)
131         (",#" tags-todo "Status={WOT}/NEXT" nil)
132         (",*" todo "NEXT" nil)
133
134         ;; Everything that has a TODO keyword
135         (";" . "TODO")
136         (";;" tags-todo "Status={Work}/TODO" nil)
137         (";!" tags-todo "-Status={Work}/TODO" nil)
138         (";+" tags-todo "Status={Leisure}/TODO" nil)
139         (";?" tags-todo "Status={GTD}/TODO" nil)
140         (";#" tags-todo "Status={WOT}/TODO" nil)
141         (";*" todo "TODO" nil)
142
143         ;; Everything that has a NEXT or a TODO keyword
144         ("." . "NEXT|TODO")
145         (".." tags-todo "Status={Work}/NEXT|TODO" nil)
146         (".!" tags-todo "-Status={Work}/NEXT|TODO" nil)
147         (".+" tags-todo "Status={Leisure}/NEXT|TODO" nil)
148         (".?" tags-todo "Status={GTD}/NEXT|TODO" nil)
149         (".#" tags-todo "Status={WOT}/NEXT|TODO" nil)
150         (".*" todo "NEXT|TODO" nil)
151
152         ;; Everything that is in progress
153         (":" . "In progress")
154         ("::" tags-todo "+Progress={[0-9]+%}Status={Work}")
155         (":!" tags-todo "+Progress={[0-9]+%}-Status={Work}")
156         (":+" tags-todo "+Progress={[0-9]+%}+Status={Leisure}")
157         (":?" tags-todo "+Progress={[0-9]+%}+Status={GTD}")
158         (":#" tags-todo "+Progress={[0-9]+%}+Status={WOT}")
159         (":*" tags-todo "+Progress={[0-9]+%}"
160          ((org-agenda-sorting-strategy '(time-up todo-state-up priority-down))))
161
162         ;; Everything that has a "Read" tag
163         ("R" tags-todo "Status={Work}+Read/NEXT" ; shortcut for `C-c a r ,'
164          ((org-agenda-sorting-strategy '(time-up todo-state-up priority-down effort-up))))
165         ("r" . "Read")
166         ("rr" tags-todo "Status={Work}+Read/NEXT" nil)
167         ("r." tags-todo "Read/NEXT|TODO" nil)
168         ("r," tags-todo "Read/NEXT" nil)
169         ("r;" tags-todo "Read/TODO" nil)
170         ("r:" tags "+Progress={[0-9]+%}+Read" nil)
171         ("r!" tags-todo "-Status={Work}+Read/NEXT" nil)
172         ("r+" tags-todo "+Status={Leisure}+Read/NEXT" nil)
173         ("r?" tags-todo "+Status={GTD}+Read/NEXT" nil)
174         ("r#" tags-todo "+Status={WOT}+Read/NEXT" nil)
175         ("r*" tags "Read"
176          ((org-agenda-sorting-strategy '(time-up todo-state-up priority-down))))
177 ;;      ("r_" tags "Read+LEVEL<3" nil)
178         ("rF" tags "+Read+@Offline" nil)
179         ("r@" tags "+Read+Mail" nil)
180
181         ;; Everything that has a "Write" tag
182         ("W" tags-todo "Status={Work}+Write/NEXT"  ; shortcut for `C-c a w ,'
183          ((org-agenda-sorting-strategy '(time-up todo-state-up priority-down effort-up))))
184         ("w" . "Write")
185         ("ww" tags-todo "Status={Work}+Write/NEXT" nil)
186         ("w." tags-todo "Write/NEXT|TODO" nil)
187         ("w," tags-todo "Write/NEXT" nil)
188         ("w;" tags-todo "Write/TODO" nil)
189         ("w:" tags "+Progress={[0-9]+%}+Write" nil)
190         ("w!" tags-todo "-Status={Work}+Write/NEXT" nil)
191         ("w+" tags-todo "+Status={Leisure}+Write/NEXT" nil)
192         ("w?" tags-todo "+Status={GTD}+Write/NEXT" nil)
193         ("w#" tags-todo "+Status={WOT}+Write/NEXT" nil)
194         ("wo" tags "+Write+@Online" nil)
195         ("w@" tags "+Write+Mail" nil)
196         ("w*" tags "Write" 
197          ((org-agenda-sorting-strategy '(time-up todo-state-up priority-down))))
198
199         ;; Working on bugs
200         ("b" . "Bug")
201         ("bb" tags-todo "+Bug"
202          ((org-agenda-sorting-strategy '(time-up todo-state-up priority-down))))
203         ("b," tags-todo "+Bug/NEXT"
204          ((org-agenda-sorting-strategy '(time-up todo-state-up priority-down))))
205         ("b." tags-todo "+Bug/NEXT|TODO"
206          ((org-agenda-sorting-strategy '(time-up todo-state-up priority-down))))
207         ("b;" tags-todo "+Bug/TODO"
208          ((org-agenda-sorting-strategy '(time-up todo-state-up priority-down))))
209         ("b:" tags-todo "+Bug+Progress={[0-9]+%}"
210          ((org-agenda-sorting-strategy '(time-up todo-state-up priority-down))))
211
212         ;; Working on code
213         ("$" . "Code")
214         ("$$" tags-todo "+Code"
215          ((org-agenda-sorting-strategy '(time-up todo-state-up priority-down))))
216         ("$," tags-todo "+Code/NEXT"
217          ((org-agenda-sorting-strategy '(time-up todo-state-up priority-down))))
218         ("$." tags-todo "+Code/NEXT|TODO"
219          ((org-agenda-sorting-strategy '(time-up todo-state-up priority-down))))
220         ("$;" tags-todo "+Code/TODO"
221          ((org-agenda-sorting-strategy '(time-up todo-state-up priority-down))))
222         ("$:" tags-todo "+Code+Progress={[0-9]+%}"
223          ((org-agenda-sorting-strategy '(time-up todo-state-up priority-down))))
224         
225         ;; Others contexts
226         ("F" tags "@Offline" 
227          ((org-agenda-sorting-strategy '(time-up todo-state-up priority-down))))
228         ("p" tags "Print" 
229          ((org-agenda-sorting-strategy '(time-up todo-state-up priority-down))))
230         ("?" todo "WAITING")
231         ("D" todo "DELEGATED")
232         ("v" tags "Watch" ((org-agenda-sorting-strategy '(time-up todo-state-up priority-down))))
233         ("g" tags "Blog" ((org-agenda-sorting-strategy '(time-up todo-state-up priority-down))))
234         ("l" tags "Listen" ((org-agenda-sorting-strategy '(time-up todo-state-up priority-down))))
235         ("@" tags "Mail" ((org-agenda-sorting-strategy '(time-up todo-state-up priority-down)))) ;; necessary?
236         ))
237 #+END_SRC
238
239 ** Export variables
240
241 | Variable                                | Value       | Why?                      |
242 |-----------------------------------------+-------------+---------------------------|
243 | org-export-default-language             | "fr"        | Nobody's perfect          |
244 | org-export-highlight-first-table-line   | t           |                           |
245 | org-export-html-extension               | "php"       | I use this for my website |
246 | org-export-html-style                   | ""          |                           |
247 | org-export-html-style-default           | ""          |                           |
248 | org-export-html-with-timestamp          | t           |                           |
249 | org-export-skip-text-before-1st-heading | nil         |                           |
250 | org-export-with-LaTeX-fragments         | t           |                           |
251 | org-export-with-archived-trees          | nil         |                           |
252 | org-export-with-drawers                 | '("HIDE")   |                           |
253 | org-export-with-section-numbers         | nil         |                           |
254 | org-export-with-sub-superscripts        | '{}         |                           |
255 | org-export-with-tags                    | 'not-in-toc |                           |
256 | org-export-with-timestamps              | t           |                           |
257 |-----------------------------------------+-------------+---------------------------|
258
259 #+BEGIN_SRC emacs-lisp
260 (setq org-publish-project-alist
261       '(
262         ("homepage"
263          :base-directory "~/org/homepage/"
264          :base-extension "org"
265          :publishing-directory "/home/guerry/public_html/org/homepage/"
266          :publishing-function org-publish-org-to-html
267          :section-numbers nil
268          :table-of-contents nil
269          :style "<link rel=\"stylesheet\" href=\"u/org.css\" type=\"text/css\" />"
270          :auto-preamble t
271          :auto-postamble nil
272          :xml_declaration "<?php echo '<?xml version=\"1.0\" encoding=\"%s\"?>'; ?>")
273         ("homepage_articles"
274          :base-directory "~/org/homepage/articles/"
275          :base-extension "org"
276          :publishing-directory "/home/guerry/public_html/org/homepage/articles/"
277          :publishing-function org-publish-org-to-html
278          :section-numbers nil
279          :table-of-contents nil
280          :style "<link rel=\"stylesheet\" href=\"../u/org.css\" type=\"text/css\" />"
281          :auto-preamble t
282          :auto-postamble nil
283          :xml_declaration "<?php echo '<?xml version=\"1.0\" encoding=\"%s\"?>'; ?>")))
284 #+END_SRC
285
286 ** Tags / TODO / Remember / Logging
287
288 | Variable                          | Value                                                                                                                                                                                                 | Why?                           |
289 |-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------|
290 | org-fast-tag-selection-single-key | 'expert                                                                                                                                                                                               | Good to be an expert somewhere |
291 | org-tag-alist                     | '(("Read" . ?r) ("Write" . ?w) ("Watch" . ?v) ("Blog" . ?g) ("Listen" . ?l) ("Code" . ?c) ("Bug" . ?b) ("@HOME" . ?H) ("@LAB" . ?L)  ("@Online" . ?O) ("@Offline" . ?F) ("Mail" . ?m) ("Print" . ?p)) |                                |
292 | org-tags-column                   | -74                                                                                                                                                                                                   |                                |
293 | org-tags-match-list-sublevels     | t                                                                                                                                                                                                     |                                |
294 | org-todo-keywords                 | '((type "NEXT" "TODO" "WAITING" " " "DONE" "DELEGATED" "CANCELED"))                                                                                                                                   |                                |
295 | org-use-fast-todo-selection       | t                                                                                                                                                                                                     |                                |
296 | org-use-property-inheritance      | t                                                                                                                                                                                                     |                                |
297 | org-use-tag-inheritance           | t                                                                                                                                                                                                     |                                |
298 | org-log-into-drawer               | t                                                                                                                                                                                                     |                                |
299 | org-log-note-headings             | '((done . "CLOSING NOTE %t") (state . "State %-12s %t") (clock-out . ""))                                                                                                                             |                                |
300 | org-remember-default-headline     | "Notes"                                                                                                                                                                                               |                                |
301 | org-remember-store-without-prompt | t                                                                                                                                                                                                     |                                |
302
303 #+BEGIN_SRC emacs-lisp
304   (setq org-remember-templates 
305         '(; caps are for projects I'm active on
306           ("Eyrolles" ?E "* TODO %a\n\n%i%?" "~/org/bzg.org" "Eyrolles" nil)
307           ("UID" ?U "* TODO %a\n\n%i%?" "~/org/bzg.org" "UID" nil)
308           ("Webmaster" ?W "* TODO %a\n\n%i%?" "~/org/bzg.org" "Webmaster" nil)
309           ("OLPC" ?O "* TODO %a\n\n%i%?" "~/org/bzg.org" "OLPC" nil)
310           ; small letters for other projects:
311           ("Parkway" ?p "* TODO %a\n\n%i%!" "~/org/bzg.org" "Parkway" nil)
312           ("Basement" ?b "* TODO %a\n\n%i%?" "~/org/bzg.org" "Basement" nil)
313           ("Garden" ?g "* TODO %a\n\n%i%?" "~/org/bzg.org" "Garden" nil)
314           ("Attic" ?a "* TODO %a\n\n%i%?" "~/org/bzg.org" "Attic" nil)
315           ("Emacs" ?e "* TODO %a\n\n%i%?" "~/org/bzg.org" "Emacs" nil)
316           ("Infos" ?i "* TODO %a\n\n%i%?%!" "~/org/bzg.org" "Infos" nil)
317           ("Compas" ?c "* TODO %a\n\n%i%?" "~/org/bzg.org" "Compas" nil)
318           ("ITIC" ?t "* TODO %a\n\n%i%?" "~/org/bzg.org" "ITIC" nil)
319           ("WikiProf" ?w "* TODO %a\n\n%i%?" "~/org/bzg.org" "Wikiprof" nil)
320           ("Org" ?o "* TODO %a\n\n%i%?" "~/org/bzg.org" "Org" nil)))
321 #+END_SRC
322
323 ** Other variables
324
325 | Variable                              | Value                                            | Why?                                           |
326 |---------------------------------------+--------------------------------------------------+------------------------------------------------|
327 | org-confirm-elisp-link-function       | nil                                              |                                                |
328 | org-confirm-shell-link-function       | nil                                              |                                                |
329 | org-context-in-file-links             | t                                                |                                                |
330 | org-cycle-include-plain-lists         | nil                                              | Avoid confusion. Cycling is just for headlines |
331 | org-default-notes-file                | "~/org/notes.org"                                | (I don't use this anyway...)                   |
332 | org-directory                         | "~/org/"                                         |                                                |
333 | org-drawers                           | '("PROPERTIES" "CLOCK" "HIDE")                   | I just added "HIDE" to the defaults.           |
334 | org-ellipsis                          | nil                                              |                                                |
335 | org-email-link-description-format     | "%c: %.50s"                                      | %.50s is a bit too much perhaps                |
336 | org-fontify-done-headline             | t                                                |                                                |
337 | org-fontify-emphasized-text           | t                                                |                                                |
338 | org-footnote-define-inline            | t                                                | I recommend reading more about Org [[http://orgmode.org/manual/Footnotes.html][footnotes]]   |
339 | org-hide-emphasis-markers             | nil                                              | Keep Org plain text, no WYSIWYG.               |
340 | org-link-frame-setup                  | '((gnus . gnus) (file . find-file-other-window)) |                                                |
341 | org-link-mailto-program               | '(browse-url-mail "mailto:%a?subject=%s")        |                                                |
342 | org-priority-start-cycle-with-default | nil                                              |                                                |
343 | org-refile-targets                    | '((org-agenda-files . (:maxlevel . 2)))          |                                                |
344 | org-refile-use-outline-path           | t                                                |                                                |
345 | org-return-follows-link               | t                                                |                                                |
346 | org-reverse-note-order                | t                                                |                                                |
347 | org-show-following-heading            | '((default nil) (occur-tree t))                  |                                                |
348 | org-show-hierarchy-above              | '((default nil) (occur-tree t))                  |                                                |
349 | org-show-hierarchy-above              | '((default nil) (tags-tree . t))                 |                                                |
350 | org-special-ctrl-a/e                  | 'reversed                                        |                                                |
351 | org-special-ctrl-k                    | t                                                |                                                |
352 |---------------------------------------+--------------------------------------------------+------------------------------------------------|
353
354 #+BEGIN_SRC emacs-lisp
355 (setq org-link-abbrev-alist
356       '(("google"   . "http://www.google.com/search?q=%s")
357         ("googledef" . "http://www.google.fr/search?q=define%3A%s")
358         ("googlemap" . "http://maps.google.com/maps?f=q&hl=fr&q=%s&ie=UTF8&iwloc=addr&om=1")
359         ("homepage"  . "http://www.cognition.ens.fr/~guerry/%s.html")
360         ("delicious" . "http://delicious.com/tag/%s")
361         ("mydelicious" . "http://delicious.com/bzg/%s")
362         ("wpfr" . "http://fr.wikipedia.org/wiki/%s")
363         ("wpen" . "http://en.wikipedia.org/wiki/%s")
364         ("emacswiki" . "http://www.emacswiki.org/cgi-bin/wiki?search=%s")))
365 #+END_SRC
366
367
368
369