<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: PARTHIB KUMAR DEB</title>
    <description>The latest articles on Forem by PARTHIB KUMAR DEB (@parthib_deb23).</description>
    <link>https://forem.com/parthib_deb23</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F987800%2Fafa3ba66-7d14-4347-b410-096ba6fde2eb.jpg</url>
      <title>Forem: PARTHIB KUMAR DEB</title>
      <link>https://forem.com/parthib_deb23</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/parthib_deb23"/>
    <language>en</language>
    <item>
      <title>Linus revolutionizes ☀️</title>
      <dc:creator>PARTHIB KUMAR DEB</dc:creator>
      <pubDate>Sun, 03 Aug 2025 18:03:51 +0000</pubDate>
      <link>https://forem.com/parthib_deb23/linus-revolutionizes-2cem</link>
      <guid>https://forem.com/parthib_deb23/linus-revolutionizes-2cem</guid>
      <description>&lt;h2&gt;
  
  
  Introduction ✈️
&lt;/h2&gt;

&lt;p&gt;Hello again, curious brains 🧠. In this second chapter of our series, we trace the origins of one of the most influential software developments in history: &lt;strong&gt;Linux&lt;/strong&gt;.  While many people recognize the name, few understand the amazing path that began with a single line of code by Linus Torvalds and continued through a critical alliance to the large ecosystem of operating systems we see today.  Prepare to discover the critical milestones that developed Linux into the global power it is today.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Public Post 📷
&lt;/h2&gt;

&lt;p&gt;Personal computers were growing more popular in 1991, but accessible and fully open operating systems remained uncommon.  Linus Torvalds, a computer science student at the University of Helsinki, found himself in the exact same scenario. He was working with Minix, an educational Unix-like operating system, but he believed its license was too limited for his needs, and its architecture didn't fully exploit the capabilities of his new Intel 386 CPU. Linus began writing a new operating system kernel from scratch up, motivated by a thorough understanding of Minix and a defined goal. His goal was to construct a &lt;strong&gt;UNIX clone&lt;/strong&gt;, which would match the key features and behavior of existing UNIX systems, including critical elements such as the organized file system layout, process management, and inter-process communication methods.  But, unlike the typically proprietary and expensive UNIX versions, his would include a vital change: &lt;strong&gt;complete openness and accessible for everybody.&lt;/strong&gt; This is that auspicious post he made in the &lt;em&gt;comp.os.minix&lt;/em&gt; group when we has working on the linux 0.01 - &lt;em&gt;&lt;a href="http://groups.google.com/group/comp.os.minix/msg/b813d52cbc5a044b?pli=1):" rel="noopener noreferrer"&gt;http://groups.google.com/group/comp.os.minix/msg/b813d52cbc5a044b?pli=1):&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Hobby Project ⚡
&lt;/h2&gt;

&lt;p&gt;What began as a personal endeavor quickly grew into something far larger.  Linus initially created Linux for the Intel 386 processor, and he doubted its portability.  However, the emerging community surrounding his work had different perspectives, consistently supporting (and contributing to) a more universal approach.  This collaborative atmosphere resulted in a significant breakthrough: on &lt;strong&gt;October 5, 1991&lt;/strong&gt;, the release of Linux 0.02 saw much of the original, platform-specific assembly code recast in the extremely portable C programming language. This significant shift paved the path for Linux to be ported to a wide range of other devices. Interestingly, "Linux" was not even the name he chose for this budding operating system. Linus had lovingly dubbed his brainchild &lt;strong&gt;Freax&lt;/strong&gt; - a creative combination of "free," "freak" (a tribute to the dominant hacker culture), and "X" (indicating its Unix-like characteristics, similar to Minix or Xenix). He even put his project files in a &lt;strong&gt;pub/os/freax&lt;/strong&gt; directory on his local machine.&lt;/p&gt;

&lt;h2&gt;
  
  
  GNU Approaches 💨
&lt;/h2&gt;

&lt;p&gt;While Linus had successfully created the Linux kernel—the critical core that governs a computer's hardware and software resources—it remained just that: a kernel.  To become a usable, complete operating system, it required a wide range of supporting software, including compilers for program writing, shell tools for user interaction, libraries for common functions, and much more.&lt;/p&gt;

&lt;p&gt;On the other side of the open-source world, the GNU Project had meticulously developed almost every single one of these necessary utilities and components — from crucial libraries and file system tools to device drivers and powerful command-line shells. What GNU lacked, however, was its own stable, full-fledged kernel.&lt;/p&gt;

&lt;p&gt;This is where the magic happened. The Linux kernel became the final—and perhaps most important—piece of the puzzle required to put together a comprehensive, UNIX-like operating system wholly under the free GNU General Public License (GPL). This formidable combination is widely known as GNU/Linux. Today, Linux is a prime example of an open-source, UNIX-like operating system that seamlessly integrates compliance with numerous industry standards, such as SVID, POSIX, and BSD. Its ongoing development still aggressively seeks strict conformity to POSIX as well as the growing standards established by the stewards of the UNIX brand.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Community ✋
&lt;/h2&gt;

&lt;p&gt;Today Linux development is professionally controlled and safeguarded by &lt;strong&gt;the Linux Foundation&lt;/strong&gt;. This significant non-profit organization, previously known as the &lt;strong&gt;Open Source Development Labs (OSDL)&lt;/strong&gt;, changed its name following a strategic merger with the Free Standards Group.  Explore their work at &lt;a href="https://www.linuxfoundation.org/" rel="noopener noreferrer"&gt;https://www.linuxfoundation.org/&lt;/a&gt;. Crucially, the Linux Foundation directly employs Linus Torvalds, recognizing his unparalleled role as the creator and lead developer of the Linux kernel. This ensures his continued dedication to guiding the kernel's overarching direction.&lt;/p&gt;

&lt;p&gt;The Foundation's impressive list of sponsors reads like a  stalwarts of the tech industry, underscoring Linux's massive commercial impact. Major players such as IBM, Red Hat, SUSE, Oracle, HP, Dell, Computer Associates, Intel, and Cisco Systems (among many others) financially back the organization. These companies, despite being competitors in the marketplace, understand that a healthy, evolving Linux ecosystem benefits them all.&lt;/p&gt;

&lt;p&gt;The Linux Foundation's core mission is twofold: &lt;em&gt;it aims to protect and accelerate the growth of Linux&lt;/em&gt;. It achieves this by providing vital legal protection for Linux developers &lt;strong&gt;(shielding them from potential patent disputes or intellectual property challenges)&lt;/strong&gt; and by establishing and promoting software development standards. This ensures consistency, compatibility, and high quality across the vast Linux landscape, fostering its continued innovation and widespread adoption across servers, embedded systems, cloud computing, and beyond.&lt;/p&gt;

&lt;h2&gt;
  
  
  Features 📋
&lt;/h2&gt;

&lt;p&gt;So, what makes Linux, born as a hobby and powered by community, such an appealing option for everyday users?  Aside from its sophisticated backend, several major elements define your interaction and experience with the operating system:&lt;/p&gt;

&lt;h3&gt;
  
  
  Diverse &amp;amp; Customizable Desktop Environments
&lt;/h3&gt;

&lt;p&gt;Unlike Windows or macOS, where the desktop experience is generally fixed, Linux provides a wide range of Desktop Environments.  You can select between polished, modern interfaces like GNOME and KDE Plasma, lightweight solutions like Xfce and LXQt, and even minimalist window managers.  Each DE has a distinctive style, feel, and workflow. With this unequaled freedom, you're not limited to a single design. You may create an environment that is exactly suited to your aesthetic preferences, system resources, and work style, changing everything from themes and icons to keyboard shortcuts and panel layouts.  You truly make the OS your own.&lt;/p&gt;

&lt;h3&gt;
  
  
  Robust Package Management
&lt;/h3&gt;

&lt;p&gt;Linux distributions have very efficient and centralized package managers (such as APT for Debian/Ubuntu, DNF/RPM for Fedora/Red Hat, and Pacman for Arch Linux).  These solutions manage the complete software lifecycle, including searching, installing, updating, and deleting applications and their dependencies using simple commands or graphical interfaces.  Say goodbye to manually downloading installers from websites.  Package managers ease software management, keep all of your programs up to date and secure, and automatically resolve complex dependencies, making software installation a joy.&lt;/p&gt;

&lt;h3&gt;
  
  
  Powerful Command-Line Interface (CLI)
