Staying functional in bad network conditions
Beyond good, two-way communication with people, there are algorithmic things that we can do to compensate for bad Internet connectivity. This boils down to prioritization. In any nontrivial app, there is a large amount of data that we can cache. However, when network bandwidth is limited, we need to decide which data is most important and send this first.
In our to-do app, there are three types of data: images, maps, and text. Of these, text is low-bandwidth, maps are medium-bandwidth, and images are high-bandwidth. In addition, text is the highest priority and maps and images are the lowest priorities.
Thus, we should transmit text first. As maps and images are of equal priority but images are substantially larger, we should transmit maps second and images third. That's the relative priority of each format, but how do we decide which lists/items to cache?
One approach is to keep track of the most commonly viewed lists and cache these first. Another...