<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Brilliance Oparaku</title>
    <description>The latest articles on Forem by Brilliance Oparaku (@brilliance).</description>
    <link>https://forem.com/brilliance</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F567830%2Fdc87d2e6-dff5-482b-843e-0438c7e9f0ad.png</url>
      <title>Forem: Brilliance Oparaku</title>
      <link>https://forem.com/brilliance</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/brilliance"/>
    <language>en</language>
    <item>
      <title>Introduction To Deep Learning</title>
      <dc:creator>Brilliance Oparaku</dc:creator>
      <pubDate>Fri, 24 Feb 2023 17:09:23 +0000</pubDate>
      <link>https://forem.com/brilliance/introduction-to-deep-learning-o31</link>
      <guid>https://forem.com/brilliance/introduction-to-deep-learning-o31</guid>
      <description>&lt;p&gt;If you've been on the internet recently, you must have used or interacted with a deep learning program. One of the more popular ones is "ChatGPT-3" which was released by OpenAI.&lt;/p&gt;

&lt;p&gt;In this article, we will be introducing this concept known as "deep learning". &lt;/p&gt;

&lt;h2&gt;
  
  
  What is deep learning ?
&lt;/h2&gt;

&lt;p&gt;Deep learning is a branch of machine learning that runs on artificial neural networks. &lt;br&gt;
These neural networks mimic the brain and learning patterns associated with it.&lt;/p&gt;

&lt;p&gt;The deep learning algorithms are inspired by the structure and function of the brain thereby mitigating explicit programming as it  learns to use data it receives over time, much like the human brain.&lt;/p&gt;

&lt;h2&gt;
  
  
  History
&lt;/h2&gt;

&lt;p&gt;Deep learning has been around for a while. Neural networks were a major area of research in both neuroscience and computer science until 1969. It didn’t thrive as it is now because there wasn’t a lot of sufficient data and processing power for this concept to thrive as we have nowadays.&lt;/p&gt;

&lt;p&gt;This tech enjoyed a resurgence in the 1980s but fell into eclipse again in the first decade of the century and has returned once again in what seems like a hype due to the rise in popularity of ground-breaking AI tools like DALL-E and ChatGPT, which are both products by Open AI.&lt;/p&gt;

&lt;p&gt;In the past ten years, the best-performing artificial intelligence systems, such as Amazon's "Alexa", Microsoft's "Cortana", Apple's "Siri" and Google's automatic translator, have all resulted from deep learning.&lt;/p&gt;

&lt;h2&gt;
  
  
  How do neural networks work ?
&lt;/h2&gt;

&lt;p&gt;Neural networks are a means of doing machine learning, in which a computer learns to perform tasks by analyzing past examples or data. Usually, data that is fed into these computers are hand labeled in advance for the computer to use these labels to identify similar patterns.&lt;/p&gt;

&lt;p&gt;An example of this is the image-recognition system which is fed with thousands or even millions of images of cars, cats, houses, and so on, depending on the goal to be accomplished with this system. The system will find visual patterns in the image that consistently correlate with specific labels.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Deep Learning Models Actually Work
&lt;/h2&gt;

&lt;p&gt;Deep learning models have the ability to learn from data continuously, and this makes them well-suited for tasks such as navigation, speech recognition, Natural Language Processing, image recognition, and more. &lt;/p&gt;

&lt;p&gt;To put things in perspective, deep learning is a subdomain of machine learning with accelerated computational power and very large data sets, and with this, deep learning algorithms can self-learn hidden patterns within data to make predictions.&lt;/p&gt;

&lt;p&gt;The underlying architecture for deep learning was inspired by the structure of the brain. For this reason, quite a few fundamental terminologies within deep learning can be mapped back to neurology. Similar to how neurons form the fundamental building blocks of the brain, deep learning architecture also contains a computational unit that allows the modeling of non-linear functions called perceptron. &lt;/p&gt;

&lt;p&gt;A neural network consists of thousands or even millions of simple processing nodes that are densely interconnected. The majority of today's neural networks are organized into layers of nodes and are "feed-forward", meaning that data moves through them in only one direction. An individual node might be connected to several nodes in the layer beneath it, from which it receives data, and several nodes in the layer above it to which it sends data.&lt;/p&gt;