&lt;/h3&gt;

&lt;p&gt;At its core, Linux has an extremely strong and efficient Command-Line Interface (CLI).  For those who desire it, scripts can be used to automate activities, conduct complex procedures rapidly, and administer distant servers efficiently.  While the CLI provides unrivaled control and efficiency for power users and developers, it is critical to emphasize its versatility for everyday use.  Modern Linux distributions provide user-friendly graphical interfaces, so you're never compelled to use the command line if you don't want to.  It is a powerful weapon at your disposal, not a necessary obstacle.&lt;/p&gt;

&lt;h3&gt;
  
  
  Security by Design
&lt;/h3&gt;

&lt;p&gt;From a user standpoint, Linux's security paradigm requires you to function as a normal user without administrative capabilities by default.  This drastically reduces malware's ability to gain system-wide control.  When combined with a rapid, community-driven update cycle, security patches for newly found vulnerabilities are frequently produced and deployed quickly.  This powerful security architecture results in fewer viruses and malware issues in your daily computing.  You may surf, email, and work with far greater confidence, often without the use of third-party antivirus software.&lt;/p&gt;

&lt;h3&gt;
  
  
  Open Source Ecosystem
&lt;/h3&gt;

&lt;p&gt;Beyond system utilities, Linux has a large and expanding ecosystem of high-quality, frequently free and open-source software. Most popular tasks have great open-source equivalents, including office suites like LibreOffice, image editors like GIMP, and video editors like Kdenlive, as well as web browsers like Firefox and Chrome.  Additionally, many proprietary software (such as Steam, Spotify, and VS Code) have native Linux equivalents. You receive powerful, full-featured applications with no licensing fees. This access to a large software library enables a wide range of activities, from productivity and creativity to gaming and development, with greater transparency and community support than proprietary alternatives.&lt;/p&gt;

&lt;h3&gt;
  
  
  Performance on Diverse Hardware
&lt;/h3&gt;

&lt;p&gt;Linux is extremely efficient and can run smoothly on a wide range of hardware, from cutting-edge workstations to older, resource-constrained devices.  Its versatility enables you to remove unneeded components while improving it for unique systems. This implies you can revitalize aging laptops or PCs that struggle with resource-intensive operating systems. It provides a practical, high-performance alternative that extends hardware lifespan and reduces e-waste.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>linux</category>
      <category>ubuntu</category>
      <category>opensource</category>
    </item>
    <item>
      <title>The Bigbang 💥</title>
      <dc:creator>PARTHIB KUMAR DEB</dc:creator>
      <pubDate>Mon, 28 Jul 2025 11:17:20 +0000</pubDate>
      <link>https://forem.com/parthib_deb23/the-creators-excellence-5bbm</link>
      <guid>https://forem.com/parthib_deb23/the-creators-excellence-5bbm</guid>
      <description>&lt;h2&gt;
  
  
  Introduction 🏁
&lt;/h2&gt;

&lt;p&gt;Welcome, fellow explorers 👋, to the inaugural post of &lt;strong&gt;Linux Empire&lt;/strong&gt;. This isn't just a series of articles; think of it as a fascinating web-series where each blog post is an episode, gradually unveiling the remarkable story that shaped the open-source operating system we rely on today. In this first episode, &lt;strong&gt;The Big Bang&lt;/strong&gt;, we're heading back to the 20th century 🕰️. We'll explore the early rivalries among tech giants — a significant period that laid the groundwork for modern computing.&lt;/p&gt;

&lt;p&gt;I encourage you to accompany me on this voyage ⛵ to truly understand Linux's motive and its profound impact on computing, from past centuries to future inventions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Mainframes and Multics 🏬
&lt;/h2&gt;

&lt;p&gt;In the mid-20th century, computing was dominated by &lt;strong&gt;massive mainframes and time-consuming punch card batch processing&lt;/strong&gt;, with programmers waiting hours for results.  This inefficient, solitary technique inspired the concept of interactive time-sharing.  The enormous &lt;em&gt;Multics (MULTiplexed Information and Computer System)&lt;/em&gt; project was born, a large "computer utility" proposed by &lt;strong&gt;MIT&lt;/strong&gt;, &lt;strong&gt;Bell Labs&lt;/strong&gt;, and &lt;strong&gt;General Electric&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Multics was designed to store and retrieve large data sets, to be used by many different people at once, and to help them communicate. However, Multics' overwhelming complexity was destined for failure. It suffered from the &lt;em&gt;second-system effect&lt;/em&gt; , which occurred when too many revolutionary innovations were included at the same time, resulting in a bloated and constantly delayed system. Development was extremely slow, and the ongoing need for more powerful, costlier hardware rendered it financially unsustainable for Bell Labs. The frustration of working with a system that was constantly behind schedule and difficult to manage eventually drove Bell Labs to withdraw in 1969, leaving a critical void and a clear lesson in over-engineering.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Bell Minds 💡
&lt;/h2&gt;

&lt;p&gt;During that era, the extensive telecommunications giant &lt;strong&gt;AT&amp;amp;T&lt;/strong&gt;, often called &lt;strong&gt;Ma Bell&lt;/strong&gt;, held a virtual monopoly over telephone services in the USA. Its extensive research arm, &lt;strong&gt;Bell Labs&lt;/strong&gt;, had been part of the ambitious Multics project and it was located in Murray Hill, New Jersey. However, after its failure , Bell Labs employees &lt;strong&gt;Ken Thompson&lt;/strong&gt; and &lt;strong&gt;Dennis Ritchie&lt;/strong&gt; embarked on their own, setting out to create an operating system that would offer a simpler, more efficient environment for developing software - &lt;strong&gt;The UNIX&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The UNIX Era 🌐
&lt;/h2&gt;

&lt;p&gt;The UNIX (or &lt;em&gt;UNICS - UNiplexed Information and Computing System&lt;/em&gt;) operating system was born out of a collaborative, developer-driven environment. This project was Heavily funded by the &lt;strong&gt;Department of Defense’s Advanced Research Projects Agency (then known as ARPA)&lt;/strong&gt;. Its inception was not motivated by commercial needs or corporate requirements, but by a sheer desire to remove the actual constraints experienced by programmers while building software. AT&amp;amp;T provided free Unix samples to university students in the 1970s.  Unix outperformed all other operating systems in terms of satisfaction among researchers and students.  The system was cost-effective, adaptable, and used low-cost hardware.  It met their needs better than any other available option.  Universities lacked the necessary hardware to compete with Unix operating systems, which were either not "free," or were still being developed in labs.&lt;/p&gt;

&lt;p&gt;In his seminar 1980 lecture, "The Evolution of the UNIX Time-sharing System," Dennis Ritchie eloquently summed up the spirit that ignited UNIX. He stated:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"What we wanted to preserve was not just a good environment in which to do programming, but a system around which a fellowship could form. We knew from experience that the essence of communal computing as supplied by remote-access, time-shared machines is not just to type programs into a terminal instead of a keypunch, but to encourage close communication."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;UNIX's foundation included many crucial elements:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;h3&gt;
  
  
  The Shell 🔥
&lt;/h3&gt;

&lt;p&gt;From its inception, UNIX created a rudimentary &lt;strong&gt;command-line interpreter&lt;/strong&gt; known as the &lt;strong&gt;shell&lt;/strong&gt;, which served as the primary interface for user interaction.  Rather than a modern graphical user interface, users typed commands directly into the shell, which translated them into actions that the kernel could perform. It was &lt;strong&gt;The Thompson shell (sh)&lt;/strong&gt;, which was included in the first UNIX systems. It appeared in &lt;strong&gt;1971 with Version 1&lt;/strong&gt; and It was written by Ken Thompson. However, when most people emphasize the Shell's potential for automation and complex scripting, they are typically referring to &lt;strong&gt;the Bourne Shell (sh)&lt;/strong&gt;. It was Created by &lt;strong&gt;Stephen Bourne&lt;/strong&gt; and introduced with &lt;strong&gt;UNIX Version 7 in 1979&lt;/strong&gt;. The Bourne Shell brought a revolution in UNIX, transforming the shell into a full-fledged programming language with numerous advanced capabilities.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;h3&gt;
  
  
  The Unix filesystem 📂
&lt;/h3&gt;

