Hello, everybody.

My name is Josh.  I participated in Google Summer of Code back in 2008.  It was an awesome experience and introduced me to open source development.  I like to program, obviously, and my major is Computer Engineering, which is a mix of Computer Science (programming, among other things) and Electrical Engineering.  I am currently in a co-op/internship where I do some web development (PHP, HTML, JavaScript, and MySQL), C++ and C, TCL, and a bit of shell scripting and python.

My current projects include, but are not limited to, two Thunderbird extensions:

  • gContactSync – Synchronizes contacts from a Google Account (Gmail) with an Address Book in Thunderbird.  Many users use this side-by-side with other synchronization apps, and improving compatibility is one of my goals.
  • openCRX – Imports and exports to/from openCRX.

My homepage can be found here, although I am still not done moving content over from my old sites and blog.

You can often find me hanging out in Mozilla’s IRC in the #maildev channel (sometimes a few others) as pi.  I rarely remember to change my nick when away, so please don’t be offended if I don’t reply immediately. 😉

  1. #1 by tad whiteside on December 11, 2008 - 9:56 PM

    Hi Pi,

    I just installed gContactSync – I think it works really well so far.

    So – two things:

    1. You’re a student – so do you have an Amazon Wishlist (or something) for books you might need /want for school next semester.

    2. In the “Sync Behavior” option box, what does the “Always update Gmail when a contact is updated in Gmail and Thunderbird” mean?

    Should that just be “….updated in Thunderbird”?

    Thanks for your work and good luck with your exams

    Tad Whiteside

  2. #2 by pi on December 16, 2008 - 11:26 AM

    Thanks for the comments.

    I see how that wording is confusing. It is meant to give you a choice between updating Thunderbird or updating Gmail if a contact is changed in both locations.

    So, say you have a contact John Doe johndoe @ host.invalid. If you change the e-mail address to johndoe2 @ host.invalid in Gmail and johndoe3 @ host.invalid in Thunderbird, which contact should be updated in the next sync? If you check the box, the contact in Gmail will be updated and the e-mail address in both TB and Gmail will be johndoe3 @ host.invalid.

    I am a student, but I’m actually going on a co-op/internship next semester, so I don’t need any books, but thanks for the offer!

  3. #3 by Joo on December 28, 2008 - 1:12 PM

    Hello pi,

    I like to translate gcontactsync in Dutch!

  4. #4 by Diavolo on February 11, 2009 - 12:17 PM


    I love your extension but how can I disable the E-Mail-Adress nobody@nowhere.invalid? I want empty adresses.

    Thank you

  5. #5 by pi on February 12, 2009 - 8:37 AM


    Unfortunately that e-mail address must be present or Thunderbird will break and synchronization becomes impossible. (See this for details). When you view a contact with that hidden address it doesn’t appear there, but I haven’t found a way to completely hide it.


  6. #6 by Diavolo on February 12, 2009 - 8:51 AM


    thank you for your answer. I don’t use mailing lists, so it wouldn’t crash or would it? Perhaps you can make an option to disable it. 🙂

    Thank you

  7. #7 by pi on February 12, 2009 - 11:48 PM

    I agree that there should be a preference, so I filed a bug report here that you can watch. I believe I will add it before the next version and definitely before 0.2.0, but it will remain hidden because it is dangerous. You will have to use the config editor to change it (Tools -> Options or Edit -> Preferences, then Advanced -> General -> Config Editor). I’ll add more instructions in the bug report once I finish.

    As a warning, gContactSync 2 adds the default groups (Family, Friends, Coworkers, and My Contacts) as mailing lists. If you have even one contact in any of those groups and disable that e-mail address your directory will probably break and you won’t be able to synchronize or use it. If this happens you must re-enable the preference, delete the synchronized directory, go into the gContactSync preferences and change the synchronized address book for the account and sync all over again. Contacts that weren’t modified shouldn’t be lost, but please backup all your contacts before changing the preference.


  8. #8 by Diavolo on February 13, 2009 - 2:36 AM

    Thank you very much 🙂

    Is there also a possibility that the groups are not added when they are empty? I don’t use them.

    Thank you

  9. #9 by Jari on October 21, 2009 - 5:39 AM

    Hi there

    Your addon seems to work well and I really like it. However, I have not been able to make it work with seamonkey 2 (rc2) which I use as my primary mailing client (I installed 2rc2 to get gcontactsync working). Could you please release a version which works for this aswell?

    regards and my compliments, J

  10. #10 by Pi on October 21, 2009 - 7:31 AM


    I released version 0.2.9 with support for Seamonkey 2.0rc2 and it should appear on AMO within a few hours: https://addons.mozilla.org/en-US/thunderbird/addon/8451
    Version 0.2.10 will support up to version 2.0a1pre.


  11. #11 by Thomas on May 28, 2010 - 9:00 AM

    Is there a release date for gContactSync for Thunderbird 3.1?


  12. #12 by Pi on May 29, 2010 - 1:43 PM

    gContactSync has supported Thunderbird 3.1 from the day the version was changed to 3.1a1pre, including 3.1 RC 1 and 3.1.0 when it gets released. It works with any version of TB since 2.0, including nightlies of 3.2a1pre.

  13. #13 by Josh on July 24, 2013 - 10:31 AM

    Greetings. Good to meet a namesake who also likes PI. I have a degree in Mathematics from U Waterloo.

    I was you switched to hostgator.. are you running an instance of openCRX on a basic hosting plan there? I am new to openCRX and was looking for some how-to-get-it-running information. PersonalMail me if you like.


  14. #14 by menashe k on February 4, 2014 - 3:03 AM

    Script: chrome://gcontactsync/content/Sync.js:440

    I had the gcontactsyn add on installed

    I get the above error message often making work on TB cumbersome
    I also had an issue whereby the sync didnt usually work either

(will not be published)