Blog updates

Sunday 22 August 2010

ChromeMarks - sync your Google Chrome bookmarks to your Android

Use Google Chrome or a Chromium browser..?
Like the way that the bookmarks are stored in the "cloud"..?
Want to use one of those bookmarks on your Android device..?

Well, as luck would have it - I've just released a new Android application to the market called ChromeMarks:

Here's a shot of some bookmarks in my browser

Here's a shot of the same bookmarks synced to my phone
This program will connect to the Google Sync service, retrieve your bookmarks and store them on your phone. Press any bookmark to fire it up in your browser of choice. Click on a folder to navigate through your list. A mere click of a button and any recent updates will be retrieved and merged.

The program works by communicating with Google 100% the same way as Google Chrome does - I do not do anything differently to your browser. The same with each update - they are performed exactly the same.

This is the first release - I suspect there are a few bugs, and there is even a big list of new features to add.

KNOWN ISSUES:

  1. The stock Android browser does not understand Folders - so it is unlikely I could ever find a way to merge these so they work in the default browser.
  2. Other android browsers tend to store bookmarks in their own custom database. I'd like to see if I could merge with them, but I don't want to tie myself down to individual programs.
  3. This is a ONE-WAY process *currently* - all updates are synced to your phone, but at the moment, there is no way to make updates on your phone and sync them back to the cloud. Yet.
  4. Bookmark data can take a significant amount of space. With 900 bookmarks and folders, the database is almost 0.5mb in size. In a later release, I'll flick the flag to allow Froyo users to stored it on the sd card.
  5. Similarly, the amount of data returned from the Google Sync service can be heavy - especially for the very first sync. If you have a lot of bookmarks and are on a limited data plan, I recommend doing the first sync on wi-fi. For example, my 900 bookmarks and folders was a 473k download. There is nothing I can do to make this smaller - I'm using the exact same messages that your browser uses when first setting up a sync.
  6. Very little error trapping and handling of problems. For example - if you enter the wrong password, you may get problems. If Google prompt for a captcha, you may get problems. If you don't have bookmarks stored, you may get problems. These are on the list to fix soon.

TO DO:

  1. Performance improvements. The code to retrieve data from the sync is using the java libraries provided by Google. But they are a bit heavy and do trigger a significant amount of garbage collection each time you do a sync. For that reason, the sync process can be a bit slow. I'd like to make it slicker.
  2. Updates. I'm not quite sure how as I imagine it would be fiddly to have to note a url, fire up a new app and then press buttons to add it in another app. I'll try to see if I can hook into various places - one idea is to catch the request ot save the url to the local stock browser and then automatically fire up my app and say "would you like to sync this to the cloud?" and ask you to choose a folder.
  3. Favicon fixes. A large number of my bookmarks in Google Chrome appear to be missing favicons. Maybe this app could retrieve the missing ones..? And then maybe it could sync them back to Google..?
  4. Automated sync. Obviously it would be nice to make it instantly update from the cloud. But that would require a permanent data connection, and could be costly on your data plans. So maybe a timed sync to go off at a time of your choosing..?
  5. Better error trapping - especially if Google prompt for a captcha or you get your id/password wrong.
  6. I don't like storing the user's id and password. Rest assured they are not abused by me in any way and are stored with all the other private data in the application. I'd like to try to use something like OAuth, but would prefer to merely "ask" the phone to authenticate using the details you've already supplied it, and return me a key to use for the sync.
  7. Search/Filter. Could be nice to be able to press the search button, enter some text and get a list of bookmarks and folders that match.
  8. Integration of some kind with other android browsers. Would love to find a way to get the bookmarks and folders visible in some of the browsers. Dolphin looks to be promising especially since GoMarks appears to work with it.

It has taken me a significant amount of time to get this app to work, hence, it is a priced app in the market. Sorry if you are in a zone where you cannot access priced applications - you need to contact Google about that.

Enjoy! H.

Updated: 02 Oct to strikethrough out of date stuff.