&lt;p&gt;To each of its respective incoming connections, a node will assign a "weight". When the network is active, the node receives a different data item i.e., a different number over each of its connections, and multiplies it by the associated weight. It then adds the resulting products together, yielding a single number. If that number is below a particular threshold value, it passes no data to the next layer, and if the number exceeds the threshold value, the node "fires", which in today's neural networks means sending the sum of the weighted inputs along all its outgoing connections.&lt;/p&gt;

&lt;p&gt;While a deep learning model is being trained, all its weights and thresholds are initially set to random data to compensate for the unavailability of large data sets at the onset of the training.&lt;/p&gt;

&lt;p&gt;The training data is consistently fed from the input layer, passing through the hidden layers, which process most of the data getting multiplied and added together in complex ways to yield unique or highly accurate results according to each input. This process is repeated until the model consistently recognizes data with similar labels and, as such, yields similar outputs.&lt;/p&gt;

&lt;p&gt;In its most basic form, a neural network contains three layers: an input layer, a hidden layer, and an output layer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Applications of Deep Learning
&lt;/h2&gt;

&lt;p&gt;Deep learning as a technology is limitless and can be applied in almost any field. Some of these can include:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Image recognition&lt;/strong&gt;: it can be used to train models to recognize shapes, images, and objects as well as to understand content and context. This is already being implemented in Gaming, retail, and tourism.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Advanced Map Navigation&lt;/strong&gt;: Deep learning can be used to train advanced navigation systems. Some of this can be seen in Tesla cars and google's navigation systems.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Automatic text generation&lt;/strong&gt;: A collection of text can be fed into a deep learning model, word-by-word, or character-by-character. Sequentially, the model is capable of learning to spell, write sentences, punctuate, or even capture a particular style of writing.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Natural Language Processing&lt;/strong&gt;: Deep learning models are used to understand, generate and translate human languages. This can be done by feeding large amounts of vocal data sets to the model for training, repeating the process until the outputs become accurate and similar.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Robotics&lt;/strong&gt;: Deep learning models are used to train robots and improve their ability to perceive and interact with the environment. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Finance&lt;/strong&gt;: Deep learning models are used to analyze past data and make accurate predictions and also detect fraud.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;To wrap it up, deep learning is extremely powerful and can be used to achieve great things. There are still plenty of theoretical and moral questions to  be answered but armed with the information in this article, you are now ready to go deeper into your deep learning journey. Stay tuned for more articles in this series. Build "Deep" things.&lt;/p&gt;

</description>
      <category>docker</category>
    </item>
    <item>
      <title>Introduction to Data Structures and Algorithms</title>
      <dc:creator>Brilliance Oparaku</dc:creator>
      <pubDate>Mon, 26 Dec 2022 09:31:03 +0000</pubDate>
      <link>https://forem.com/brilliance/introduction-to-data-structures-and-algorithms-5b6</link>
      <guid>https://forem.com/brilliance/introduction-to-data-structures-and-algorithms-5b6</guid>
      <description>&lt;p&gt;Data structures can seem complex to grasp at first but understanding the concepts can allow us to write efficient and optimized computer programs. The key to understanding this amazing concept in programming is being consistent with practice as with every other thing.&lt;/p&gt;

&lt;p&gt;Learning data structures are also very useful for technical interviews and if you understand the patterns you will be a step ahead of the competition.&lt;/p&gt;

&lt;p&gt;In this article, you will understand the fundamentals of data structures.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is a data structure ?
&lt;/h2&gt;

&lt;p&gt;A data structure is a group of data elements that provide the most efficient ways to store and perform different actions on and with the data stored on a computer. A data structure is a collection of data values, the relationships among them, and the functions or operations that can be applied to the data.&lt;/p&gt;

&lt;p&gt;The choice of a good data structure makes it possible to perform a wide range of critical operations effectively. An efficient data structure utilizes minimal memory space and processing time.&lt;/p&gt;

&lt;p&gt;Data structures serve as the foundation for abstract data types, the abstract data type defines the logical form of the data type, and the data structure implements the physical form of the data type.&lt;/p&gt;

&lt;h2&gt;
  
  
  The need for data structures
&lt;/h2&gt;

&lt;p&gt;The structure of the data and synthesis of the algorithm are relative to each other. Data structures are necessary for designing efficient algorithms, for provision of reusability and abstraction. &lt;/p&gt;

