- Offline First Web Development
- Daniel Sauble
- 628字
- 2021-07-30 10:30:48
Chapter 1. The Pain of Being Offline
Susan Hopkins is the VP of design at a tech start-up in Silicon Valley. At 63 employees and counting, her day is as much about hiring and culture as it is about design. In her 15-year career, she's seen plenty of both.
Right now, she's shepherding the design of the company's first 1.0 product. There are a lot of moving parts shared among product, design, development, marketing, sales, documentation, and support. She has to wear a lot of hats. She loves every minute of it, but it's a challenging job.
Fortunately, Susan has to-do lists. Everything in her life is organized in this way: shopping, work, personal projects, gift ideas, movies to watch, books to read, travel destinations, and more. As long as she can create and check off items from her lists, life is good.
Unfortunately, not all is well today. Her favorite to-do app, the place where she stores all of her lists, behaves poorly when offline. When the Internet connection goes down or becomes unreliable, Susan has the following problems:
- Her to-do lists fail to load.
- She doesn't have confidence that the to-do items she created on other devices are being shown on this one.
- The source of the truth is in the cloud. When she is offline, her devices tend to diverge from this source in reconcilable ways.
- Susan attaches photos and videos to her to-do items. Any data connection slower than 4G is an exercise in patience.
- She has been an evangelist for this app, which has gotten some of her friends to use it. They like sharing items as a group, but when their phones are offline, they can't.
- The app has a tendency to show scary error messages. They make her think that she's lost some data. Sometimes she has, but it's never easy to tell.
Susan closed her laptop lid. The conference's Wi-Fi was really bad this year. Susan wasn't the kind to give up easily, but you can't be productive on an unreliable Internet connection. Fifteen disconnections in one hour? Really? A few seconds ago, her to-do app crashed, losing the last fifteen minutes of work. Just great!
She opened her phone. No Signal showed prominently in the upper left corner. No luck there either. Bother.
This seems to happen all the time lately. Her rural home is in a dead zone. Her commuter bus spends twenty minutes out of every hour in tunnels and behind mountain ridges. She encounters infamously bad Wi-Fi at every other Airbnb accommodation. Even at work, her Internet connection seems to go down once a week—and always at the worst times.
It wouldn't be so bad if my applications handled these situations gracefully, she thought; but they don't. They crash, and stutter, and freeze, and lose my data, and raise my blood pressure.
To be fair, not every application is that bad. E-mail is generally solid, e-readers have all the content that I want, already cached, and my office suite doesn't care at all. However, this to-do app drives me crazy, and it's not the only app that is unreliable. Social apps, mapping apps, audio streaming apps—they all have the same problems.
A thought occurred to her.
What if a proper offline experience was the starting point? What if developers made offline functionality their top priority instead of the first feature to get cut? What if we lived in a world that was optimistic about fast, reliable, and ubiquitous Internet connectivity but didn't assume its existence? People would find their apps more useful and have less frustration in their day-to-day tasks.
Phone and laptop forgotten for now, Susan pulled out her sketch pad and a black marker pen. She started drawing.
- Manga Studio Ex 5 Cookbook
- 信息可視化的藝術:信息可視化在英國
- Network Automation Cookbook
- Magento 2 Development Cookbook
- Learning AndEngine
- Nexus規模化Scrum框架
- 3ds Max印象 電視欄目包裝動畫與特效制作
- HTML5+CSS3+jQuery Mobile APP與移動網站設計從入門到精通
- Java程序設計實用教程(第2版)
- C語言程序設計
- Mastering R for Quantitative Finance
- 面向物聯網的Android應用開發與實踐
- 嵌入式Linux與物聯網軟件開發:C語言內核深度解析
- 邊做邊學深度強化學習:PyTorch程序設計實踐
- Learning Behavior:driven Development with JavaScript