Software Dev

Building reliable apps on unreliable networks โ€“ Superhuman

This post describes how we detect and communicate network status as part of making Superhuman the fastest and most reliable email experience in the world. Our previous post described an offlineโ€ฆ
โ€” Read on blog.superhuman.com/building-reliable-apps-on-unreliable-networks-3f75743fc457

Summary

In this case, they detect online/offline state in a web browser mostly for the purpose of communicating that state to the user so they can tell what is going on.

The web app keeps track of network state. If a network request times out, the state is set to offline. Then it polls every 10 seconds to see when the network comes back online.

This approach seems alright for a webapp, but in a mobile app I think we’d avoid polio every 10 seconds to see if the app is online. Perhaps poll on the next natural network request instead, or trigger on events such as view-will-appear or return-to-foreground.

Software Dev

How to Design Offline-first Approach in a Mobile App – net guru

Nowadays, almost everyone has access to either wireless network or the mobile network. Does it mean that we shouldn’t be concerned with the availability of network when making mobile apps?
โ€” Read on www.netguru.com/blog/how-to-design-offline-first-approach-in-mobile-app

Great overview of building an app that works offline first as a means to a great user experience.

The offline-first approach is not the universal solution to every problem you will experience with unreliable network connectivity โ€“ it heavily depends on your appโ€™s requirements. It’s more like a design approach that lets you focus on what really matters to your end user: a robust app with a great user experience. 

The World

The Trouble with Manager Objects – Ben Sandofsky

Benjamin Sandofsky, a Software Engineer in San Francisco, California.
โ€” Read on sandofsky.com/blog/manager-classes.html

A technical pet peeve of mine, this post does a nice job articulating why “manager” classes in software design can be a problem. To me, a “manager” class is like saying, “this class does some stuff” and the stuff has no boundary. But what does this class do? What is it’s purpose? It might be a sign of an unfocused and unsustainable design.

Or as the post says:

Managers can be a symptom of poorly-defined responsibilities. When you think about it, the word โ€œManagerโ€ means nothing. In object oriented programming, every class is a manager. Cocoa Touch could have UIApplicationManager, UIViewManager, and even a humble NSStringManager.

Software Dev

The Many Offline Options for iOS Apps โ€“ Device Blogs โ€“ Medium

Offline mode is no longer just an extra feature you could choose to add to your app โ€” itโ€™s something many users expect. Iโ€™ve often seen developers force their favorite offline solution on a problemโ€ฆ
โ€” Read on medium.com/device-blogs/the-many-offline-options-for-ios-apps-2922c9b3bff3

Summary

Runs through Caches vs. Databases and when each is a better fit. Basically, databases are better for a finite set of data that you can save “all” of, perhaps a game of personal database. Caches are better for something that is too big / complex / dynamic to save “all” of, e.g. social media, web, etc.

Also covers the idea of using a queue (or EveneBus) for offline tasks and mixing strategies.