- ARTS
- COMPUTERS
- INTERNET
- HOME
- RECREATION
- SOCIETY
- PRIVATE
- PROJECTS
Link
Link
I desperately need some kind of central addressbook that is useful to use. I still don’t think its there.
So I continued where I left (if you followed my older postings on it you have a basic idea on the idea) but this time I changed the data format to .vcf.
It means that I can rightclick in Outlook and “send as VCF (complete)” to receive all VCF cards and can then simply browse through them with the help of a Jquery Tree and the VCF reader class. I can make any category / household / company / department hierarchy I want or even multiple.
Next in line is integrating the VCF writer class, that would be a cool next step.
It will take several larger efforts:
- the gui will contain Page Classes such as “administration”, “cards” or “reports” (birthdays!), these will be plugins
- the fields will also be of a plugin type e.g. birthday will consist of an administration part, a reader/data part, a viewer part and a writer part. Any field thinkable e.g. x-facebook will be it’s own plugin so people can easily add plugins for any social network or whatever usage they have in mind
I have the general architecture in my mind but I lack the time to “sit for it”. Dragging the current approach in one web application was a matter of 10 minutes. Still it’s cool that I can blazingly fast skip through my collection of vcards although it feels “i want it now” that i can not edit the data without editing the vcf file itself.
In the long run it will need merging possibilities , import/export and versioning.
I added the current version in an iframe in our home wiki so we have access to all addresses from within the home wiki.
Someone, somewhere, will see the possibilities of this.
1. full text seach
2. multiple toolbars e.g. Contacts A-Z, Households A-Z, Companies A-Z, telephone list, birthday calender, user-editable
4. Tree with free editable categories e.g. families, companies,
social networks : functions as folders for contacts
5. list of contacts, represented in different styles, drag-and-droppable to the tree structure
6. attributes of contacts sortable on anything
7. contacts data: integration with mail, phone, photo album, todo list, agenda, etc…
In summary:
- provides relations between contacts
- provides relations between groups
- can handle contacts in multiple groups
- groups have properties as well e.g. households have addresses, anniversaries, etc… (not yet correct in the picture), the tree
should contain everything including the contacts. actually the tree and the green blocks list are the same objects
I noticed in my mailbox (flooding daily with hundreds of invites for all kinds of things) recently that the amount of invites for www.unyk.com is rising.
Unyk is basically a Plaxo without the extra social features but more thrustworthy in terms of “general stories of annoyed users” when you do a quick scan using google.
Will I use it? No. Not when I have all my contacts attached in Plaxo and I have to send everyone another note that I joined yet another auto-addressbook-updater. I’m getting almost a burn-out for trying to manage my social networks alone.
Plaxo manages the synchronization between my outlook and the outlook of my wife and basically it does that well (apart from the annoying double, triple or quadrupple birthday entries in my agenda).
The only reason why I would step over from Plaxo to another addressbook would be if they would support relational groups. So not a flat table of contacts but really “household A” where I can drag and drop the persons on who live there. Saves a lot of typing of addresses (e.g. company department Z) and is much easier to look at.
For many years now I am searching for an extension of Outlook which lets me place my contacts in hierarchies: families, companies, departments, member of social network X and so on.
Somewhere in 2006 I wrote about Cortege, which provided at least a good step in this direction by providing a visual interface to Outlook to do exactly that:
However, now that I tried to check it again it seems that the website of the product (personal-software.com) has gone away so I conclude that the production of the tool was stopped.
Which amazes me since I think this is the one thing which could improve the life of many people. It could become the next big thing: the graphical contact manager.
So… the last thing I see is version 2.0.0.51, what happened? Did someone woke up and bought them out?
Plaxo allows me to keep my addressbook online and regularly synchronize my contacts with my Outlook address database. My outlook addressdatabase is then again synced with among others LinkedIn and my HTC PDA and my Nokia phone which in turn gets synced with my wife’s address database (she is in charge of birthdays).
What I noticed however was that after synchronization some information disappeared from my Outlook!
Suppose I have a contact in my Outlook and I add him to Plaxo. This person then also sign into Plaxo and removes or changes information e.g. a birthday or another personal item, well understandable if this person does not want to have this information online. However after synchronization it then also gets deleted from my personal entry on this person in my Outlook.
Immediately after noticing this I removed the Plaxo synchronization from my Outlook and e-mailed Plaxo support. They gave me the quite simple solution on how to resolve this:
- Enter your Plaxo
- go to "Addressbook" (you really have to be in this screen)
- click on "settings" on the top right (settings are different in each part)
- Click on "addressbook"
- uncheck the checkbox before "Automatically accept updated information in my address book"
This will prevent automatic changes mutating your local addressbook. Each time a contact changes his or hers information you will be given the chance if you either want to accept the changes or not (just like the Linkedin synchronization tool in Outlook).
Ok…. let’s reinstall the Plaxo Outlook synchronization tool again
In the wikipedia under namespaces, I found exactly the things I am doing alongside the negative effects.
Emulating namespaces
In programming languages that do not provide language support for namespaces, namespaces can be emulated to some extent by using an identifier naming convention. For example, C libraries such as Libpng often use a fixed prefix for all functions and variables that are part of their exposed interface. Libpng exposes identifiers such as:
png_create_write_struct png_get_signature png_read_row png_set_invalidThis gives reasonable assurance that the identifiers are unique and can therefore be used in larger programs without fear of identifier naming collisions.
Unfortunately, this technique has several drawbacks:
- It doesn’t scale well to nested namespaces; identifiers become excessively long.
- Individuals or organizations may use dramatically inconsistent naming conventions, potentially introducing unwanted obfuscation.
- Compound or ‘query-based’ operations on groups of identifiers, based on the namespaces in which they are declared, is rendered unwieldy or unfeasible.
- All uses of the identifiers must, in effect, be fully namespace-qualified. Languages with direct support for namespaces usually provide ways for the programmer to declare up front that they wish to use some or all identifiers from a specific namespace, which they can then use without qualification for the remainder of the block.
It does not state however to circumvent the negative side-effects.
I’ve been test-running my written addressbook now for a week and it works like a dream (see all previous posts beneath).
Whenever I have a) a new contact in e.g. my outlook, my mail or b) just info I want to type along with the contact or c) documents I want to save alongside the contact in whatever hierarcy e.g. company /country/department X, I just create a directory in Total Commander and copy and paste the information in a file called “info.txt” or drag the documents I want to store alongside the person in his directory. Saves me some lotus notes / outlook space. I can handle everything from Total Commander. cool.
So… obviously I have some more wishes. The next thing that must go in is the handling of the field plugins:
A field as “image.avatar” will first be handled by the “image” plugin (which simply makes it a html img tag). This image plugin then simply calls the plugin “avatar”. The plugin “avatar” can then do some extra operations on the first processing layer and return it whereafter the “image” plugin can do some after processing and return the lot for display.
This also allows me for the future to namespace the plugins e.g. “cogmios.image.avatar” will be my avatar plugin, but maybe if you want to write a different plugin you would create “yourname.image.avatar”. You could even wrap my plugins “yourname.cogmios.image.avatar” to do some advanced before or after processing.
However sometimes multiple fields need to be combined e.g. if I would define “hyves_url” and “hyves_name” and “hyves.image.avatar” then these three possible should result in just 1 line in a table, so I have to, I think, pass the complete array of all fields defined for a contact to all plugins each time, currently I’m parsing the given fields one at a time sequentially.
I have to think this through. Actually I would love it if php people out there with some jquery knowledge and interested in creating a text file based addressbook would join in and develop this together. It’s by far not ready for an official open source project but thinking about different strategies is a lot of fun.
I don’t have screenshot now because I did not have time to create a demo database.
I think I:
- need to read all fields in the info.txt file and determine which ones are corresponding to existing field plugin handlers (and which one the user just entered to write a plugin later) (each plugin registers itself by simply defining a constant, the loop checks if the fieldname corresponds to a defined constant).
- put this in an array
- pass the array to each plugin that is installed in the order given in the info.txt so that the user can have a different ordering per contact e.g. social networks on the bottom.
- return the array to know which elements have been used so that e.g. cogmios.hyves.url and cogmios.hyves.name do not generate twice a hyves row in the output table.
This might work. One remaining problem might be that if “avatar” exists as plugin (e.g. normally called via “image” as in “image.avatar”: what to do if someone also wants to create an avatar plugin named “avatar”. In normal OO this is simply prevented by the namespace and regarded as 2 different things e.g. “a.b” and “c.b” are 2 different things. In my file based approach however “b” is one and the same field plugin code. One things I was thinking of one preventing this is to also make the plugin directory hierarchical e.g. place “image.avatar” in “/plugins/image/avatar.inc.php” so someone could create “/plugins/concepts/avatar.inc.php”. This would mean that the constant image.avatar and the functions in there should be image__avatar and image__avatar__display() etc… Basically that I should find a smart replacement of the dot. So that if the user types image.avatar the code behind it would translate it to image__avatar. I have to think about it if the 2 underscores is the best replacement for this. I could even think about letting the user simply entering “image__avatar” instead of “image.avatar” so I don’t have a translation between the two same concept but I think image.avatar is simpler for the user.
And talking about simplicity, I could also try to make just “avatar” being default “image.avatar” so to make it even more simpler for the user. And even to give certain fields a list of possible names which all result in the same plugin being used, could come in handy when I will be importing and exporting to Outlook, to have identical names in both systems.
So why am I typing this here? Because it helps me getting my thoughts straight around it and possibly if you see any errors in my reasoning to correct me if I am wrong
Right after posting this, I might another thing: sections. Which means that sections will be parsed as one entity and possibly with a seperate header. Meaning… that you could define the section “social networks” and then display under a seperate header all social networks the contact is. So then I would have to define a character sequence which would define a section. I think that an opening and closing tag (as in html/xml) is too difficult for the end-user. Probably he or she simply wants only a header.I think I will use ===== HEADERNAME or ##### HEADERNAME in the info.txt to define a section. Must think about it.
An example of the extensibility of the idea is shown to the left:
Simply by creating directories containing the years, months or dates (or any combination e.g. quarters, you can create any directory structure up to any level you want…it’s your harddisk
) you can create an agenda which you can maintain via notepad or vi…
Another advantage is that you can reuse the field plugins in the info.txt files in the folders e.g. a “date.meeting” will be handled by the same plugin. You can add any fields you want to the days.
Another advantage is that you can copy files in the folders of the e.g. days so you can keep track of the stuff you produce on a day in a date order if that’s of any use and later browse or report on it by simply copying the files in the correct directory e.g. 2007/Januari/15!
You could also create “work agenda” and “private agenda” directory and then let different report plugins handle either the combined dates or the dates of the seperate directory structures.
Simple isn’t it?
You can even drag contacts on a date and then let a directory-handler plugin determine if e.g. the plugin should be added to this date e.g. for a meeting and then popup a dialog.
The last idea makes me rethink the single directory tree structure. Maybe a split screen is handier or a screen where a tree structure is shown in the left and then 2 windows side-by-side for copy and paste actions (like in Total Commander).