5 comments:

  1. Database ID account error. Reset app does not help. Fix this pls or issue refund.

    ReplyDelete
  2. Hi Remco,

    It looks like Google have turned on something at their end in the last few weeks. I suspect your bookmarks are being encrypted now by Chrome. But unfortunately I can't [ currently ] crack Chrome's encryption! So either the app cannot receive any newly encrypted bookmarks, or an initial sync fails with a "database id error". I've raised a chrome bug and Google have confirmed this is the problem, but they won't say how to fix or work around it.

    Currently this has affected literally a handful of users - easily less than 1% of all my users.

    They either enabled it on your account at random, or you have signed into bookmark sync using a newer version of Chrome recently which automatically enabled encryption.

    I'm working on adding decryption to the app, but it might take several weeks due to the complexity - encryption isn't meant to be easy by design!

    If you have chrome 14 or better then I believe you can disable the encryption. If you have Chrome 13 then I'm afraid you'll have to wait until Google make Chrome 14 stable and give you the extra options - it's obvious they just auto-enabled it for some users with a recent point upgrade, but I don't know why!

    The list below looks long, but it's just verbose to be clear!

    IMPORTANT: Only do this if you have Chrome 14 or higher - in Chrome click on the wrench, then about Google Chrome and check the number there. If it says 13, this procedure will *not* work.

    IMPORTANT: Do *not* reset your Google data more than twice within the same day! Google has a limit to the amount of data it will accept in a day and if you perform too many resets, you will hit the Google throttle and your sync upload will be limited for several days or even weeks. Don't think that you can repeat this whole process and get a different result - you are unlikely to!

    1. In Chrome, go into the bookmark manager. Click on organise and export bookmarks. This is a backup just in case.
    2. In Chrome, disable the sync completely.
    3. In Chrome, goto google.com and sign in.
    4. On google.com, click on your name in the corner and choose account settings.
    5. Click on dashboard.
    6. You might need to login again.
    7. Scroll down to chrome sync.
    8. Click on "delete data".
    9. Wait a minute.
    10. In chrome, re-enable sync. (NOTE: If Chrome offers to encrypt your sync data, ensure you do *not* encrypt your bookmarks as ChromeMarks cannot crack Chrome's encryption!)
    11. Wait a minute.
    12. Go back to ChromeMarks.
    13. Reset ChromeMarks to default.
    14. Try another sync.

    Personally, I don't understand what benefit encrypting your bookmarks gives you. All communication with Google is via https. Chrome doesn't ask for a password when you start the browser, so if someone steals your pc, they will still have full access to your bookmarks. So I don't know what benefit it could possibly bring!

    PS. I'm happy to help, but I would suggest that in future you try to be less confrontational with your request. Asking for help to fix a problem by demanding a "fix or refund" is not the most helpful thing to do. You'll find most devs will ignore a request like that and you won't get help or a refund. Since most apps are the price of two cans of coke, most devs wouldn't care if one user is annoyed. Just trying to be nice.

    ReplyDelete
  3. Howard, I love this app. Do you think the error has anything to do with 2-step Verification?

    ReplyDelete
  4. Absolutely not.

    Google have confirmed this on the bug i raised ( http://code.google.com/p/chromium/issues/detail?id=95200 ) and it's an undocumented bug in the chrome sync server. Basically ll the messages sent to the server has version numbers on them. I try to keep these in line with stable chrome. The server knows that for the number that chromemarks is currently sending, itknows that equivalent version of chrome could not accept encrypted bookmarks. So it choose to not send any encrypted bookmarks when you sync. And if youclear and restart, it knows you can't accept the data so gives this database id error as soon as the first encrypted bookmark appears (which might be a few batches in).

    I'm working on the next release which will bringthe version numbers upto the same as chrome and also add decryption.

    2step has nothing to do with this. However, if you have just enabled 2step or just changed a passode then i strongly suggest rebooting your device and the google authenticator is the only thing that knows about 2step and it caches heavily except for a reboot.

    ReplyDelete
  5. Hi Anthony. Can you read through this doc [ http://chromemarks.userecho.com/topic/62370-3-bad-status-code-returned-while-fetching-a-batch-unexpected-response-from-google-http11-500-internal-server-error/ ] and follow the second chunk and that should allow you to turn off the encryption.

    ReplyDelete