&lt;p&gt;The &lt;strong&gt;innovative filesystem&lt;/strong&gt; was a key feature of UNIX's architecture. It provided a remarkably easy approach to organize files and folders thanks to its hierarchical structure, which allowed several layers of subdirectories. Furthermore, UNIX made external administration significantly easier by representing devices like disks and tapes as distinct &lt;strong&gt;device files&lt;/strong&gt; that could be read and changed like any other file in the directory tree.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;h3&gt;
  
  
  Redirection ⤴️
&lt;/h3&gt;

&lt;p&gt;Early UNIX was known for its beautiful command-line interface, which included input redirection and pipes. &lt;em&gt;The &amp;gt; sign allows users to redirect command output to a file&lt;/em&gt;. Subsequently, the pipe (|) operator was developed, &lt;em&gt;allowing the output of one command to be fed directly into another&lt;/em&gt;, resulting in strong data flows.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;h3&gt;
  
  
  Portability 🔦
&lt;/h3&gt;

&lt;p&gt;UNIX's outstanding portability came from its elegant design.  UNIX abstracted hardware details by treating &lt;em&gt;device drivers as files within the filesystem tree&lt;/em&gt; , providing applications with a uniform interface.  This meant that only the drivers needed to be modified to migrate UNIX to new platforms, while the application programs stayed untouched - a big step forward in cross-platform compatibility.  Realizing this potential required a high-level programming language, &lt;em&gt;thus Dennis Ritchie created the C programming language&lt;/em&gt;.  In a watershed event in 1973, UNIX was rebuilt in C.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  USA vs AT&amp;amp;T ⚡
&lt;/h2&gt;

&lt;p&gt;For most of the 20th century, AT&amp;amp;T had a near-absolute, government-sanctioned monopoly on the United States telephone system.  This extensive control included local and long-distance services, as well as the manufacture of most telephone equipment through its subsidiary, Western Electric. Indeed, companies that would later become giants, such as Verizon and Qwest, were once integral parts of this unified system.  Given AT&amp;amp;T's enormous telecommunications market strength, the US government became increasingly concerned that an unconstrained "Ma Bell" would dominate the massive computer sector.  As a result, the &lt;strong&gt;US Department of Justice&lt;/strong&gt; filed a broad antitrust lawsuit against AT&amp;amp;T in 1974. Before the divestiture of AT&amp;amp;T, it was restricted to sell computer systems in US. For this reason, the UNIX source code found its way into universities, licensed for only a nominal fee. &lt;strong&gt;AT&amp;amp;T only distributed UNIX as source code, so users had to compile it themselves&lt;/strong&gt;. But after 1984, divestiture was behind AT&amp;amp;T and it was ready to really start selling UNIX. This caused the formation of a separate UNIX Laboratory between AT&amp;amp;T and a part of it which were invested in the making of UNIX from beginning, which moved out of Murray Hill and down the road to Summit, New Jersey.&lt;/p&gt;

&lt;h2&gt;
  
  
  Berkeley Software Distribution 😄
&lt;/h2&gt;

&lt;p&gt;UNIX Version 6 was the first version made &lt;strong&gt;generally accessible&lt;/strong&gt; outside of Bell Laboratories in 1975. The University of California at Berkeley developed the first significant UNIX variation using this early UNIX source code. They referred to it as the Berkeley Software Distribution (BSD). Over the next decade, the BSD and Bell Labs versions of UNIX diverged. BSD maintained the free-flowing, share-the-code approach of the early Bell Labs UNIX, while AT&amp;amp;T focused on commercializing UNIX.&lt;/p&gt;

&lt;h2&gt;
  
  
  Commercializing UNIX 💰
&lt;/h2&gt;

&lt;p&gt;Initially, Unix spread widely because AT&amp;amp;T licensed its source code cheaply to universities. This freedom, however, led to many different versions of Unix being created, sparking the &lt;strong&gt;UNIX Wars&lt;/strong&gt; as these versions often didn't work well together.&lt;/p&gt;

&lt;p&gt;Following the significant legal developments of 1974, including AT&amp;amp;T's separation (which removed constraints), AT&amp;amp;T felt it was time to profit from Unix and reclaim control.  Their plan was sound: they attempted to persuade major computer manufacturers such as HP, Sun Microsystems, and IBM to use AT&amp;amp;T's version of Unix (System V) as their primary operating system. To make this happen and bring order to the chaos, AT&amp;amp;T began defining clear rules for what a system had to do to still be called "UNIX." This effort led to key standards like the &lt;strong&gt;Portable Operating System Interface (POSIX)&lt;/strong&gt; and AT&amp;amp;T's own &lt;strong&gt;UNIX System V Interface Definition (SVID)&lt;/strong&gt;. These specifications allowed different vendors to create compatible Unix systems.&lt;/p&gt;

&lt;p&gt;Interestingly, despite all this, AT&amp;amp;T continued to distribute Unix source code. It wasn't until 1992, when AT&amp;amp;T formed a joint company with Novell or Univel (later fully sold to Novell), that a ready-to-use, commercial version of UNIX called UnixWare was finally sold directly from the source code. Ultimately, these very same standardization documents (POSIX and SVID) also served as crucial guides for the creation of Linux.&lt;/p&gt;

&lt;h2&gt;
  
  
  AT&amp;amp;T vs BSD 😞
&lt;/h2&gt;

&lt;p&gt;For a time, the legendary BSD project was the strongest contender to become the most popular open-source kernel, possibly even before Linux.  By the late 1980s, developers at the University of California, Berkeley (UC Berkeley) had precisely recreated the majority of the UNIX source code they had acquired a decade prior. UC Berkeley's independently built UNIX-like code, Net/1, was released in 1989, followed by Net/2 in 1991.  In 1992, just as they were about to distribute a complete, UNIX-like operating system free of all AT&amp;amp;T code, &lt;strong&gt;AT&amp;amp;T filed a big lawsuit against them.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The suit aggressively claimed that &lt;em&gt;BSD's software was developed using trade secrets stolen from AT&amp;amp;T's proprietary UNIX system.&lt;/em&gt; It's crucial to understand that BSD developers had meticulously rewritten the code to avoid direct copying, primarily focusing on circumventing AT&amp;amp;T's copyrights, which were then the main legal protection for the UNIX code. &lt;em&gt;Some legal and historical observers even suggest that if AT&amp;amp;T had instead protected its core UNIX concepts with patents, the landscape might be entirely different today — perhaps there would be no Linux or any other UNIX clone.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;While the lawsuit was eventually dropped when Novell acquired UNIX System Laboratories from AT&amp;amp;T in 1994, the damage was done. During that critical two-year period, the pervasive fear and doubt surrounding the legality of the BSD code caused it to lose significant momentum within the burgeoning open-source community. This unfortunate legal battle ultimately created the vacuum that Linux would soon fill.&lt;/p&gt;

&lt;h2&gt;
  
  
  GNU Appears 😇
&lt;/h2&gt;

&lt;p&gt;Long before the pivotal lawsuit against BSD, another crucial player entered the market: &lt;strong&gt;The GNU Project&lt;/strong&gt;, launched in 1984. This ambitious undertaking was started by &lt;strong&gt;Richard M. Stallman&lt;/strong&gt;, and its name itself is a recursive acronym: "GNU is Not UNIX."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GNU's key objective was to embark on a comprehensive re-coding of the entire UNIX operating system&lt;/strong&gt;, with the basic idea that it may be &lt;em&gt;freely supplied to anyone&lt;/em&gt;.  Developers immediately discovered that they could achieve the same outcomes with wholly new code, and in many cases, their freshly developed components even outperformed the original UNIX versions.  This open development strategy was groundbreaking: because everyone could openly inspect the code, poorly written pieces could be quickly changed, or even replaced with better alternatives over time.&lt;/p&gt;

&lt;p&gt;It's important to note the evolving terminology here. Over time, the term "free software" – which is still preferred by the &lt;strong&gt;Free Software Foundation (&lt;a href="https://www.fsf.org/" rel="noopener noreferrer"&gt;https://www.fsf.org/&lt;/a&gt;)&lt;/strong&gt; – has largely been supplemented by &lt;em&gt;open source software&lt;/em&gt;. The latter term is championed by the Open Source Initiative.&lt;/p&gt;

&lt;h2&gt;
  
  
  The GPL License 💫
&lt;/h2&gt;

