OutSystemsDev Zone

I Was Wrong About Offline

In the last few years, we (the engineers for a visual programming platform for creating enterprise apps) started receiving requests for our platform to enable the development of mobile apps that work offline.

I believed it was a fad and tried to convince everyone around me of that. Luckily, smarter people questioned my beliefs and led our product in the right direction.

This is not the first time I’ve been wrong. It’s part of being in a group that is known for forward thinking. “Being too far ahead is the same thing as being wrong.” I often say this with a bit of hidden pride because I like to picture myself as a visionary. I shouldn’t: in this case I was mostly just wrong.

All the Things I got Wrong

Let’s take a look at the list of misconceptions I had about offline.

4G Will Be Everywhere Soon — Wrong

I’ve been saying this for four years now, and I’ve been wrong every time. I’m an optimist, and I was biased because I live in a city with good coverage. But here we are with lots of places that don’t have 4G, and it’s almost 2017.

Developer Experience Is More Important Than UX — Wrong

Data synchronization is a pain, and I wanted to spare developers from suffering. But at the end of the day, if we don’t allow developers to provide the experience users need, we’re not doing anyone any favors.

Technical Architects Don’t Know What They Need — Wrong

Architects try to cover their bases and make sure the products they evaluate have everything they could possibly ever need. Sometimes they also focus on what’s trendy, and I believed “offline first” was just hype. I made the stupidest of mistakes: I thought I was smarter than them — I was dead wrong.

Offline Is For Rare Scenarios — Wrong

I’ve talked with several companies: one that sells lottery tickets across the US; an airport looking for an app to use on the tarmac; medical staff with apps used in hospital basements; companies in Africa, the Middle East and South America and so on.

One after the other, they told me they needed offline apps, but I stubbornly continued believing they were exceptions rather than the rule. It turns out that even if their apps are only a fraction of the large number created with OutSystems, these offline use cases are often the most important ones.

Local Data Is Only For Offline — Wrong

Yep, I got that wrong, too. I’m ashamed to admit this, but I didn’t realize immediately that having data cached on a device plays a crucial part in enabling apps to work really fast. And we need that speed to provide a great user experience.

Offline Can’t Be Done With Current Standards — Wrong

The standards we know and (sometimes) love were designed for online apps, not offline. HTML5 didn’t seem capable of doing offline properly. It turns out, though, that even when a technical challenge seems impossible, I should know better — there is no “impossible” for the OutSystems R&D teams.

JavaScripting Around It

JavaScript workaround

Several lines of hard-to-maintain code for offline

With these beliefs in mind, two years ago I used my JavaScript hacking hat to help create what I thought was a decent solution. We’ve shared it, and it’s being used in several apps. The problem is that, in all honesty, it’s not up to our standards. Making apps that are always simple to change is the core value of our platform and this is not the way to do it.

OutSystems 10: Visual Offline

Visual offline development

Visually model the UI, data and logic of offline apps.

With the release of OutSystems 10, we’ve now included local storage in the visual language, making it as easy to model as everything else. Logic that runs on the device is also modeled visually. Static resources are cached, so it’s possible to create a complete offline experience with little development effort.

Offline data caching

Network status detection and hooks to synchronize data are also included. Because all these features are completely integrated, it’s now easier to maintain apps built with them. It was a considerable R&D investment, one that no company had ever tried, but we’re proud we’ve done it right.

Learning from Mistakes

All those offline things I was wrong about have taught me a couple of important lessons.

Lesson #1: We live in the present. The future will be different from what any of us can imagine. We’re all here to make apps that improve users’ lives today, wherever they happen to be.

Lesson #2: Never give up on our core values. If we state that it’s possible to create very complex apps that are simple to change, we must keep our word.

Offline with OutSystems

Complex offline apps created with OutSystems

With OutSystems 10, we can now confidently say it is possible to keep our word, even for apps that need to work offline.

Want to try building offline experiences the OutSystems way? Our personal edition is free forever.

It takes a strong man to admit when he’s wrong about offline! Tell your friends: LinkedIn | Twitter |Facebook 

 

About the author

Tiago Simões

A hacker, a tinkerer, and a thinker, who believes in making development faster for existing developers, while making it possible for everyone else.

Comments

[…] can be done to prevent badly secured IoT gadgets from being misused for botnet attacks. I Was Wrong About Offline (1) It’s easy to dismiss “offline” functionality in apps as a relict of the past. […]

Leave Your Comment