&lt;p&gt;Data structures are critical for time-saving while performing operations such as storage, retrieval, processing, and manipulation of any amount of data. Some of the needs for data structures include: Efficient time utility, easy data representation, easy data organization and reduction in computer memory space requirement.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Types of data structures&lt;/strong&gt;&lt;br&gt;
There are two types of data structures; the linear data structures and the non-linear data structures. Let’s learn about their differences:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Linear data structures:&lt;/strong&gt; This is a type of data structure where data is arranged linearly or in a linear pattern. The elements are arranged so that an element is linked directly to the previous and next elements in the data set. Some examples are: arrays, lists, stacks and queues.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Non-linear data structures:&lt;/strong&gt; In this type of data structure, data is arranged in different dimensions such as one-to-one, one-to-many and many-to-many. Some examples are trees, graphs, and tables. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnwk43eskpofgw7j5lpkx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnwk43eskpofgw7j5lpkx.png" alt="Types of data structures" width="800" height="428"&gt;&lt;/a&gt;&lt;br&gt;
An image showing the linear and non-linear data structures&lt;/p&gt;

&lt;h2&gt;
  
  
  Breaking down the data structures
&lt;/h2&gt;

&lt;p&gt;In this section we’ll be going over some linear and non linear data structures.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Arrays&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Arrays are extremely powerful data structures that store a collection of similar data elements at adjacent memory locations.&lt;/p&gt;

&lt;p&gt;This implementation is necessary for the retrieval of elements stored at any particular index and storage of multiple items of the same type at once. This is done by adding an offset to the base value, which in most cases is the memory location of the first element of the array (usually represented by the name of the array).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Linked Lists&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Just like arrays, linked lists are linear data structures. Linked list elements are not stored at adjacent memory locations rather the elements are linked using pointers from the elements within the list.&lt;/p&gt;

&lt;p&gt;A linked list consists of nodes where each node represents a data field and a reference link to the next node in the list. There are different types of linked lists including &lt;code&gt;singly linked lists&lt;/code&gt; &amp;amp; &lt;code&gt;doubly linked lists&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Singly linked lists:&lt;/strong&gt; This type of linked list is unidirectional. It contains nodes that have a value field as well as a next field that points to the next node in the list. Some operations that can be performed on a linked list are insertion, removal, and traversal.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Doubly linked lists:&lt;/strong&gt; In this type of linked list, each node contains a value field, a next field, and a previous field pointing to the previous node in the sequence.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. Stacks&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A stack is a linear data structure that follows a specific order in which operations are running. The order may be LIFO (Last-In-First-Out) or FILO (First-In-Last-Out).&lt;/p&gt;

&lt;p&gt;In this type of data structure, all insertion and deletion operations are allowed only on one end, called TOP.&lt;/p&gt;

&lt;p&gt;A stack is an abstract data type (ADT) and can be implemented in most programming languages. It is named a stack because it behaves like a real-world stack e.g. a deck of cards or a stack of plates.&lt;/p&gt;

&lt;p&gt;The basic operations that can be performed in a stack are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Initialize:&lt;/strong&gt; Create an empty stack&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Push:&lt;/strong&gt; Add an item to the stack. If stack is full, return an overflow condition.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pop:&lt;/strong&gt; Remove the top item from the stack. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Peek or Top:&lt;/strong&gt; Return the top element of the stack&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;isEmpty:&lt;/strong&gt; Return &lt;code&gt;true&lt;/code&gt; if the stack is empty, else return &lt;code&gt;false&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;isFull:&lt;/strong&gt; Check if stack is full.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;4. Queues&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A queue is a linear list in which elements can only be inserted at one end, called the rear, and deleted only at the other end, called the front. Like a stack, a queue follows a specific order in which the operations are performed. The order is First-in-First-out (FIFO).&lt;/p&gt;

&lt;p&gt;A real-world example of a queue would be a consumer queue, where the first consumer is served first, and the next comes.&lt;/p&gt;

&lt;p&gt;Stacks and queues are similar, although one major difference is that in stacks, we remove the item that was most recently added, and in queues, we remove the item that was least recently added.&lt;/p&gt;