&lt;p&gt;The GNU project developed the GNU General Public License (GPL) specifically to dictate how free software should be treated and distributed. Although various other licenses exist, offering different methods for preserving software freedom, the GPL stands out as the most prominent, and it is the license under which the Linux kernel is released. Key principles of the GNU GPL include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Author's Rights Retained&lt;/strong&gt;: The original creator of the software retains their copyright and ownership, even while granting extensive freedoms to others.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Freedom to Distribute and Modify&lt;/strong&gt;: Users are free to use, modify, and redistribute the GNU software, even incorporating it into their own projects. Crucially, any distribution of the software (modified or not) must include its source code or make it easily accessible.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Copyleft Principle (Preserved Freedoms)&lt;/strong&gt;: If you distribute or even sell software under the GPL, you must ensure that all future recipients receive the same freedoms you did. This means the GPL's terms must accompany the software, giving everyone the right to access, change, and redistribute the source code.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The GNU GPL explicitly states &lt;strong&gt;there is no warranty on the software&lt;/strong&gt;. This means the original developers are under no obligation to fix any issues that may arise. However, numerous organizations, ranging from small businesses to large corporations, do offer paid support services (often through subscriptions) for GNU software.&lt;/p&gt;

&lt;h2&gt;
  
  
  Open Source Kernel ⭐
&lt;/h2&gt;

&lt;p&gt;Despite its remarkable success in developing thousands of essential UNIX utilities, the GNU Project critically struggled to produce its own working kernel. Its ambitious efforts to build an open-source kernel, known as the GNU Hurd (link: &lt;a href="http://www.gnu.org/software/hurd" rel="noopener noreferrer"&gt;www.gnu.org/software/hurd&lt;/a&gt;), proved largely unsuccessful in gaining widespread adoption, preventing it from becoming the dominant open-source kernel.&lt;/p&gt;

&lt;h2&gt;
  
  
  MINIX and the void 😕
&lt;/h2&gt;

&lt;p&gt;At the beginning of the 1990s, the ideal version of a truly free and open-source operating system, free of proprietary licenses and legal issues, remained frustratingly out of reach.  In this terrain of imperfect solutions and legal issues, stepped MINIX, a tiny, Unix-like operating system built by Andrew Tanenbaum in 1987. MINIX soon became a crucial teaching tool, created especially for academic purposes.  MINIX's primary innovation was a microkernel architecture: unlike previous systems' monolithic kernels, the tiny microkernel handled only basic tasks like &lt;strong&gt;inter-process communication (IPC)&lt;/strong&gt;, &lt;strong&gt;memory management&lt;/strong&gt;, and &lt;strong&gt;process scheduling&lt;/strong&gt;, while other services ran as distinct, separated processes. However, &lt;strong&gt;Linus Benedict Torvalds&lt;/strong&gt;, who was a student at the &lt;strong&gt;University of Helsinki&lt;/strong&gt; during this time-period, delved into MINIX, he quickly identified its limitations for practical, cutting-edge development. He recognized that while great for learning, MINIX wasn't designed for the robust, high-performance computing he sought.&lt;/p&gt;

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

&lt;p&gt;This unique convergence of factors – the GNU kernel's continued absence, BSD's legal battle, and the practical and licensing constraints of MINIX – created a palpable void and a clear opportunity. It directly inspired Linus Torvalds to embark on creating what would become Linux: a truly free, powerful, and unencumbered Unix-like kernel.&lt;/p&gt;

</description>
      <category>linux</category>
      <category>ubuntu</category>
      <category>bash</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Stuck with Golang installation ? Can't decide how to fix your toolchains ? You just need this blog</title>
      <dc:creator>PARTHIB KUMAR DEB</dc:creator>
      <pubDate>Thu, 10 Apr 2025 15:28:50 +0000</pubDate>
      <link>https://forem.com/parthib_deb23/stuck-with-golang-installation-cant-decide-how-to-fix-your-toolchains-you-just-need-this-blog-4kl5</link>
      <guid>https://forem.com/parthib_deb23/stuck-with-golang-installation-cant-decide-how-to-fix-your-toolchains-you-just-need-this-blog-4kl5</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/parthib_deb23/hasslefree-version-management-of-golang-584j" class="crayons-story__hidden-navigation-link"&gt;Hasslefree version management of Golang&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/parthib_deb23" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F987800%2Fafa3ba66-7d14-4347-b410-096ba6fde2eb.jpg" alt="parthib_deb23 profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/parthib_deb23" class="crayons-story__secondary fw-medium m:hidden"&gt;
              PARTHIB KUMAR DEB
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                PARTHIB KUMAR DEB
                
              
              &lt;div id="story-author-preview-content-2396615" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/parthib_deb23" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F987800%2Fafa3ba66-7d14-4347-b410-096ba6fde2eb.jpg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;PARTHIB KUMAR DEB&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/parthib_deb23/hasslefree-version-management-of-golang-584j" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Apr 10 '25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/parthib_deb23/hasslefree-version-management-of-golang-584j" id="article-link-2396615"&gt;
          Hasslefree version management of Golang
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/go"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;go&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/backenddevelopment"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;backenddevelopment&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/microservices"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;microservices&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/parthib_deb23/hasslefree-version-management-of-golang-584j" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;3&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/parthib_deb23/hasslefree-version-management-of-golang-584j#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              2&lt;span class="hidden s:inline"&gt; comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            8 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>go</category>
      <category>backenddevelopment</category>
      <category>webdev</category>
      <category>microservices</category>
    </item>
    <item>
      <title>Hasslefree version management of Golang</title>
      <dc:creator>PARTHIB KUMAR DEB</dc:creator>
      <pubDate>Thu, 10 Apr 2025 11:03:41 +0000</pubDate>
      <link>https://forem.com/parthib_deb23/hasslefree-version-management-of-golang-584j</link>
      <guid>https://forem.com/parthib_deb23/hasslefree-version-management-of-golang-584j</guid>
      <description>&lt;h1&gt;
  
  
  📌 Introduction
&lt;/h1&gt;

&lt;p&gt;Hey folks , it's me 😊. Well , this time I have come with an awesome as well as debatable topic which roam around developer's minds 🧠. Developers who are passionate about building scalable backends with Golang , often suffer from keeping its multiple versions alive in a system 😵‍💫.Golang's installation doesn't discuss this issue elaborately. So there are scattered opinions and methods to arrange the versions together. Some refers to use an external package called - &lt;strong&gt;gvm&lt;/strong&gt; , but believe me , it has its own faults. gvm is only suitable to download older go versions but its not suitable to install new ones. In this blog 🖋️ , I am going to discuss my steps and key takeaways &lt;strong&gt;to manage golang's different version in my system, without using any external packages or libraries&lt;/strong&gt;. I have done this in my WSL ubuntu , so it will surely work in your native LINUX (can't say more about WINDOWS , sorry!! 😼). But Before that Let's discuss what is golang and how it became so popular&lt;/p&gt;

&lt;h1&gt;
  
  
  📌 A little bit about Golang
&lt;/h1&gt;

