<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Jaidev Singh Bhui on Medium]]></title>
        <description><![CDATA[Stories by Jaidev Singh Bhui on Medium]]></description>
        <link>https://medium.com/@jaidev.bhui?source=rss-15441f5aeec4------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*zaZZX4ddfS3WoQhCn2FXGQ.jpeg</url>
            <title>Stories by Jaidev Singh Bhui on Medium</title>
            <link>https://medium.com/@jaidev.bhui?source=rss-15441f5aeec4------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sat, 14 Nov 2026 16:16:14 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@jaidev.bhui/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com/" rel="hub"/>
        <item>
            <title><![CDATA[7 Projects You Can Build to Learn React in 2021]]></title>
            <link>https://blog.devgenius.io/7-projects-you-can-build-to-learn-react-in-2021-246122ffbd6f?source=rss-15441f5aeec4------2</link>
            <guid isPermaLink="false">https://medium.com/p/246122ffbd6f</guid>
            <category><![CDATA[nodejs]]></category>
            <category><![CDATA[web-development]]></category>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[frontend-development]]></category>
            <category><![CDATA[react]]></category>
            <dc:creator><![CDATA[Jaidev Singh Bhui]]></dc:creator>
            <pubDate>Wed, 01 Sep 2021 07:37:54 GMT</pubDate>
            <atom:updated>2021-09-01T07:37:54.631Z</atom:updated>
            <content:encoded><![CDATA[<p>Become proficient in using React by building and learning from beginner to advanced level React projects</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*JAWv1XVdUpsR5Qwf" /><figcaption>Photo by <a href="https://unsplash.com/@jstrippa?utm_source=medium&amp;utm_medium=referral">James Harrison</a> on <a href="https://unsplash.com/?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><p>React is one of the most in-demand web technologies to learn in 2021, and has a very large community, and lots of jobs too.</p><h3>What is React?</h3><p>In case you don’t have any prior knowledge about React and decided to read this article, this section is for you.</p><p>React is a Javascript library popularly used by new-age frontend web developers. It is a great choice for creating smooth user interfaces and front-end development of web and mobile applications.</p><p>What makes React so popular is that it’s easier to grasp than other frameworks and libraries — which is <strong>good for beginners</strong>. It is also because of its blazingly fast performance with help of Virtual DOM.</p><p>Other Javascript frontend libraries and frameworks include Angular, Vue, jQuery, etc.</p><h3>When to learn React?</h3><p>One should start learning React (or any other Javascript library or framework for that matter), after having clear fundamentals and good control over HTML, CSS, and vanilla Javascript.</p><p>It is recommended to learn and have experience with Javascript first, because React is built upon it, and you should definitely build some projects using pure vanilla Javascript.</p><p>Most interviews or coding rounds for front-end developer roles ask candidates not to use any libraries or frameworks and test their skill in using pure Javascript.</p><h3>Top Javascript projects using React</h3><p>The below projects are ordered based on their difficulty and complexity level, with beginner-friendly projects being covered first, and then gradually we would move onto some advanced projects.</p><p>You will find each of these projects (and more) in Crio Projects Hub. All projects available in Crio Projects Hub are methodically explained in a step-by-step manner and will guide you to complete the projects on your own. The best part about these projects is that they are absolutely free!</p><p>Dive in and find out which project you will be working on first :)</p><h3>Project 1: Rat in a Maze</h3><p>Difficulty: Beginner<br>Time required: 10 hours</p><p>This is a simple React web app, which displays all the possible ways a rat can navigate its way out of a square maze while avoiding all the obstacles which come in its way.</p><p>It is an interesting project to challenge your problem-solving skills as it visualizes the famous Rat in a Maze problem.</p><p>While building this project, you will extensively apply important programming concepts such as <strong>Recursion and Backtracking, </strong>as well as get hands-on with the basis of React.</p><h3>Project 2: Markdown Editor</h3><p>Difficulty: Beginner<br>Time required: 5 hours</p><p>Markdown is a way to style text on the web, which has its own way of writing or a “syntax”. Many people write blog posts, jot down their thoughts, or create notes for a subject using markdown.</p><p>You might’ve encountered markdown files while creating a repository on GitHub and creating the README.md file to describe that repo.</p><p>This is a web application that can be used to create and edit Markdown files.</p><p>It is a simple and fun project to implement and gain a deeper understanding of creating <strong>custom hooks</strong>, and working with <strong>Context API</strong> and <strong>React markdown</strong>.</p><h3>Project 3: Resume Builder Web Application</h3><p>Difficulty: Beginner<br>Time required: 15 Hours</p><p>Have you ever wanted to automatically generate resumes by using amazing templates? Or considered working on a project to build your own resume?</p><p>If so, this is your opportunity to grab the idea and start building a handy solution.</p><p>In this project, you’ll get to create <strong>multi-step forms using React</strong>, styling the components using <strong>Material UI (a UI library)</strong>, and learn some basics of <strong>Node.js</strong>, used on the server-side.</p><h3>Project 4: Online Code Editor</h3><p>Difficulty: Intermediate<br>Time required: 35 Hours</p><p>This is a great project for frontend developers to showcase their skills and in turn, build something useful for the community.</p><p>In this project, you will build an online code editor that works exactly like codepen. It’s a great project to understand how codepen works and also highlight valuable skills in your resume.</p><h3>Project 5: 450 DSA Tracker</h3><p>Difficulty: Intermediate<br>Time required: 40 Hours</p><p>As a developer, you might have been solving DSA (Data Structures and Algorithms) problems, and you might have also experienced the need for a checklist or a tracker for tracking your progress.</p><p>If you relate to this, the 450 DSA tracker is just what you need to build.</p><p>As you build this project, you’ll learn about <strong>IndexedDB</strong>, building <strong>custom context APIs</strong>, creating <strong>custom hooks</strong>, and <strong>Typescript</strong>.</p><h3>Project 6: Slack clone using React</h3><p>Difficulty: Advanced<br>Time required: 80 hours</p><p>If you’re an advanced developer looking for a challenging and noteworthy project, this one is for you. Building a clone of a popular messaging and collaboration app such as Slack will help you grow relevant skills such as React-Redux, Firebase fundamentals, website hosting, and more.</p><p>As you finish developing this project, you’ll be able to flaunt a messaging app that is functionally similar to Slack. This is a great project to include in your resume and impress interviewers with your work.</p><h3>Project 7: Amazon clone using React</h3><p>Difficulty: Advanced<br>Time required: 100 Hours</p><p>Nowadays, new businesses and well-established ones too, convert their commerce to e-commerce as that provides a more accessible platform for trading goods and conducting business with customers.</p><p>For some businesses, e-commerce is the sole source of income.</p><p>As more businesses are shifting online, the demand for developers with a knowledge of building e-commerce websites is growing in the tech industry. This project is your first step to building an entire e-commerce application all by yourself.</p><p>By the end of this project, you’ll end up with a clone of the famous e-commerce platform Amazon, while also learning more about <strong>Firebase, Stripe payment gateway integration, Context API, React Router,</strong> and <strong>Deployment of a React App.</strong></p><p>By the end of building all these projects, you’ll have a better understanding of React, more confidence in yourself about building things on your own, and great projects to showcase on your resume! If you’re excited to build any of these projects, these projects come with a step-by-step guide. Head over <a href="https://www.crio.do/projects/category/react-projects">here </a>to know more.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=246122ffbd6f" width="1" height="1" alt=""><hr><p><a href="https://blog.devgenius.io/7-projects-you-can-build-to-learn-react-in-2021-246122ffbd6f">7 Projects You Can Build to Learn React in 2021</a> was originally published in <a href="https://blog.devgenius.io/">Dev Genius</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Top 10 Real-World Applications of Python]]></title>
            <link>https://medium.com/pythoneers/top-10-real-world-applications-of-python-b33e52db415f?source=rss-15441f5aeec4------2</link>
            <guid isPermaLink="false">https://medium.com/p/b33e52db415f</guid>
            <category><![CDATA[web-development]]></category>
            <category><![CDATA[web-scraping]]></category>
            <category><![CDATA[python]]></category>
            <category><![CDATA[machine-learning]]></category>
            <category><![CDATA[django]]></category>
            <dc:creator><![CDATA[Jaidev Singh Bhui]]></dc:creator>
            <pubDate>Wed, 25 Aug 2021 17:00:15 GMT</pubDate>
            <atom:updated>2021-08-25T17:00:15.390Z</atom:updated>
            <content:encoded><![CDATA[<p><em>Learn about interesting real-world use cases of Python and what makes it so useful.</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*pg0--ovYvm0JZIC9" /><figcaption>Photo by <a href="https://unsplash.com/@artturijalli?utm_source=medium&amp;utm_medium=referral">Artturi Jalli</a> on <a href="https://unsplash.com/?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><p>Python is one of the most popular languages in today’s world, and it is also most in demand, along with Javascript. This is simply because of its easy-to-learn syntax, user-friendly internal <a href="https://www.crio.do/blog/what-is-an-api/">APIs</a> and libraries, and also because it runs on all major operating systems like Windows, Linux, and iOS.</p><h3><strong>What makes it useful?</strong></h3><h4><strong>Easy to Understand</strong></h4><p>Python was created in 1989 by Guido Van Rossum and stresses the DRY principle (Don’t Read Yourself), which has made it a more readable language. Many people are introduced to the programming world through Python simply because of its easy-to-understand syntax, which is very close to English.</p><h4><strong>High-Level Language</strong></h4><p>Python is a High-Level Language like Javascript and Java, which reduces the developer’s effort as we don’t need to remember its system architecture, or manually manage memory allocation.</p><h4><strong>Portable</strong></h4><p>A Python program written on a Linux-based system can run on a Windows machine, or any other major OS and vice versa. This makes it a highly portable language.</p><h4><strong>Extensible</strong></h4><p>Python is also an extensible language, which means you could use Python in other languages like Java, which makes the code reusable.</p><h4><strong>Open Source</strong></h4><p>Python is an open-source language, which means it is freely available to everyone, anyone can have a look at its internal code and implementation. Also, anyone from the developer community can make changes to the language and improve its features.</p><h4><strong>Huge Collection of Libraries</strong></h4><p>As it comes with a vast collection of libraries, Python finds its use in a variety of applications including web browsers, databases, image manipulation, data science, artificial intelligence, and many more.</p><h3><strong>Where is Python applied?</strong></h3><p>As told earlier, Python is one of the most in-demand languages and has many applications in the real world. The most popular use cases are listed here:</p><h4><strong>Web Development</strong></h4><p>Python is one of the most used languages in the web world, thanks to frameworks and libraries like Django and Flask, which make application development a lot faster and easier. These frameworks provide security, scalability, and convenience out of the box, which is very commendable when compared to building an application from scratch.</p><p>Major organizations like Instagram, Pinterest, Udemy, and Coursera all use Django for their web applications.</p><h4><strong>Artificial Intelligence (AI) and Machine Learning (ML)</strong></h4><p>Python is the most preferred language for developing ML and AI applications, simply because it has a huge collection of libraries such as Tensorflow, Keras, etc, which make it convenient to use Machine Learning algorithms, using a simple syntax. The huge community supporting the language also helps a lot.</p><p>Top companies like Netflix, Google, and Facebook all rely on Python for ML and AI applications.</p><h4><strong>Data Science and Visualisation</strong></h4><p>When it comes to data science, Python again shines here with the help of its multiple libraries like Pandas, Numpy, etc. These libraries help in extracting valuable information from data. Furthermore, data visualization libraries like Matplotlib help a data scientist to visualize the data through charts and graphs.</p><p>Again, the top companies which use Python for ML and AI, naturally use it for data science applications as well.</p><h4><strong>Web Scraping</strong></h4><p>Python also comes in handy when we need to scrape or pull a large amount of data off websites, which could be used for creating a dataset or used in processes such as job postings, price comparison, sports score analysis, etc.</p><p>Beautiful Soup is a useful package used for web scraping.</p><h4><strong>Desktop Apps</strong></h4><p>Python is also used for developing desktop applications. Using libraries like Tkinter, Kivy, PyQT, etc we can develop interactive interfaces.</p><p>DropBox desktop client uses Python.</p><h4><strong>Game Development</strong></h4><p>Python is also used for developing video games using libraries such as Pygame, Panda3D, and Soya3D. However, Python performs poorly when there is a requirement for high-speed 3D rendering, which is limited by Python’s speed and memory constraints.</p><p>Games like Battlefield 2, The Sims 4, Vega Strike, and World of Tanks have been developed using Python.</p><h4><strong>Image Processing and Graphic Design</strong></h4><p>Surprisingly, Python also finds itself to be useful in Image Processing, Graphic Design, and even Computer Generated Imagery (CGI). It is used to build popular imaging software such as GIMP, Inkscape, and Scribus. Even Maya, Blender, and 3ds Max use Python.</p><p>A very popular use case of Python in the CGI world is that of Industrial Light and Magic, the studio which has created the FX for Star Wars and Star Trek.</p><h4><strong>Robotics</strong></h4><p>Python is pretty popular in the world of robotics, be it in development using Raspberry Pi hardware, or finding its use in Robotic Process Automation (RPA).</p><p>An industrial example of Python being used in robotics is in the development of robotic arms which can be used in tandem, developed by companies like Rozum Robotics.</p><h4><strong>Automation</strong></h4><p>When it comes to repetitive tasks, automation is generally the solution to get out of the boring loop, and what better than Python. There is almost no end to tasks which you could automate.</p><p>For example, Python scripts can be used to automate the deployment of applications, i.e. in DevOps. Another example where it could be used for personal interest is to respond to emails or get notified when your favorite pair of headphones on an e-commerce website are on sale.</p><h4><strong>Education Industry</strong></h4><p>Due to its easy-to-understand syntax, Python is generally the first language that people use to get into programming. It is also being adopted in middle and high school syllabi as it is easier for children to understand code in Python. Even analysts who have been working with just Excel and SQL can learn and get trained in Python to fully utilize its data processing capabilities.</p><p>We’ve had a look at all of the major use cases of Python in the real world, and also the companies using it. It is a must-have skill, as it has created a lot of jobs, and it would be in demand for years to come.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=b33e52db415f" width="1" height="1" alt=""><hr><p><a href="https://medium.com/pythoneers/top-10-real-world-applications-of-python-b33e52db415f">Top 10 Real-World Applications of Python</a> was originally published in <a href="https://medium.com/pythoneers">The Pythoneers</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Applying OOP in Real World Applications]]></title>
            <link>https://medium.com/swlh/applying-oop-in-real-world-applications-495c8ee4d946?source=rss-15441f5aeec4------2</link>
            <guid isPermaLink="false">https://medium.com/p/495c8ee4d946</guid>
            <category><![CDATA[abstraction]]></category>
            <category><![CDATA[encapsulation]]></category>
            <category><![CDATA[polymorphism]]></category>
            <category><![CDATA[object-oriented]]></category>
            <category><![CDATA[inheritance]]></category>
            <dc:creator><![CDATA[Jaidev Singh Bhui]]></dc:creator>
            <pubDate>Sun, 02 Aug 2020 13:33:52 GMT</pubDate>
            <atom:updated>2020-08-05T16:35:00.675Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/557/1*aG520I03R_xHdbd_gz5-Rg.png" /><figcaption>Source: <a href="https://francescolelli.info/tutorial/object-oriented-programming-a-curated-set-of-resources/">https://francescolelli.info</a></figcaption></figure><p>As a programmer, or a computer science student, you might’ve heard or know something about the terms which are shown above. Actually you <strong>should have</strong> knowledge about these if you claim to be working in the software development or computer science field. Also, there is a chance that you might not have fully understood when and where all these features are applied in real life. This article focuses on the application of the most used programming paradigm —<strong> Object Oriented Programming, </strong>in real world problems.</p><p>So, Object Oriented Programming(OOP) is a programming paradigm(philosophy), which is based on the concept of “objects”, which can contain data, in the form of fields, and code, in the form of procedures.</p><p>There are four basic principles of OOPs: <strong>Encapsulation, Abstraction, Inheritance, Polymorphism, </strong>which will be discussed in the following sections.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*C0AkB2rzHk5wlm4EUou7Qg.png" /></figure><p>I took part in Crio.do’s #iBelieveInDoing July challenge, in which we got to take part in some of their Micro-Experiences/Bytes focused on application of OOPs. I would recommend you all to go through that experience for some hands-on learning.</p><p>Here is a link to my previous article in the challenge on System Design: <a href="https://medium.com/@jaidev.bhui/a-high-level-view-of-cloud-computing-and-system-design-e56122326454">https://medium.com/@jaidev.bhui/a-high-level-view-of-cloud-computing-and-system-design-e56122326454</a></p><p>Let’s Get Started with OOP principles!</p><p>We’ll be taking the example of a chat app like Whatsapp.</p><h3>Encapsulation</h3><blockquote>the action of enclosing something in or as if in a capsule.</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/225/1*GkEkLHUsXjpbMJIr9edkNA.jpeg" /><figcaption>Source: <a href="https://www.geeksforgeeks.org/">https://www.geeksforgeeks.org/</a></figcaption></figure><p>As the definition says, enclosing something in a capsule, the meaning of encapsulation in OOPs is quite intuitive, just like the other OOP principles.</p><p>Encapsulation is, containing all important information inside of an object, and only exposing selected information to the outside world. Attributes and behaviors are defined by code inside the class template. It helps in emulating real world objects/entities.</p><p>For Example, If we are writing code for a messaging app, we would have a message class, which would contain all the information about a particular message being sent, like — receiver, sender, message content, message id — and all it’s methods inside a single entity.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/874/1*baTm9a9F14m8vRZCnR-4eg.png" /><figcaption>Encapsulation in Python</figcaption></figure><p>As we can see, all the attributes of the message are “encapsulated” together inside a bundle(class).</p><p>Encapsulation helps by:</p><ul><li><strong>Providing Security:</strong> to access any information about a message object we would have to go through the public getter and setter methods (setSender, setReceiver, getSender, getReceiver).</li><li><strong>Protecting developers from common mistakes: </strong>Only public fields &amp; methods accessible, so developers don’t accidentally change something dangerous.</li><li><strong>Protects IP: </strong>code is hidden in a class, only public methods are accessible by the outside developers</li></ul><p>What is the drawback if we don’t use encapsulation? — Duplication of code. Low maintainability. Inconsistent behavior. Difficult to test. Possible inappropriate access/modification from external methods.</p><h3>Abstraction</h3><blockquote>the quality of dealing with ideas rather than events.</blockquote><p>Going by the definition, this is exactly what a software or a product needs to have, for a better user experience, to be more user friendly.</p><p>What we mean by abstraction is, to hide all the complexities and implementations from the users, to make it easier for them to use it.</p><p>For example, if the user is driving a car, they don’t need to know how the clutch, brake or accelerator are working, but they are able to use them, to drive the car.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*k0l2oyxy5utoVlsA" /><figcaption>Photo by <a href="https://unsplash.com/@christianw?utm_source=medium&amp;utm_medium=referral">Christian Wiediger</a> on <a href="https://unsplash.com/?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><p>Similarly in our chat app, the user doesn’t need to know how the message is being sent to the receiver, they just need to push the send button, and the work is done. <strong>Hence, this focuses on the “idea” of sending a message, and not on the “event” or “implementation” of sending it.</strong></p><p>Another practical example of abstraction can be the Java Virtual Machine(JVM) — your code can use the exact same java methods irrespective of whether your code will run on Linux or Windows or any other OS. Underneath, a lot of things will change depending on the OS, which the user doesn’t need to know.</p><p>Why Abstraction is helpful:</p><ul><li><strong>Hide complex details from user</strong></li><li>To the implementers(programmers) of the class, it is useful since it provides them with the <strong>flexibility to change things as long as the method signatures don’t change</strong></li></ul><p>What is the drawback if we don’t use abstraction? — Low maintainability because responsibilities are not clearly differentiated. Higher Complexity with larger code bases because many objects interact with others and it becomes difficult to add functionality without impacting others.</p><h3>Inheritance</h3><blockquote>the action of inheriting(traits).</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/812/1*fLdgmOmVNgEBbj6ftoRTRg.png" /><figcaption>Source: <a href="https://codestall.wordpress.com/2017/09/20/inheritance-in-java/">https://codestall.wordpress.com/2017/09/20/inheritance-in-java/</a></figcaption></figure><p>Just like you inherit genes, features, traits from your ancestors, it is possible to inherit attributes, methods, data from one class to another.</p><p>Inheritance further strengthens the emulation of real world entities.</p><p>In our chat app, if we were to add some new features, like sending images or voice messages with the current code base, we would have to add new attributes particular to these new features, like image metadata, resolution, etc.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/424/1*i7qEJsrzygOij4AEC7o9ZQ.png" /><figcaption>Not a good way to implement</figcaption></figure><p>Now, we could add those attributes as shown above, but this makes the code less maintainable, like if there was a need to add another feature we would have to add another attribute, which would be present with empty values in other message types, like there is no role of audio duration in text messages, so such information has no use for text messages, and similar case can be made for images.</p><p>Also, we would have to create many different getter and setter methods in the same class for different type of messages.</p><p>So, to make this code easier to understand, develop and maintain, we should use inheritance.</p><p>We will create a base class Message and then extend that to different message type classes:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/645/1*v6d3DDR_w9DXngPPH1K5Dw.png" /><figcaption>Extending Base Message class</figcaption></figure><p>By extending the Message class, we can use all its fields in the child classes. This is helpful as all the message types have some common fields like sender and receiver.</p><p>Inheritance is useful:</p><ul><li><strong>It helps separate out common functionality and fields so that they can be reused across many other classes cleanly.</strong></li><li><strong>Avoids code redundancy.</strong></li></ul><h3>Polymorphism</h3><blockquote>a feature of a programming language that allows routines to use variables of different types at different times.</blockquote><p>Polymorphism means to have a function with same name performing a different task.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/408/1*vLM_tTuVTgMi1qpMn3Eu9g.gif" /><figcaption>Source: <a href="https://prpckx.wordpress.com/">https://prpckx.wordpress.com/</a></figcaption></figure><p>For example, in calculating area of a shape, for Circle it means pi*radius*radius, while for a rectangle it is length*breadth, similarly, in terms of speaking, for dogs it means to bark, while lions roar, cats meow, and so on.</p><p>Polymorphism is designing objects to share behaviors. Using inheritance, objects can override shared parent behaviors, with specific child behaviors. Polymorphism allows the same method to execute different behaviors in two ways: method overriding and method overloading.</p><p><strong>Method Overriding/Runtime Polymorphism</strong>: child class provides its own implementation of the method defined in the parent class.</p><p><strong>Method Overloading/Static Polymorphism</strong>: methods of same name, from the same class having difference in number and types of parameters.</p><p>Now in our app, let’s say, we don’t want to use the functionality provided by some of the methods in the base class, and want to implement our own functionality, by also not renaming the methods since that would mean changing all the client code that is presently invoking that method.</p><p>We would use Method Overriding, since we want our own implementation of the methods defined in the parent class.</p><p>In the base class, we are checking for validity of a message. Now, for Text Message it would be in terms of length, Image Message it would be in terms of its size. So, we should override this method to our needs in the child classes.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/858/1*Hh1oXaG1T1078f4MNnVfeQ.png" /><figcaption>Method Overriding/ Runtime Polymorphism</figcaption></figure><p>In the case of our app, currently there are only default constructors(taking no arguments), but if the clients of this class want to set it to some default value of their choice, we would need to use <strong>Method Overloading:</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/513/1*iWI19Scn08XPHYGM_Glbmw.png" /><figcaption>Parameterized Constructor</figcaption></figure><p><strong>Note: This form of method overloading is restrictive in Python since if you have two methods with the same name, only the second method definition holds good. The first one cannot be used.</strong></p><p>So to give you a better idea, here is an example of Method overloading in Java:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/842/1*us4BOxeLUZKlRhC_D_VBkA.png" /><figcaption>Method Overloading in Java (Constructor Overload)</figcaption></figure><p>Now, when an Object of class Message is made, if we provide the parameters inside the constructor, the new constructor would run, and set the values given.</p><p>Why to use polymorphism:</p><ul><li>Presents the ability to <strong>perform different actions using the same method signature.</strong></li><li><strong>Keeps code cleaner.</strong></li></ul><h3>Conclusion</h3><p>Object Oriented programming requires thinking about the structure of the program and planning at the beginning of coding. Looking at how to break up the requirements into simple, reusable classes that can be used to blueprint instances of objects. Overall, implementing OOP allows for better data structures and reusability, saving time in the long run.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/501/1*tOuFL9aD1Smy43uKq4zRIw.png" /><figcaption><a href="https://crio.do/">Crio.Do</a></figcaption></figure><p>All of this was part of the various “Bytes” by Crio, in which I had to #learnbydoing.</p><p>I definitely learned a lot after completing this Micro Experience, and think that Crio is doing a great job in this period of stress and the situation created by the covid pandemic, by creating such an interactive online learning experience.</p><h4>References</h4><ul><li><a href="https://crio.do/">https://crio.do/</a></li><li><a href="https://www.geeksforgeeks.org/">https://www.geeksforgeeks.org/</a></li><li><a href="https://www.freecodecamp.org/news/object-oriented-programming-concepts-21bb035f7260/">https://www.freecodecamp.org</a>/</li><li><a href="https://www.educative.io/blog/object-oriented-programming">https://www.educative.io/blog/object-oriented-programming</a></li></ul><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=495c8ee4d946" width="1" height="1" alt=""><hr><p><a href="https://medium.com/swlh/applying-oop-in-real-world-applications-495c8ee4d946">Applying OOP in Real World Applications</a> was originally published in <a href="https://medium.com/swlh">The Startup</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[A High Level View of Cloud Computing (and System Design)]]></title>
            <link>https://medium.com/@jaidev.bhui/a-high-level-view-of-cloud-computing-and-system-design-e56122326454?source=rss-15441f5aeec4------2</link>
            <guid isPermaLink="false">https://medium.com/p/e56122326454</guid>
            <category><![CDATA[cloud-computing]]></category>
            <category><![CDATA[system-design-interview]]></category>
            <category><![CDATA[aws-ec2]]></category>
            <category><![CDATA[load-balancing]]></category>
            <category><![CDATA[dns]]></category>
            <dc:creator><![CDATA[Jaidev Singh Bhui]]></dc:creator>
            <pubDate>Thu, 25 Jun 2020 18:32:16 GMT</pubDate>
            <atom:updated>2020-06-25T18:32:16.487Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*eokP21gBSp9C9WNJ" /><figcaption>Photo by <a href="https://unsplash.com/@pericakalimerica?utm_source=medium&amp;utm_medium=referral">Pero Kalimero</a> on <a href="https://unsplash.com/?utm_source=medium&amp;utm_medium=referral">Unsplash</a></figcaption></figure><p>No, not the literal cloud, but the trending tech word, which means the on-demand availability of computer system resources, especially data storage and computing power, without direct active management by the user.</p><p>Look, if you’re a budding developer (like me), who’s curious about the web, how web hosting works, what to do after buying a domain name, looking forward to getting into System Design, or even what happens after typing <a href="http://www.google.com/">www.google.com</a> in your browser, this article might push you in the right direction.</p><h3>Crio.Do: The Game Changer</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/501/1*tOuFL9aD1Smy43uKq4zRIw.png" /><figcaption><a href="http://www.crio.do/">www.crio.do</a></figcaption></figure><p>Crio.Do is really a game changer, when it comes to online learning platforms. Their Micro Experiences provide <strong>hands-on learning</strong> to developers, in a well structured, well documented way, with loads of reference materials. I would highly recommend you all to take part in at least one of their micro experiences.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*w5wPfMDhqSEh2zxOiAZDCA.png" /><figcaption>A look at the Micro Experience Dashboard</figcaption></figure><p>They distribute the learning experience into modules, making it easier to grasp concepts in a well structured manner. And there is a debrief after each module, where you’re asked some questions, based on the learning done.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*CV6B66tiRBmzwjSLreSElg.png" /></figure><p>I took part in Crio.Do’s <strong>#IBelieveinDoing</strong> challenge over the last weekend, and completed the amazing System Design Micro Experience, which is the main purpose of me even being here, typing this article.</p><p>QReview is another ME (Micro Experience) which was a part of this challenge, which focuses more on REST API calls, and working on the backend of a food review mobile app, which I had completed when I was part of the Crio Launch program.</p><p>But this article focuses more on the System Design ME, so we’ll go ahead with that.</p><h3>Let’s Start</h3><p>Let’s get on with the main subject of the article, which is to get a high level understanding of System Design.</p><p>I’ll follow the same modular plan created by Crio, consisting of 4 modules.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/801/1*e9yAiR-Wg9QaUicC8ui7iQ.png" /><figcaption>A look at the overall architecture we’ll be working on.</figcaption></figure><h4>Module 1: Host a webserver in cloud</h4><p>You might’ve heard of AWS, Google Cloud Platform, Azure and other cloud platforms. So, what these platforms do is, they provide you with computer system resources, especially data storage and computing power <strong>on demand</strong>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*12Xt85sbjbPyBaynfI1jkA.png" /><figcaption>I used EC2 from AWS, which is Elastic Cloud Computing, and provides us with Virtual Machine instances on demand.</figcaption></figure><blockquote>Virtual Machine(VM) is nothing but a <strong>virtual environment</strong> that functions as a virtual computer system with its own CPU, memory, network interface, and storage, created on a physical hardware system (located off- or on-premises).</blockquote><p>So, instead of buying a physical machine, you can use these VMs to do anything you want in cloud. The primary advantage is that they are pay-per-use. So, if you want a big VM today and a smaller VM tomorrow, that is totally possible!</p><p>Now, to use that Virtual Machine as a server, we would require an HTTP server, so we need to install <strong>Nginx </strong>on the VM, which is a web server which can also be used as a reverse proxy, load balancer, mail proxy and HTTP cache. <em>An alternative can be Apache server.</em></p><p>If you now go to the browser and type in the public IP address, you can see that now anyone in the world can access your server. (Provided the firewall allows these connections).</p><figure><img alt="Your VM is accessible now to anyone who has the IP address" src="https://cdn-images-1.medium.com/max/931/1*1Qy4dRMtOczwaW6i-Rl-lg.png" /><figcaption>Your server is accessible now to anyone who has the IP address</figcaption></figure><h4>Module 2: Host your site in a domain</h4><p>So, now you can access your server, job’s complete, right? Not quite.</p><p>What if you wanted your friend to see your website, you would have to send him/her these seemingly random numbers(IP address), which can be forgotten easily. You don’t remember Google’s IP address when you want to access it, right?</p><p>So, you need a domain name, a placeholder which points to the IP address of your server, so you don’t need to remember these random numbers, but just the name that’s pointing to it, which can be as simple as <a href="http://www.google.com./">www.google.com.</a></p><p>You can buy any domain name, and then add your server’s IP address to the A field.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*k26QdK8cHxsfPZpjNvXjSg.png" /><figcaption>You can have your domain name point more than one IP address (Look next section)</figcaption></figure><p>Now, when we enter <a href="http://www.google.com/">www.google.com</a> in our browser, what happens is, it is getting resolved to the IP address of one of google’s many servers. The system used for resolving this name is DNS.</p><blockquote>The Domain Name System (<strong>DNS</strong>) is the phonebook of the Internet. Humans access information online through domain names, like nytimes.com or espn.com. Web browsers interact through Internet Protocol (IP) addresses. <strong>DNS</strong> translates domain names to IP addresses so browsers can load Internet resources.</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/600/1*MyNSM2GXycFrsfi_duGq0A.gif" /><figcaption>A look at the network tab in developer tools shows what requests are sent to the server.</figcaption></figure><p>After you enter the domain name, there are name servers (NS) which resolve this to the IP address, and your browser sends an API GET request to the server, which further responds with HTML data(which you see being rendered in the browser), or JSON/XML data, etc.</p><h4>Module 3: Fun with Load Balancers</h4><p>Now that your website server has a name, you’re done, right?</p><p>Still no.</p><p>What if your website gets famous and everyone in the world tries to access it? Would your servers be able to handle the “load”? What if your server goes down?</p><p>So, we need to scale our system to cater the increasing demands of the users.</p><p><strong>Scalability</strong> is the property of a system to handle a growing amount of work by adding resources to the system. We can either scale horizontally (add more machines, more servers), or scale vertically (add more computing power, memory, resources to the existing machine/server).</p><p>Big companies like Facebook, Google, Twitter, all use horizontal scaling, as they have multiple servers around the world.</p><p>Here is a fun representation from <a href="https://blog.turbonomic.com/author/bunmi-sowande">Bunmi Sowande</a>’s blog on blog.turbonomic.com.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*vqmIgeJMuIsgfISNCKLx8w.png" /><figcaption>By <a href="https://blog.turbonomic.com/author/bunmi-sowande">Bunmi Sowande</a> (<a href="https://blog.turbonomic.com/blog/on-technology/the-essentials-of-database-scalability-vertical-horizontal">https://blog.turbonomic.com/blog/on-technology/the-essentials-of-database-scalability-vertical-horizontal</a>)</figcaption></figure><p>Okay, now we have our servers ready (horizontal scaling), but how would the users be directed to all these new servers?</p><p>We use something called Load Balancers to solve this problem.</p><blockquote>A <strong>load balancer</strong> is a device that acts as a reverse proxy and distributes network or application traffic across a number of servers. <strong>Load balancers</strong> are used to increase capacity (concurrent users) and reliability of applications.</blockquote><p>Load Balancers can be Software based or Hardware based, they can also be classified on the basis of what layer in the OSI Model they work on.</p><p>From AWS:</p><blockquote>Application Load Balancers are used to route HTTP/HTTPS (or Layer 7) traffic. Network Load Balancers and Classic Load Balancers are used to route TCP (or Layer 4) traffic.</blockquote><p>Load Balancers act as a traffic cop, which sit in front of our servers and route client requests responsibly. This is carried out in a manner in which, every user has a smooth surfing experience, and such that a single server doesn’t get overworked.</p><p>Now even if one of our servers goes down, Load Balancer can handle it.</p><h4>Module 4: Scale your server performance with CDN</h4><p>You might’ve used Facebook, Twitter or Instagram. There are hundreds of millions, or even billions of users. Now if such a huge user-base is requesting data, there would be a lot latency, and a lot delay in the server delivering the data to your browser or device, depending on your location.</p><p>But there doesn’t seem to be a huge delay (not considering your network speed).</p><p>This is caused by caching.</p><blockquote>Cache is a hardware or software component that stores data so that future requests for that data can be served faster.</blockquote><p>There is something similar happening here, with the help of a <strong>CDN (Content Delivery Network).</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/625/1*kC39nXgQ6CJlTH1yN3srIw.png" /><figcaption>Source: <a href="http://www.ileafsolutions.com/">www.ileafsolutions.com</a></figcaption></figure><p>To minimize the distance between the visitors and your website’s server, a CDN stores a cached version of its content in multiple geographical locations (a.k.a., points of presence, or PoPs). Each PoP contains a number of caching servers responsible for content delivery to visitors within its proximity.</p><p>There is another interesting thing, if we update the main servers, the cached resources, won’t be updated immediately, like in case of Facebook comments, where such an immediate consistency of data is not important, we can wait and update the cached instances some time later.</p><p>But what if it was a banking system? It would definitely cause problems, as one server would show different information from another server. So, here Immediate Consistency of data is required.</p><p>So, I hope some of the questions you had earlier, are solved now, or that now you have a better understanding of how the web architecture works at a high level.</p><p>All of this was part of the System Design ME by Crio, in which I had to #learnbydoing.</p><p>I definitely learned a lot after completing this Micro Experience, and think that Crio is doing a great job in this period of stress and the situation created by the covid pandemic, by creating such an interactive online learning experience.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=e56122326454" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>