Getting Acquainted with Sync
If you are using Ashes on your iPad you probably have noticed that the sync is, well, always syncing. You may have even wondered why its syncs from the past to the present or why it has to sync every little item.
Let's give you a little background on the Fever° API. When Ashes 1.0 launched, Fever° was still on version 1.14. This version contained the first public API. We discussed what we were looking for in a Fever° app and mapped out a sync system that would handle everything in the fastest way we knew how. Although we only optimized for databases upwards to 20,000 items for the 1.0. At the time we thought this was large. When the 1.0 hit the App Store we discovered how mistaken we were by sizes of Fever° installations that people were reporting.
The Internals
If we want people to be happy with Ashes a lot of things had to get better. So we ended up rebuilding the sync system from the ground up to work completely differently. We ended up decreasing network connections, memory usage, and cpu usage.
The prior version of the Fever° API forced us to download every item in Fever° from the past to the present. This proved to be difficult to work with because Ashes is not useful without the newest items. Another difficulty we faced was the item limit per request. We are only allowed to download 50 items in a single request. So if you have 60,000 items you are calling the server at least 1,200 times. Many people reported sync times of at least 2 hours for databases this large.
Our single most important goal for Ashes 1.0.2 was to get people from launch of the app to reading instantly. The way we achieve this is by utilizing new Fever° API calls that allows us to download items selectively. We download the unread items and hot links first. This may still take a minute or two but we deliver the information to the interface when it is available.
The Plan
All of these performance enhancements will be available in Ashes 1.0.2. We are still working through our todo lists on the new update and will be starting beta testing early next week.
If you have any questions or want to be a part of the beta program, contact us (support@ashesapp.com or @ashesapp).
— Tom (@tomkrush)