From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jean Louis Subject: Re: exported contacts problem Date: Sat, 3 Aug 2019 20:25:37 +0200 Message-ID: <20190803182537.GB23820@protected.rcdrun.com> References: <20190802160236.GR17561@protected.rcdrun.com> <87mugrb7fi.fsf@ericabrahamsen.net> <20190802213421.GZ17561@protected.rcdrun.com> <875znfaycd.fsf@ericabrahamsen.net> <20190803103340.GN23820@protected.rcdrun.com> <874l2yxnrs.fsf@ericabrahamsen.net> <20190803163219.GZ23820@protected.rcdrun.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Return-path: Received: from eggs.gnu.org ([2001:470:142:3::10]:57279) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1htyit-0000cL-Bt for emacs-orgmode@gnu.org; Sat, 03 Aug 2019 14:25:44 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1htyir-0000ox-Jo for emacs-orgmode@gnu.org; Sat, 03 Aug 2019 14:25:43 -0400 Received: from stw1.rcdrun.com ([217.170.207.13]:52935) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1htyir-0000oK-8Y for emacs-orgmode@gnu.org; Sat, 03 Aug 2019 14:25:41 -0400 Content-Disposition: inline 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" To: Neil Jerram Cc: Eric Abrahamsen , Org Mode List * Neil Jerram [2019-08-03 19:49]: > I've tried to work on contact conversion and synchronization in the past, > aiming to merge and unify contacts that I've built up in BBDB, Google > Contacts, email systems, pre-Android phones, etc. The problematic aspect > was different systems using different field names and structures, e.g. one > with separate First Name and Last Name, and another with a combined Name > field; different approaches to breaking up addresses; additional arbitrary > notes fields; etc. > > With that in mind, I'm curious if the writers on this thread could comment > on: > 1. is this situation any better now? > 2. if you favour using org-contacts or org-vcard, what do you see as the > benefit of Org as your master contact format, as opposed to say BBDB or > .vcf? Org mode is for writing hierarchically structured documents. It could hold contacts to certain degree. Why not. I have started keeping my contacts as bunch of business cards or paper notes. Sooner or later it converted to the box of paper notes, something similar as on this picture: https://img0.etsystatic.com/000/0/5326108/il_fullxfull.298169988.jpg Then I figured out, it is easier searchable if I keep it in text files. That is basic system. You could use file system hierarchy and create directory names by groups, organizations, lists or companies. Within each of them you could create directories by persons. Within each directory there could be address or contact information. Or everything in one file? That is also possible. But the more I think about it, relational databases such as PostgreSQL are the right tool for that. They offer all kinds of reporting, discovery of information, all kinds of interfaces can access such databases. For me there is no special benefit to keep contacts in the Org file. It is just one file, part of file system. I keep contacts in the database and set of principle decides where is the Org file to be found for particular person. If person's ID is 1234, maybe such file could be found within file system as: ~/Work/RCD/Groups/Organization-ABC/1234/1234.org And that is the main Org file for the person. Such directory is created automatically, I don't work on that, Emacs Lisp does it for me. If I create person with the ID 1234 in the database, I can click and open Org file for the person, without knowing what is exactly the ID of that person, or where such file is located exactly. Computer program creates the ID, and decides where the file is placed, Emacs is opening it for me. No thinking. If I would keep all contacts in one Org file, that means I would have to do a lot of file system work manually, I would need to be careful how do I edit fields, did I make mistake, and so on, where many such details can be handled by the database and very little programming. My master contact or personal information management or central files or synonym to customer relationship management is located in the database. And I have access through Emacs to the database. I can access contacts from Org mode by using Babel, so that is fine. I can link to contacts or make a report about the contact in the Org mode, as I can use SQL Babel to draw such report from Org file. But how do I do the same other way around? It is hard. Org was not designed for that. Can I use scheme programming language to make a report about contacts from an Org file? Probably not. Org has structure but it is not a relational database[1]. Can I use Perl or Python, or Common Lisp to take information from the BBDB, VCF or Org file? It does not work, there are no such packages in other languages, not yet, and it does not make sense to rely in future on contacts in Org file unless it is really just few hundreds of personal contacts. Even 23 hours of marketing that I have done in East Africa brought me over 1,300 new contacts. All such contacts arrive as subscription to mailing list. That was in 2014. Those contacts are reading my email. I would not be able to keep all the files and stuff quickly related to them would I be using Org file for that. Imagine the workflow: - create landing page - pay marketing - accept the entries, encrypt it on the fly. I am not keeping databases on Internet, never. The LISP structure get encrypted with the GnuPG[2] on the fly on the server, and later I simply ssh/rsync it to my offline computers. - the database entry is synced to offline computer into the offline database. This works automatically. If I would have 1,300 contacts to enter in one single day, I would spend either money for workers or time and efforts for careful writing of it. This way their names get capitalized automatically, IP address can give a clue about their city, country, email and/or phone is entered into database - computer is then sending them follow up emails, SMS or schedules meetings or phone calls, all I need to do is to make set of principles and few functions to handle those principles. - now people are writing back, right? So there is live conversation, some of them are sending their CVs, some of them are calling, writing emails. So what to do now? With the Org file if they call you back, you need to open the Org file, to find out what is that phone number, who is calling, you need to locate the entry to understand the background of the person. He will say that he received your email, but 1300 other people received it too, you don't know who is that without quick search of the contact. On my side, in the shell, I am searching as: $ @ Peter Luca where sign @ is alias for "search" which searches for particular contacts. Or within Emacs, I use Hyper-c, so much close to M-c, I can enter few words and see the profile of the person. If there are pictures somewhere, I can open pictures quickly, as such are automatically sorted into directories appropriate to the person. I can quickly open Org file for the person if I wish to take notes, or I can take a note into the database. I could quickly open all email conversations and know what is this about. I don't know how I would be doing that with Org files. Sometimes I hire people to work together, so I give them database access over virtual private network, and they start calling people and following up with them, they enter information into the database, and such information is accessible to every person working on the database. It is collaboration feature that every SQL database has as a built-in. I would not be able to do it nicely with Org file. I could delegate parts of Org file to various people and then concatenate it together back, but I would not have a picture really what happened. I would have to keep track of who did what at what particular time, right? You want to know which user did what. With text files such as Org, one need more effort to make it right. With the database, a trigger can be installed to record the last user that modified certain entry of the database. Trigger can indicate at which date/time certain entry was added or modified. It becomes easier to track events. Instead of using Org text files as database for contacts, I can just recommend using database for contacts whereby the database could contain Org files related to contacts. Jean Footnotes: [1] https://www.postgresql.org [2] https://www.gnupg.org