emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[O] How I am organizing contacts (was: BBDB Sync)


From: Karl Voit
Subject: [O] How I am organizing contacts (was: BBDB Sync)
Date: Sat, 23 Jun 2012 11:58:01 +0200
User-agent: slrn/0.9.9 (Linux)

* Sriram Karra <address@hidden> wrote:
>
> On Sat, Jun 23, 2012 at 1:33 AM, Karl Voit <address@hidden> wrote:
>
>> I am using Org-mode to organize my contacts following
>> org-contacts.el[1] and a *lot* of additional properties. Those
>> things are so far =BBby convention=AB and I always wanted to sum it up
>> on WORG but did not find time for that.
>
> Even with BBDB there are only few "standard" fields, and a tonne of custom
> fields. If conventions are only in naming the property fields that is
> trivially fixed through a config file (something I do already for the BBDB
> handlers).

Oh, I am certain that for mapping purposes there are technical
solutions.

Originally I wanted to sum up my method (my convention) to spare
other peoples time to come up with their own. I looked at other
software solutions and meta-data standards to get a convention that
reflects a «general» attempt.

To be fair: I could not find any common ISO or something other
standard for that purpose which overrules other conventions.

So a *common* convention could spare users to create those
(optional) mappings by themselves.

> I am a beginner level org-mode user -  I was away from Emacs for nearly 8
> years and returned to find this fascinating and gigantic new development in
> the Emacs world :) 

This paragraph I could have written on my own one year ago :-)

> But if you can document your contact structure, I could
> potentially implement it some point in the future.

It's fairly simple: I do have an Org-mode file named «contact.org»
with a tree: no flat structure, since I tend to map family trees to
Org-mode headline hierarchies:

- groups
  - relatives
    - families sharing the last name A
      - family of person A
        - person A
        - [other members of family of person A]
  - friends
    - [same concept as above with relatives]
  - job B
    - [more or less flat list of people I got in touch with while
      working for company B]

For less tight connections that do not belong to the sub-hierarchies
above, I do have separate headlines which contain only a flat
sub-hierarchy each: 

- people (people which are not friends, family, or other categories)
- passing acquaintances (people I hardy know but want to store info)
- companies (I am using tags to differ between entries of companies)

Each and every entry is created using a yasnippet[2] template like
this:

,----[ vkcontact ]
| # name : Org-contacts template for a person
| # --
| ** $1 $2  :$1$2:
| :PROPERTIES:
| :TYPE: ${3:$$(yas/choose-value '("person" "company"))}
| :TITLE:
| :EMAIL: $4
| :URL:
| :MOBILE: 0043/
| :HOMEPHONE:
| :WORKPHONE:
| :PHONE:
| :COMPANY:
| :STREET:
| :POSTALCODE:
| :CITY:
| :COUNTRY: Österreich
| :END:
|
| first contact: $0
`----

This ends up in entries like:

,----[ vkcontentry ]
| ** John Smith       :JohnSmith:
| :PROPERTIES:
| :TYPE: person
| :TITLE: Dr.
| :EMAIL: address@hidden
| :URL: http://john.smith.com/
| :MOBILE: 0043/6123/12345678
| :HOMEPHONE:
| :WORKPHONE:
| :PHONE: 
| :COMPANY: Graz University of Technology
| :STREET: Herrengasse 1
| :POSTALCODE: 8010
| :CITY: Graz
| :COUNTRY: Österreich
| :END:
|
| first contact: we met at CHI2012 conference
`----

One minor flaw is that I have to modify the level of the headline
resulting from the template according to the level where it belongs.
Maybe somebody has a solution to that little but annoying thing?

Below the «first contact»-line, I start to write all things related
to a contact starting with an active time-stamp: changes in phone
numbers or addresses, little things I do want to track (favourite
sport, links to other friends of mine, what I gave for birthday,
...).

At the bottom of every contact, I add (repeating) events for
birthday and other anniversaries. When I am doing something with
only one person (going out for lunch, doing a biking tour, ...) I am
creating entries for those events directly in this contacts.org
file. Also handy: keeping track of doctor visits and any health
related information right at the entry of this doctor.


My current tags for contacts are defined in the header of my
contacts.org:

,----[ first line of my contacts.org ]
| #+TAGS: job(j) friends(f) health(e) hotels(o) restaurants_bars(r) \
|         sport(s) students_TU(t) relatives(r) company(c)
`----

... but this is pretty much related to my previous system
(jPilot/datebk6/PalmOS) which offered only one single category for
each contact. I might re-think these tags in future.


I am using the following yasnippet template to generate a link to an
entry of my contact list:

,----[ vkcontact ]
| # name : expand link to contact
| # --
| [[contact:$1][${2:$$(unless yas/modified-p
|  (let ((field (nth 0 (yas/snippet-fields (first (yas/snippets-at-point))))))
|    (concat (buffer-substring (yas/field-start field) (yas/field-end 
field)))))}]] $0
`----

So when I am invoking «vkcontact» + TAB, and I enter «John Smith» +
TAB, it ends up in: «[[contact:John Smith][John Smith]]».

Of course there has to be an entry in my .emacs which enables the
custom link:

,----[ snippet from .emacs: the line with «contact» is the one relevant ]
| (setq org-link-abbrev-alist
|       '(
|     ("bib" . "~/archive/papers_from_web/%s.bib")
|     ("ref" . "file:~/share/all/org-mode/references.org::/%s/")
|     ("pdf" . "~/archive/papers_from_web/%s.pdf")
|     ("notes" . "~/archive/papers_from_web/%s-notes.pdf")
|     ("contact" . "~/share/all/org-mode/contacts.org::/\*.*%s/")
|     ("vktsfile" . "~/share/all/org-mode/memacs/files.org_archive::/\*.*%s/")
|     ))
`----


> Do you use any import/export/sync code with org-contacts?

Not yet.

I did not have time to implement something on my own and so far the
desire to do so was almost non existent (time!). But if there will
be a solution which helps me syncing my phone contacts (again), I am
willing to give it a try.

Personally I do want to have control over this process: I store
*everything* about a contact in Org-mode but I just want to have
synced phone numbers, email addresses, and names to my Android
device. Nothing more, nothing less.

  2. http://emacswiki.org/emacs/Yasnippet
-- 
Karl Voit




reply via email to

[Prev in Thread] Current Thread [Next in Thread]