<?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" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ communication - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ Browse thousands of programming tutorials written by experts. Learn Web Development, Data Science, DevOps, Security, and get developer career advice. ]]>
        </description>
        <link>https://www.freecodecamp.org/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ communication - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Tue, 26 May 2026 10:37:01 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/news/tag/communication/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ The Data Communication and Networking Handbook ]]>
                </title>
                <description>
                    <![CDATA[ When I was beginning to learn about networks, I didn't know how many things in my daily life depended on them – from texting on WhatsApp to watching YouTube. I still vividly remember when I learned that computers communicate with one another. It was ... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/the-data-communication-and-networking-handbook/</link>
                <guid isPermaLink="false">6853059aed5a0659bcde37e5</guid>
                
                    <category>
                        <![CDATA[ data ]]>
                    </category>
                
                    <category>
                        <![CDATA[ data communication ]]>
                    </category>
                
                    <category>
                        <![CDATA[ networking ]]>
                    </category>
                
                    <category>
                        <![CDATA[ communication ]]>
                    </category>
                
                    <category>
                        <![CDATA[ handbook ]]>
                    </category>
                
                    <category>
                        <![CDATA[ MathJax ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ valentine Gatwiri ]]>
                </dc:creator>
                <pubDate>Wed, 18 Jun 2025 18:29:46 +0000</pubDate>
                <media:content url="https://cdn.hashnode.com/res/hashnode/image/upload/v1750178451091/adea6449-2daf-405b-80f0-e23a356fa45b.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>When I was beginning to learn about networks, I didn't know how many things in my daily life depended on them – from texting on WhatsApp to watching YouTube.</p>
<p>I still vividly remember when I learned that computers communicate with one another. It was magic – telepathy, nearly. But there is a systematic, logical process behind the magic: computer networking. And I’m excited to help you discover how computers communicate and why it’s possible.</p>
<p>Essentially, data communication is all about exchanging information between two or more machines. But it's not just a question of sending – it's a matter of sending the right data, to the right machine, in the right format. And that's the brilliance of networking basics.</p>
<p>This handbook will teach you the fundamentals of the language of computers. You'll discover how data is passed from machine to machine, how operations are carried out on information, and how networks – from tiny home arrangements to massive worldwide networks – are constructed and managed.</p>
<p>We’ll start with the absolute basics: what a network is, what the hardware is, and how devices know each other and talk to each other. Next, we’ll examine crucial networking models like OSI and TCP/IP stacks that segment communication into layers in order to make it easier to understand and troubleshoot. You'll learn about IP addresses, DNS, routing, switching, and firewalls and security's involvement in keeping networks safe.</p>
<p>Whether you are a complete beginner starting from the ground up or a seasoned dev looking to solidify your foundation, this handbook will walk you through linking the dots. When you're finished, you won't only understand how your favorite sites and apps really function behind the scenes – you'll be able to speak networks in your sleep.</p>
<h2 id="heading-table-of-contents">Table of Contents</h2>
<ol>
<li><p><a class="post-section-overview" href="#heading-chapter-1-data-and-communication-fundamentals">Chapter 1: Data and Communication Fundamentals</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-chapter-2-signals-the-language-of-communication">Chapter 2: Signals — The Language of Communication</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-chapter-3-bandwidth-understanding-how-much-we-can-transmit">Chapter 3: Bandwidth — Understanding How Much We Can Transmit</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-chapter-4-transmission-media-the-highways-of-communication">Chapter 4: Transmission Media — The Highways of Communication</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-chapter-5-network-topologies-how-we-structure-our-connections">Chapter 5: Network Topologies — How We Structure Our Connections</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-chapter-6-the-osi-model-understanding-layers-of-communication">Chapter 6: The OSI Model — Understanding Layers of Communication</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-chapter-7-protocols-and-ports-how-rules-and-doors-guide-communication">Chapter 7: Protocols and Ports — How Rules and Doors Guide Communication</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-chapter-8-ip-addressing-and-subnetting-naming-and-organizing-the-network">Chapter 8: IP Addressing and Subnetting — Naming and Organizing the Network</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-chapter-9-routing-and-switching-directing-data-on-the-network">Chapter 9: Routing and Switching — Directing Data on the Network</a></p>
</li>
<li><p><a class="post-section-overview" href="#heading-chapter-10-network-infrastructure-devices-security-and-the-modern-internet">Chapter 10: Network Infrastructure — Devices, Security, and the Modern Internet</a></p>
</li>
</ol>
<h2 id="heading-chapter-1-data-and-communication-fundamentals"><strong>Chapter 1: Data and Communication Fundamentals</strong></h2>
<p>This introductory section lays the groundwork for the rest of the handbook. You’ll learn what data communication is, how it's different from "sending a message," and what's required for two computers (or phones, or servers) to exchange information efficiently.</p>
<p>You'll start to feel at home with fundamental ideas, technical terminology, and the machinery behind the scenes that works quietly in the background to make daily technology appear effortless.</p>
<p>By the end, you will be able to:</p>
<ul>
<li><p>Explain what data communication is and how it works in real life</p>
</li>
<li><p>Identify the components involved in data communication systems</p>
</li>
<li><p>Differentiate between types of data and how they're represented</p>
</li>
<li><p>Understand different types of data flow (simplex, half duplex, full duplex)</p>
</li>
<li><p>Describe what a computer network is and its main categories (LAN, MAN, WAN)</p>
</li>
<li><p>Understand the importance of protocols and how they enable communication</p>
</li>
<li><p>Recognize the role of standards and standard organizations in making networking universal</p>
</li>
</ul>
<h2 id="heading-data-vs-information">Data vs Information</h2>
<p>We throw around the word "data" a lot these days – "big data," "data science," "data plans" – but what does it mean?</p>
<ul>
<li><p><strong>Data</strong> is raw. It's unprocessed, meaningless on its own. Think of numbers on a spreadsheet with no labels.</p>
</li>
<li><p><strong>Information</strong> is processed data – it's meaningful and helps us make decisions.</p>
</li>
</ul>
<p><strong>A personal example:</strong> I once received a CSV file from my school with hundreds of rows of marks. It looked like chaos – just student IDs and scores. But the moment I matched those IDs to names and applied the grading criteria, it became useful <strong>information</strong> about who passed, who failed, and who topped the class.</p>
<p>So, data is the ingredient. Information is the cooked dish.</p>
<h2 id="heading-so-what-exactly-is-data-communication">So, What Exactly is Data Communication?</h2>
<p>Imagine you're texting your friend. Your phone sends data to their phone using signals through cables, Wi-Fi, or even satellites. This entire process is called <strong>data communication</strong>, moving data from one place (you!) to another (your friend).</p>
<p>But it’s not as random as it sounds. It follows a set of agreed rules called <strong>protocols</strong>. Think of them as social etiquette for devices – how to talk, when to talk, and what to say.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1748435887792/a607b06f-ffe6-47c1-8e18-a79ab4f0b068.png" alt="Explanation of protocols" class="image--center mx-auto" width="530" height="360" loading="lazy"></p>
<p>This process involves:</p>
<ul>
<li><p>Devices (sender and receiver)</p>
</li>
<li><p>A transmission medium (like cables or wireless)</p>
</li>
<li><p>A set of rules (protocols)</p>
</li>
</ul>
<p>Let’s break it down further.</p>
<h3 id="heading-characteristics-of-data-communication">Characteristics of Data Communication</h3>
<p>To be considered effective, data communication must exhibit the following characteristics:</p>
<ol>
<li><p><strong>Delivery</strong>: Data must reach the correct destination. If I send a message to John, it shouldn't land in Sarah's inbox.</p>
</li>
<li><p><strong>Accuracy</strong>: No one wants a corrupted file. Data must be accurate, free from errors.</p>
</li>
<li><p><strong>Timeliness</strong>: Some data, like live video, must arrive on time. Lag ruins the experience.</p>
</li>
<li><p><strong>Jitter</strong>: Inconsistent arrival times of data packets (especially in audio/video) create disruption. A good system keeps jitter low.</p>
</li>
</ol>
<p>I once experienced a video call where the sound lagged by 5 seconds. It turned into a game of "Guess what I said." That's jitter in action.</p>
<h3 id="heading-meet-the-cast-the-components-of-data-communication">Meet the Cast: The Components of Data Communication</h3>
<p>In every data conversation, five key players show up:</p>
<ol>
<li><p><strong>Sender</strong> – The device that starts the chat (like your phone).</p>
</li>
<li><p><strong>Receiver</strong> – The one getting the message (your friend’s phone).</p>
</li>
<li><p><strong>Message</strong> – The actual info, whether it’s "hi" or a TikTok.</p>
</li>
<li><p><strong>Transmission Medium</strong> – The path your message travels (Wi-Fi, cables, and so on).</p>
</li>
<li><p><strong>Protocol</strong> – The language they agree to speak (like TCP/IP).</p>
</li>
</ol>
<p>Pretty cool, right?</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1748436008530/14d2e296-b999-4790-a4fd-26a7026e8810.png" alt="Essentials of Networking" class="image--center mx-auto" width="557" height="391" loading="lazy"></p>
<h2 id="heading-data-representation">Data Representation</h2>
<p>Computers are not humans. They don’t understand language, pictures, or music – unless these are converted into a format they can process: <strong>bits</strong> (0s and 1s).</p>
<p>Let’s walk through the different types of data representation:</p>
<h3 id="heading-1-text">1. Text</h3>
<p>Text is stored as a sequence of characters using encoding schemes like ASCII and Unicode. For example, the letter "A" in ASCII is 65, which in binary is <code>01000001</code>.</p>
<h3 id="heading-2-numbers">2. Numbers</h3>
<p>Similarly, numeric data is stored as bit patterns. Computers can perform calculations using binary logic.</p>
<h3 id="heading-3-images">3. Images</h3>
<p>An image is a matrix of pixels. Each pixel is represented by bits. A black-and-white image might only need 1 bit per pixel, while a full-color photo could use 24 bits per pixel or more.</p>
<p><strong>Example:</strong> A 10x10 black and white image = 100 pixels = 100 bits.</p>
<h3 id="heading-4-audio">4. Audio</h3>
<p>Audio is analog, but we digitize it for storage and transmission. For instance, voice notes are sampled at certain intervals and stored as bits.</p>
<h3 id="heading-5-video">5. Video</h3>
<p>Video is a sequence of images (frames) along with synchronized audio. It’s high in data volume and needs compression techniques like MP4 to be practical.</p>
<h3 id="heading-how-does-the-data-flow">How Does the Data Flow?</h3>
<p>You might think data just zips across in one go – but it has <em>modes</em>, just like moods:</p>
<ul>
<li><p><strong>Simplex:</strong> One-way only (like a radio broadcast).</p>
</li>
<li><p><strong>Half Duplex:</strong> You take turns – like walkie-talkies.</p>
</li>
<li><p><strong>Full Duplex:</strong> Both sides talk at once – think phone calls.</p>
</li>
</ul>
<p>Each has its own vibe depending on the situation.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1748436167157/a8e8d277-16f8-4891-8bfd-8b63ac468bda.png" alt="Data flow – simplex, half duplex, full duplex" class="image--center mx-auto" width="574" height="220" loading="lazy"></p>
<h2 id="heading-what-is-a-computer-network">What is a Computer Network?</h2>
<p>A computer network is a system that allows devices to share data. These connected devices (nodes) use communication links to interact.</p>
<p>The main goals of a network are:</p>
<ul>
<li><p><strong>Reliability</strong>: Data should get there.</p>
</li>
<li><p><strong>Security</strong>: Unwanted access should be blocked.</p>
</li>
<li><p><strong>Performance</strong>: High speed, low delay.</p>
</li>
</ul>
<p>When you connect your laptop at a café, for example, you’re part of a <strong>network</strong>. But networks come in all shapes:</p>
<ul>
<li><strong>PAN (A personal area network)</strong>: connects electronic devices within a user's immediate area.</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1748933101198/29cc06ed-cf79-44b8-bf6b-4691729c80c7.png" alt="Personal Area Network – downloadzone" class="image--center mx-auto" width="251" height="220" loading="lazy"></p>
<ul>
<li><strong>LAN (Local Area Network):</strong> Small – like your home Wi-Fi.</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1748933264502/fad55c68-0170-4fee-8a6c-cc7463f697be.png" alt="Local Area Network – IT Release" class="image--center mx-auto" width="396" height="233" loading="lazy"></p>
<ul>
<li><strong>MAN (Metropolitan Area Network):</strong> Covers a city – like college campuses.</li>
</ul>
<p><img src="https://cyberhoot.com/wp-content/uploads/2022/01/3d7659f7-2f69-4b14-b851-a84ab85152e0.png" alt="Metropolitan Area Network (MAN) – CyberHoot" width="1993" height="1388" loading="lazy"></p>
<ul>
<li><strong>WAN (Wide Area Network):</strong> Huge – think the <em>entire</em> internet!</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1748933893001/aa0343da-2733-447f-98f2-c347a7e964c9.png" alt="Wide Area Network – Vecteezy" class="image--center mx-auto" width="315" height="248" loading="lazy"></p>
<p>The internet isn’t one big net – it’s a net of many, many nets.</p>
<h2 id="heading-what-is-a-protocol">What is a Protocol?</h2>
<p>A protocol is a set of rules that devices follow to communicate. Without a protocol, it’s chaos.</p>
<p><strong>Analogy:</strong> Think of a group project. If everyone agrees to use Google Docs and write in English (or any one language), it works. But if one person uses Word in French, and another emails a PDF in Mandarin, you have a mess.</p>
<p>Protocols define:</p>
<ul>
<li><p><strong>What</strong> data to send</p>
</li>
<li><p><strong>How</strong> to send it</p>
</li>
<li><p><strong>When</strong> to send it</p>
</li>
</ul>
<h3 id="heading-elements-of-a-protocol">Elements of a Protocol</h3>
<ol>
<li><p><strong>Syntax</strong>: Format and structure (like grammar).</p>
</li>
<li><p><strong>Semantics</strong>: Meaning of each section.</p>
</li>
<li><p><strong>Timing</strong>: When to send and at what speed.</p>
</li>
</ol>
<h2 id="heading-standards-in-networking">Standards in Networking</h2>
<p>Standards are agreements to ensure that different systems can work together. Without standards, each manufacturer would create isolated networks that couldn’t talk to others.</p>
<p>There are two types of standards:</p>
<ul>
<li><p><strong>De facto</strong>: By convention (used commonly but not formally approved)</p>
</li>
<li><p><strong>De jure</strong>: By law (formally approved)</p>
</li>
</ul>
<h3 id="heading-standards-organizations">Standards Organizations</h3>
<p>There are a few key organizations that help define these standards:</p>
<ul>
<li><p><strong>ISO</strong> – International Organization for Standardization</p>
</li>
<li><p><strong>ITU-T</strong> – International Telecommunication Union</p>
</li>
<li><p><strong>IEEE</strong> – Institute of Electrical and Electronics Engineers</p>
</li>
<li><p><strong>ANSI</strong> – American National Standards Institute</p>
</li>
<li><p><strong>EIA</strong> – Electronic Industries Association</p>
</li>
</ul>
<h2 id="heading-chapter-2-signals-the-language-of-communication"><strong>Chapter 2: Signals — The Language of Communication</strong></h2>
<p>In this chapter, I’ll teach you about the invisible messengers – signals – that make it all possible. You will:</p>
<ul>
<li><p>Understand what signals are and how they carry data</p>
</li>
<li><p>Distinguish between analog and digital signals, and when each is used</p>
</li>
<li><p>Learn about key signal characteristics like amplitude, frequency, phase, and wavelength</p>
</li>
<li><p>Visualize and compare time domain vs frequency domain representations</p>
</li>
<li><p>Appreciate how real-world signals are composed of multiple waves (composite signals)</p>
</li>
<li><p>Understand digital signal features like bit rate, baud rate, and bit interval</p>
</li>
<li><p>Learn about baseband vs broadband transmission methods</p>
</li>
<li><p>Identify challenges like attenuation, distortion, and noise</p>
</li>
<li><p>Grasp how bandwidth affects data quality and speed</p>
</li>
</ul>
<p>When I was a teenager, I often wondered how my voice traveled through a phone and reached someone else in another town. I imagined tiny versions of myself running through wires with a message in hand. Turns out, while not exactly accurate, the idea of something carrying your message is spot on. That something is called a <strong>signal</strong>.</p>
<p>A signal is the form data takes to move through physical space. Whether it’s your mom calling you, your professor sending an email, or your friend uploading a reel – all of that happens through signals.</p>
<h2 id="heading-data-and-signals">Data and Signals</h2>
<h3 id="heading-what-is-a-signal">What is a Signal?</h3>
<p>I learned that data is like the message I wanted to send, and a signal is the delivery truck. Without the truck, the message goes nowhere.</p>
<p>Here’s where things get a bit science-y, but stay with me. When data travels, it becomes signals, kind of like waves. These waves can be classified in to two common ways, by the nature of the signal, and by their patterns over time. We’ll talk about the nature of the signal first.</p>
<h3 id="heading-the-nature-of-the-signal-analog-vs-digital">The Nature of the Signal: Analog vs Digital</h3>
<ul>
<li><p><strong>Analog</strong> – A signal that varies smoothly over time and can take any value in a range. Like ocean waves, always changing smoothly. Continuous (like voices).</p>
</li>
<li><p><strong>Digital</strong> – A signal that has discrete values, usually 0s and 1s. Like a staircase – clear, sharp steps, either up or down, in bits (1s and 0s, like computers).</p>
</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1748436311536/db273577-c474-4eca-8396-b9ea7bd0031f.png" alt="Analog and digital signals" class="image--center mx-auto" width="554" height="234" loading="lazy"></p>
<h3 id="heading-analog-signals">Analog Signals</h3>
<p>The first time I visualized an analog signal, it looked like the ripples I saw after tossing a stone in water. Gentle curves moving outwards.</p>
<h4 id="heading-key-features-of-analog-signals">Key features of analog signals:</h4>
<ul>
<li><p><strong>Amplitude</strong>: This reminded me of volume. Louder signals have taller waves.</p>
</li>
<li><p><strong>Frequency</strong>: It’s the beat or rhythm. High frequency = rapid waves = higher pitch.</p>
</li>
<li><p><strong>Period</strong>: Time for one full wave cycle. Shorter periods mean higher frequency.</p>
</li>
<li><p><strong>Phase</strong>: Two waves can start at different points – just like dancers starting a move a second apart.</p>
</li>
<li><p><strong>Wavelength</strong>: How far one wave travels in space. It depends on how fast it moves and its frequency.</p>
</li>
</ul>
<h4 id="heading-time-vs-frequency-domain">Time vs. Frequency Domain</h4>
<ul>
<li><p><strong>Time Domain</strong>: Shows how signals change over time. Like watching a song’s audio waveform.</p>
</li>
<li><p><strong>Frequency Domain</strong>: Shows the ingredients – how much bass, how much treble. It’s like the EQ settings on a music player.</p>
</li>
</ul>
<h4 id="heading-composite-signals-and-fourier">Composite Signals and Fourier</h4>
<p>Real-world signals are messy, made of multiple waves mixed. <a target="_blank" href="https://en.wikipedia.org/wiki/Joseph_Fourier">Fourier’s</a> big idea was: <em>Any messy signal can be broken down into simple sine waves.</em> That insight changed how engineers understand and clean up signals.</p>
<h3 id="heading-digital-signals">Digital Signals</h3>
<p>Digital signals felt familiar to me. My laptop, my phone, even my microwave speaks digital.</p>
<h4 id="heading-key-features-of-digital-signals">Key features of digital signals:</h4>
<ul>
<li><p><strong>Bit Interval</strong>: One bit’s duration. Like how long I hold down a piano key.</p>
</li>
<li><p><strong>Bit Rate</strong>: How many notes (bits) I can play per second.</p>
</li>
<li><p><strong>Baud Rate</strong>: How often the signal actually changes. Not always the same as bit rate.</p>
</li>
<li><p><strong>Levels</strong>: 2-level = 1s and 0s. More levels = more complex encoding.</p>
</li>
</ul>
<h4 id="heading-square-waves">Square Waves</h4>
<p>If analog signals are elegant curves, digital signals are sharp edges. A square wave is a bold, binary shout: ON-OFF-ON-OFF.</p>
<h4 id="heading-digital-advantages-and-struggles">Digital Advantages and Struggles</h4>
<p><strong>Why I love them:</strong></p>
<ul>
<li><p>They’re clean and easy to work with.</p>
</li>
<li><p>Errors are easier to spot and fix.</p>
</li>
</ul>
<p><strong>But they’re not perfect:</strong></p>
<ul>
<li><p>They need more bandwidth.</p>
</li>
<li><p>They don’t travel well over long distances without help.</p>
</li>
</ul>
<h3 id="heading-pattern-over-time-periodic-vs-non-periodic-signals">Pattern Over Time: Periodic vs Non-periodic Signals</h3>
<ul>
<li><p><strong>Periodic Signals</strong>: Repeat at regular intervals over time (for example, sine waves, clock pulses).</p>
</li>
<li><p><strong>Non-periodic Signals</strong>: Do <strong>not</strong> repeat – more random or unique (for example, a burst of data or speech waveform).</p>
</li>
<li><p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1749818448163/c505ace2-587d-4c50-9111-bda8a902f439.png" alt="Periodic vs non-periodic signals" class="image--center mx-auto" width="609" height="134" loading="lazy"></p>
</li>
</ul>
<h3 id="heading-periodic-signals">Periodic Signals</h3>
<p>These feel like the rhythm of my favorite song. They’re predictable. Repeating. Reliable.</p>
<h4 id="heading-key-features">Key Features</h4>
<ul>
<li><p><strong>Repetition</strong>: The same pattern, again and again. Like waves hitting the shore at steady intervals.</p>
</li>
<li><p><strong>Cycle</strong>: One complete shape of the signal. Think of it as one heartbeat in a steady pulse.</p>
</li>
<li><p><strong>Frequency</strong>: How many cycles per second? Measured in Hertz (Hz).</p>
</li>
</ul>
<h4 id="heading-why-i-like-them">Why I like them</h4>
<ul>
<li><p>Easy to analyze – like having a beat to follow.</p>
</li>
<li><p>Great for systems that need synchronization, like clock signals in my devices.</p>
</li>
</ul>
<h4 id="heading-but-still">But still...</h4>
<ul>
<li>They can’t carry surprise or variety. No space for one-time messages.</li>
</ul>
<h3 id="heading-non-periodic-signals">Non-periodic Signals</h3>
<p>These are the jazz solos of the signal world. Wild. Unique. Unpredictable.</p>
<h4 id="heading-key-features-1">Key Features</h4>
<ul>
<li><p><strong>No repetition</strong>: Each part is different – like my playlist on shuffle.</p>
</li>
<li><p><strong>Spikes and silence</strong>: Sudden changes, long pauses. Perfect for one-off data transmissions.</p>
</li>
<li><p><strong>Used in real-life data</strong>: Emails, videos, and downloads all love this format.</p>
</li>
</ul>
<h4 id="heading-why-theyre-cool">Why they’re cool</h4>
<ul>
<li><p>Great for representing actual information – each burst means something new.</p>
</li>
<li><p>More flexible for transmitting complex messages.</p>
</li>
</ul>
<h4 id="heading-whats-tricky">What’s tricky</h4>
<ul>
<li><p>Harder to analyze and predict.</p>
</li>
<li><p>Tougher to filter or compress efficiently.</p>
</li>
</ul>
<p>Understanding signals helps us know how fast and cleanly information travels.</p>
<h2 id="heading-channels-the-roads-signals-travel-on">Channels: The Roads Signals Travel On</h2>
<p>In the context of signals and communication, <strong>channels</strong> refer to the medium or path through which a signal travels from a sender (transmitter) to a receiver. Channels are like roads. You can’t just send a truck (signal) without knowing if the road (channel) allows it.</p>
<p>We can describe channels in different ways:</p>
<ul>
<li><p><strong>Physically</strong>: What the signal travels through (like a wire or air).</p>
</li>
<li><p><strong>Functionally</strong>: How the signal is allowed to move through (based on frequency).</p>
</li>
<li><p><strong>Logically</strong>: How we organize multiple data streams within the same physical path.</p>
</li>
</ul>
<h3 id="heading-physical-channels-the-road-itself">Physical Channels = The Road Itself</h3>
<p>These are the real, tangible paths for signals:</p>
<div class="hn-table">
<table>
<thead>
<tr>
<td><strong>Example</strong></td><td><strong>Medium</strong></td></tr>
</thead>
<tbody>
<tr>
<td>Ethernet cable</td><td>Copper wire</td></tr>
<tr>
<td>Fiber-optic link</td><td>Glass strand</td></tr>
<tr>
<td>Wi-Fi or Radio</td><td>Air (wireless)</td></tr>
<tr>
<td>Satellite transmission</td><td>Space (electromagnetic waves)</td></tr>
</tbody>
</table>
</div><h3 id="heading-frequency-behavior-of-physical-channels">Frequency Behavior of Physical Channels</h3>
<p>Just like roads are built for certain speeds, physical channels are better at carrying certain frequencies.</p>
<p>Here’s where <strong>low-pass</strong>, <strong>high-pass</strong>, <strong>band-pass</strong>, and <strong>band-stop</strong> come in – they describe how a physical channel behaves.</p>
<div class="hn-table">
<table>
<thead>
<tr>
<td><strong>Channel Type</strong></td><td><strong>Behavior</strong></td><td><strong>Analogy</strong></td><td><strong>Common Use</strong></td></tr>
</thead>
<tbody>
<tr>
<td>Low-pass</td><td>Lets low frequencies pass</td><td>Quiet country road (slow cars only)</td><td>Telephone lines (voice)</td></tr>
<tr>
<td>Band-pass</td><td>Allows a specific frequency band</td><td>Toll road with speed range</td><td>FM radio, Wi-Fi</td></tr>
<tr>
<td>High-pass</td><td>Blocks low, passes high frequencies</td><td>Speedway (fast cars only)</td><td>Audio filtering</td></tr>
<tr>
<td>Band-stop</td><td>Blocks a range but passes others</td><td>Road under construction</td><td>Noise removal (for example, hum filter)</td></tr>
</tbody>
</table>
</div><p>So when we say "low-pass channel," we're talking about <strong>how a physical channel filters signals.</strong></p>
<h3 id="heading-logical-channels-lanes-on-the-road">Logical Channels = Lanes on the Road</h3>
<p>A <strong>logical channel</strong> is a virtual path created within a physical one. It organizes or splits the signal flow so multiple people or devices can use the same channel without crashing into each other.</p>
<div class="hn-table">
<table>
<thead>
<tr>
<td><strong>Feature</strong></td><td><strong>Description</strong></td><td><strong>Analogy</strong></td></tr>
</thead>
<tbody>
<tr>
<td>Frequency Division</td><td>Each user gets their own frequency</td><td>FM radio stations</td></tr>
<tr>
<td>Time Division</td><td>Each user gets a time slot</td><td>Taking turns at a speaking table</td></tr>
<tr>
<td>Virtual Circuits</td><td>Custom paths inside networks</td><td>Reserved bus seats</td></tr>
</tbody>
</table>
</div><p>So yes – you can have many logical channels on one physical cable.</p>
<h4 id="heading-how-they-work-together">How They Work Together</h4>
<p>Let’s combine it all:</p>
<p>Imagine a fiber optic cable (physical channel) that’s designed to carry a specific frequency range (band-pass).<br>Within that frequency range, you can create many logical channels using time or frequency division.</p>
<p>Example: FM Radio</p>
<ul>
<li><p><strong>Physical Channel</strong>: Air (radio waves)</p>
</li>
<li><p><strong>Type</strong>: Band-pass (88–108 MHz)</p>
</li>
<li><p><strong>Logical Channels</strong>: Each station (for example, 98.4 FM) is a logical channel inside that band</p>
</li>
</ul>
<p>Example: Internet over DSL</p>
<ul>
<li><p><strong>Physical Channel</strong>: Telephone line (copper wire)</p>
</li>
<li><p><strong>Type</strong>: Low-pass for voice, high-pass for internet</p>
</li>
<li><p><strong>Logical Channels</strong>: Browsing, streaming, and downloads running together via time/frequency division</p>
</li>
</ul>
<h2 id="heading-baseband-vs-broadband-transmission-how-we-use-the-channel">Baseband vs Broadband Transmission: How We Use the Channel</h2>
<p>There are two main types of ways we use the channel: baseband and broadband transmission.</p>
<p>Baseband Transmission is like talking directly to someone across a quiet room. Simple and unaltered. Common in local systems like Ethernet.</p>
<p>Broadband Transmission is a bit different. Here, we dress up the digital message in analog clothing using <strong>modulation</strong>. That’s how we send data over radio or fiber. It’s more complex, but necessary when you’re dealing with wider, noisier roads.</p>
<h3 id="heading-signal-villains-what-goes-wrong-on-the-way">Signal Villains: What Goes Wrong on the Way</h3>
<p>As your signal travels down the channel, it may face <strong>three big problems</strong>.</p>
<ol>
<li><p><strong>Attenuation:</strong> It’s like my voice getting quieter the farther I am from someone. Amplifiers help boost it.</p>
</li>
<li><p><strong>Distortion:</strong> Imagine you and I agree to send square waves, but by the time it reaches you, it looks like mush. That’s distortion, especially bad over long cables.</p>
</li>
<li><p><strong>Noise:</strong> Noise is anything extra that wasn’t supposed to be in the signal. From lightning strikes to microwaves, interference is real.</p>
</li>
</ol>
<p><strong>Types I learned about:</strong></p>
<ul>
<li><p>Thermal (heat-related)</p>
</li>
<li><p>Induced (nearby equipment)</p>
</li>
<li><p>Crosstalk (adjacent wires “talking”)</p>
</li>
<li><p>Impulse (sudden bursts)</p>
</li>
</ul>
<p>We can reduce noise using better cables, filters, and digital corrections.</p>
<h2 id="heading-bandwidth">Bandwidth</h2>
<p>The word ‘bandwidth’ gets thrown around so much. For me, it used to just mean internet speed. But it’s deeper:</p>
<ul>
<li><p><strong>Analog Bandwidth</strong>: Range of frequencies a signal uses.</p>
</li>
<li><p><strong>Digital Bandwidth</strong>: How much data we can push through per second.</p>
</li>
</ul>
<p>More bandwidth = more room = faster, clearer communication.</p>
<p>We’ll talk more about bandwidth in the next chapter.</p>
<p>Learning about signals was like being handed the key to a secret code. Every beep, flash, and wave in our world is part of a language. Once you see it, you can’t unsee it. Signals are not just theory – they are the reason I can write this on a laptop, send it to the cloud, and have you read it anywhere in the world.</p>
<h2 id="heading-chapter-3-bandwidth-understanding-how-much-we-can-transmit">Chapter 3: Bandwidth — Understanding How Much We Can Transmit</h2>
<p>When I first heard the term "bandwidth," I assumed it just meant how fast my internet was. And while that’s not entirely wrong, I came to learn there’s much more to it.</p>
<p>In this chapter, we’ll delve into the concept of bandwidth as the capacity of a communication path, examine its impact on signal quality and speed, and investigate how it's measured in both analog and digital systems.</p>
<p>By the end of this chapter, you will be able to explain:</p>
<ul>
<li><p>What bandwidth means in different contexts</p>
</li>
<li><p>How analog and digital bandwidths are measured</p>
</li>
<li><p>The concept of throughput and how it differs from bandwidth</p>
</li>
<li><p>Factors that affect data transmission performance</p>
</li>
</ul>
<h2 id="heading-what-bandwidth-is-all-about">What Bandwidth is All About</h2>
<p><strong>Bandwidth</strong> is the maximum amount of data that can be transmitted over a communication channel in a given amount of time.</p>
<p>Have you ever streamed a movie and it kept buffering? That frustrating lag led me to one of the most important concepts in networking: bandwidth. Bandwidth is like a highway. The wider the road, the more cars (or data) can pass at once.</p>
<p>I also like to think of it this way: If I’m trying to pour water (data) through a pipe (the communication channel), a narrow pipe limits how much water can flow through at a time. That’s low bandwidth. A wide pipe? Now we’re talking high bandwidth – fast and smooth.</p>
<h3 id="heading-bandwidth-utilization">Bandwidth Utilization</h3>
<h4 id="heading-efficiency">Efficiency</h4>
<p>This is how well we use the available bandwidth. High efficiency means most of the bandwidth is being used for actual data (not overhead).</p>
<h4 id="heading-overhead">Overhead</h4>
<p>Overhead includes headers, acknowledgments, and error-checking codes. It’s necessary, but it eats into our available bandwidth.</p>
<h4 id="heading-idle-time">Idle Time</h4>
<p>Sometimes the channel sits unused, due to waiting for acknowledgment, processing time, and so on. Minimizing idle time improves efficiency.</p>
<h2 id="heading-bandwidth-in-analog-and-digital-terms">Bandwidth in Analog and Digital Terms</h2>
<h3 id="heading-analog-bandwidth">Analog Bandwidth</h3>
<p>Analog bandwidth refers to the <strong>range of frequencies</strong> over which an analog signal can be accurately acquired, processed, or transmitted by a system. Beyond this range, the signal begins to degrade – either being attenuated or distorted, making it unreliable for precise use.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1750094089263/3f02c7a4-9652-4162-b258-422e431d94a8.png" alt="Analog Bandwidth - amplitude &amp; frequency graph" class="image--center mx-auto" width="338" height="293" loading="lazy"></p>
<h4 id="heading-key-concepts">Key Concepts</h4>
<ul>
<li><p><strong>Frequency Range:</strong> Analog bandwidth defines the spectrum of frequencies that a system can handle <strong>without significant degradation</strong>. It’s the system’s “comfort zone” for signal fidelity.</p>
</li>
<li><p><strong>3 dB Bandwidth:</strong> One common method of defining analog bandwidth is the <strong>-3 dB point</strong>. At this point, the signal’s amplitude drops to about 70.7% of its original value, meaning almost half its power is lost. Frequencies beyond this threshold experience much more signal loss or distortion.</p>
</li>
<li><p><strong>Importance in Signal Fidelity:</strong> Analog bandwidth directly affects how well a system can reproduce or process real-world signals – especially in audio, video, instrumentation, and telecommunications. A narrow bandwidth results in muffled or distorted outputs, while a wider bandwidth ensures better detail and accuracy.</p>
</li>
</ul>
<h3 id="heading-bandwidth-and-rise-time">Bandwidth and Rise Time</h3>
<p>In instruments like oscilloscopes, analog bandwidth is closely related to <strong>rise time</strong> – the time it takes for a signal to transition from low to high. A wider bandwidth enables faster transitions to be captured accurately, which is essential for analyzing high-speed or fast-changing signals.</p>
<h3 id="heading-real-life-example">Real-Life Example</h3>
<p>Consider old telephone systems: they typically had an analog bandwidth ranging from 300 Hz to 3300 Hz, resulting in a 3000 Hz bandwidth. This range was enough for clear voice transmission, but not wide enough for high-fidelity music or modern audio standards.</p>
<h3 id="heading-applications-of-analog-bandwidth">Applications of Analog Bandwidth</h3>
<div class="hn-table">
<table>
<thead>
<tr>
<td><strong>Application Area</strong></td><td><strong>Role of Analog Bandwidth</strong></td></tr>
</thead>
<tbody>
<tr>
<td>Oscilloscopes</td><td>Determines how accurately signals (especially fast ones) are captured.</td></tr>
<tr>
<td>Amplifiers</td><td>Specifies which frequency ranges can be amplified without distortion.</td></tr>
<tr>
<td>Communication Systems</td><td>Defines signal capacity and transmission quality.</td></tr>
<tr>
<td>Data Acquisition</td><td>Affects how well fast-changing signals are measured and analyzed.</td></tr>
</tbody>
</table>
</div><h3 id="heading-digital-bandwidth">Digital Bandwidth</h3>
<p>Digital bandwidth refers to the <strong>maximum capacity</strong> of a digital channel to transmit data over a specific period, usually measured in <strong>bits per second (bps)</strong>. It’s a measure of how much data can “flow” through a communication path, much like how the width of a pipe controls how much water can pass through.</p>
<p>The wider the digital bandwidth, the more data can be transmitted simultaneously, resulting in faster downloads, smoother video streams, and better overall network performance.</p>
<h4 id="heading-bandwidth-vs-data-rate">Bandwidth vs. Data Rate</h4>
<p>Although they’re often used interchangeably, they aren’t quite the same:</p>
<ul>
<li><p><strong>Bandwidth</strong> is the capacity of the channel – the <em>maximum potential</em>.</p>
</li>
<li><p><strong>Data rate</strong> is the actual speed at which data is transmitted, which can vary based on factors like:</p>
<ul>
<li><p>Network congestion</p>
</li>
<li><p>Hardware limitations</p>
</li>
<li><p>Signal interference</p>
</li>
</ul>
</li>
</ul>
<p>Think of bandwidth as the size of a highway, and data rate as how fast cars are moving on it.</p>
<h4 id="heading-how-digital-bandwidth-is-measured">How Digital Bandwidth is Measured</h4>
<p>Digital bandwidth is expressed in units such as:</p>
<ul>
<li><p><strong>bps</strong> – bits per second</p>
</li>
<li><p><strong>Kbps</strong> – thousands of bits per second</p>
</li>
<li><p><strong>Mbps</strong> – millions of bits per second</p>
</li>
<li><p><strong>Gbps</strong> – billions of bits per second</p>
</li>
</ul>
<p><strong>Example</strong>: A 100 Mbps internet connection can, in theory, transfer 100 million bits of data every second.</p>
<h4 id="heading-why-it-matters">Why It Matters</h4>
<p>Bandwidth plays a central role in modern digital life. Without enough bandwidth:</p>
<ul>
<li><p>Streaming videos buffer</p>
</li>
<li><p>Video calls drop in quality or disconnect</p>
</li>
<li><p>Online games lag or stutter</p>
</li>
<li><p>Large files download painfully slowly</p>
</li>
</ul>
<p>This becomes even more critical when multiple devices share the same network. Each device draws from the available bandwidth, which can quickly get overwhelmed if the demand is too high.</p>
<h3 id="heading-digital-vs-analog-bandwidth">Digital vs. Analog Bandwidth</h3>
<div class="hn-table">
<table>
<thead>
<tr>
<td><strong>Aspect</strong></td><td><strong>Digital Bandwidth</strong></td><td><strong>Analog Bandwidth</strong></td></tr>
</thead>
<tbody>
<tr>
<td>Measured in</td><td>Bits per second (bps, Mbps, Gbps)</td><td>Hertz (Hz)</td></tr>
<tr>
<td>Focus</td><td>Data transmission rate</td><td>Frequency range</td></tr>
<tr>
<td>Example</td><td>Internet connection</td><td>FM radio signal (for example, 88–108 MHz)</td></tr>
</tbody>
</table>
</div><h3 id="heading-bandwidth-in-shared-networks">Bandwidth in Shared Networks</h3>
<p>In shared environments – like home Wi-Fi or public hotspots – everyone taps into the same bandwidth. If bandwidth is limited and several devices are streaming, gaming, or downloading, the network slows down for everyone.</p>
<h2 id="heading-throughput-what-gets-delivered">Throughput – What Gets Delivered</h2>
<p>While <strong>bandwidth</strong> is the <em>potential</em> capacity of a channel (the width of the road), <strong>throughput</strong> is the <em>actual</em> rate at which data travels end‑to‑end under real‑world conditions. It’s the number of cars that make it through the city per minute, after red lights, speed limits, and detours.</p>
<p><strong>Key factors that influence throughput:</strong></p>
<ul>
<li><p><strong>Interference &amp; Noise</strong> (analog) or <strong>packet collisions</strong> (digital)</p>
</li>
<li><p><strong>Hardware Constraints</strong> (CPU, NICs, switches)</p>
</li>
<li><p><strong>Network Congestion</strong> (too many users/devices)</p>
</li>
<li><p><strong>Error Retransmissions</strong> (when packets get lost or corrupted)</p>
</li>
</ul>
<p><strong>Example:</strong> A “100 Mbps” link (bandwidth) might only sustain 80 Mbps of throughput because of TCP overhead, competing traffic, and occasional packet losses.</p>
<h3 id="heading-latency-and-delay-the-time-dimension">Latency and Delay – The Time Dimension</h3>
<p>Latency is the <em>time</em> it takes for a single bit (or packet) to travel from sender to receiver. Think of it as a travel time, whereas bandwidth and throughput are about volume.</p>
<ol>
<li><p><strong>Propagation Delay:</strong> Time for the signal to move through the medium (for example, light in fiber: ~200,000 km/s).</p>
</li>
<li><p><strong>Transmission Delay:</strong> Time to push all the bits of a packet onto the wire:<br> Packet Size (bits)÷Link Bandwidth (bps)\text{Packet Size (bits)} ÷ \text{Link Bandwidth (bps)}Packet Size (bits)÷Link Bandwidth (bps)</p>
</li>
<li><p><strong>Processing Delay:</strong> Time routers or switches spend examining headers, making forwarding decisions.</p>
</li>
<li><p><strong>Queuing Delay:</strong> Time packets wait in buffers when traffic spikes.</p>
</li>
</ol>
<p><strong>Real‑world story:</strong> During a long‑distance video call, even 100 ms of round‑trip latency can feel like talking through molasses – voices overlap, and the conversation feels stilted.</p>
<h3 id="heading-jitter-variability-in-arrival">Jitter – Variability in Arrival</h3>
<p><strong>Jitter</strong> is the inconsistency in packet arrival times. Even if the average latency is low, high jitter disrupts:</p>
<ul>
<li><p><strong>Audio/Video Streams:</strong> Choppy playback when packets clump or arrive too late.</p>
</li>
<li><p><strong>VoIP Calls:</strong> Glitches, echoes, or dropped words.</p>
</li>
</ul>
<p>You can mitigate this through Buffers and Quality of Service (QoS) agreements, which real‑time traffic to smooth out the delivery.</p>
<h3 id="heading-how-to-improve-performance">How to Improve Performance</h3>
<p>If I could go back in time and give myself one tip: Performance isn’t just about speed – it’s about reliability and consistency, too.</p>
<p><strong>Here’s what affects performance:</strong></p>
<ol>
<li><p><strong>Bandwidth:</strong> Think of this as the largest diameter of your internet pipe – how much data can actually move through it per second, usually in Mbps or Gbps.</p>
<p> <strong>Why it matters:</strong> More bandwidth means your connection can handle more data – like downloading big files fast or streaming in 4K. <strong>BUT:</strong> Just because your connection can go fast doesn't necessarily mean that it always does. That's where throughput comes in.</p>
</li>
<li><p><strong>Throughput:</strong> Your actual speed – how much data is really passing through the pipe right now.</p>
<p> <strong>Why it matters:</strong> Your actual internet experience (web page loading, Netflix streaming, gaming) is throughput-dependent, not bandwidth-dependent. If your throughput is bad, your videos buffer, downloads crawl, and games lag – even when you're signed up for a "fast" plan.</p>
</li>
<li><p><strong>Latency &amp; Jitter: Latency</strong> is the lag – how long it takes information to travel from your machine back to the server and vice versa (in milliseconds). <strong>Jitter</strong> is the variation in that lag – how inconsistent the timing gets.</p>
<p> <strong>Why they're significant:</strong> High latency = frustrating delay in video calls, sluggish online gaming, or keyboard lag in remote desktops. High jitter = choppy audio, frozen faces, or desync'd video in live meetings or streams.</p>
</li>
<li><p><strong>Packet Loss:</strong> Sometimes, data just doesn't get to where it’s supposed to go. Packets are tiny chunks of data, and if a few get lost along the way, your device has to ask for them again.</p>
<p> <strong>Why it matters:</strong> Small levels of packet loss can cause buffering, call drops, or rubberbanding during gaming. Greater loss = subpar performance, stuttery audio, or crashed streams.</p>
</li>
<li><p><strong>Utilization &amp; Overhead: Utilization</strong> refers to what ratio of your total bandwidth is being used at any one time. <strong>Overhead</strong> is the extra information that needs to be dealt with to manage your connection – like labels on a package.</p>
<p> <strong>Why they're important:</strong> High utilization is when your connection gets crowded – for example, rush hour. Everything slows down. High overhead absorbs your free bandwidth – less room for what you actually love (video, games, files).</p>
</li>
</ol>
<p>Engineers use <a target="_blank" href="https://www.parkplacetechnologies.com/blog/network-optimization-performance-techniques/">techniques</a> like compression, efficient routing, better cabling, and load balancing to improve performance.</p>
<p>I now see bandwidth everywhere – not just in networks, but in life. Our mental bandwidth, emotional bandwidth – it's all about capacity. Knowing how bandwidth works helped me troubleshoot slow Wi-Fi, plan file transfers, and appreciate what’s going on behind a simple Google search.</p>
<p>Just as in life with mental or emotional bandwidth, we need both ca<em>pacity</em> and <em>consistency</em> to function at our best. Understanding these metrics empowers you to diagnose slow Wi‑Fi, optimize file transfers, and build networks that meet real user demands.</p>
<h2 id="heading-chapter-4-transmission-media-the-highways-of-communication"><strong>Chapter 4: Transmission Media — The Highways of Communication</strong></h2>
<p>How does data move across distances? What path does it take?</p>
<p>This chapter dives into the physical and wireless pathways data takes from one device to another – the <strong>transmission media</strong>. By the end of this chapter, you will understand:</p>
<ul>
<li><p>What transmission media is and why it matters</p>
</li>
<li><p>The difference between guided (wired) and unguided (wireless) media</p>
</li>
<li><p>Various types of cables (twisted pair, coaxial, fiber optics)</p>
</li>
<li><p>Wireless media like radio waves, microwaves, and infrared</p>
</li>
<li><p>The strengths and limitations of each medium</p>
</li>
</ul>
<h2 id="heading-what-are-transmission-media">What are Transmission Media?</h2>
<p>Imagine needing to deliver a letter. Do you send it through a postal truck? Drop it by drone? Deliver it by hand? The method you choose is your <strong>transmission medium</strong>.</p>
<p>In the digital world, transmission media refers to the path data takes from the sender to the receiver. These paths can be <strong>physical (guided)</strong>, like cables, or <strong>wireless (unguided)</strong>, like airwaves.</p>
<p>When I finally understood that even invisible data needs a “road,” I realized how crucial this topic was to building fast, reliable networks.</p>
<h2 id="heading-different-types-of-transmission-media">Different Types of Transmission Media</h2>
<p>Transmission media are classified into two broad categories:</p>
<ol>
<li><p><strong>Guided Media</strong> (Wired): The data follows a specific path (like a road or railway). Common types include a Twisted Pair cable, a Coaxial cable, and a Fiber Optic cable.</p>
</li>
<li><p><strong>Unguided Media</strong> (Wireless): Data floats freely through the atmosphere, like radio signals or Wi-Fi. Types include Radio Waves, Microwaves, and Infrared Waves.</p>
</li>
</ol>
<p>Let’s dive into each of these types of transmission media in a bit more detail.</p>
<h3 id="heading-guided-transmission-media">Guided Transmission Media</h3>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1748674489096/fe9c0cfd-6aaf-4746-a129-8c994287a976.png" alt="Guided Transmission media" class="image--center mx-auto" width="634" height="425" loading="lazy"></p>
<h4 id="heading-1-twisted-pair-cable">1. Twisted Pair Cable</h4>
<p>This was the first cable I ever handled – it looked like two wires twisted together. Signals are transmitted as tiny voltage differences between the two copper conductors. By twisting the pair, electromagnetic interference picked up on one wire tends to be canceled out on the other, since each twist reverses their positions relative to the noise source.</p>
<p><strong>Features &amp; Use‑Cases:</strong></p>
<ul>
<li><p><strong>Structure</strong>: Two insulated copper wires twisted to reduce interference.</p>
</li>
<li><p><strong>Types</strong>:</p>
<ul>
<li><p><strong>Unshielded Twisted Pair (UTP)</strong>: Common in LANs, cheaper but more prone to noise.</p>
</li>
<li><p><strong>Shielded Twisted Pair (STP)</strong>: Has shielding for better noise protection.</p>
</li>
</ul>
</li>
<li><p><strong>Usage</strong>: Telephones, Ethernet.</p>
</li>
<li><p><strong>Bandwidth</strong>: Low to medium.</p>
</li>
<li><p><strong>Distance</strong>: Up to 100 meters (for UTP).</p>
</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1748674630033/34e507b8-4c67-4e47-9275-a37dd48191e4.png" alt="Twisted pair cable" class="image--center mx-auto" width="326" height="191" loading="lazy"></p>
<h4 id="heading-2-coaxial-cable">2. Coaxial Cable</h4>
<p>I remember unscrewing one from the back of our old TV. A single copper core carries the signal; an insulating layer and an outer metal shield form a concentric geometry. The signal propagates as an electromagnetic wave confined between the inner conductor and shield, which also blocks external noise.</p>
<p><strong>Features &amp; Use‑Cases:</strong></p>
<ul>
<li><p><strong>Structure</strong>: A central copper core, surrounded by insulation, a metal shield, and an outer plastic cover.</p>
</li>
<li><p><strong>Advantages</strong>: Better shielding, higher bandwidth than UTP.</p>
</li>
<li><p><strong>Usage</strong>: Cable TV, broadband internet.</p>
</li>
<li><p><strong>Distance</strong>: Up to several kilometers with amplifiers.</p>
</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1748675087884/6a7d9a7c-a0a9-4780-b43d-69dd1d581a26.png" alt="Coaxial Cable" class="image--center mx-auto" width="326" height="191" loading="lazy"></p>
<h4 id="heading-3-fiber-optic-cable">3. Fiber Optic Cable</h4>
<p>This one blew my mind – light carrying data! Data is encoded into light pulses (laser or LED) sent down a glass or plastic core. Total internal reflection at the core–cladding interface traps light, allowing it to travel long distances with almost no loss.</p>
<p><strong>Features &amp; Use‑Cases:</strong></p>
<ul>
<li><p><strong>Structure</strong>: Glass or plastic core surrounded by cladding and a protective sheath.</p>
</li>
<li><p><strong>Types</strong>:</p>
<ul>
<li><p><strong>Single-Mode Fiber</strong>: For long distances, uses a laser.</p>
</li>
<li><p><strong>Multi-Mode Fiber</strong>: For shorter distances, uses LED.</p>
</li>
</ul>
</li>
<li><p><strong>Advantages</strong>:</p>
<ul>
<li><p>Immune to electromagnetic interference</p>
</li>
<li><p>Higher bandwidth and longer distances</p>
</li>
<li><p>More secure and reliable</p>
</li>
</ul>
</li>
<li><p><strong>Usage</strong>: Backbone of the internet, submarine cables, hospitals.</p>
</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1748675141484/627c2f1c-c6bb-4959-ae7e-5d59e427d3ae.png" alt="Fiber-optic Cable" class="image--center mx-auto" width="326" height="191" loading="lazy"></p>
<h3 id="heading-unguided-transmission-media">Unguided Transmission Media</h3>
<p>When you connect to Wi-Fi or use Bluetooth, you are relying on unguided media. These don’t need a cable – just air.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1748675235793/0c0f16b4-e96c-4056-9240-c908fba813f8.png" alt="Wireless Communication" class="image--center mx-auto" width="326" height="191" loading="lazy"></p>
<p>There are several different kinds of unguided transmission media. Let’s talk about some of the most common.</p>
<h4 id="heading-1-radio-waves">1. Radio Waves</h4>
<p><strong>How It Works:</strong><br>Antennas convert electrical signals into electromagnetic waves (and vice versa). Radio frequencies (3 kHz–1 GHz) propagate omnidirectionally (or in broad beams) through the air and can diffract around obstacles.</p>
<ul>
<li><p><strong>Pros:</strong> Penetrates walls; easy broadcast to many receivers.</p>
</li>
<li><p><strong>Cons:</strong> Susceptible to interference and eavesdropping.</p>
</li>
<li><p><strong>Applications:</strong> FM/AM radio, Wi‑Fi (2.4 GHz band), Bluetooth, cordless phones.</p>
</li>
</ul>
<h4 id="heading-2-microwaves">2. Microwaves</h4>
<p><strong>How It Works:</strong><br>Highly directional beams (1 GHz–300 GHz) generated by parabolic dishes or waveguide antennas. Because they travel in straight lines (line‑of‑sight), they must be carefully aligned between towers or rooftop dishes.</p>
<ul>
<li><p><strong>Pros:</strong> High data rates, cellular backhaul, satellite links.</p>
</li>
<li><p><strong>Cons:</strong> Rain fade, clear path required, more expensive antennas.</p>
</li>
<li><p><strong>Applications:</strong> Mobile networks, satellite TV, point‑to‑point enterprise links.</p>
</li>
</ul>
<h4 id="heading-3-infrared">3. Infrared</h4>
<p><strong>How It Works:</strong><br>LED or laser diodes emit infrared light pulses, which are detected by photodiodes on the receiver. Because IR light cannot pass through walls, it works only in a confined, line‑of‑sight – or within a reflective “cone.”</p>
<ul>
<li><p><strong>Pros:</strong> Highly secure (confined to room), no RF interference.</p>
</li>
<li><p><strong>Cons:</strong> Very short range; blocked by obstacles; strict alignment.</p>
</li>
<li><p><strong>Applications:</strong> TV remotes, short‑range device pairing, some industrial sensors.</p>
</li>
</ul>
<h3 id="heading-comparison-table">Comparison Table</h3>
<div class="hn-table">
<table>
<thead>
<tr>
<td><strong>Medium</strong></td><td><strong>Speed</strong></td><td><strong>Distance</strong></td><td><strong>Interference</strong></td><td><strong>Cost</strong></td><td><strong>Usage</strong></td></tr>
</thead>
<tbody>
<tr>
<td>Twisted Pair</td><td>Low-Medium</td><td>~100m</td><td>High</td><td>Low</td><td>LAN, telephony</td></tr>
<tr>
<td>Coaxial</td><td>Medium</td><td>~2km (amplified)</td><td>Medium</td><td>Medium</td><td>Cable TV, broadband</td></tr>
<tr>
<td>Fiber Optic</td><td>Very High</td><td>&gt;60km (with repeaters)</td><td>Very Low</td><td>High</td><td>Backbone, high-speed</td></tr>
<tr>
<td>Radio</td><td>Low-Medium</td><td>Long (via towers)</td><td>High</td><td>Low</td><td>Wi-Fi, radio, Bluetooth</td></tr>
<tr>
<td>Microwave</td><td>High</td><td>Long (LOS)</td><td>Medium</td><td>High</td><td>Mobile, satellites</td></tr>
<tr>
<td>Infrared</td><td>Low</td><td>Short</td><td>Very Low</td><td>Low</td><td>Remotes, IR sensors</td></tr>
</tbody>
</table>
</div><hr>
<h3 id="heading-how-to-choose-the-right-transmission-medium">How to Choose the Right Transmission Medium</h3>
<p>When I set up my first home network, I had to think about speed, distance, and cost. That’s what engineers do when designing large networks, too.</p>
<p><strong>Questions to ask yourself or your team:</strong></p>
<ul>
<li><p>How far does the data need to travel?</p>
</li>
<li><p>How fast do I need the connection?</p>
</li>
<li><p>Can I afford high-end cables or equipment?</p>
</li>
<li><p>Is the environment prone to interference?</p>
</li>
</ul>
<div class="hn-table">
<table>
<thead>
<tr>
<td>Scenario</td><td>Best Medium</td><td>Why &amp; How to Decide</td></tr>
</thead>
<tbody>
<tr>
<td><strong>Home LAN &amp; Office Ethernet</strong></td><td>Cat6 UTP</td><td>Affordable, easy to install, handles Gigabit speeds up to 100 m.</td></tr>
<tr>
<td><strong>No‑Cable Wireless Access</strong></td><td>Wi‑Fi (2.4/5 GHz)</td><td>Easy coverage of rooms; choose 5 GHz for less interference, higher speed.</td></tr>
<tr>
<td><strong>Long‑Distance Fiber Backbone</strong></td><td>Single‑Mode Fiber</td><td>Minimal signal loss over tens of kilometers; vital for ISP backbones.</td></tr>
<tr>
<td><strong>Campus/Building Interconnect</strong></td><td>Multi‑Mode Fiber</td><td>Supports 10–100 Gbps across campus; lower cost than single‑mode for short runs.</td></tr>
<tr>
<td><strong>Point‑to‑Point Enterprise Link</strong></td><td>Microwave Link</td><td>Rapid deployment between buildings; ensure clear LOS and proper dish alignment.</td></tr>
<tr>
<td><strong>Industrial/Noisy Environments</strong></td><td>Shielded Twisted‑Pair or Fiber</td><td>STP resists EMI ; fiber is immune but costlier.</td></tr>
<tr>
<td><strong>Room‑Confined, Secure Control Signals</strong></td><td>Infrared</td><td>Perfect for IR‑controlled lighting or remote‑only devices in one room.</td></tr>
<tr>
<td><strong>Broad Wireless Broadcast</strong></td><td>Radio Waves</td><td>For wide‑area IoT sensors or broadcast audio; simple omnidirectional antennas.</td></tr>
</tbody>
</table>
</div><ol>
<li><p><strong>Define Distance &amp; Speed:</strong></p>
<ul>
<li><p>Short run (&lt;100 m) + moderate speed → UTP.</p>
</li>
<li><p>Long haul → fiber or microwave.</p>
</li>
</ul>
</li>
<li><p><strong>Assess Environment:</strong></p>
<ul>
<li><p>High EMI (factories) → fiber or STP.</p>
</li>
<li><p>Indoor home/office → UTP or Wi‑Fi.</p>
</li>
</ul>
</li>
<li><p><strong>Consider Mobility:</strong></p>
<ul>
<li>Devices moving around → wireless (Wi‑Fi, cellular).</li>
</ul>
</li>
<li><p><strong>Weigh Cost vs. Performance:</strong></p>
<ul>
<li><p>Budget LAN → UTP</p>
</li>
<li><p>Critical backbone → fiber</p>
</li>
</ul>
</li>
<li><p><strong>Security Needs:</strong></p>
<ul>
<li><p>Room‑confined control → infrared</p>
</li>
<li><p>Open campus → directional microwave or encrypted Wi‑Fi</p>
</li>
</ul>
</li>
</ol>
<p>By matching distance, throughput requirements, environmental constraints, and budget, you can select the transmission medium that delivers optimal real‑world performance, just as engineers do when designing networks that power everything from our smartphones to submarine data cables.</p>
<p>Learning about transmission media made me realize how much effort goes into a simple text message. Whether it’s a copper wire under the road or a beam of light under the ocean, there’s always a path connecting us.</p>
<p>I now see cables and antennas not just as hardware, but as lifelines of human connection. They are the highways of our digital lives.</p>
<h2 id="heading-chapter-5-network-topologies-how-we-structure-our-connections"><strong>Chapter 5: Network Topologies — How We Structure Our Connections</strong></h2>
<p>The word “topology”, in the context of networking, refers to how devices are arranged and connected. This chapter helps you see that the structure of a network is just as important as the technology it uses.</p>
<p>By the end of this chapter, you will:</p>
<ul>
<li><p>Understand what a network topology is and why it matters</p>
</li>
<li><p>Explore different types of physical and logical topologies</p>
</li>
<li><p>Learn the pros and cons of each layout (bus, ring, star, mesh, hybrid)</p>
</li>
<li><p>Recognize how topology affects performance, scalability, and fault tolerance</p>
</li>
</ul>
<h2 id="heading-what-is-topology">What is Topology?</h2>
<p>If you’ve ever arranged chairs in a room for a meeting, you’ve thought about topology. Should everyone face forward? Sit in a circle? Group up in clusters?</p>
<p>Networking topology is the same idea – it’s about the <strong>layout of devices and how they connect</strong>. Whether you're designing a small home LAN or a vast corporate network, choosing the right topology affects everything: speed, cost, troubleshooting, and scalability.</p>
<h2 id="heading-physical-vs-logical-topology">Physical vs Logical Topology</h2>
<h3 id="heading-physical-topology">Physical Topology</h3>
<p>This is what you can see – the actual layout of wires and devices.</p>
<p><strong>Example:</strong> You see computers in a classroom connected by cables to a central switch. That’s the physical topology.</p>
<h3 id="heading-logical-topology">Logical Topology</h3>
<p>This is how data flows, regardless of how devices are physically connected.</p>
<p><strong>Example:</strong> Even if computers are wired to a switch (star), the data may travel like a bus – this makes it a logical bus topology (more on this below).</p>
<p>It’s like a subway map vs. the actual underground tunnels – one shows the concept, the other shows the reality.</p>
<h2 id="heading-types-of-network-topologies">Types of Network Topologies</h2>
<p>Let’s go through the main types of network topologies. Each has strengths, weaknesses, and ideal use cases.</p>
<h3 id="heading-bus-topology">Bus Topology</h3>
<p>Imagine one long cable – all devices “tap into” it.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1748937876952/03749b9f-55a9-4864-8727-c82d5f8f7df6.png" alt="Bus Topology – Shiksha" class="image--center mx-auto" width="408" height="227" loading="lazy"></p>
<p>In a bus topology, a single backbone cable connects all devices.</p>
<ul>
<li><p><strong>Pros</strong>:</p>
<ul>
<li><p>Simple and cheap</p>
</li>
<li><p>Uses less cable</p>
</li>
</ul>
</li>
<li><p><strong>Cons</strong>:</p>
<ul>
<li><p>If the backbone fails, the whole network goes down</p>
</li>
<li><p>Difficult to troubleshoot</p>
</li>
<li><p>Performance degrades with more devices</p>
</li>
</ul>
</li>
<li><p><strong>Use case</strong>: Small temporary networks</p>
</li>
</ul>
<h3 id="heading-ring-topology">Ring Topology</h3>
<p>Here, each device connects to exactly two others, forming a circle.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1748938093608/fbdd3460-1631-4959-abac-145c7ead69a1.png" alt="Ring Topology – Shiksha" class="image--center mx-auto" width="433" height="285" loading="lazy"></p>
<p>In this case, data travels in one direction, passing through each node.</p>
<ul>
<li><p><strong>Pros</strong>:</p>
<ul>
<li><p>Easy to install</p>
</li>
<li><p>Better than bus for managing traffic</p>
</li>
</ul>
</li>
<li><p><strong>Cons</strong>:</p>
<ul>
<li><p>Failure in one node can break the ring</p>
</li>
<li><p>Adding/removing nodes is disruptive</p>
</li>
</ul>
</li>
<li><p><strong>Use case</strong>: Token Ring networks (rare today)</p>
</li>
</ul>
<h3 id="heading-star-topology">Star Topology</h3>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1748938238120/78f568ef-4d7c-493a-a574-be59551f2bbf.png" alt="Star Topology – Shiksha" class="image--center mx-auto" width="288" height="230" loading="lazy"></p>
<p>This is what I used when setting up a LAN in my home. All devices connect to a central hub or switch.</p>
<ul>
<li><p><strong>Pros</strong>:</p>
<ul>
<li><p>Easy to install and manage</p>
</li>
<li><p>Failure of one device doesn’t affect the rest</p>
</li>
</ul>
</li>
<li><p><strong>Cons</strong>:</p>
<ul>
<li><p>If the central device fails, everything goes down</p>
</li>
<li><p>Requires more cable</p>
</li>
</ul>
</li>
<li><p><strong>Use case</strong>: Modern Ethernet networks</p>
</li>
</ul>
<h3 id="heading-mesh-topology">Mesh Topology</h3>
<p>This one fascinated me because of its complexity.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1748938980213/81eb109a-1acb-4932-a8c0-17445591d660.png" alt="Mesh Topology – Shiksha" class="image--center mx-auto" width="468" height="263" loading="lazy"></p>
<p>In a mesh topology, every device is connected to every other device.</p>
<ul>
<li><p><strong>Pros</strong>:</p>
<ul>
<li><p>Redundant paths ensure reliability</p>
</li>
<li><p>Excellent fault tolerance</p>
</li>
</ul>
</li>
<li><p><strong>Cons</strong>:</p>
<ul>
<li><p>Expensive and complex to install</p>
</li>
<li><p>Requires lots of cabling</p>
</li>
</ul>
</li>
<li><p><strong>Use case</strong>: Military, critical systems, backbone networks</p>
</li>
</ul>
<h3 id="heading-hybrid-topology">Hybrid Topology</h3>
<p>Like a recipe with ingredients from different cuisines.</p>
<p><img src="https://images.shiksha.com/mediadata/images/articles/1709021924phpTqwiOP.jpeg" alt="What is Hybrid Topology – Shiksha" width="600" height="400" loading="lazy"></p>
<p>A hybrid topology works by combining two or more topologies.</p>
<ul>
<li><p><strong>Pros</strong>:</p>
<ul>
<li><p>Flexible and scalable</p>
</li>
<li><p>Can be tailored to specific needs</p>
</li>
</ul>
</li>
<li><p><strong>Cons</strong>:</p>
<ul>
<li>Complex design and management</li>
</ul>
</li>
<li><p><strong>Use case</strong>: Large organizations with diverse requirements</p>
</li>
</ul>
<h3 id="heading-comparison-table-1">Comparison Table</h3>
<div class="hn-table">
<table>
<thead>
<tr>
<td><strong>Topology</strong></td><td><strong>Cost</strong></td><td><strong>Reliability</strong></td><td><strong>Scalability</strong></td><td><strong>Complexity</strong></td><td><strong>Use Case</strong></td></tr>
</thead>
<tbody>
<tr>
<td>Bus</td><td>Low</td><td>Low</td><td>Low</td><td>Low</td><td>Small LANs</td></tr>
<tr>
<td>Ring</td><td>Medium</td><td>Medium</td><td>Low</td><td>Medium</td><td>Outdated systems</td></tr>
<tr>
<td>Star</td><td>Medium</td><td>Medium-High</td><td>High</td><td>Low</td><td>Homes, offices</td></tr>
<tr>
<td>Mesh</td><td>High</td><td>Very High</td><td>Medium</td><td>Very High</td><td>Data centers, military</td></tr>
<tr>
<td>Hybrid</td><td>High</td><td>High</td><td>Very High</td><td>High</td><td>Enterprises</td></tr>
</tbody>
</table>
</div><hr>
<h3 id="heading-how-to-choose-the-right-topology">How to Choose the Right Topology</h3>
<p>When I built my first network for a class project, I went with a <strong>star topology</strong>. Why? Because it was easy to set up and troubleshoot, and it matched our desk layout, with all PCs around a central switch. That hands-on experience taught me that the right topology isn’t just about wiring – it’s about reliability, cost, and how people use the network.</p>
<p>Think of it like planning a city:</p>
<ul>
<li><p>Where are the busiest hubs?</p>
</li>
<li><p>Do you need alternate routes in case one fails?</p>
</li>
<li><p>Can you maintain all the connections?</p>
</li>
</ul>
<h3 id="heading-common-network-topologies-and-when-to-use-them">Common Network Topologies and When to Use Them</h3>
<div class="hn-table">
<table>
<thead>
<tr>
<td>Topology</td><td>How It Works</td><td>When to Use It</td><td>Pros</td><td>Cons</td></tr>
</thead>
<tbody>
<tr>
<td><strong>Bus</strong></td><td>All devices share a single backbone cable</td><td>Very small networks, temporary setups, or budget constraints</td><td>Cheap, minimal cabling</td><td>Hard to troubleshoot, poor scalability, one break = network down</td></tr>
<tr>
<td><strong>Star</strong></td><td>Devices connect to a central hub or switch</td><td>Home networks, classrooms, offices</td><td>Easy to manage, isolate issues, scalable</td><td>Hub is single point of failure</td></tr>
<tr>
<td><strong>Ring</strong></td><td>Each device connects to two others forming a closed loop</td><td>Legacy systems or specialized industrial networks</td><td>Predictable data flow, fair traffic management</td><td>Break in loop can halt the network unless dual ring used</td></tr>
<tr>
<td><strong>Mesh</strong></td><td>Every device connects to multiple others</td><td>Critical systems (e.g. military, finance), where uptime is vital</td><td>Highly fault-tolerant, redundant paths</td><td>Expensive, complex, heavy cabling</td></tr>
<tr>
<td><strong>Hybrid</strong></td><td>Mix of two or more topologies</td><td>Large enterprises or campuses</td><td>Flexible, optimized for different departments</td><td>Can be complex and costly to manage</td></tr>
</tbody>
</table>
</div><hr>
<h3 id="heading-how-to-actually-choose-a-topology-real-life-scenarios">How to Actually Choose a Topology (Real-Life Scenarios)</h3>
<p>Let’s move beyond theory. Here’s how you'd pick a topology depending on your network goals and constraints:</p>
<h4 id="heading-1-need-a-simple-setup-with-a-tight-budget">1. Need a simple setup with a tight budget?</h4>
<ul>
<li><p><strong>Choose:</strong> Bus or Star</p>
</li>
<li><p><strong>Why:</strong> Bus requires minimal cabling (but be warned—it’s fragile); Star uses affordable switches and is easy to expand.</p>
</li>
<li><p><strong>Example:</strong> Setting up a temporary lab or a network for a rural clinic.</p>
</li>
</ul>
<h4 id="heading-2-setting-up-a-home-or-small-office">2. Setting up a home or small office?</h4>
<ul>
<li><p><strong>Choose:</strong> Star</p>
</li>
<li><p><strong>Why:</strong> It mirrors how devices are physically placed. One faulty PC won’t crash the whole network.</p>
</li>
<li><p><strong>Example:</strong> Wi-Fi router (the central node) with laptops, smart TVs, and printers.</p>
</li>
</ul>
<h4 id="heading-3-running-a-business-with-multiple-departments">3. Running a business with multiple departments?</h4>
<ul>
<li><p><strong>Choose:</strong> Hybrid (Star + Mesh or Star + Ring)</p>
</li>
<li><p><strong>Why:</strong> Combine flexibility with reliability. Use star for offices, mesh for server interconnects.</p>
</li>
<li><p><strong>Example:</strong> A university with classrooms (star) and data centers (mesh).</p>
</li>
</ul>
<h4 id="heading-4-downtime-is-a-dealbreaker">4. Downtime is a dealbreaker?</h4>
<ul>
<li><p><strong>Choose:</strong> Mesh</p>
</li>
<li><p><strong>Why:</strong> Redundant paths keep communication alive even if several links fail.</p>
</li>
<li><p><strong>Example:</strong> Military control center or emergency dispatch system.</p>
</li>
</ul>
<h4 id="heading-5-working-with-legacy-systems">5. Working with legacy systems?</h4>
<ul>
<li><p><strong>Choose:</strong> Ring</p>
</li>
<li><p><strong>Why:</strong> Some older systems (like token ring networks or SONET) require ring layouts.</p>
</li>
<li><p><strong>Example:</strong> Legacy manufacturing networks that still run on ring-based designs.</p>
</li>
</ul>
<h4 id="heading-6-expecting-rapid-growth">6. Expecting rapid growth?</h4>
<ul>
<li><p><strong>Choose:</strong> Star or Hybrid</p>
</li>
<li><p><strong>Why:</strong> You can easily add more nodes to the central hub or integrate new segments.</p>
</li>
<li><p><strong>Example:</strong> A startup anticipating more staff and devices within 6–12 months.</p>
</li>
</ul>
<h3 id="heading-tips-from-experience">Tips from Experience</h3>
<ul>
<li><p><strong>Think long-term</strong>: Design for tomorrow’s load, not just today’s.</p>
</li>
<li><p><strong>Plan for failures</strong>: Even if you don’t need full mesh, maybe add backup links for your star’s hub.</p>
</li>
<li><p><strong>Sketch the layout</strong>: Visualizing devices and data flow helps you pick the best design.</p>
</li>
<li><p><strong>Consider wireless topologies too</strong>: For mobile or flexible environments, wireless mesh or infrastructure-based topologies might be better than wired ones.</p>
</li>
</ul>
<p>Just like roads and power lines shape how a city grows, your network topology shapes how your digital systems evolve. The best layout isn’t the one with the fanciest name – it’s the one that fits your users, your budget, and your goals.</p>
<p>Choose thoughtfully, and your network becomes more than wires – it becomes infrastructure for productivity, connection, and growth.</p>
<p>Network topology is the blueprint for that digital city. When done right, everything flows. When it’s messy, things get congested, slow, or fail. And that’s why I now look at every network not just as wires and switches, but as architecture, with a purpose and design.</p>
<h2 id="heading-chapter-6-the-osi-model-understanding-layers-of-communication"><strong>Chapter 6: The OSI Model — Understanding Layers of Communication</strong></h2>
<p>The OSI model is like a translator – it helps all types of systems speak the same language. And it’s everywhere.</p>
<p>In this chapter, you will:</p>
<ul>
<li><p>Understand what the OSI model is and why it was created</p>
</li>
<li><p>Learn what each of the 7 layers does</p>
</li>
<li><p>Discover how the layers work together during communication</p>
</li>
<li><p>Apply real-life analogies to remember each layer’s role</p>
</li>
</ul>
<h2 id="heading-what-is-the-osi-model">What is the OSI Model?</h2>
<p>Picture this: you want to send a letter. You write it 📝 → put it in an envelope ✉️ → mail it 📮 → it goes to your friend’s house 🏠 → they open it 👐 → and read it 👀.</p>
<p>That’s basically how the <strong>OSI Model</strong> works. The OSI (Open Systems Interconnection) model is a conceptual framework that describes <strong>how data moves from one device to another</strong> in a network. Instead of all systems operating differently, the OSI model helps break down communication into 7 distinct layers.</p>
<p>Each layer has a specific task, and together they make communication structured, understandable, and interoperable.</p>
<p>Developed by the <strong>International Organization for Standardization (ISO)</strong>, the OSI model was created to provide a universal standard for different systems to communicate.</p>
<p>Think of it like this: You’re building a house. You wouldn’t put the roof before the walls. Similarly, data follows an order, moving through each of these layers – from sender to receiver.</p>
<p>The 7 layers of the OSI model are:</p>
<ol>
<li><p><strong>Application</strong> (your browser or app)</p>
</li>
<li><p><strong>Presentation</strong> (formatting, encrypting)</p>
</li>
<li><p><strong>Session</strong> (starting/ending chats)</p>
</li>
<li><p><strong>Transport</strong> (reliable delivery)</p>
</li>
<li><p><strong>Network</strong> (finding the route)</p>
</li>
<li><p><strong>Data Link</strong> (organizing the data)</p>
</li>
<li><p><strong>Physical</strong> (the actual wires or Wi-Fi)</p>
</li>
</ol>
<p>It’s teamwork that makes the stream work!</p>
<p>An easy mnemonic I used to memorize them (from top to bottom): <strong>“All People Seem To Need Data Processing.”</strong></p>
<p>Let’s explore each layer from the bottom (Layer 1) to the top (Layer 7):</p>
<h3 id="heading-layer-1-physical-layer">Layer 1 – Physical Layer</h3>
<p>This is the <strong>hardware level</strong>.</p>
<ul>
<li><p>Handles: cables, switches, voltages, pins</p>
</li>
<li><p>Responsible for: physically transmitting raw bits (0s and 1s)</p>
</li>
<li><p>Example: Ethernet cables, fiber optics</p>
</li>
</ul>
<p><strong>Analogy</strong>: The roads on which data travels.</p>
<h3 id="heading-layer-2-data-link-layer">Layer 2 – Data Link Layer</h3>
<p>Ensures reliable transfer across the physical link.</p>
<ul>
<li><p>Handles: MAC addresses, framing, error detection</p>
</li>
<li><p>Divided into:</p>
<ul>
<li><p><strong>Logical Link Control (LLC)</strong></p>
</li>
<li><p><strong>Media Access Control (MAC)</strong></p>
</li>
</ul>
</li>
<li><p>Example: Switches, MAC addressing</p>
</li>
</ul>
<p><strong>Analogy</strong>: Street signs and traffic signals managing who goes when.</p>
<h3 id="heading-layer-3-network-layer">Layer 3 – Network Layer</h3>
<p>This is about <strong>routing</strong> – finding the best path to the destination.</p>
<ul>
<li><p>Handles: IP addresses, packet forwarding</p>
</li>
<li><p>Devices: Routers</p>
</li>
<li><p>Protocols: IP, ICMP</p>
</li>
</ul>
<p><strong>Analogy</strong>: Google Maps calculating the best route.</p>
<h3 id="heading-layer-4-transport-layer">Layer 4 – Transport Layer</h3>
<p>Responsible for <strong>end-to-end communication</strong> and reliability.</p>
<ul>
<li><p>Handles: segmentation, flow control, error correction</p>
</li>
<li><p>Protocols: TCP (reliable), UDP (fast but no guarantee)</p>
</li>
</ul>
<p><strong>Analogy</strong>: Your personal driver, making sure you arrive safely.</p>
<h3 id="heading-layer-5-session-layer">Layer 5 – Session Layer</h3>
<p>This layer manages <strong>dialogues</strong> (sessions) between systems.</p>
<ul>
<li>Handles: session setup, management, and termination</li>
</ul>
<p><strong>Analogy</strong>: A host managing who gets to speak in a Zoom meeting.</p>
<h3 id="heading-layer-6-presentation-layer">Layer 6 – Presentation Layer</h3>
<p>Responsible for <strong>data formatting and translation</strong>.</p>
<ul>
<li><p>Handles: encryption, compression, data conversion</p>
</li>
<li><p>Example: JPEG, MP3, SSL, ASCII, EBCDIC</p>
</li>
</ul>
<p><strong>Analogy</strong>: A translator ensuring the data is understood.</p>
<h3 id="heading-layer-7-application-layer">Layer 7 – Application Layer</h3>
<p>The layer closest to the <strong>user</strong>.</p>
<ul>
<li><p>Handles: user interfaces, network services</p>
</li>
<li><p>Protocols: HTTP, FTP, SMTP, DNS</p>
</li>
</ul>
<p><strong>Analogy</strong>: The app you open – browser, email client, and so on.</p>
<h3 id="heading-communication-flow">Communication Flow</h3>
<p>When I send a message:</p>
<ul>
<li><p>It <strong>starts at Layer 7</strong> and goes down to Layer 1 at my device</p>
</li>
<li><p>Then <strong>travels</strong> across the medium</p>
</li>
<li><p>And <strong>climbs back up</strong> from Layer 1 to Layer 7 on the receiving device</p>
</li>
</ul>
<p>Each layer talks to its “peer” on the other device using a protocol.</p>
<h3 id="heading-why-the-osi-model-matters">Why the OSI Model Matters</h3>
<p>The OSI model is more than theory. It’s a <strong>map of the journey your data takes</strong> that helped give structure to the chaos. It’s also helped me think systematically about problems, identify where things break down, and appreciate the complexity behind “just sending a message.” When debugging a network problem, I ask:</p>
<ul>
<li><p>Is the cable plugged in? (Layer 1)</p>
</li>
<li><p>Is the MAC address correct? (Layer 2)</p>
</li>
<li><p>Can I ping the destination? (Layer 3)</p>
</li>
<li><p>Is the application service running? (Layer 7)</p>
</li>
</ul>
<p>It gave me a checklist to go through, along with some clarity.</p>
<p>Whether you’re a student or a network pro, these 7 layers are your best friends.</p>
<h2 id="heading-tcpip-the-real-mvp-of-the-internet"><strong>TCP/IP: The Real MVP of the Internet</strong></h2>
<p>While the OSI model is an ideal learning tool, the <strong>TCP/IP model</strong> is what the internet actually uses. It has only four layers, combining some of the OSI layers for simplicity and practicality:</p>
<div class="hn-table">
<table>
<thead>
<tr>
<td><strong>TCP/IP Layer</strong></td><td><strong>Corresponds to OSI Layers</strong></td><td><strong>Examples</strong></td></tr>
</thead>
<tbody>
<tr>
<td>Application</td><td>Layers 5–7 (Application to Session)</td><td>HTTP, FTP, DNS, SMTP</td></tr>
<tr>
<td>Transport</td><td>Layer 4 (Transport)</td><td>TCP, UDP</td></tr>
<tr>
<td>Internet</td><td>Layer 3 (Network)</td><td>IP, ICMP</td></tr>
<tr>
<td>Network Access / Link</td><td>Layers 1–2 (Physical + Data Link)</td><td>Ethernet, Wi-Fi, MAC addresses</td></tr>
</tbody>
</table>
</div><p><strong>Why TCP/IP Matters:</strong></p>
<ul>
<li><p><strong>Scalable</strong>: It powers everything from home routers to global telecom infrastructure.</p>
</li>
<li><p><strong>Interoperable</strong>: Works across all hardware, operating systems, and devices.</p>
</li>
<li><p><strong>Fault-tolerant</strong>: TCP handles dropped packets, reordering, and error checking.</p>
</li>
<li><p><strong>Backbone of the Internet</strong>: Every website, email, or Zoom call runs over TCP/IP.</p>
</li>
</ul>
<h3 id="heading-how-tcpip-works-simplified-walkthrough">How TCP/IP Works (Simplified Walkthrough)</h3>
<p>Let’s say you open your browser and type in <code>www.example.com</code>.</p>
<ol>
<li><p><strong>Application Layer</strong> (HTTP): Your browser sends a request for a web page.</p>
</li>
<li><p><strong>Transport Layer</strong> (TCP): The request is broken into segments, with each piece numbered and prepared for reliable delivery.</p>
</li>
<li><p><strong>Internet Layer</strong> (IP): Each segment gets an IP address and is routed across networks.</p>
</li>
<li><p><strong>Network Access Layer</strong>: The data is turned into frames and signals, then physically transmitted over the internet (via cables or wireless).</p>
</li>
</ol>
<p>At the other end, the process reverses, and you see the web page appear on your screen.</p>
<h3 id="heading-osi-vs-tcpip-why-learn-both">OSI vs. TCP/IP: Why Learn Both?</h3>
<div class="hn-table">
<table>
<thead>
<tr>
<td><strong>OSI</strong></td><td><strong>TCP/IP</strong></td></tr>
</thead>
<tbody>
<tr>
<td>Conceptual, educational model</td><td>Practical, real-world protocol suite</td></tr>
<tr>
<td>7 distinct layers</td><td>4 simplified layers</td></tr>
<tr>
<td>Rarely used directly in implementation</td><td>Foundation of the internet</td></tr>
</tbody>
</table>
</div><p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1750099098223/f767b099-c0db-4810-ab48-eacd95d8cf08.png" alt="OSI Model vs TCP/IP Model" class="image--center mx-auto" width="598" height="405" loading="lazy"></p>
<p>Think of the OSI model as a textbook diagram – helpful for troubleshooting and interviews. TCP/IP is the actual engine – streamlined and optimized for real-world communication.</p>
<h2 id="heading-chapter-7-protocols-and-ports-how-rules-and-doors-guide-communication"><strong>Chapter 7: Protocols and Ports — How Rules and Doors Guide Communication</strong></h2>
<p>Protocols and ports are the rules and gates that make it all happen smoothly. This chapter helps you appreciate how structured communication actually is.</p>
<p>By the end of this chapter, you will:</p>
<ul>
<li><p>Understand what protocols are and why they’re essential</p>
</li>
<li><p>Learn about standard protocols used in networking</p>
</li>
<li><p>Explore the concept of ports and their numbers</p>
</li>
<li><p>Discover how protocols and ports work together to manage communication</p>
</li>
</ul>
<h2 id="heading-the-importance-of-protocols-and-ports">The Importance of Protocols and Ports</h2>
<p>When I tried setting up a local web server for the first time, nothing loaded. It took me a while to realize I hadn’t opened the right port or used the correct protocol.</p>
<p><strong>Protocols</strong> are the rules that devices follow when talking to each other. <strong>Ports</strong> are like doors that allow specific types of data to come in and go out.</p>
<p>Without protocols and ports, communication would be total chaos.</p>
<h2 id="heading-what-is-a-protocol-1">What is a Protocol?</h2>
<p>A <strong>protocol</strong> is an agreed-upon set of rules for sending and receiving data.</p>
<p>Think of it like:</p>
<ul>
<li><p>A language: both sides must understand it</p>
</li>
<li><p>A traffic system: everyone follows the same rules to avoid crashes</p>
</li>
</ul>
<h3 id="heading-characteristics-of-good-protocols">Characteristics of Good Protocols</h3>
<p>For a protocol to be effective in communication, it must clearly define how data is structured, understood, and managed in time. Let’s break that down:</p>
<h4 id="heading-1-syntax-the-format-and-structure-of-the-data">1. Syntax – The Format and Structure of the Data</h4>
<p>Think of syntax like grammar in language. It defines:</p>
<ul>
<li><p><strong>Data format</strong> (for example, header, payload, footer)</p>
</li>
<li><p><strong>Order of fields</strong> in a message</p>
</li>
<li><p><strong>Encoding rules</strong> (for example, binary, ASCII, JSON, XML)</p>
</li>
</ul>
<p><strong>Example:</strong> In an email protocol like SMTP, the syntax might require that the sender and recipient addresses come in a specific format like <code>MAIL FROM:</code> and <code>RCPT TO:</code>.</p>
<p>A good protocol syntax is:</p>
<ul>
<li><p><strong>Consistent</strong> and <strong>unambiguous</strong></p>
</li>
<li><p>Easy to <strong>parse</strong> by machines</p>
</li>
<li><p>Designed to <strong>minimize errors</strong> in interpretation</p>
</li>
</ul>
<h4 id="heading-2-semantics-the-meaning-of-each-field">2. Semantics – The Meaning of Each Field</h4>
<p>Semantics defines what each piece of data means – what should be done with it.</p>
<ul>
<li><p><strong>What does a "200 OK" response mean in HTTP?</strong> (It means the request was successful.)</p>
</li>
<li><p><strong>What does a SYN flag mean in TCP?</strong> (It initiates a new connection.)</p>
</li>
</ul>
<p>Good protocol semantics:</p>
<ul>
<li><p>Ensure that both sender and receiver interpret the data in the same way</p>
</li>
<li><p>Clearly define error codes, commands, and responses</p>
</li>
<li><p>Support meaningful actions tied to each instruction</p>
</li>
</ul>
<h4 id="heading-3-timing-when-and-how-fast-to-communicate">3. Timing – When and How Fast to Communicate</h4>
<p>Timing refers to:</p>
<ul>
<li><p><strong>When messages are sent</strong> (synchronization)</p>
</li>
<li><p><strong>How fast</strong> messages should arrive (data rate)</p>
</li>
<li><p><strong>How long</strong> to wait before assuming failure (timeouts)</p>
</li>
</ul>
<p>A good protocol timing design:</p>
<ul>
<li><p>Prevents collisions (two devices sending at the same time)</p>
</li>
<li><p>Supports flow control to avoid overwhelming slower devices</p>
</li>
<li><p>Includes retransmission logic in case of delay or loss</p>
</li>
</ul>
<h3 id="heading-common-networking-protocols">Common Networking Protocols</h3>
<p>Before diving into details, here’s some context: A networking protocol is like a shared language for computers. It ensures that devices can communicate, share data, and coordinate actions reliably and securely.</p>
<h4 id="heading-tcp-transmission-control-protocol">TCP – Transmission Control Protocol</h4>
<p>TCP is the backbone of reliable internet communication.</p>
<p>It is:</p>
<ul>
<li><p><strong>Connection-oriented</strong>: A session is established before data is sent.</p>
</li>
<li><p><strong>Reliable</strong>: It ensures all data arrives correctly and in order using acknowledgments and retransmission.</p>
</li>
<li><p><strong>Error-checked</strong>: Includes checksums to detect and correct corruption.</p>
</li>
</ul>
<p>You use TCP in Web browsing (HTTP/HTTPS), email (SMTP), and file transfers (FTP). It’s like mailing a package with tracking and a required signature on delivery.</p>
<h4 id="heading-udp-user-datagram-protocol">UDP – User Datagram Protocol</h4>
<p>UDP is lightweight, fast, and doesn’t worry about delivery guarantees.</p>
<p>It is:</p>
<ul>
<li><p><strong>Connectionless</strong>: No handshake or setup, just send and forget.</p>
</li>
<li><p><strong>Low overhead</strong>: No acknowledgments or retransmission.</p>
</li>
<li><p><strong>Faster</strong> than TCP, but riskier for data loss.</p>
</li>
</ul>
<p>You use it in online gaming, voice calls (VoIP), and live video streaming. It’s like shouting a message across a noisy room – quick, but no guarantee it’ll be heard.</p>
<h4 id="heading-http-https-hypertext-transfer-protocol">HTTP / HTTPS – HyperText Transfer Protocol</h4>
<p>HTTP is the protocol of the web – it enables your browser to request and display web pages.</p>
<p>It is:</p>
<ul>
<li><p><strong>Stateless</strong>: Each request is independent.</p>
</li>
<li><p><strong>Based on the request-response model</strong>: Client sends a request; server responds.</p>
</li>
</ul>
<p>HTTPS adds encryption via SSL/TLS, making it secure for sensitive data (for example, online banking, logins).</p>
<p>It’s used for activities like browsing websites and in REST APIs.</p>
<h4 id="heading-ftp-file-transfer-protocol">FTP – File Transfer Protocol</h4>
<p>FTP is a classic protocol for transferring files between devices on a network.</p>
<p>It:</p>
<ul>
<li><p>Works in client-server mode</p>
</li>
<li><p>Requires authentication (username/password)</p>
</li>
<li><p>Is not secure on its own – can be enhanced with FTPS or replaced by SFTP (uses SSH)</p>
</li>
</ul>
<p>You can use it for website hosting and file backup systems.</p>
<h4 id="heading-smtp-pop3-imap-email-protocols">SMTP, POP3, IMAP – Email Protocols</h4>
<p>These are the three common email protocols, and each has its own features:</p>
<ul>
<li><p><strong>SMTP</strong> (Simple Mail Transfer Protocol): Used to send email from clients to servers or between servers.</p>
</li>
<li><p><strong>POP3</strong> (Post Office Protocol v3): Downloads emails to the device and usually deletes them from the server.</p>
</li>
<li><p><strong>IMAP</strong> (Internet Message Access Protocol): Keeps email on the server and synchronizes across devices.</p>
</li>
</ul>
<p>These are used in email clients like Outlook, Thunderbird, and Apple Mail.</p>
<h4 id="heading-dns-domain-name-system"><strong>DNS – Domain Name System</strong></h4>
<p>DNS is the internet’s phonebook – it converts human-readable names (like <code>google.com</code>) into IP addresses.</p>
<ul>
<li><p>Hierarchical and distributed system</p>
</li>
<li><p>Uses caching to speed up lookups</p>
</li>
<li><p>Works behind the scenes of every website visit</p>
</li>
</ul>
<p>It’s used in every internet-connected application that uses domain names.</p>
<h3 id="heading-what-is-a-port">What is a Port?</h3>
<p>A <strong>port</strong> is a virtual door on a device that allows certain kinds of data through.</p>
<p>Each application or service uses a specific <strong>port number</strong>, which ranges from 0 to 65535.</p>
<h4 id="heading-port-ranges">Port Ranges</h4>
<ul>
<li><p><strong>Well-known ports</strong>: 0–1023 (assigned to common services)</p>
</li>
<li><p><strong>Registered ports</strong>: 1024–49151 (used by user processes)</p>
</li>
<li><p><strong>Dynamic/Private ports</strong>: 49152–65535 (temporary or private use)</p>
</li>
</ul>
<h4 id="heading-common-port-numbers">Common Port Numbers</h4>
<div class="hn-table">
<table>
<thead>
<tr>
<td>Service</td><td>Protocol</td><td>Port</td></tr>
</thead>
<tbody>
<tr>
<td>HTTP</td><td>TCP</td><td>80</td></tr>
<tr>
<td>HTTPS</td><td>TCP</td><td>443</td></tr>
<tr>
<td>FTP</td><td>TCP</td><td>21</td></tr>
<tr>
<td>SSH</td><td>TCP</td><td>22</td></tr>
<tr>
<td>DNS</td><td>UDP/TCP</td><td>53</td></tr>
<tr>
<td>SMTP</td><td>TCP</td><td>25</td></tr>
<tr>
<td>POP3</td><td>TCP</td><td>110</td></tr>
<tr>
<td>IMAP</td><td>TCP</td><td>143</td></tr>
</tbody>
</table>
</div><h3 id="heading-how-protocols-and-ports-work-together">How Protocols and Ports Work Together</h3>
<p>Imagine you’re throwing a party:</p>
<ul>
<li><p><strong>Protocol</strong>: The invitation format – RSVP, dress code, rules.</p>
</li>
<li><p><strong>Port</strong>: The door your friends enter through.</p>
</li>
</ul>
<p>A web browser knows to use <strong>HTTP (protocol)</strong> on <strong>port 80</strong>. A secure connection will use <strong>HTTPS</strong> on <strong>port 443</strong>.</p>
<p>Your computer and servers use these pairings to know what type of data to expect.</p>
<p>Once I understood protocols and ports, troubleshooting network issues got easier. Suddenly, firewall rules, web server configs, and error messages started to make sense.</p>
<p>Protocols ensure everyone speaks the same language. Ports ensure everyone enters through the correct door.</p>
<p>They are the silent heroes of every network conversation.</p>
<h2 id="heading-chapter-8-ip-addressing-and-subnetting-naming-and-organizing-the-network"><strong>Chapter 8: IP Addressing and Subnetting — Naming and Organizing the Network</strong></h2>
<p>When I first saw an IP address like 192.168.0.1, I didn’t think much of it. But now I see it for what it is, the digital address that tells data where to go. In this chapter, you will learn:</p>
<ul>
<li><p>What an IP address is and why it's necessary</p>
</li>
<li><p>The difference between IPv4 and IPv6</p>
</li>
<li><p>How subnetting works and why it's useful</p>
</li>
<li><p>How to calculate and interpret IP ranges, subnet masks, and CIDR notation</p>
</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1748436668531/8e7330cf-35f0-4c3d-a628-46261698b331.png" alt="IP Adress" class="image--center mx-auto" width="549" height="358" loading="lazy"></p>
<p>Imagine trying to mail a letter without an address – it would be lost forever. The same applies to data on a network. Every device needs a unique identifier called an <strong>IP address</strong> to send and receive information correctly.</p>
<p>IP addressing ensures that when I request a webpage, my data comes back to <strong>me</strong>, not someone else on the network.</p>
<h2 id="heading-what-is-an-ip-address">What is an IP Address?</h2>
<p>An IP address (Internet Protocol address) is a unique number assigned to every device on a network.</p>
<p>Every device on a network needs an IP address to identify it – like a phone number for computers. There are two main versions of IP addresses: <strong>IPv4</strong> and <strong>IPv6</strong>.</p>
<h3 id="heading-ipv4-vs-ipv6">IPv4 vs. IPv6</h3>
<p><strong>IPv4 (Internet Protocol version 4)</strong> is the older, more widely used system. It uses a <strong>32-bit address format</strong>, written as four numbers (each 0–255) separated by dots—for example: <code>192.168.1.1</code>. This format allows for about <strong>4.3 billion</strong> unique addresses.</p>
<p>But with the explosion of internet-connected devices, we quickly ran out of IPv4 addresses. That’s why <strong>IPv6 (Internet Protocol version 6)</strong> was introduced.IPv6 uses a <strong>128-bit address format</strong>, written in hexadecimal and separated by colons: <code>2001:0db8:85a3:0000:0000:8a2e:0370:7334</code>. This allows for a virtually unlimited number of addresses – <strong>over 340 undecillion</strong> (that’s 340 followed by 36 zeros)!</p>
<p>Let’s see a quick breakdown of the key details of each protocol:</p>
<h4 id="heading-ipv4-address-format">IPv4 Address Format</h4>
<ul>
<li><p>Composed of four numbers separated by dots</p>
</li>
<li><p>Each number ranges from 0 to 255 (i.e., 8 bits per number)</p>
</li>
<li><p>Total: 32 bits (4 x 8)</p>
</li>
<li><p>Example: <code>192.168.1.1</code></p>
</li>
</ul>
<h4 id="heading-ipv6-address-format">IPv6 Address Format</h4>
<ul>
<li><p>Created to solve the address shortage in IPv4</p>
</li>
<li><p>Composed of eight blocks of hexadecimal values</p>
</li>
<li><p>Total: 128 bits</p>
</li>
<li><p>Example: <code>2001:0db8:85a3:0000:0000:8a2e:0370:7334</code></p>
</li>
</ul>
<h3 id="heading-the-old-ipv4-class-system">The Old IPv4 Class System</h3>
<p>Originally, IPv4 addresses were grouped into <strong>classes</strong> to simplify allocation:</p>
<div class="hn-table">
<table>
<thead>
<tr>
<td>Class</td><td>Range</td><td>Default Subnet Mask</td><td>Use</td></tr>
</thead>
<tbody>
<tr>
<td>A</td><td>1.0.0.0 – 126.0.0.0</td><td>255.0.0.0</td><td>Large networks</td></tr>
<tr>
<td>B</td><td>128.0.0.0 – 191.255.0.0</td><td>255.255.0.0</td><td>Medium networks</td></tr>
<tr>
<td>C</td><td>192.0.0.0 – 223.255.255.0</td><td>255.255.255.0</td><td>Small networks</td></tr>
<tr>
<td>D</td><td>224.0.0.0 – 239.255.255.255</td><td>N/A</td><td>Multicasting</td></tr>
<tr>
<td>E</td><td>240.0.0.0 – 255.255.255.255</td><td>N/A</td><td>Reserved for future use</td></tr>
</tbody>
</table>
</div><p>But this system was too rigid. It wasted address space by assigning fixed block sizes, even when a network didn’t need that much.</p>
<h3 id="heading-enter-cidr-classless-inter-domain-routing">Enter CIDR: Classless Inter-Domain Routing</h3>
<p><strong>CIDR (pronounced "cider")</strong> replaced the old class system in the 1990s. CIDR allows for more flexible and efficient allocation of IP addresses. Instead of using predefined classes, CIDR uses a <strong>prefix length</strong> to specify how many bits represent the network portion.</p>
<ul>
<li>Example: <code>192.168.1.0/24</code>: This means the first 24 bits are the network, and the last 8 bits are available for hosts.</li>
</ul>
<p>CIDR made it easier to split (subnet) networks and slow the exhaustion of IPv4 addresses. We’ll discuss this more below.</p>
<h3 id="heading-does-ipv6-use-classes">Does IPv6 Use Classes?</h3>
<p>No, IPv6 does not use classes. It was designed from the start to avoid the inefficiencies of the class system. Instead, it uses a hierarchical structure and <strong>prefix notation</strong> similar to CIDR. IPv6 addresses are divided into:</p>
<ul>
<li><p><strong>Global unicast</strong> (like public IPv4 addresses)</p>
</li>
<li><p><strong>Link-local</strong> (used within a local network)</p>
</li>
<li><p><strong>Multicast</strong> (send to many devices at once)</p>
</li>
</ul>
<p>IPv6’s design naturally supports efficient routing and address assignment without needing "classes" as a workaround.</p>
<h2 id="heading-understanding-subnetting-and-related-concepts">Understanding Subnetting and Related Concepts</h2>
<p>After learning about IP addresses – especially the difference between IPv4 and IPv6 – it’s important to understand how networks manage and organize these addresses. That’s where <strong>subnetting</strong> comes in.</p>
<h3 id="heading-what-is-subnetting">What Is Subnetting?</h3>
<p>Think of a large network like a school compound. Subnetting is like dividing the school into classrooms or departments. It’s the process of dividing a larger network into smaller, more manageable subnetworks (subnets).</p>
<p>Subnetting helps with:</p>
<ul>
<li><p><strong>Efficient use of IP addresses</strong>: You don’t need to assign a huge range of addresses when only a few devices are needed.</p>
</li>
<li><p><strong>Network organization</strong>: Departments or teams can be separated into their own subnets.</p>
</li>
<li><p><strong>Better performance and security</strong>: Traffic stays local within each subnet, and issues in one subnet don’t affect the whole network.</p>
</li>
</ul>
<h3 id="heading-how-subnet-masks-work">How Subnet Masks Work</h3>
<p>To understand subnetting, we need to talk about <strong>subnet masks</strong>.</p>
<p>Every IPv4 address is divided into two parts:</p>
<ul>
<li><p>The <strong>network portion</strong> tells you <em>which</em> network it belongs to.</p>
</li>
<li><p>The <strong>host portion</strong> tells you <em>which specific device</em> (computer, phone, printer, and so on) on that network.</p>
</li>
</ul>
<p>A <strong>subnet mask</strong> tells us how to separate those two parts.</p>
<h4 id="heading-example">Example:</h4>
<ul>
<li><p><strong>IP Address</strong>: <code>192.168.1.10</code></p>
</li>
<li><p><strong>Subnet Mask</strong>: <code>255.255.255.0</code></p>
</li>
</ul>
<p>This means:</p>
<ul>
<li><p>The first three numbers of the IP address (<code>192.168.1</code>) represent the network.</p>
</li>
<li><p>The last number (<code>10</code>) identifies the specific host on that network.</p>
</li>
</ul>
<p>The subnet mask acts like a filter that shows which part of the IP is fixed (network) and which part can vary (host).</p>
<h3 id="heading-cidr-notation-a-modern-alternative">CIDR Notation: A Modern Alternative</h3>
<p>You might also see IP addresses written like this: <code>192.168.1.0/24</code>. This is called <strong>CIDR notation</strong> (Classless Inter-Domain Routing), which we discussed briefly above.</p>
<p>CIDR is a more flexible and compact way to express IP addresses and subnet masks. The <code>/24</code> tells us that the <strong>first 24 bits</strong> of the address are used for the network. The rest are for hosts.</p>
<div class="hn-table">
<table>
<thead>
<tr>
<td>CIDR Notation</td><td>Subnet Mask</td><td>Number of Hosts</td></tr>
</thead>
<tbody>
<tr>
<td>/24</td><td>255.255.255.0</td><td>256 IPs (254 usable)</td></tr>
<tr>
<td>/26</td><td>255.255.255.192</td><td>64 IPs (62 usable)</td></tr>
<tr>
<td>/30</td><td>255.255.255.252</td><td>4 IPs (2 usable)</td></tr>
</tbody>
</table>
</div><p>CIDR allows networks to be split or combined more precisely than the old Class A/B/C system, which had fixed sizes.</p>
<h3 id="heading-how-to-calculate-a-subnet">How to Calculate a Subnet</h3>
<p>Let’s walk through a basic example.</p>
<p>You’re given the network: <code>192.168.1.0/26</code></p>
<ol>
<li><p>The <code>/26</code> means 26 bits are used for the network and 6 bits remain for hosts (since IPv4 has 32 bits total).</p>
</li>
<li><p>Using the formula <code>2^number_of_host_bits</code>, you get <code>2^6 = 64</code> total addresses.</p>
</li>
<li><p>But 2 addresses are reserved: one for the network itself, and one for the broadcast address.</p>
</li>
<li><p>So, you’re left with 62 usable addresses in that subnet.</p>
</li>
</ol>
<p>This is helpful when dividing a network among departments, buildings, or device types.</p>
<h3 id="heading-public-vs-private-ip-addresses">Public vs Private IP Addresses</h3>
<p>Not all IP addresses are meant for use on the open internet. Some are private, used within internal networks.</p>
<h4 id="heading-private-ip-addresses">Private IP Addresses:</h4>
<ul>
<li><p>Not routed over the internet.</p>
</li>
<li><p>Used in homes, schools, and offices.</p>
</li>
<li><p>Can be reused in different networks without conflict.</p>
</li>
</ul>
<div class="hn-table">
<table>
<thead>
<tr>
<td>Range</td><td>Purpose</td></tr>
</thead>
<tbody>
<tr>
<td>10.0.0.0 – 10.255.255.255</td><td>Private use</td></tr>
<tr>
<td>172.16.0.0 – 172.31.255.255</td><td>Private use</td></tr>
<tr>
<td>192.168.0.0 – 192.168.255.255</td><td>Private use</td></tr>
</tbody>
</table>
</div><p>Devices with private IPs connect to the internet through a router that uses NAT (Network Address Translation).</p>
<h4 id="heading-public-ip-addresses">Public IP Addresses:</h4>
<ul>
<li><p>Assigned by your ISP (Internet Service Provider).</p>
</li>
<li><p>Must be <strong>globally unique</strong>.</p>
</li>
<li><p>Used by websites, servers, and other devices reachable over the internet.</p>
</li>
</ul>
<h3 id="heading-static-vs-dynamic-ip-addresses">Static vs Dynamic IP Addresses</h3>
<p>IP addresses can also be either <strong>static</strong> or <strong>dynamic</strong>.</p>
<ul>
<li><p><strong>Static IP Address</strong>:</p>
<ul>
<li><p>Manually assigned to a device.</p>
</li>
<li><p>Doesn’t change over time.</p>
</li>
<li><p>Commonly used for servers, printers, or devices that need consistent access.</p>
</li>
</ul>
</li>
<li><p><strong>Dynamic IP Address</strong>:</p>
<ul>
<li><p>Assigned automatically using <strong>DHCP (Dynamic Host Configuration Protocol)</strong>.</p>
</li>
<li><p>Changes occasionally.</p>
</li>
<li><p>Most home networks use dynamic IPs for convenience and flexibility.</p>
</li>
</ul>
</li>
</ul>
<h3 id="heading-why-this-all-matters">Why This All Matters</h3>
<p>Understanding subnetting, masks, and IP types helps you:</p>
<ul>
<li><p>Design networks that scale and perform well.</p>
</li>
<li><p>Assign addresses efficiently.</p>
</li>
<li><p>Improve security through network isolation.</p>
</li>
<li><p>Troubleshoot and configure routers and firewalls effectively.</p>
</li>
</ul>
<p>Subnetting felt confusing at first, but once I saw how it's like breaking down a neighborhood into streets and houses, it clicked. It's a powerful skill for anyone working in networking or IT. And with the rise of IPv6 and cloud-based systems, it's more relevant than ever.</p>
<h2 id="heading-chapter-9-routing-and-switching-directing-data-on-the-network"><strong>Chapter 9: Routing and Switching — Directing Data on the Network</strong></h2>
<p>In this chapter, you will:</p>
<ul>
<li><p>Understand the roles of routers and switches</p>
</li>
<li><p>Learn how data is directed within and across networks</p>
</li>
<li><p>Explore routing tables, packet forwarding, and switching techniques</p>
</li>
<li><p>Compare static vs. dynamic routing</p>
</li>
<li><p>Understand how LAN and WAN switching works</p>
</li>
</ul>
<p>Every time we send an email or watch a video, data is being <strong>routed</strong> and <strong>switched</strong> through a maze of devices. It’s like navigating a city using both small alleyways (switching) and highways (routing).</p>
<p>These processes ensure that data goes from point A to point B efficiently, securely, and correctly, even if they’re continents apart.</p>
<h2 id="heading-what-is-switching">What is Switching?</h2>
<p>Switching happens within local networks (LANs). It’s all about moving data between devices on the same network.</p>
<h3 id="heading-what-is-a-switch">What is a Switch?</h3>
<p>A <strong>switch</strong> is a device used in LANs to connect computers, printers, and other networked devices. It operates at <strong>Layer 2 (Data Link Layer)</strong> of the OSI model and plays a crucial role in directing traffic inside a local network.</p>
<p>But how does a switch know where to send the data?</p>
<p>It uses something called a <strong>MAC address</strong>.</p>
<h4 id="heading-what-are-mac-addresses">What Are MAC Addresses?</h4>
<p>A <strong>MAC (Media Access Control) address</strong> is a unique identifier assigned to a device’s network interface card (NIC). It’s like a digital fingerprint for your laptop, printer, or phone.</p>
<p>Each MAC address is a 48-bit address usually displayed in hexadecimal format like this:<br><code>00:1A:2B:3C:4D:5E</code></p>
<p>When data is sent over a LAN, it’s broken into frames, which include both a <strong>source MAC address</strong> and a <strong>destination MAC address</strong>.</p>
<p>The switch reads the destination MAC address and forwards the frame only to the port where that specific device is connected. This makes switching faster and more secure than old-style hubs that sent data to all devices.</p>
<h4 id="heading-lan-switching-techniques">LAN Switching Techniques</h4>
<p>Switches use different techniques to decide <strong>when and how to forward frames</strong>. These include:</p>
<ul>
<li><p><strong>Store-and-Forward Switching:</strong> The switch receives the entire frame, checks it for errors using a CRC (Cyclic Redundancy Check), and then forwards it. It’s reliable but slightly slower.</p>
</li>
<li><p><strong>Cut-Through Switching:</strong> The switch reads just the destination MAC address – often within the first 6 bytes – and immediately begins forwarding the frame. It’s faster but doesn’t check for errors.</p>
</li>
<li><p><strong>Fragment-Free Switching:</strong> A hybrid approach. It reads the first 64 bytes before forwarding, enough to avoid most collision-related errors.</p>
</li>
</ul>
<h2 id="heading-what-is-routing">What is Routing?</h2>
<p>While switching moves data within a single network, <strong>routing</strong> is what moves data <strong>between networks</strong>. This is how information travels from your home network to the wider internet.</p>
<h3 id="heading-what-is-a-router">What is a Router?</h3>
<p>A <strong>router</strong> is a device that connects different networks and determines the best path for data to travel. It operates at <strong>Layer 3 (Network Layer)</strong> of the OSI model and forwards data based on <strong>IP addresses</strong> rather than MAC addresses.</p>
<p>You can think of a router like a GPS navigator for internet traffic. It chooses the best available route based on traffic, cost, and destination.</p>
<h4 id="heading-what-is-a-routing-table">What is a Routing Table?</h4>
<p>Each router has a <strong>routing table</strong>, which is like a map that tells the router:</p>
<ul>
<li><p>Which destination networks does it know about</p>
</li>
<li><p>The next hop (which router to send the packet to next)</p>
</li>
<li><p>Which interface (port) to send it out on</p>
</li>
<li><p>The metric, which is a number representing the cost or preference of that path</p>
</li>
</ul>
<p>When a router receives a data packet, it checks the routing table to decide where to send it next.</p>
<h3 id="heading-static-vs-dynamic-routing">Static vs. Dynamic Routing</h3>
<p>Routers can learn routes in two main ways: <strong>static</strong> or <strong>dynamic</strong>.</p>
<h4 id="heading-static-routing">Static Routing</h4>
<p>With <strong>static routing</strong>, a network administrator manually enters routes into the router's configuration. This method is:</p>
<ul>
<li><p>Simple and efficient for small, stable networks</p>
</li>
<li><p>Very secure since routes never change unless manually updated</p>
</li>
<li><p>Limited because it doesn’t adapt if a network link goes down</p>
</li>
</ul>
<p>Example: If you tell a router, “To reach network X, always go through Router A,” that route will stay in place until someone changes it.</p>
<h4 id="heading-dynamic-routing">Dynamic Routing</h4>
<p><strong>Dynamic routing</strong> uses protocols that allow routers to automatically share and update routing information with each other. This approach is:</p>
<ul>
<li><p>Ideal for large or complex networks</p>
</li>
<li><p>Adaptive routes are recalculated if something changes or fails</p>
</li>
<li><p>Slightly more resource-intensive due to constant updates</p>
</li>
</ul>
<p>Common dynamic routing protocols include:</p>
<ul>
<li><p><strong>RIP (Routing Information Protocol)</strong> – Simple, but outdated</p>
</li>
<li><p><strong>OSPF (Open Shortest Path First)</strong> – Fast and widely used in large networks</p>
</li>
<li><p><strong>EIGRP (Enhanced Interior Gateway Routing Protocol)</strong> – Cisco’s proprietary protocol, combining the best of both distance vector and link-state methods</p>
</li>
<li><p><strong>BGP (Border Gateway Protocol)</strong> – The protocol that powers routing across the entire internet</p>
</li>
</ul>
<h3 id="heading-routing-in-action">Routing in Action</h3>
<p>Let’s say I’m watching a YouTube video:</p>
<ol>
<li><p>My device sends a request</p>
</li>
<li><p>The switch sends it to the router</p>
</li>
<li><p>The router consults its table and forwards it to another router</p>
</li>
<li><p>This process continues until the request reaches YouTube’s server</p>
</li>
<li><p>The server sends data back, following the same or a different route</p>
</li>
</ol>
<p>Routers and switches never sleep. They’re working behind the scenes, 24/7, making sure our digital lives function smoothly.</p>
<p>Routing and switching may sound technical, but they are the backbone of modern networking. Knowing how they work has helped me troubleshoot issues and understand why certain delays or outages happen.</p>
<p>Switching keeps local communication efficient. Routing connects us to the world.Together, they are the traffic controllers of the internet.</p>
<h2 id="heading-chapter-10-network-infrastructure-devices-security-and-the-modern-internet"><strong>Chapter 10: Network Infrastructure — Devices, Security, and the Modern Internet</strong></h2>
<p>As I continued my journey through networking and data communication, I could see that it's not theory alone – it's hardware, security, and innovation that are essential to the backbone of our everyday life on the internet.</p>
<p>This final chapter brings together the essential knowledge of networks: devices, security protocols, and the technologies behind new connectivity.</p>
<p>In this chapter, you will:</p>
<ul>
<li><p>Understand common networking devices and their functions</p>
</li>
<li><p>Explore firewalls, intrusion detection, and best practices for security</p>
</li>
<li><p>Learn how the internet works (DNS, cloud computing, IoT)</p>
</li>
<li><p>Appreciate the role of protocols, encryption, and data integrity in today's connected world</p>
</li>
</ul>
<h2 id="heading-network-devices-the-building-blocks-of-connectivity"><strong>Network Devices — The Building Blocks of Connectivity</strong></h2>
<p>Every time we send an email, stream a video, or browse the web, a collection of physical devices quietly work behind the scenes to make it all possible. These network devices form the infrastructure of both small local networks and the vast global internet. Let’s take a closer look at some of the key players.</p>
<h3 id="heading-hub">Hub</h3>
<p>The <strong>hub</strong> is one of the earliest and simplest network devices. It operates at the <strong>Physical Layer (Layer 1)</strong> of the OSI model and has a very basic job: when it receives data from one of its ports, it broadcasts that data to all other connected devices.</p>
<p>This method is inefficient, as it creates unnecessary traffic and poses security risks. Because of this, hubs are rarely used in modern networks, having been largely replaced by more intelligent devices like switches.</p>
<h3 id="heading-switch">Switch</h3>
<p>A <strong>switch</strong> is a more advanced and efficient version of a hub. It operates at <strong>Layer 2 (Data Link Layer)</strong> and uses MAC addresses to forward data only to the intended recipient. Instead of flooding the entire network with every transmission, a switch makes sure the data goes only where it's needed. This makes it the go-to device in most <strong>Local Area Networks (LANs)</strong> today.</p>
<h3 id="heading-router">Router</h3>
<p>While switches handle local traffic, <strong>routers</strong> are responsible for sending data between different networks. Operating at <strong>Layer 3 (Network Layer)</strong>, a router uses <strong>IP addresses</strong> to determine the best path for forwarding packets across the internet. In home and business environments, routers are essential for enabling access to the wider world beyond the local network.</p>
<h3 id="heading-access-point-ap">Access Point (AP)</h3>
<p>An <strong>Access Point</strong> bridges the gap between wired and wireless networking. It connects to a wired network and provides <strong>Wi-Fi</strong> so that wireless devices like laptops and smartphones can connect. Access points are especially important in large areas such as offices, schools, or public places where seamless wireless connectivity is needed.</p>
<h3 id="heading-modem">Modem</h3>
<p>A <strong>modem</strong> (short for <em>modulator-demodulator</em>) is the device that connects your local network to your <strong>Internet Service Provider (ISP)</strong>. It converts digital data from your computer into signals that can travel over telephone lines or cable systems, and vice versa. In many homes, the modem is combined with a router in a single device.</p>
<h3 id="heading-network-interface-card-nic">Network Interface Card (NIC)</h3>
<p>A <strong>NIC</strong> is the hardware component inside a device—like a laptop or desktop—that allows it to connect to a network. It can be built-in or external and can support either wired Ethernet or wireless Wi-Fi connections. Without a NIC, a device simply can’t participate in network communication.</p>
<h2 id="heading-network-security-protecting-our-digital-lives">Network Security — Protecting Our Digital Lives</h2>
<p>I never thought much about network security – until I once received a very convincing spam email that nearly tricked me into sharing personal info. It was a wake-up call that our digital spaces aren’t always as safe as they seem.</p>
<p>In today’s connected world, network security is not just an IT concern – it’s a crucial part of everyday life. As we connect more devices and store more personal data online, the risks of cyberattacks and data breaches grow. Here’s a look at the major threats and how we protect against them.</p>
<h3 id="heading-common-threats">Common Threats</h3>
<p>There are many ways attackers can exploit vulnerabilities in a network. Some of the most common threats include:</p>
<ul>
<li><p><strong>Malware</strong>: This includes viruses, worms, and ransomware – malicious software that can damage files, steal information, or lock systems until a ransom is paid.</p>
</li>
<li><p><strong>Phishing</strong>: Attackers send fake emails or create deceptive websites to trick users into revealing sensitive information like passwords or credit card numbers.</p>
</li>
<li><p><strong>DDoS Attacks</strong>: A Distributed Denial of Service attack overwhelms a system with traffic from multiple sources, causing it to slow down or crash entirely.</p>
</li>
</ul>
<h3 id="heading-security-devices-and-techniques">Security Devices and Techniques</h3>
<p>To defend against these threats, networks are equipped with various tools and strategies:</p>
<ul>
<li><p><strong>Firewalls</strong>: These act as gatekeepers between networks, blocking unauthorized access while allowing legitimate communication.</p>
</li>
<li><p><strong>Intrusion Detection Systems (IDS)</strong>: These monitor network traffic for suspicious behavior or known attack patterns.</p>
</li>
<li><p><strong>Antivirus and Endpoint Security</strong>: These tools protect individual devices by scanning for and removing malicious software.</p>
</li>
<li><p><strong>VPNs (Virtual Private Networks)</strong>: VPNs encrypt data transmitted over the internet, shielding users from eavesdropping—especially on public Wi-Fi networks.</p>
</li>
</ul>
<h3 id="heading-best-practices"><strong>Best Practices</strong></h3>
<p>Technology alone isn’t enough – human behavior plays a big role in security. Some key habits include:</p>
<ul>
<li><p>Using strong, unique passwords and changing them regularly</p>
</li>
<li><p>Keeping software and operating systems up to date, since patches often fix security holes</p>
</li>
<li><p>Enabling multi-factor authentication (MFA) to add an extra layer of protection</p>
</li>
<li><p>Educating users to recognize suspicious emails and links</p>
</li>
</ul>
<p>Together, these tools and habits form a multi-layered defense that helps safeguard personal and organizational data.</p>
<h2 id="heading-the-modern-internet-dns-cloud-and-iot"><strong>The Modern Internet — DNS, Cloud, and IoT</strong></h2>
<p>Today’s internet is about far more than just connecting computers. It’s a complex, evolving ecosystem of services and smart devices, all working together to deliver seamless digital experiences. Let’s explore three key pillars of the modern internet: <strong>DNS</strong>, <strong>Cloud Computing</strong>, and the <strong>Internet of Things (IoT)</strong>.</p>
<h3 id="heading-domain-name-system-dns">Domain Name System (DNS)</h3>
<p>Imagine trying to access websites using IP addresses like <code>142.250.190.206</code> instead of just typing <a target="_blank" href="http://google.com"><code>google.com</code></a>. It would be nearly impossible to remember. That’s where the <strong>Domain Name System (DNS)</strong> comes in.</p>
<p>DNS works like the internet’s phonebook: it translates easy-to-remember domain names (like google.com) into the numerical IP addresses that computers use to communicate. Without DNS, web browsing as we know it wouldn’t exist.</p>
<h3 id="heading-cloud-computing">Cloud Computing</h3>
<p>The <strong>cloud</strong> has transformed how we store, process, and access information. Rather than relying on local hardware, cloud computing delivers services—like file storage, applications, or processing power—via the internet. Platforms like Google Drive, Amazon Web Services (AWS), and Microsoft Azure make it easy to scale up resources as needed, work from anywhere, and reduce infrastructure costs.</p>
<p>The benefits are clear: scalability, flexibility, and cost efficiency. But it also brings new challenges in terms of data privacy, security, and compliance.</p>
<h3 id="heading-internet-of-things-iot">Internet of Things (IoT)</h3>
<p>The <strong>Internet of Things</strong> refers to everyday objects – like light bulbs, refrigerators, security cameras – that are connected to the internet and can communicate with each other. These devices offer convenience and automation, like turning off lights remotely or monitoring your home while away.</p>
<p>But the explosion of connected devices introduces challenges:</p>
<ul>
<li><p><strong>Security</strong>: Many IoT devices are poorly secured, making them easy targets for hackers.</p>
</li>
<li><p><strong>Interoperability</strong>: With so many manufacturers and standards, getting devices to work together can be difficult.</p>
</li>
<li><p><strong>Privacy</strong>: IoT devices often collect sensitive personal data, raising concerns about how that information is used.</p>
</li>
</ul>
<h2 id="heading-encryption-and-secure-protocols"><strong>Encryption and Secure Protocols</strong></h2>
<p>As data travels through this vast digital landscape, it must be protected from prying eyes. That’s where <strong>encryption</strong> and <strong>secure protocols</strong> come into play. These tools ensure that even if data is intercepted, it remains unreadable without the correct key.</p>
<p>Some of the most widely used secure protocols include:</p>
<ul>
<li><p><strong>HTTPS (Hypertext Transfer Protocol Secure)</strong>: Ensures encrypted communication between your browser and websites.</p>
</li>
<li><p><strong>SSL/TLS (Secure Sockets Layer / Transport Layer Security)</strong>: Used behind HTTPS to secure web data.</p>
</li>
<li><p><strong>IPSec</strong>: Encrypts IP packets and is commonly used in VPNs to secure network-level communication.</p>
</li>
<li><p><strong>SSH (Secure Shell)</strong>: Provides secure remote access to systems and devices.</p>
</li>
</ul>
<p>These technologies form the backbone of secure internet communication, protecting users from data leaks, identity theft, and other forms of digital attack.</p>
<h2 id="heading-wrapping-up">Wrapping Up</h2>
<p>Looking back, it's amazing how far we've come – from learning what a bit is, to understanding how huge global networks function securely and efficiently.</p>
<p>Networking is more than routers and wires – it's a finely crafted system of trust, logic, and global cooperation. It's the very reason that we're able to learn, work, connect, and create anywhere.</p>
<p>And having established this foundation, I feel ready to go further.</p>
<p>Thank you for joining me on this journey.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Improve Your Communication Skills as a Developer ]]>
                </title>
                <description>
                    <![CDATA[ You built an application that solves a problem most business owners face. You registered yourself at a local event to speak about your product, but no one cares. You try selling it on social media groups, but don't receive more than "Wow, that's an i... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-improve-communication-skills/</link>
                <guid isPermaLink="false">66bf4ac482aa0e323269b452</guid>
                
                    <category>
                        <![CDATA[ Career ]]>
                    </category>
                
                    <category>
                        <![CDATA[ career advice ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Career development  ]]>
                    </category>
                
                    <category>
                        <![CDATA[ communication ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Tooba Jamal ]]>
                </dc:creator>
                <pubDate>Mon, 12 Feb 2024 13:03:19 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2024/02/cover-photo.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>You built an application that solves a problem most business owners face. You registered yourself at a local event to speak about your product, but no one cares. You try selling it on social media groups, but don't receive more than "Wow, that's an interesting idea."</p>
<p>Do these sound familiar? I've been there when I worked on most of my tasks during an apprenticeship, but another member would take all the credit. Turns out, I wasn't clearly speaking about my contributions to the project and how they helped make our project a success.</p>
<p>I was trying to make my contributions count, not to sell any product or impress an employer.</p>
<p>Whether you want to land a new job or make your contributions count, effective communication goes a long way.</p>
<h2 id="heading-why-good-communication-is-important-for-developers">Why Good Communication is Important for Developers</h2>
<p>You might have seen developers who have the same level of technical skills as you being are more successful. And if you pay attention to their daily activities, you'll realize that they've mastered the art of clear communication.</p>
<p>One of the most common reasons behind unclear communication is the assumption that everyone else already knows what you know.</p>
<p>Developers often have to deliver their technical knowledge to their clients, colleagues, or bosses. And if you know the gist about speaking clearly, you'll unlock a lot of opportunities with the same level of technical skills.</p>
<h3 id="heading-interviews">Interviews</h3>
<p>My friend, just out of college, had an interview at a startup. The interview was extensive but he managed to make it. And when I asked him for the tips, he said, "Explain technical reasoning to them as if they are 10". This cannot happen without good communication skills.  </p>
<p>Today, companies also conduct behavioral interviews to gauge the non-technical skills of candidates and when you're good at speaking, you can easily nail them. </p>
<p>I have a detailed guide on <a target="_blank" href="https://www.dreamsinscript.com/cracking-the-behavioral-interview/">how to crack behavioral interviews in 3 easy steps</a> on my blog. The guide has the exact steps I took to crack every behavioral interview last year, regardless of the company culture.</p>
<h3 id="heading-networking">Networking</h3>
<p>Whether you have a large following on LinkedIn or people who praise you at local meetups, good communication skills go a long way.</p>
<p>Without knowing the art of communication, you can't have any of them because people are short on time and they can't stick around if you can't deliver value.</p>
<p>Also, having a network unlocks a lot of new opportunities.</p>
<h3 id="heading-client-communication">Client Communication</h3>
<p>While some clients also are not good at delivering their goals clearly, you can save yourself if you know how. </p>
<p>Whether it's connecting with clients emotionally, understanding requirements, or conveying your thoughts, effective communication does the job.</p>
<h3 id="heading-thought-processing">Thought Processing</h3>
<p>Knowing to speak effectively is knowing your thoughts at a deeper level. When your brain thinks, you can't speak clearly. It's in a rush to pack up every speaking session. The rush will keep you from processing your thoughts when it's time to impress others.   </p>
<p>Memorizing every sentence before a meeting and forgetting the script only does harm to your reputation. </p>
<p>When you develop communication skills, you can easily convey the ideas that come to your mind in the middle of having conversations. This builds credibility and offers you a competitive advantage.</p>
<h2 id="heading-how-to-improve-your-communication-skills">How to Improve Your Communication Skills</h2>
<p>Just like you build projects to master dev skills, communicating with humans is the key to improving your communication skills. </p>
<p>There is no shortcut to it. You can't communicate better by observing others, you have to do it yourself if you want growth.</p>
<p>I refined my speaking skills subconsciously, while I was looking for better opportunities. The impact it had on my way of expressing ideas was big enough that my mentors praised it during a cohort.</p>
<h3 id="heading-join-engaging-discord-groups">Join Engaging Discord Groups</h3>
<p>You might think that discord communities are time-demanding.  The thing is, you can chat for as little as ten minutes daily and still see a difference. One or two good communities work well if they've got a safe and active community.</p>
<p>Also, you can respond to messages throughout the day, just as you would with your friends.</p>
<p>Replying to others' wins, sharing your fears, and discussing daily errands or deadlines is a good ways to fine-tune your communication skills. Observe others' tone and try to be as clear as possible. You'll see a difference in your way of describing things in no time.</p>
<p>There is a voice and video call option too on Discord which can help enhance your speech.</p>
<h3 id="heading-github-contribution">GitHub Contribution</h3>
<p>Giving and receiving feedback without bias is one of the most important skills to learn. If you're still waiting to land your first developer job or find yourself taking feedback personally, GitHub contributions will teach you to not lose your cool every other day at work. </p>
<p>When you submit a pull request on GitHub, you're likely to receive feedback from the project maintainers. Think of that feedback as an opportunity to improve your tech skills. You'll soon realize how others' attention to detail helps you to think broadly and get better at your craft. Realizing this will help you accept feedback as a privilege to grow beyond limits.</p>
<h3 id="heading-find-a-mentor">Find a Mentor</h3>
<p>Good mentors will encourage you to speak more by asking more. I've had the privilege to find a mentor who'd ask a lot of questions regarding my project, daily life, pets, work, and so on. And that'd stimulate my thoughts and speech. He'd then tell me about his life and this cycle allowed me to notice things that I felt didn't matter. </p>
<p>Finding a mentor is easier than you think through social media. All it takes is a motivation to find like-minded people whose work you admire.</p>
<h3 id="heading-social-media">Social Media</h3>
<p>An active social media account speaks about your credibility. I found a mentor through Instagram who helped me find free resources and would ask me about my progress. </p>
<p>Start posting on social media today about your progress, your work or whatever you find valuable. Comment on other people's posts to engage with them and make new connections. Also, don't forget to send non-pushy, sweet messages to new connections telling them you like their work.</p>
<p>Social media will help you stay accountable and keep track of your progress.</p>
<h2 id="heading-how-to-improve-your-speaking-skills">How to Improve Your Speaking Skills</h2>
<p>If you're good at writing clearly but go blank when speaking, you're still behind in the game. Speaking more will refine your skills and you can start doing that even if you have no one to speak to.</p>
<h3 id="heading-the-collab-lab">The Collab Lab</h3>
<p><a target="_blank" href="https://the-collab-lab.codes/">The Collab Lab</a> is a cohort-based program focused on helping developers learn collaboration for free. </p>
<p>You'll work within a team of 4-5 software developers to build a project under the guidance of mentors. The mentors keep you on track and foster a safe communication environment.</p>
<h3 id="heading-topmate">Topmate</h3>
<p><a target="_blank" href="https://topmate.io/">Topmate</a> is a platform where professionals offer 1 on 1 sessions. From teachers sharing knowledge to therapists saving lives. </p>
<p>Over 10000 people use Topmate. The good thing is, some of them also offer free sessions and you just need to find them. The goal here is to improve your speaking skills.</p>
<h3 id="heading-linkedin">LinkedIn</h3>
<p>LinkedIn is a great place to ask people on a virtual coffee chat. They don't need to be experts as the goal is to develop stronger speaking skills. Schedule meetings to speak about work, side projects, hobbies or anything you like and witness your skills skyrocket.</p>
<h3 id="heading-discord-not-an-additional-point-but-an-extension-to-the-first-one">Discord (Not an additional point, but an extension to the first one 😉)</h3>
<p>Use the calling feature on Discord and speak to people you've already interacted with. Invite them to work on projects together or discuss anything you both find interesting.</p>
<h3 id="heading-last-words">Last Words</h3>
<p>According to K. Anders Ericsson in his book, Peak: Secrets from the New Science of Expertise, "The right sort of practice carried over a sufficient period of time leads to improvement. Nothing else."</p>
<p>Ericsson was a psychologist and the expert of experts. He presented the performance theory and said expertise is achieved outside your comfort zone.</p>
<p>So if you feel you aren't a good communicator or you don't want to speak in front of others, then you should know that only speaking can take you away from those doubts. </p>
<p>The methods I listed above helped me speak better English. However, I used to escape every English conversation at school.</p>
<p>Interested in becoming internet friends? You can hit me up on <a target="_blank" href="https://www.linkedin.com/in/tooba-jamal">LinkedIn</a> or <a target="_blank" href="https://www.instagram.com/dreamsinscript/?igshid=eDdnYmN3OWgxMDd1">Instagram</a>.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Communicate with ChatGPT – A Guide to Prompt Engineering ]]>
                </title>
                <description>
                    <![CDATA[ AI has become an integral part of our lives and businesses. Over the past few years, we’ve seen the rapid rise of AI tools, and their impact on our day-to-day activities can't be ignored.  From virtual assistants to chatbots, AI just keeps getting sm... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-communicate-with-ai-tools-prompt-engineering/</link>
                <guid isPermaLink="false">66b8dbd1b16665d8febd7f4f</guid>
                
                    <category>
                        <![CDATA[ Artificial Intelligence ]]>
                    </category>
                
                    <category>
                        <![CDATA[ chatgpt ]]>
                    </category>
                
                    <category>
                        <![CDATA[ communication ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Machine Learning ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Hillary Nyakundi ]]>
                </dc:creator>
                <pubDate>Thu, 20 Apr 2023 20:54:11 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2023/04/ChatGPT--1-.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>AI has become an integral part of our lives and businesses. Over the past few years, we’ve seen the rapid rise of AI tools, and their impact on our day-to-day activities can't be ignored. </p>
<p>From virtual assistants to chatbots, AI just keeps getting smarter with more functionalities than before. This technology has changed the way we interact with both humans and machines.</p>
<p>As this evolution continues, there's a constant need to improve the communication between humans and machines. By fully understanding how to effectively communicate with AI, it can take us a step closer to unlocking its full potential. </p>
<p>This will not only enable us to extract relevant information but also allow us to gain new insights, making us more informed on different fields of interest. To get these advantages, understanding prompt engineering is essential.</p>
<p>As a growing developer, I spend the better part of my time on learning and implementation. In the process, I may need to do research, and it might take forever to find what I need browsing the net. But with new technologies like ChatGPT, I am able to easily get what I need as long as I ask the right questions. </p>
<p>Just like many others, figuring out the platform wasn't easy. It took me a while before I could understand how to communicate with the model. A key aspect is knowing how to structure and phrase the prompts. With this, you will be able to improve the quality and accuracy of the responses you get.</p>
<p>In this guide, you’ll learn what prompt engineering is and how you can use it to improve your communication with AI tools. In addition to this, we’ll also explore different categories of prompts and the design principles used to craft effective prompts. </p>
<p>By the end of this guide, you should be able to write good prompts and tailor them to your needs, facilitating a better interaction between you and the language models. </p>
<p>Let's get started!</p>
<h2 id="heading-what-is-prompt-engineering">What is Prompt Engineering?</h2>
<p>Communication with AI is crucial and understanding how to communicate with it effectively is helpful. The entire communication process revolves around writing commands which are referred to as prompts. </p>
<p>With that said, we can easily define prompt engineering as the step-by-step process of creating inputs that determine the output to be generated by an AI language model.</p>
<p>High quality inputs will result in better output. Similarly, poorly defined prompts will lead to inaccurate responses or responses that might negatively impact the user. After all, "With great power comes great responsibility".</p>
<p>Prompt engineering cuts across different applications, including chatbots, content generation tools, language translation tools, and virtual assistants. But you might be wondering how AI technology generates its responses. Let’s find out in the next section.</p>
<h2 id="heading-how-do-language-models-work">How do Language Models Work?</h2>
<p>AI language models such as GPT-4 rely on deep learning algorithms and natural language processing (NLP) to fully understand human language. </p>
<p>All this is made possible through training that consists of large datasets. These datasets include articles, books, journals, reports, and so on. This helps the language models develop their language understanding capabilities. With the data, the model is fine-tuned in a way that enables it to respond to particular tasks assigned to it.</p>
<p>Depending on the language model, there are two main learning methods – supervised or unsupervised learning. </p>
<p>Supervised learning is where the model uses a labeled dataset where the data is already tagged with the right answers. In unsupervised learning, the model uses unlabeled datasets, meaning the model has to analyze the data for possible and accurate responses. Models like GPT-4 use the unsupervised learning technique to give responses.</p>
<p>The model has the ability to generate text based on the prompt given. This process is referred to as language modeling, and it's the foundation of many AI language applications. Learn more about <a target="_blank" href="https://www.ibm.com/cloud/blog/supervised-vs-unsupervised-learning">Supervised vs Unsupervised Learning from IBM</a>.</p>
<p>At this point, you should understand that the performance of an AI language model mainly depends on the quality and quantity of the training data. Training the model with tons of data from different sources will help the model understand human language including grammar, syntax, and semantics.</p>
<p>Note that, irrespective of the quantity of data used to train these models, there will always be challenges when it comes to understanding natural language. After all, this is an artificial being and understanding things like sarcasm, irony, or human feelings can be difficult for an AI model to interpret.</p>
<p>Now that we have an understanding of how the AI language model works, let's look at different prompt categories that are available to help us communicate with the models.  </p>
<h2 id="heading-what-are-prompt-categories">What are Prompt Categories?</h2>
<p>You can use prompts to ensure smooth communication with AI language models. The first step to writing quality prompts is understanding their different classifications so you can easily structure the prompts with a given target response in mind. </p>
<p>Some of the major prompt categories include:</p>
<ol>
<li><strong>Information-seeking prompts</strong> - These prompts are specifically designed to gather information. The prompts mostly answer the question <strong>What</strong> and <strong>How</strong>. Examples of such prompts: "What are the most popular tourist attractions in Kenya?", "How do I prepare for a job interview?"</li>
<li><strong>Instruction-based prompts</strong> - These are used to give instructions to the model to perform a specific task. A good example of such prompts is the use of Siri, Alexa, or Google Assistant. For example, an instruction prompt might be "Call mom”, or “Play the latest episode from my favorite TV show." </li>
<li><strong>Context-providing prompts</strong> - Just as the name suggests, these prompts provide information to the AI to help it better understand what the user needs as a response. For example, if you’re planning a party and need some decoration ideas and activities for attendees, you can structure your prompt like so: "I am planning a party for my child, what are some decoration ideas and activities that the attendees might do to make it enjoyable and memorable?"</li>
<li><strong>Comparative prompts</strong> - These are used to compare or evaluate different options given to the model to help the user make an appropriate decision. For example: "What are the strengths and weaknesses of Option A compared to Option B?"</li>
<li><strong>Opinion-seeking prompts</strong> - These are designed to get the AI's opinion on a given topic. For example: "What would happen if we could travel back in time?"</li>
<li><strong>Reflective prompts</strong> - These prompts are designed to help individuals gain a deeper understanding of themselves, their beliefs, and their actions. They are more like encouragement/self-growth prompts based on a topic or personal experience. You might be required to give the model a bit of info before getting a desirable response.</li>
<li><p><strong>Role-based prompts</strong> - These prompts provide responses by framing the user's request within a specific role. It's the most commonly used category of prompts. By giving the AI a role, it gives responses based on the role given. 
A trick that has worked for this particular category is making use of the <strong>5 Ws framework</strong>, that is: </p>
</li>
<li><p>Who - Assigns the role you need the model to play. A role like a teacher, developer, chef, and so on.</p>
</li>
<li>What - Refers to the action you want the model to do.</li>
<li>When - Your desired timeline to complete a particular task.</li>
<li>Where - Refers to the location or context of a particular prompt.</li>
<li>Why - Refers to the reasons, motivations, or goals for a particular prompt.</li>
</ol>
<p>An example of a role-based prompt is:</p>
<pre><code>As a coding tutor, your role is to create personalized study plans to help individuals learn how to code. Your responsibilities will include understanding the goals, time commitment, and preferred learning resources <span class="hljs-keyword">of</span> each student, and using that information to develop a comprehensive study plan <span class="hljs-keyword">with</span> clear timelines and links to relevant resources. You should be able to adapt your teaching style to meet the individual needs <span class="hljs-keyword">of</span> each student and provide ongoing support and guidance throughout the learning process. Your ultimate goal will be to help each student develop the skills and knowledge they need to achieve their coding goals.
</code></pre><p>This prompt should also include what you intend to learn, the intended learning period, and your goal for learning. Remember that the more details you give, the more tailored results you will get.</p>
<p><strong>NOTE:</strong> If you lack prior knowledge on what you need help with, you shouldn’t fully rely on the response you get from the model. Be sure to crosscheck with other sources if you doubt the model’s responses, as the model is not always correct.</p>
<h2 id="heading-principles-of-effective-prompt-engineering">Principles of Effective Prompt Engineering</h2>
<p>Now that we have covered the different prompt categories, let's look at how you can craft good prompts. To help you understand better, we’ll go through different prompt engineering frames that optimize the responses we get by providing clear queries meant for NLP. </p>
<p>You should keep the following in mind when creating prompts:</p>
<ul>
<li><p><strong>Clarity</strong> – In any communication setting, clarity is very important. The same principles apply to prompt engineering. If you want to craft a good prompt, it's important to be clear about what you want. A good prompt helps the AI provide more accurate responses.</p>
</li>
<li><p><strong>Provide context and examples</strong> – This involves providing additional info that can help the AI better understand what the prompt is meant to achieve. By doing this, you increase the chances of getting more accurate responses. </p>
</li>
<li><p><strong>Set limitations and constraints</strong> – This involves setting boundaries within which the AI should operate. This increases the chances of getting the intended response, and avoiding undesired/irrelevant information.</p>
</li>
<li><p><strong>Break down queries</strong> – Breaking down queries into smaller and more manageable blocks will make it easier for the AI to process the info. This will help the model understand each query and produce better responses.</p>
</li>
<li><p><strong>Iterate and rephrase</strong> – In some cases, after giving the AI a query, you might not be satisfied with the response you get. In such cases you can rephrase your prompt and also provide more context for better results.</p>
</li>
<li><p><strong>Prioritize important info</strong> – This is where you highlight the most important information in the prompt. By doing this you are telling the AI to focus on providing responses that are relevant to the highlighted information.</p>
</li>
<li><p><strong>Use multiple choice questions</strong> – In a situation where you're stuck with choosing from multiple options, you can provide the AI with different options to work with so you can save time.</p>
</li>
<li><p><strong>Request step-by-step explanation</strong> – Let's say you need detailed information or a breakdown of a complex topic. You can structure your prompt in a way that instructs the AI to give responses in a more thorough manner by breaking down each step.</p>
</li>
<li><p><strong>Encourage critical thinking</strong> – This can be useful when you are relying on information like a piece of advice from the AI. By encouraging the AI to think critically, you increase the chances of getting a response based on realistic logic.</p>
</li>
<li><p><strong>Verify the accuracy of generated response</strong> – Last, but not least, <strong>it's always important to verify the AI-generated responses</strong>. This involves making sure the information is accurate and up to date. By doing this you are able to make sure that you are making an informed decision based on the response generated.</p>
</li>
</ul>
<h2 id="heading-practical-example-of-a-prompt">Practical Example of a Prompt</h2>
<p>Having discussed the different prompt categories and principles for effective prompt writing, let's take a closer look at how to apply these concepts in a real-world setting. </p>
<p>To fully utilize what we have covered so far, we'll look at some practical examples, address some common AI response issues, and also take a look at how AI is being used across different industries.</p>
<p>I know crafting a good question isn't easy, but believe me when I say I have been there. The process becomes easier when you learn how to create appropriate prompts. </p>
<p>For example, let's say that you want to get started with learning to code with front-end technologies, and you're confused and don't know where to start. Instead of asking an open question like: "Where can I learn about front-end development?", you can use a more specific and targeted prompt like: </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2023/04/crafting-prompts.png" alt="crafting-prompts" width="600" height="400" loading="lazy"></p>
<p>As you can see in the image above, here's the prompt I gave:</p>
<blockquote>
<p>"When it comes to learning front-end web development online, what are the differences between various coding education platforms in terms of curriculum content, learning resources, and community support? For example, which platform provides more comprehensive and up-to-date courses in HTML, CSS, and JavaScript, and which have a more active and engaged community to support learners in their front-end development journey?"</p>
</blockquote>
<p>The AI provided a reasonably detailed and informative answer based on the information I provided.</p>
<p>The good thing about this prompt is that it is applicable across different industries. We're increasingly seeing different applications of AI in fields like entertainment, finance, law, medicine, education, and so on.</p>
<p>Among these fields, the entertainment field is one of the most common where AI has been used. We've seen people use AI to create YouTube content from scratch. This involves a series of steps that includes creating a long conversation between you and the AI in such a scenario that the AI is given a role and you follow its instructions. </p>
<p>As much as we can rely on the AI to accomplish a specific task, it's also important to consider the task we are assigning to the AI and if it's appropriate. These language models mostly excel at tasks that require processing large amounts of data which help them identify unique response patterns. </p>
<p>In addition to this it's also important to choose an appropriate model for a specific task, as different models are trained to handle different tasks.</p>
<h2 id="heading-ai-pitfalls-and-limitations">AI Pitfalls and Limitations</h2>
<p>Despite all the advancements that AI has made in the recent years, we can agree that they aren't that perfect either.</p>
<p>One of the major concerns highlighted by multiple sources is that the AI models have potential for biasness. </p>
<p>How is this possible? Well, machine learning algorithms rely on human data to make predictions. In cases where the data fed to the model is biased, the resulting responses would also be biased. So, it's important to carefully evaluate the training data for any form of biasness and make adjustments at an early stage. </p>
<p>Also, while we can trust AI to automate certain tasks, the results of their findings may not always be accurate. If the AI isn't restricted by well defined parameters, it may go overboard beyond the user's capability. </p>
<p>To avoid these circumstances, it's always a good practice to have human oversight to continually monitor the model and also help in identifying errors with the model.</p>
<p>Another common area where AI struggles is understanding complex language and relating to how a real human would feel in different situations. Because it can't "feel", many of its decisions related to normal human behaviour aren't accurate and can't be fully trusted.</p>
<p>And finally, if the training data is incomplete, the model may not be able to give the most accurate responses. When this happens, a model might opt to generate ideas based on what it thinks the user might be asking for. This means that the model is struggling as it doesn't have enough accurate data to generate a good response.</p>
<h3 id="heading-current-issues-with-ai-responses">Current issues with AI responses</h3>
<p>The unfortunate truth at this point is that AI-generated responses aren't always correct. I have fallen victim to this. But luckily for me, I was aware of the error and was able to correct it. </p>
<p>Another thing to note is that if you give an AI alternative information that's not a correct response, the AI will always try to agree with you even if you are wrong. That's why it's a good idea to <strong>make sure you have some idea of what you are asking the AI about</strong>. In a case where the AI gives you an incorrect response, you can always try to rephrase your prompt by providing more context.</p>
<h2 id="heading-conclusion">Conclusion</h2>
<p>It seems clear that AI technology will play a very important role in our lives in the future. This technology will continue to revolutionize the way we go through our daily routines at work, home, or school. </p>
<p>To fully take advantage of this, we need to make sure that we are able to communicate effectively with these systems. And that's where prompt engineering comes in. By understanding how to craft a good prompt, we can improve the interaction between humans and machines.</p>
<p>As we try to rely on information provided by AI, it's essential to consider the possible implications it can bring to our lives. One major issue is that AI systems are often biased, which might lead to discriminatory outcomes. </p>
<p>But regardless of the situation, it seems that AI is here to stay. So the earlier you learn to communicate with it, the better. Don't be left out of the party 😊.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Mute on Zoom – Mute Yourself with a Keyboard Shortcut or a Press of a Button ]]>
                </title>
                <description>
                    <![CDATA[ As remote work becomes more and more popular, more and more people and companies are using video conferencing services such as Zoom. Turning the built-in microphone on and off is one of the most useful features of Zoom. In this quick guide you'll lea... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-mute-and-unmute-on-zoom-keyboard-shortcut/</link>
                <guid isPermaLink="false">66b1e4250968943127cc5f07</guid>
                
                    <category>
                        <![CDATA[ communication ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Productivity ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Dionysia Lemonaki ]]>
                </dc:creator>
                <pubDate>Thu, 16 Dec 2021 18:50:11 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2021/12/How-to-mute-yourself-on-Zoom--2-.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>As remote work becomes more and more popular, more and more people and companies are using video conferencing services such as Zoom.</p>
<p>Turning the built-in microphone on and off is one of the most useful features of Zoom.</p>
<p>In this quick guide you'll learn how to mute yourself with both a handy shortcut and by pressing a button.</p>
<p>This way, you'll hopefully avoid any unwanted awkward situations and won't disturb the rest of the meeting's participants with background noise while they are speaking.</p>
<h2 id="heading-how-to-mute-yourself-on-zoom-using-a-keyboard-shortcut">How to Mute yourself on Zoom Using a Keyboard Shortcut</h2>
<p>Zoom offers helpful shortcuts for a variety of functions that are available on all operating systems and machines.</p>
<p>Below are the keyboard shortcuts for <strong>muting</strong> yourself on Zoom:</p>
<ul>
<li>To mute yourself on a Windows Operating System, hold down and press at the same time: <code>Alt  A</code>.</li>
<li>To mute yourself on a Linux Operating System, hold down and press at the same time: <code>Alt A</code>.</li>
<li>To mute yourself on a Mac Operating System, hold down and press at the same time: <code>Command Shift A</code>.</li>
</ul>
<p>You can use the shortcuts for muting yourself to also <strong>un-mute</strong> yourself.</p>
<h2 id="heading-how-to-mute-yourself-on-zoom-by-pressing-a-button">How to Mute yourself on Zoom by pressing a Button</h2>
<p>The microphone icon, which is the mute/unmute button in Zoom, is found at the bottom left corner of the meeting's window.</p>
<p>If it has disappeared, it will appear again once you hover over the screen.</p>
<p>In the screenshot below, my microphone is on:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/12/Screenshot-2021-12-16-at-8.05.49-PM.jpeg" alt="Screenshot-2021-12-16-at-8.05.49-PM" width="600" height="400" loading="lazy"></p>
<p>Once I click on that button, I'll immediately mute myself:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/12/Screenshot-2021-12-16-at-8.10.28-PM.jpeg" alt="Screenshot-2021-12-16-at-8.10.28-PM" width="600" height="400" loading="lazy"></p>
<p>Whenever you see the microphone icon with a red line crossed over it, that means you're muted.</p>
<p>When that's the case, your microphone will be off and no one will be able to hear you.</p>
<p>When you want to un-mute yourself, just click the microphone button again and you'll see that the icon has changed to a non crossed out microphone. Now everyone will be able to her you.</p>
<p>And those are two quick ways you can mute and unmute yourself on Zoom. Happy meeting!</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Why is my FaceTime Not Working? ]]>
                </title>
                <description>
                    <![CDATA[ When FaceTime came out in 2010, it became a popular way for friends and family to connect over live video. But when FaceTime is not working, it can be a frustrating experience.  In this article, I will provide some reasons why FaceTime might not be w... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/why-is-my-facetime-not-working/</link>
                <guid isPermaLink="false">66b8da9057c651c38343a9aa</guid>
                
                    <category>
                        <![CDATA[ beginners guide ]]>
                    </category>
                
                    <category>
                        <![CDATA[ communication ]]>
                    </category>
                
                    <category>
                        <![CDATA[ how-to ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Jessica Wilkins ]]>
                </dc:creator>
                <pubDate>Wed, 27 Oct 2021 15:10:30 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2021/10/raj-rana-WENBRUAh7W8-unsplash.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>When FaceTime came out in 2010, it became a popular way for friends and family to connect over live video. But when FaceTime is not working, it can be a frustrating experience. </p>
<p>In this article, I will provide some reasons why FaceTime might not be working and tips on how to fix it. </p>
<h2 id="heading-your-apple-device-needs-a-restart">Your Apple device needs a restart</h2>
<p>Restarting your device is usually a good first step to resolving a technical issue. People joke about it, but sometimes turning it off and on again really does work.</p>
<p>Close out of your open applications and try resetting the device to see if that resolves your FaceTime issues. </p>
<h2 id="heading-issues-with-date-and-time">Issues with Date and Time</h2>
<p>Most users will have their Date and Time set automatically on the device. But if you are experiencing issues with FaceTime, it might be that you have Date and Time set to manual.</p>
<p>Go to Settings (System Preferences on computers) and then go to Date and Time to check that Set Automatically is not turned off. </p>
<h2 id="heading-apple-services-is-down">Apple services is down</h2>
<p>Sometimes FaceTime might not be working because Apple services is down. You can check the <a target="_blank" href="https://www.apple.com/support/systemstatus/">Apple System Service page</a> to see if FaceTime is experiencing technical difficulties. </p>
<h2 id="heading-facetime-is-not-available-in-your-country">FaceTime is not available in your country</h2>
<p>FaceTime is available in many countries around the world but it is not available in all countries. </p>
<p>You can visit the <a target="_blank" href="https://support.apple.com/en-us/HT204039">Apple Support page</a> to check on wireless carriers that are available in your area. </p>
<h2 id="heading-poor-internet-connection">Poor internet connection</h2>
<p>If you are experiencing issues with your internet connection, that can affect the FaceTime application. You could look into fixing your internet connectivity issues or you can use your cellular data to use the FaceTime app. </p>
<h2 id="heading-problems-with-group-chats">Problems with group chats</h2>
<p>There can be a few reasons why you are experiencing issues with group FaceTime chats. </p>
<p>One reason might be that there is an issue on your end where you are unable to use chat. If that is the case, then go through the previous suggestions mentioned in the article.</p>
<p>Another reason might be that there is a problem with one or more individuals with their technical setups. I would let them know you are having trouble hearing or seeing them and they can look into their setups. </p>
<p>If you are unsure where the issue is, then start off with one-on-one chats then gradually add more people. That will help you isolate the problem. </p>
<h2 id="heading-facetime-is-not-up-to-date">FaceTime is not up to date</h2>
<p>If you are not keeping up with your software updates then that can negatively affect the performance of your applications. If you are experiencing issues with FaceTime, it is possible you will need to update your app. </p>
<p>You will need to go to Settings, (System Preferences on computers) and then choose Software Update to make sure you are running on the most up to date software. </p>
<h2 id="heading-try-logging-out-of-facetime">Try logging out of FaceTime</h2>
<p>Sometimes the issue is as simple as logging out of FaceTime and then logging back in. You will need to go into your Settings, (System Preferences on computers)  and log out of your Apple ID for FaceTime, and then log back in. </p>
<h2 id="heading-camera-andor-microphone-is-not-working">Camera and/or microphone is not working</h2>
<p>If you are having issues with your camera or microphone then try to test it out independently of FaceTime. </p>
<p>On Mac computers you can test out your camera with PhotoBooth. On mobile or tablets, you can open the camera app and record a short video.</p>
<p>If your camera or microphone is still not working then I would suggest contacting <a target="_blank" href="https://support.apple.com/">apple support</a>. </p>
<h2 id="heading-facetime-is-turned-off-in-content-amp-privacy-restrictions">FaceTime is turned off in Content &amp; Privacy Restrictions</h2>
<p>It is possible that your FaceTime is not working because it is turned off in the Content and Privacy section of your device. </p>
<p>For phones and tablets, you will need go to Settings (System Preferences on computers) and then Content &amp; Privacy Restrictions to make sure FaceTime is switched on. </p>
<h2 id="heading-firewall-is-blocking-access-to-facetime">Firewall is blocking access to FaceTime</h2>
<p>It is possible that you have certain firewalls on your device that are blocking you from using FaceTime. Please visit the <a target="_blank" href="https://support.apple.com/en-us/HT202078">Apple Support page</a>, to learn about how to unblock those firewalls so you can use FaceTime. </p>
<p>If you have tried all of the suggestions and it is still not working then I would suggest contacting <a target="_blank" href="https://support.apple.com/">apple support</a>. </p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Zoom Screen Sharing – How to Share My Screen on Zoom [Solved] ]]>
                </title>
                <description>
                    <![CDATA[ As more and more people are working remotely, online meeting services like Zoom are becoming more popular and widely-used. And if you're in a Zoom meeting, you'll probably have to show your work to your co-workers from time to time. Zoom offers many ... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/zoom-screen-sharing-how-to-share-my-screen-on-zoom-solved/</link>
                <guid isPermaLink="false">66b1e4fb0938e6258a76bbe4</guid>
                
                    <category>
                        <![CDATA[ communication ]]>
                    </category>
                
                    <category>
                        <![CDATA[ how-to ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Dionysia Lemonaki ]]>
                </dc:creator>
                <pubDate>Tue, 12 Oct 2021 20:53:11 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2021/10/john-schnobrich-2FPjlAyMQTA-unsplash.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>As more and more people are working remotely, online meeting services like Zoom are becoming more popular and widely-used.</p>
<p>And if you're in a Zoom meeting, you'll probably have to show your work to your co-workers from time to time.</p>
<p>Zoom offers many features that make sharing your screen fast and easy. You can share your whole desktop, just your screen, certain computer programs and applications, particular files or other content, and more.</p>
<p>In this article I'll show you how to share your computer screen during a live video call when you're using a desktop computer.</p>
<h2 id="heading-how-to-share-your-screen-on-zoom-the-basic-steps">How to share your screen on Zoom – the basic steps</h2>
<p>You can share your screen at any point during a Zoom meeting. But keep in mind that screen sharing abilities are available only to the meeting's host by default.</p>
<p>If you're not the host of the meeting, the host must allow participants to share their screens via the Security option in Zoom:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/10/Screenshot-2021-10-11-at-4.33.04-PM.jpeg" alt="Screenshot-2021-10-11-at-4.33.04-PM" width="600" height="400" loading="lazy"></p>
<p>Now, the first step to sharing your screen is to click the green 'Share Screen' option at the bottom of the meeting's window.</p>
<p>If you can't see the bar at the bottom with the different available options, hover your mouse over the bottom of thte window and it will appear.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/10/Screenshot-2021-10-11-at-2.49.36-PM.jpeg" alt="Screenshot-2021-10-11-at-2.49.36-PM" width="600" height="400" loading="lazy"></p>
<p>Once you've clicked 'Share Screen', the Basic panel window will pop up:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/10/Screenshot-2021-10-11-at-2.53.27-PM.png" alt="Screenshot-2021-10-11-at-2.53.27-PM" width="600" height="400" loading="lazy"></p>
<p>From here, you can choose to share your entire desktop screen, a whiteboard, an iPhone/iPad screen, or any other specific application or program window that is currently open on your computer.</p>
<p>Select what you want to share by clicking on that option, which will give the window/app you've selected a blue background.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/10/Screenshot-2021-10-11-at-3.48.13-PM.png" alt="Screenshot-2021-10-11-at-3.48.13-PM" width="600" height="400" loading="lazy"></p>
<p>If you're sharing something with sound and you want others in the meeting to hear it, click the 'Share Sound' option at the bottom of the Window.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/10/Screenshot-2021-10-11-at-2.53.48-PM.jpeg" alt="Screenshot-2021-10-11-at-2.53.48-PM" width="600" height="400" loading="lazy"></p>
<p>Finally, click 'Share' at the bottom right hand corner:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/10/Screenshot-2021-10-11-at-3.48.13-PM.jpeg" alt="Screenshot-2021-10-11-at-3.48.13-PM" width="600" height="400" loading="lazy"></p>
<p>You are now broadcasting and others can see what you've chosen to share.</p>
<h3 id="heading-screen-sharing-options-in-zoom">Screen sharing options in Zoom</h3>
<p>While sharing, different meeting control options will be available at the top of your screen.</p>
<p>At the most basic level, you'll see a panel in green letting you know that you're screen sharing and that will show if you're muted or not.</p>
<p>On the right, there's a red panel that you can click to stop sharing.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/10/Screenshot-2021-10-11-at-5.01.16-PM.png" alt="Screenshot-2021-10-11-at-5.01.16-PM" width="600" height="400" loading="lazy"></p>
<p>When you hover over those two options, you'll also see more meeting controls at the top of the screen.</p>
<p>You can mute/unmute yourself, turn your camera on or off, view the meeting's participants, share something new, or pause your share for some.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/10/Screenshot-2021-10-11-at-3.51.04-PM-3.jpeg" alt="Screenshot-2021-10-11-at-3.51.04-PM-3" width="600" height="400" loading="lazy"></p>
<h2 id="heading-how-to-share-your-screen-on-zoom-advanced-options">How to share your screen on Zoom – advanced options</h2>
<p>After you've clicked the green 'Share Screen' at the bottom of your meeting's window, you can choose the 'Advanced' tab from the window that pops up.</p>
<p>From there, you have the option to share only a portion of your screen, show slides or a powerpoint presentation as a virtual background, or share a video.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/10/Screenshot-2021-10-11-at-2.56.39-PM.png" alt="Screenshot-2021-10-11-at-2.56.39-PM" width="600" height="400" loading="lazy"></p>
<h2 id="heading-how-to-share-your-screen-on-zoom-sharing-files">How to share your screen on Zoom – sharing files</h2>
<p>You can also share files stored on Dropbox, Google Cloud, or Microsoft SharePoint by selecting the 'Files' tab.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/10/Screenshot-2021-10-11-at-5.26.42-PM.png" alt="Screenshot-2021-10-11-at-5.26.42-PM" width="600" height="400" loading="lazy"></p>
<h2 id="heading-how-to-share-your-screen-on-zoom-when-using-macos">How to share your screen on zoom when using MacOS</h2>
<p>Before attempting to share your screen on MacOS, navigate to 'System Preferences' and then 'Security and Privacy'.</p>
<p>In the 'Privacy' tab, on the left hand side, select 'Screen Recording'. </p>
<p>From there, make sure that 'zoom.us.app' is selected.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/10/Screenshot-2021-10-11-at-5.29.47-PM.png" alt="Screenshot-2021-10-11-at-5.29.47-PM" width="600" height="400" loading="lazy"></p>
<p>Thanks for reading! Now you should be able to share your screen in your Zoom meetings.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Unblock Someone on Instagram ]]>
                </title>
                <description>
                    <![CDATA[ If you use Instagram, you may have needed to block certain accounts from time to time. But what if things change and you want to unblock someone?  In this article, I will walk you through the three ways to unblock someone on Instagram using the mobil... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-unblock-someone-on-instagram/</link>
                <guid isPermaLink="false">66b8d9aeeb5fc71c855edb3e</guid>
                
                    <category>
                        <![CDATA[ communication ]]>
                    </category>
                
                    <category>
                        <![CDATA[ instagram ]]>
                    </category>
                
                    <category>
                        <![CDATA[ social media ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Jessica Wilkins ]]>
                </dc:creator>
                <pubDate>Tue, 31 Aug 2021 21:30:46 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2021/08/dole777-EQSPI11rf68-unsplash.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>If you use Instagram, you may have needed to block certain accounts from time to time. But what if things change and you want to unblock someone? </p>
<p>In this article, I will walk you through the three ways to unblock someone on Instagram using the mobile app for iPhone and Android.</p>
<h2 id="heading-how-to-unblock-someone-on-instagram-through-settings">How to unblock someone on Instagram through settings</h2>
<p>The first way you can unblock something is through the settings tab. Here are the steps you'll need to follow:</p>
<ol>
<li>Login to the Instagram app.</li>
<li>Click on the profile icon located at the bottom right hand side.</li>
</ol>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/08/profile-on-right.jpeg" alt="Image" width="600" height="400" loading="lazy"></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/08/click-profile.jpeg" alt="Image" width="600" height="400" loading="lazy"></p>
<ol start="3">
<li>Click on the hamburger menu at the top right hand corner.</li>
</ol>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/08/click-hamburger-menu.jpeg" alt="Image" width="600" height="400" loading="lazy"></p>
<ol start="4">
<li>Click on Settings from the dropdown list of options.</li>
</ol>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/08/click-settings.jpeg" alt="Image" width="600" height="400" loading="lazy"></p>
<ol start="5">
<li>Click on Privacy.</li>
</ol>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/08/click-privacy.jpeg" alt="Image" width="600" height="400" loading="lazy"></p>
<ol start="6">
<li>Scroll down and click on Blocked Accounts.</li>
</ol>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/08/blocked-accounts.jpeg" alt="Image" width="600" height="400" loading="lazy"></p>
<ol start="7">
<li>Click on Unblock next to the profile.</li>
</ol>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/08/unblock-next-to-profile.jpeg" alt="Image" width="600" height="400" loading="lazy"></p>
<ol start="8">
<li>Click the red Unblock text to confirm.</li>
</ol>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/08/click-unblock.jpeg" alt="Image" width="600" height="400" loading="lazy"></p>
<p>If you are successful, then you should see this message:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/08/unblock-success.jpeg" alt="Image" width="600" height="400" loading="lazy"></p>
<h2 id="heading-how-to-unblock-someone-on-instagram-through-direct-message">How to unblock someone on Instagram through Direct Message</h2>
<p>If you have corresponded with someone over Direct Message, you can unblock them there. </p>
<ol>
<li>Click on the message icon located at the top right hand corner of your screen. </li>
</ol>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/08/Screen-Shot-2021-08-31-at-12.13.47-AM.png" alt="Image" width="600" height="400" loading="lazy"></p>
<ol start="2">
<li>Click on the profile you want to unblock.</li>
</ol>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/08/account-to-block.jpeg" alt="Image" width="600" height="400" loading="lazy"></p>
<ol start="3">
<li>Click on Unblock located at the bottom of the message thread.</li>
</ol>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/08/click-unblock-1.jpeg" alt="Image" width="600" height="400" loading="lazy"></p>
<ol start="4">
<li>Click on the red Unblock text to confirm.</li>
</ol>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/08/unblock-message.jpeg" alt="Image" width="600" height="400" loading="lazy"></p>
<h2 id="heading-how-to-unblock-someone-on-instagram-through-their-profile">How to unblock someone on Instagram through their profile</h2>
<ol>
<li>Go the profile of the person you blocked. </li>
<li>Click on the Unblock button in their profile.</li>
</ol>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/08/unblock-option-1.jpeg" alt="Image" width="600" height="400" loading="lazy"></p>
<ol start="4">
<li>Click on the red Unblock text to confirm.</li>
</ol>
<h3 id="heading-alternative-option">Alternative option</h3>
<ol>
<li>On their profile, you can click on the three dots located at the top right hand corner. On Android, the three dots might be vertical. </li>
</ol>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/08/click-three-dots.jpeg" alt="Image" width="600" height="400" loading="lazy"></p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/08/three-dots.jpeg" alt="Image" width="600" height="400" loading="lazy"></p>
<ol start="2">
<li>Click on Unblock.</li>
</ol>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/08/unblock-option-2.jpeg" alt="Image" width="600" height="400" loading="lazy"></p>
<ol start="3">
<li>Click on the red Unblock text to confirm.</li>
</ol>
<p>Those are three ways you can unblock someone on Instagram. </p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Ask Good Technical Questions – the Ultimate Guide ]]>
                </title>
                <description>
                    <![CDATA[ By Nabil Tharwat Knowing how to ask effective technical questions is an essential skill every software engineer should have.  You may be stuck with a bug, unable to figure out why your program isn't working correctly, or you might be having trouble l... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-ask-good-technical-questions/</link>
                <guid isPermaLink="false">66d46040787a2a3b05af43e2</guid>
                
                    <category>
                        <![CDATA[ Collaboration ]]>
                    </category>
                
                    <category>
                        <![CDATA[ communication ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Productivity ]]>
                    </category>
                
                    <category>
                        <![CDATA[ self-improvement  ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Fri, 11 Jun 2021 17:39:28 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2021/06/raised-hand.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Nabil Tharwat</p>
<p>Knowing how to ask effective technical questions is an essential skill every software engineer should have. </p>
<p>You may be stuck with a bug, unable to figure out why your program isn't working correctly, or you might be having trouble learning how to implement a certain algorithm.</p>
<p>In all of these situations (and more) you'll most likely go online and post a question on Stack Overflow, some community on Discord, a subreddit, a Facebook group, or even just send it to a friend. </p>
<p>These tips will equip you with the knowledge to write questions that are easy to read and reason about, and that make it easier for someone to help you.</p>
<h2 id="heading-provide-context-for-your-question">Provide Context for Your Question</h2>
<p>The first thing you should focus on is context. Context helps people understand your question better, because they'll know what situation you're dealing with and any parameters that might affect how they answer. </p>
<p>Developers might not be able to guess what programming language you're using or what framework you're having trouble with. Or they might not understand your environment setup just by reading some code examples you've provided.</p>
<p>These contextual details make a difference if you want someone to answer your question, and many devs often overlook them despite their importance. </p>
<p>For example, you may be using C++ 1999 and are trying to use a feature available only in C++ 2011. Provide this sort of context, otherwise people can end up looking at the wrong things when they're trying to help you.</p>
<h2 id="heading-sum-up-your-question">Sum Up Your Question</h2>
<p>Sum up your question in a title. Just like Stack Overflow, each question should have a title that gets the basic point across. The title should be a relatively short summation of the question at hand. </p>
<p>The title may not be enough to list all the details. But you should at least add enough details that just by reading the title, someone will be able to tell if they can help you with this issue or not.</p>
<p>This is important because people usually don't have enough time to actually go through the whole question (especially if your detailed question is several pages long). A punchy, helpful title is a time-aware summation that delivers just enough information to make an early decision.</p>
<p>For example, consider saying "Adding float and int using the + operator evaluates to int in C++11" instead of saying "C++ operators not working". By doing this, you provide enough context about the problem and introduce the problem itself.</p>
<h2 id="heading-create-a-minimal-reproducible-example">Create a Minimal Reproducible Example</h2>
<p>Always include a minimal reproducible example if your question depends on code. This may be a complete GitHub repository, a gist, or even just a few lines of code.</p>
<p>You don't want to copy the whole project or the whole repository you're dealing with, but you need to add just the bits that someone would need to help you. </p>
<p>If you're referring to a complete repository, make sure to let them know where to look. Then clearly state which specific files are affected, which functions in those files are broken, and so on. </p>
<p>This example should be complete, meaning that it's sufficient to explain the problem and doesn't lack any imports, external modules, or functions. It has all the pieces that someone needs to be able to reason about the code. </p>
<p>It should be minimal and have no irrelevant bits of code. Only show code that directly affects the example's completion and the issue at hand.</p>
<p>It should also be reproducible. I can't help you if I cannot reproduce the problem you're facing. This also takes context into account. Lacking enough context alongside examples makes it harder for people to answer your question.</p>
<h2 id="heading-include-any-restrictions-and-constraints">Include Any Restrictions and Constraints</h2>
<p>Always mention restrictions and constraints. Not doing this sometimes leads to answers getting rejected because the answer goes beyond some constraint that you're not allowed to pass.</p>
<p>For example, you may be solving some assignment for school in which you're not allowed to use complex data structures. Someone may actually use those when providing an answer because you haven't listed those constraints. </p>
<p>If you fail to mention this, you'll be wasting someone's time and yours as well. This is really frustrating and can cause people to ignore your question entirely. Always mention constraints and restrictions.</p>
<p>Sometimes you mistakenly set restrictions upon yourself, so it's useful to always elaborate on <em>why</em> those restrictions exist in the first place. People might surprise you!</p>
<h2 id="heading-avoid-using-code-screenshots">Avoid Using Code Screenshots</h2>
<p>If you're posting code screenshots alongside your question on social networks, chances are these images will be compressed. They'll become hard to read and may end up being completely unreadable because of how much code you've crammed into a single image and how much that image was compressed.</p>
<p>A poor quality image like that prevents developers from copying your code to try it themselves, forcing them to actually write down the code themselves just to start helping you. </p>
<p>This is time-consuming and will likely push those developers away from answering your question – whereas they'd have probably been happy to help you if they were able to read the code in these screenshots in the first place.</p>
<p>Also, keep in mind that images aren't as accessible as text. You may be using a theme for your IDE that is hard to read for some people. Be aware of how accessible your question is to the community. </p>
<p>If you must add code examples, then text is the best way to do it. Text will allow screen readers to actually read your question instead of saying something generic like "image". It'll also allow others to read the code in the comfort of their own browser theme (think Stack Overflow dark vs light themes).</p>
<p>There are many ways to share code. Many code hosting solutions exist such as Codepen, JSBin, GitHub Gist, Codesandbox, and Pastebin. </p>
<p>You can also just embed the code into the question as text. This is natively supported with syntax highlighting on platforms like Stack Overflow and the freeCodeCamp forums. Some online communities require specific code hosting solutions, and you should follow those requirements.</p>
<h2 id="heading-share-what-youve-already-tried">Share What You've Already Tried</h2>
<p>List what you've actually tried already. You don't want to look lazy when asking a question. Your last attempt may be one tiny step away from fixing the problem. Without listing what you've tried, people will have to debug the problem from the very start.</p>
<p>Not listing what you tried often results in rejected answers as well because someone may end up suggesting something you already tried. It's frustrating and is not only a waste of time to you, but it's a waste of time to those who try to help you as well.</p>
<h2 id="heading-keep-your-sample-data-small">Keep Your Sample Data Small</h2>
<p>Often times we need sample data to test the code we're trying to run. This may be a JSON object response with hundreds of keys from some server or a SQL table with 10s or even hundreds of columns.</p>
<p>In this case, you should limit the amount of information you provide as sample data. Why include ten other columns if the problem is related to only one of them? Too much information will be hard to work with.</p>
<p>Try to limit the surface area of your code. Provide a simplified JSON object with a limited number of keys or a SQL table with only the columns related to the problem. This is easier to debug and easier to get started with.</p>
<h2 id="heading-format-lint-and-document-your-code">Format, Lint, and Document Your Code</h2>
<p>No one wants to read code that is all on the same line with bad indentation, variable naming inconsistencies, or bad style in general. Follow popular conventions if possible. </p>
<p>Variables and function names should convey what they're for. People want to be able to tell what a function does just by reading the signature. They don't want to decipher code before reading it.</p>
<p>If it's completely impossible to provide descriptive names, then make sure you have good documentation. Document what functions do, what variables are for, and how you intend to use them.</p>
<p>Try to use a linter as well. Linters are tools that go over your code, inspect it, and give feedback on possible logic improvements, style and convention violations, and overall help with code readability. </p>
<p>In general, you don't want your code to look like this:</p>
<pre><code><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">someFunction</span> (<span class="hljs-params"> p1,p2</span>)
</span>{
<span class="hljs-keyword">const</span> b=p1+p2;
    <span class="hljs-built_in">console</span>.log(b+p1*p2);
<span class="hljs-keyword">if</span>( b &gt; some_Const) <span class="hljs-keyword">throw</span> 
            <span class="hljs-built_in">Error</span> ( <span class="hljs-string">"something went wrong"</span>)
   <span class="hljs-keyword">else</span> <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
}
</code></pre><p>but like this instead:</p>
<pre><code class="lang-javascript"><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">someFunction</span>(<span class="hljs-params">p1, p2</span>)</span>{
    <span class="hljs-keyword">const</span> b = p1 + p2;

    <span class="hljs-built_in">console</span>.log(b + p1 * p2);

    <span class="hljs-keyword">if</span>(b &gt; SOME_CONST) <span class="hljs-keyword">throw</span> <span class="hljs-built_in">Error</span>(<span class="hljs-string">"Something went wrong"</span>);
    <span class="hljs-keyword">else</span> <span class="hljs-keyword">return</span> <span class="hljs-number">0</span>;
}
</code></pre>
<p>This kind of magic actually helps with reading the code and debugging the problem. It makes it easier to read and navigate. And you should always format your code anyway, regardless of whether you're posting it online or working on it alone. Trust me, it helps.</p>
<p>Many tools do this, but for web development, the most popular tools are Prettier and ESLint. They support a number of languages and work with several editors such as Atom, Vim, VSCode, Visual Studio, and others.</p>
<p>Almost all IDEs come with a built-in formatter and linter. Check the IDE you're using for those before reaching out to external tools. </p>
<h2 id="heading-grammar-check-your-question">Grammar-Check Your Question</h2>
<p>Sometimes questions are hard to decipher because there are too many grammatical errors. This makes the question hard to read and limits the number of people that can help you. </p>
<p>Platforms like Stack Overflow give editors the ability to improve questions, but you shouldn't depend on that. Other platforms don't have this kind of support, and thus it's generally best practice to grammar-check your questions before and after posting them.</p>
<p>Tools like Grammarly automatically scan your text and advise on improving the grammar or even correct complete grammatical errors. It has extensions for Firefox, Chrome, Safari, and Edge. Give it a shot.</p>
<h2 id="heading-keep-track-of-your-question">Keep Track of Your Question</h2>
<p>One of the most frustrating things for people answering questions online is the lack of feedback. </p>
<p>Once you ask a question and you get an answer, don't just desert the whole thing. Don't just ghost the people that are trying to help you. Provide feedback. Tell them what worked, what didn't work, and why.</p>
<p>Often times you may be left with a partial solution, but without feedback, you'll never get to the complete one.</p>
<p>Sometimes you will be asked for further information. You may have forgotten some of these tips, or you may not have provided enough information. Welcome feedback with a smile and give back.</p>
<p>And remember, people aren't paid for these services. They are paying with their time and effort to help you, so appreciate this and work with them to give them as much information as possible. It'll pay off eventually.</p>
<h2 id="heading-add-a-summary">Add a Summary</h2>
<p>Generally, try to keep your questions short. Long questions take a lot of time and are often overlooked because of this. I'm not going to read 3 pages of a question with the possibility of getting deserted afterwards. </p>
<p>In addition to summing up in the title, add a summary to the start of the question if it's too long. This will help readers by giving them a short version of your question instead of having to read the whole ting. </p>
<p>It will also allow them to decide whether or not they want to continue reading the whole thing and whether they'll be able to help.</p>
<h2 id="heading-were-all-human">We're All Human</h2>
<p>You won't always get cheerful, welcoming, or happy responses. People have lives in which they could be facing problems. If you push people too much, they may start to ignore you or delete their responses altogether. Respect people's privacy, and give them space.</p>
<p>If you like this article don't forget to share it! You can find more of my content on my <a target="_blank" href="https://iamnabil.netlify.app/blog">blog</a>. Thanks for reading!</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ What is SendGrid? SMTP Email Newsletter Tutorial ]]>
                </title>
                <description>
                    <![CDATA[ You may have heard of the term SMTP before, and wondered what it is. SMTP is a common method for handling email messages. Today I am going to explain what SMTP is, and how to use an SMTP provider such as SendGrid to send emails from your address. Wha... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/what-is-sendgrid-smpt-email-newsletter-tutorial/</link>
                <guid isPermaLink="false">66ac7f74ed08c5b0125be191</guid>
                
                    <category>
                        <![CDATA[ communication ]]>
                    </category>
                
                    <category>
                        <![CDATA[ email ]]>
                    </category>
                
                    <category>
                        <![CDATA[ newsletters ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Naomi Carrigan ]]>
                </dc:creator>
                <pubDate>Fri, 14 May 2021 20:31:30 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2021/05/pexels-rakicevic-nenad-1262304.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>You may have heard of the term SMTP before, and wondered what it is. SMTP is a common method for handling email messages.</p>
<p>Today I am going to explain what SMTP is, and how to use an SMTP provider such as <a target="_blank" href="https://sendgrid.com">SendGrid</a> to send emails from your address.</p>
<h2 id="heading-what-is-smtp">What Is SMTP?</h2>
<p>SMTP, or Simple Mail Transfer Protocol, is the method through which internet servers send email messages. When you send an email through your Gmail account, for example, your mail client uses SMTP to send that message to the server. The server then also uses SMTP to send it to the receiving server.</p>
<p>Without diving too much into the technical details, the easiest way to think of it is that SMTP is an email server. </p>
<h2 id="heading-what-is-sendgrid">What is SendGrid?</h2>
<p>SendGrid is an SMTP service provider – in fact, it's the provider freeCodeCamp uses to send out Quincy's weekly newsletter. </p>
<p>Like many SMTP providers, SendGrid offers the use of their mail servers to send your emails. This is an excellent option for sending large volumes of emails, where having to do so manually would take a significant amount of time and effort.</p>
<h3 id="heading-how-to-create-a-sendgrid-account">How to Create a SendGrid Account</h3>
<p>The first step in using SendGrid's services is to create your account. Head on over to the <a target="_blank" href="https://sendgrid.com">SendGrid website</a> to get signed up. They offer multiple pricing models, but the free level will be sufficient at least for this tutorial. </p>
<p>As you scale up your email list, however, you may need additional features from a higher subscription tier.</p>
<p>Once you are signed in, you should see a default dashboard view:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/05/image-4.png" alt="Image" width="600" height="400" loading="lazy">
<em>Image depicting the default SendGrid dashboard view.</em></p>
<h3 id="heading-how-to-set-up-your-domain-or-email-with-sendgrid">How to Set up Your Domain or Email with SendGrid</h3>
<p>From that dashboard view, select "Settings", then choose "Sender Authentication" from the dropdown menu. The Sender Authentication settings are where you tell SendGrid which email accounts to allow emails to be sent from.</p>
<p>There are two approaches here – if you have a custom domain for your emails, you can set up Domain Authentication. If you are using a personal email address, such as a Gmail address, then you will need to set up Single Sender Authentication.</p>
<p>Choose whichever option works best for you, and follow SendGrid's prompts to set it up. Your end result should look similar to this:</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/05/image-5.png" alt="Image" width="600" height="400" loading="lazy">
<em>Image depicting Sender Authentication settings.</em></p>
<h3 id="heading-how-to-send-emails-via-sendgrids-api">How to Send Emails Via SendGrid's API</h3>
<p>The actual process of sending the emails is done through <a target="_blank" href="https://sendgrid.com/docs/api-reference/">SendGrid's API</a>. But before you can use the API, you'll need to set up an API key. </p>
<p>From your dashboard view, select "Settings", then select "API Keys". Choose "Create API Key" and select the permissions you want the key to have (I gave mine full permissions, just to avoid issues). </p>
<p>Once you have the key, save it somewhere safe as you will not be able to access it again.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/05/image-6.png" alt="Image" width="600" height="400" loading="lazy">
<em>Image depicting the API Keys settings page.</em></p>
<p>Now that you have the API key, you'll need to set up the code to use the <code>/mail/send</code> endpoint. You can write the code manually, or use one of the helper libraries such as SendGrid's <a target="_blank" href="https://github.com/sendgrid/sendgrid-nodejs">Node.js package</a>. </p>
<p>When using the Node.js package, you set the values for your email as follows:</p>
<ul>
<li><code>to</code>: The address to send the email to.</li>
<li><code>from</code>: The address to send the email from. This should match your settings in the Sender Authentication.</li>
<li><code>subject</code>: The subject of your email.</li>
<li><code>text</code>: The content of your email, if you are sending a plain text email.</li>
<li><code>html</code>: The content of your email, if you are sending an HTML email.</li>
</ul>
<p>The properties in a raw API call are different, as are the properties in the other helper libraries. Be sure to refer to the documentation for your specific approach.</p>
<h3 id="heading-how-to-use-dynamic-templates-in-sendgrid">How to Use Dynamic Templates in SendGrid</h3>
<p>As an alternative option, instead of sending the email content in your API call, you can use a Dynamic Template to generate the content. </p>
<p>A Dynamic Template lets you set the content for emails to send out, and offers Handlebars functionality to replace specific data fields.</p>
<p>To create a Dynamic Template, from your dashboard select "Email API" and then "Dynamic Templates". Then click "Create a Dynamic Template" – you should see your template appear below. </p>
<p>Click on it, then select "Add Version" to open the template selection. Choose the blank template, then select the type of editor you would like to use (I use the code editor).</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/05/image-7.png" alt="Image" width="600" height="400" loading="lazy">
<em>Image depicting the editor.</em></p>
<p>You can write the content of your email, and use placeholders such as <code>{{name}}</code> for the dynamic data. These placeholders would be given values through your API calls when you send the emails. </p>
<p>If you want to see how it would render, you can use the "Test Data" tab to add sample data for the placeholders.</p>
<h3 id="heading-how-to-get-blocksbouncesspams-via-sendgrids-api">How to Get Blocks/Bounces/Spams via SendGrid's API</h3>
<p>It's important to track undeliverable emails. SendGrid offers tooling to help track this for you, and that data is available through three different dashboard views (or API endpoints, if you want to parse the data programmatically).</p>
<ul>
<li><code>Blocked</code> emails are emails that were rejected by the receiving email provider's policies, such as university emails that don't accept external traffic, or emails that could not be resolved (the mail server was not found).</li>
<li><code>Bounced</code> emails are emails that were received by the server but returned. This occurs in cases where the email server exists, but the specific user does not, or the email inbox is at capacity.</li>
<li><code>Spam</code> emails are arguably the most important to monitor, as these are generated when a user receives your email and reports to their provider that your email is spam. These directly impact your reputation as a sender, so it is imperative that you do not send an email to someone who has marked your previous emails as spam.</li>
</ul>
<h3 id="heading-other-concerns">Other Concerns</h3>
<p>Speaking of your reputation as a sender, SendGrid offers a top-level metric called "Sender Reputation". This metric is an aggregation of your activity through their platform, and helps give a general idea of the way email providers are likely to handle your emails. </p>
<p>A lower reputation will result in your emails being marked as spam automatically, or even your IP addresses being blocked.</p>
<p>If you are on the free tier for SendGrid, you will be using shared IP addresses. This means that other customers will also be sending emails through that same IP, and their actions can negatively impact your reputation. </p>
<p>If you intend to send large volumes of emails, I recommend that you purchase dedicated IP addresses to ensure that your reputation is protected.</p>
<h2 id="heading-conclusion">Conclusion</h2>
<p>I hope this article has helped you become more familiar with SendGrid and the services they offer. You should now be ready to start sending your own emails. </p>
<p>If you are planning to start an email newsletter, I wrote an article about <a target="_blank" href="https://www.freecodecamp.org/news/how-to-create-an-email-newsletter-design-layout-send/">creating effective email newsletters</a> that might help.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Get Your First Developer Job through Intelligent, Genuine Networking ]]>
                </title>
                <description>
                    <![CDATA[ By Kenny Rogers "It's not about what you know, it's about whom you know." "70-80% of jobs are found via someone's network." Most of us have heard cliches and stats like the above. And I think most of us intuitively know that having a network of peopl... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/networking-for-aspiring-developers/</link>
                <guid isPermaLink="false">66d45f6c38f2dc3808b790c3</guid>
                
                    <category>
                        <![CDATA[ Career ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Career development  ]]>
                    </category>
                
                    <category>
                        <![CDATA[ communication ]]>
                    </category>
                
                    <category>
                        <![CDATA[ community ]]>
                    </category>
                
                    <category>
                        <![CDATA[ community building ]]>
                    </category>
                
                    <category>
                        <![CDATA[ networking ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Tue, 11 May 2021 01:38:36 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2021/05/FCC-Article-Cover.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Kenny Rogers</p>
<p>"It's not about what you know, it's about whom you know."</p>
<p>"70-80% of jobs are found via someone's network."</p>
<p>Most of us have heard cliches and stats like the above. And I think most of us intuitively know that having a network of people that can help us find opportunities is a good thing.</p>
<p>Using the spray and pray approach and applying to as many jobs as possible doesn't work very well anymore.</p>
<p>But this can be one of those vague, nebulous concepts that we all know is a good thing to do and have – but actually going about it is difficult.</p>
<p>If you want to grow a successful career and keep your job opportunities open, you need to learn how to network.</p>
<p>There are two main obstacles when trying to successfully network as a developer.</p>
<ol>
<li>It has a bad connotation and reputation</li>
<li>It's hard to do right</li>
</ol>
<p>These two things are related, so let's tackle the first here then get into some practical ways to do it right.</p>
<h2 id="heading-networking-has-a-bad-connotation">Networking Has a Bad Connotation</h2>
<p>We associate networking with irritating events and transparently fake attempts to make friends and get stuff.</p>
<p>Or at a slightly less horrible level, reaching out to a bunch of random people on Twitter, having awkward conversations, and trying to find something in common with them out of thin air. Maybe you'll get a response if you're lucky, and then it fizzles out from there.</p>
<p>But real, effective networking isn't about any of this.</p>
<p>You don't have to constantly pester people asking for stuff, attend awkward events, or initiate fake conversations.</p>
<p>Because of modern technological miracles, it's as simple as interacting with people on Twitter and sending some emails. And it doesn't have to be awkward.</p>
<p>Now, I say simple, but simple doesn't mean easy.</p>
<p>How in the world are you supposed to strike up a conversation with some random person you don't know, and then if you have a hard time with that, how can you possibly leverage that relationship into a job?</p>
<p>The thing to keep in mind is that networking is a long game. If you approach networking selfishly or with short-term goals in mind, it will not work.</p>
<p>If you approach networking as a way to make new friends, build real relationships, and add value where you can, it will create a snowball effect.</p>
<p>This doesn't mean it can't benefit you – it can and should. Networking should be mutually beneficial to each person involved. The reason networking has a bad connotation is because when networking is done right it doesn't feel like networking. It feels like making new friends and helping each other out where you can.</p>
<p>The ultimate goal is to create a strong enough network that you don't ever have to worry about finding work. You have built enough of a reputation with enough people that you can simply put a call out to your network and you'll have opportunities coming to you.</p>
<p>Long-term networking pays off because you have built enough social capital with enough people that you can ask for opportunities when you need them. And that social capital you've been investing will be returned.</p>
<p>This, however, takes a long time. So you need to approach this genuinely and patiently.</p>
<p>Now, there are ways to use short-term networking to stand out and get jobs, but it's a very specific strategy that needs to be handled directly and honestly because it has a stated, specific goal that you are trying to achieve. When done right this can be very powerful. We'll get into both long-term networking strategy and short-term networking strategy in this article.</p>
<p>You can do all your long-term networking these days indirectly by simply interacting with people on social media and maybe sending some emails.</p>
<p>Because of the power of the Internet, we can begin to build relationships with people with nothing but an email address and a few social media accounts.</p>
<p>I have my issues with social media, but it is a tremendously valuable tool when it comes to networking, specifically Twitter.</p>
<p>Every day I see people posting stories of how they started simply building relationships on Twitter and now they have freelance work, have received job offers, and generally are building very successful careers on the back of social media.</p>
<p>Now let's get into some practical ways to actually go about doing this.</p>
<h2 id="heading-how-to-network-effectively">How to Network Effectively</h2>
<p>Let's dive into specifics for how to actually do this. We'll be using two main tools: Twitter and email.</p>
<p>Side note: LinkedIn is underrated as a platform for landing a job, but it can be very valuable. I wanted to focus on one social media tool here, but if you are interested in using LinkedIn to land your first job, I highly recommend <a target="_blank" href="https://www.youtube.com/watch?v=SG5Sb5WTV_g&amp;list=PL54X5yR8qizsMpvTCqUIEFMeEp-chvcxk">this video series</a> from <a target="_blank" href="https://twitter.com/DThompsonDev">Danny Thompson</a>.</p>
<p>We'll focus on social media for our more generalized, long-term networking, and then dive into a specific tactic using email to make yourself stand out to potential employers.</p>
<p>You won't have to cold call people, attend events, or send awkward, desperate emails/DMs asking for stuff.</p>
<p>Just genuine connection and relationship-building with people you admire.</p>
<h3 id="heading-long-term-networking-with-twitter">Long Term Networking with Twitter</h3>
<p>The goal here is very simple: to increase your visibility. After you've <a target="_blank" href="https://www.freecodecamp.org/news/how-to-build-credibility-as-a-new-developer/">constructed a good online presence</a>, consisting of complete Twitter profiles, a complete and active GitHub profile, and a <a target="_blank" href="https://www.joshwcomeau.com/effective-portfolio/">good portfolio site</a>, you need to get people to actually see it.</p>
<p>This is the kind of networking we're going to be focusing on: utilizing social media platforms to increase your visibility.</p>
<p>Over time, people on Twitter will start to become familiar with you and your skillset and personality. Then, people will start approaching you for different opportunities as you naturally show your skills and personality.</p>
<p>How do you do this?</p>
<p>By liking and commenting on stuff, following people, and connecting with people.</p>
<p>Yes. It is that simple. People try to overthink social media and come up with some crazy system or hack. But if you talk to the people that actually succeed with it, they all treated it as just genuinely sharing their thoughts, what they were working on, posting thoughtful replies to Tweets when relevant, and just being a human being.</p>
<p>The really cool thing about Twitter is that their algorithm works off of spreading content. So when you like or comment on someone's post, their network will see that, or at least some of it.</p>
<p>People try to come up with the best systems and hacks to gain followers and grow their network. But I recommend just using the platforms as they were designed to be used. It really can be that simple.</p>
<p>Don't underestimate the power of this because it is simple and obvious. Everybody wants some sort of step-by-step system or hack to do things, but the most effective way to network is by just being a genuine person.</p>
<p>This is the most effective way to start because everyone can do it. It doesn't require spamming peoples' inbox, making cold calls, or talking to anyone in person.</p>
<p>All you are doing is using social media as it was intended to be used, by genuinely interacting with people.</p>
<p>This is real networking at its finest: simple, genuine, and something you can do every day.</p>
<p>Don't try to overcomplicate this. Once you get started with this simple step, you'll gradually start learning how to effectively interact with people over time and naturally get better and better and building relationships and connections.</p>
<p>Now, with that said, it can be difficult to come into this having never done it before and be able to do anything. So here's a starting point of a few simple things you should do every day.</p>
<p>Start with this template, and naturally grow it into doing your own thing.</p>
<p>These steps assume you are already following a decent number of people in the developer community. So if you aren't, look for some first. If you've been on Twitter any amount of time, you likely are already following some people.</p>
<p>A few general tips before we get into the specific steps:</p>
<ul>
<li>All of this needs to be genuine. No spammy, "Awesome job!" or "Nice!" replies. Only tweet if you have something of value to add to the conversation.</li>
<li>If you are able to, getting to a conversation earlier is usually better</li>
<li>Don't target accounts with too large of a following. If you are just getting started, accounts with less than 15,000 followers are a good goal to engage with and then you can scale up as you start to grow.</li>
<li>Experiment with schedulers, but don't feel tied to them. I tried one for a while and found I was able to be more consistent when I tweeted thoughts or realizations as they occurred to me</li>
<li><p>Try to set aside engagement time. It can be easy to get lost in Twitter, so try to set specific engagement time each day so you don't kill your productivity</p>
</li>
<li><p>Reply to 5 tweets from people that you admire with relatively large followings</p>
</li>
<li>DM one person you admire thanking them for something and telling them why you like it</li>
<li>Try to tweet out 3-5 high-value tweets per day. High-value can mean something insightful, a specific method for doing something, an update on what you are working on (working in public is a fantastic networking strategy), or even simply an honest thought that you don't hear very often</li>
</ul>
<p>I can't give you formulas for what to Tweet because that will defeat the purpose. There are plenty of those floating around and they may get high engagement but they are generally annoying and people are getting sick of them.</p>
<p>Be honest, be genuine, and start now. It will get easier and you will get better as you go.</p>
<p>Start with these three simple steps and scale from there. But start small and simple because consistency is what is important here.</p>
<h3 id="heading-short-term-networking-with-cold-email">Short Term Networking with Cold Email</h3>
<p>Alright now we're going to get into a somewhat controversial method of networking. But it's one of my favorites not only for networking, but for directly landing a job.</p>
<p>The cool thing about this method is that the primary goal is to make yourself stand out to land a job, but it's an indirect networking tool as well.</p>
<p>Because even if you don't land a job directly from it, you have placed yourself in someone's mind as unique and willing to go the extra mile for something they care about.</p>
<p>Basically it comes down to these steps: </p>
<ol>
<li>Finding a few, say 5-10, companies you really admire and want to work for</li>
<li>Finding the best contact person at the company</li>
<li>Finding their email address (Twitter DMs and LinkedIn messages could also work if you can't find an email)</li>
<li>Figure out something small of value you could contribute and build a small mini-project custom for them that demonstrates that thing of value</li>
<li>Send in a video pitch introducing yourself, talking about why you love that company in particular, and talking about why you would be a great addition to the team</li>
</ol>
<p>These are just the basic steps broken down, and there is a lot to this process. But you can learn a lot more about the specifics from the company I learned this from, <a target="_blank" href="https://crash.co/">Crash</a>.</p>
<p>They have a software, book, and course that go into this stuff in great detail. It's a game-changer because nobody is willing to put in the time to do this because everyone gets so trapped in the traditional permission-based routes like job boards and applications.</p>
<p>By showing you are willing to step outside those comfort zones, you will be extremely attractive to potential employers and build a valuable network in the process.</p>
<p>There are three critical components of this that make it so effective:</p>
<ol>
<li>Showing you are capable of thinking outside the box and taking initiative despite perceived roadblocks</li>
<li>Showing your skills by building something real, instead of just talking about your skills like you would on a résumé or job application</li>
<li>Facilitating human connection by recording a short, personalized video of yourself</li>
</ol>
<p>We covered the first one above, so let's talk about the other two and get into a few specifics of how you can pull this off. Again, I learned this from Crash so check them out if you want more details. All credit for this technique goes to them.</p>
<p>One of the most powerful aspects of this strategy is that you are taking the time to build a small custom project that is relevant to this particular company.</p>
<p>Keep in mind this project doesn't have to be anything crazy – an hour or two worth of work – and the company doesn't ever have to necessarily use it.</p>
<p>The goal is simply to show that you know enough about the company to build something somewhat relevant to them, prove that you have the skills you say you do, and stand out by showing that you are willing to put in that much effort to that company.</p>
<p>Free work gets a bad rap, and when free work is specifically requested from a company, like some companies that ask someone to build an entire functioning application as a sample project for an interview, that's crap.</p>
<p>But choosing to take the initiative to build something like that on your own is a great use of your time.</p>
<p>Facilitating human connection is the third really big benefit of this. When you are recording your pitch video, the goal is to communicate who you are very briefly, talk about why you admire that company and want to work for them, talk about the skills you have, and then talk about why those skills would be valuable to that company.</p>
<p>This combined with the custom project is insanely powerful. Try to keep it short, around 2 minutes, smile, breath, and write some bullet points.</p>
<p>Don't write a script, as that will come off as robotic. Just jot down some bullets to cover so you don't get off track.</p>
<p>My favorite way to do all this is to create a custom page on your portfolio site dedicated to the company.</p>
<p>Then you can put your custom project on there, embed your video, and send out a simple cold email to the right contact person.</p>
<p>I'm a big fan of writing extremely short, direct cold emails.</p>
<p>Let's see what this might look like in practice.</p>
<p>Imagine I'm a React developer with a strong affinity for design. So I want to be able to combine my React skills with my design skills and do some front-end development with a heavy focus on implementing great design.</p>
<p><em>Side note: This is an excellent example of skill stacking, combining two different but complimentary skillsets to make yourself more unique and valuable to companies.</em></p>
<p>Say I want to work for a company called Paperize. They take peoples' handwritten notes and digitize them. This is a fictional company I just made up, so any resemblance to a real company is purely coincidental.</p>
<p>I found the Lead Developer and decide they would be the best person to reach out to, since based on my research of the company on their website, LinkedIn, and content they have written. This person seems to be heavily involved in the hiring process but more easily accessible than the CEO.</p>
<p>So I take a detailed look at their website and notice a couple of things:</p>
<ol>
<li>They talk a lot about flexibility being important for employees on their website. This is extremely important to me as well, so I jot that down as something to mention in the video. However, I also know being effective at a remote job with asynchronous schedules requires a certain amount of discipline to be productive, so I want to make sure I say I have experience doing that</li>
<li>There's a form on their website that's a little clunky, so I can spend an hour or so rebuilding that form in React to function better and make a better UX for it.</li>
</ol>
<p>So now I'll build that and record my video saying something along the lines of:</p>
<blockquote>
<p>"Hey Paperize! I'm Ken, I'm a React developer looking to contribute my development and UX skills to an amazing company. I've been following Paperize for a while and really admire your focus on taking something that's mundane but that everybody does and that's important, and turning it into something extremely easy.  </p>
<p>I was looking at your website and noticed that there is a form on your contact page that could use a little love, so I went ahead and coded a new one up in React for you that has a nice, smooth UX for the user. The code and lie demo are below.  </p>
<p>I love Paperize and think that my combination of React skills with my love for clean UX would make a great addition to the team.  </p>
<p>Thanks so much for taking the time to watch this! You can email me at email@example.com or give me a call at 123-555-1234 so we can get to know each other more and I look forward to hearing from you!"</p>
</blockquote>
<p>Something like that would work great.</p>
<p>Then I would set this up on a page on my website dedicated to Paperize and send the Lead Developer a super short email like:</p>
<p>Subject: I want to work for Paperize</p>
<p>"Hey Dan,</p>
<p>Big fan of Paperize and your work, so I made you something.</p>
<p>[link to it]</p>
<p>Thanks!</p>
<p>Ken"</p>
<p>Keep it super simple. Your goal here is not to get a job, it's to pique their interest enough to click the link in the email, and then pique their interest enough to follow up with you.</p>
<h2 id="heading-wrapping-up">Wrapping Up</h2>
<p>There is a lot more to networking than what I covered here, but often the hardest part is just having a concrete starting point, so I wanted to give you that here.</p>
<p>If you are looking for a concrete, step-by-step plan to land your first job as a developer, along with support from myself and community of peers, I think you'd love being a member of my combination course/community, <a target="_blank" href="https://lever.so">Lever</a>.</p>
<p>Thanks so much for taking the time out of your day to read this, and good luck on your networking journey!</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ How to Handle Client Objections when Freelancing ]]>
                </title>
                <description>
                    <![CDATA[ By Kyle Prinsloo What should you do when you’re trying to sell your services and hear these words:   •    “That’s too expensive.”•    “I’ve never heard of you before.”•    “I’m too busy. Call me some other time.”   Give ]]>
                </description>
                <link>https://www.freecodecamp.org/news/how-to-handle-client-objections-freelancing/</link>
                <guid isPermaLink="false">66d46027246e57ac83a2c793</guid>
                
                    <category>
                        <![CDATA[ business ]]>
                    </category>
                
                    <category>
                        <![CDATA[ business strategy ]]>
                    </category>
                
                    <category>
                        <![CDATA[ communication ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Freelancing ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Fri, 26 Feb 2021 16:31:33 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2021/02/client-objections-freelancing.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Kyle Prinsloo</p>
<p>What should you do when you’re trying to sell your services and hear these words:  </p>
<p>•    “That’s too expensive.”<br>•    “I’ve never heard of you before.”<br>•    “I’m too busy. Call me some other time.”  </p>
<p>Give up and move on to the next one?  </p>
<p>If you do, your pipeline will soon run dry.  </p>
<p>It may be disappointing to hear these phrases over and over again, but these are some of the most common client objections in virtually any industry.  </p>
<p>You may not like it, but working on sales is vital to start your <a target="_blank" href="https://studywebdevelopment.com/how-to-start-freelancing-as-developer.html">freelance web development business</a>.  </p>
<p><a target="_blank" href="https://www.bidsketch.com/blog/client-proposals/handle-client-objections/">Client objections</a> are inevitable, but the key to overcome them and close the sale is to come prepared with techniques and strategies on how to handle these objections like a pro.</p>
<h2 id="heading-what-are-sales-objections">What are Sales Objections?</h2>
<p>Sales objections are problems that prospects tell you are the reasons why they can’t buy your services.  </p>
<p>The key to handling objections is seeing them with the right perspective.  </p>
<p>Some objections are valid, such as a real lack of budget (in that case you have to move on). But sometimes they represent an opportunity for you to explain the value that you can bring or clarify any questions they might have – which brings them one step closer to a sale.  </p>
<p>When your prospects object, you have to understand what’s really going on in their minds so you can handle those objections accordingly.  </p>
<p>As with any skills, handling sales objections takes a lot of practice. But over time and with enough practice, you will develop an instinct and familiarity that will help you handle objections with more finesse.</p>
<h2 id="heading-4-types-of-client-objections-during-sales">4 Types of Client Objections During Sales</h2>
<p>Sales professionals use a qualification methodology called BANT to help determine whether a prospect is a good fit based on their Budget, Authority to buy, Need for the product, and Timeline.  </p>
<p>Since a successful sale usually happens because all these four qualifications were met, it makes sense that the most common client objections are the opposite of these.  </p>
<p>Almost all client objections can be grouped into the following four categories:</p>
<ul>
<li>Lack of budget</li>
<li>Lack of authority to buy</li>
<li>Lack of perceived need for the product</li>
<li>Lack of urgency</li>
</ul>
<h2 id="heading-its-too-expensive">“It’s too expensive.”</h2>
<p>Any concerns regarding cost, budget, or ROI fall into this category. Clients are worried about the cost often because they’re not sure if it’s worth the risk, or they’re not sure what makes your service worth the higher cost than a competitor’s.  </p>
<p>Your job is to justify the cost by showing the value of what you have to offer.</p>
<h3 id="heading-how-to-handle-budget-based-objections">How to handle budget-based objections:</h3>
<p>Sometimes, when people don’t want to deal with another sales conversation or aren’t ready to commit to a sale, the first thing they will say is they don’t have any money, even if that’s not the case.  </p>
<p>Ask a few questions to uncover the real reasons behind the objection. Try to find out what makes the prospect think that your service is expensive. Putting the price in context will often help ease their minds. Explain the ROI in relation to the price or how much it will cost if they don’t get your service.  </p>
<p>This is also why it’s best to offer a pricing tier, like 3 options. Learn how to write <a target="_blank" href="https://studywebdevelopment.com/web-design-proposal-template.html">winning proposal templates</a>.  </p>
<div class="embed-wrapper">
        <blockquote class="twitter-tweet">
          <a href="https://twitter.com/study_web_dev/status/1295334769623015425?s=20"></a>
        </blockquote>
        <script defer="" src="https://platform.twitter.com/widgets.js" charset="utf-8"></script></div>
<p>Clients with budget concerns will feel more at ease availing of your lower-priced options. You can then upsell them later on.  </p>
<p>Learn more about how to price your web development services <a target="_blank" href="https://studywebdevelopment.com/how-to-charge-for-a-website.html"><strong>here</strong></a>.  </p>
<p>If the client really has no budget for your service, let it go and move on to the next prospect.</p>
<h2 id="heading-lack-of-authority-to-buy">Lack of authority to buy</h2>
<p>“I need to clear this with my boss”.<br>“Let me run this through with my partner”.</p>
<p>You’ll hear this if you’re talking with someone without the influence or authority to buy. What you’ll hear specifically depends on how big the company is.  </p>
<p>If it’s a large company, they’ll say they need to talk to their boss about it or they can’t decide on that matter. A small business owner with a business partner will tell you they need to talk about it first.</p>
<h3 id="heading-how-to-handle-authority-based-objections">How to handle authority-based objections:</h3>
<p>This one is pretty straightforward. If they really don’t have the authority to make the decision, ask them to connect you to someone who does.  </p>
<p>If they need to talk to their boss about it, you can help out by anticipating questions and providing clear, convincing answers.</p>
<h2 id="heading-lack-of-need">Lack of need</h2>
<p>“I don’t see why I need this.”</p>
<p>This is when a client expresses doubt about whether they need your services.<br>The key here is to understand and evaluate their needs by asking open-ended questions.</p>
<h3 id="heading-how-to-handle-need-based-objections">How to handle need-based objections:</h3>
<p>Get them to elaborate on why they don’t think they need your service.  </p>
<p>This kind of objection commonly arises when you’re proposing a website improvement project and they’re not convinced that something is wrong with their current website.  </p>
<p>After all, people don’t want to fix something that’s not broken. In this case, ask them why they think they don’t need the website improvement.  </p>
<p>Then explain to them the website’s flaws and why these problems need to be fixed ASAP. What are they losing because of the issues with their website?  </p>
<p>Then ask for an appointment where you can show them how you can fix it. You can also send a detailed proposal.  </p>
<p>Likewise, if the client is not sure if they need a website for their business, ask questions to understand why they think this way, then respond accordingly.  </p>
<p>It often helps to explain how a website can contribute to their bottom line. You can also throw in some data. If you can cite a case study about one of your clients, even better.</p>
<h2 id="heading-lack-of-urgency">Lack of urgency</h2>
<p>“I don’t need it right now.”</p>
<p>When prospects say this, it’s important to identify if the timing is really an issue or if they’re trying to brush you off.</p>
<h3 id="heading-how-to-handle-timing-issues">How to handle timing issues:</h3>
<p>Ask them to elaborate on why it’s not important to them right now or what competing priorities need their urgent attention.  </p>
<p>If their response conveys a concrete timing issue, it’s best to ask when is the best time for you to call back.  </p>
<p>If they’re giving vague excuses, they’re most likely just putting off taking action on a real pain point, so you may have an opening. In this case, it works best to explain the cost of NOT acting right away.</p>
<h2 id="heading-tips-on-handling-client-objections">Tips on Handling Client Objections</h2>
<h3 id="heading-listen-to-what-they-have-to-say">Listen to what they have to say.</h3>
<p>I’ve come across some salespeople trying to dismiss my objections perhaps in hopes that I will realize that I was wrong and they were right… You can be sure they never heard back from me!  </p>
<p>Selling is, in essence, communication, and communication is supposed to be a two-way street. Your prospect needs to feel that they’re in a real, engaging conversation so you can build a good relationship with them.  </p>
<p>A trick that always helps in making prospects feel heard is repeating what they just said. When a client objects, confirm their concern back to them: “So what I’m hearing you’re saying is <em>__</em>. Is that right?”  </p>
<p>Then you can answer their objection. Don’t dismiss their objections right away. It’s a little way to show that you actually care about their situation.</p>
<h3 id="heading-ask-open-ended-questions">Ask open-ended questions.</h3>
<p>Objections are often great opportunities to understand the needs of your target customer. After all, there’s no better way to know what your target market needs than asking them yourself.  </p>
<p>Ask as many questions as you can to help you understand your prospect’s objection and get down to the real reason for their hesitation.  </p>
<p>But it’s important to have the right tone – you don’t want it to feel like an interrogation. You have to sound calm, positive, and inquisitive.  </p>
<p>Once you get down to the root of the problem, you’re in a better position to deal with it effectively.</p>
<h3 id="heading-share-customer-testimonials">Share customer testimonials.</h3>
<p>I’ve found that one of the best ways to handle objections is to share the stories of your past clients who had a similar objection but went ahead with your service anyway and saw a positive result.  </p>
<p>This approach shows that you are acknowledging the validity of their concerns and the value that others have found in your service.</p>
<h3 id="heading-be-honest">Be honest.</h3>
<p>The last tip that I’ll share is being honest about your service. Don’t make false claims – ever.  </p>
<p>Don’t say the website you built for a restaurant directly resulted in a 200% in-store traffic if it didn’t. It’s just part of business ethics.  </p>
<p>Always be upfront about what you can offer, your past results, and back it up with customer stories if you can.</p>
<h2 id="heading-when-no-means-no">When No Means No</h2>
<p>The tips above will help you get past your prospects’ first line of barriers and help you understand the real problem.  </p>
<p>But at a certain point, no means no.  </p>
<p>If you’ve tried to identify what your prospect is really concerned about and you’ve said your piece, and the prospect still objects, let it go.  </p>
<p>A good rule of thumb is if the prospect says an objection twice, it’s true.</p>
<p>Client objections can seem daunting at first, but once you understand the psychology behind it, it gets easier to handle.  </p>
<p>Thanks for reading, and I hope this will help you handle client objections more confidently :)</p>
<p>Check you <a target="_blank" href="https://twitter.com/study_web_dev">on Twitter</a>.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ What I've Learned from Building Products – Lessons in Communication and Problem Solving ]]>
                </title>
                <description>
                    <![CDATA[ By Zaid Humayun I spent a year learning how to build products. Rather, I spent that year learning just how hard it is to build good products.  It's been a roller coaster ride so far and I want to share my learnings. I'm going to highlight the most im... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/building-products-lessons-in-communication-and-problem-solving/</link>
                <guid isPermaLink="false">66d461ca787a2a3b05af4427</guid>
                
                    <category>
                        <![CDATA[ communication ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Problem Solving ]]>
                    </category>
                
                    <category>
                        <![CDATA[ product development ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Productivity ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Wed, 24 Feb 2021 15:46:49 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2021/02/learning_to_build_products_header.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Zaid Humayun</p>
<p>I spent a year learning how to build products. Rather, I spent that year learning just how hard it is to build good products. </p>
<p>It's been a roller coaster ride so far and I want to share my learnings.</p>
<p>I'm going to highlight the most important lessons I've learned along the way.</p>
<h2 id="heading-what-to-expect-from-this-article">What to Expect from This Article</h2>
<p>Before I start, I do want to specify that this blog post is not as technical as most things you will read on freeCodeCamp. </p>
<p>While exploring the technology will be valuable, I believe it is just as beneficial for programmers to look at the business aspect of things. This is in part because it is not something most programmers pay attention to.</p>
<p>As programming becomes more and more popular and commoditized, it will become more valuable for programmers to understand exactly how they are adding value to a company.</p>
<p>Answering the <strong>why</strong> of problem solving is the most crucial business aspect while building technological solutions.</p>
<h2 id="heading-a-bit-of-background-and-context">A Bit of Background and Context</h2>
<p>I work at a garment manufacturing company headquartered in Bangalore, India. Nope, you read that right. I work in tech at a garment manufacturing company in Bangalore, India.</p>
<p>Not the most glamorous of jobs, but it does provide a lot of opportunities to experiment.</p>
<p>The garment industry is one of the most unorganized industries in India. For people working in the tech world, it's a little hard to grasp just how unorganized it is. </p>
<p>When people in tech think of a problem, they think of sifting through large sets of data to glean insights that might turn into more effective features. </p>
<p>But, what do you do when the data is still written in pencil on paper? How do you even get access to that information? </p>
<p>Sometimes it feels like the rest of the world stormed ahead leaving certain industries lagging far behind that. And it often feels like the wheel of invention is coming spinning back around again.</p>
<h2 id="heading-how-things-work-at-the-company">How Things Work at the Company</h2>
<p>Before I can present the problems, I need to explain how a garment manufacturing unit works. </p>
<p>Here is an extremely simplistic overview of how the supply chain in garment manufacturing works</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/02/supply_chain_basic-1.png" alt="supply_chain_basic-1" width="600" height="400" loading="lazy"></p>
<p>Pretty simple, right? It really is! And just like every other industry, the devil is in the details.</p>
<p>Let's dive in a little deeper. For brevity's sake, let's examine just the relationship between the textile mill and the garment manufacturer. </p>
<p>It starts with an order placed by the buyer with the garment manufacturer. The buyer will tell the garment manufacturer that they require a specific kind of fabric for their garments. This is called a style of fabric.</p>
<p>Now, when we refer to the style of fabric, it can mean many different things. Here are a few of the variables that comprise the style of the fabric.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/02/parts_of_style-1.png" alt="parts_of_style-1" width="600" height="400" loading="lazy"></p>
<p>For now, to keep things simple, let's just focus on fabric colour.</p>
<p>The garment manufacturer will then place an order for the fabric with the textile mill. Once the textile mill is ready to ship the fabric, the complexity starts.</p>
<p>The problem is one of scale. When you have over 30 suppliers of fabric, stationed all over a country, keeping track of when you get shipments of fabric is hard.</p>
<h2 id="heading-how-we-can-define-the-problem">How We Can Define the Problem</h2>
<p>Here are the key problems:</p>
<ul>
<li>Keeping track of when you receive the fabric shipment</li>
<li>Keeping track of how much fabric you've received</li>
<li>Keeping track of which supplier you've received the fabric from</li>
<li>Keeping track of which location you've received the fabric at</li>
<li>Whether the fabric passes quality inspection checks</li>
<li>Whether the fabric passes the lab tests indicated by the buyer</li>
</ul>
<p>Our problem is going to focus on only the following three points:</p>
<ul>
<li>When did we receive a shipment of fabric from a supplier?</li>
<li>How much fabric did we receive in a specific shipment?</li>
<li>At which location did we receive the fabric?</li>
</ul>
<p>The most obvious solution is Excel sheets. </p>
<blockquote>
<p><em>Lesson #1: In big organizations, Excel functions as a distributed database.</em></p>
</blockquote>
<p>Excel works well, for a while, and then quickly becomes difficult to maintain.</p>
<p>Why? Let's start a hypothetical garment manufacturing company to answer that.</p>
<h3 id="heading-phase-1">Phase 1</h3>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/02/simple_excel_sheet_fabric.png" alt="simple_excel_sheet_fabric" width="600" height="400" loading="lazy"></p>
<p>Okay, so we've just started and we have 2 suppliers, 3 factories, and a head office. That's pretty good for a start!</p>
<p>Let's also say that we have 1 buyer. Having a single buyer means that the number of different styles of fabric that we have to deal with are small.</p>
<p>As and when each factory receives fabric, they let the head office know via email the amount of fabric and the style of fabric they received. Then the head office puts that data into an Excel sheet.</p>
<p>Each factory receives fabric once a day, so that means the head office will receive 3 emails a day. Not too bad! </p>
<p>Even if a supplier delays a shipment, it's relatively easy to track because there are only 2 suppliers.</p>
<h3 id="heading-phase-2">Phase 2</h3>
<p>Things are going well, business is growing, and you decide to expand. You set up 5 more factories. </p>
<p>You also increase the number of buyers you're working with, which in turn increases the number of styles of fabric.</p>
<p>You also want to increase your turnover, so 3 of the factories receive fabric twice a day: once in the morning, once in the evening.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/02/complicated_excel_sheet_fabric.png" alt="complicated_excel_sheet_fabric" width="600" height="400" loading="lazy"></p>
<p>Things just got a little more real. </p>
<p>You'll notice that each supplier's face is now invisible. This is not a coincidence. Yeah, I did it to save space but I also did it to illustrate how as scale increases, your personal relationships with business partners take a back seat. </p>
<p>It's simply not possible to maintain the same kind of personal relationship you had with 2 suppliers, with 6 suppliers and 8 factories to boot!</p>
<p>You might wonder why the above point is relevant. That's because it leads into the next lesson.</p>
<blockquote>
<p>Lesson #2: Business relationships are built almost entirely on trust, especially in the absence of technology.</p>
</blockquote>
<p>Let's examine the lesson above for a bit. It's important because the goal of most technological systems is to eliminate the need for trust. Of course, that's not entirely possible.</p>
<blockquote>
<p>Before continuing, there is one quick thing I need to mention. When suppliers provide fabric to manufacturing units, they usually provide it in the form of a roll of fabric.</p>
</blockquote>
<p>Let's construct a scenario with you as a garment manufacturer. You have a supplier who provides you with rolls of fabric. </p>
<p>One time, you receive 10 rolls of fabric and based on an anonymous tip-off decide to measure the length of each roll of fabric against what the supplier tells you it is.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/02/trust_relationship.png" alt="trust_relationship" width="600" height="400" loading="lazy"></p>
<p>The above infographic shows you what that would look like. </p>
<p>To your dismay, you find out that the supplier is cheating you and you're short 36m of fabric. In a low-margin industry like garment manufacturing, this counts for a lot.</p>
<p>Also, this was only for 10 rolls of fabric. As your company grows, you're going to order more rolls of fabric from a supplier. Imagine you had a 100 rolls of fabric to go through instead of 10. </p>
<p>Manually checking each roll of fabric is not an operation that can scale, and as your operations scale, trust becomes more important.</p>
<p>Now, back to our problems of scaling. We have a total of 6 suppliers, 8 factories, and more buyers – and therefore more styles of fabric.</p>
<p>With 5 factories receiving fabric once a day and 3 factories receiving fabric twice a day, the head office will receive <code>5*1 + 3*2 = 11 emails</code> a day.</p>
<p>Things have gotten harder not only because the head office is receiving more emails but because the styles of fabric they are receiving have also increased. This adds to the number of rows in an Excel sheet. </p>
<p>Now, when a supplier delays a shipment, things get a lot harder to keep track of because the factories are receiving 11 shipments a day from 6 different suppliers.</p>
<p>But, even now, Excel is not a bad option at all. However, the fabric department is under a lot of strain trying to keep up with the workload, so the head office does what any good organization would do and adds a couple more employees. </p>
<p>Was adding two employees a bad idea? All answers are opinionated.</p>
<p>A technologist would say: "Why would you add two more employees? You need to simplify the process by adding automation!"</p>
<p>A CEO would reply: "Why? The cost of automation is not worth it. It's simpler to add two employees and keep our process the same."</p>
<blockquote>
<p>Lesson #3: Not everything is worth automating. This is the hardest lesson to accept for me.</p>
<p><a target="_blank" href="https://xkcd.com/1205/">Relevant XKCD</a></p>
</blockquote>
<h3 id="heading-phase-3">Phase 3</h3>
<p>Time passes and business continues to boom. Being a capitalistically inclined CEO, you want to increase the scale of the business again!</p>
<p>This time, you increase the number of factories to 14. You also add more buyers to the portfolio, so this increases the number of styles of fabric the factories need to work with. 6 factories receive fabric twice a day and the remaining 8 receive fabric once a day.</p>
<p>You also work with 20 suppliers now because of all the different styles of fabric you require.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/02/really_complicated_excel_sheet_fabric.png" alt="really_complicated_excel_sheet_fabric" width="600" height="400" loading="lazy"></p>
<p>I haven't bothered to name any of the suppliers or the factories in the image above cause it would be too much effort. </p>
<p>But, again, this is to illustrate that the personal relationship you might have had with each of the managers of the factories deteriorates. You simply can't maintain each of those relationships to the same degree.</p>
<p>Now, the head office will receive <code>8*1 + 6*2 = 20</code> emails a day! Each email also contains more data because we increased the number of styles we are working with.</p>
<p>Maintaining a manual central Excel sheet becomes harder and harder. Simply adding more employees to the task also won't necessarily help because you might just end up with multiple copies of a centralized Excel sheet in the head office.</p>
<h2 id="heading-how-to-solve-the-problem">How To Solve The Problem</h2>
<p>Now, there are multiple ways to solve this problem. </p>
<p>One could be to ask each of the factories to maintain their own daily Excel sheet and send it as an attachment via email to the head office.</p>
<p>However, this again involves someone copying and pasting the data from each factory into one centralized Excel sheet. Nothing wrong with this, but there is probably a more efficient solution.</p>
<p>Another potential solution is we could ask each of the units to maintain an individual Google Sheet and run a script using <a target="_blank" href="https://developers.google.com/apps-script">Google App Script</a> every day like a <a target="_blank" href="https://en.wikipedia.org/wiki/Cron">cron job</a> and pick up the data.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/02/google_sheet_cron_job.png" alt="google_sheet_cron_job" width="600" height="400" loading="lazy"></p>
<p>However, if you want more data like the length of each roll, you're out of luck. There is no way you can ask people working in factories to manually enter the length of each roll of fabric everyday. Because, like we said earlier, you could potentially receive 150 rolls of fabric a day.</p>
<h3 id="heading-our-solution">Our Solution</h3>
<p>The solution we ultimately went for, at my company, isn't a surprising one: we decided to use barcodes.</p>
<p>We place a barcode on each roll of fabric. The barcode correlates to the length of a roll, the style of fabric, and which buyer it's for.</p>
<p>We built a small Android application that allows users to scan barcodes with the device camera, and on each scan hits an API indicating that this specific barcode was scanned in a specific location (picked up via GPS).</p>
<p>Scanning a roll of fabric allows us to pick up the location of the roll via GPS and the date and time.</p>
<p>Adding up all the rolls of fabric scanned at a location allows us to know the total length of fabric received by a factory.</p>
<p>Best of all, this reduces the workload for the factories themselves. Their only job now is to scan the rolls of fabric. Scanning one roll of fabric takes ~3 seconds, so scanning 100 rolls of fabric takes ~5 minutes.</p>
<p>Here is a basic schematic of what we built: </p>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/02/fabtrak_architecture_deployment.png" alt="fabtrak_architecture_deployment" width="600" height="400" loading="lazy"></p>
<ul>
<li>A web based application that is used to generate the barcodes</li>
<li>An Android application that is used to scan the barcodes</li>
<li>An API that both the web app and Android app communicate with. The API in turn communicates with the MySQL DB.</li>
</ul>
<p>The whole thing is hosted on AWS and the Android app is hosted on Google Play Store.</p>
<p>The solution seems simple enough, but it isn't.</p>
<h3 id="heading-what-we-learned-from-solving-the-problem">What We Learned From Solving The Problem</h3>
<blockquote>
<p>Lesson #4: Building things for people is hard because there is often a disconnect between the people building the thing and the people the thing is being built for.</p>
</blockquote>
<p>This disconnect is why it's a great idea to build a product that fulfills a need you've long wished existed.</p>
<p>One of the first mistakes we made with the Android app was giving our users too many options
<img src="https://www.freecodecamp.org/news/content/images/2021/02/initial_fabscan_sketch.png" alt="initial_fabscan_sketch" width="600" height="400" loading="lazy"></p>
<p>The sketch above shows what a very early verion of our application looked like. Clicking each of those buttons took you to the camera screen. However, each of them made a different API call and so returned a different result. </p>
<p>The rationale for including the Enter button was that, if the barcode were to get scratched and couldn't be picked up by the phone camera, the user could then enter the barcode instead and it would count as a scan.</p>
<p>Here's what one of our barcode numbers looks like: <code>k29_%!s5qG</code>. There is no chance that anybody is going to sit down and enter that sequence of characters. </p>
<p>The rationale for the Read button was that if someone were to want to identify what kind of fabric a specific roll was, they could scan the barcode in Read mode and it would return information about that roll of barcode.</p>
<p>The factories already had their own method of storing information about the roll, though. They just wrote it down in pencil and paper and stuck it to a tag that gets attached to the roll. </p>
<p>Is it the most technologically advanced system? Heck no! But, does it work? Heck yes! And we should have respected the fact that they already had their own way of doing the same operation.</p>
<p>The end result is that almost no one even bothers clicking on either of the Read or Enter buttons.</p>
<p>When building things, keep things to the bare minimum. There is no reason to add additional features unless absolutely required.</p>
<p>The second mistake we made was not knowing our audience.</p>
<p>When we came up with the idea of building a web application for people to use to generate barcodes, it seemed like a no-brainer.</p>
<p>We ran into a funny problem, though.</p>
<p>When we explained to the people working in the factories that they needed to enter the address into the address bar, we got blank looks in response.</p>
<p>You see, with the privileged background most of us come from, we tend to forget that there is a large majority of the population that doesn't know how to interact with a web browser. Why? They've never had the need to. They interact with the internet primarily through smartphone apps.</p>
<p>This might seem like a bit of a stretch but I've seen the evidence with my own eyes. This is not to suggest that people who don't know how to use a browser are less intelligent by any stretch of the imagination. It simply means that we need to communicate things to them differently.</p>
<p>Now, this topic of communication brings me to the final lesson I've learnt. Probably the most hard-earned lesson and definitely the most insightful.</p>
<blockquote>
<p>Lesson #5: All problems in an organization are communication problems.</p>
</blockquote>
<p>Look back at what we've covered in this article. </p>
<p>The first issue we uncovered was the issue of emails. When an organization is small, fewer emails are exchanged. As an organization scales, the number of emails increases and it becomes harder to keep track. Communication problem.</p>
<p>The second issue we uncovered was one of trust between the supplier and the manufacturer. The supplier communicated wrong/false information to the manufacturer. The manufacturer had to spend valuable time correcting this false information. Communication problem.</p>
<p>The third issue we uncovered was how to explain to people who've never used a web browser, how to navigate to a specific page. Communication problem.</p>
<p>I know it sounds a little like pigeon holing where I'm trying to force every problem into a communication problem, but at the heart of most problems is just that: poor communication.</p>
<h2 id="heading-conclusion">Conclusion</h2>
<p>I glossed over the more technical aspects of the solution we built. However, I think that is not the interesting part. What is interesting is how we've attempted to solve problems. </p>
<p>If you think the problems I am working on are interesting, take a look at our <a target="_blank" href="https://www.id-flo.com/careers">job listings</a>.</p>
<p>If you can't find a role that suits you in the listings, please shoot me a mail at zaid@indian-designs.com.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Why You Need Soft Skills as a Software Developer – And How to Improve Them ]]>
                </title>
                <description>
                    <![CDATA[ By Simon Holdorf The term ‘soft skills’ has been used quite a lot in recent years. And while it is often considered an old-fashioned term, I can't overstate the importance of social and emotional intelligence for those who work in software developmen... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/why-you-need-soft-skills-as-a-software-developer/</link>
                <guid isPermaLink="false">66d460f23a8352b6c5a2ab03</guid>
                
                    <category>
                        <![CDATA[ communication ]]>
                    </category>
                
                    <category>
                        <![CDATA[ empathy ]]>
                    </category>
                
                    <category>
                        <![CDATA[ soft skill ]]>
                    </category>
                
                    <category>
                        <![CDATA[ software development ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Time management ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Thu, 18 Feb 2021 16:08:39 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2021/02/social-skills.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Simon Holdorf</p>
<p>The term ‘soft skills’ has been used quite a lot in recent years. And while it is often considered an old-fashioned term, I can't overstate the importance of social and emotional intelligence for those who work in software development.</p>
<p>As much as code quality, technical skills, and other ‘hard’ aspects of engineering matter, communication and collaboration are what really make a sound engineer great at what they do.</p>
<p>I will not talk about soft skills from a theoretical point of view here. Instead, I aim to give you practical tips on developing your own soft skills to become a better professional.</p>
<h2 id="heading-what-are-soft-skills">What Are Soft Skills?</h2>
<p>Soft skills are about how we interact with others and our environment – and they're no less critical than other skills. They’re about how you communicate, how you resolve conflicts, and how you manage your emotions. </p>
<p>And they’re not only crucial for your personal life – they can also make or break your career as a software engineer.</p>
<p>You might be thinking: “I’m an introvert — I don’t have good social skills”. But it is not that simple! Everyone has some degree of introversion and extroversion. It’s all about finding balance. </p>
<p>While some people have excellent communication skills, they can still do better in certain areas of their professional life.</p>
<p>And vice versa — even if you consider yourself shy and socially awkward, there’s plenty of room for improvement in your interactions with others. Also, it’s never too late to start working on your soft skills — so don’t give up before you get started!</p>
<h2 id="heading-what-you-need-to-know-about-soft-skills">What You Need to Know About Soft Skills</h2>
<p>We need to realize here that soft skills are just like any other skill out there. You have to practice them regularly if you want them to improve, and it might take some time before they become second nature.</p>
<p>Remember that everyone can benefit from working on their soft skills. Even if they seem perfect on the outside, chances are there’s room for improvement. </p>
<p>Don’t be afraid to admit this! Nobody knows everything in life, so why should someone fault us for something we could still improve ourselves?</p>
<h2 id="heading-what-do-soft-skills-mean-for-your-career">What Do Soft Skills Mean for Your Career?</h2>
<p>Soft skills are not just nice-to-have. They are essential for those who want to work in software development. </p>
<p>The information age we live in has made the world smaller and more interconnected than ever before, which means that it’s easier than ever to connect with clients, customers, team members, and other stakeholders. </p>
<p>At the same time, it’s a very competitive industry with lots of opportunities  —  meaning that you have to make an impact to stand out from the crowd.</p>
<p>In my opinion, the most significant advantage that soft skills provide is that they help you build networks within organizations and communities. Having good soft skills means being approachable, likable, reliable, and trustworthy –  basically someone other people enjoy working with and want to know more about. This opens doors for new opportunities.</p>
<p>I often see engineers who are confident with their technical skills but lack communication abilities and struggle to showcase their value to the company they work for. </p>
<p>If you think about it from a management perspective ,  why would anyone hire someone who lacks confidence when there are many great candidates out there who are confident enough to prove themselves?</p>
<p>Confidence is such an essential factor in making hiring decisions! There’s nothing wrong with being humble, though. Just remember that the self-confidence that comes from knowing what you’re doing helps significantly in putting forward a strong case whenever you need something from management or colleagues.</p>
<p>This applies to more than just job security. Remember that other people tend to notice when you bring value into conversations by sharing relevant perspectives or ideas instead of just agreeing with everything everyone says. </p>
<p>This shows them that you’re worth spending time with because of what you’re bringing to the conversation rather than merely because of who you are (or who they think/assume/hope you are).</p>
<p>You’ll find yourself better positioned for promotions, exciting projects at work (with increased responsibility!), and more significant influence over critical team decisions. The list goes on!</p>
<p>Building good relationships within teams and companies (and community-wide) makes going through bad times easier, since there will always be people around who care enough about your situation and want to help. </p>
<p>It might be hard at first (especially if you’ve been labeled as ‘not sociable’), but trust me – once this starts happening more often, things will improve dramatically!</p>
<h2 id="heading-soft-skills-that-will-help-you-out">Soft skills that will help you out</h2>
<h3 id="heading-communication-skills">Communication Skills </h3>
<p>How well can you communicate your ideas, opinions, and problems? It doesn’t matter if you’re presenting at a conference or talking about your project with a client — communication is key, and it comes down to how well you communicate your point.</p>
<h3 id="heading-collaboration-skills">Collaboration Skills </h3>
<p>Can you work in a team? How well do you communicate with your peers and colleagues? Are you able to delegate tasks and responsibilities, or are you always trying to do everything yourself?</p>
<h3 id="heading-conflict-resolution-skills">Conflict Resolution Skills </h3>
<p>Conflict happens in all organizations, whether it's between co-workers or between customers and the organization. It’s all about how we deal with these conflicts. We need to learn how to resolve them to make everyone happy without being too bossy or passive.</p>
<h3 id="heading-emotional-intelligence-eq">Emotional Intelligence (EQ)</h3>
<p> Do you know when you’re feeling stressed or overwhelmed by certain situations? Do you ever lose your temper? Do you get frustrated when things don’t go as planned? Being able to recognize and manage your emotions is essential for your success as an engineer.</p>
<h3 id="heading-managing-your-time-and-priorities">Managing Your Time and Priorities</h3>
<p>How good are your time management skills? Are you overworked continuously yet never get anything done because of it? This is not only bad for productivity but also for your mental health.</p>
<h2 id="heading-how-to-improve-your-soft-skills">How to improve your soft skills</h2>
<p>The first thing to remember is that soft skills are not innate qualities. We all can learn how to communicate better, collaborate, and work with others more effectively. It’s just a matter of practice. </p>
<p>The best thing about soft skills is that you can improve them at any time — it’s never too late to start! Here are some practical tips for developing the best possible social skills:</p>
<h3 id="heading-be-an-active-listener">Be an active listener</h3>
<p>This one is probably the most essential communication skill. Listening may seem simple, but it’s often not easy to do well, as many people know. </p>
<p>When somebody talks to you, don’t be in a hurry to reply right away — take your time and pay attention to what they say! This includes both verbal and non-verbal communication — so watch facial expressions as well as body language.</p>
<h3 id="heading-respond-to-feedback">Respond to feedback</h3>
<p>Feedback is vital for every professional. To improve, you need to know what you’re doing well and where you can improve. If somebody gives you feedback, accept it with an open mind and try not to get defensive.</p>
<p>It happens that people give negative feedback in a non-constructive way, but if you take the time to talk about it, usually they’ll be willing to elaborate on their point of view. Remember that even though someone is trying to help you become better — they don’t have a crystal ball and might be wrong or mistaken at times.</p>
<h3 id="heading-be-confident-when-talking-with-people">Be confident when talking with people</h3>
<p>Communication is useless if it comes from a place of uncertainty or doubt. If you think something could sound awkward or stupid, then it very likely will sound awkward or stupid. </p>
<p>So try out sentences before you say them out loud — in front of a mirror can be useful here because it demonstrates how you look when saying things like “Um… yeah… I mean… no” instead of “Sure thing!”</p>
<p>Remember that confidence does not have anything to do with being arrogant. Instead, it means feeling comfortable enough in your skin to share your ideas confidently and openly with others. That’s much better than being afraid of looking silly (which only makes people feel bad about themselves).</p>
<h3 id="heading-be-curious-about-other-people-and-their-ideas">Be curious about other people and their ideas</h3>
<p>Never be afraid to ask questions. This creates opportunities for others to learn from you, too! And even if they don’t have any interesting answers for you right away, keep asking questions until you find something helpful or interesting for yourself.</p>
<p>If there’s some kind of disagreement between two parties during a conversation, try approaching the problem from each side separately. It will help you understand what each person means by their statements more precisely, facilitating collaboration later on (you’ll know what kinds of solutions would satisfy each party).</p>
<p>And last but not least: always be open-minded. Being too set on your own opinions can lead you into unnecessary conflicts with other people.</p>
<h2 id="heading-final-thoughts">Final Thoughts</h2>
<p>Another important thing I’d like to mention here is the fact that social skills take time to develop. Just like anything else in life, it will take months, maybe even years, until they become second nature (if they ever do). So don’t expect yourself and others around you to change immediately after reading this article.</p>
<p>Instead, focus on improving one area at a time while consciously working towards developing better social skills overall. With enough practice over time, it will eventually become second nature, and people will start noticing the changes in how you interact with those around you.</p>
<p>One of my favorite quotes is from Stephen Hawking: “Remember to look up at the stars and not down at your feet”. The same philosophy applies here — look up instead of down! Building relationships takes time but pays off handsomely in the long run. You’ll feel happier and more fulfilled at work.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Why Soft Skills Are Key to Success in Tech – And How to Develop Them ]]>
                </title>
                <description>
                    <![CDATA[ By Megan Kaczanowski Often in technology, we assume that everyone else is as excited about our product as we are. This tends to be a problem across the board in the tech sector (and even amongst teams, like security and developers, or operations and ... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/why-soft-skills-are-key-to-success-in-cybersecurity/</link>
                <guid isPermaLink="false">66d46083c7632f8bfbf1e463</guid>
                
                    <category>
                        <![CDATA[ communication ]]>
                    </category>
                
                    <category>
                        <![CDATA[ cybersecurity ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Public Speaking ]]>
                    </category>
                
                    <category>
                        <![CDATA[ soft skill ]]>
                    </category>
                
                    <category>
                        <![CDATA[ technology ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Wed, 02 Dec 2020 17:05:00 +0000</pubDate>
                <media:content url="https://cdn-media-2.freecodecamp.org/w1280/5f9c9660740569d1a4ca1106.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Megan Kaczanowski</p>
<p>Often in technology, we assume that everyone else is as excited about our product as we are. This tends to be a problem across the board in the tech sector (and even amongst teams, like security and developers, or operations and developers). </p>
<p>There's a reason that DevOps and DevSecOps were created: operations teams, developers, QA testers, and security often don't work together. And if we can't even get all of the tech people on the same team, think how hard it'll be to get everyone else (think marketing, communications, and the business functions) on board. </p>
<p>Because of that, technical skills alone aren’t enough to be effective. You need to be able to communicate what the problem is, what the solution you’re recommending is, and why it’s necessary — in terms your audience can understand. </p>
<p>And the more you advance, the more important those skills become.</p>
<p>I’ve definitely struggled with this. It’s easy to get caught up in what you’re working on, and forget that not everyone is immersed in the same jargon you are. </p>
<p>I work in security, so for me, this tends to follow the same script every time. Your average user generally isn’t used to thinking about security and doesn’t understand how often companies see attacks. </p>
<p>Often, there’s a tendency for them to think, ‘Well if I’ve always done it this way, and I haven’t seen any problems, why do I need to implement your more complicated system?’</p>
<p>Thus, it’s up to the security team (in this example, me) to explain to them why — how often real attacks occur, why the more complicated way will make their life easier in the long run, and why security is everyone’s responsibility (spoiler alert: anti-virus doesn’t protect against everything).</p>
<div class="embed-wrapper">
        <blockquote class="twitter-tweet">
          <a href="https://twitter.com/chadloder/status/1101571626829672448"></a>
        </blockquote>
        <script defer="" src="https://platform.twitter.com/widgets.js" charset="utf-8"></script></div>
<p>The same policies apply across technology functions. Good technology requires empathy. You can have the best tools in the world, but if no one uses them, it doesn’t matter. If people see you as a roadblock to their productivity, you won’t be able to effect change.</p>
<p>That’s why soft skills, like effective communication, are key to success in tech. If you can communicate to a variety of audiences in a way they’ll understand, you’ll be much better at your job (whatever that job is).</p>
<h2 id="heading-how-can-you-develop-soft-skills">How can you develop soft skills?</h2>
<p>Treat soft skills the same way you would any technical skills. Communication skills might be listed as 'soft' but that doesn't mean they're easy to acquire or that you can't improve them.</p>
<p>First, spend time actively thinking about and working on your skills.</p>
<h3 id="heading-step-1-figure-out-what-skills-you-already-have">Step 1: Figure out what skills you already have</h3>
<p>What skills do you have? What are your strengths? Are you great at communicating with your boss, but struggle to communicate to leadership? Are you an excellent public speaker, but struggle with written communication? </p>
<p>Get very specific with yourself. If you're not sure, try asking trusted friends, colleagues, and bosses to describe what they think your strengths are. </p>
<p>If possible, ask folks who have worked with you closely in the past. </p>
<h3 id="heading-step-2-figure-out-what-skills-you-want-to-develop">Step 2: Figure out what skills you want to develop</h3>
<p>Ok, where do you want to go from here? Think about the job you have, and the job you want next. </p>
<p>What skills do successful people in those roles have? Does the role require a lot of communication with non-technical executives or users? Does the role mostly involve speaking to other technical folks? Do you need to work as part of a larger team, or are you mainly an individual contributor? </p>
<p>Consider your audience. Who are they (the users you want to use your product, your teammates, executives, and so on)? What matters to them ? Think about their needs and the medium you use to communicate with them (written, spoken, small audience presentation, and so on). </p>
<h3 id="heading-step-3-reflect-on-your-past-experiences">Step 3: Reflect on your past experiences</h3>
<p>Now think about the last time you exercised this skill.  What happened? Did you use jargon they didn't understand? Did you appeal to their needs? Were you successful in convincing them that your idea was worth pursuing? </p>
<p>Think about where you fell short and what you can do better next time. If you're able to, ask others for feedback (ideally a trusted co-worker or mentor).</p>
<h3 id="heading-step-4-study-learn-and-improve-your-skills">Step 4: Study, learn, and improve your skills</h3>
<p>Time to start studying. What (and how) you should study depends on what you want to learn and how you learn best. </p>
<p>You can try researching the idea by reading a book. Stephen King's <a target="_blank" href="https://www.amazon.com/Writing-10th-Anniversary-Memoir-Craft/dp/1439156816">On Writing</a> is excellent, as is the <a target="_blank" href="https://www.amazon.com/Elements-Style-Fourth-William-Strunk/dp/020530902X">Elements of Style</a>, for learning how to write better and craft a story which people will be drawn to (and effective communication nearly always revolves around a story, even if you don't initially think of it that way).  </p>
<p><a target="_blank" href="https://www.amazon.com/Cuckoos-Egg-Tracking-Computer-Espionage/dp/1416507787">The Cuckoo's Egg</a> and <a target="_blank" href="https://www.amazon.com/Countdown-Zero-Day-Stuxnet-Digital/dp/0770436196/ref=pd_lpo_14_t_0/137-7968692-9373541?_encoding=UTF8&amp;pd_rd_i=0770436196&amp;pd_rd_r=4929e792-f4c3-4c96-a4d2-46b99abbb925&amp;pd_rd_w=UMRMC&amp;pd_rd_wg=KXZ9K&amp;pf_rd_p=7b36d496-f366-4631-94d3-61b87b52511b&amp;pf_rd_r=3Z8NQPK60PX42EYNC5EC&amp;psc=1&amp;refRID=3Z8NQPK60PX42EYNC5EC">Countdown to Zero Day</a> are great examples of books about very technical topics told in a narrative format for a non-technical audience. </p>
<p>Blogs like <a target="_blank" href="https://www.askamanager.org/">Ask a Manager</a> or the <a target="_blank" href="https://hbr.org/">Harvard Business Review</a> can help with improving internal communication (writing emails, talking to your boss, and so on).</p>
<p>Don't feel like reading? Try a TED talk such as Julian Treasure's <a target="_blank" href="https://www.ted.com/talks/julian_treasure_5_ways_to_listen_better">5 Ways to Listen Better</a>, the <a target="_blank" href="https://www.ted.com/talks/nancy_duarte_the_secret_structure_of_great_talks?utm_campaign=tedspread&amp;utm_medium=referral&amp;utm_source=tedcomshare">Secret Structure of Great Talks</a> (Nancy Duarte), or <a target="_blank" href="https://www.youtube.com/watch?time_continue=14&amp;v=eIho2S0ZahI&amp;feature=emb_logo">How to Speak So People Want to Listen</a>.</p>
<h3 id="heading-step-5-practice-your-new-skills">Step 5: Practice your new skills</h3>
<p>Then, practice — research something, and write or speak about it. Medium lets you set up a free personal blog, as does GitHub, both of which give you a platform to try out writing. </p>
<p>Local meetup groups, like BSides, WiCyS, or Women Who Code, may provide a supportive environment for you to give a talk for the first time (or even a lightning talk, which is typically a short talk between 5-15 minutes). </p>
<p>International organizations like <a target="_blank" href="https://www.toastmasters.org/">Toastmasters</a> are another great way to get practice presenting publicly. You can even practice with  your coworkers, your mom, or strangers on the street. Get comfortable explaining your ideas. </p>
<h3 id="heading-step-6-improve-your-process-and-push-yourself">Step 6: Improve your process and push yourself</h3>
<p>Work on improving. Think about style and presentation. Tools like <a target="_blank" href="http://www.hemingwayapp.com/">Hemingway</a> and <a target="_blank" href="https://www.grammarly.com/p?q=brand&amp;utm_source=google&amp;utm_medium=cpc&amp;utm_campaign=brand_f1&amp;utm_content=329885936576&amp;utm_term=grammarly&amp;matchtype=e&amp;placement=&amp;network=g&amp;gclid=EAIaIQobChMI_JKN0dmN7QIVCUqGCh3GsAs9EAAYASAAEgKb3_D_BwE&amp;gclsrc=aw.ds">Grammarly</a> can help you check your grammar and even give style pointers. </p>
<p><a target="_blank" href="https://www.overleaf.com/learn/latex/code_listing">LaTeX</a> is a tool which helps to display code fragments in a professional way and embed code into reports.</p>
<p>And try to push yourself outside of your comfort zone. Apply to speak at conferences, give lightning talks, write a blog (or apply to write for freeCodeCamp!). It’s hard at first. Keep trying, and don’t let yourself give up.</p>
<h3 id="heading-step-7-get-peoples-feedback">Step 7: Get people's feedback</h3>
<p>Seek (more) feedback — if someone doesn’t like your idea, ask why (and make an effort to understand where they’re coming from and what they need). Then, use that information to craft appeals directly to them. </p>
<p>Try to find a mentor, and if you're struggling to find one, consider a peer. Sometimes a peer mentor can be just as helpful and you can provide similar feedback to them. </p>
<p>Sometimes all you need is an outside perspective. Often, they can help you identify your strengths and weaknesses better than you can yourself. Ask them for <em>specific</em> positive and negative feedback. It might be painful, but you'll learn faster than you would alone.</p>
<p>Whatever you do, make it a habit. Work on it every day, week, or month. Continue to practice, to seek feedback, and to improve. </p>
<p><div class="embed-wrapper"><iframe src="https://giphy.com/embed/9rifLiS5LfCInJOtzw" width="480" height="360" class="giphy-embed" title="Embedded content" loading="lazy"></iframe></div></p><p><a href="https://giphy.com/gifs/bublywater-basketball-march-madness-bubly-9rifLiS5LfCInJOtzw">via GIPHY</a></p><p></p>
<p>Still looking for guidance? Check out these resources:</p>
<ul>
<li><a target="_blank" href="https://hired.com/blog/candidates/hard-soft-skills-engineering-manager/">Soft Skills for an Engineering Manager</a></li>
<li><a target="_blank" href="https://hbr.org/2009/04/five-things-leaders-can-do-to">Sharpen Your Communication Skills</a></li>
<li><a target="_blank" href="https://www.amazon.com/Negotiation-Genius-Obstacles-Brilliant-Bargaining/dp/0553384112">Negotiation Genius</a></li>
<li><a target="_blank" href="https://www.amazon.com/Never-Split-Difference-Negotiating-Depended/dp/0062407805">Never Split the Difference</a></li>
</ul>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ What is gRPC? Protocol Buffers, Streaming, and Architecture Explained ]]>
                </title>
                <description>
                    <![CDATA[ By Pramono Winata gRPC is a powerful framework for working with Remote Procedure Calls. RPCs allow you to write code as though it will be run on a local computer, even though it may be executed on another computer. These past few days I have been div... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/what-is-grpc-protocol-buffers-stream-architecture/</link>
                <guid isPermaLink="false">66d460a2b6b7f664236cbe3f</guid>
                
                    <category>
                        <![CDATA[ communication ]]>
                    </category>
                
                    <category>
                        <![CDATA[ performance ]]>
                    </category>
                
                    <category>
                        <![CDATA[ protocol-buffers ]]>
                    </category>
                
                    <category>
                        <![CDATA[ software architecture ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Mon, 09 Nov 2020 21:33:37 +0000</pubDate>
                <media:content url="https://cdn-media-2.freecodecamp.org/w1280/5fa0296d49c47664ed8187bf.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Pramono Winata</p>
<p>gRPC is a powerful framework for working with Remote Procedure Calls. RPCs allow you to write code as though it will be run on a local computer, even though it may be executed on another computer.</p>
<p>These past few days I have been diving deep into gRPC. I'm going to share some of my big discoveries here in this article.</p>
<p>Note that I will focus more on concepts than implementation details. You will learn the core architecture of gRPC itself. You'll also learn:</p>
<ul>
<li>Why gRPC is so widely used by developers</li>
<li>How it performs so well</li>
<li>And how it all works under the hood.</li>
</ul>
<h2 id="heading-lets-go-back-a-bit">Let’s go back a bit</h2>
<p>Before we rush into gRPC, we should take a look at what <strong>Remote Procedure Calls</strong> are.</p>
<p>A RPC is a form of Client-Server Communication that uses a function call rather than a usual HTTP call.</p>
<p>It uses IDL (Interface Definition Language) as a form of contract on functions to be called and on the data type.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/11/operating-system-remote-call-procedure-working.png" alt="Image" width="600" height="400" loading="lazy">
<em>RPC Architecture</em></p>
<p>If you all haven’t realized it yet, the RPC in gRPC stands for Remote Procedure Call. And yes, gRPC does replicate this architectural style of client server communication, via function calls.</p>
<p>So gRPC is technically not a new concept. Rather it was adopted from this old technique and improved upon, making it very popular in just the span of 5 years.</p>
<h2 id="heading-overview-of-grpc">Overview of gRPC</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/11/index.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>In 2015, Google open sourced their project which eventually would be the one called gRPC. But what does the "g" in gRPC actually stand for?</p>
<p>Lots of people might assume its for Google because Google made it, but it does not.</p>
<p>Google changes the meaning of the "g" for each version to the point where they even made a <a target="_blank" href="https://github.com/grpc/grpc/blob/master/doc/g_stands_for.md">README</a> to list all the meanings.</p>
<p>Since gRPC has been introduced it has gained quite a bit of popularity and many companies use it.</p>
<h3 id="heading-what-makes-grpc-so-popular">What makes gRPC so popular?</h3>
<p>There are plenty of reasons why gRPC is so popular:</p>
<ul>
<li>Abstraction is easy (it’s a function call)</li>
<li>It is supported in a lot of languages</li>
<li>It is very performant</li>
<li>HTTP calls are often confusing, so this makes it easier</li>
</ul>
<p>And aside from all of the reasons above, gRPC is popular because microservices are very popular.</p>
<p>Microservices will often be running several services in different programming languages. They'll also often have a lot of service to service interactions. </p>
<p>This is where gRPC helps out the most by providing the support and capability to solve the typical issues that arise from those situations.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/11/index.jpeg" alt="Image" width="600" height="400" loading="lazy">
<em>Microservices</em></p>
<p>gRPC is very popular in service to service calls, as often HTTP calls are harder to understand at first glance. </p>
<p>gRPC functions are much easier to reason about, so developers don't have to worry about writing a lot of documentation because the code itself should explain everything.</p>
<p>Some of the services might also be written in different languages and gRPC comes with multiple libraries to support that.</p>
<p>Performance is the cherry on top – and it’s a big cherry.</p>
<h2 id="heading-grpc-architecture">gRPC Architecture</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/11/landing-2.png" alt="Image" width="600" height="400" loading="lazy">
<em>The rough architecture of gRPC. It's more or less the same as regular RPC.</em></p>
<p>I have mentioned several times that gRPC's performance is very good, but you might wonder what makes it so good? What makes gRPC so much better than RPC when their designs are pretty similar?</p>
<p>Here are a few key differences that make gRPC so performant.</p>
<h3 id="heading-http2">HTTP/2</h3>
<p>HTTP has been with us for a long time. Now, almost all backend services use this protocol.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/11/HTTP2-graphic.png" alt="Image" width="600" height="400" loading="lazy">
<em>History of HTTP</em></p>
<p>As the picture above shows, HTTP/1.1 stayed relevant for a long time.</p>
<p>Then in 2015, HTTP/2 came out and essentially replaced HTTP/1.1 as the most popular transport protocol on the internet.</p>
<p>If you remember that 2015 was also the year that gRPC came out, it was not a coincidence at all. HTTP/2 was also created by Google to be used by gRPC in its architecture.</p>
<p>HTTP/2 is one of the big reasons why gRPC can perform so well. And in this next section, you'll see why.</p>
<h3 id="heading-requestresponse-multiplexing">Request/Response Multiplexing</h3>
<p>In a traditional HTTP protocol, is not possible to send multiple requests or get multiple responses together in a single connection. A new connection will need to be created for each of them.</p>
<p>This kind of request/response multiplexing is made possible in HTTP/2 with the introduction of a new HTTP/2 layer called binary framing.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/11/Screenshot-from-2020-10-03-15-46-01.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>This binary layer encapsulates and encodes the data. In this layer, the HTTP request/response gets broken down into frames.</p>
<p>The headers frame contains typical HTTP headers information, and the data frame contains the payload. Using this mechanism, it's possible to have data from multiple requests in a single connection.</p>
<p>This allows payloads from multiple requests with the same header, thus identifying it as a single request.</p>
<h3 id="heading-header-compression">Header Compression</h3>
<p>You might have encountered many cases where HTTP headers are even bigger than the payload. And HTTP/2 has a very interesting strategy called HPack to handle that.</p>
<p>For one, everything in HTTP/2 is encoded before it's sent, including the headers. This does help with performance, but that’s not the most important thing about header compression.</p>
<p>HTTP/2 maps the header on both the client and the server side. From that, HTTP/2 is able to know if the header contains the same value and only sends the header value if it is different from the previous header.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/11/Screenshot-from-2020-11-04-22-32-12-1.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>As seen in the picture above, Request #2 will only send the path since the other values are exactly the same. And yes, this does cut down a lot on the payload size, and in turn, improves HTTP/2's performance even more.</p>
<h3 id="heading-protocol-buffer-aka-protobuf">Protocol Buffer, a.k.a. Protobuf</h3>
<p><img src="https://www.freecodecamp.org/news/content/images/2020/11/protobuf.png" alt="Image" width="600" height="400" loading="lazy">
<em>Protocol Buffer</em></p>
<p>Protobuf is the most commonly used IDL (Interface Definition Language) for gRPC. It's where you basically store your data and function contracts in the form of a proto file.</p>
<pre><code class="lang-proto">message Person {
    required string name = 1;
    required int32 id = 2;
    optional string email = 3;
}
</code></pre>
<p>As this is in the form of a contract, both the client and server need to have the same proto file. The proto file acts as the intermediary contract for client to call any available functions from the server.</p>
<p>Protobuf also has it owns mechanisms, unlike a usual REST API that just sends over strings of JSON as bytes. These mechanisms allow the payload to be much smaller and enable faster performance. </p>
<p>The encoding method Protobuf uses is pretty complicated. If you want to take a deep dive into how it works, check out this <a target="_blank" href="https://developers.google.com/protocol-buffers/docs/encoding">comprehensive documentation</a>.</p>
<h2 id="heading-what-else-does-grpc-offer">What else does gRPC offer?</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/04/image-257.png" alt="Image" width="600" height="400" loading="lazy">
_Photo by [Unsplash](https://unsplash.com/@kyledevaras?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit"&gt;Kyle Gregory Devaras / &lt;a href="https://unsplash.com/?utm_source=ghost&amp;utm_medium=referral&amp;utm<em>campaign=api-credit)</em></p>
<p>Now you should have a basic understanding of the architecture of gRPC, how it works, and what it's capable of.</p>
<p>But here are a few other interesting things gRPC offers us.</p>
<h3 id="heading-metadata">Metadata</h3>
<p>Instead of using a usual HTTP request header, gRPC has something called metadata. Metadata is a type of key-value data that can be set from either the client or server side.</p>
<p><code>Header</code> can be assigned from the client side, while servers can assign <code>Header</code> and <code>Trailers</code> so long as they're both in the form of metadata.</p>
<h3 id="heading-streaming">Streaming</h3>
<p>Streaming is one of the core concepts of gRPC where several things can happen in a single request. This is made possible by the multiplexing capability of HTTP/2 mentioned earlier.</p>
<p>There are several types of streaming:</p>
<ul>
<li><strong>Server Streaming RPC:</strong> Where the client sends a single request and the server can send back multiple responses. For example, when a client sends a request for a homepage that has a list of multiple items, the server can send back responses separately, enabling the client to use lazy loading.</li>
<li><strong>Client Streaming RPC:</strong> Where the client sends multiple requests and the server only sends back a single response. For example, a zip/chunk uploaded by the client.</li>
<li><strong>Bidirectional Streaming RPC:</strong> Where both the client and server send messages to each other at the same time without waiting for a response.</li>
</ul>
<h3 id="heading-interceptors">Interceptors</h3>
<p>gRPC supports the usage of interceptors for its request/response. Interceptors, well, intercept messages and allow you to modify them.</p>
<p>Does this sound familiar? If you have played around with HTTP processes on a REST API, interceptors are very similar to middleware.</p>
<p>gRPC libraries usually support interceptors, and allow for easy implementation. Interceptors are usually used to:</p>
<ul>
<li>Modify the request/response before being passed on. It can be used to provide mandatory information before being sent to the client/server.</li>
<li>Allow you to manipulate each function call such as adding additional logging to track response time.</li>
</ul>
<h3 id="heading-load-balancing">Load Balancing</h3>
<p>If you aren't already familiar with load balancing, it's a mechanism that allows client requests to be spread out across multiple servers.</p>
<p>But load balancing is usually done at the proxy level (for example, NGINX). So why am I talking about it here?</p>
<p>Turns out that gRPC supports a method of load balancing by the client. It's already implemented in the Golang library, and can be used with ease.</p>
<p>While it might seem like some sort of crazy magic, it's not. There's some sort of DNS resolver to get an IP list, and a load balancing algorithm under the hood.</p>
<h3 id="heading-call-cancellation">Call Cancellation</h3>
<p>gRPC clients are able to cancel a gRPC call when it doesn't need a response anymore. Rollback on the server side is not possible, though.</p>
<p>This feature is especially useful for server side streaming where multiple server requests might be coming. The gRPC library comes equipped with an observer method pattern to know if a request is cancelled and allow it to cancel multiple corresponding requests at once.</p>
<h2 id="heading-wrapping-up">Wrapping Up</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/04/image-258.png" alt="Image" width="600" height="400" loading="lazy">
_Photo by [Unsplash](https://unsplash.com/@rcrazy?utm_source=ghost&amp;utm_medium=referral&amp;utm_campaign=api-credit"&gt;Ricardo Rocha / &lt;a href="https://unsplash.com/?utm_source=ghost&amp;utm_medium=referral&amp;utm<em>campaign=api-credit)</em></p>
<p>Everything I shared today just scratches the surface of what gRPC is, what it's capable of, and roughly how it works.</p>
<p>I truly hope this article helped you understand more about gRPC. But there's still a lot more learn, so don't stop here! Keep digging.</p>
<p>Thanks for reading!</p>
 ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