&lt;p&gt;The basic operations that can be performed in a queue are&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Enqueue:&lt;/strong&gt; Insert an element to the queue&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dequeue:&lt;/strong&gt; Remove an element from the queue.  if the queue is empty, then it is said to be an underflow condition&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Peek:&lt;/strong&gt; Retrieves the element at the front node of the queue without deleting it. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;isFull:&lt;/strong&gt; Validates if the queue is full.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;isNull:&lt;/strong&gt; Checks if the queue is empty.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Front:&lt;/strong&gt; Get the first item from the queue.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rear:&lt;/strong&gt; Get the last item from the queue. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;5. Binary trees&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A binary tree is a tree-type non-linear data structure with a maximum of two children for each parent, referred to as parents. Trees are multi-level data structures with a hierarchical relationship among their elements known as nodes.&lt;/p&gt;

&lt;p&gt;A binary tree is denoted by a pointer to the topmost node in the tree. If the tree is empty, that makes the value of the root &lt;code&gt;NULL&lt;/code&gt;. A binary tree node contains three main parts: Data element, Left (Pointer to the left child), and Right (Pointer to the right child).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Binary search tree&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A binary search tree is a binary tree with the following additional properties:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The left part of the root node contains keys less than the root node key&lt;/li&gt;
&lt;li&gt;The right part of the root node contains keys greater than the root node key&lt;/li&gt;
&lt;li&gt;There is no duplicate key present in the the binary tree&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;6. Heap&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A heap is a special tree-based data structure which is an almost complete tree that satisfies the heap property. Heaps can be of two types:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Max-Heap:&lt;/strong&gt; In a max heap, the value in each internal node is greater than or equal to the values in the children of that node. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Min-Heap:&lt;/strong&gt; In a min heap, the value in each internal node is less than or equal to the values in the children of that node.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;7. Graph&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A graph is a non-linear data structure consisting of vertices and edges. The vertices are sometimes referred to as nodes, and edges are lines or arcs that connect any two nodes in the graph. A graph fundamentally has two parts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Vertices:&lt;/strong&gt; These are the fundamental units of the graph. They can also be called nodes or vertexes. Every node/vertex can be labeled or unlabeled.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Edges:&lt;/strong&gt; These are drawn to connect two nodes in the graph. It can be an ordered pair of nodes in a directed graph. Edges can also be called arcs, and every edge can be labeled or unlabeled.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Graphs are very useful in real-life problems. They can be used to represent networks, and these may include paths in a city or telephone network, or circuit network. They are also used on social networks like LinkedIn and Facebook. On Facebook, each person is represented by a node that contains information like the id, name, gender, etc.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusions&lt;/strong&gt;&lt;br&gt;
In conclusion, data structures can be very useful and efficient in real world scenarios.&lt;/p&gt;

&lt;p&gt;It is very important to understand how data structures work, when and how to implement them to level up your skills and gain access to any esteemed tech companies. &lt;/p&gt;

&lt;p&gt;In the next article, I will cover the implementation of these data structures, so stay tuned. In the mean time, you can check out &lt;a href="https://www.udemy.com/course/js-algorithms-and-data-structures-masterclass" rel="noopener noreferrer"&gt;this course&lt;/a&gt; by Colt Steele on data structures and algorithms.!&lt;/p&gt;

</description>
      <category>watercooler</category>
    </item>
    <item>
      <title>How To Build A Progressive Web Application in 2022</title>
      <dc:creator>Brilliance Oparaku</dc:creator>
      <pubDate>Sat, 12 Nov 2022 20:18:10 +0000</pubDate>
      <link>https://forem.com/brilliance/how-to-build-a-progressive-web-application-in-2022-42a4</link>
      <guid>https://forem.com/brilliance/how-to-build-a-progressive-web-application-in-2022-42a4</guid>
      <description>&lt;p&gt;Mobile devices now account for over half of the web's traffic. This has led mobile apps to become a staple of usability and as such enforced the need for web applications to provide a native and traditional experience. There comes Progressive Web Apps (PWAs)! &lt;/p&gt;

&lt;p&gt;PWAs enable you to provide a mobile-app-like experience to users by implementing modern web technologies. This leads to a superior experience where your website or web app behaves like a mobile app but still runs in the browser under the hood. PWAs give you the ability to install your website on a mobile home screen, access your web app when offline, get push notifications and more. &lt;/p&gt;

&lt;p&gt;In this article, I’ll show you how to build a progressive web application. So, let’s get right into it. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prerequisites&lt;/strong&gt;  &lt;/p&gt;

