Introduction to Reporting API

There are many errors that can prevent your users from enjoying the best experiences on your website. CORS errors, deprecations, browser interventions, network errors are just some of the errors that your users may encounter. 

With the reporting API, your browser will now send details of errors or warning directly to your server so that you can get notified and know exactly what errors your users are facing.

Support

The reporting API is still very new with very few browsers supporting it. On chrome, you need to enable the below run time command line flag to use the API.

--enable-features=Reporting

Usage

To use the reporting API, you need to add the Report-To header, which can contain one or more objects which describes an endpoint group for the browser to report errors to

The basic format of the header is as follows


Report-To: {
    "group": "default",
    "max_age": 10000000,

  "include_subdomains": true,
    "endpoints": [{
       "url": "https://yoursite.com/errors-reports"
    }]
}

The group attribute specifies a name to be given to the type of report, its default value is “default”

The max_age attribute is used to define the lifetime to report errors to the endpoint

The include_subdomains attribute is used to specify whether data from the subdomains must be sent to the endpoint or not

The endpoints attribute is an array of urls which are the actual urls that data will be sent to when your user encounters an error or warning. The browser will send data to only one endpoint, so the array can include fallback urls in case your main url is offline.

The reporting API will send the data to your server endpoint in a post message with the following format

POST /error_url 
HTTP/1.1
Host: yoursite.com
Content-Type: content_type
[{ 
"type": "error_type", 
"age": 10, 
"url": "url_of_page_where_error_occurred", 
"user_agent": "
Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like ....", 
"body": {    "blocked": "blocked_url",   
"directive": "script-src",   
"policy": "script-src 'self';
object-src 'none'",   
"status": 200,   
"referrer": "https://evil.com/" 
}
}, } 
...}]

You can find more information about the reporting API here.

Group video calling

 Love getting friends and family in one place for regular catch ups. Need to hold an meeting quickly or on the go. 

Livewire has simplest, high quality video group calls, starting a call take only a few seconds and you can invite all your friends in a snap.

Continue reading Group video calling

Native vs Hybrid App Development

Hybrid Apps normally use one code based comprised of web technologies like HTML, CSS and javascript and run in on a webview. The advantages of Hybrid apps are that now you only need to maintain one codebase for multiple platforms – Android, iOS and the Web.

Native apps are built using the specific programming language for the platform, so for Android you would use Java or Kotlin . For iOS , you would use Swift or Objective C.

Continue reading Native vs Hybrid App Development

An Introduction to WebWorkers

JavaScript is single threaded, all your code runs on the main thread. Now if you run some CPU intensive task like compressing a large file, the browser will become unresponsive while it performs the task. To overcome this, we use WebWorkers.

WebWorkers are external JavaScript files that run in a separate thread, so that you main thread can remain free to process user input.

Continue reading An Introduction to WebWorkers

Introduction to IndexedDB

Relational Databases like MySQL are great for storing , updating and reading data. Though they come with two disadvantages. 

  • Since the databases reside on the server, fetching and updating data depends on the quality of the user’s internet connection. If the user has slow internet, it will take much longer to data to be fetched and updated.
  • Also when the user loses connectivity, there is no way to connect to the database until the connection is restored

IndexedDB is a JavaScript-based object-oriented database which runs client-side on your browser, so it works in bad networks or when the user is offline. IndexedDB stores data as key value pairs, key can be any string, value can be any object. IndexedDB also indexes  data stored so that you can perform high performance searches on the data. IndexedDB also supports transactions

Continue reading Introduction to IndexedDB

An introduction to Gulp

Gulp is one of the many build tools available that allows you to automate many of the repetitive or painful tasks.

To get started using gulp, you first need to install npm, you can install npm along with nodejs by following the official site. 

Continue reading An introduction to Gulp

An introduction to ES6

ES6 also know as ECMAScript 2015 and JavaScript 6 is the 6th major release of the ECMAScript language specification.

ECMAScript is a Standard for scripting languages and JavaScript is the most popular implementation of the ECMAScript Standard. ES6 introduces some new features which makes programming in JavaScript better.

Continue reading An introduction to ES6

Promises in JavaScript

What are promises?

A promise is an object whose value will be determined in the future.

Lets look at an example:

Continue reading Promises in JavaScript

The Rise of the home-grown messenger

(Edited Transcript)

Hello everybody! Thank you for taking the time to watch this short video. Today I want to talk about home grown messenger applications. As you might have followed in the news, there is this recent company, a large FMCG company based out of India, which launched their messenger application. Unfortunately it had to be taken off the play store due to certain issues, but I think that takes nothing away from the fact that an effort has been made to provide an ‘Indian’ alternative to messaging apps.

We all know that we probably use WhatsApp and other messaging applications more than we use traditional sms and calling. More and more people not only use these platforms to share text messages, but also to do voice calls, and increasingly video and group video calls.

I want to share 3 main points today as to why it is important and it is critical, that we have home grown apps especially in the messaging space, coming out of India.

  1. Product Development – The very first point I would like to say is that, building out a home grown messenger is vindication of the fact that we can build amazing products. As you know, it is easy to build a ‘CRUD’ app –  Create, Read, Update, Delete kind of apps, where they are generally text driven, some data being saved in a database, some manipulation, and throwing out some data, typically in English.                                                                                                                                                                                                                                                   While this has been the kind of applications that people have been building for a decade now, the future or the next billion users, definitely are going to come from voice and video enabled platforms. So firstly, it is a great statement in product development, if we can build such messenger applications out of India.
  2. Security and Privacy – As you know the next war, if there is going to be one, is not going to be fought on the battleground, or in cities. Clearly, the next wars are going to be proxy wars, or wars on information, or misinformation.  It is extremely critical that India has access to its own data, the kind of quality and conversations that happen on these messaging platforms, and more importantly, when you have a business model that is driven around advertising, it is very obvious that you will be used as the product. Things that you share, who you are, what you buy, what you talk about, whom you talk to, all become critical in targeting ads, whether through that platform, or through their sister concerns.                                                                                                                                                                                                                     So it is critical that we have a secure messaging application, much like a telephone, where there was no real opportunity to target ads based on conversations. But since this is completely based on the internet, or cloud based voice and video communication , we become the target to a lot of ads that infringe on our privacy. So the moment you have a non-advertising based model, where the focus really is  to just connect people to be able to communicate, I think we have a lot more secure ground on which to operate. 
  3. Localization – The third, which I think is most important, especially when it comes to a country like India, where less than 10% of our population knows English, it is critical that we have a localised element to our apps. Some of my relatives, and maybe your relatives, prefer peaking in their native languages, or their mother tongue, and these are only possible with voice and video solutions.                                                                                                                                                                                                                                                                                    We also see a bigger opportunity here. Commerce, in the future is not going to be done on purely text driven platforms or websites, where you can see an image and see some description, and you go ahead and and add that product to cart. These will happen in a way that replicate real life, much like this, where you can have a conversation with somebody at the other end, without fear that the conversation is used for other purposes.

To sum up, I think it is extremely important that we have more apps, more messaging apps coming out of India, and the next few years are going to be defined by what Indians are building around this space.

Looking forward to your thoughts on this, on whether we really need an Indian messenger, and whether we have the wherewithal to build such solutions from India. Thank you!

Introduction to Redis

Redis is an open source, in-memory data structure store which is commonly used as a database, cache or a message broker.  Since data is stored and retrieved in memory, operations are very fast with a time complexity of O(1).

Continue reading Introduction to Redis