&lt;p&gt;Go is a general-purpose programming language that was created by Google in 2007.  Google created Go to serve as a &lt;em&gt;contemporary substitute for C&lt;/em&gt;. Well , it couldn't do that but got its own position. Nowadays ,it is mostly used to create reliable &lt;strong&gt;backends&lt;/strong&gt; 💿 of various applications that require characteristics like &lt;strong&gt;concurrency&lt;/strong&gt; for scalability. Go is a &lt;strong&gt;compiled language so it doesn't need the overhead of any virtual machine&lt;/strong&gt; . The standard go toolchain builds the &lt;em&gt;filename.go&lt;/em&gt; code into bytecode . Does Golang follow any precise architecture like any framework ? Yes . The official docs says that a golang project must have 3 folders : &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;bin/ 📂&lt;/strong&gt; (for storing the binary executables of your go files)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;pkg/ 📂&lt;/strong&gt; (the packages which you install from any server like GitHub , golang , bitbucket)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;src/ 📂&lt;/strong&gt; (the folder where you create your go files). 
But do you know what's the most interesting part of it ? &lt;strong&gt;Your Golang source project is itself built by this architecture&lt;/strong&gt;, means the whole Golang installation creates a folder where you will see these 3 folders inside it and if you look into src/ folder you will go files, wow , so self-dependent language it is. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fedzzdk11o93bk6n6sqnw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fedzzdk11o93bk6n6sqnw.png" alt=" " width="800" height="19"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But this same solution creates another problem which I am going to tell later on in the &lt;strong&gt;what went wrong&lt;/strong&gt; section. Now, be comfortable with some terminologies around golang -&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Toolchain ⛓️‍💥&lt;/strong&gt; - A set of essential tools provided by the Go programming language for developing, building, testing, and managing Go code. It's the foundation you rely on to work with Go effectively. When you install a go version in Linux , its corresponding toolchain is downloaded inside the source project folder (specifically in the &lt;em&gt;pkg/mod/golang.org&lt;/em&gt;)&lt;br&gt;
Based on this primary version and toolchain , you can only download other golang toolchains and use them.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;GO ENV 🌳&lt;/strong&gt; - A set of environment variables that go borrow and set inside your Linux system . Few important ones among them are -&lt;br&gt;
A. &lt;strong&gt;&lt;em&gt;GOROOT&lt;/em&gt;&lt;/strong&gt; - The entire Go installation lives here&lt;br&gt;
B. &lt;strong&gt;&lt;em&gt;GOPATH&lt;/em&gt;&lt;/strong&gt; - The workspace where Go will download its packages&lt;br&gt;
C. &lt;strong&gt;&lt;em&gt;GOBIN&lt;/em&gt;&lt;/strong&gt; - The &lt;em&gt;bin/&lt;/em&gt; folder inside GOPATH&lt;br&gt;
D. &lt;strong&gt;&lt;em&gt;GOTOOLCHAIN&lt;/em&gt;&lt;/strong&gt; - it decides which other toolchains of golang is eligible to install&lt;br&gt;
E. &lt;strong&gt;&lt;em&gt;GO111MODULE&lt;/em&gt;&lt;/strong&gt; - Helps to download other golang toolchains&lt;br&gt;
F. &lt;strong&gt;&lt;em&gt;GOPROXY&lt;/em&gt;&lt;/strong&gt; -  configure to use a module proxy server. Instead of directly downloading dependencies from their version control system repositories (like GitHub, Bitbucket), Go will fetch them from the specified proxy.&lt;br&gt;
G. &lt;strong&gt;&lt;em&gt;GOSUMDB&lt;/em&gt;&lt;/strong&gt; - Helps to check the integrity and authenticity of downloaded modules by verifying the checksum of each package and a database stores this checksums&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Now till now , if I have created some interests to learn golang within you , you can follow my tutorial in GitHub - &lt;a href="https://github.com/PARTHIB-DEB/Go-Tutorial" rel="noopener noreferrer"&gt;Tutorial&lt;/a&gt;. No doubt , you will code 'Hello World' in Golang if you follow my tuts 😄.&lt;/p&gt;

&lt;p&gt;Now without any further story-telling , let's hop into the main chapter&lt;/p&gt;

&lt;h1&gt;
  
  
  📌 What went wrong
&lt;/h1&gt;

&lt;p&gt;If you have never installed golang into your system , means you are a newborn 🧒 to golang's world . No worries my friend , you are also welcomed . You will directly get the nutritious foods 🍲without tasting other foods.&lt;/p&gt;

&lt;p&gt;But if you've installed golang into your system from the official website , at least once , then you are my type of guy 🫂 . In the previous section , I have told you about golang's folder architecture . Now the problem occurs when &lt;em&gt;go claims to create its own environment&lt;/em&gt;. Peeps who are coming from python , developed some stuffs there , knows about &lt;strong&gt;Virtual Environment&lt;/strong&gt;. This &lt;strong&gt;venv&lt;/strong&gt; is an isolated area inside the project's physical location where you do install some libraries , write some code , get your job done , without actually cluttering the memory with these libraries permanently . &lt;br&gt;
&lt;em&gt;But that doesn't happen for Golang , golang tell us to follow a specific architechture which is also being followed by itself&lt;/em&gt;. So when you make a golang based project and follows the architecture (bin-pkg-src) , &lt;strong&gt;you are passively recreating the go source project :)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Sounds Crazy, right? Let's dissect a real life scenario - &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Let's say , you have downloaded go1.22.x version in your linux to learn golang . You have unzipped the tar file in /usr/local location and that's your GOROOT which you have appended in the PATH environment variable . For GOPATH , you just gave the location of your go-programs folder because the golang's docs doesn't really say anything about it. Your go-programs folder reside in the &lt;strong&gt;~/&lt;/strong&gt; folder , mind it. Your go-programs folder follows &lt;strong&gt;bin-pkg-src&lt;/strong&gt; architecture and yeah! you think you have done correct , because what will be the location other than your folder where you will download necessary go packages inside &lt;strong&gt;pkg/&lt;/strong&gt; folder .&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It has been 2 months and you have done some coding in golang (created some go files in &lt;strong&gt;src/&lt;/strong&gt; folder , downloaded some packages in your own folder) . Now you have decided to install another version of golang by using  &lt;strong&gt;go install golang.org/dl/go1.23.x....&lt;/strong&gt; &amp;amp; &lt;strong&gt;go1.23.x.. download&lt;/strong&gt; (as per the docs). Maybe you succeed . You have also kept in mind that this is just another toolchain which is being installed using the base source project of version 1.22.x . So you know when you will do &lt;strong&gt;go version&lt;/strong&gt; it will throw 1.22.x but when you run &lt;strong&gt;go1.23.x version&lt;/strong&gt; you EXPECT to see 1.23.x but NO!! That doesn't happen. Instead you see , &lt;strong&gt;command not found&lt;/strong&gt; from bash.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;While inspecting in &lt;strong&gt;~/&lt;/strong&gt; folder 📂 , you see a sdk/ 📂 folder. This folder contains only &lt;strong&gt;bin/ pkg/&lt;/strong&gt; and inside &lt;strong&gt;pkg/mod/golang.org&lt;/strong&gt; there are 2 toolchains. You became shocked , how can it be possible 🫢, even after installation of new toolchain you can't use it !!&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;So you decided to remove all go source projects from &lt;strong&gt;/usr/local to sdk/&lt;/strong&gt; to just install the new version , because you thought that as you have hardcoded the environment variables GOROOT in .bashrc or .zshrc , that's became the problem and you have to install the new go 1.23.x from source. You do it , you changes the GOROOT but &lt;strong&gt;don't change GOPATH&lt;/strong&gt; , &lt;em&gt;because it targets your go-programs where your packages will be installed . Seems simple&lt;/em&gt; . Well that's the &lt;em&gt;actual reason of failure&lt;/em&gt; . After installation when you will run &lt;strong&gt;go version&lt;/strong&gt; you will expect to see 1.23.x but instead , it &lt;strong&gt;automatically starts to download go 1.22.x&lt;/strong&gt; . That &lt;strong&gt;go1.22.x is now a toolchain inside &lt;em&gt;go1.23.x/pkg/mod/golang.org&lt;/em&gt; but its the default and if you have to use your go1.23.x , you have to create a go.mod file manually without using &lt;em&gt;go mod init....&lt;/em&gt;.&lt;/strong&gt; &lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;At this point , you are pretty much messed up 😖 .You are having terrible thoughts 😡. But wait! DON'T BREAK YOUR PC or LAPTOP :), there is definitely a way to get rid of this problem. You can also think about &lt;strong&gt;how unorganized your go source project is , inside your Linux system&lt;/strong&gt; , it's terrible! and t*&lt;em&gt;he go docs doesn't really address this problem.&lt;/em&gt;* That's why I have come here to show you the right way , the perfect way to manage your go-programs and go-source project .&lt;br&gt;
Let's go for the solution&lt;/p&gt;
&lt;h1&gt;
  
  
  📌 Solution
&lt;/h1&gt;

&lt;p&gt;A &lt;strong&gt;short disclaimer to you&lt;/strong&gt; : I have decided to keep both &lt;strong&gt;go source project and my own go programs both in ~/ directory&lt;/strong&gt; but you can keep them different locations. But remember , other than ~/ directory , &lt;strong&gt;all directories need strict permission and its can be accessed by sudo only , you will have to change the permission and that's harmful for your system because for you tiny go source code that entire system directory became prone to malicious attacks&lt;/strong&gt;. So its safe to do everything inside ~/ directory&lt;/p&gt;