&lt;p&gt;I understand you're excited about this but before you begin this tutorial, you'll need the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A web application or website (local or deployed)&lt;/li&gt;
&lt;li&gt;Good knowledge of javascript&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Setup&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In this tutorial, we're going to work with a basic HTML page with simple markup. Create a file named &lt;code&gt;index.html&lt;/code&gt; and paste the code snippet below into it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
  &amp;lt;head&amp;gt;
    &amp;lt;meta charset="UTF-8" /&amp;gt;
    &amp;lt;title&amp;gt;Dev Sprite PWA&amp;lt;/title&amp;gt;
    &amp;lt;link rel="stylesheet" type="text/css" href="style.css" media="screen" /&amp;gt;
    &amp;lt;script src="client.js"&amp;gt;&amp;lt;/script&amp;gt;
  &amp;lt;/head&amp;gt;
  &amp;lt;body&amp;gt;
    &amp;lt;div class="toolbar" role="banner"&amp;gt;
      &amp;lt;span&amp;gt;You are currently ONLINE&amp;lt;/span&amp;gt;
      &amp;lt;svg
        width="24"
        height="24"
        viewBox="0 0 24 24"
        fill="none"
        xmlns="http://www.w3.org/2000/svg"
      &amp;gt;
        &amp;lt;path
          d="M12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22Z"
          stroke="black"
          stroke-width="2"
          stroke-linecap="round"
          stroke-linejoin="round"
        &amp;gt;&amp;lt;/path&amp;gt;
        &amp;lt;path
          d="M2 12H22"
          stroke="black"
          stroke-width="2"
          stroke-linecap="round"
          stroke-linejoin="round"
        &amp;gt;&amp;lt;/path&amp;gt;
        &amp;lt;path
          d="M12 2C14.5013 4.73835 15.9228 8.29203 16 12C15.9228 15.708 14.5013 19.2616 12 22C9.49872 19.2616 8.07725 15.708 8 12C8.07725 8.29203 9.49872 4.73835 12 2V2Z"
          stroke="black"
          stroke-width="2"
          stroke-linecap="round"
          stroke-linejoin="round"
        &amp;gt;&amp;lt;/path&amp;gt;
      &amp;lt;/svg&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;div class="online-content"&amp;gt;
      &amp;lt;p&amp;gt;This is our website homepage.&amp;lt;/p&amp;gt;
      &amp;lt;a href="about.html"&amp;gt;About&amp;lt;/a&amp;gt;
    &amp;lt;/div&amp;gt;
  &amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Styling&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We'll also need the styling to make our page look good.  To do this, create a file named &lt;code&gt;style.css&lt;/code&gt; and paste the code snippet below into it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;:host {
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica,
    Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
  font-size: 14px;
  color: #333;
  box-sizing: border-box;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

.online-content {
  margin: 50px;
  padding: 15px;
  border: 1px solid #333;
}
.online-content a {
  margin-top: 10px;
}

p {
  margin: 0;
}

.toolbar {
  height: 60px;
  display: flex;
  align-items: center;
  background-color: #1976d2;
  color: white;
  font-weight: 600;
}

.toolbar span {
  margin: 0 30px 0 50px;
}

.toolbar.offline {
  background-color: #ff6969;
}

