About

We are a full-stack web development shop focusing on rapid prototyping. We can help you get a first version of your idea out quickly and help you grow as the idea matures.

Contact

Randy Schmidt

Recent News

» Read Our Blog

pupCard: Because it Follows You Around Like a Puppy!

April 18, 2011

Managing contact information has bothered me for a long time. Right now, basically, we have a system where there are many copies of one’s contact information all of which are wrong as soon as someone changes their information. You can help fight the problem by forwarding (e)mail from your old address or email everybody with your new information, but that seems like a hack. The truth record for any one person’s contact information is only in THAT PERSON’s head.

The way It Should Be™ is everybody manages their own contact information and everybody else subscribes to it and gets updates when it changes. I started to build something many years ago but I insisted that everybody had to use the same company/website in order for it to work. This is where sites like Plaxo fall on their faces. I eventually gave up the project because I realized it was way too big and there was no way I could fix it.

I started to think about this again a few months ago, but it manifested itself in the observation that my iPhone, address book and Highrise had almost zero avatars in it. I have a hard time remembering words so having faces or icons really helps me. I started to think about this problem again because everybody should manage how they want themselves to show up in people’s address books. I should be able to change my avatar and everybody who is subscribed to my info gets the new avatar in their address book.

I knew a single silo of a site would never work, so I started thinking about making a distributed protocol where you choose who your contact info provider is and then update a router so that all your subscribers know who to talk to when fetching your new information. I really think people would start to use this once it has been made simple and ambiguous (think Facebook, Gravatar, or LinkedIn as providers). The hard part is getting there.

The end goal is someone can subscribe to my contact information, and no matter what changes, provider, human friendly identifiers, etc, the person will still get notified when my info changes. Also, if someone is abusing my information, I can block them and change my information so everybody else gets it but the abuser doesn’t. I want to be able to hand out business cards that just say “r38y” on them (If you want one, send your address to me@r38y.com).

My new pupCard-enabled business cards

To be able to start to build this, I made some simplifying assumptions. First, I need to start with a silo to develop the protocol which would eventually become the first provider. Also, I don’t want to have to worry about figuring out how people will manage their contact information so I am just sticking with users uploading vCards for now. However, that will change soon.

Roadmap

  1. Build a single site where people can subscribe to each other’s contact information and get an email when their information changes. Contact information is simply a vCard the user uploads. DONE!
  2. Update the site so that people can manage their contact info on the actual site. This will then help with figuring out what the structure of the information for the protocol will be.
  3. Allow users to decide whether any one piece of information is public (email address, website, etc) or private (mailing address, phone number, etc). Public information will be displayed to everybody on the site and any subscribers will get notified when it changes. The user may optionally give a subscriber access to private information and only those subscribers will get an update when it changes. This will also allow people to block subscribers so that they won’t get updated even when their public information is changed.
  4. Pull router out of primary site. The router maps people’s identifiers to providers. Each account on the router is given a uuid which is the machine-friendly version of an identifier. This never changes. User’s can also have alias’, basically old and current things they give out to identify themselves. For me, this would be “r38y”. I want other people to search for me on the router with “r38y” and then subscribe to my information.
  5. Allow exporting your contact information, contacts list, subscriber list and blocked list. The contact list is the list of people who you want to watch. If their info changes, you want it. The subscriber list is the list of people who have subscribed to your information as well as whether or not you have said they can see private information. When someone wants to fetch your information, we look them up in this list and see if they can access your private information. The block list is the list of people you don’t want to get updates no matter what.
  6. Open source the first provider site so people can start their own provider sites. Each provider will have to register with the router to be able to work with it on behalf of the user.
  7. Figure out how to make the router redundant (let people set up mirrors) and caching of the look ups. This may also include pushing contact information instead of polling since we’ll have a list of people who have subscribed to any one user’s information.
  8. Figure out how to push people’s contact information into user’s other accounts, like Gmail.

Yes, I know that this is quite complicated and may not be usable to “normals”.

I’m hoping that by talking about this, I’ll get lots of feedback about how it can be simplified. One of the trouble spots is the user interacting with and understanding the concept of a router. This a lot like DNS and not many people know how that works. I am thinking that the user would interact with it through their provider and the provider may hide the details of what is actually happening.

Conclusion

I would love to talk to people about this and get other, much smarter, people to work with me. I know I described a Utopian picture but I’m confident, over time, we can make it work because we’re not requiring everybody to use the same provider.

As it stands right now, you can sign up, find people, and subscribe to their information. It is all based around uploading a vCard but that should change to managing actual information soon. (Check out mine at pcrd.me/r38y)

Go sign up, follow @pupcard on Twitter and tell me what you think below!

Projects

More samples available
upon request.