Skip to main content

Ola Gasidlo on the benefits of offline-first design

Why don't you introduce yourself?

I've been working as a frontend/JavaScript developer for around ten years. At the moment I mainly work on Hoodie, an open-source JavaScript library that gives you a complete backend setup, including a human API to make it really easy to use; and all the features you always need, like storage, email and user accounts. It's offline-first and you can host it yourself.

Why do you advocate offline-first? Surely, with 3G, 4G and Wi-Fi, we're online all the time?

In an ideal world, every one of us would (or at least, could) be online all the time. Realistically, we're still far from that: what if our traffic limits are reached? What happens if we are on trains and lose our connection every few minutes?

Or if our hotel Wi-Fi is expensive and we don't want to pay roaming costs in another country? Those are issues we all face, even in the wealthy countries many of us live in. And the situation is way worse in rural areas and countries with poor or no network coverage. Our discussions with people from all over the world have shown that this is a global problem which won't just solve itself.

The applications we build have to get away from the desktop mindset of permanent, fast connectivity by accepting that being offline is not a bug, but a reoccurring state. If you want more information, Alex Freyerke has written an amazing blog post on the subject.

Can you give an example of how offline-first design can improve user experiences?

Most of us use offline-first applications without necessarily being aware of it. Many email services let us write emails offline and send them out later automatically as soon as a connection is detected. Apps like Instapaper, Pocket and Watchlater also help us consume all content even when we are not online. Writing down notes during meetings with or creating lists with helps us stay productive without sending error messages as soon as our internet connection is lost.

But there's so much more room for improvement. Just think about Google Maps: what if it recognised that you were in a town you haven't been to before, cached the relevant maps, and made them available to you offline? What if there were timetable apps for festivals and conferences that were available even when the networks go down for the umpteenth time?

How did you get involved with OpenTechSchool?

When I moved to Berlin some years ago, I was overwhelmed by all the meetups and workshops, networking events and user groups. But after moving to Dortmund, I was back out in the cold again. By that time, OpenTechSchool Germany had been founded, and Jan Lehnardt encouraged me to start a local chapter here. That was a year ago. Since then, we have had several workshops for kids and adults, from beginners to pros, and meetups with amazing talks on topics like DalekJS, MongoDB, and OOCSS.

Do you think becoming a self-taught software engineer is a realistic goal?

I always thought so, because I kind of was one for a long time, and I seemed to be good at it. Still, three years ago, I decided to study computer science to learn new approaches to coding.

I think it's possible to teach yourself, but you need a solid base of knowledge that goes deeper than just working through some tutorials about frameworks and languages. Go to meetups and conferences, follow other developers on Twitter or meet them and work with them, do pair programming to exchange knowledge, and read blogs and books that go deeper. Never forget to challenge yourself every day, code a lot, and ask, ask, ask…

Words: Martin Cooper

This article originally appeared in net magazine issue 255.