.content {
  display: flex;
  margin: 82px auto 32px;
  padding: 0 16px;
  max-width: 960px;
  flex-direction: column;
  align-items: center;
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Create Web App Manifest&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The web app manifest is a JSON file we will create at the root of our application that provides metadata to instruct the browser about how our PWA gets rendered on the end user's device.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Register Web App Manifest&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The manifest file is generally stored in the root of our application, so we can name it &lt;em&gt;anything.webmanifest&lt;/em&gt; or &lt;em&gt;anything.json&lt;/em&gt; and serve it with the media type of &lt;em&gt;application/manifest+json&lt;/em&gt;. To register the web app manifest we use the &lt;code&gt;&amp;lt;link&amp;gt;&lt;/code&gt; tag in the &lt;/p&gt; tag in our HTML document.&lt;br&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;head&amp;gt;
  &amp;lt;link rel="manifest" href="/manifest.webmanifest"&amp;gt;
&amp;lt;/head&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;In case some properties in the file are not set correctly, the user agent will fall back to the document metadata.&lt;/p&gt;

&lt;p&gt;The request for the manifest is made without any credentials (even if it is on the same domain). Therefore, if the manifest requires credentials, we have to add the attribute crossorigin="use-credentials"&lt;/p&gt;

&lt;p&gt;In our manifest.json&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;head&amp;gt;
  &amp;lt;link rel="manifest" href="/manifest.webmanifest" crossorigin="use-credentials"&amp;gt;
&amp;lt;/head&amp;gt;
{
  "name": "Dev'Sprite",
  "short_name": "DevSprite",
  "start_url": "index.html",
  "display": "standalone",
  "background_color": "#fdfdfd",
  "theme_color": "#db4938",
  "orientation": "portrait-primary",
  "icons": [
    {
      "src": "/images/icons/icon-72x72.png",
      "type": "image/png", "sizes": "72x72"
    },
    {
      "src": "/images/icons/icon-96x96.png",
      "type": "image/png", "sizes": "96x96"
    },
    {
      "src": "/images/icons/icon-128x128.png",
      "type": "image/png","sizes": "128x128"
    },
    {
      "src": "/images/icons/icon-144x144.png",
      "type": "image/png", "sizes": "144x144"
    },
    {
      "src": "/images/icons/icon-152x152.png",
      "type": "image/png", "sizes": "152x152"
    },
    {
      "src": "/images/icons/icon-192x192.png",
      "type": "image/png", "sizes": "192x192"
    },
    {
      "src": "/images/icons/icon-384x384.png",
      "type": "image/png", "sizes": "384x384"
    },
    {
      "src": "/images/icons/icon-512x512.png",
      "type": "image/png", "sizes": "512x512"
    }
  ]
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This manifest.json file contains some properties (mandatory and optional) that we'll be breaking down.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;name: The name displayed on the splash screen when the browser is launched.&lt;/li&gt;
&lt;li&gt;short_name: The name displayed underneath your app icon or shortcut&lt;/li&gt;
&lt;li&gt;start_url: The first page displayed when your app is opened&lt;/li&gt;
&lt;li&gt;display: This tells the browser how to display the app. Different modes like &lt;code&gt;minimal-ui&lt;/code&gt;, &lt;code&gt;fullscreen&lt;/code&gt;, &lt;code&gt;standalone&lt;/code&gt; and more. In this tutorial, our display mode will be the &lt;code&gt;standalone&lt;/code&gt; mode&lt;/li&gt;
&lt;li&gt;background_color: This tells the browser the background color of the splash screen&lt;/li&gt;
&lt;li&gt;theme_color: This will be the background color of the status bar when we open the app.&lt;/li&gt;
&lt;li&gt;orientation: This tells the browser the orientation of the app. Could be &lt;code&gt;portrait&lt;/code&gt; or &lt;code&gt;landscape&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;icons: This will tell the browser what icon to display on the app splash screen.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now that we have the web app manifest, we can now add it to the HTML file&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;link rel="manifest" href="manifest.json" /&amp;gt;
&amp;lt;!-- ios support --&amp;gt;
&amp;lt;link rel="apple-touch-icon" href="images/icons/icon-72x72.png" /&amp;gt;
&amp;lt;link rel="apple-touch-icon" href="images/icons/icon-96x96.png" /&amp;gt;
&amp;lt;link rel="apple-touch-icon" href="images/icons/icon-128x128.png" /&amp;gt;
&amp;lt;link rel="apple-touch-icon" href="images/icons/icon-144x144.png" /&amp;gt;
&amp;lt;link rel="apple-touch-icon" href="images/icons/icon-152x152.png" /&amp;gt;
&amp;lt;link rel="apple-touch-icon" href="images/icons/icon-192x192.png" /&amp;gt;
&amp;lt;link rel="apple-touch-icon" href="images/icons/icon-384x384.png" /&amp;gt;
&amp;lt;link rel="apple-touch-icon" href="images/icons/icon-512x512.png" /&amp;gt;
&amp;lt;meta name="apple-mobile-web-app-status-bar" content="#db4938" /&amp;gt;
&amp;lt;meta name="theme-color" content="#db4938" /&amp;gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This article covers the first step you need to carry out when creating a progressive web application. But there’s more you need to do to make it fully functional. I will cover the next steps in my next article so stay tuned for it. In the mean time, check out this &lt;a href="https://blog.heroku.com/how-to-make-progressive-web-app"&gt;article&lt;/a&gt; by Christine Dodrill to learn more about PWAs.&lt;/p&gt;

</description>
      <category>webapp</category>
      <category>tutorial</category>
      <category>javascript</category>
      <category>pwa</category>
    </item>
  </channel>
</rss>
