<?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:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Modern Software]]></title><description><![CDATA[Get smart about tech at work. Modern Software is designed for non-technical professionals to learn about how modern tech works. We provide engaging, simple explanations of technical concepts that are useful for your day-to-day job and fun to learn.]]></description><link>https://modernsoftware.substack.com</link><image><url>https://substackcdn.com/image/fetch/$s_!T67E!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fmodernsoftware.substack.com%2Fimg%2Fsubstack.png</url><title>Modern Software</title><link>https://modernsoftware.substack.com</link></image><generator>Substack</generator><lastBuildDate>Sat, 06 Jun 2026 05:00:49 GMT</lastBuildDate><atom:link href="https://modernsoftware.substack.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Manish]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[modernsoftware@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[modernsoftware@substack.com]]></itunes:email><itunes:name><![CDATA[Manish Sahajwani]]></itunes:name></itunes:owner><itunes:author><![CDATA[Manish Sahajwani]]></itunes:author><googleplay:owner><![CDATA[modernsoftware@substack.com]]></googleplay:owner><googleplay:email><![CDATA[modernsoftware@substack.com]]></googleplay:email><googleplay:author><![CDATA[Manish Sahajwani]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[My Experience With NanoClaw, a Personal AI Assistant]]></title><description><![CDATA[A secure AI assistant that lives on my machine, connects to my tools, and never resets.]]></description><link>https://modernsoftware.substack.com/p/my-experience-with-nanoclaw-a-personal</link><guid isPermaLink="false">https://modernsoftware.substack.com/p/my-experience-with-nanoclaw-a-personal</guid><dc:creator><![CDATA[Manish Sahajwani]]></dc:creator><pubDate>Fri, 05 Jun 2026 04:03:45 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!N6ZB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ee1fe5c-702e-49fe-b281-e86cc26d1a69_1783x882.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!N6ZB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ee1fe5c-702e-49fe-b281-e86cc26d1a69_1783x882.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!N6ZB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ee1fe5c-702e-49fe-b281-e86cc26d1a69_1783x882.png 424w, https://substackcdn.com/image/fetch/$s_!N6ZB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ee1fe5c-702e-49fe-b281-e86cc26d1a69_1783x882.png 848w, https://substackcdn.com/image/fetch/$s_!N6ZB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ee1fe5c-702e-49fe-b281-e86cc26d1a69_1783x882.png 1272w, https://substackcdn.com/image/fetch/$s_!N6ZB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ee1fe5c-702e-49fe-b281-e86cc26d1a69_1783x882.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!N6ZB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ee1fe5c-702e-49fe-b281-e86cc26d1a69_1783x882.png" width="1456" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8ee1fe5c-702e-49fe-b281-e86cc26d1a69_1783x882.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1790014,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://modernsoftware.substack.com/i/200712975?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ee1fe5c-702e-49fe-b281-e86cc26d1a69_1783x882.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!N6ZB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ee1fe5c-702e-49fe-b281-e86cc26d1a69_1783x882.png 424w, https://substackcdn.com/image/fetch/$s_!N6ZB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ee1fe5c-702e-49fe-b281-e86cc26d1a69_1783x882.png 848w, https://substackcdn.com/image/fetch/$s_!N6ZB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ee1fe5c-702e-49fe-b281-e86cc26d1a69_1783x882.png 1272w, https://substackcdn.com/image/fetch/$s_!N6ZB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ee1fe5c-702e-49fe-b281-e86cc26d1a69_1783x882.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>A few weeks back I learned about NanoClaw. NanoClaw is an AI assistant you host yourself. It runs inside a container on your computer, and you chat with it through apps like Telegram or WhatsApp. It works with Claude, so you need a Claude account or an API key. I decided to give it a go. A few commands later it was up and running on my MacBook in a Docker container. It is secure because it has no access to anything on my computer.</p><p>I tried the WhatsApp channel first, and the experience was not great. Two things got in the way. The connection runs through a QR code, and the code was hard to scan. Once I got in, it felt like messaging myself. WhatsApp links NanoClaw as a device on my own account, the same way WhatsApp Web does. So its replies landed in my own chat thread, with no separate contact on the other end. A Telegram bot is different. It has its own identity and its own number, so it feels like a real second party. I set it up with Telegram, and I have been using it throughout the day since.</p><p>I used OpenClaw a couple of months back. With all the talk around security, I never installed it on my computer. I put it on a DigitalOcean droplet instead, isolated from everything. It was fun to chat with it and use it for research. After a while the excitement fizzled out, and I never used it for anything real.</p><p>This time, I think it is going to become an essential agent for me.</p><p>Here is why it works for me:</p><ul><li><p>When something breaks, it uses Claude to debug and fix it.</p></li><li><p>It is secure and isolated, with no default access to anything on your computer.</p></li><li><p>Chatting with it is easy. I use it to research, set reminders, and more.</p></li><li><p>It can mount my project folders, so it works on real files, not copies.</p></li><li><p>It connects to outside services, so I run them from chat.</p></li><li><p>It is always on and remembers everything, so context and connections never reset.</p></li></ul><p>Take the project folders. All of mine live on my computer. I mounted those folders on the container and gave it write access. It still sees nothing else, only what I choose to open up. Now the Telegram bot can work on those folders as if they were local.</p><p>It has git built in. It can make changes and commit them. For push, you connect it to your git account through OneCLI. That step is optional. You can let the bot commit and then push yourself from your terminal.</p><p>Connecting a service was the smoothest part. I wanted it to work with my Fizzy boards and lists. From Telegram, I asked it to set up the Fizzy CLI. It installed the CLI and asked for my Personal Access Token. I generated one from my fizzy.do account, and that was it. The bot could now read my boards, work with lists, create cards, and mark them done.</p><p>The setup is not for everyone yet. You need to be comfortable with a terminal, and a bit of configuration. If that is not you, a tech-savvy friend can set it up for you. Once it is running, it is quite smooth.</p><p>Today I still work mostly on my computer. But it is easy to leave it on, sit in the living room, or go for a walk while NanoClaw keeps taking instructions.</p><p>For me the biggest benefit is not working away from my computer. The biggest benefit is that I touch fewer user interfaces. Apart from the terminal on my laptop and Telegram on my phone, I interact less and less with software UIs. Fizzy is one example. I do not open the Fizzy dashboard in a browser and click buttons to manage cards. I do it from the chat. I expect to connect more software to it over time and use all of it without the interface. That makes a lot of sense to me.</p><p>And because it never resets, I never start over. I pick up a task where I left it, and the connections I set up still work. That continuity is what makes it feel less like a tool and more like an assistant.</p><p>NanoClaw is not the only AI assistant. OpenClaw, Hermes, and others keep getting better. Share your experience with the AI assistants you have tried and how they have changed your life.</p>]]></content:encoded></item><item><title><![CDATA[What are AI Agents?]]></title><description><![CDATA[We all will have multiple AI agents working for us.]]></description><link>https://modernsoftware.substack.com/p/what-are-ai-agents</link><guid isPermaLink="false">https://modernsoftware.substack.com/p/what-are-ai-agents</guid><dc:creator><![CDATA[Manish Sahajwani]]></dc:creator><pubDate>Sat, 19 Oct 2024 01:43:10 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!46VY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21ee8b1f-1b94-4fe0-aa3b-97d419787e47_1344x768.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!46VY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21ee8b1f-1b94-4fe0-aa3b-97d419787e47_1344x768.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!46VY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21ee8b1f-1b94-4fe0-aa3b-97d419787e47_1344x768.png 424w, https://substackcdn.com/image/fetch/$s_!46VY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21ee8b1f-1b94-4fe0-aa3b-97d419787e47_1344x768.png 848w, https://substackcdn.com/image/fetch/$s_!46VY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21ee8b1f-1b94-4fe0-aa3b-97d419787e47_1344x768.png 1272w, https://substackcdn.com/image/fetch/$s_!46VY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21ee8b1f-1b94-4fe0-aa3b-97d419787e47_1344x768.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!46VY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21ee8b1f-1b94-4fe0-aa3b-97d419787e47_1344x768.png" width="1344" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/21ee8b1f-1b94-4fe0-aa3b-97d419787e47_1344x768.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1344,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:901445,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!46VY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21ee8b1f-1b94-4fe0-aa3b-97d419787e47_1344x768.png 424w, https://substackcdn.com/image/fetch/$s_!46VY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21ee8b1f-1b94-4fe0-aa3b-97d419787e47_1344x768.png 848w, https://substackcdn.com/image/fetch/$s_!46VY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21ee8b1f-1b94-4fe0-aa3b-97d419787e47_1344x768.png 1272w, https://substackcdn.com/image/fetch/$s_!46VY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21ee8b1f-1b94-4fe0-aa3b-97d419787e47_1344x768.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">An AI Agent helping a business executive</figcaption></figure></div><p>AI agents are the current buzzword in the software world, and they&#8217;re quickly changing the way we all live and work. By now, we all have interacted with AI, either while using a chatbot, while searching, or even while performing some tasks. As a software developer and writer, large language models like ChatGPT and Claude have completely shaped the way I work. And now with AI agents, our lives are going to further change, and we will be interacting with AI in almost everything we do. AI agents are at the center of this seismic shift.&nbsp;</p><p>The term &#8216;AI agent&#8217; is still new. There are many definitions, and people often differ on what can be called an AI agent. The term &#8216;AI agent&#8217; will evolve as more work happens in this field. My goal with this article is to take a slightly broader view of what people mean when they say something is an AI agent. So, let&#8217;s get started.</p><h2>AI Agent - Definition</h2><p>An AI agent is an intelligent software system designed to complete a goal that requires multiple steps. These goals are tasks that could have been done by a human agent such as a customer support executive, a travel agent, an HR executive, an IT person, or anyone else. It could be a simple task or a complex task.&nbsp;</p><p>This sounds like any automated system, you may say. However, there are differences. You can ask an AI agent to do tasks it is designed for, and it does those for you. This goes well beyond just answering simple questions, and may involve understanding users&#8217; requirements, figuring out what&#8217;s involved, making decisions, and interacting with multiple systems.&nbsp;</p><h2>AI Agents vs. LLM Chatbots</h2><p>While both AI agents and Large Language Model (LLM) chatbots are powered by advanced AI, they differ significantly in their approach and design. LLM chatbots, like the ones we commonly interact with, are designed for quick responses. They generate answers based on patterns in their training data, often providing the first plausible response that comes to "mind." This allows for fast, fluid conversations but can sometimes lead to inconsistencies or less thoughtful answers.</p><p>In contrast, AI agents are designed to work more methodically. They don't just respond; they plan, reason, and then act. An AI agent will take time to break down a task, consider various approaches, and devise a strategy before taking action. This slower, more deliberate process allows AI agents to handle complex, multi-step tasks that require careful planning and execution. While this approach may not be as instantaneous as a chatbot, it often results in more accurate, comprehensive, and tailored solutions to user requests.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://modernsoftware.substack.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Modern Software is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>AI Agents - Capabilities</h2><p>There are three key capabilities of AI agents that differentiate them from any other automation software or a simple chatbot. An AI agent can 1) Reason, 2) Act, and 3) has Memory. <br><br>Let&#8217;s look at each of these.&nbsp;</p><h3>1. Reason</h3><p>The first is their ability to reason. An AI agent can understand a user&#8217;s request, think about it, break it into steps, and even reason about it. This is a crucial step. An AI agent has a large language model in charge which takes the user&#8217;s request and controls the agent&#8217;s workflow. This could be ChatGPT, or Claude, or any other specialized LLM. As we know, LLMs are good at these kinds of things, especially to understand the user's intent and to break a complex task into smaller, more actionable steps. And if programmed correctly, they can even reason with you or ask for more information.&nbsp; This is the core of how a problem will be solved. The model will be prompted to come up with a plan and to reason about each step in the process.</p><h3>2. Act</h3><p>The second is their ability to act. This is where agents shine and where the actual work happens. Based on the steps to solve a problem, the AI agent will now act upon each step and execute it. This is done using external programs which are referred to as tools in the AI industry. For example, if a step involves checking the weather in an area, the AI agent may fetch that information from a third-party weather API. This weather API is referred to as a tool.&nbsp;</p><p>An example of a tool is search, such as a program that helps search the web or a database for some information. Another example may be a calculator that will perform some math as required. Yet another could be a custom piece of code that may do something such as interacting with a transactional database, or perform some other operation. A tool could also be another language model or an API that does some specialized task such as translation. The model in charge of the AI agent will orchestrate these tools in terms of when to call them, how to call them, or even which tools to use and which ones not to while performing a certain task. There are endless possibilities for creating and using these tools.&nbsp;&nbsp;&nbsp;</p><h3>3. Memory</h3><p>The third capability is that they have memory. They use memory to remember past conversations from users and access this memory and learn from it while performing tasks, which makes the process even smoother. This allows AI agents to provide more personalized and context-aware responses over time.&nbsp;</p><h2>Examples of AI Agents&nbsp;</h2><h3>AI Travel Agent</h3><p>An AI travel planning agent could streamline your vacation planning by analyzing your calendar and travel history to suggest suitable dates and destinations. It would recommend flights, accommodations, and activities based on your preferences, make bookings, and add the itinerary to your calendar. The AI could also compile necessary documents, monitor for changes, and provide pre-trip information like weather forecasts and packing suggestions. While ambitious, this level of AI assistance in travel planning may soon be achievable.</p><h3>AI Email Assistant</h3><p>An AI email assistant could help a professional by drafting, proofreading, and organizing emails. It would analyze your writing style and past correspondence to compose messages for you, suggest responses to incoming emails, and even schedule follow-ups. The AI could prioritize your inbox, flag important messages, and summarize long email threads. It would also help maintain a consistent tone across your communications, offer language translations, and ensure emails are free from grammatical errors. Such an AI agent could significantly boost productivity and improve the quality of your communication.</p><h2>Copilot vs Autonomous Agents</h2><p>AI agents can operate autonomously or alongside other agents and human users. With varying degrees of autonomy, we have different labels for these agents.&nbsp;</p><p>Copilots are a type of AI agents that work alongside users rather than operating independently. Copilots provide suggestions and recommendations to assist users in completing tasks. An autonomous agent, on the other hand, would work more independently, making decisions and taking actions with minimal human intervention.</p><p>For example, an AI coding copilot could suggest code snippets, functions, or algorithms while the developer writes code. It could search the project's codebase, offer optimizations, and explain complex code. The AI might autocomplete lines, propose variable names, or generate comments. Developers can accept, modify, or reject these suggestions, enhancing productivity while maintaining control over their code.</p><p>An autonomous coding agent could take development a step further by independently generating entire code blocks or features from high-level requirements, analyzing architecture, and integrating modules seamlessly. It might proactively refactor code, handle edge cases, and follow best practices. Developers guide the agent by setting goals, reviewing outputs, and fine-tuning implementations, enhancing productivity while ensuring code quality.</p><h2>Conclusion</h2><p>In conclusion, AI agents are transforming how we interact with technology, shifting from simple tools to proactive partners. To make them truly effective, we'll likely need multiple AI models working together, each specializing in different tasks. As AI continues to evolve, these agents will become even more capable, taking on more responsibilities to help us in our daily lives.</p>]]></content:encoded></item><item><title><![CDATA[What is Authentication and How Does it Work?]]></title><description><![CDATA[That's how apps identify you, secure your account, and personalize your experience]]></description><link>https://modernsoftware.substack.com/p/what-is-authentication-and-how-does</link><guid isPermaLink="false">https://modernsoftware.substack.com/p/what-is-authentication-and-how-does</guid><dc:creator><![CDATA[Manish Sahajwani]]></dc:creator><pubDate>Mon, 11 Dec 2023 15:16:04 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c8ac2a7-baad-4543-838a-5291d69409f7_1050x874.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Most online apps and services require us to create an account and log in. This is their way of identifying us as who we say we are and showing us the data related to us. Let&#8217;s take Twitter as an example. To access Twitter, you first need to create an account and then log in. So, what exactly does logging in mean, and what happens behind the scenes when you enter a username and a password?</p><p>This process is what&#8217;s referred to as authentication. It's a method for an app or service to verify your identity, ensuring that you, and only you, get access to your personal information.</p><h3>Why Do We Need Authentication?</h3><p>Access to all my data in an app must be protected and only I should be able to access it. Apps ensure this through authentication. The security and protection of your data is the most important task of authentication. Another area where authentication enhances an app is through customization and personalization.</p><p>Most apps where you log in are customized for you. Twitter has your tweets, followers, and direct messages. Gmail contains your emails. Dropbox stores your files. When you want to access your emails, you log in to Gmail. Gmail authenticates you as yourself, then shows you your emails and allows you to send emails as yourself. Similarly, Dropbox requires you to log in to give you access to your files. Without an account or log in, none of this would be feasible, would it?</p><p>When you create an account in an app, they store this information in a database, and then all other data is associated with this account. For example, in their database, they might have a table for all users. In that table, there would be a record for the user <em>&#8216;manish&#8217;</em> containing user-related information, such as username, email, password, etc. Then there may be another table containing Tweets. Each tweet will have a user account associated with it. So, when I log in, Twitter authenticates me as <em>&#8216;manish&#8217;</em> and then queries different database tables to fetch various data such as tweets, followers, etc. That&#8217;s how I, and everyone else, get a personalized Twitter experience based on data in our accounts.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fyz7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6302ad1-4760-4135-8cba-077349976553_1248x325.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fyz7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6302ad1-4760-4135-8cba-077349976553_1248x325.png 424w, https://substackcdn.com/image/fetch/$s_!fyz7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6302ad1-4760-4135-8cba-077349976553_1248x325.png 848w, https://substackcdn.com/image/fetch/$s_!fyz7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6302ad1-4760-4135-8cba-077349976553_1248x325.png 1272w, https://substackcdn.com/image/fetch/$s_!fyz7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6302ad1-4760-4135-8cba-077349976553_1248x325.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fyz7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6302ad1-4760-4135-8cba-077349976553_1248x325.png" width="1248" height="325" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e6302ad1-4760-4135-8cba-077349976553_1248x325.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:325,&quot;width&quot;:1248,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!fyz7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6302ad1-4760-4135-8cba-077349976553_1248x325.png 424w, https://substackcdn.com/image/fetch/$s_!fyz7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6302ad1-4760-4135-8cba-077349976553_1248x325.png 848w, https://substackcdn.com/image/fetch/$s_!fyz7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6302ad1-4760-4135-8cba-077349976553_1248x325.png 1272w, https://substackcdn.com/image/fetch/$s_!fyz7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe6302ad1-4760-4135-8cba-077349976553_1248x325.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>How Does Authentication Work?</h3><p>Let&#8217;s look at the most common form of authentication, that is, username and password. Here are the steps. (Note that these steps are oversimplified for the sake of brevity)</p><ol><li><p>When you create an account in an app, the username, password, and other information you entered gets stored in a database.</p></li><li><p>When you log in, you enter the username and password. In the <a href="https://modernsoftware.substack.com/p/frontend-backend">backend</a>, the app compares this username and password with the stored version. If it&#8217;s a match, it identifies you as the owner of the account and logs you in. If it&#8217;s a mismatch, it rejects your identity and asks you to try again.</p><p></p></li></ol><p>It&#8217;s as simple as this. But there are many nuances. Let&#8217;s look at some of them.</p><h3>Understanding Sessions, Cookies, and Tokens</h3><p>Once you&#8217;re logged in to an app, you generally don&#8217;t need to log in again when you navigate between pages, or when you return after a few days. For some apps like banking apps, you should be required to log in often for security reasons. However, some apps like social media apps can keep you logged in for months. This is good because logging in every time can be annoying. This convenience is made possible using what developers call sessions and cookies. Frankly, I don&#8217;t know why they&#8217;re called cookies. Let&#8217;s understand how this works.</p><p><strong>Sessions</strong></p><p>Think of a session as a unique conversation between you and the app. When you log in, the app creates a session on its server. This session is like a record of your interaction with the app, keeping track of your data as you navigate. The session is stored on the server side, meaning the website you&#8217;re using keeps track of it.&nbsp;</p><p><strong>Cookies</strong></p><p>Now, how does the app remember that you're in an ongoing session? That's where cookies come in. When a session is created, the app sends a cookie to your browser. Cookies are small bits of data that the app stores in your browser. This cookie contains a unique session identifier (ID). It's not your personal information or password, just a random string of characters.&nbsp;</p><p><strong>The Handshake</strong></p><p>Every time you make a request to the app (like clicking a link or refreshing a page), your browser sends this cookie back to the app. The app reads the session ID from the cookie, compares with with the session record, and says, "Okay, I remember this session; it belongs to this user." This way, you remain logged in and don't have to enter your credentials every time. Cookies can be set to expire after a certain time, which is why sometimes you have to log in again after a while.&nbsp;</p><p>When something is not working as you expect, your developers or customer service staff of a product will tell you to clear your browser cache. What you are doing here is deleting cookies along with other data stored in the browser. And sometimes doing this magically solves the problem. Now you know why!</p><p><strong>Tokens</strong></p><p>An alternative approach to storing server sessions is the use of web tokens. When you log in to an app, instead of creating a server session, the app generates a special code known as a web token.</p><p>This web token is stored in your browser, somewhat akin to how cookies function. Each time you interact with the app, your browser sends this token back to the server. The token acts as a credential, verifying your identity and permissions.</p><p>The key difference between web tokens and server sessions lies in how they handle user data. Server sessions store user data on the server. Web tokens, on the other hand, contain the user information within the token itself. The token itself includes details about your identity, permissions, and any other relevant data. Web tokens have increasingly gained popularity due to their enhanced security, greater flexibility, and superior performance.&nbsp;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!iVCJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4056256b-f69e-4c07-9d05-5aca6b2d81b8_2780x1374.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!iVCJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4056256b-f69e-4c07-9d05-5aca6b2d81b8_2780x1374.png 424w, https://substackcdn.com/image/fetch/$s_!iVCJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4056256b-f69e-4c07-9d05-5aca6b2d81b8_2780x1374.png 848w, https://substackcdn.com/image/fetch/$s_!iVCJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4056256b-f69e-4c07-9d05-5aca6b2d81b8_2780x1374.png 1272w, https://substackcdn.com/image/fetch/$s_!iVCJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4056256b-f69e-4c07-9d05-5aca6b2d81b8_2780x1374.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!iVCJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4056256b-f69e-4c07-9d05-5aca6b2d81b8_2780x1374.png" width="1456" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4056256b-f69e-4c07-9d05-5aca6b2d81b8_2780x1374.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:810605,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!iVCJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4056256b-f69e-4c07-9d05-5aca6b2d81b8_2780x1374.png 424w, https://substackcdn.com/image/fetch/$s_!iVCJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4056256b-f69e-4c07-9d05-5aca6b2d81b8_2780x1374.png 848w, https://substackcdn.com/image/fetch/$s_!iVCJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4056256b-f69e-4c07-9d05-5aca6b2d81b8_2780x1374.png 1272w, https://substackcdn.com/image/fetch/$s_!iVCJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4056256b-f69e-4c07-9d05-5aca6b2d81b8_2780x1374.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h3>Types of Authentication</h3><p>Authentication is a big area, and companies keep working on newer, easier,&nbsp; faster, and more secure ways to provide authentication. Below are some of the most common types:</p><p><strong>Single Sign-On (SSO) and Social Logins</strong></p><p>The concept of Single Sign-On (SSO) originated in the enterprise sector, allowing users to access multiple applications with one set of login credentials. This approach is logical for employees; once logged into one application, it makes complete sense to be automatically logged into all connected applications using the same session.</p><p>Social logins extend the convenience of SSO to the general public. Many companies, including Facebook, Google, and Apple, offer services that let you use their accounts to log into other apps. On many apps, you'll see options like &#8216;Login with Google&#8217; or &#8216;Login with Apple.&#8217; This integration is quite practical.&nbsp;</p><p>For instance, consider you have a Google account with the email 'alex@gmail.com' and have used this email to create a Pinterest account. While you can log into Pinterest using a username and password, Pinterest also enables login via Google. Clicking on the &#8216;Sign in with Google&#8217; button redirects you to Google, where you authenticate with your Google account. Once Google successfully verifies your identity, you're redirected back to Pinterest. Pinterest recognizes that Google has authenticated you with this email, confirming your identity. Although this process might sound intricate, it significantly simplifies the login experience. Pinterest will still maintain a record of your account in their database, linked to your Google-authenticated email.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!T3Rw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c8ac2a7-baad-4543-838a-5291d69409f7_1050x874.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!T3Rw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c8ac2a7-baad-4543-838a-5291d69409f7_1050x874.png 424w, https://substackcdn.com/image/fetch/$s_!T3Rw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c8ac2a7-baad-4543-838a-5291d69409f7_1050x874.png 848w, https://substackcdn.com/image/fetch/$s_!T3Rw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c8ac2a7-baad-4543-838a-5291d69409f7_1050x874.png 1272w, https://substackcdn.com/image/fetch/$s_!T3Rw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c8ac2a7-baad-4543-838a-5291d69409f7_1050x874.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!T3Rw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c8ac2a7-baad-4543-838a-5291d69409f7_1050x874.png" width="1050" height="874" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9c8ac2a7-baad-4543-838a-5291d69409f7_1050x874.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:874,&quot;width&quot;:1050,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:251992,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!T3Rw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c8ac2a7-baad-4543-838a-5291d69409f7_1050x874.png 424w, https://substackcdn.com/image/fetch/$s_!T3Rw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c8ac2a7-baad-4543-838a-5291d69409f7_1050x874.png 848w, https://substackcdn.com/image/fetch/$s_!T3Rw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c8ac2a7-baad-4543-838a-5291d69409f7_1050x874.png 1272w, https://substackcdn.com/image/fetch/$s_!T3Rw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c8ac2a7-baad-4543-838a-5291d69409f7_1050x874.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Passwordless Login Methods</strong></p><p><strong>Magic Links:</strong> Instead of entering a password, users receive a unique, one-time-use link via email or SMS. Clicking this link logs them in. Magic links are secure and eliminate the need for users to remember passwords.</p><p><strong>Authenticator Apps: </strong>Apps like Google Authenticator or Authy generate time-based one-time passwords (TOTPs). Users enter these codes to log in, adding an extra layer of security beyond traditional passwords.</p><p><strong>Biometric Authentication</strong></p><p>This method uses unique biological traits for verification, such as fingerprints, facial recognition, or iris scans. Biometrics are highly secure due to the uniqueness of these traits. They are commonly used in smartphones and high-security environments.</p><p><strong>Multifactor Authentication (MFA)</strong></p><p>Multifactor Authentication (MFA) is a way of adding an extra layer of security to the login process. It adds another step to your login process for better security. Normally, you just need a password (something you know) to log in. With MFA, you also need a second thing, like a code sent to your phone (something you have) or your fingerprint/face (something you are). This way, if someone guesses your password, they still can't get into your account unless they have your phone or your fingerprint. By requiring multiple forms of evidence, MFA significantly enhances security, making unauthorized access much harder. For instance, even if a hacker obtains your password, they still can't access your account without also having your phone or biometric information.</p><h3>Companies in the Authentication Business</h3><p>Authentication is a billion-dollar industry, with various companies offering different services to keep your online accounts secure. For example, Google and Microsoft provide two-factor authentication, requiring both your password and a code sent to your phone for added security. Okta and Auth0 specialize in business-oriented solutions like Single Sign-On, which enables employees to access multiple applications using just one set of credentials. Additionally, Apple's Face ID technology allows you to use your face as a password for a seamless and secure login experience. Companies like Magic.link are pioneering passwordless options, enabling users to log in through a link sent to their email or a prompt on their phone, thus eliminating the need for traditional passwords.</p><p>I hope this article has helped clarify the concept of authentication and given you insight into the wide range of services available in the authentication landscape. Feel free to share your thoughts in the comments below.</p>]]></content:encoded></item><item><title><![CDATA[What is First Party and Third Party Data?]]></title><description><![CDATA[A Simple Guide to Marketing Data]]></description><link>https://modernsoftware.substack.com/p/what-is-first-party-and-third-party</link><guid isPermaLink="false">https://modernsoftware.substack.com/p/what-is-first-party-and-third-party</guid><dc:creator><![CDATA[Manish Sahajwani]]></dc:creator><pubDate>Sat, 23 Sep 2023 04:22:46 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!CH52!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a4d0494-60df-4ec7-8ac4-207fc7abae8b_1600x1166.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Learn Kraft is now Modern Software</strong></p><p><strong>Important update:</strong> I've transitioned this newsletter to Substack and rebranded it from '<strong>Learn Kraft</strong>' to '<strong>Modern Software</strong>' to better align with its core mission. Rest assured, the essence remains the same&#8212;I will continue to distill complex tech concepts into easily digestible insights for you. Now, let's dive into today's article.</p><div><hr></div><p>As we all know, data is the new gold. Marketers rely on data to gain the necessary insights to understand consumer behavior, preferences, and needs. Without data, creating a successful marketing strategy or campaign in today's business world would be quite challenging. Whether figuring out what your audience likes, the best time to reach them, or what keeps them loyal, it&#8217;s data that helps us make informed decisions about all marketing activities.</p><p>However, not all data is created equal. You will often hear about first-party, second-party, and third-party data. Let's break down what these terms mean and why they are important.</p><h3>First Party Data</h3><p>First-party data refers to the data that a company collects directly from its users, without any intermediaries. These users could be your audience, customers, prospects, etc. First-party data can be collected from various sources such as visits to your website, survey forms, social media interactions, or product purchases. For this reason, first-party data is considered to be the most accurate and reliable. Companies can use this data to gain insights into their customers' behavior, preferences, interests, and needs, which can help them create better marketing campaigns and strategies.</p><p>Example: A coffee chain like Starbucks uses its customer order data and customer loyalty app to track what types of beverages are most popular among its regulars. It can use this data to innovate and create offers for its customers.</p><h3>Second Party Data</h3><p>Second-party data is essentially another organization's first-party data that you can use for your marketing efforts. It is acquired directly from a source that has a particular closeness or relevance to your target audience, making it quite reliable.</p><p>Example: An organic food grocery chain and a fitness gym chain can share their first-party customer data with each other. The grocery chain could share data about what types of organic foods and supplements are most popular among its customers. The gym chain could share data about the workout preferences and frequency of gym visits of its members. Both businesses use this second-party data to create targeted promotions for their customers.</p><h3>Third Party Data</h3><p>Third-party data is collected by entities that have no direct relationship with the user whose data is being collected. This data is often aggregated from multiple sources and sold to businesses by data vendors for use in targeted advertising, customer segmentation, and other marketing strategies.</p><p>Third-party data includes various types of information such as demographics, web browsing habits, credit scores, social media engagement, location data, purchase history, and market research data. While it provides a broader reach, third-party data may not always be as accurate or reliable as first- or second-party data.</p><p><strong>Example:</strong> A clothing brand can use demographic information bought from a data vendor to identify potential customers for its new line of sportswear.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CH52!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a4d0494-60df-4ec7-8ac4-207fc7abae8b_1600x1166.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CH52!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a4d0494-60df-4ec7-8ac4-207fc7abae8b_1600x1166.png 424w, https://substackcdn.com/image/fetch/$s_!CH52!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a4d0494-60df-4ec7-8ac4-207fc7abae8b_1600x1166.png 848w, https://substackcdn.com/image/fetch/$s_!CH52!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a4d0494-60df-4ec7-8ac4-207fc7abae8b_1600x1166.png 1272w, https://substackcdn.com/image/fetch/$s_!CH52!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a4d0494-60df-4ec7-8ac4-207fc7abae8b_1600x1166.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CH52!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a4d0494-60df-4ec7-8ac4-207fc7abae8b_1600x1166.png" width="1456" height="1061" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0a4d0494-60df-4ec7-8ac4-207fc7abae8b_1600x1166.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1061,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!CH52!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a4d0494-60df-4ec7-8ac4-207fc7abae8b_1600x1166.png 424w, https://substackcdn.com/image/fetch/$s_!CH52!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a4d0494-60df-4ec7-8ac4-207fc7abae8b_1600x1166.png 848w, https://substackcdn.com/image/fetch/$s_!CH52!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a4d0494-60df-4ec7-8ac4-207fc7abae8b_1600x1166.png 1272w, https://substackcdn.com/image/fetch/$s_!CH52!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a4d0494-60df-4ec7-8ac4-207fc7abae8b_1600x1166.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>Examples - How Different Companies Use Data</h3><p><strong>Retail Stores:</strong> Use first-party data to personalize in-store experiences based on online shopping behavior. They may also use third-party data to expand their customer base through targeted advertising.</p><p><strong>Streaming Services:</strong> Use first-party data to recommend shows and may use second-party data from social media companies to understand broader entertainment preferences.</p><p><strong>Travel Agencies: </strong>Use first-party data to understand travel preferences and offer customized packages. They may also buy third-party data to identify new prospects who are frequent travelers.</p><p><strong>Automakers: </strong>Use first-party data to improve their products and services, while third-party data helps them identify new market opportunities and develop effective marketing campaigns.</p><p>In summary, first-party data is direct and reliable, second-party data offers comparable quality, and third-party data provides a broader scope to reach a larger audience. By understanding the differences between these data sets, marketers can make more informed decisions and create meaningful campaigns.</p>]]></content:encoded></item><item><title><![CDATA[AI: What’s a Neural Network?]]></title><description><![CDATA[A computational model inspired by our brains]]></description><link>https://modernsoftware.substack.com/p/neural-network</link><guid isPermaLink="false">https://modernsoftware.substack.com/p/neural-network</guid><dc:creator><![CDATA[Manish Sahajwani]]></dc:creator><pubDate>Wed, 06 Sep 2023 12:59:25 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!6D4O!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f4a6f6d-cf87-427e-bcf8-213a55d90670_946x888.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Artificial Intelligence (AI) has quickly become a part of modern life, from art and music to business and beyond. The pace of development is so fast that it&#8217;s difficult to keep up. In the next few articles, I&#8217;ll break down some of the fundamental concepts in AI that you need to know to make sense of all the news and developments that you read about. We will start with neural networks, which are the basis for most of the artificial intelligence software we are seeing.</p><p>Artificial Intelligence is a type of software system, that, like any other software takes an input and returns an output. Think of it as a calculator. In a calculator, you input some numbers and you get an output. It&#8217;s the same with artificial intelligence software, the difference is that the inputs and outputs are way more flexible. For example, when you use software like ChatGPT, you can ask a question in natural language, and it answers your question in very natural-sounding language. Both inputs and outputs are very flexible. So, how does AI software do it? It all happens using a technique called neural networks. This technique was pioneered decades ago, however, it has become so popular only now because of the advancement in technology and computing power.</p><p>These AI models can do a variety of things. For example, image classification, where they can identify entities in a photo. Another example is language translation, where they can instantly convert text from one language to another. Yet another example is speech recognition, where they can transcribe spoken words into text.</p><h2><strong>What is a Neural Network?</strong></h2><p>Our brains are made up of cells called neurons. All these neurons are interconnected with each other to form a network that stores information and performs various tasks. The brain takes an input, passes it through this complex network, and produces an output. This is the biological neural network of the brain.</p><p>A neural network in the digital world is a computational model which is inspired by the brain and is foundational to how artificial intelligence works.</p><h2><strong>Building Blocks of a Neural Network</strong></h2><p>At the heart of a neural network is a neuron (or a node) which is a simple processing unit. It takes inputs from other nodes, or from an external source, performs some computations on the inputs, and produces an output.</p><p>These neurons are organized in layers. The first layer is the input layer that receives inputs from outside, such as a dataset. Each neuron in the input layer is a feature in the dataset. After the input layer, we have one or more hidden layers that take the inputs and perform calculations on our data. Then we have the output layer in which we get the final prediction or the result from our given inputs.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6D4O!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f4a6f6d-cf87-427e-bcf8-213a55d90670_946x888.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6D4O!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f4a6f6d-cf87-427e-bcf8-213a55d90670_946x888.jpeg 424w, https://substackcdn.com/image/fetch/$s_!6D4O!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f4a6f6d-cf87-427e-bcf8-213a55d90670_946x888.jpeg 848w, https://substackcdn.com/image/fetch/$s_!6D4O!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f4a6f6d-cf87-427e-bcf8-213a55d90670_946x888.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!6D4O!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f4a6f6d-cf87-427e-bcf8-213a55d90670_946x888.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6D4O!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f4a6f6d-cf87-427e-bcf8-213a55d90670_946x888.jpeg" width="946" height="888" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9f4a6f6d-cf87-427e-bcf8-213a55d90670_946x888.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:888,&quot;width&quot;:946,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Neural Network Diagram&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Neural Network Diagram" title="Neural Network Diagram" srcset="https://substackcdn.com/image/fetch/$s_!6D4O!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f4a6f6d-cf87-427e-bcf8-213a55d90670_946x888.jpeg 424w, https://substackcdn.com/image/fetch/$s_!6D4O!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f4a6f6d-cf87-427e-bcf8-213a55d90670_946x888.jpeg 848w, https://substackcdn.com/image/fetch/$s_!6D4O!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f4a6f6d-cf87-427e-bcf8-213a55d90670_946x888.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!6D4O!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9f4a6f6d-cf87-427e-bcf8-213a55d90670_946x888.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Neural Network Diagram</figcaption></figure></div><p>Every neuron in a layer is connected to all neurons in the previous layer, forming a densely interconnected network. The neurons and the connections between them (represented as lines) have associated values, such as data inputs and weights. These values are essential for the computations carried out by the network.</p><h2><strong>Neural Network - Example</strong></h2><p>Let's take an example of a neural network that classifies an animal as a mammal, fish or bird. We provide it with a picture of an animal, and as an output, it classifies the picture as a mammal, fish or bird. Let&#8217;s look at what goes on in the three layers.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!l_pP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faecc2fbf-ee2e-4af9-a054-3f9f3a75fc5b_1000x550.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!l_pP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faecc2fbf-ee2e-4af9-a054-3f9f3a75fc5b_1000x550.jpeg 424w, https://substackcdn.com/image/fetch/$s_!l_pP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faecc2fbf-ee2e-4af9-a054-3f9f3a75fc5b_1000x550.jpeg 848w, https://substackcdn.com/image/fetch/$s_!l_pP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faecc2fbf-ee2e-4af9-a054-3f9f3a75fc5b_1000x550.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!l_pP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faecc2fbf-ee2e-4af9-a054-3f9f3a75fc5b_1000x550.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!l_pP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faecc2fbf-ee2e-4af9-a054-3f9f3a75fc5b_1000x550.jpeg" width="1000" height="550" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/aecc2fbf-ee2e-4af9-a054-3f9f3a75fc5b_1000x550.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:550,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Neural Network Example&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Neural Network Example" title="Neural Network Example" srcset="https://substackcdn.com/image/fetch/$s_!l_pP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faecc2fbf-ee2e-4af9-a054-3f9f3a75fc5b_1000x550.jpeg 424w, https://substackcdn.com/image/fetch/$s_!l_pP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faecc2fbf-ee2e-4af9-a054-3f9f3a75fc5b_1000x550.jpeg 848w, https://substackcdn.com/image/fetch/$s_!l_pP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faecc2fbf-ee2e-4af9-a054-3f9f3a75fc5b_1000x550.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!l_pP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faecc2fbf-ee2e-4af9-a054-3f9f3a75fc5b_1000x550.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Neural Network Example</figcaption></figure></div><p><strong>Input Layer</strong></p><p>In the input layer, each neuron will represent a feature of the animal. Some example features are:</p><ul><li><p>Body temperature: Either "warm-blooded" or "cold-blooded" - e.g., for a domestic cat: warm-blooded</p></li><li><p>Number of legs: e.g., for a domestic cat: 4</p></li><li><p>Has fur or hair: e.g., for a domestic cat: Yes (1)</p></li><li><p>Can fly: e.g., for a domestic cat: No (0)</p></li><li><p>Average lifespan: e.g., for a domestic cat: 15 years</p></li><li><p>Average adult weight: e.g., for a domestic cat: 4.5 kilograms</p></li></ul><p>These are just some examples. There could be many more features.</p><p><strong>Hidden Layer</strong></p><p>Here the neural network could have one or more hidden layers, with different numbers of neurons, each taking in the weighted sum of inputs from the preceding layer. These neurons are designed to activate or respond based on the strength of these inputs. These neurons are designed to recognize different patterns and combinations of features. For example, some might prioritize traits common to mammals or birds, while others might emphasize the size and lifespan of the animal. Another neuron might consider all input features to comprehensively understand the animal's characteristics.</p><p><strong>Output layer</strong></p><p>The output layer in this neural network contains three neurons: one each for mammals, fish, and birds. Each neuron produces a value indicating the likelihood of the animal belonging to its respective category. For instance, the value from neuron 1 indicates the probability of the animal being a mammal, neuron 2's value represents the likelihood of it being a fish, and neuron 3's value pertains to the chance of it being a bird.</p><p>The highest value determines the network&#8217;s final classification. If we feed the picture of a domestic cat to this neural network, then ideally the neuron representing mammals in the output layer will have the highest value.</p><h2><strong>Neural Networks Can Learn</strong></h2><p>But how are neural networks able to perform this classification? They can do so because of their ability to learn patterns and relationships from data. They are continuously learning and improving themselves through a process called training. Training involves feeding the neural network a large dataset, such as pictures of animals, so it can learn and recognize patterns. During training, these weights are adjusted to improve the performance of the neural network. We will learn about the concept of model training in a separate article.</p><p>I hope you enjoyed this article. Now, you're one step closer to understanding the world of AI and neural networks.</p>]]></content:encoded></item><item><title><![CDATA[What is A/B Testing and How Companies Use It]]></title><description><![CDATA[Insights on what works and what doesn&#8217;t]]></description><link>https://modernsoftware.substack.com/p/ab-testing</link><guid isPermaLink="false">https://modernsoftware.substack.com/p/ab-testing</guid><dc:creator><![CDATA[Manish Sahajwani]]></dc:creator><pubDate>Wed, 06 Sep 2023 12:56:25 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!K0wo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42035953-2d02-40c8-9e29-a7cc8e5ef539_1920x1280.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!K0wo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42035953-2d02-40c8-9e29-a7cc8e5ef539_1920x1280.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!K0wo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42035953-2d02-40c8-9e29-a7cc8e5ef539_1920x1280.jpeg 424w, https://substackcdn.com/image/fetch/$s_!K0wo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42035953-2d02-40c8-9e29-a7cc8e5ef539_1920x1280.jpeg 848w, https://substackcdn.com/image/fetch/$s_!K0wo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42035953-2d02-40c8-9e29-a7cc8e5ef539_1920x1280.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!K0wo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42035953-2d02-40c8-9e29-a7cc8e5ef539_1920x1280.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!K0wo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42035953-2d02-40c8-9e29-a7cc8e5ef539_1920x1280.jpeg" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/42035953-2d02-40c8-9e29-a7cc8e5ef539_1920x1280.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;hero&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="hero" title="hero" srcset="https://substackcdn.com/image/fetch/$s_!K0wo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42035953-2d02-40c8-9e29-a7cc8e5ef539_1920x1280.jpeg 424w, https://substackcdn.com/image/fetch/$s_!K0wo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42035953-2d02-40c8-9e29-a7cc8e5ef539_1920x1280.jpeg 848w, https://substackcdn.com/image/fetch/$s_!K0wo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42035953-2d02-40c8-9e29-a7cc8e5ef539_1920x1280.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!K0wo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F42035953-2d02-40c8-9e29-a7cc8e5ef539_1920x1280.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">I<em>mage by <a href="https://unsplash.com/@uxindo">UX Indonesia</a></em></figcaption></figure></div><p>Companies building products want feedback from their customers. In fact, customer feedback is the most important factor for a company to build a useful and successful product. If customers don&#8217;t like a feature or design of something, it will be in your favour to work on the problem. This is true not just for physical products, but also for digital products like e-commerce websites, social networks and software products.</p><p>In the digital landscape, one of the most effective strategies to gain insights into what customers want is A/B testing.</p><h2><strong>What is A/B Testing?</strong></h2><p>A/B testing is a technique where a company shows two slightly different versions of a part of the product to users and then measures which one performs better. Basically, it is a race between two versions, A and B, where the winner is decided based on the relevant metrics such as improved conversion, more time spent on the product, etc.</p><p>A/B test is a type of controlled experiment. A is the existing version and B is the version that contains the changes. The users are split into two groups. One group is shown version A and the other group is shown version B. And then the performance of each group is measured to see which one performed better. If Group B performs significantly better than Group A, then version B is implemented as the new standard. This would mean rolling out version B to all users. Essentially, version B becomes the new version A.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!MsM2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F647298d8-da26-46d4-97b6-1cbfef2418d8_1000x763.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MsM2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F647298d8-da26-46d4-97b6-1cbfef2418d8_1000x763.jpeg 424w, https://substackcdn.com/image/fetch/$s_!MsM2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F647298d8-da26-46d4-97b6-1cbfef2418d8_1000x763.jpeg 848w, https://substackcdn.com/image/fetch/$s_!MsM2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F647298d8-da26-46d4-97b6-1cbfef2418d8_1000x763.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!MsM2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F647298d8-da26-46d4-97b6-1cbfef2418d8_1000x763.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!MsM2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F647298d8-da26-46d4-97b6-1cbfef2418d8_1000x763.jpeg" width="1000" height="763" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/647298d8-da26-46d4-97b6-1cbfef2418d8_1000x763.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:763,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;A/B Testing&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="A/B Testing" title="A/B Testing" srcset="https://substackcdn.com/image/fetch/$s_!MsM2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F647298d8-da26-46d4-97b6-1cbfef2418d8_1000x763.jpeg 424w, https://substackcdn.com/image/fetch/$s_!MsM2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F647298d8-da26-46d4-97b6-1cbfef2418d8_1000x763.jpeg 848w, https://substackcdn.com/image/fetch/$s_!MsM2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F647298d8-da26-46d4-97b6-1cbfef2418d8_1000x763.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!MsM2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F647298d8-da26-46d4-97b6-1cbfef2418d8_1000x763.jpeg 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">A/B Testing</figcaption></figure></div><h2><strong>Where is A/B Testing Applied?</strong></h2><p>Nowadays A/B testing is applied to almost all areas in digital business. People create A/B tests for a variety of things such as the color of the buy button, email subject lines, ads, and testing new software features. Sometimes the color of the buy button can have an impact on the actual conversions. An A/B test can reveal this. Similarly, one email subject line can have a better open rate than the other.</p><p>Typically when people talk about A/B testing, they are referring to digital marketing. But it is equally true for software also. In the software world, it is more commonly referred to as feature flagging and experimentation.</p><h2><strong>A/B Testing in Software</strong></h2><p>In a software company, the engineering and product teams are primarily responsible for developing new features. But how do they determine which ones to build and where to focus their resources? One effective strategy is experimentation. In this approach, the team first designs a scaled-down version of the new feature, which is then rolled out to a small segment of their user base. The impact of this feature on the chosen group is carefully measured. If the response is positive, the team proceeds to develop the feature fully and release it to all users. However, if the impact is negative or insignificant, they take the experiment as a learning opportunity. Depending on the insights gained, they may revise and retry the feature, or they could decide to abandon it and work on a different experiment.</p><h2><strong>Experimentation Example</strong></h2><p>Imagine you&#8217;re a product manager at a SaaS company providing CRM software. You&#8217;ve received feedback that customers are not very satisfied with the reporting features. You decide to improve the reporting features by adding new reports and more granularity. Instead of creating a big plan, you start by building a small thing, like a new daily sales report. You select a small user base and launch this new report to this selected user group. The rest of the users will not see this new report.</p><p>After running the experiment for some time, you compare the engagement levels and feedback from these two user groups. This could include things like time spent on checking reports, frequency of use, and feedback received. Based on the result of this experiment, the product manager can decide to roll out the new report to all users and further plan to work on the overall reporting feature.</p><h2><strong>Important Considerations</strong></h2><p>To run a successful A/B test, there are a few important considerations.</p><ul><li><p><strong>User Selection:</strong> The way you select the small user group for testing your new feature is very important. You may select these users randomly, or you might have a selection criterion that's relevant to the feature. Once you've established a selection criterion, you'll need to implement it in your code to ensure that only the selected users have access to this new feature. This implementation is done through a technique called feature flagging. Some companies build this directly into their product, while others use third-party software like <strong><a href="https://launchdarkly.com/">LaunchDarkly</a></strong> for this purpose.</p></li><li><p><strong>Measurement:</strong> Just showing the new feature to the selected group is not enough. You also need the capability to measure the impact of this experiment through the data you gather. For instance, for an e-commerce company, the metric could be increased conversion rates. For a social network, it could be increased user engagement. For a SaaS company, it might be higher product usage. Measuring and reporting such impact is a lot of engineering work.</p></li><li><p><strong>Test Duration and Sample Size:</strong> It's important to run the A/B test for an adequate duration and on a substantial enough sample size. This helps minimize the impact of anomalies and ensures the credibility of the results obtained from the test.</p></li><li><p><strong>Evaluate Performance (Statistical Significance):</strong> Once you've started showcasing the new feature to a select user base and you're tracking the appropriate metrics, the next step is to evaluate the performance of your experiment. This evaluation requires some statistical analysis to determine whether the differences observed are statistically significant or merely due to chance. This step ensures the validity of your results and helps avoid false positives.</p></li></ul><h2><strong>A/B Testing Examples from Leading Companies</strong></h2><p>Some of the big tech companies are known to perform multiple A/B tests. Here are a few examples.</p><ul><li><p><strong>Google:</strong> This is one of the most cited examples of A/B testing. Google wasn&#8217;t able to decide which shade of blue to use in their ad links. They decided to A/B tested 41 different colours. This was a successful test as a result of the winning shade, their yearly income increased by an estimated $200 million!</p></li><li><p><strong>Airbnb:</strong> Airbnb ran A/B tests on their search result layouts. They tested a more prominent design of the price-per-night feature by moving it from the bottom to the results to the top. This resulted in higher user engagement.</p></li><li><p><strong>Uber:</strong> Uber performed an A/B test on their surge pricing feature. They wanted to test if they should display the surge price directly or show it as a multiplier or normal price (like 1.2x). The test results showed that people were more likely to accept surge pricing when the prices were shown directly rather than as a multiplier.</p></li><li><p><strong>Booking.com:</strong> Booking.com used A/B testing to decide whether showing hotel prices with or without tax led to higher conversion rates. They found out that showing the final price (including tax) from the start resulted in a more positive user experience and increased bookings.</p></li></ul><p>Note that all these companies run A/B tests regularly on a variety of features. These are just a few select examples.</p><p>I hope this article has offered you a clearer understanding of A/B testing. Until next time!</p>]]></content:encoded></item><item><title><![CDATA[What is an API?]]></title><description><![CDATA[Almost every software uses some APIs]]></description><link>https://modernsoftware.substack.com/p/api</link><guid isPermaLink="false">https://modernsoftware.substack.com/p/api</guid><dc:creator><![CDATA[Manish Sahajwani]]></dc:creator><pubDate>Wed, 06 Sep 2023 12:13:33 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ZBd0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5c73f89-4530-4305-9d21-ad9fe1d0db14_1920x1278.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZBd0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5c73f89-4530-4305-9d21-ad9fe1d0db14_1920x1278.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZBd0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5c73f89-4530-4305-9d21-ad9fe1d0db14_1920x1278.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ZBd0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5c73f89-4530-4305-9d21-ad9fe1d0db14_1920x1278.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ZBd0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5c73f89-4530-4305-9d21-ad9fe1d0db14_1920x1278.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ZBd0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5c73f89-4530-4305-9d21-ad9fe1d0db14_1920x1278.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZBd0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5c73f89-4530-4305-9d21-ad9fe1d0db14_1920x1278.jpeg" width="1456" height="969" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b5c73f89-4530-4305-9d21-ad9fe1d0db14_1920x1278.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:969,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;hero&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="hero" title="hero" srcset="https://substackcdn.com/image/fetch/$s_!ZBd0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5c73f89-4530-4305-9d21-ad9fe1d0db14_1920x1278.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ZBd0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5c73f89-4530-4305-9d21-ad9fe1d0db14_1920x1278.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ZBd0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5c73f89-4530-4305-9d21-ad9fe1d0db14_1920x1278.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ZBd0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5c73f89-4530-4305-9d21-ad9fe1d0db14_1920x1278.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>Image by <a href="https://unsplash.com/@cgower">Christopher Gower</a></em></figcaption></figure></div><p>If you work in a tech company, API is a term that you will hear about frequently in your workplace. This article is all about APIs.</p><h2><strong>API - What is it?</strong></h2><p>An API, or Application Programming Interface, is a piece of code that takes some inputs and gives you an output. An API is the primary way in which different software applications interact with each other and exchange information. That&#8217;s why the name. It&#8217;s the programmatic way for applications to interact with each other.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7ylC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0aacb02a-c241-4ec7-98f3-80943c0a3ec6_1000x489.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7ylC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0aacb02a-c241-4ec7-98f3-80943c0a3ec6_1000x489.jpeg 424w, https://substackcdn.com/image/fetch/$s_!7ylC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0aacb02a-c241-4ec7-98f3-80943c0a3ec6_1000x489.jpeg 848w, https://substackcdn.com/image/fetch/$s_!7ylC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0aacb02a-c241-4ec7-98f3-80943c0a3ec6_1000x489.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!7ylC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0aacb02a-c241-4ec7-98f3-80943c0a3ec6_1000x489.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7ylC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0aacb02a-c241-4ec7-98f3-80943c0a3ec6_1000x489.jpeg" width="1000" height="489" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0aacb02a-c241-4ec7-98f3-80943c0a3ec6_1000x489.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:489,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;How API Works&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="How API Works" title="How API Works" srcset="https://substackcdn.com/image/fetch/$s_!7ylC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0aacb02a-c241-4ec7-98f3-80943c0a3ec6_1000x489.jpeg 424w, https://substackcdn.com/image/fetch/$s_!7ylC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0aacb02a-c241-4ec7-98f3-80943c0a3ec6_1000x489.jpeg 848w, https://substackcdn.com/image/fetch/$s_!7ylC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0aacb02a-c241-4ec7-98f3-80943c0a3ec6_1000x489.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!7ylC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0aacb02a-c241-4ec7-98f3-80943c0a3ec6_1000x489.jpeg 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">How API Works</figcaption></figure></div><p>Let&#8217;s understand this with the help of a few examples.</p><h2><strong>Google Maps API</strong></h2><p>We all use google maps. Review our earlier article about <strong><a href="https://learnkraft.com/content/frontend-backend">backend and frontend</a></strong>, explaining how all software has a frontend and a backend.</p><p>In the case of Google Maps, the Mobile app and the Website are the two frontends. When you enter an address, it shows you the location on the map. What actually happens is that when you input an address, the frontend sends a request with the address as input to the Google Maps API. The API is a part of the Google Maps backend, which is waiting for the requests. Once it receives the request, it processes the request, runs all the magic it has to, fetches the coordinates (Lat and Long) and sends these coordinates as output to the frontend. The frontend then displays these coordinates on the map.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mVh6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F863ea97f-db1b-4081-ae5a-b37b3d1eed16_1000x947.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mVh6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F863ea97f-db1b-4081-ae5a-b37b3d1eed16_1000x947.jpeg 424w, https://substackcdn.com/image/fetch/$s_!mVh6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F863ea97f-db1b-4081-ae5a-b37b3d1eed16_1000x947.jpeg 848w, https://substackcdn.com/image/fetch/$s_!mVh6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F863ea97f-db1b-4081-ae5a-b37b3d1eed16_1000x947.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!mVh6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F863ea97f-db1b-4081-ae5a-b37b3d1eed16_1000x947.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mVh6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F863ea97f-db1b-4081-ae5a-b37b3d1eed16_1000x947.jpeg" width="1000" height="947" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/863ea97f-db1b-4081-ae5a-b37b3d1eed16_1000x947.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:947,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Google Maps API returns the location coordinates&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Google Maps API returns the location coordinates" title="Google Maps API returns the location coordinates" srcset="https://substackcdn.com/image/fetch/$s_!mVh6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F863ea97f-db1b-4081-ae5a-b37b3d1eed16_1000x947.jpeg 424w, https://substackcdn.com/image/fetch/$s_!mVh6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F863ea97f-db1b-4081-ae5a-b37b3d1eed16_1000x947.jpeg 848w, https://substackcdn.com/image/fetch/$s_!mVh6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F863ea97f-db1b-4081-ae5a-b37b3d1eed16_1000x947.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!mVh6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F863ea97f-db1b-4081-ae5a-b37b3d1eed16_1000x947.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Google Maps API returns the location coordinates</figcaption></figure></div><p>This sending a request is known as &#8216;Calling an API&#8217;. Along with the coordinates, the API could also return some other useful information that we see on the screen. Or this additional information could be coming from another API call made by the frontend. It all depends on how the development team decides to structure their APIs.</p><p>As we mentioned initially, each API is a piece of code that takes an input, performs some actions, and returns an output. Each such function is called through what we call an API endpoint. So, the API endpoint that we described above could be called &#8216;/getcoordinates&#8217; or something like this and its job is to receive addresses and return coordinates. Google Maps calls it Geocoding API. Similarly, everything that you do in Google Maps will be interfacing with a bunch of APIs in the backend.</p><p>Some more examples of Google Maps APIs:</p><ul><li><p><strong>Places API:</strong> This API provides information about places, which are defined as establishments, geographic locations, or prominent points of interest. When you search for restaurants near me, this API is at work to get the information.</p></li><li><p><strong>Directions API:</strong> This API provides directions between locations. It can give step-by-step instructions for various modes of transportation, like driving, walking, or public transit. This is what we use when we are travelling to new destinations.</p></li><li><p><strong>Traffic Data API:</strong> As you can guess, this is the API that adds traffic data to Google Maps when you are travelling.</p></li></ul><h2><strong>Public vs. Private APIs</strong></h2><p>At this point, it&#8217;s important to make one important distinction. An API can be a private or a public API.</p><p>In the example we saw above, it&#8217;s Google&#8217;s own front-end apps that are fetching and using the data from Google&#8217;s own backend/APIs. This is an internal usage of the API. Google may have 100s of APIs to create the full user experience on the Google Maps app.</p><p>Google may choose to make some of these API endpoints public so that other app developers can use these public APIs in their own apps. They will keep the other APIs private only for their own internal use.</p><h2><strong>Uber App&#8217;s Use of Google Maps</strong></h2><p>Uber is another app we all use regularly to book rides. When we book a ride, a few API calls are made behind the scene to fulfil your request.</p><h3><strong>Internal APIs</strong></h3><p>Many of the API calls made in Uber&#8217;s app will be to their own backend and internal APIs. Some examples are:</p><ul><li><p><strong>Authenticating the user:</strong> The user logs in and the API verifies your credentials</p></li><li><p><strong>Displaying available cars around you:</strong> To display available cars around you, Uber would call its own internal API to fetch data about nearby drivers.</p></li><li><p><strong>Calculating fare and ETA:</strong> Uber would call its internal APIs to calculate the estimated fare and time of arrival based on factors like distance, travel time, car type, and current demand.</p></li><li><p><strong>Finding the driver:</strong> You enter the pickup and destination address, and the API finds the driver for you.</p></li></ul><p>This is just an educated estimation of how their APIs might work. The actual functionality will be proprietary.</p><h3><strong>Public APIs</strong></h3><p>Along with these internal API calls, Uber also makes use of some public APIs in their app.</p><ul><li><p><strong>Maps:</strong> Uber doesn't have its map. Instead, it uses the API of Google Maps to show you the map within the Uber app. This is what a public API does. It allows Uber to use features from Google Maps, making your experience as a user seamless. Google Maps Geolocation API is used to determine and display your current location on the map. Uber may also use Google Maps Directions API to fetch the best path from your current location to your destination.</p></li><li><p><strong>Payments:</strong> If you decide to book the ride, and once the trip is completed, Uber would communicate with a Payment API (like Stripe, PayPal, or others) to handle the transaction.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2_-A!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20034b1d-2c48-4d44-aedf-7fe5b91586ba_1000x800.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2_-A!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20034b1d-2c48-4d44-aedf-7fe5b91586ba_1000x800.jpeg 424w, https://substackcdn.com/image/fetch/$s_!2_-A!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20034b1d-2c48-4d44-aedf-7fe5b91586ba_1000x800.jpeg 848w, https://substackcdn.com/image/fetch/$s_!2_-A!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20034b1d-2c48-4d44-aedf-7fe5b91586ba_1000x800.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!2_-A!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20034b1d-2c48-4d44-aedf-7fe5b91586ba_1000x800.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2_-A!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20034b1d-2c48-4d44-aedf-7fe5b91586ba_1000x800.jpeg" width="1000" height="800" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/20034b1d-2c48-4d44-aedf-7fe5b91586ba_1000x800.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:800,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Uber App&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Uber App" title="Uber App" srcset="https://substackcdn.com/image/fetch/$s_!2_-A!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20034b1d-2c48-4d44-aedf-7fe5b91586ba_1000x800.jpeg 424w, https://substackcdn.com/image/fetch/$s_!2_-A!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20034b1d-2c48-4d44-aedf-7fe5b91586ba_1000x800.jpeg 848w, https://substackcdn.com/image/fetch/$s_!2_-A!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20034b1d-2c48-4d44-aedf-7fe5b91586ba_1000x800.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!2_-A!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F20034b1d-2c48-4d44-aedf-7fe5b91586ba_1000x800.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Uber App</figcaption></figure></div><p>These are just some of the potential API calls that could be made. In reality, modern applications like Uber might make dozens or even hundreds of API calls for various tasks during the process of booking and completing a ride.</p><p>An interesting point to note is that Uber also has some public APIs which allow other developers to use Uber&#8217;s API to integrate some of their data and services into their app. But not all Uber APIs will be public. Only some will be.</p><p>To conclude, APIs are a crucial part of all modern software. They enable different software applications to communicate and share data and functionalities seamlessly.</p>]]></content:encoded></item><item><title><![CDATA[What is DevOps?]]></title><description><![CDATA[Software teams have a new way to collaborate]]></description><link>https://modernsoftware.substack.com/p/devops</link><guid isPermaLink="false">https://modernsoftware.substack.com/p/devops</guid><dc:creator><![CDATA[Manish Sahajwani]]></dc:creator><pubDate>Wed, 06 Sep 2023 12:09:04 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!C8wg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1fec7e7-0f76-4d10-9b0e-df8004e2ff40_1920x1080.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!C8wg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1fec7e7-0f76-4d10-9b0e-df8004e2ff40_1920x1080.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!C8wg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1fec7e7-0f76-4d10-9b0e-df8004e2ff40_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!C8wg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1fec7e7-0f76-4d10-9b0e-df8004e2ff40_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!C8wg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1fec7e7-0f76-4d10-9b0e-df8004e2ff40_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!C8wg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1fec7e7-0f76-4d10-9b0e-df8004e2ff40_1920x1080.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!C8wg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1fec7e7-0f76-4d10-9b0e-df8004e2ff40_1920x1080.jpeg" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c1fec7e7-0f76-4d10-9b0e-df8004e2ff40_1920x1080.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;hero&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="hero" title="hero" srcset="https://substackcdn.com/image/fetch/$s_!C8wg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1fec7e7-0f76-4d10-9b0e-df8004e2ff40_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!C8wg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1fec7e7-0f76-4d10-9b0e-df8004e2ff40_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!C8wg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1fec7e7-0f76-4d10-9b0e-df8004e2ff40_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!C8wg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1fec7e7-0f76-4d10-9b0e-df8004e2ff40_1920x1080.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">I<em>mage by <a href="https://unsplash.com/@growtika">Growtika</a></em></figcaption></figure></div><p>There is a positive buzz about DevOps among Tech companies, and not without reason. What is DevOps? DevOps is the new and improved way for tech companies to build and deliver software.</p><h2><strong>Dev and Ops - The traditional way</strong></h2><p>In a traditional setup, there are two teams that are responsible for building and delivering software to customers - the developers (&#8203;&#8203;who write the code) and the IT operations team (who deploy and maintain that code in a production environment). And these teams have worked in silos and haven&#8217;t played well with each other. Since the teams worked independently, it often led to yawning gaps and deep conflict between the two departments.</p><h2><strong>DevOps - The new way</strong></h2><p>DevOps is a combination of two words: Development (Dev) and Operations (Ops). DevOps is the modern approach to help software developers and IT operations work better and faster, together. It is a shift in the working philosophy between the two areas. DevOps signals a newer era of efficient collaboration.</p><p>In companies that follow DevOps practices, the developers and operations guys work together from the beginning. The emphasis is on collaboration between the teams. This means that people in both teams are concerned about each other's work. The developers are concerned about how the code is deployed to servers and the operations are concerned about the development.</p><h2><strong>Benefits of DevOps</strong></h2><p>When the teams collaborate in this way, it results in many benefits. It reduces the development cycle. The bug fixes and new features built by the dev team are deployed faster and more smoothly, sometimes multiple times a day. DevOps relies heavily on automation. Since the teams are collaborating, many things can be automated. For example, changes in code can be tested automated and made ready for deployment. This is a part of the Continuous Integration (CI) pipeline.</p><blockquote><p><em><strong>Continuous Integration is the practice of regularly merging code changes from all developers on a team into a main codebase. This process happens frequently, often multiple times per day, and it's accompanied by automated builds and tests to ensure that new changes don't break existing functionality.</strong></em></p></blockquote><p>Similarly, many parts of deployment can also be automated. This is commonly referred to as Continuous Deployment (CD). This allows for faster, more frequent deployments.</p><blockquote><p><em><strong>In Continuous Deployment, every change that passes all stages of your production pipeline is released to your users automatically. This is achieved through rigorous automated testing that ensures that you're only deploying quality code.</strong></em></p></blockquote><h2><strong>The DevOps Cycle</strong></h2><p>The DevOps cycle is a set of stages that software goes through during development. Since DevOps is a philosophy and a set of practices, these stages are not set in stone and can be different in different companies. The DevOps stages are represented by a very interesting symbol called Infinity Loop, which emphasizes that the process of software development and delivery is ongoing and cyclical, rather than linear.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zJDU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F084d464b-e49e-4e39-9b0d-d6e218026d49_1000x807.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zJDU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F084d464b-e49e-4e39-9b0d-d6e218026d49_1000x807.jpeg 424w, https://substackcdn.com/image/fetch/$s_!zJDU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F084d464b-e49e-4e39-9b0d-d6e218026d49_1000x807.jpeg 848w, https://substackcdn.com/image/fetch/$s_!zJDU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F084d464b-e49e-4e39-9b0d-d6e218026d49_1000x807.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!zJDU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F084d464b-e49e-4e39-9b0d-d6e218026d49_1000x807.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zJDU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F084d464b-e49e-4e39-9b0d-d6e218026d49_1000x807.jpeg" width="1000" height="807" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/084d464b-e49e-4e39-9b0d-d6e218026d49_1000x807.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:807,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;DevOps Loop&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="DevOps Loop" title="DevOps Loop" srcset="https://substackcdn.com/image/fetch/$s_!zJDU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F084d464b-e49e-4e39-9b0d-d6e218026d49_1000x807.jpeg 424w, https://substackcdn.com/image/fetch/$s_!zJDU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F084d464b-e49e-4e39-9b0d-d6e218026d49_1000x807.jpeg 848w, https://substackcdn.com/image/fetch/$s_!zJDU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F084d464b-e49e-4e39-9b0d-d6e218026d49_1000x807.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!zJDU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F084d464b-e49e-4e39-9b0d-d6e218026d49_1000x807.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">DevOps Loop</figcaption></figure></div><p>Let&#8217;s briefly look at these stages:</p><ul><li><p><strong>Plan:</strong> In stage involves planning new features and enhancements, creating specifications, and allocating resources for executing these changes.</p></li><li><p><strong>Code:</strong> In this stage, the developers write code for implementing the new features and improvements.</p></li><li><p><strong>Build:</strong> In this stage, the new code is prepared for production and is transformed into a form that can be deployed to servers or delivered to users. This process often involves the use of Continuous Integration (CI) tools that automate compiling the code, resolving dependencies, and packaging all components. For instance, for a mobile app, CI would include creating a new version of the app. For a web app, it's about making a deployable format that can be executed on a server. CI ensures this build process is consistent and errors are caught early.</p></li><li><p><strong>Test:</strong> In this stage, the new version of the software is tested to make sure it works correctly and meets the project's requirements.</p></li><li><p>Release: If the tests are successful, the new version of the software is prepared for release. This often involves uploading the new version in a staging environment that closely resembles the live environment.</p></li><li><p><strong>Deploy:</strong> The new version of the software is deployed to the live environment, replacing the old version. Deployment is often automated in a process called continuous deployment.</p></li><li><p><strong>Operate:</strong> The software is run in the live environment, where it is used by end users.</p></li><li><p><strong>Monitor:</strong> The operation of the software is continuously monitored to ensure it is working correctly and efficiently. Any problems are reported back to the team.</p></li></ul><h2><strong>Common Misconceptions</strong></h2><p>Let&#8217;s look at some common doubts about DevOps.</p><p><strong>Q: Is DevOps just about tools and technology?</strong></p><p><strong>A:</strong> No, DevOps isn't just about tools. While tools play an important role, DevOps is a cultural shift focusing on team collaboration.</p><p><strong>Q: Is DevOps only for tech companies or startups?</strong></p><p><strong>A:</strong> Not at all! Any organization that creates software can benefit from DevOps, from banks and healthcare providers to government agencies.</p><p><strong>Q: Does implementing DevOps mean we get rid of our operations team?</strong></p><p><strong>A:</strong> No way! DevOps is about getting developers and operations to work together, not removing operations. Both roles remain critical, but they collaborate more to streamline the process of delivering software.</p><p><strong>Q: Is DevOps a job role or a team within a company?</strong></p><p><strong>A:</strong> DevOps is more of a culture or a way of working, rather than a specific role or team. Although some firms have a 'DevOps team', it's mainly about embracing the DevOps values of teamwork and automation throughout all development and operations tasks.</p><p>To conclude, DevOps is a way of working that emphasizes collaboration between the teams that create software and the teams that ensure the software is delivered and works well. It promotes quick feedback, constant improvement, and automation, aimed at delivering software faster, with higher quality and reliability.</p>]]></content:encoded></item><item><title><![CDATA[What is a Data Lake]]></title><description><![CDATA[Data Lakes: A place for all your information]]></description><link>https://modernsoftware.substack.com/p/data-lake</link><guid isPermaLink="false">https://modernsoftware.substack.com/p/data-lake</guid><dc:creator><![CDATA[Manish Sahajwani]]></dc:creator><pubDate>Wed, 06 Sep 2023 11:55:14 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!1MNy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F052c70d6-c60b-47ae-a6fc-f313aafc7239_1920x1280.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1MNy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F052c70d6-c60b-47ae-a6fc-f313aafc7239_1920x1280.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1MNy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F052c70d6-c60b-47ae-a6fc-f313aafc7239_1920x1280.jpeg 424w, https://substackcdn.com/image/fetch/$s_!1MNy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F052c70d6-c60b-47ae-a6fc-f313aafc7239_1920x1280.jpeg 848w, https://substackcdn.com/image/fetch/$s_!1MNy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F052c70d6-c60b-47ae-a6fc-f313aafc7239_1920x1280.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!1MNy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F052c70d6-c60b-47ae-a6fc-f313aafc7239_1920x1280.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1MNy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F052c70d6-c60b-47ae-a6fc-f313aafc7239_1920x1280.jpeg" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/052c70d6-c60b-47ae-a6fc-f313aafc7239_1920x1280.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;hero&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="hero" title="hero" srcset="https://substackcdn.com/image/fetch/$s_!1MNy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F052c70d6-c60b-47ae-a6fc-f313aafc7239_1920x1280.jpeg 424w, https://substackcdn.com/image/fetch/$s_!1MNy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F052c70d6-c60b-47ae-a6fc-f313aafc7239_1920x1280.jpeg 848w, https://substackcdn.com/image/fetch/$s_!1MNy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F052c70d6-c60b-47ae-a6fc-f313aafc7239_1920x1280.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!1MNy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F052c70d6-c60b-47ae-a6fc-f313aafc7239_1920x1280.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>Image by <a href="https://unsplash.com/@floregi">Flo Regi</a></em></figcaption></figure></div><p>Companies are collecting more and more data every day, which comes in all formats and is not necessarily well structured. To store these vast amounts of data, companies are building data lakes. In this article, let's understand what data lakes are.</p><p>Before we get to the concept of a data lake, let&#8217;s first make sure we understand a few concepts about how companies store data.</p><blockquote><h3><em><strong>Production Database</strong></em></h3><p><em>For any application, such as accounting software, or HR software, all the data is stored in a database. This is the core database that&#8217;s required for storing the essential data including things such as user profiles, customers data, orders data, payment transactions data, inventory data and so on. As people use the software, the data is exchanged using simple read-and-write operations. This database is the lifeline of the software. Such a database is referred to as a production database.</em></p><h3><em><strong>Data Warehouse</strong></em></h3><p><em>Most companies need some form of reporting or analytical layer on top of this data. Sometimes reports are quite simple. For example, the management wants to see a report of all the orders that were shipped the previous day. Such reports are easy to generate and can be created by running simple SQL queries on the production database.</em></p></blockquote><p>Most often, companies need much more complex reporting with data coming from multiple data sources. For example, the company&#8217;s sales data will be coming from an eCommerce platform or third-party retailers, their marketing data will be in marketing platforms like Google Ads, Mailchimp, etc, and payment data will come from a payments processor such as Stripe.</p><p>In such a scenario, companies create a special place for data, called a data warehouse, where data is aggregated from all these sources, and stored specifically for analytical purposes.</p><p>In a data warehouse, companies can store vast amounts of historical data on which they can perform all kinds of analytics such as trend analysis, and forecasting. Unlike production databases, these data warehouses are optimized for complex queries and data analysis. Data warehouses are a key component of Business Intelligence (BI). They provide the processed and organized data that BI tools need to create reports, dashboards, and visualizations.</p><p>So, a business has a production database (which handles your day-to-day operational needs) as well as a data warehouse (which is structured and used for reporting and analysis). What comes next? A data lake, you say?</p><p>A data lake is like a vast reservoir where you can store all kinds of data, structured or unstructured, for long-term use. Not all the data is used immediately; some is stored for special cases or future analysis.</p><h2><strong>Why have a Data Lake?</strong></h2><p>Companies generate two types of data: Structured (like user data, order details, etc.) and Unstructured (log data, website views and clicks, product usage data, etc.). A Data Lake can hold both these types, making it a versatile tool in a company's data stack.</p><p>A data lake is a large-scale storage repository that holds raw data in its native format until it is needed. So, the data is just dumped in its raw, unprocessed form, without any transformation or cleansing. Only when specific data is needed, the data is retrieved, processed and analysed as per the need. Data lakes are equipped with robust data governance strategies to ensure data is catalogued, tagged, and meta-data is maintained so that the data remains searchable and usable.</p><h2><strong>Data Lakes vs. Data Warehouses</strong></h2><p>Data Lakes are often compared to Data Warehouses. The latter is ideal for structured data with predefined schemas, while the former suits unstructured data without any specific structure. This makes Data Lakes a good fit for special use case data.</p><p>The beauty of Data Lakes is the 'Schema-on-Read' concept. This means you can just throw in data without defining its structure beforehand. When you need to use it, that's when you structure it. This grants flexibility but also requires good data hygiene.</p><p>Data Lakes &amp; Data Warehouses often work together. Companies typically start with a warehouse &amp; then invest in a lake as unstructured data grows. So it's not about choosing between them but about leveraging them effectively.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!35Wt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09defc27-66d1-4da0-8086-05f09aef008e_1000x1021.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!35Wt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09defc27-66d1-4da0-8086-05f09aef008e_1000x1021.jpeg 424w, https://substackcdn.com/image/fetch/$s_!35Wt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09defc27-66d1-4da0-8086-05f09aef008e_1000x1021.jpeg 848w, https://substackcdn.com/image/fetch/$s_!35Wt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09defc27-66d1-4da0-8086-05f09aef008e_1000x1021.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!35Wt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09defc27-66d1-4da0-8086-05f09aef008e_1000x1021.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!35Wt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09defc27-66d1-4da0-8086-05f09aef008e_1000x1021.jpeg" width="1000" height="1021" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/09defc27-66d1-4da0-8086-05f09aef008e_1000x1021.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1021,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Data Warehouse vs Data Lake&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Data Warehouse vs Data Lake" title="Data Warehouse vs Data Lake" srcset="https://substackcdn.com/image/fetch/$s_!35Wt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09defc27-66d1-4da0-8086-05f09aef008e_1000x1021.jpeg 424w, https://substackcdn.com/image/fetch/$s_!35Wt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09defc27-66d1-4da0-8086-05f09aef008e_1000x1021.jpeg 848w, https://substackcdn.com/image/fetch/$s_!35Wt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09defc27-66d1-4da0-8086-05f09aef008e_1000x1021.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!35Wt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F09defc27-66d1-4da0-8086-05f09aef008e_1000x1021.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Data Warehouse vs Data Lake</figcaption></figure></div><h2><strong>Use Cases for Data Lakes</strong></h2><p>The huge amounts of data stored in data lakes can allow a company to perform a variety of analyses to improve its business. Some areas include big data analytics, artificial intelligence and machine learning, and even real-time analytics. Let&#8217;s look at some examples:</p><ul><li><p>An e-commerce company can store and analyze massive volumes of transactional data, customer behaviour, product reviews, and clickstream data. This can help them identify sales trends, peak shopping periods, and customer preferences.</p></li><li><p>A hospital can use a data lake to store a variety of data such as medical records, lab reports, imaging data, and patient histories. They can train machine learning models on this data which can then help them in predicting disease patterns, help in diagnostics, and personalize patient treatment plans.</p></li><li><p>Financial institutions can use data lakes to perform real-time analytics by monitoring and analyzing real-time transactions. This can help with identifying fraud in real time and safeguard their customers.</p></li></ul><h2><strong>Data Lake Solutions</strong></h2><p>Companies create data lakes using a variety of solutions. The popular choices for Data Lakes are often the native object storage products of major cloud providers, like AWS&#8217;s S3. Some of the solutions are mentioned below:</p><ul><li><p>Amazon Web Services (AWS) offers S3 coupled with Lake Formation</p></li><li><p>Microsoft Azure Data Lake Storage</p></li><li><p>Google Cloud Storage</p></li><li><p>Cloudera Data Platform for organizations seeking hybrid solutions</p></li><li><p>Databricks' Delta Lake stands out with its approach to merging the strengths of data warehouses &amp; lakes</p></li></ul><p>To conclude, data lakes are a powerful, flexible solution for storing vast amounts of raw data, that can be used for varied analytical tasks. They are key to unlocking valuable insights and making informed decisions in today&#8217;s data-driven business world.</p>]]></content:encoded></item><item><title><![CDATA[How Does a Content Delivery Network (CDN) Work]]></title><description><![CDATA[CDNs make apps and sites load faster, irrespective of the users' geographical location.]]></description><link>https://modernsoftware.substack.com/p/cdn</link><guid isPermaLink="false">https://modernsoftware.substack.com/p/cdn</guid><dc:creator><![CDATA[Manish Sahajwani]]></dc:creator><pubDate>Wed, 06 Sep 2023 11:51:34 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!OP9y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c117912-f157-4a67-a7f8-5810fc431845_1280x853.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!OP9y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c117912-f157-4a67-a7f8-5810fc431845_1280x853.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!OP9y!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c117912-f157-4a67-a7f8-5810fc431845_1280x853.jpeg 424w, https://substackcdn.com/image/fetch/$s_!OP9y!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c117912-f157-4a67-a7f8-5810fc431845_1280x853.jpeg 848w, https://substackcdn.com/image/fetch/$s_!OP9y!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c117912-f157-4a67-a7f8-5810fc431845_1280x853.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!OP9y!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c117912-f157-4a67-a7f8-5810fc431845_1280x853.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!OP9y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c117912-f157-4a67-a7f8-5810fc431845_1280x853.jpeg" width="1280" height="853" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9c117912-f157-4a67-a7f8-5810fc431845_1280x853.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:853,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;hero&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="hero" title="hero" srcset="https://substackcdn.com/image/fetch/$s_!OP9y!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c117912-f157-4a67-a7f8-5810fc431845_1280x853.jpeg 424w, https://substackcdn.com/image/fetch/$s_!OP9y!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c117912-f157-4a67-a7f8-5810fc431845_1280x853.jpeg 848w, https://substackcdn.com/image/fetch/$s_!OP9y!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c117912-f157-4a67-a7f8-5810fc431845_1280x853.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!OP9y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c117912-f157-4a67-a7f8-5810fc431845_1280x853.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>Image by <a href="https://pixabay.com/users/geralt-9301/">Gerd Altmann</a></em></figcaption></figure></div><p>One of the most frustrating problems on the Internet is when you visit a website but it&#8217;s just too slow. You wait for a few seconds and if it&#8217;s still not loaded, you lose interest and you are back to Google, searching for something else. Slow loading is one of the biggest causes for visitors to leave the site.</p><p>There could be many reasons why a website is slow. It could be a slow server located somewhere very far from the user. It could be some complex code which makes the page load slowly as it takes time to process. Or it could be various assets such as images, videos, stylesheets (CSS files), and javascript files, which all take time to load.</p><p>One of the ways companies make their websites load faster is by using Content Delivery Networks, also commonly referred to as CDNs. In this article, let&#8217;s learn about what CDNs do and how they make websites fast.</p><h2><strong>When there is no CDN</strong></h2><p>Typically, a website lives somewhere on a server located in some part of the world. When a user requests to visit the website, the request is made to the server, and in response, the server sends all the website content which is then shown to the user on their device. Now imagine the user is in India and the server is in New York. What just happened is similar to someone in India asking a delivery truck to travel from New York to India to deliver a package. In terms of data, this is a significant distance to travel, and depending on the quality of the network and other factors, it could take some time. All this makes the website load slowly for the user.</p><p>Content delivery networks solve this problem.</p><h2><strong>How a CDN Works</strong></h2><p>As the name suggests, a CDN is a content delivery network. The content in the case of a website includes all the things that it loads, including the images, videos, stylesheets, javascript files, and any other files that are needed to load the website.</p><p>A CDN stores a copy of your website&#8217;s data on multiple servers strategically located around the world such that your website&#8217;s data is always close to its users.</p><p>When a user requests a website, the CDN steps in, and instead of requesting the website from the origin server, it routes the request to the server in the CDN network that is closest to the user&#8217;s location. This makes the trip much shorter for the data and hence the website loads faster for the user.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TMox!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3aa601fc-64f0-40b0-b9a6-474e89cd410f_1000x779.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TMox!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3aa601fc-64f0-40b0-b9a6-474e89cd410f_1000x779.jpeg 424w, https://substackcdn.com/image/fetch/$s_!TMox!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3aa601fc-64f0-40b0-b9a6-474e89cd410f_1000x779.jpeg 848w, https://substackcdn.com/image/fetch/$s_!TMox!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3aa601fc-64f0-40b0-b9a6-474e89cd410f_1000x779.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!TMox!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3aa601fc-64f0-40b0-b9a6-474e89cd410f_1000x779.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TMox!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3aa601fc-64f0-40b0-b9a6-474e89cd410f_1000x779.jpeg" width="1000" height="779" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3aa601fc-64f0-40b0-b9a6-474e89cd410f_1000x779.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:779,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;How CDN Works&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="How CDN Works" title="How CDN Works" srcset="https://substackcdn.com/image/fetch/$s_!TMox!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3aa601fc-64f0-40b0-b9a6-474e89cd410f_1000x779.jpeg 424w, https://substackcdn.com/image/fetch/$s_!TMox!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3aa601fc-64f0-40b0-b9a6-474e89cd410f_1000x779.jpeg 848w, https://substackcdn.com/image/fetch/$s_!TMox!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3aa601fc-64f0-40b0-b9a6-474e89cd410f_1000x779.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!TMox!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3aa601fc-64f0-40b0-b9a6-474e89cd410f_1000x779.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">How CDN Works</figcaption></figure></div><h2><strong>Benefits of CDNs</strong></h2><p>Apart from speed, CDNs help websites in many ways:</p><ul><li><p>Better user experience</p></li><li><p>Reduced bounce rates. Users tend to move away from websites that load slowly</p></li><li><p>Increased content availability and redundancy. Since your website content is stored on multiple servers, if one goes down, the other server can serve the website to the users.</p></li><li><p>Reducing bandwidth costs</p></li><li><p>Improved website security</p></li></ul><h2><strong>CDN Service Providers</strong></h2><p>Fortunately, website owners don&#8217;t have to set up their own CDNs. Many companies provide top-class CDN services that help you optimize your website&#8217;s performance. Some of the leading names in the industry are:</p><ul><li><p>Akamai</p></li><li><p>Cloudflare</p></li><li><p>Amazon Cloud Front</p></li><li><p>Fastly</p></li><li><p>CDN77</p></li><li><p>Microsoft Azure CDN</p></li><li><p>Google Cloud CDN</p></li></ul><p>Each of these companies has its specialities and differentiating features.</p><h2><strong>Conclusion</strong></h2><p>Everyone wants websites to load quickly, work smoothly, and be safe to use. CDNs help make this happen by keeping a copy of the website close to users, no matter where in the world they are.</p><p>So, the next time you're browsing the web and a website loads quickly, chances are there's a CDN working hard behind the scenes, to make it reach you faster.</p>]]></content:encoded></item><item><title><![CDATA[What is Serverless]]></title><description><![CDATA[Understand what serverless computing means and its practical applications]]></description><link>https://modernsoftware.substack.com/p/what-is-serverles</link><guid isPermaLink="false">https://modernsoftware.substack.com/p/what-is-serverles</guid><dc:creator><![CDATA[Manish Sahajwani]]></dc:creator><pubDate>Wed, 06 Sep 2023 11:47:48 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!OUgP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85ca4c39-9dbe-402a-a3b7-0649112598ac_1920x1282.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!OUgP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85ca4c39-9dbe-402a-a3b7-0649112598ac_1920x1282.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!OUgP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85ca4c39-9dbe-402a-a3b7-0649112598ac_1920x1282.jpeg 424w, https://substackcdn.com/image/fetch/$s_!OUgP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85ca4c39-9dbe-402a-a3b7-0649112598ac_1920x1282.jpeg 848w, https://substackcdn.com/image/fetch/$s_!OUgP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85ca4c39-9dbe-402a-a3b7-0649112598ac_1920x1282.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!OUgP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85ca4c39-9dbe-402a-a3b7-0649112598ac_1920x1282.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!OUgP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85ca4c39-9dbe-402a-a3b7-0649112598ac_1920x1282.jpeg" width="1456" height="972" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/85ca4c39-9dbe-402a-a3b7-0649112598ac_1920x1282.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:972,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;hero&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="hero" title="hero" srcset="https://substackcdn.com/image/fetch/$s_!OUgP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85ca4c39-9dbe-402a-a3b7-0649112598ac_1920x1282.jpeg 424w, https://substackcdn.com/image/fetch/$s_!OUgP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85ca4c39-9dbe-402a-a3b7-0649112598ac_1920x1282.jpeg 848w, https://substackcdn.com/image/fetch/$s_!OUgP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85ca4c39-9dbe-402a-a3b7-0649112598ac_1920x1282.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!OUgP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85ca4c39-9dbe-402a-a3b7-0649112598ac_1920x1282.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>Photo by <a href="https://unsplash.com/@sortino">Joshua Sortino</a></em></figcaption></figure></div><p>How is it possible for a web app to be serverless? Well, it&#8217;s not! Any app or website on the Internet is running on a server located somewhere. The term &#8216;serverless&#8217; is quite confusing in that sense. But hold on, this is not the first time that some technology is referred to by a name that doesn&#8217;t make sense.</p><h2><strong>Serverless - Definition</strong></h2><p>The term &#8216;serverless&#8217; is used to describe the scenario where you don&#8217;t have to manage the server at all. In fact, you&#8217;re completely oblivious to the server setup and what&#8217;s going on inside of it. You don&#8217;t have to worry about the hardware, operating system, or even the software running on the server. You just focus on building the software, and when the time comes to show it to the world, you deploy your code on a serverless service and they take care of the rest and make it available for everyone to see and use.</p><h2><strong>Serverless Functions</strong></h2><p>One of the most common use cases of serverless is to execute some backend code in response to an event such as an API request. These bits of backend code that we&#8217;re executing are called functions. One popular service that allows you to deploy and execute functions is called AWS Lambda functions. Let&#8217;s take an example to understand how it works.</p><ol><li><p>Let&#8217;s say you have a popular website where users can signup or register to use the website. When a user fills out the registration form on your website and clicks the &#8216;Register&#8217; button, it sends a signal (an event) to the AWS Lambda function.</p></li><li><p>A Lambda function is a piece of code that&#8217;s running on AWS. This lambda function&#8217;s job is to handle the registration, i.e., to receive the user&#8217;s details and add them to a database. The Lambda function is always waiting for the registration events so that it can get to work and execute it. This &#8217;waiting&#8217; is also called listening to events.</p></li><li><p>As soon as the registration page sends this event, the Lambda function receives it and does its work. It takes the user details received and adds them to a database.</p></li><li><p>Once done, the Lambda function goes back to waiting for the next event.</p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!O7Ud!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38f7280b-eb7c-400c-91c3-212f53e61ae9_1000x645.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!O7Ud!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38f7280b-eb7c-400c-91c3-212f53e61ae9_1000x645.jpeg 424w, https://substackcdn.com/image/fetch/$s_!O7Ud!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38f7280b-eb7c-400c-91c3-212f53e61ae9_1000x645.jpeg 848w, https://substackcdn.com/image/fetch/$s_!O7Ud!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38f7280b-eb7c-400c-91c3-212f53e61ae9_1000x645.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!O7Ud!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38f7280b-eb7c-400c-91c3-212f53e61ae9_1000x645.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!O7Ud!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38f7280b-eb7c-400c-91c3-212f53e61ae9_1000x645.jpeg" width="1000" height="645" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/38f7280b-eb7c-400c-91c3-212f53e61ae9_1000x645.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:645,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;How serverless functions work&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="How serverless functions work" title="How serverless functions work" srcset="https://substackcdn.com/image/fetch/$s_!O7Ud!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38f7280b-eb7c-400c-91c3-212f53e61ae9_1000x645.jpeg 424w, https://substackcdn.com/image/fetch/$s_!O7Ud!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38f7280b-eb7c-400c-91c3-212f53e61ae9_1000x645.jpeg 848w, https://substackcdn.com/image/fetch/$s_!O7Ud!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38f7280b-eb7c-400c-91c3-212f53e61ae9_1000x645.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!O7Ud!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38f7280b-eb7c-400c-91c3-212f53e61ae9_1000x645.jpeg 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">How serverless functions work</figcaption></figure></div><p>In a traditional setup, you would have set up a server to execute this code and paid a monthly fee for the server. However, with AWS Lambda, you didn&#8217;t have to worry about the server at all. And you don&#8217;t even have to pay for the whole month. You only pay for the when the function is actually working (processing an event). You pay nothing for the time it's waiting. This makes serverless functions much more cost-effective than having your own servers (server-full setup as some would call it).</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!kQqe!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6849c638-77b2-4f02-a61f-f0bab5a6982c_800x681.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kQqe!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6849c638-77b2-4f02-a61f-f0bab5a6982c_800x681.jpeg 424w, https://substackcdn.com/image/fetch/$s_!kQqe!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6849c638-77b2-4f02-a61f-f0bab5a6982c_800x681.jpeg 848w, https://substackcdn.com/image/fetch/$s_!kQqe!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6849c638-77b2-4f02-a61f-f0bab5a6982c_800x681.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!kQqe!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6849c638-77b2-4f02-a61f-f0bab5a6982c_800x681.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kQqe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6849c638-77b2-4f02-a61f-f0bab5a6982c_800x681.jpeg" width="800" height="681" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6849c638-77b2-4f02-a61f-f0bab5a6982c_800x681.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:681,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Benefits of Serverless Computing&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Benefits of Serverless Computing" title="Benefits of Serverless Computing" srcset="https://substackcdn.com/image/fetch/$s_!kQqe!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6849c638-77b2-4f02-a61f-f0bab5a6982c_800x681.jpeg 424w, https://substackcdn.com/image/fetch/$s_!kQqe!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6849c638-77b2-4f02-a61f-f0bab5a6982c_800x681.jpeg 848w, https://substackcdn.com/image/fetch/$s_!kQqe!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6849c638-77b2-4f02-a61f-f0bab5a6982c_800x681.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!kQqe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6849c638-77b2-4f02-a61f-f0bab5a6982c_800x681.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Benefits of Serverless Computing</figcaption></figure></div><h2><strong>Examples of Serverless Functions</strong></h2><p>Above, we saw an example of how a Lambda function can be sued to perform a backend task, like registering a user. Serverless functions can do a variety of tasks as you can write complex code in these functions to perform tasks for your needs. They can even interact with third-party APIs and services to complete the tasks. Here are a few examples:</p><ul><li><p><strong>Image Processing:</strong> When a user uploads an image to your application, a serverless function can be triggered to perform operations like resizing the image, compressing it, or applying filters.</p></li><li><p><strong>Data Transformation:</strong> A serverless function can be used to transform data from one format to another. For example, when an Excel file is uploaded, a cloud function is triggered to convert it into a CSV or a JSON file.</p></li><li><p><strong>Notifications:</strong> We can use the serverless functions to send notifications (email, sms, push) in response to events such as user registration, password change, friend request in a social media app, etc.</p></li><li><p><strong>Scheduled Tasks:</strong> Serverless functions can be used to perform periodic tasks, such as backups or updating analytics dashboards. Instead of triggering these functions by events in your app, you can trigger them using a timer.</p></li><li><p><strong>Real-time File Processing:</strong> When a user uploads a file, a serverless function can be used to process the file in real time. For example, extracting text from a PDF file or analyzing an uploaded audio file.</p></li><li><p><strong>Data Validation:</strong> When data is received (from user input, or third-party services), a serverless function could be used to validate this data before it's processed or stored.</p></li></ul><h2><strong>Is Everything Serverless?</strong></h2><p>If you remember from our article on <strong><a href="https://learnkraft.com/content/front-end-backend">backend and frontend</a></strong>, there are many parts that go into making a web app run smoothly. There is the frontend, and then there are backend services such as the API, the database and so on. The above example was of a backend task. It&#8217;s not necessary that the entire stack of a web app is serverless. You can still have some things running on the server managed by you (like your frontend or database), while the other things (backend tasks) are deployed as serverless functions. Technically, it&#8217;s possible to adopt serverless for everything. However, it may not always be productive.</p><h2><strong>Examples of Serverless Providers</strong></h2><p>All big cloud providers and many small players provide serverless products for a variety of services. Here I&#8217;ve listed a few examples categorized by the type of service.</p><h3><strong>Cloud Functions</strong></h3><p>Using these cloud functions, you have the ability to deploy your backend as numerous distinct functions, with each one executing a specific task. This is the most commonly used serverless tech. Some examples:</p><ul><li><p>AWS Lambda</p></li><li><p>GCP Cloud Functions</p></li><li><p>Azure Functions</p></li></ul><h3><strong>Frontend</strong></h3><p>While serverless architecture is generally associated with backend processes such as APIs, and data processing, with advancements in web technologies, serverless has found its use in frontend services as well. We can use serverless concepts to serve frontend assets and perform frontend operations. An example of this would be a website built using Nextjs and deployed on Vercel.</p><h3><strong>Serverless Database</strong></h3><p>Serverless databases automatically manage the infrastructure for you, allowing you to focus on your data rather than on maintaining and scaling your database. With these databases, there are no servers to provision, or manage, and no software to install, maintain, or operate. They provide automatic scaling, high availability, and high performance. Some examples:</p><ul><li><p><strong>Amazon DynamoDB:</strong> A NoSQL database offered by AWS</p></li><li><p><strong>Google Cloud Firestore:</strong> A NoSQL database offered by Google Cloud</p></li><li><p><strong>Azure Cosmos DB:</strong> A multi-model database offered by Microsoft Azure. It supports various data models, including document, graph, key-value, table, and column-family data models.</p></li><li><p><strong>AWS Aurora Serverless:</strong> A relational serverless database offered by AWS. It supports SQL and PostgreSQL.</p></li></ul><p>A lot of interesting services are coming up in this space. Some examples are Vercel (Static sites and serverless functions), FaunaDB (NoSQL database), BigQuery (Data warehouse), Neon (Serverless Postgres database), and Netlify (hosting and serverless backend services).</p><p>I hope this article helped you clarify some doubts about serverless tech. Make sure you watch out for new products and services emerging in the serverless world.</p>]]></content:encoded></item><item><title><![CDATA[What are Backend and Frontend]]></title><description><![CDATA[A simple guide to backend and frontend, the building blocks of web development.]]></description><link>https://modernsoftware.substack.com/p/frontend-backend</link><guid isPermaLink="false">https://modernsoftware.substack.com/p/frontend-backend</guid><dc:creator><![CDATA[Manish Sahajwani]]></dc:creator><pubDate>Wed, 06 Sep 2023 03:18:25 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!NhOb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80a8b337-8f4d-4119-8c1d-42927be8fca5_5184x3456.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!NhOb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80a8b337-8f4d-4119-8c1d-42927be8fca5_5184x3456.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NhOb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80a8b337-8f4d-4119-8c1d-42927be8fca5_5184x3456.jpeg 424w, https://substackcdn.com/image/fetch/$s_!NhOb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80a8b337-8f4d-4119-8c1d-42927be8fca5_5184x3456.jpeg 848w, https://substackcdn.com/image/fetch/$s_!NhOb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80a8b337-8f4d-4119-8c1d-42927be8fca5_5184x3456.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!NhOb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80a8b337-8f4d-4119-8c1d-42927be8fca5_5184x3456.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NhOb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80a8b337-8f4d-4119-8c1d-42927be8fca5_5184x3456.jpeg" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/80a8b337-8f4d-4119-8c1d-42927be8fca5_5184x3456.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;hero&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="hero" title="hero" srcset="https://substackcdn.com/image/fetch/$s_!NhOb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80a8b337-8f4d-4119-8c1d-42927be8fca5_5184x3456.jpeg 424w, https://substackcdn.com/image/fetch/$s_!NhOb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80a8b337-8f4d-4119-8c1d-42927be8fca5_5184x3456.jpeg 848w, https://substackcdn.com/image/fetch/$s_!NhOb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80a8b337-8f4d-4119-8c1d-42927be8fca5_5184x3456.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!NhOb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80a8b337-8f4d-4119-8c1d-42927be8fca5_5184x3456.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>Photo by <a href="https://unsplash.com/@alvarordesign">Alvaro Reyes</a></em></figcaption></figure></div><p>At Learn Kraft, my goal is to help you become knowledgeable about software development. While I&#8217;ve been researching the topics to write on, one common concept that needs explaining everywhere is the difference between Frontend and Backend. In this article, I will explain what the terms frontend and backend mean, the difference between the two, how to identify them, their components, and a real-life example. Let&#8217;s get started.</p><h2><strong>Frontend Vs Backend - Analogy</strong></h2><p>Every application that you use, whether a web app or a mobile app is made up of two parts - frontend and backend. Even this website where you&#8217;re reading this article has a frontend and a backend.</p><p>The most commonly used analogy for the backend and frontend is that of a restaurant.</p><ul><li><p>In a restaurant, we have a dining area with beautiful interiors, tables and chairs, a menu, waiters, and most importantly the food that is served to you. These are all the things that you interact with in a restaurant as a customer. In software terminology, this is the frontend of the restaurant - everything that you the user interact with.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ute4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F354be1f5-f9b5-43a4-a3de-8c201cbb54c2_3840x2880.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ute4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F354be1f5-f9b5-43a4-a3de-8c201cbb54c2_3840x2880.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ute4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F354be1f5-f9b5-43a4-a3de-8c201cbb54c2_3840x2880.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ute4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F354be1f5-f9b5-43a4-a3de-8c201cbb54c2_3840x2880.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ute4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F354be1f5-f9b5-43a4-a3de-8c201cbb54c2_3840x2880.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ute4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F354be1f5-f9b5-43a4-a3de-8c201cbb54c2_3840x2880.jpeg" width="1456" height="1092" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/354be1f5-f9b5-43a4-a3de-8c201cbb54c2_3840x2880.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1092,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image of a restaurant&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Image of a restaurant" title="Image of a restaurant" srcset="https://substackcdn.com/image/fetch/$s_!ute4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F354be1f5-f9b5-43a4-a3de-8c201cbb54c2_3840x2880.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ute4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F354be1f5-f9b5-43a4-a3de-8c201cbb54c2_3840x2880.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ute4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F354be1f5-f9b5-43a4-a3de-8c201cbb54c2_3840x2880.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ute4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F354be1f5-f9b5-43a4-a3de-8c201cbb54c2_3840x2880.jpeg 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Image of a restaurant Photo by <a href="https://unsplash.com/@shawnanggg">shawnanggg</a></figcaption></figure></div><ul><li><p>But that&#8217;s not the entire story of what makes up a restaurant. A restaurant has a backend too. That&#8217;s the area that you as a customer never see but is crucial for running the restaurant. The backend includes the kitchen, the pantry with all the ingredients, the chefs who cook the food, and the utensils. It also includes things that are not tangible, such as the logistics of buying the raw ingredients, and processes for quality control. If anything goes wrong in the backend, it impacts the customer experience in the frontend (sitting in the dining area).</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PQnq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99538dbd-d057-4014-8883-d8f697917369_3840x2775.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PQnq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99538dbd-d057-4014-8883-d8f697917369_3840x2775.jpeg 424w, https://substackcdn.com/image/fetch/$s_!PQnq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99538dbd-d057-4014-8883-d8f697917369_3840x2775.jpeg 848w, https://substackcdn.com/image/fetch/$s_!PQnq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99538dbd-d057-4014-8883-d8f697917369_3840x2775.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!PQnq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99538dbd-d057-4014-8883-d8f697917369_3840x2775.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PQnq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99538dbd-d057-4014-8883-d8f697917369_3840x2775.jpeg" width="1456" height="1052" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/99538dbd-d057-4014-8883-d8f697917369_3840x2775.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1052,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image of a restaurant kitchen&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Image of a restaurant kitchen" title="Image of a restaurant kitchen" srcset="https://substackcdn.com/image/fetch/$s_!PQnq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99538dbd-d057-4014-8883-d8f697917369_3840x2775.jpeg 424w, https://substackcdn.com/image/fetch/$s_!PQnq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99538dbd-d057-4014-8883-d8f697917369_3840x2775.jpeg 848w, https://substackcdn.com/image/fetch/$s_!PQnq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99538dbd-d057-4014-8883-d8f697917369_3840x2775.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!PQnq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99538dbd-d057-4014-8883-d8f697917369_3840x2775.jpeg 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Image of a restaurant kitchen Photo by <a href="https://unsplash.com/@louishansel">Louis Hansel</a></figcaption></figure></div><p>In the context of a web application, the frontend is the user interface - the design, the buttons, the colors - everything the user sees and interacts with directly. On the other hand, the backend includes everything that goes behind the scenes. This includes the server, the database, the APIs, and everything that&#8217;s required to provide a good front-end experience to the users.</p><h2><strong>Identify Frontend and Backend</strong></h2><p>Let&#8217;s take the example of this website and try to identify the frontend and backend parts of it.</p><p>Let&#8217;s say you arrived at the Learn Kraft website and clicked on the article link that says &#8216;Cloud Computing&#8217;.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!HLRG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb71f8a0f-db4b-4a4b-a242-4ce547b901e9_1850x550.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HLRG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb71f8a0f-db4b-4a4b-a242-4ce547b901e9_1850x550.png 424w, https://substackcdn.com/image/fetch/$s_!HLRG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb71f8a0f-db4b-4a4b-a242-4ce547b901e9_1850x550.png 848w, https://substackcdn.com/image/fetch/$s_!HLRG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb71f8a0f-db4b-4a4b-a242-4ce547b901e9_1850x550.png 1272w, https://substackcdn.com/image/fetch/$s_!HLRG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb71f8a0f-db4b-4a4b-a242-4ce547b901e9_1850x550.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HLRG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb71f8a0f-db4b-4a4b-a242-4ce547b901e9_1850x550.png" width="1456" height="433" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b71f8a0f-db4b-4a4b-a242-4ce547b901e9_1850x550.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:433,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Cloud computing article&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Cloud computing article" title="Cloud computing article" srcset="https://substackcdn.com/image/fetch/$s_!HLRG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb71f8a0f-db4b-4a4b-a242-4ce547b901e9_1850x550.png 424w, https://substackcdn.com/image/fetch/$s_!HLRG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb71f8a0f-db4b-4a4b-a242-4ce547b901e9_1850x550.png 848w, https://substackcdn.com/image/fetch/$s_!HLRG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb71f8a0f-db4b-4a4b-a242-4ce547b901e9_1850x550.png 1272w, https://substackcdn.com/image/fetch/$s_!HLRG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb71f8a0f-db4b-4a4b-a242-4ce547b901e9_1850x550.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Cloud computing article</figcaption></figure></div><p>This interaction that you had with the website is on the frontend. Everything that you see - the look and feel, the list of articles, the color scheme, and the buttons - all make up the frontend of the website. When you clicked the link a few things happen.</p><ol><li><p><strong>User clicks the link (Frontend):</strong> This action by the user is a frontend activity. The user sees the link on the page and clicks it. This will redirect the user to a new page on the website. This is like a customer seeing the menu in a restaurant and ordering a dish.</p></li><li><p><strong>Sending the request (Frontend to Backend):</strong> At this point, the frontend sends a request to the server (backend), to get the contents of this page. This request is made in the form of an API call. (API is short for application programming interface. Think of it as a request asking the computer to do something. We will learn about how APIs work in another article.) As a user who requested the article, you don&#8217;t see this happening. You just wait for the page to load while the server is working to fulfil your request. So, the frontend has made an API call to the backend to access the contents of the article. Restaurant example: The request for the dish is sent to the chef in the kitchen.</p></li><li><p><strong>Processing the request (Backend):</strong> Once the server receives the request it needs to process it. All the Learn Kraft&#8217;s articles data is stored in a database. So, the server will query the database to retrieve the contents of the article. All this is happening in the backend. Restaurant example: The chef prepares the dish. You can imagine what goes into making the dish.</p></li><li><p><strong>Generating the response (Backend):</strong> Once the server has received the content of the article from the database, it will create a response. This response may include the article&#8217;s content and any other information that the frontend may have requested while making the API call. This includes things like image links, publishing date, etc. Restaurant example: The chef gets the dish ready to be sent to the customer.</p></li><li><p><strong>Sending the response (Backend to Frontend):</strong> At this stage, the server will send the response to the frontend (user&#8217;s browser) where the user is waiting for the article&#8217;s content. Restaurant example: A waiter takes the dish from the kitchen to the customer's table.</p></li><li><p><strong>Rendering the page (Frontend):</strong> Upon receiving the response, the frontend will render the contents of the article on the web page. While doing so, the frontend will also perform some other actions such as applying styles to the content, adding interactivity, and maybe some minor programming activities such as changing date formats, etc. Over time, frontend frameworks have become very powerful and can do a lot more than we can imagine. (We will learn about Frontend frameworks in another article.) Restaurant example: The dish is served to the customer.</p></li><li><p><strong>User views the article (Frontend):</strong> Finally, the user views the article. As you can easily guess, it&#8217;s a frontend activity. Restaurant example: The customer enjoys the dish.</p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UTyQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89f45523-120e-4f27-bd09-1fc9a51d06de_2258x1088.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UTyQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89f45523-120e-4f27-bd09-1fc9a51d06de_2258x1088.png 424w, https://substackcdn.com/image/fetch/$s_!UTyQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89f45523-120e-4f27-bd09-1fc9a51d06de_2258x1088.png 848w, https://substackcdn.com/image/fetch/$s_!UTyQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89f45523-120e-4f27-bd09-1fc9a51d06de_2258x1088.png 1272w, https://substackcdn.com/image/fetch/$s_!UTyQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89f45523-120e-4f27-bd09-1fc9a51d06de_2258x1088.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UTyQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89f45523-120e-4f27-bd09-1fc9a51d06de_2258x1088.png" width="1456" height="702" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/89f45523-120e-4f27-bd09-1fc9a51d06de_2258x1088.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:702,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Cloud computing article&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Cloud computing article" title="Cloud computing article" srcset="https://substackcdn.com/image/fetch/$s_!UTyQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89f45523-120e-4f27-bd09-1fc9a51d06de_2258x1088.png 424w, https://substackcdn.com/image/fetch/$s_!UTyQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89f45523-120e-4f27-bd09-1fc9a51d06de_2258x1088.png 848w, https://substackcdn.com/image/fetch/$s_!UTyQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89f45523-120e-4f27-bd09-1fc9a51d06de_2258x1088.png 1272w, https://substackcdn.com/image/fetch/$s_!UTyQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89f45523-120e-4f27-bd09-1fc9a51d06de_2258x1088.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Cloud computing article</figcaption></figure></div><p>And there you have it! The next time you click on an article, just picture a little digital army scrambling behind the scenes, turning your casual click into your next intriguing read. It's like a secret behind-the-screen party every time you browse! Generally, all this takes just a few milliseconds, but depending on the quality of the server, the network, and a host of other factors, it may take more time.</p><h2><strong>Components of Frontend and Backend</strong></h2><p>By now, we have a better understanding of frontend and backend. The frontend is what the user interacts with directly. It is sometimes called the &#8216;client-side&#8217;. The backend, or server-side, is everything that happens behind the scenes to make that interaction possible. Let&#8217;s look at the important components of frontend and backend.</p><h3><strong>Frontend</strong></h3><p><strong>HTML:</strong> HTML is the markup language that gives a webpage its structure. It provides the basic structure of the page, which is then enhanced and modified by CSS and JavaScript.</p><p><strong>CSS:</strong> CSS is the presentation language that makes the page you created with HTML presentable. CSS is used for creating layouts, colors, fonts, and more&#8212;it makes everything look good.</p><p><strong>JavaScript:</strong> This is the programming language that makes your website interactive, like adding animations, and creating interactive forms.</p><p><strong>Frameworks and Libraries:</strong> These include tools like React, Angular, and Vue.js, which provide pre-written code to make it faster to develop and add interactivity to your website.</p><p><strong>Responsive Design:</strong> This involves making sure the website looks good on any device, from smartphones to huge screens.</p><h3><strong>Backend</strong></h3><p><strong>Server-side Programming Languages:</strong> These are programming languages like Python, Java, Ruby, PHP, and Node.js that you use to write the backend code. They are used to create the logic of websites, interact with databases, and more.</p><p><strong>Databases:</strong> Databases are digital storage where all the website's information is kept, like a huge digital filing cabinet. They are essential for storing, retrieving, and manipulating data. Examples include MySQL, PostgreSQL, MongoDB, and Oracle.</p><p><strong>Server:</strong> This is the powerful computer where your website or application lives. It is the server that serves, or sends, your website to users' browsers.</p><p><strong>APIs:</strong> APIs are helper programs that allow different software applications to communicate with each other. In the case of a website, APIs are used to connect the frontend and backend of a web application, for sending requests and receiving responses. Think of APIs as waiters in a restaurant. You ask for data (order meal), the API (waiter) communicates your request to the system (kitchen), then brings back the data (your meal) for you to use (eat). APIs make different software talk to each other, just like a universal translator!</p><p><strong>Middleware:</strong> A go-between software that helps different parts of the website work together smoothly. For example, a server will use middleware to retrieve information from a database.</p><p><strong>Frameworks:</strong> Backend frameworks are helpers that can speed up development time by providing pre-written code for routine tasks. Some examples of backend frameworks are Django for Python, Express for Node.js, and Rails for Ruby.</p><p>All these components come together to make a website work.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8ZbM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b9e17b3-5a1d-424f-b058-3ea928d90f08_800x950.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8ZbM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b9e17b3-5a1d-424f-b058-3ea928d90f08_800x950.jpeg 424w, https://substackcdn.com/image/fetch/$s_!8ZbM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b9e17b3-5a1d-424f-b058-3ea928d90f08_800x950.jpeg 848w, https://substackcdn.com/image/fetch/$s_!8ZbM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b9e17b3-5a1d-424f-b058-3ea928d90f08_800x950.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!8ZbM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b9e17b3-5a1d-424f-b058-3ea928d90f08_800x950.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8ZbM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b9e17b3-5a1d-424f-b058-3ea928d90f08_800x950.jpeg" width="800" height="950" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9b9e17b3-5a1d-424f-b058-3ea928d90f08_800x950.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:950,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Components of frontend and backend&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Components of frontend and backend" title="Components of frontend and backend" srcset="https://substackcdn.com/image/fetch/$s_!8ZbM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b9e17b3-5a1d-424f-b058-3ea928d90f08_800x950.jpeg 424w, https://substackcdn.com/image/fetch/$s_!8ZbM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b9e17b3-5a1d-424f-b058-3ea928d90f08_800x950.jpeg 848w, https://substackcdn.com/image/fetch/$s_!8ZbM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b9e17b3-5a1d-424f-b058-3ea928d90f08_800x950.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!8ZbM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b9e17b3-5a1d-424f-b058-3ea928d90f08_800x950.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Components of frontend and backend</figcaption></figure></div><h2><strong>Netflix and its Frontend and Backend</strong></h2><p>Now that we have a fair understanding of the concepts of Frontend and Backend, let&#8217;s take the example of Netflix, and see how it applies to this popular streaming device.</p><h3><strong>Frontend</strong></h3><p>Netflix has many frontend applications for various platforms. As their customer, you can access Netflix from a web browser, smart TVs, mobile devices and even gaming consoles.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PdDE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ceef722-89f0-4e86-a5c1-73ffa7d01486_1000x993.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PdDE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ceef722-89f0-4e86-a5c1-73ffa7d01486_1000x993.jpeg 424w, https://substackcdn.com/image/fetch/$s_!PdDE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ceef722-89f0-4e86-a5c1-73ffa7d01486_1000x993.jpeg 848w, https://substackcdn.com/image/fetch/$s_!PdDE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ceef722-89f0-4e86-a5c1-73ffa7d01486_1000x993.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!PdDE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ceef722-89f0-4e86-a5c1-73ffa7d01486_1000x993.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PdDE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ceef722-89f0-4e86-a5c1-73ffa7d01486_1000x993.jpeg" width="1000" height="993" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5ceef722-89f0-4e86-a5c1-73ffa7d01486_1000x993.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:993,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Netflix is built to work across multiple platforms - web browsers, smart TVs, mobile devices, and gaming consoles&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Netflix is built to work across multiple platforms - web browsers, smart TVs, mobile devices, and gaming consoles" title="Netflix is built to work across multiple platforms - web browsers, smart TVs, mobile devices, and gaming consoles" srcset="https://substackcdn.com/image/fetch/$s_!PdDE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ceef722-89f0-4e86-a5c1-73ffa7d01486_1000x993.jpeg 424w, https://substackcdn.com/image/fetch/$s_!PdDE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ceef722-89f0-4e86-a5c1-73ffa7d01486_1000x993.jpeg 848w, https://substackcdn.com/image/fetch/$s_!PdDE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ceef722-89f0-4e86-a5c1-73ffa7d01486_1000x993.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!PdDE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5ceef722-89f0-4e86-a5c1-73ffa7d01486_1000x993.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Netflix is built to work across multiple platforms - web browsers, smart TVs, mobile devices, and gaming consoles</figcaption></figure></div><p>Here is what happens in the frontend:</p><p><strong>User Interface:</strong> The frontend is what you see when you open Netflix on your TV or mobile phone. You see the list of movies and TV series, your watchlist, upcoming shows, your browsing history, etc.</p><p><strong>Interaction:</strong> This involves the viewers' interaction with the Netflix app. This may include browsing the catalog, playing a video, pausing, fast forwarding, adjusting settings, etc. On a TV, all this happens through your TV remote.</p><p>An interesting and unique frontend, or client-side, feature of Netflix is the adaptive bitrate stream. Using this tech, Netflix changes the quality of your video dynamically when it detects a change in your network speed. That's why, if you're watching Netflix and your internet suddenly slows down, instead of the video freezing or buffering, the picture quality only becomes a little fuzzy for a few seconds.</p><p>The frontend of Netflix is built using JavaScript, using a popular frontend framework called React.js that helps it build a dynamic and responsive user interface.</p><h3><strong>Backend</strong></h3><p>Netflix has a very powerful backend that handles millions of requests per day streaming video content to its users around the world. Here's what the backend does:</p><p><strong>Content Delivery:</strong> Since Netflix has users around the world, how far a server is from its user has a direct impact on how much time it takes to serve a request (buffering). Netflix uses a Content Delivery Network or CDN to distribute its content. A CDN involves many servers placed strategically in different parts of the world so that content can be delivered quickly and with minimal buffering.</p><p><strong>Personalization:</strong> One of the strong points of Netflix is personalization. As you watch content, Netflix personalizes your experience, recommending movies and series based on your watch history and preferences. All this is done by algorithms that run in the backend.</p><p><strong>Authentication / Authorization:</strong> When you log in, the backend validates your credentials and determines what you have access to based on your subscription.</p><p><strong>Payment Processing:</strong> The backend also handles the billing and payments for user accounts.</p><p>It's worth noting that Netflix runs its <strong><a href="https://learnkraft.com/content/cloud-computing">infrastructure on the cloud</a></strong> and is a heavy user of Amazon Web Services (AWS). Most of their infrastructure runs in the AWS cloud.</p><p>With this example, we&#8217;ll conclude this article. I hope you now have a better understanding of the backend and frontend of software. Until next time!</p>]]></content:encoded></item><item><title><![CDATA[What is Cloud Computing]]></title><description><![CDATA[Get a better understanding of cloud computing and how it works.]]></description><link>https://modernsoftware.substack.com/p/cloud-computing</link><guid isPermaLink="false">https://modernsoftware.substack.com/p/cloud-computing</guid><dc:creator><![CDATA[Manish Sahajwani]]></dc:creator><pubDate>Wed, 06 Sep 2023 01:40:43 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!PHYC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87d275bc-c840-4ffb-a120-c267c7038ef7_1920x1280.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PHYC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87d275bc-c840-4ffb-a120-c267c7038ef7_1920x1280.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PHYC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87d275bc-c840-4ffb-a120-c267c7038ef7_1920x1280.jpeg 424w, https://substackcdn.com/image/fetch/$s_!PHYC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87d275bc-c840-4ffb-a120-c267c7038ef7_1920x1280.jpeg 848w, https://substackcdn.com/image/fetch/$s_!PHYC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87d275bc-c840-4ffb-a120-c267c7038ef7_1920x1280.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!PHYC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87d275bc-c840-4ffb-a120-c267c7038ef7_1920x1280.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PHYC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87d275bc-c840-4ffb-a120-c267c7038ef7_1920x1280.jpeg" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/87d275bc-c840-4ffb-a120-c267c7038ef7_1920x1280.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:327085,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!PHYC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87d275bc-c840-4ffb-a120-c267c7038ef7_1920x1280.jpeg 424w, https://substackcdn.com/image/fetch/$s_!PHYC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87d275bc-c840-4ffb-a120-c267c7038ef7_1920x1280.jpeg 848w, https://substackcdn.com/image/fetch/$s_!PHYC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87d275bc-c840-4ffb-a120-c267c7038ef7_1920x1280.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!PHYC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87d275bc-c840-4ffb-a120-c267c7038ef7_1920x1280.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Imagine you're a photographer who has captured breathtaking moments throughout your travels. Your camera has thousands of high-resolution photos, each representing a unique memory. However, as you accumulate more and more images, you begin to face a problem - where do you store them all?</p><p>This scenario highlights a familiar dilemma individuals and businesses face in the digital age. With the exponential growth of data and the need for secure and accessible storage, traditional methods are often insufficient. This is where cloud computing comes to the rescue.</p><p>A few years back you might have transferred all these images to your computer or a backup drive, but in 2023, the chances that you save them on a cloud service such as Dropbox, Google Drive, or OneDrive are higher. But have you ever thought about how these services work, where they store the data, and how they make it accessible to you over the Internet?</p><p>If you think about it, the foundation remains the same. It is still a computer located somewhere else instead of your home. We call this computer a server in the cloud. The computer has the storage where your photographs are stored. In addition, this computer is connected to the internet and runs special software that makes it possible for you to store and retrieve your pictures from it. That's basically what we mean when we talk about cloud computing.</p><p>In cloud computing, the term cloud is used metaphorically to represent the idea that the exact location of the computer and the data storage is abstracted and hidden from the end-user. The end users don&#8217;t have to worry about the physical location of the servers. Instead, they just focus on what they need to do on the server (In our example, manage photographs).</p><p>Let&#8217;s understand how cloud computing fits into the business scenario.</p><h2><strong>On-premise - Traditional way of deploying software</strong></h2><p>Traditionally, software companies installed their software on the buyers' own servers, which are typically located on the buyers' premises. This arrangement is known as an on-premise deployment model. The servers would be accessible to the company's employees over their own network. This approach has been the standard practice for software delivery for many years.</p><p>However, this method has many disadvantages:</p><ul><li><p>You have to make a huge upfront investment in buying these servers, storage, and networking. This is what we call Capital Expenditure. Depending on the type of software business, this cost could run into millions, and was one of the biggest hurdles in getting into a software business (It was literally an expensive business!).</p></li><li><p>Scaling is really difficult. If the demand is growing, you would need to physically add more computers or replace the existing ones with bigger computers to meet the demand. This is costly and time-consuming and sounds like a hassle.</p></li><li><p>You have to maintain this infrastructure, which means you need to invest in space, power, and air conditioning and also have dedicated IT resources and experts that maintain this infrastructure and software.</p></li></ul><p>There are also other disadvantages such as managing downtime, security and backups.</p><h2><strong>On the cloud - The new way</strong></h2><p>While the idea of the cloud has been around for quite some time, things really changed when in 2006, Amazon Web Services (AWS) was launched and they came up with their first service called Elastic Compute Cloud (EC2). You can think of EC2 as really large computers accessible over the internet, which you could access by paying a fee to AWS. These large computers, instead of calling them servers, AWS called them instances. Once you had access to an instance, you could do anything on it, just like you would do on your own home computer or an on-premise server. AWS EC2 was the first cloud computing service that was made available to the public.</p><p>The idea is very simple. Instead of buying your own servers, you could just rent the servers on AWS, run your software on it and access it over the internet.</p><p>This marked a revolutionary change.</p><ul><li><p><strong>Rent vs. buy:</strong> Instead of buying, you could rent servers at a small fee. Your CapEx has turned into OpEx.</p></li><li><p><strong>Easy to switch providers:</strong> Since you are paying monthly (or sometimes yearly), it&#8217;s easy for you to switch providers. Currently, the four largest players are Amazon AWS, Google Cloud, Microsoft Azure, and Alibaba Cloud. Apart from this, there are plenty of small and vertical players. If you are not happy with one cloud provider, you are not tied to them for life. You can easily move from one provider to another in a matter of weeks.</p></li><li><p><strong>No maintenance:</strong> All the maintenance and upgrades of the cloud are done by the cloud provider, so you don&#8217;t have to do it.</p></li><li><p><strong>More secure:</strong> When you maintain your own on-premise infrastructure, you are responsible for security and data protection. However, in the case of cloud computing, the cloud providers are responsible for it. Cloud providers dedicate significant resources on security, and the general industry perception is that a cloud server is much more secure than any on-prem server.</p></li></ul><h2><strong>How is the Cloud Organized?</strong></h2><p>As we mentioned, a server is just a large computer. However, it doesn&#8217;t look like a PC or a laptop. It doesn&#8217;t need many things that a typical computer has such as a screen or a keyboard. Servers have multiple CPUs, multiple hard drives and large amounts of RAM. Servers are designed to be space efficient. There are many types of servers such as rack-mountable servers, blade servers, and tower servers. Servers typically look like below:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1bTJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92a9c178-9e32-4add-a9f3-ccdda6233009_600x365.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1bTJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92a9c178-9e32-4add-a9f3-ccdda6233009_600x365.jpeg 424w, https://substackcdn.com/image/fetch/$s_!1bTJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92a9c178-9e32-4add-a9f3-ccdda6233009_600x365.jpeg 848w, https://substackcdn.com/image/fetch/$s_!1bTJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92a9c178-9e32-4add-a9f3-ccdda6233009_600x365.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!1bTJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92a9c178-9e32-4add-a9f3-ccdda6233009_600x365.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1bTJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92a9c178-9e32-4add-a9f3-ccdda6233009_600x365.jpeg" width="600" height="365" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/92a9c178-9e32-4add-a9f3-ccdda6233009_600x365.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:365,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image of a server&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Image of a server" title="Image of a server" srcset="https://substackcdn.com/image/fetch/$s_!1bTJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92a9c178-9e32-4add-a9f3-ccdda6233009_600x365.jpeg 424w, https://substackcdn.com/image/fetch/$s_!1bTJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92a9c178-9e32-4add-a9f3-ccdda6233009_600x365.jpeg 848w, https://substackcdn.com/image/fetch/$s_!1bTJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92a9c178-9e32-4add-a9f3-ccdda6233009_600x365.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!1bTJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92a9c178-9e32-4add-a9f3-ccdda6233009_600x365.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Image of a server Source: <a href="https://en.wikipedia.org/wiki/Blade_server">Wikipedia</a></figcaption></figure></div><p>The physical place where servers are stored is called a data centre. A data center will have many racks, and each rack will hold many servers typically stacked over one other. This will include, servers, networking equipment, storage devices, and other equipment needed to connect and power the servers.</p><p>The racks with servers in a data center look something like this:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qSWe!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a420147-85eb-41a0-bd24-6df27f31e206_499x362.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qSWe!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a420147-85eb-41a0-bd24-6df27f31e206_499x362.jpeg 424w, https://substackcdn.com/image/fetch/$s_!qSWe!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a420147-85eb-41a0-bd24-6df27f31e206_499x362.jpeg 848w, https://substackcdn.com/image/fetch/$s_!qSWe!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a420147-85eb-41a0-bd24-6df27f31e206_499x362.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!qSWe!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a420147-85eb-41a0-bd24-6df27f31e206_499x362.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qSWe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a420147-85eb-41a0-bd24-6df27f31e206_499x362.jpeg" width="499" height="362" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1a420147-85eb-41a0-bd24-6df27f31e206_499x362.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:362,&quot;width&quot;:499,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Data Center&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Data Center" title="Data Center" srcset="https://substackcdn.com/image/fetch/$s_!qSWe!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a420147-85eb-41a0-bd24-6df27f31e206_499x362.jpeg 424w, https://substackcdn.com/image/fetch/$s_!qSWe!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a420147-85eb-41a0-bd24-6df27f31e206_499x362.jpeg 848w, https://substackcdn.com/image/fetch/$s_!qSWe!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a420147-85eb-41a0-bd24-6df27f31e206_499x362.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!qSWe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a420147-85eb-41a0-bd24-6df27f31e206_499x362.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Data Center</figcaption></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mYOy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ea35d22-27b6-4ea1-8252-d039f0624947_1000x744.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mYOy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ea35d22-27b6-4ea1-8252-d039f0624947_1000x744.jpeg 424w, https://substackcdn.com/image/fetch/$s_!mYOy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ea35d22-27b6-4ea1-8252-d039f0624947_1000x744.jpeg 848w, https://substackcdn.com/image/fetch/$s_!mYOy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ea35d22-27b6-4ea1-8252-d039f0624947_1000x744.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!mYOy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ea35d22-27b6-4ea1-8252-d039f0624947_1000x744.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mYOy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ea35d22-27b6-4ea1-8252-d039f0624947_1000x744.jpeg" width="1000" height="744" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2ea35d22-27b6-4ea1-8252-d039f0624947_1000x744.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:744,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Data Center Illustration&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Data Center Illustration" title="Data Center Illustration" srcset="https://substackcdn.com/image/fetch/$s_!mYOy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ea35d22-27b6-4ea1-8252-d039f0624947_1000x744.jpeg 424w, https://substackcdn.com/image/fetch/$s_!mYOy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ea35d22-27b6-4ea1-8252-d039f0624947_1000x744.jpeg 848w, https://substackcdn.com/image/fetch/$s_!mYOy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ea35d22-27b6-4ea1-8252-d039f0624947_1000x744.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!mYOy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ea35d22-27b6-4ea1-8252-d039f0624947_1000x744.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Data Center Illustration</figcaption></figure></div><h2><strong>Types of Cloud</strong></h2><p>There are three main models for cloud computing services: Infrastructure as a Service (IaaS), Platform as a Service (PaaS), and Software as a Service (SaaS). Let&#8217;s look at each of them in detail:</p><ul><li><p><strong>Infrastructure as a Service (IaaS):</strong> This is the most basic form of a cloud where you get the very basic elements a computer should have. This is like renting a computer. You get the necessary hardware over the internet, but you're responsible for the software. This includes the operating system, applications, and other components. You can customize and control everything, but you also have to manage everything yourself. Some examples of IaaS are Amazon's EC2, Google Compute Engine, And Microsoft Azure&#8217;s virtual machines. Since you are getting the most basic infrastructure, IaaS is the cheapest cloud offering.</p></li><li><p><strong>Platform as a Service (PaaS):</strong> In PaaS, a few things are already installed and configured for you. It&#8217;s like a pre-set computer that comes with a few software such as the operating system and a few other software pre-installed. You don't have to worry about the operating system or lower-level infrastructure. This makes it easier for you to start and you can just focus on developing, running, and managing your application. This is good for developers who want to focus on their code without worrying about the underlying system. Google App Engine is an example of PaaS. Some other examples are Heroku, Microsoft Azure App Service, AWS Elastic Beanstalk, Amazon RDS, and GCP Big Query. We will learn about what these services exactly do in another article.</p></li><li><p><strong>Software as a Service (SaaS):</strong> SaaS has become the most popular software distribution model in the world. This is when a vendor builds fully-featured software and makes it available over the cloud to its end users. You don't have to worry about the underlying hardware or software at all. You just use the application, and the provider takes care of everything else. This is the most user-friendly type of cloud service, and it's what most people think of when they hear "cloud computing". Examples include Google's Gmail, Microsoft's Office 365, Twitter, Salesforce, Zoom, Slack, Dropbox and many other software that you use every day.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-G1n!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e399b7d-667b-4e4e-ba99-6223c2c27391_1000x901.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-G1n!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e399b7d-667b-4e4e-ba99-6223c2c27391_1000x901.jpeg 424w, https://substackcdn.com/image/fetch/$s_!-G1n!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e399b7d-667b-4e4e-ba99-6223c2c27391_1000x901.jpeg 848w, https://substackcdn.com/image/fetch/$s_!-G1n!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e399b7d-667b-4e4e-ba99-6223c2c27391_1000x901.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!-G1n!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e399b7d-667b-4e4e-ba99-6223c2c27391_1000x901.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-G1n!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e399b7d-667b-4e4e-ba99-6223c2c27391_1000x901.jpeg" width="1000" height="901" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1e399b7d-667b-4e4e-ba99-6223c2c27391_1000x901.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:901,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Types of Cloud Services&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Types of Cloud Services" title="Types of Cloud Services" srcset="https://substackcdn.com/image/fetch/$s_!-G1n!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e399b7d-667b-4e4e-ba99-6223c2c27391_1000x901.jpeg 424w, https://substackcdn.com/image/fetch/$s_!-G1n!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e399b7d-667b-4e4e-ba99-6223c2c27391_1000x901.jpeg 848w, https://substackcdn.com/image/fetch/$s_!-G1n!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e399b7d-667b-4e4e-ba99-6223c2c27391_1000x901.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!-G1n!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1e399b7d-667b-4e4e-ba99-6223c2c27391_1000x901.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Types of Cloud Services</figcaption></figure></div><h2><strong>How Companies Deploy Cloud?</strong></h2><p>Earlier we discussed cloud servers provided by large players such as Amazon AWS, Google Cloud Platform (GCP), and Microsoft Azure. All these cloud servers are available for anyone to purchase and are generally referred to as <strong>public cloud</strong>. This is like rental properties that are available for anyone to book and use.</p><p>Instead of a public cloud, a company sometimes may choose to build its own cloud where this cloud is exclusively available for this company. This is called a <strong>private cloud</strong>. It's like owning your own home. A company may have their private cloud located in its own data center, or it can be hosted by a third-party service provider.</p><p>Sometimes companies may want to deploy a combination of public and private clouds. It's like having a house and also renting a vacation home. This could be for security reasons where they will use a private cloud for tasks that need to be more secure and a public cloud for the rest of the tasks. Such an arrangement is called a <strong>hybrid cloud</strong>.</p><p>Sometimes companies may go for a multi-cloud model where they will use multiple cloud services from different cloud providers. This helps them avoid vendor lock-in, increase reliability, and take advantage of the best features from each cloud provider. As an example, a company may use Amazon EC2 for their compute infrastructure (basic hardware), they may use Google Cloud Platform (GCP) for Big Data Analysis, Amazon RDS or Azure's Cosmos DB for hosting their database, and use IBM Watson for their Artificial Intelligence and Machine Learning needs. This way they get the best of each cloud provider.</p><p>Thanks for making it to the end of this article! We've covered the key concepts and terms of cloud computing you should know. Hopefully, this piece has shed some light on the subject, making it a bit less mysterious. So, next time cloud computing pops up in a meeting or a chat with clients, you'll be ready to dive right in. Until next time, keep learning!</p>]]></content:encoded></item></channel></rss>