&lt;p&gt;If you have installed and used golang for quite a while . Remove all your go folders (source and own programs) by &lt;strong&gt;sudo rm -rf...&lt;/strong&gt;. Then run this two commands in your Linux system ,&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;find . -name go.mod&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;This command will find if there is anything with go.mod inside every folder of your Linux system . Will quickly execute and return nothing if there is no go.mod . Why you need to do this ? because go.mod is the requirements.txt for golang , except it also stores the snapshot of the golang version which forces to download that exact version of toolchain in the previous section . So your system should not have any of this go.mod&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;env | grep GOROOT&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;This command will show if there is any variable named &lt;strong&gt;GOROOT&lt;/strong&gt; inside your &lt;strong&gt;.bashrc or .zshrc&lt;/strong&gt; . If it gives some output , just open the &lt;strong&gt;.bashrc or .zshrc and remove all GOROOT,GOPATH,PATH (that one which connects the GOROOT to PATH , not other PATH), GOxx variables&lt;/strong&gt; and do &lt;strong&gt;source ~/.bashrc&lt;/strong&gt;. It will be better , if you restart the system.&lt;/p&gt;

&lt;p&gt;Now your system is ready to begin . Let's make folder 📂 by naming something like &lt;strong&gt;go-toolchains/&lt;/strong&gt; or &lt;strong&gt;go-source/&lt;/strong&gt; where your entire go source project will reside . Inside that folder , create 2 folders &lt;strong&gt;source/&lt;/strong&gt; and &lt;strong&gt;packages/&lt;/strong&gt;. This &lt;strong&gt;source/ will be your new GOROOT&lt;/strong&gt; and &lt;strong&gt;packages/ will be your new GOPATH&lt;/strong&gt;. NO , this GOPATH will have no connection to your go-programs ,will come up to that later. Inside &lt;strong&gt;packages/&lt;/strong&gt; make 2 folders - &lt;strong&gt;bin/, pkg/&lt;/strong&gt; (&lt;em&gt;because here you won't write any go files so you don't need any &lt;strong&gt;src/&lt;/strong&gt; folder&lt;/em&gt;)&lt;/p&gt;

&lt;p&gt;You came inside the &lt;strong&gt;source/&lt;/strong&gt; folder again , downloaded the &lt;em&gt;tar.gz&lt;/em&gt; file here and you need just one more command to run ,&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;tar --strip-components=1 -xzf go1.24.2.linux-amd64.tar.gz&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;The argument  &lt;strong&gt;--strip-component&lt;/strong&gt; doesn't make another folder but makes the existing one as the source folder by flooding every files and folders inside it , similar like &lt;strong&gt;.&lt;/strong&gt; in python where the source project is flooded inside the existing directory.&lt;/p&gt;

&lt;p&gt;Now open then .bashrc or .zshrc in your favourite editor with &lt;strong&gt;sudo&lt;/strong&gt; command (precisely ~/.bashrc or ~/.zshrc) . You have to paste these environment variables whose explanations I have given long before in this blog. You should not change the values of the variables&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  export GOROOT="$HOME/go-toolchains/source"   
  export GOPATH="$HOME/go-toolchains/packages"
  export GOBIN="$GOPATH/bin"                
  export PATH="$GOROOT/bin:$GOBIN:$PATH"    
  export GOTOOLCHAIN='auto'       # Check before paste
  export GO111MODULE='on'         # Check before paste
  export GOPROXY="https://proxy.golang.org,direct"    # Check before paste
  export GOSUMDB="sum.golang.org"   # Check before paste
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;&lt;strong&gt;NOTE&lt;/strong&gt;&lt;/em&gt; : Do &lt;strong&gt;go env&lt;/strong&gt; and see if &lt;strong&gt;GOTOOLCHAIN&lt;/strong&gt; , &lt;strong&gt;GO111MODULE&lt;/strong&gt; , &lt;strong&gt;GOPROXY&lt;/strong&gt;, &lt;strong&gt;GOSUMDB&lt;/strong&gt; is previously set to the values mentioned in the snippet given above , if not then change it to these values.&lt;/p&gt;

&lt;p&gt;Save it inside the file , do exit from the editor and run &lt;strong&gt;source ~/.bashrc&lt;/strong&gt; or &lt;strong&gt;source ~/.bashrc&lt;/strong&gt;. Its preferred to do a restart again.&lt;/p&gt;

&lt;p&gt;Now when you will write &lt;strong&gt;go version&lt;/strong&gt;, you will see go1.23.x . Not only that , if you install any other toolchains using &lt;strong&gt;go install golang.org/dl/go....&lt;/strong&gt; &amp;amp; &lt;strong&gt;go...download&lt;/strong&gt; , you will see it has been installed inside &lt;strong&gt;go-toolchains/packages/pkg/mod/golang.org&lt;/strong&gt;. Also if you do &lt;strong&gt;go... version&lt;/strong&gt;, you will definitely see the new toolchain and it's version whereas if you do &lt;strong&gt;go version&lt;/strong&gt;, you will see the base version.&lt;/p&gt;

&lt;h1&gt;
  
  
  📌 Conclusion
&lt;/h1&gt;

&lt;p&gt;That's it. Now you can download your go-programs which may have some other versions and no worries , your base-version will help to install that toolchain . You can see how this solution &lt;strong&gt;not only solves the problem of version conflict but also keeps things in a single location and restricts to mix up with your own go-program folder.&lt;/strong&gt; With that said , now it's time to bid goodbye 👋 . will meet in some other beautiful day.&lt;/p&gt;

</description>
      <category>go</category>
      <category>backenddevelopment</category>
      <category>webdev</category>
      <category>microservices</category>
    </item>
    <item>
      <title>Unlock Web : The Client-Server</title>
      <dc:creator>PARTHIB KUMAR DEB</dc:creator>
      <pubDate>Wed, 24 Jan 2024 17:48:09 +0000</pubDate>
      <link>https://forem.com/parthib_deb23/web-101-the-client-server-3cia</link>
      <guid>https://forem.com/parthib_deb23/web-101-the-client-server-3cia</guid>
      <description>&lt;p&gt;Hey Fellas 👋. Welcome Back to my blog 😄. So this blog is going to deal about how actually your browser requests data and get it as a cluster of html pages 💻. No , I am not gonna describe in a bore bookish way 📖. Rather , I will mention the members that help to create this connection , in a pointwise manner. It is going to be a precise walkthrough - which will grow your interest about how data transmission is done from far-away server to your webpage. This is common in any development, and important if you decided to go for web development ,but jumped upon it without any prior experience 🔰 😃. Let's start , shall we?&lt;/p&gt;

&lt;h3&gt;
  
  
  💡&lt;u&gt; Layered Networking Architechture 🌭&lt;/u&gt;
&lt;/h3&gt;

&lt;p&gt;Before hopping into any fancy terms ,let me tell that, all developments are somehow came from a core computer science subject - &lt;strong&gt;Computer Networking 🗼 🗼&lt;/strong&gt; Although that's another world, but I am going to highlight 🔦 only important concepts that actually get utilised in every corner of various developments. So , computer network majorly plays with some architechtures which actually helps to send your data or request 🌿 🌿. Few of you if know about this , there are 2 types of architechtures - &lt;strong&gt;OSI architechture (Open System Interconnections , came at late 1970s)&lt;/strong&gt; and &lt;strong&gt;TCP/IP architechture (Transmission Control Protocol / Internet Protocol , came at 1960s)&lt;/strong&gt;. Though these two big models have their own layerwise differences,  but we will just dive into two specific common layers - &lt;strong&gt;Application Layer&lt;/strong&gt; 🌍 and &lt;strong&gt;Transport Layer&lt;/strong&gt; 🚐. Here Application layer is the topmost layer and transport layer is just behind it. Remember, the upper layers in these architechtures are always dependent on its lower ones - that's how request message transcends , breaks into pieces and attached by different headers. In the same way , inside the destination device , the lower layers do certain stuffs , based on the attached headers and uplifts the data-packets into the application layer. Have a look in this diagram,&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4egwx6ik21ii3ae25lk7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4egwx6ik21ii3ae25lk7.png" alt="Layered Architechture" width="215" height="250"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Overwhelming right ?! 😯. To understand this coordination of layers - let me take one example of how you travel via airplane ✈️. In the airport , you reach with your ticket. Then you go for baggage check. Then you enter inside the plane. The plane have its own routes. After landing , you took your stuff from baggage center and leave . &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb90jgtqm7stovir439yi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb90jgtqm7stovir439yi.png" alt="Airplane" width="609" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now replace the steps with each layers, you will get the brief overview. But what the layers actually Do ?? What happens when you hit the search button in a e-commerce app ?? How do you know about how many items left ?? That's all done by some &lt;strong&gt;Protocols&lt;/strong&gt; , configured in these layers. Protocols are some set of rules defined to perform specific tasks. Although there are many protocols , but we will discuss about two of them -&lt;strong&gt;HTTP&lt;/strong&gt; and &lt;strong&gt;TCP&lt;/strong&gt; protocols. These protocols contribute to create a basic secure connection with the database server and your client browser. Let's dive into that.&lt;/p&gt;

