From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Hertrich Subject: Re: Structuring and (cross)linking information in org-mode Date: Wed, 8 Jul 2015 13:37:53 +0200 Message-ID: References: <0C6EB88C-208A-4378-8475-B39A6D40F9D3@daniel-hertrich.photo> Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2102\)) Content-Type: multipart/alternative; boundary="Apple-Mail=_E4CF8BD6-31EF-420C-9742-4163D4E36A15" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:36591) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZCnfs-0002kv-HC for emacs-orgmode@gnu.org; Wed, 08 Jul 2015 07:38:03 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZCnfo-0007CO-6Q for emacs-orgmode@gnu.org; Wed, 08 Jul 2015 07:38:00 -0400 Received: from mx02.posteo.de ([89.146.194.165]:43849) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZCnfn-0007C1-Qt for emacs-orgmode@gnu.org; Wed, 08 Jul 2015 07:37:56 -0400 Received: from dovecot04.posteo.de (unknown [185.67.36.27]) by mx02.posteo.de (Postfix) with ESMTPS id 67F8925ACC4D for ; Wed, 8 Jul 2015 13:37:54 +0200 (CEST) Received: from mail.posteo.de (localhost [127.0.0.1]) by dovecot04.posteo.de (Postfix) with ESMTPSA id 3mRJXd5tG7zFpW6 for ; Wed, 8 Jul 2015 13:37:53 +0200 (CEST) In-Reply-To: List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: emacs-org list --Apple-Mail=_E4CF8BD6-31EF-420C-9742-4163D4E36A15 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 Dear John, also to you, many thanks for your time to answer so many questions of = mine. I=E2=80=99ll comment them below: > Am 03.07.2015 um 16:02 schrieb John Kitchin : >=20 > This all sounds doable, but it will take some work ;) >=20 I guessed so. ;-) But that=E2=80=99s the trade-off. Take some ready-made = software that works out of the box, but then it won=E2=80=99t work as = you want it to work. The other extreme is to program a personalized = solution entirely on your own. I have done this before. But I hope Emacs = is something in-between. The framework is there, and it=E2=80=99s only a = matter of writing some scripts to make it work exaclty as I wish. The problem is also, that I don=E2=80=99t know exactly in advance how = I=E2=80=99d like it to work. These wishes will evolve with time. Another = advantage of scripting an existend application. I can adapt it easier to = new requirements than re-writing an entire application. ;-) >> I know how to make tasks with the org-todo-keywords. >> Now I want to mark chunks of information in that file in a similar = way, but keep it outside of the task workflow. I=E2=80=99d like to have = that information accessible and finable easily, and I want to = differentiate different kinds of information. >>=20 >> Quick example: >>=20 >> * TODO This is my first task >> Some task description goes here >>=20 >> * MEETINGNOTE of meeting 2015-07-02 MyCompany >=20 > I think you should probably use a tag of :MEETINGNOTE: here, instead = of > a TODO keyword like this. TODO keywords imply to me some kind of > changeable state not a type of content. Alteratively you could make it = a > property. >=20 > with your curson on the headline, type C-c C-c and enter MEETINGNOTE = to > add the tag. I have to press =E2=80=9ETAB=E2=80=9C (=E2=80=9Efree=E2=80=9C) before = entering a new tag. Might be because I already defined some tags to be = used in quick access. You are right, somehow a tag is more suuitable for this kind of marking = information.=20 However, I just came across the possiblitiy of defining several TODO = keyword workflows in parallel. I could imagine to have one for my own = todos (TODO), one for other people=E2=80=99s todos that I=E2=80=99m = monitoring (TASK) and maybe also one for information that expires or = becomes outdated. Like this, partially taken from the org-secretary = explanation, but adapted by me: (setq org-todo-keywords '((sequence "TODO(t)" "|" "DONE(d)" "CANCELLED(c)") (sequence "TASK(f)" "|" "DONE(d)") (sequence =E2=80=9EINFO(i)" "|=E2=80=9C =E2=80=9EINFO-EXPIRED(e)")= )) Or would you consider this total nonsense? I know there is the archiving = feature. Maybe expired info should be archived instead of maker = =E2=80=9Eexpired=E2=80=9C? ;-) This brings me to another idea: Maybe you know the outliner =E2=80=9ENoteC= ase Pro=E2=80=9C (www.notecasepro.com ). I = have written some plugins for it (www.notecaseproplugins.com = ), one of them being a plugin for = helping to keep your files clean. One way to keep them clean is to = assign an expiry date to every chunk of information in the file. If you = generate an entry, you are automatically asked to quickly choose a = validity time span (only a rough one, so you don't need to think too = much at this point: one day, one week, one month, one year, 5 years, = forever). Based on your selection, the plugin sets the corresponding = date in the ffuture as expiry date for this piece of information. = Everytime you open your file, the plugin searches for expired info and = present only one expired info per session (so you are not overwhelemed = by having to make decisions) to you and lets you choose to archive it, = prolong the validity time span or to delete the expiry date entirely. I think in times of gigantic flood of information we need such = mechanisms to be able to maintain our information. Does something like this exist for Emacs, too? Or is it already easily = possible by using dates and the agenda=E2=80=A6? >=20 >> ** participants >> *** =E2=80=94> John Doe >> *** =E2=80=94> Mary Sample >> ** Goal >> This is the description of meeting goal >> ** Outcome >> Outcome of the meeting >>=20 >>=20 >> * PERSON John Doe >> Street address >> email address >> telephone >>=20 > PERSON should also be a tag, or look at org-contacts, where those bits > in the body would be stored as properties. org-contacts seems to have a similar use case as BBDB (big brother data = base). What is better? :-D I know, this is a very sloppy question. New attempt: Which one would you recommend? I=E2=80=99d like to have a = full-fledged contacts database that i=E2=80=99d like to sync with = CardDAV servers and possibly iCloud, so that ai can use the same address = data in any email client / telephone assistance solution on the Mac, and = also inside Emacs for referring to todos etc., maybe to write letters = inside Emacs with LaTex export and automatic inclusion of the snail mail = address of the person etc. etc. All on a Mac. (Currently using Aquamacs, = but maybe switching to Emacs Mac Port later, as that seems to be more = standard, more stable and also less performance-hungry). >=20 >> * COMPANY MyCompany >> address >> field of operation >> employees: >> - John Doe >> - Mary Sample >>=20 >> * INFO 2015-07-01 John Doe does not want to work with Emacs >=20 > You should use org dates like [2015-07-01] which will make them > clickable. You are right. I meant to use such dares. > I think INFO here should be a tag too. Maybe. Will think about that. (see also my question about this above). >=20 >>=20 >> * NOTE 2015-07-02 16:20 called John on the phone >> here go some notes about the telephone call with John >>=20 >>=20 >> So for example: >>=20 >> - I=E2=80=99d like to have all the info (cross)linked, so that if I = click >> e.g. on any occurrence of =E2=80=9EJohn Doe=E2=80=9C I=E2=80=99d like = to see a list of matches >> that mention John Doe: his PERSON entry, the notes of meetings he >> participated, the company he is an employee of etc. How can I mark up >> info in a way that Emacs or org links such info? Or isn=E2=80=99t = this >> possible? Do I have to use Gnowsys or something like that for this? >=20 > This is not totally possible, org-mode does not know how to make "John > Doe" clickable unless you make a special link. but see: = http://kitchingroup.cheme.cmu.edu/blog/2015/06/22/Clickable-org-contacts-i= n-text-files/ = Ah, interesting! Not exactly what I had in mind, but this inspires me to = think about a good solution for what I actually want. Somehow it=E2=80=99s probably possible to make clickable links that call = lisp code, which does not, as in the above example, searches the = org-contacts, but instead triggers the agenda with a search for that = person=E2=80=99s name, so that as a result I have an agenda / match = view of all occurrences of that name in my file(s)?=20 >=20 >>=20 >> - I=E2=80=99d like to be able to search all =E2=80=9EPERSON=E2=80=9C = entries for a specific >> name. > See org-contacts. i integrated something like this into helm: > = http://kitchingroup.cheme.cmu.edu/blog/2015/03/14/A-helm-mu4e-contact-sele= ctor/ > which I use all the time. Oh yes, email is also something which I=E2=80=99d maybe like to = integrate into Emacs later.=20 Thanks for the pointer. mu4e looks promising. I=E2=80=99d be interested = in a comparison chart of email clients that work with / inside Emacs. = However, I haven=E2=80=99t found any yet. Do you know something like = this? >=20 >>=20 >> - I=E2=80=99d like to be able to archive chunks of information, e.g. = a >> MEETINGNOTE that=E2=80=99s obsolete, equally as I can do it with = tasks >=20 > C-c C-x a will archive a headline. you can only archive headlines, not > pieces of text. Good enough I guess. Great! :-) >=20 >>=20 >> - I=E2=80=99d like to filter, i.e. have Emacs only show me e.g. the >> =E2=80=9EMEETINGNOTES=E2=80=9C entries with all their text, but = filter out everything >> else. Maybe even only =E2=80=9EMEETINGNOTES=E2=80=9C with tag = =E2=80=9EXY=E2=80=9C=E2=80=A6 combined >> filtering. Possible via Agenda, as I understand it, at least >> partially. Matching tags and combinations of tags etc. >=20 > This sounds pretty doable with tag/property searches. Great! Slowly my image of what my setup might look like gets clearer and = clearer.=20 Thanks! Daniel --Apple-Mail=_E4CF8BD6-31EF-420C-9742-4163D4E36A15 Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=utf-8 Dear John,

