For most of our computing history, our machines and our applications sat on a desk and never moved. We could count on a constant supply of power, resources, and network access. Developers didn't spend a lot of time planning for interruptions or failures with those resources. It was even common to have applications that worked completely locally, where we never had to think about the network.
Our goals for our apps should include, but not be limited to, the following:
- Easy access to restful services
- Fast response for our users
- Work offline
- Handle errors
Secondary goals include:
- Fast development time
- Easy maintenence
- Reuse existing libraries
Let's address those goals one at a time, and see how we can improve the state of our networked app. As usual, I'll be using a conference app based on TekConf.