&lt;h3&gt;
  
  
  💡&lt;u&gt; HTTP and TCP Protocol 🌐&lt;/u&gt;
&lt;/h3&gt;

&lt;p&gt;HTTP (Hypertext Transfer Protocol) is the dominant protocol in the application layer. There are several versions of HTTP (HTTP/1.0 - 1996s , HTTP/1.1 - 1997 , HTTP/2.0 - 2015). Also, there is one more corollary protocol of HTTP which is more reliable in terms of security - HTTPS (Hypertext Transfer Protocol Secure). But we are not bothered about the differences between plain old HTTP and Upgraded HTTPS , in this context. I am just going to share steps that more or less both protocols follow - along with the added security advantages of the HTTPS. But do the HTTP works alone - No . There comes the TCP (Transmission Control Protocol). It is a dominant transport layer protocol beside the UDP (User Datagram Protocol). TCP is known for building a more secure connection between sender and receiver device. It ensures that either the data packets will go to proper receiver or it will be just destroyed. That's why HTTP uses TCP as an underlying protocol. So , how this TCP makes a successful connection - answer is &lt;strong&gt;3-way Handshake&lt;/strong&gt; 👐. Your browser sents a dummy message or request to the server or another online device. In response , the second device also sends a response that it is live. At the third stage , now the browser sents the appropriate message to the server and got its acknowledgement. Each of this Request-Response Pair takes a certain ammount of time called , &lt;strong&gt;Round-Trip Time(RTT)&lt;/strong&gt; 🌀. Each of these RTT have some computational costs , so it is recommended to create only a single TCP connection between two fixed devices for all transmissions , otherwise multiple TCP connections will create a overload. Now how the sender client (browser here) will know that the receiver (server or any other device) is authentic or not? - SSL/TLS comes into play&lt;/p&gt;

&lt;h3&gt;
  
  
  💡&lt;u&gt; SSL and TLS&lt;/u&gt;🔑
&lt;/h3&gt;

&lt;p&gt;Before going to talk about these two things - lets know what is &lt;strong&gt;socket&lt;/strong&gt; 📣? In a precise manner , socket is the interface between any architechture's Application layer and Transport Layer. Socket helps to work the HTTP in a partnership with TCP / UDP and helps to interreact your http message with other layers. To provide an additional layer of security to socket - we have SSL(Secure Socket Layer) 🚔🚔.&lt;/p&gt;

&lt;p&gt;SSL encrypts the TCP link between two hosts which ensures that all data passed between them remain private and free from attack. Any TCP connection is successfully built after getting the SSL certificate. That means , SSL protocols are actually the part of the 3-way handshake. There are many SSL protocols out there - you can check it out. Wooh!! So many things running 😮 😮. Yeah !! really it is not so simple to just dig into the data servers or to talk online with others 😎. So now let's unveil the TLS.&lt;/p&gt;

&lt;p&gt;TLS or Transport Layer Security is another security protocol acts within the TCP link. They share a intimidating history - SSL v3 is earlier version and came before TLS. The SSL protocol was originally designed by Netscape, but the basic ideas behind securing TCP had predated Netscape’s work. So, Since its inception, SSL and its successor TLS have enjoyed this journey together. TLS is supported by all popular Web browsers and Web servers. TLS provides a simple API with sockets, which is similar and analogous to TCP’s API. When an application wants to employ TLS, the application includes SSL classes/libraries. Although TLS technically resides in the application layer, from the developer’s perspective it is a transport protocol that provides TCP’s services enhanced with &lt;br&gt;
security services.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F627dz0a3z6g2udntpl2i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F627dz0a3z6g2udntpl2i.png" alt="TCP-TLS" width="561" height="295"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The TLS protocol uses one session encryption key for all subsequent encryption and data integrity checking and that's how the protocol also participates in the 3-way handshake. In simple terms - you can call both TLS and SSL as &lt;strong&gt;Digital Signature&lt;/strong&gt; (Although its a term , majorly used in cryptography and block chain , but the base concept is same). But how servers recognize us (client browsers) , they simply send some &lt;strong&gt;cookies (not the things to eat) 🍪&lt;/strong&gt;. Once the cookie got accepted by our device , it got stored in our system ,and only our browser can access that when we visit the website again. &lt;/p&gt;

&lt;h3&gt;
  
  
  💡&lt;u&gt; Host To Ip &lt;/u&gt; ♠️♦️
&lt;/h3&gt;

&lt;p&gt;But How this Request response cycle turns out when we type the URL in the browser. Do browsers know Alphabets?? No!!. But what they do know the Ip-address. what is this ? In simple terms , IP is an unique 32 bit (IPV4) or 128 bit (IPV6) online address which can not be altered. This address is generated by IP protocol (Network Layer protocol). But how this pneumonic code to numeric bits happens ? &lt;strong&gt;DNS (Domain Name System)&lt;/strong&gt; manages this matter.&lt;/p&gt;

&lt;p&gt;The DNS is an application-layer protocol that allows hosts to query the distributed database. It is a collection of servers where one url are mapped to a certain IP-address - the address at which the website's own database server is located. After making the secure connection , when you hit a request to get data from a web URL , browser tries to find the the hostname in a hierarchy of DNS servers . On gradual assesment , atlast the IP-address is found.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn52uniqmry5dsm281f7e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn52uniqmry5dsm281f7e.png" alt="DNS-IP" width="800" height="299"&gt;&lt;/a&gt;&lt;br&gt;
Searching starts from &lt;strong&gt;Root Level server&lt;/strong&gt;. From there browser gets some &lt;strong&gt;Top Level Domain Servers (e.g: .com , .in servers)&lt;/strong&gt; and &lt;strong&gt;authorative server&lt;/strong&gt;. Searching gradually proceeds in these servers and we get the IP address. That's Good!! Now you can realize how actually your URL so quickly shows the data you want to see. DNS is the crucial part of the whole Internet, and if it fails , so fail the internet.&lt;/p&gt;

&lt;h3&gt;
  
  
  💡&lt;u&gt; Responding the Request 🌐&lt;/u&gt;
&lt;/h3&gt;

&lt;p&gt;Now let's see and make a complete breakdown of general web request and response. A typical web &lt;strong&gt;Request&lt;/strong&gt; can be broken into 2 parts - &lt;strong&gt;Request Line&lt;/strong&gt; and &lt;strong&gt;Header lines&lt;/strong&gt;. On further breakdown , Request Line can be divide into 3 parts - &lt;strong&gt;Request Method (GET , POST , PUT , PATCH , HEAD , DELETE etc)&lt;/strong&gt; , &lt;strong&gt;Hostname or Urlname&lt;/strong&gt; , &lt;strong&gt;HTTP Version&lt;/strong&gt;. On the other hand , a web &lt;strong&gt;response&lt;/strong&gt; includes 3 things - &lt;strong&gt;Response line&lt;/strong&gt; , &lt;strong&gt;Header lines&lt;/strong&gt; , &lt;strong&gt;Data or Payload&lt;/strong&gt;. Response line can be divided into 3 parts - &lt;strong&gt;HTTP Version&lt;/strong&gt; , &lt;strong&gt;Status Code&lt;/strong&gt; , &lt;strong&gt;Status Phrase&lt;/strong&gt;. These things are entirely predefined stuffs , you can observe below -&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Request Message -&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fubzoi50wcovyeitiwpaw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fubzoi50wcovyeitiwpaw.png" alt="Req" width="495" height="173"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Response Message -&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6hi1g1xkbo5byo8nmo56.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6hi1g1xkbo5byo8nmo56.png" alt="Res" width="724" height="294"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can see now , that the first line of the request is the request line as well as response message has its first line as response line . All the other lines apart from the first line , are header lines. Headers can be of many types - General Headers , Request Headers , Response Headers. Else we have different status codes which shows is the success or failure of the data retrieval. You can search online for the varieties of Headers and status codes.&lt;/p&gt;