also to you, many thanks for your time to answer so many = questions of mine.
I=E2=80=99ll comment them = below:


Am = 03.07.2015 um 16:02 schrieb John Kitchin <jkitchin@andrew.cmu.edu>:

This all sounds = doable, but it will take some work ;)


I guessed = so. ;-) But that=E2=80=99s the trade-off. Take some ready-made software = that works out of the box, but then it won=E2=80=99t work as you want it = to work. The other extreme is to program a personalized solution = entirely on your own. I have done this before. But I hope Emacs is = something in-between. The framework is there, and it=E2=80=99s only a = matter of writing some scripts to make it work exaclty as I = wish.
The problem is also, that I don=E2=80=99t know exactly = in advance how I=E2=80=99d like it to work. These wishes will evolve = with time. Another advantage of scripting an existend application. I can = adapt it easier to new requirements than re-writing an entire = application. ;-)


I know how to make tasks with the org-todo-keywords.
Now I want to mark chunks of information in that file in a = similar way, but keep it outside of the task workflow. I=E2=80=99d like = to have that information accessible and finable easily, and I want to = differentiate different kinds of information.

Quick example:

* TODO This is my = first task
Some task description goes here
* MEETINGNOTE of meeting 2015-07-02 MyCompany

I think you should probably use a = tag of :MEETINGNOTE: here, instead of
a TODO keyword like = this. TODO keywords imply to me some kind of
changeable = state not a type of content. Alteratively you could make it a
property.

