YourQuote is an Instagram-like platform for writers, a mobile app that allows users from across the world to post their original writings as beautiful images instead of plain text. Recently, its founders moved to Solang Valley, Himalayas to operate their venture straight from the mountains. They wanted someone to help them with their website to make the content searchable online.

I am a software engineer with a passion for developing intuitive applications that are easy to use and could benefit those at the ‘bottom of the pyramid’. I have worked at PayPal as a front-end engineer for two years and at present I am exploring problems related to maternal and child healthcare in India. I am looking for some wicked-problems, whose solution could be thought of leveraging the digital innovations. Like all my fellow engineers, It was my dream to code from the mountains so this opportunity was particularly exciting to me. With recent projects like Messenger Lite and YouTube Go it’s quite clear that the two big internet giants are showing interest in developing applications to reach a broader audience with limited internet connectivity and low-end devices. It is, therefore, important to understand the true nature of the problem. That was another motivating factor for going to the mountains to code.

From here onwards, I am summarising my learnings of coding at the Himalayas.

Web is important

Yes, we are living in the era of mobile. Yes, Apps are cool. Yes, everyone wants a million downloads. But, the web is still alive and no one wants/have space for a zillion apps. The problem is even more severe at the bottom of the pyramid. The Web is and will continue to be the main channel for content discovery.

Missing the web is like missing an important gateway to your customers.

For getting discovered, Google is your popular cool friend. Even 60 years old “Babu Ji” living in the remote mountains knows about Google. Even the man who sells Maggie at the mountains is a user of Google maps.

That’s Babu-Ji (center) and Apekshita (who had come from Mumbai to lead YourQuote’s growth)

It’s a good idea to let your users/customers “explore” your content/products and decide whether what you offer is worth 5 MB of space on their device or not.

Network is the new bottleneck

The Web isn’t always blazing fast everywhere. For JS/CSS — Minify, uglify, gzip. (We are using gulp task for the same.) For Images — Compress the heck out of them. Tinypng, photoshop (save for web) are your friends. Don’t overload your client. If possible, Generate and cache images of different size on the server and render according to the device size.

Progressive enhancement

One of my mentors once told me “Everything can fail and will fail”.

JavaScript is no exception to this rule. Make sure if not everything, at least the core functionality of the web app is available without JS. When it comes to progressive enhancement, I take a middle ground. With projects like “Android one” etc, penetration of the smartphone is quite good. Again, network and bandwidth are your main enemy. In my opinion, server-side rendering of the main content is a must. Is that enough? That depends on your audience, time frame and the scope of your project.

When I visit a website, I do it (in most cases) because I need some information. Don’t assume that I should need JS or even CSS (yes, you can test your markup in Lynx) to get that information. This is my stand on progressive enhancement. I don’t consider myself a purist/progressive enhancement Nazi. At the same time, I don’t believe that “It’s ok to make websites that don’t work without JS”

Service workers

Cache as much as possible wherever and whenever possible. Use existing open source recipes according to the scope of your project. You spend hours in making that “404” page. Why not Spend some more and add a “no-network available” page as well. Close your WiFi & check out Web WhatsApp for some inspiration.

Google AMP

Accelerated Mobile Pages (AMP) is a great way to make content on your website accessible in an extremely fast way. I was on a slow connection for two weeks and I accessed various AMP articles served via Google’s cache. I loved the idea as a user with poor network connectivity. High likely your users also need it. It’s worth the little extra effort. To help ensure that your AMP implementation is working as expected , Search Console now has an enhanced AMP testing tool.

Frameworks and libraries

I believe in a bottom-up approach. Instead of starting with a massive boilerplate, we decided to go for the bare minimum. I am a big fan of ReactJS mainly because of its component level modularity. However, since this MVP had minimum requirements, we decided to keep react out. Our idea is, we will eventually introduce react once we have some complex component/feature to introduce. Eg. Online quote generator widget in our case. I understand, not starting with React while having plans of adding it later is debatable. But in our case technology was not the only blocker.

My opinion on frameworks and libraries is — “Keep them to a bare minimum”. So far all our code is in vanilla JS — ES6 transpiled using babel via a gulp task. For CSS, we started with skeleton.css to keep it minimal. We are using sass for modularity. We are using ES6 “fetch” API for service calls. However since “fetch” doesn’t offer a (clean) way to abort the HTTP requests, for live search (where we needed to reject the old requests when a user enters new query), we are using native XHR request wrapped inside an ES6 promise. So far we are not using any framework. The only library we are using is to display a banner to download the iOS/Android app according to the user agent. That too is in vanilla JS. It’s a good idea to use existing open source projects instead of reinventing the wheel. All our JS is written using ES6 modules and is compiled and combined into a single minified JS file using a gulp task. As of now, the banner library is included separately but we plan to change that soon.

Final Thoughts

So should all web developers move to the mountains to seek divine wisdom? Hell no.

One of my friends (Keshav) rightly pointed out to me that “To code all you need is the right attitude, not the altitude”.

However, developing a website at the Himalayas taught me to be more empathetic towards my users. As Karolina Szczur rightly pointed out that the web isn’t uniform. I am in complete agreement with Nolan Lawson’s idea of treating the network as an enhancement. To reach the next billion, we need to focus on building web applications that can work in all network conditions.

PS: Work on YourQuote.in website is still in progress. Not everything described here has been moved to production yet. YourQuote.in is hunting for interns. If you are interested in contributing just drop them a mail at hi[at]yourquote[dot]in.