&lt;p&gt;That's It !! Now you have a clear idea of how you can shop items on amazon and do other manipulations with data so quickly. 😄 and tell your friends about the working behind the blackbox. Well , time to leave 👋. Surely we will meet in the next blog and till then stay healthy and Happy Hacking !! 🤖&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>http</category>
      <category>api</category>
    </item>
    <item>
      <title>Unlock Django : The Full stack Guide</title>
      <dc:creator>PARTHIB KUMAR DEB</dc:creator>
      <pubDate>Wed, 27 Dec 2023 10:43:57 +0000</pubDate>
      <link>https://forem.com/parthib_deb23/unlock-the-django-way-3i4f</link>
      <guid>https://forem.com/parthib_deb23/unlock-the-django-way-3i4f</guid>
      <description>&lt;p&gt;Welcome fellas 😄, this is my first blog 📄. Here, I will discuss about the collective steps that will lead you in a journey of a successful django developer 💻. But before heading towards the steps, let us know what is this framework all about ? Django is very robust, powerful , &lt;strong&gt;fullstack&lt;/strong&gt; framework from python, which got recognized for its justified tagline - &lt;strong&gt;The web framework for perfectionists with deadlines.&lt;/strong&gt; Born in 2003 👶, as being used for a famous news journal's website , django has spent almost 21 years upto its version 5.0 (beta , released in 2023). So, how it had survived so long ? , the answer is its &lt;strong&gt;MVT architecture (Model-Views-Template)&lt;/strong&gt; and &lt;strong&gt;built-in ORM(Object Relational mapper)&lt;/strong&gt;. Django has its native support for all SQL databases(like SQLite, PostgreSQL, MySQL, SQL server), but, nowadays we can integrate it with some big NoSQL giants also (like MongoDB , Redis , Graphql) and some advanced databases (like appwrite , firebase). Although, Django was a gigantic monolithic during its birth time ,but now we can just use some its cool functionalities without its restricting environment and by the boon of APIS like REST and others it has become possible in the industry. So, now you can see 😮😮, django is one of the rapidly evolving fish 🐟 of this enormously large ocean of web development 🌊. So , after this profound introduction , lets put some spotlights on the key-steps for being a well-known django developer📋.&lt;/p&gt;

&lt;p&gt;❗ ❗ &lt;em&gt;Please copy the links and paste in new tab . All links are valid . There is some problem from this website.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;u&gt;Step-1&lt;/u&gt;💡&lt;u&gt;Know Python A-Z&lt;/u&gt; 🐍
&lt;/h3&gt;

&lt;p&gt;Its obvious that you have to know python and not by some teaspoon ammount, topics are -&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;(Basic to Intermediate - can't skip)

1. Variable and Datatypes
2. Conditionals
3. Loops
4. Strings (including slicing , f-strings)
5. Functions (including Higher order funcs also)
6. Scopes
7. Python Data structures (List ,sets ,tuples, dictionaries) and 
   their short comprehensions
8. Basics of File handling
9. Error Handling
10. Enumerate
11. Decorators
12. Packages , Modules and IMPORT st.
13. OOPS

(Advanced - Can do after few 3-4 steps)

14. Asynchronous Programming and Threading (after python 3.4x)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Spend at least 6-8 months for learning and revising by making some small projects.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;u&gt;Step-2&lt;/u&gt;💡&lt;u&gt;Know DBMS&lt;/u&gt; 📖
&lt;/h3&gt;

&lt;p&gt;So, when you have spent your half of the year behind python , now you can move to another important chapter - DBMS (Database Management System). Topics you must follow up are -&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. What is DBMS and why we use it?
2. 2 tier , 3 tier and 3 schema architechture
3. ER model
4. Relational Algebra
5. SQL (what is it , about schema , keys, tables , row , column) 
   + COMMANDS
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Spent the rest 3-4 months for learning DBMS.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;u&gt;Step-3&lt;/u&gt;💡&lt;u&gt;Know the Web&lt;/u&gt; 💎
&lt;/h3&gt;

&lt;p&gt;Try to know how a Web-App works by covering these topics -&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. what is HTTP
2. What are the status codes in HTTP
3. How the connection is made between server and user [importance 
   of HTML,CSS,JS (just their roles in the web)]
4. What are APIs , types and Roles in this connection
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For APIs and HTTP : &lt;a href="https://dev.tourl"&gt;https://sambitchak.hashnode.dev/&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;These are not some book-bound studies. Read blogs and watch some worthy content in YouTube to just make an idea from all these topics, it will mostly take 2-3 weeks at most.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;u&gt;Step-4&lt;/u&gt;💡&lt;u&gt;Know about database connections&lt;/u&gt; 📎
&lt;/h3&gt;

&lt;p&gt;Now are good to start the stuffs of sole backend , cover this topics like -&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. What is a middleware (basic idea)
2. What are the middlewares used to connect SQL databases into 
  python scripts
3. Learn about Request Module in Python
4. Try to make a small project covering all 1-3 points
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These will mostly take 1.5 months , things will start to move a little fast from this point.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;u&gt;Step-5&lt;/u&gt;💡&lt;u&gt;Know about framework&lt;/u&gt; 🔎
&lt;/h3&gt;

&lt;p&gt;Now are good to start the stuffs of sole backend , cover this topics like -&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. What is a framework (basic idea)
2. Framework architechtures : especially MVT , MVC
3. What is ORM and what are other alternatives of that
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For Django's Own ORM : &lt;a href="https://dev.tourl"&gt;https://parthib23.hashnode.dev/demystifying-django-orm&lt;/a&gt;. All these topics will take 2 weeks.&lt;/p&gt;

&lt;p&gt;So this is the point where you just one step away from diving into the depths of django. Congratulates yourself, 😃&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;u&gt;Step-6&lt;/u&gt;💡&lt;u&gt;Know about Django&lt;/u&gt; 🏆
&lt;/h3&gt;

&lt;p&gt;I will not narrate anything about django, because it has a very user-friendly , well-managed documentation , by experienced developers&lt;br&gt;
&lt;a href="https://dev.tourl"&gt;https://www.djangoproject.com/&lt;/a&gt;&lt;br&gt;
Although , I will suggest to start from -&lt;br&gt;
&lt;a href="https://dev.tourl"&gt;https://docs.djangoproject.com/en/5.0/intro/overview/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now from step-6 , spend couple 3-4 months , build some 1-2 small projects by reading the documentation .You can use bootstrap or similar ready-made templates at this point. No shame!! From Step 1-6 , easily 1.5 - 2 years will be gone, but &lt;strong&gt;don't panick !!&lt;/strong&gt;, jobs are not flying away!!&lt;/p&gt;
&lt;h3&gt;
  
  
  &lt;u&gt;Step-7&lt;/u&gt;💡&lt;u&gt;Know about essentials&lt;/u&gt; 🔆
&lt;/h3&gt;

&lt;p&gt;I hope, you have spent atleast 1.5 years by learning django and stuffs. Now just take a break from django (Not from the journey man 😆) , and focus on these topics&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. Git and Github (2 weeks)
2. HTML + CSS (don't have to be expert, just spend 1.5-2 months)
3. Javascript (Dedicate 3-3.5 months here, don't think about django now)

4. Make some small projects covering these 3 points and push to Github
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;All these 4 steps will take atmost 6-8 months . So use your time with very accurate ratios.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;u&gt;Step-7&lt;/u&gt;💡&lt;u&gt;Know about REST API&lt;/u&gt; 💎
&lt;/h3&gt;

&lt;p&gt;Now, let's move forward to some advance stuffs like REST API. Previosuly , you had an idea about APIs. Now focus more on REST API. Read blogs and watch quality contents. So, when you are done with the basic understanding with REST API , dive to DRF (Django REST Framework) &lt;a href="https://dev.tourl"&gt;https://www.django-rest-framework.org&lt;/a&gt; and see how django can change its monolithic behaviour by connecting itself to giant JS frontend frameworks. &lt;br&gt;
Learn and make some projects upto step-7. Spend more 2-3 months. At this points, only small projects will help you to learn and grow more.&lt;/p&gt;

&lt;p&gt;So, successfully spending 2.5-3 years, you will have a decent crystal clear knowledge on django. But don't stop. &lt;strong&gt;Revise every previous steps,&lt;/strong&gt; and learn how to &lt;strong&gt;integrate&lt;/strong&gt; new stuffs with django , that's more important!! If you have reached to this very end 😄. then, I hope you have enjoyed and realized what I wanted to say. Bye!! and will meet to the next blog 👋👋&lt;/p&gt;

</description>
      <category>django</category>
      <category>backenddevelopment</category>
      <category>python</category>
      <category>web</category>
    </item>
  </channel>
</rss>