with your curson on = the headline, type C-c C-c and enter MEETINGNOTE to
add = the tag.

I = have to press =E2=80=9ETAB=E2=80=9C (=E2=80=9Efree=E2=80=9C) before = entering a new tag. Might be because I already defined some tags to be = used in quick access.
You are right, somehow a tag is more = suuitable for this kind of marking information. 
However, = I just came across the possiblitiy of defining several TODO keyword = workflows in parallel. I could imagine to have one for my own todos = (TODO), one for other people=E2=80=99s todos that I=E2=80=99m monitoring = (TASK) and maybe also one for information that expires or becomes = outdated. Like this, partially taken from the org-secretary explanation, = but adapted by me:

(setq =
org-todo-keywords
      '((sequence "TODO(t)" "|" "DONE(d)" "CANCELLED(c)")
        (sequence "TASK(f)" "|" "DONE(d)")
        (sequence =E2=80=9EINFO(i)" "|=E2=80=9C =E2=80=9EINFO-EXPIRED(e)")))

Or would you consider this total = nonsense? I know there is the archiving feature. Maybe expired info = should be archived instead of maker =E2=80=9Eexpired=E2=80=9C? = ;-)

This = brings me to another idea: Maybe you know the outliner =E2=80=9ENoteCase = Pro=E2=80=9C (www.notecasepro.com). I have written some plugins for it = (www.notecaseproplugins.com), one of them being a plugin = for helping to keep your files clean. One way to keep them clean is to = assign an expiry date to every chunk of information in the file. If you = generate an entry, you are automatically asked to quickly choose a = validity time span (only a rough one, so you don't need to think too = much at this point: one day, one week, one month, one year, 5 years, = forever). Based on your selection, the plugin sets the corresponding = date in the ffuture as expiry date for this piece of information. = Everytime you open your file, the plugin searches for expired info and = present only one expired info per session (so you are not overwhelemed = by having to make decisions) to you and lets you choose to archive it, = prolong the validity time span or to delete the expiry date = entirely.

I = think in times of gigantic flood of information we need such mechanisms = to be able to maintain our information.

Does something like this exist for = Emacs, too? Or is it already easily possible by using dates and the = agenda=E2=80=A6?



** participants
*** =E2=80=94> John Doe
*** =E2=80=94> Mary Sample
** Goal
This is the description of meeting goal
** = Outcome
Outcome of the meeting


* PERSON John Doe
Street = address
email address
telephone

PERSON should also be a tag, or = look at org-contacts, where those bits
in the body would = be stored as properties.


org-contacts seems to = have a similar use case as BBDB (big brother data base). What is better? = :-D I know, this is a very sloppy question.
New attempt: Which = one would you recommend? I=E2=80=99d like to have a full-fledged = contacts database that i=E2=80=99d like to sync with CardDAV servers and = possibly iCloud, so that ai can use the same address data in any email = client / telephone assistance solution on the Mac, and also inside Emacs = for referring to todos etc., maybe to write letters inside Emacs with = LaTex export and automatic inclusion of the snail mail address of the = person etc. etc. All on a Mac. (Currently using Aquamacs, but maybe = switching to Emacs Mac Port later, as that seems to be more standard, = more stable and also less performance-hungry).


* COMPANY MyCompany
address
field of operation
employees:
- John Doe
- Mary = Sample

* INFO 2015-07-01 John Doe does not = want to work with Emacs

You = should use org dates like [2015-07-01] which will make them
clickable.

You are right. I meant to use such = dares.


I think INFO here should be a = tag too.

Maybe. Will think about that. (see also my = question about this above).




* NOTE = 2015-07-02 16:20 called John on the phone
here go some = notes about the telephone call with John


So for example:

- I=E2=80=99d = like to have all the info (cross)linked, so that if I click
e.g. on any occurrence of =E2=80=9EJohn Doe=E2=80=9C I=E2=80=99= d like to see a list of matches
that mention John Doe: his = PERSON entry, the notes of meetings he
participated, the = company he is an employee of etc. How can I mark up
info = in a way that Emacs or org links such info? Or isn=E2=80=99t this
possible? Do I have to use Gnowsys or something like that for = this?

This is not totally = possible, org-mode does not know how to make "John
Doe" = clickable unless you make a special link.  but see: http://kitchingroup.cheme.cmu.edu/blog/2015/06/22/Clickable-org= -contacts-in-text-files/

Ah, interesting! Not exactly what I had in mind, = but this inspires me to think about a good solution for what I actually = want.
Somehow it=E2=80=99s probably possible to make clickable = links that call lisp code, which does not, as in the above example, = searches the org-contacts, but instead triggers the agenda with a search = for that person=E2=80=99s name, so that as a result I have an agenda / = match  view of all occurrences of that name in my = file(s)? 




- I=E2=80=99d like to be able to = search all =E2=80=9EPERSON=E2=80=9C entries for a specific
name.
See org-contacts. i = integrated something like this into helm:
http://kitchingroup.cheme.cmu.edu/blog/2015/03/14/A-helm-mu4e-c= ontact-selector/
which I use all the time.

Oh yes, = email is also something which I=E2=80=99d maybe like to integrate into = Emacs later. 
Thanks for the pointer. mu4e looks = promising. I=E2=80=99d be interested in a comparison chart of email = clients that work with / inside Emacs. However, I haven=E2=80=99t found = any yet. Do you know something like this?




- I=E2=80=99d like to be able to archive chunks of = information, e.g. a
MEETINGNOTE that=E2=80=99s obsolete, = equally as I can do it with tasks

C-c C-x a will archive a headline. you can only archive = headlines, not
pieces of text.

Good enough = I guess. Great! :-)





- I=E2=80=99d like to filter, i.e. have Emacs only show me = e.g. the
=E2=80=9EMEETINGNOTES=E2=80=9C entries with all = their text, but filter out everything
else. Maybe even = only =E2=80=9EMEETINGNOTES=E2=80=9C with tag =E2=80=9EXY=E2=80=9C=E2=80=A6= combined
filtering. Possible via Agenda, as I understand = it, at least
partially. Matching tags and combinations of = tags etc.

This sounds pretty = doable with tag/property searches.

Great!

Slowly = my image of what my setup might look like gets clearer and = clearer. 

Thanks!
Daniel



= --Apple-Mail=_E4CF8BD6-31EF-420C-9742-4163D4E36A15--