<?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: Ankush Singh Gandhi</title>
    <description>The latest articles on Forem by Ankush Singh Gandhi (@ankushsinghgandhi).</description>
    <link>https://forem.com/ankushsinghgandhi</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%2F471579%2F0b120e45-d3a5-4605-88c5-d2eaecc00966.jpg</url>
      <title>Forem: Ankush Singh Gandhi</title>
      <link>https://forem.com/ankushsinghgandhi</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/ankushsinghgandhi"/>
    <language>en</language>
    <item>
      <title>WarriorOS: Building a Modern Terminal Portfolio with React, Gemini, and Cloud Run</title>
      <dc:creator>Ankush Singh Gandhi</dc:creator>
      <pubDate>Sun, 01 Feb 2026 17:04:52 +0000</pubDate>
      <link>https://forem.com/ankushsinghgandhi/warrioros-building-a-modern-terminal-portfolio-with-react-gemini-and-cloud-run-ehj</link>
      <guid>https://forem.com/ankushsinghgandhi/warrioros-building-a-modern-terminal-portfolio-with-react-gemini-and-cloud-run-ehj</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/new-year-new-you-google-ai-2025-12-31"&gt;New Year, New You Portfolio Challenge Presented by Google AI&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  About Me
&lt;/h2&gt;

&lt;p&gt;Hi everyone! I'm &lt;strong&gt;Ankush Singh Gandhi&lt;/strong&gt;, a software engineer and the "Warrior Who Codes." I specialize in full-stack development, system design, and building interactive web experiences.&lt;/p&gt;

&lt;p&gt;But I'm not just a coder—I'm a passionate technical writer and lifelong learner. Over the last few years, my articles on Dev.to have gathered &lt;strong&gt;over 48,000 views&lt;/strong&gt;, and I was previously recognized as a &lt;strong&gt;Top Voice in Computer Science&lt;/strong&gt; on LinkedIn for my contributions to community discussions. I absolutely love devouring system design blogs and engineering case studies.&lt;/p&gt;

&lt;p&gt;My goal with this portfolio was to create something that reflects this duality: a place that showcases my projects but also serves as an "Interactive Hub" for the content I create and consume. It blends a retro-terminal aesthetic with modern, high-performance UI to tell my story.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Evolution: WarriorOS (v4.0) vs. Original
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;⚠️ NOTE: Work in Progress&lt;/strong&gt;&lt;br&gt;
This project is currently in active development. You are seeing a live preview of the new &lt;strong&gt;WarriorOS&lt;/strong&gt; iteration.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This project is a complete reimplementation of my original portfolio, &lt;strong&gt;&lt;a href="https://warriorwhocodes.com" rel="noopener noreferrer"&gt;warriorwhocodes.com&lt;/a&gt;&lt;/strong&gt;. While the original site served me well, I wanted to push the boundaries of what a personal site could be—moving from a static showcase to a living, breathing operating system.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;� CRITICAL VIEWING EXPERIENCE RECOMMENDATION&lt;/strong&gt;&lt;br&gt;
While I have embedded the site below, &lt;strong&gt;I strongly prefer and recommend opening the portfolio in a New Window&lt;/strong&gt;.&lt;br&gt;
The complex terminal shortcuts, hover effects, and immersive UI are best experienced directly, not inside an iframe.&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://portfolio-1050489244458.us-central1.run.app/" rel="noopener noreferrer"&gt;Click Here to Open WarriorOS in Full Screen &amp;gt;&amp;gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  1. The New Architecture (WarriorOS)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Status&lt;/strong&gt;: Active Development 🚧&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Focus&lt;/strong&gt;: Terminal-first navigation, AI integration, "One-Shot" learning modules.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;

&lt;/p&gt;
&lt;div class="ltag__cloud-run"&gt;
  &lt;iframe height="600px" src="https://portfolio-1050489244458.us-central1.run.app/"&gt;
  &lt;/iframe&gt;
&lt;/div&gt;




&lt;h3&gt;
  
  
  2. The Original Portfolio (Legacy)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Status&lt;/strong&gt;: Stable (v3.0)&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Focus&lt;/strong&gt;: Standard visual showcase.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;

&lt;/p&gt;
&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://warriorwhocodes.com/" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwarriorwhocodes.com%2Fassets%2Fimages%2Fog-image.jpg" height="auto" class="m-0"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://warriorwhocodes.com/" rel="noopener noreferrer" class="c-link"&gt;
            Warrior Who Codes - Ankush Singh Gandhi
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            Backend &amp;amp; Software Developer specializing in Python, Django, Flask, and cloud systems. Also building modern web apps and Flutter-based mobile apps.
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwarriorwhocodes.com%2Fassets%2Fimages%2Ffavicons%2Ffavicon.ico"&gt;
          warriorwhocodes.com
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;




&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;I built &lt;strong&gt;WarriorOS&lt;/strong&gt; (my portfolio) using a modern tech stack centered purely on offering a seamless user experience, accelerated by Google's AI tools.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tech Stack
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Frontend&lt;/strong&gt;: React (Vite), Tailwind CSS, Framer Motion for animations.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Deployment&lt;/strong&gt;: Google Cloud Run (Dockerized Nginx container).&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;AI Integration&lt;/strong&gt;: Google Gemini API.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Development Partner&lt;/strong&gt;: Built using &lt;strong&gt;Antigravity&lt;/strong&gt;, Google's advanced agentic coding assistant.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Building with Antigravity &amp;amp; Gemini
&lt;/h3&gt;

&lt;p&gt;This project didn't just &lt;em&gt;use&lt;/em&gt; AI features; it was built &lt;em&gt;with&lt;/em&gt; AI. I used &lt;strong&gt;Antigravity&lt;/strong&gt; (powered by Gemini) to pair-program the entire "WarriorOS".&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Rapid Prototyping&lt;/strong&gt;: I used the agent to iterate on the complex "Terminal Button" UI until it matched my exact vision—down to the pixel-perfect glow effects.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Deployment Automation&lt;/strong&gt;: The agent handled the containerization with Docker and the Cloud Run deployment commands, saving me hours of configuration time.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Google Gemini API Integration (The "New You" Feature)
&lt;/h3&gt;

&lt;p&gt;I integrated the &lt;strong&gt;Gemini API&lt;/strong&gt; directly into the site to create an &lt;strong&gt;AI Expert &amp;amp; Companion&lt;/strong&gt; that doesn't just chat, it &lt;em&gt;adapts&lt;/em&gt;. But more than just a chatbot, this feature represents my philosophy on &lt;strong&gt;Modern Content Writing: The AI + Human Symbiosis&lt;/strong&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  The Mindset: Evolution of Technical Learning
&lt;/h4&gt;

&lt;p&gt;In the past, technical writing was static. You wrote a blog, someone read it, and if they got stuck, they had to leave your site to Google the answer.&lt;/p&gt;

&lt;p&gt;I believe the future of content is &lt;strong&gt;interactive and adaptive&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;The Human Role&lt;/strong&gt;: My job is to curate the &lt;em&gt;structure&lt;/em&gt;, the &lt;em&gt;roadmap&lt;/em&gt;, and the &lt;em&gt;core insights&lt;/em&gt; (the human experience).&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;The AI Role&lt;/strong&gt;: Gemini's job is to be the &lt;strong&gt;personalized expert&lt;/strong&gt; that adapts this content specifically for you.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With the new &lt;strong&gt;Personalization Profile&lt;/strong&gt; engine, the AI doesn't just "answer questions" — it knows &lt;em&gt;who&lt;/em&gt; you are. An &lt;strong&gt;Aspiring Backend Engineer&lt;/strong&gt; learning Redis needs different analogies than a &lt;strong&gt;Senior Frontend Dev&lt;/strong&gt; or a &lt;strong&gt;Product Manager&lt;/strong&gt;. By letting you configure your Occupation, Goal, and Skills, WarriorOS transforms static documentation into a bespoke mentorship session.&lt;/p&gt;

&lt;h4&gt;
  
  
  Where is Gemini Integrated?
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Context-Aware AI Personalization&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Open the &lt;strong&gt;AI Toolbox&lt;/strong&gt; via the floating button.&lt;/li&gt;
&lt;li&gt;  Click &lt;strong&gt;[CONFIGURE AI]&lt;/strong&gt; to set your profile (e.g., Occupation: "Student", Goal: "System Design").&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;The Magic&lt;/strong&gt;: Now, every AI tool—from the &lt;strong&gt;Pathfinder&lt;/strong&gt; to the &lt;strong&gt;Tutor&lt;/strong&gt;—will reshape its responses to fit your background. The Tutor uses your specific skills in examples, and the Quiz adjusts its difficulty automatically.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;The "One-Shot" Expert&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Navigate to the &lt;strong&gt;Library&lt;/strong&gt; and open any "One-Shot" roadmap.&lt;/li&gt;
&lt;li&gt;  The &lt;strong&gt;AI Expert&lt;/strong&gt; uses Gemini 2.5 Flash to provide responses that are not just accurate but &lt;em&gt;streamed in real-time&lt;/em&gt; for a natural conversational feel. It holds the full context of the roadmap you're reading, letting you ask deeper questions without losing scope.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Global AI Assistant&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Throughout the site, the AI acts as a guide to my portfolio. It can explain the architecture of my projects, suggest which blog post you should read based on your interests, or even quiz you on the skills listed in my "About Me" section.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Active Recall Quizzes&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Inside the Expert window, you can switch to "Quiz Mode." Gemini generates rapid-fire questions based on the content you're viewing, helping you verify your understanding in real-time.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  What I'm Most Proud Of
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;The Global Terminal System&lt;/strong&gt;:
I didn't want the terminal to be a fake GIF. It's a fully functional global navigation CLI. No matter where you are on the site, you can hit the button and type commands like:

&lt;ul&gt;
&lt;li&gt;  &lt;code&gt;system.archive_access&lt;/code&gt; -&amp;gt; Instantly navigates to my library/blog section.&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;system.profile_bio&lt;/code&gt; -&amp;gt; Jumps to the About Me section.&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;python&lt;/code&gt; -&amp;gt; Launches a simulated Python environment (try &lt;code&gt;import antigravity&lt;/code&gt;!).
It treats the entire website navigation like a file system, giving power users a faster way to explore.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Semantic Terminal Navigation&lt;/strong&gt;:&lt;br&gt;
        This is where the magic happens. I integrated &lt;strong&gt;Google Gemini's capabilities directly into the CLI&lt;/strong&gt;. You aren't limited to memorizing strict commands.&lt;br&gt;
        *   Ask naturally: &lt;code&gt;Show me what you did at Desi Diaries&lt;/code&gt;&lt;br&gt;
        *   Express intent: &lt;code&gt;I want to see your backend projects&lt;/code&gt;&lt;br&gt;
        *   Get context: &lt;code&gt;Who are you?&lt;/code&gt;&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    The terminal intelligently parses your intent. If you want to navigate, it executes the system command. If you have a question about my work experience, it references my portfolio data to give you a concise, terminal-style answer. It transforms the CLI from a tool for power users into a conversational interface for everyone.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The "Configure AI" Ecosystem&lt;/strong&gt;:&lt;br&gt;
I built a dedicated &lt;strong&gt;Settings Configuration UI&lt;/strong&gt; where users can input their occupation and goals (e.g., "Student learning DSA"). This isn't just a form—it's the brain of the site. It stores your profile locally and dynamically injects it into every single AI interaction, making the "AI Expert" feel like a persistent companion rather than a stateless bot.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The Personalized Mentorship Hub&lt;/strong&gt;:&lt;br&gt;
Reflecting my passion for technical writing, I built interactive roadmap pages for topics like &lt;strong&gt;Redis&lt;/strong&gt;, &lt;strong&gt;Django ORM&lt;/strong&gt;, and &lt;strong&gt;MySQL&lt;/strong&gt;. But instead of just static guides, I've created a hub where the &lt;strong&gt;AI Expert&lt;/strong&gt; acts as a personal mentor, analyzing my written content through the lens of &lt;em&gt;your&lt;/em&gt; career goals and occupation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Seamless Cloud Deployment&lt;/strong&gt;:&lt;br&gt;
Getting the app Dockerized and running on &lt;strong&gt;Google Cloud Run&lt;/strong&gt; was a huge win. The site loads instantly, is secured with HTTPS by default, and can scale up if my blog post goes viral.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I'm excited to share &lt;strong&gt;WarriorOS&lt;/strong&gt; with the community. It represents my journey from writing articles to building an entire operating system for my work.&lt;/p&gt;
&lt;h2&gt;
  
  
  Source Code
&lt;/h2&gt;

&lt;p&gt;You can explore the full source code for WarriorOS on GitHub:&lt;br&gt;


&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/AnkushSinghGandhi" rel="noopener noreferrer"&gt;
        AnkushSinghGandhi
      &lt;/a&gt; / &lt;a href="https://github.com/AnkushSinghGandhi/portfolio-website-v5" rel="noopener noreferrer"&gt;
        portfolio-website-v5
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div&gt;
  &lt;a rel="noopener noreferrer" href="https://github.com/AnkushSinghGandhi/portfolio-website-v5/logo.jpg"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2FAnkushSinghGandhi%2Fportfolio-website-v5%2Flogo.jpg" alt="WarriorOS Logo" width="200"&gt;&lt;/a&gt;
  &lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;WARRIOR OS (v4.0)&lt;/h1&gt;
&lt;/div&gt;
  &lt;p&gt;&lt;i&gt;A Modern Terminal-Inspired Portfolio &amp;amp; Engineering Archive&lt;/i&gt;&lt;/p&gt;
  &lt;p&gt;
    &lt;a href="https://github.com/AnkushSinghGandhi/portfolio-website-v5#" rel="noopener noreferrer"&gt;&lt;strong&gt;Live Preview &amp;gt;&amp;gt;&lt;/strong&gt;&lt;/a&gt;
  &lt;/p&gt;
&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🚀 Overview&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;WarriorOS&lt;/strong&gt; is a complete reimplementation of the &lt;a href="https://warriorwhocodes.com" rel="nofollow noopener noreferrer"&gt;warriorwhocodes.com&lt;/a&gt; portfolio. It moves away from static web design towards an "Interactive Operating System" aesthetic, blending a retro-terminal CLI with modern, high-performance UI components.&lt;/p&gt;
&lt;p&gt;Built as a submission for the &lt;strong&gt;New Year, New You Portfolio Challenge&lt;/strong&gt;, this iteration focuses on &lt;strong&gt;human-AI symbiosis&lt;/strong&gt; in technical education.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;✨ Key Features&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;🌐 Global Terminal (Warrior_OS CLI)&lt;/strong&gt;: A fully functional command-line interface used for navigation and system interaction.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;🤖 AI Expert &amp;amp; Companion&lt;/strong&gt;: Integrated Google Gemini API that acts as a context-aware tutor for roadmaps and technical content.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;🗺️ One-Shot Roadmaps&lt;/strong&gt;: Interactive, deep-dive learning modules on topics like Redis, MySQL, and Django ORM.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;⚡ High-Contrast Aesthetics&lt;/strong&gt;: A "Paper Terminal" theme featuring sharp black cards over white grid backgrounds for maximum readability.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🛠️ Tech Stack&lt;/h2&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend&lt;/strong&gt;: React…&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/AnkushSinghGandhi/portfolio-website-v5" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;




&lt;p&gt;&lt;strong&gt;Happy Coding! 🚀&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>googleaichallenge</category>
      <category>portfolio</category>
      <category>gemini</category>
    </item>
    <item>
      <title>Tips, Strategies, and Patterns to Solve and Identify DSA Problems</title>
      <dc:creator>Ankush Singh Gandhi</dc:creator>
      <pubDate>Fri, 03 Oct 2025 06:41:15 +0000</pubDate>
      <link>https://forem.com/ankushsinghgandhi/tips-strategies-and-patterns-to-solve-and-identify-dsa-problems-4jja</link>
      <guid>https://forem.com/ankushsinghgandhi/tips-strategies-and-patterns-to-solve-and-identify-dsa-problems-4jja</guid>
      <description>&lt;p&gt;One of the biggest struggles in mastering &lt;strong&gt;Data Structures and Algorithms (DSA)&lt;/strong&gt; is not writing code — it’s recognizing &lt;strong&gt;patterns&lt;/strong&gt; in problems. Once you can spot the underlying pattern, solving the problem becomes much easier.&lt;/p&gt;

&lt;p&gt;This guide is a &lt;strong&gt;cheat sheet + strategy blog&lt;/strong&gt; to help you &lt;strong&gt;identify DSA problem types&lt;/strong&gt; and choose the right approach.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔑 General Rules to Spot Patterns
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. &lt;strong&gt;If the input array is sorted →&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Try &lt;strong&gt;Binary Search&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Or &lt;strong&gt;Two Pointers&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. &lt;strong&gt;If asked for all permutations/subsets →&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Use &lt;strong&gt;Backtracking&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. &lt;strong&gt;If the problem involves a Tree →&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Use &lt;strong&gt;DFS&lt;/strong&gt; or &lt;strong&gt;BFS&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. &lt;strong&gt;If the problem involves a Graph →&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Again, &lt;strong&gt;DFS&lt;/strong&gt; or &lt;strong&gt;BFS&lt;/strong&gt; (with variations like Union-Find, Topological Sort, etc.)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5. &lt;strong&gt;If the problem involves Linked Lists →&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Think of &lt;strong&gt;Two Pointers&lt;/strong&gt; (slow/fast pointer tricks)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  6. &lt;strong&gt;If recursion is not allowed →&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Use a &lt;strong&gt;Stack&lt;/strong&gt; to simulate recursion&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  7. &lt;strong&gt;If in-place solution is required →&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Use &lt;strong&gt;swapping&lt;/strong&gt;, or&lt;/li&gt;
&lt;li&gt;Store extra info inside existing pointers&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  8. &lt;strong&gt;If asked for maximum/minimum subarray/subset/option →&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Use &lt;strong&gt;Dynamic Programming&lt;/strong&gt; (Kadane’s, Knapsack, etc.)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  9. &lt;strong&gt;If asked for top/least K items →&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Use &lt;strong&gt;Heap&lt;/strong&gt; or &lt;strong&gt;QuickSelect&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  10. &lt;strong&gt;If asked for common strings/words →&lt;/strong&gt;
&lt;/h3&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;* Use **HashMap** or **Trie**
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h3&gt;
  
  
  11. &lt;strong&gt;Else&lt;/strong&gt;:
&lt;/h3&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;* Use **Map/Set** for O(1) lookup with O(n) space
* Or **Sort** input for O(n log n) time and O(1) space
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;




&lt;h2&gt;
  
  
  🧠 The Two-Pointer Pattern
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🔍 How to Identify
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Finding &lt;strong&gt;pairs&lt;/strong&gt;, &lt;strong&gt;triplets&lt;/strong&gt;, or &lt;strong&gt;subarrays&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Problem mentions &lt;strong&gt;sorted array&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Problem wants &lt;strong&gt;in-place&lt;/strong&gt; solution (O(1) space).&lt;/li&gt;
&lt;li&gt;Need O(n) or O(n log n), brute force O(n²) is too slow.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🚀 Approaches
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Opposite Ends Approach&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;i = 0&lt;/code&gt;, &lt;code&gt;j = n-1&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Move inward based on condition
 👉 Examples: Two Sum (sorted), Container With Most Water, Valid Palindrome&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Same Direction Approach (Slow/Fast Pointers)&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Both start at 0, fast pointer explores, slow pointer lags behind
 👉 Examples: Remove Duplicates, Linked List Cycle, Sliding Window variations&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  💡 Tip: When modifying in-place, slow pointer usually marks “where to write”.
&lt;/h3&gt;

&lt;h3&gt;
  
  
  📝 Pointer Movement Table
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Condition&lt;/th&gt;
&lt;th&gt;Action&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Sum too small&lt;/td&gt;
&lt;td&gt;Move left++&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sum too big&lt;/td&gt;
&lt;td&gt;Move right--&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Found valid pair&lt;/td&gt;
&lt;td&gt;Move both inward&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Skip duplicates&lt;/td&gt;
&lt;td&gt;Move pointer at dup&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  ⚡ The Sliding Window Pattern
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🔍 How to Identify
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Problems asking for &lt;strong&gt;subarray/substring&lt;/strong&gt; with constraints:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Maximum/minimum sum/length/count&lt;/li&gt;
&lt;li&gt;K distinct elements&lt;/li&gt;
&lt;li&gt;Character replacements&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  🚀 Strategies
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Expanding Window (for max problems)&lt;/strong&gt;:&lt;br&gt;
Grow window until condition is invalid, then shrink.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Shrinking Window (for min problems)&lt;/strong&gt;:&lt;br&gt;
Shrink while condition holds, track min length.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  📝 Quick Rules
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Use if inside for loop&lt;/strong&gt; when at most one adjustment is needed per step (soft constraint).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use while loop&lt;/strong&gt; when multiple shrinks may be required (strict constraint).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👉 Examples: Longest Substring Without Repeating Characters, Minimum Window Substring&lt;/p&gt;




&lt;h2&gt;
  
  
  🌳 Tree &amp;amp; Graph Patterns
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;DFS&lt;/strong&gt; → when recursion or full exploration is needed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;BFS&lt;/strong&gt; → when solving shortest path (unweighted) or level-order.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Union-Find&lt;/strong&gt; → when dealing with connectivity/cycles.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Topological Sort&lt;/strong&gt; → for dependency/ordering problems.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👉 Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tree Traversals (Inorder/Preorder/Postorder)&lt;/li&gt;
&lt;li&gt;Shortest Path in Graph (BFS, Dijkstra)&lt;/li&gt;
&lt;li&gt;Detecting Cycles (DFS, Union-Find)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🧮 Dynamic Programming (DP)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🔍 How to Identify
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Problem asks for &lt;strong&gt;minimum/maximum&lt;/strong&gt; something.&lt;/li&gt;
&lt;li&gt;Overlapping subproblems appear.&lt;/li&gt;
&lt;li&gt;Brute force recursion seems exponential.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🚀 Common DP Problems
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Kadane’s Algorithm (max subarray sum)&lt;/li&gt;
&lt;li&gt;Knapsack variations&lt;/li&gt;
&lt;li&gt;Fibonacci/Climbing Stairs&lt;/li&gt;
&lt;li&gt;Longest Common Subsequence / Substring&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👉 Tip: Always try recursion first → then memoize → then bottom-up.&lt;/p&gt;




&lt;h2&gt;
  
  
  🏗️ Heaps and Priority Queues
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Use when asked for &lt;strong&gt;top K elements&lt;/strong&gt;, &lt;strong&gt;running median&lt;/strong&gt;, or &lt;strong&gt;minimum/maximum stream values&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Heap provides O(log n) insertion and O(1) top element.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👉 Examples: Kth Largest Element, Merge K Sorted Lists, Sliding Window Maximum&lt;/p&gt;




&lt;h2&gt;
  
  
  🔡 Strings &amp;amp; Hashing
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;HashMap / Set&lt;/strong&gt; → when you need to check existence/count (anagrams, duplicates).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Trie&lt;/strong&gt; → when asked for prefix/suffix queries, autocomplete, or dictionary problems.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👉 Examples: Group Anagrams, Word Search II, Longest Prefix&lt;/p&gt;




&lt;h2&gt;
  
  
  🧭 Checklist for Any DSA Question
&lt;/h2&gt;

&lt;p&gt;When you see a new problem, ask:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Is the input &lt;strong&gt;sorted&lt;/strong&gt;? → Try binary search / two pointers.&lt;/li&gt;
&lt;li&gt;Is it about &lt;strong&gt;subarray/substring&lt;/strong&gt;? → Try sliding window.&lt;/li&gt;
&lt;li&gt;Is it about &lt;strong&gt;permutations/subsets&lt;/strong&gt;? → Try backtracking.&lt;/li&gt;
&lt;li&gt;Is it about a &lt;strong&gt;tree/graph&lt;/strong&gt;? → Try DFS/BFS.&lt;/li&gt;
&lt;li&gt;Is it about &lt;strong&gt;max/min result&lt;/strong&gt;? → Try DP.&lt;/li&gt;
&lt;li&gt;Is it about &lt;strong&gt;Kth element/top items&lt;/strong&gt;? → Try heap/QuickSelect.&lt;/li&gt;
&lt;li&gt;Is it about &lt;strong&gt;strings/prefixes&lt;/strong&gt;? → Try HashMap/Trie.&lt;/li&gt;
&lt;li&gt;Else → Try Map/Set or Sorting.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  🎯 Final Tip
&lt;/h2&gt;

&lt;p&gt;👉 &lt;strong&gt;Brute force first, optimize later.&lt;/strong&gt;&lt;br&gt;
Most optimizations are about recognizing the &lt;strong&gt;pattern&lt;/strong&gt; and then replacing nested loops or recursion with the right technique.&lt;/p&gt;




&lt;p&gt;By building this &lt;strong&gt;pattern recognition skill&lt;/strong&gt;, you’ll start to “see through” DSA problems instead of brute-forcing every new one. That’s the mindset of a strong problem solver.&lt;/p&gt;

</description>
      <category>interview</category>
      <category>computerscience</category>
      <category>tutorial</category>
      <category>algorithms</category>
    </item>
    <item>
      <title>🌐 Essential API &amp; HTTP Interview Questions</title>
      <dc:creator>Ankush Singh Gandhi</dc:creator>
      <pubDate>Thu, 02 Oct 2025 16:16:25 +0000</pubDate>
      <link>https://forem.com/ankushsinghgandhi/essential-api-http-interview-questions-2mm5</link>
      <guid>https://forem.com/ankushsinghgandhi/essential-api-http-interview-questions-2mm5</guid>
      <description>&lt;p&gt;APIs and HTTP form the backbone of modern web communication. Below are the &lt;strong&gt;most important API &amp;amp; HTTP interview questions&lt;/strong&gt; every developer should know.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔹 What is an API and why do we use it?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;API (Application Programming Interface)&lt;/strong&gt; → A set of rules that allow software applications to communicate with each other.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use&lt;/strong&gt;: Enables integration, automation, and reusability (e.g., payment gateway, social login, weather services).&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔹 What are HTTP Methods?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GET&lt;/strong&gt; → Retrieve data.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;POST&lt;/strong&gt; → Create new resources.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PUT&lt;/strong&gt; → Update/replace entire resource.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PATCH&lt;/strong&gt; → Partially update resource.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DELETE&lt;/strong&gt; → Remove resource.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;HEAD&lt;/strong&gt; → Retrieve headers only.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OPTIONS&lt;/strong&gt; → Discover supported methods.
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔹 GET vs POST
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GET&lt;/strong&gt; → Idempotent, data in URL, not secure for sensitive info, limited length.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;POST&lt;/strong&gt; → Non-idempotent, data in body, secure for large/sensitive payloads.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔹 PUT vs PATCH
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;PUT&lt;/strong&gt; → Replaces entire resource.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PATCH&lt;/strong&gt; → Updates specific fields in resource.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔹 PUT and POST
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;PUT&lt;/strong&gt; → Used for &lt;strong&gt;updating/replacing&lt;/strong&gt;. Idempotent.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;POST&lt;/strong&gt; → Used for &lt;strong&gt;creating&lt;/strong&gt;. Non-idempotent.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔹 SOAP API and Its Use
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;SOAP (Simple Object Access Protocol)&lt;/strong&gt; → XML-based protocol for exchanging structured information.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use&lt;/strong&gt;: High security, reliable messaging, enterprise systems like banking/telecom.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔹 REST API
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;REST (Representational State Transfer)&lt;/strong&gt; → Architectural style using HTTP for CRUD operations on resources.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lightweight&lt;/strong&gt;, &lt;strong&gt;scalable&lt;/strong&gt;, widely used in web/mobile apps.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔹 SOAP vs REST
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;SOAP&lt;/strong&gt; → Strict, XML only, heavier, built-in security.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;REST&lt;/strong&gt; → Flexible, supports XML/JSON, faster, easier to use.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔹 HTTP Status Codes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;1xx&lt;/strong&gt; → Informational.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;2xx&lt;/strong&gt; → Success (200 OK, 201 Created).
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;3xx&lt;/strong&gt; → Redirection (301 Moved Permanently).
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;4xx&lt;/strong&gt; → Client Error (400 Bad Request, 404 Not Found).
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;5xx&lt;/strong&gt; → Server Error (500 Internal Server Error).&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔹 Components of HTTP Request &amp;amp; Response
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Request&lt;/strong&gt; → Method, URI, Headers, Body (optional).
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Response&lt;/strong&gt; → Status line, Headers, Body (optional).&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔹 GET/POST Instead of PUT for Resource Creation
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;While &lt;strong&gt;POST&lt;/strong&gt; is standard for creation, some APIs use &lt;strong&gt;PUT&lt;/strong&gt; if the client knows the resource URI.
&lt;/li&gt;
&lt;li&gt;Using GET for creation is a bad practice (GET should be read-only).&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔹 RESTful Web Service &amp;amp; Features
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;RESTful WS&lt;/strong&gt; → Service following REST principles.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Features&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;Client-server architecture
&lt;/li&gt;
&lt;li&gt;Stateless communication
&lt;/li&gt;
&lt;li&gt;Uniform interface
&lt;/li&gt;
&lt;li&gt;Cacheable responses
&lt;/li&gt;
&lt;li&gt;Layered system
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔹 Disadvantages of RESTful Web Services
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;No strict standards (loose rules).
&lt;/li&gt;
&lt;li&gt;Less secure compared to SOAP.
&lt;/li&gt;
&lt;li&gt;Overhead of multiple requests for complex operations.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔹 What’s Payload?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Payload&lt;/strong&gt; = Actual data sent in request/response body (e.g., JSON/XML).&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔹 Can We Send Payload in GET or DELETE?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Technically possible but &lt;strong&gt;not recommended&lt;/strong&gt;.
&lt;/li&gt;
&lt;li&gt;HTTP spec doesn’t forbid it, but many servers/proxies ignore it.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔹 Max Payload Size in POST
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;No official limit in HTTP spec.
&lt;/li&gt;
&lt;li&gt;Practical limit depends on server (e.g., Apache, Nginx default ~2MB to 100MB).&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔹 Markup Language for REST API
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;REST supports multiple formats, most commonly &lt;strong&gt;JSON&lt;/strong&gt; and &lt;strong&gt;XML&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔹 XML vs JSON
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;XML&lt;/strong&gt; → Verbose, supports attributes, widely used in SOAP.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;JSON&lt;/strong&gt; → Lightweight, human-readable, faster, widely used in REST.
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔹 What’s Resource in REST &amp;amp; How to Present?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Resource&lt;/strong&gt; = Any entity (user, product, order).
&lt;/li&gt;
&lt;li&gt;Represented by &lt;strong&gt;URI&lt;/strong&gt; (Uniform Resource Identifier).
Example: &lt;code&gt;/api/users/123&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔹 Advantages of REST in Web API
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Lightweight and scalable.
&lt;/li&gt;
&lt;li&gt;Platform/language independent.
&lt;/li&gt;
&lt;li&gt;Uses existing HTTP methods.
&lt;/li&gt;
&lt;li&gt;Easy to integrate with web/mobile.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔹 Concept of Statelessness in REST API
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Each request contains all info (no server-side session).
&lt;/li&gt;
&lt;li&gt;Improves scalability, reduces server memory usage.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔹 What’s URI?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;URI (Uniform Resource Identifier)&lt;/strong&gt; → Unique address for a resource.
Example: &lt;code&gt;https://api.example.com/products/1&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔹 CORS in Web API
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;CORS (Cross-Origin Resource Sharing)&lt;/strong&gt; → Security feature of browsers.
&lt;/li&gt;
&lt;li&gt;Allows or restricts requests from different domains.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔹 What’s Postman &amp;amp; Its Use?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Postman&lt;/strong&gt; → API client tool for testing, documenting, and automating API calls.
&lt;/li&gt;
&lt;li&gt;Widely used for debugging and collaboration in teams.&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;APIs and HTTP form the &lt;strong&gt;foundation of modern web services&lt;/strong&gt;. Knowing &lt;strong&gt;HTTP methods, REST principles, SOAP vs REST, status codes, payloads, and tools like Postman&lt;/strong&gt; is critical for acing interviews and real-world backend development.&lt;/p&gt;




</description>
      <category>webdev</category>
      <category>programming</category>
      <category>api</category>
      <category>ai</category>
    </item>
    <item>
      <title>🚀 Essential Git and GitHub Interview Questions</title>
      <dc:creator>Ankush Singh Gandhi</dc:creator>
      <pubDate>Thu, 02 Oct 2025 16:09:20 +0000</pubDate>
      <link>https://forem.com/ankushsinghgandhi/essential-git-and-github-interview-questions-3846</link>
      <guid>https://forem.com/ankushsinghgandhi/essential-git-and-github-interview-questions-3846</guid>
      <description>&lt;p&gt;Git and GitHub are fundamental tools for developers, and interviewers often test your knowledge of them. This blog covers the &lt;strong&gt;most commonly asked Git and GitHub interview questions&lt;/strong&gt;, explained in a crisp and practical way.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔹 Git vs GitHub
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Git&lt;/strong&gt;: A distributed version control system (VCS) used to track source code changes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub&lt;/strong&gt;: A cloud-based hosting platform for Git repositories with collaboration features like pull requests, issues, and CI/CD.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔹 Repo vs Branch
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Repository (Repo)&lt;/strong&gt;: A collection of files and their entire version history.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Branch&lt;/strong&gt;: A lightweight movable pointer to a commit, allowing parallel development.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔹 Push vs Pull
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Push&lt;/strong&gt;: Uploads your local commits to a remote repository.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pull&lt;/strong&gt;: Fetches updates from the remote and merges them into your local branch.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔹 Pull vs Fetch
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pull&lt;/strong&gt; = Fetch + Merge.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fetch&lt;/strong&gt;: Downloads changes from remote but does not merge automatically.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔹 Clone vs Remote
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Clone&lt;/strong&gt;: Creates a local copy of a remote repo.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Remote&lt;/strong&gt;: A reference (like &lt;code&gt;origin&lt;/code&gt;) to the remote repository URL.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔹 Diff vs Status
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;git diff&lt;/strong&gt;: Shows actual changes (line-by-line) not staged or committed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;git status&lt;/strong&gt;: Shows the state of working directory and staging area.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔹 Merge vs Rebase
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Merge&lt;/strong&gt;: Combines histories of two branches with a new merge commit.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rebase&lt;/strong&gt;: Reapplies commits of one branch onto another, resulting in a linear history.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔹 What’s a Git repo &amp;amp; how to create one?
&lt;/h2&gt;

&lt;p&gt;A &lt;strong&gt;Git repository&lt;/strong&gt; is a directory where Git tracks files and history.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git init          &lt;span class="c"&gt;# Create a local repo  &lt;/span&gt;
git clone &amp;lt;url&amp;gt;   &lt;span class="c"&gt;# Clone a remote repo  &lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🔹 Fix a Broken Commit
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git commit &lt;span class="nt"&gt;--amend&lt;/span&gt;        &lt;span class="c"&gt;# Fix last commit  &lt;/span&gt;
git reset &lt;span class="nt"&gt;--soft&lt;/span&gt; HEAD~1   &lt;span class="c"&gt;# Undo last commit, keep changes  &lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🔹 What happens if &lt;code&gt;.git&lt;/code&gt; folder gets deleted?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;The repo &lt;strong&gt;loses its history and version control&lt;/strong&gt;, as &lt;code&gt;.git&lt;/code&gt; contains all commit objects, refs, and configurations.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔹 Use of Staging Area (Indexing)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Temporary area where changes are reviewed before committing.&lt;/li&gt;
&lt;li&gt;Allows selective commit (&lt;code&gt;git add &amp;lt;file&amp;gt;&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔹 Git Repo Hosting Functions
&lt;/h2&gt;

&lt;p&gt;Platforms like GitHub, GitLab, Bitbucket provide:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Remote hosting&lt;/li&gt;
&lt;li&gt;Collaboration (pull requests, issues)&lt;/li&gt;
&lt;li&gt;CI/CD pipelines&lt;/li&gt;
&lt;li&gt;Access control&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔹 VCS (Version Control System)
&lt;/h2&gt;

&lt;p&gt;Tracks changes in code over time, supports collaboration, and helps rollback or branch development.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔹 Features/Advantages of Git
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Distributed VCS (no single point of failure).&lt;/li&gt;
&lt;li&gt;Lightweight branching and merging.&lt;/li&gt;
&lt;li&gt;Offline work support.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔹 Git vs SVN
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Git&lt;/strong&gt;: Distributed, faster, branching-friendly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SVN&lt;/strong&gt;: Centralized, slower for branching, single point of failure.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔹 &lt;code&gt;git config&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Sets user info and preferences.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git config &lt;span class="nt"&gt;--global&lt;/span&gt; user.name &lt;span class="s2"&gt;"Ankush"&lt;/span&gt;  
git config &lt;span class="nt"&gt;--global&lt;/span&gt; user.email &lt;span class="s2"&gt;"ankush@example.com"&lt;/span&gt;  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🔹 &lt;code&gt;git ls-tree&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Shows content of a tree object (commits, blobs, trees).&lt;/p&gt;




&lt;h2&gt;
  
  
  🔹 Git Stash Commands
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Save work: &lt;code&gt;git stash&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;List stashes: &lt;code&gt;git stash list&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Apply latest: &lt;code&gt;git stash apply&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Drop stash: &lt;code&gt;git stash drop&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔹 Revert vs Reset
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Revert&lt;/strong&gt;: Creates a new commit that undoes changes. Safe for shared repos.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reset&lt;/strong&gt;: Moves HEAD to a previous commit, can discard changes.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔹 HEAD in Git
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;HEAD&lt;/strong&gt; is the current branch pointer (latest commit).&lt;/li&gt;
&lt;li&gt;Normally 1 active HEAD, but multiple branch heads can exist.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔹 Git Username and Email
&lt;/h2&gt;

&lt;p&gt;Each commit uses configured username &amp;amp; email (&lt;code&gt;git config&lt;/code&gt;).&lt;/p&gt;




&lt;h2&gt;
  
  
  🔹 Commit History
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git log  
git log &lt;span class="nt"&gt;--oneline&lt;/span&gt; &lt;span class="nt"&gt;--graph&lt;/span&gt;  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🔹 Branch Operations
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;New branch: &lt;code&gt;git branch new-feature&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Switch branch: &lt;code&gt;git checkout main&lt;/code&gt; OR &lt;code&gt;git switch main&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;List branches: &lt;code&gt;git branch&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Create + switch: &lt;code&gt;git checkout -b feature&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Delete branch: &lt;code&gt;git branch -d feature&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Merge branch: &lt;code&gt;git merge feature&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔹 Remote Tracking
&lt;/h2&gt;

&lt;p&gt;Check which branch is being tracked:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git branch &lt;span class="nt"&gt;-vv&lt;/span&gt;  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🔹 Force Push
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git push origin main &lt;span class="nt"&gt;--force&lt;/span&gt;  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🔹 Add Remote Repo
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git remote add origin &amp;lt;url&amp;gt;  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🔹 Rename File in Git
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git &lt;span class="nb"&gt;mv &lt;/span&gt;old.txt new.txt  
git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"Renamed file"&lt;/span&gt;  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🔹 &lt;code&gt;.gitignore&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Defines files/folders Git should ignore. Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;node_modules/  
*.log  
.env  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🔹 Rollback Last Commit
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git reset &lt;span class="nt"&gt;--soft&lt;/span&gt; HEAD~1     &lt;span class="c"&gt;# Keep changes  &lt;/span&gt;
git reset &lt;span class="nt"&gt;--hard&lt;/span&gt; HEAD~1     &lt;span class="c"&gt;# Discard changes  &lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  ✅ Final Thoughts
&lt;/h2&gt;

&lt;p&gt;These questions cover &lt;strong&gt;core Git and GitHub concepts&lt;/strong&gt; often asked in interviews. Knowing both &lt;strong&gt;commands and theory&lt;/strong&gt; will help you stand out in backend or full-stack interviews.&lt;/p&gt;

</description>
      <category>interview</category>
      <category>git</category>
      <category>github</category>
      <category>career</category>
    </item>
    <item>
      <title>Build an ATS-Friendly Resume That Gets Seen (with Free LaTeX Template 🚀)</title>
      <dc:creator>Ankush Singh Gandhi</dc:creator>
      <pubDate>Wed, 03 Sep 2025 14:42:52 +0000</pubDate>
      <link>https://forem.com/ankushsinghgandhi/build-an-ats-friendly-resume-that-gets-seen-with-free-latex-template--o30</link>
      <guid>https://forem.com/ankushsinghgandhi/build-an-ats-friendly-resume-that-gets-seen-with-free-latex-template--o30</guid>
      <description>&lt;h1&gt;
  
  
  Most resumes fail before a human even reads them.
&lt;/h1&gt;

&lt;p&gt;Why? Because &lt;strong&gt;Applicant Tracking Systems (ATS)&lt;/strong&gt; – the software recruiters use to filter applications – can’t parse overly designed templates. So no matter how pretty your resume looks in Canva, if the ATS can’t read it, your application goes straight to the rejection pile.&lt;/p&gt;

&lt;p&gt;That’s why I built and shared a &lt;strong&gt;plain, single-column, ATS-friendly LaTeX resume template&lt;/strong&gt; → &lt;a href="https://github.com/AnkushSinghGandhi/ats-resume-template" rel="noopener noreferrer"&gt;ASG ATS Resume Template&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this blog, I’ll cover:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ Why plain templates are essential&lt;/li&gt;
&lt;li&gt;✅ Actionable resume writing tips&lt;/li&gt;
&lt;li&gt;✅ How to structure your resume effectively&lt;/li&gt;
&lt;li&gt;✅ The LaTeX template I created (and why it’s optimized for ATS + recruiters)&lt;/li&gt;
&lt;li&gt;✅ Step-by-step guide: How to use the template from GitHub in Overleaf&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Why Plain Templates Work Best
&lt;/h2&gt;

&lt;p&gt;Recruiters spend &lt;strong&gt;6–8 seconds&lt;/strong&gt; skimming your resume.&lt;br&gt;
Fancy graphics, two-column layouts, and headshots only make it harder for both &lt;strong&gt;ATS software&lt;/strong&gt; and &lt;strong&gt;humans&lt;/strong&gt; to parse your resume.&lt;/p&gt;

&lt;p&gt;The reality:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ATS reads resumes &lt;strong&gt;line by line, left to right&lt;/strong&gt; → two columns confuse parsing.&lt;/li&gt;
&lt;li&gt;Logos, icons, and tables often get &lt;strong&gt;skipped or jumbled&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Even recruiters don’t have time for visual clutter – they just want &lt;strong&gt;keywords, skills, and impact&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A great resume should be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Plain and single-column&lt;/strong&gt; → ATS-friendly&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keyword-rich&lt;/strong&gt; → Matches job description&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Skimmable&lt;/strong&gt; → Recruiters can pick impact in seconds&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One-page&lt;/strong&gt; → if you have ≤5 years of experience&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  Resume Writing Tips 🔑
&lt;/h2&gt;

&lt;p&gt;Here are the tips I’ve followed and baked into the template:&lt;/p&gt;
&lt;h3&gt;
  
  
  Structure
&lt;/h3&gt;

&lt;p&gt;✅ Start with &lt;strong&gt;Work Experience&lt;/strong&gt; (or &lt;strong&gt;Projects&lt;/strong&gt; if fresher)&lt;br&gt;
✅ Add a &lt;strong&gt;Summary section&lt;/strong&gt; with job-relevant keywords&lt;br&gt;
✅ Use &lt;strong&gt;bullet points for all achievements&lt;/strong&gt;&lt;br&gt;
✅ Place &lt;strong&gt;Skills section at the end&lt;/strong&gt; – prove them earlier in projects/experience&lt;/p&gt;
&lt;h3&gt;
  
  
  Bullet Points
&lt;/h3&gt;

&lt;p&gt;✅ Keep them &lt;strong&gt;one line (70–180 chars)&lt;/strong&gt;&lt;br&gt;
✅ Don’t end with a period&lt;br&gt;
✅ Show &lt;strong&gt;impact with numbers&lt;/strong&gt; (&lt;em&gt;“Reduced API latency by 40%”&lt;/em&gt;)&lt;br&gt;
✅ Don’t overuse action verbs – mix clarity + metrics&lt;/p&gt;
&lt;h3&gt;
  
  
  General Rules
&lt;/h3&gt;

&lt;p&gt;✅ &lt;strong&gt;No photo&lt;/strong&gt; on your resume – ATS doesn’t process images&lt;br&gt;
✅ Skip &lt;strong&gt;10th/12th school details&lt;/strong&gt; if you have higher ed or experience&lt;br&gt;
✅ Deployed projects? Add a &lt;strong&gt;hyperlink&lt;/strong&gt;&lt;br&gt;
✅ Only add &lt;strong&gt;relevant achievements &amp;amp; hobbies&lt;/strong&gt;&lt;br&gt;
✅ Use &lt;strong&gt;bold smartly&lt;/strong&gt; – to catch the eye in 2 seconds&lt;/p&gt;


&lt;h2&gt;
  
  
  Why I Built the ASG ATS Resume Template 📝
&lt;/h2&gt;

&lt;p&gt;When I started experimenting with resumes, I realized most templates online were either:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Too flashy → not ATS-friendly&lt;/li&gt;
&lt;li&gt;Too plain → didn’t highlight keywords or impact&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So I built my own &lt;strong&gt;LaTeX template&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Features:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;📄 Single-column design for ATS parsing&lt;/li&gt;
&lt;li&gt;✒️ Uses &lt;strong&gt;Tinos font&lt;/strong&gt; (ATS-safe + clean for recruiters)&lt;/li&gt;
&lt;li&gt;─── Thin dividers (no heavy graphics)&lt;/li&gt;
&lt;li&gt;🔑 Bold project titles, plain descriptions underneath&lt;/li&gt;
&lt;li&gt;📌 Bullet points optimized for readability&lt;/li&gt;
&lt;li&gt;📍 Works 100% on Overleaf, GitHub, or local LaTeX install&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👉 Try it here: &lt;a href="https://github.com/AnkushSinghGandhi/ats-resume-template" rel="noopener noreferrer"&gt;ASG ATS Resume Template&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Technical Deep-Dive: How the Template Works ⚙️
&lt;/h2&gt;

&lt;p&gt;If you’re a developer (and especially if you’ve never touched LaTeX before), here’s what you’ll appreciate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Minimal packages&lt;/strong&gt; → No bloat, just &lt;code&gt;geometry&lt;/code&gt;, &lt;code&gt;enumitem&lt;/code&gt;, &lt;code&gt;hyperref&lt;/code&gt;, and &lt;code&gt;fontspec&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Exact alignment&lt;/strong&gt; → Uses &lt;code&gt;tabular*&lt;/code&gt; for job/project alignment (role left, date right).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Custom Section Command&lt;/strong&gt; → A &lt;code&gt;\Section{}&lt;/code&gt; command renders uppercase titles + thin horizontal rule.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Consistent spacing&lt;/strong&gt; → &lt;code&gt;parskip&lt;/code&gt; + tuned margins for a 1-page layout.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Font control&lt;/strong&gt; → &lt;code&gt;\setmainfont{Tinos}&lt;/code&gt; ensures ATS-readable + modern look.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here’s a small snippet that makes section headers neat:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tex"&gt;&lt;code&gt;&lt;span class="c"&gt;% Section command: UPPERCASE bold heading + thin rule&lt;/span&gt;
&lt;span class="k"&gt;\newcommand&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="k"&gt;\Section&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;[1]&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="c"&gt;%&lt;/span&gt;
  &lt;span class="k"&gt;\vspace&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;6pt&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="k"&gt;\noindent&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="k"&gt;\large\bfseries\MakeUppercase&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;#1&lt;span class="p"&gt;}}&lt;/span&gt;&lt;span class="k"&gt;\\&lt;/span&gt;
  &lt;span class="k"&gt;\noindent\rule&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="k"&gt;\textwidth&lt;/span&gt;&lt;span class="p"&gt;}{&lt;/span&gt;0.4pt&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="k"&gt;\vspace&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;6pt&lt;span class="p"&gt;}}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And here’s how jobs/projects are aligned perfectly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tex"&gt;&lt;code&gt;&lt;span class="c"&gt;% Job line helper&lt;/span&gt;
&lt;span class="k"&gt;\newcommand&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="k"&gt;\JobLine&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;[2]&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="c"&gt;%&lt;/span&gt;
  &lt;span class="k"&gt;\noindent&lt;/span&gt;&lt;span class="nt"&gt;\begin{tabular*}&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="k"&gt;\textwidth&lt;/span&gt;&lt;span class="p"&gt;}{&lt;/span&gt;@&lt;span class="p"&gt;{}&lt;/span&gt;l@&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="k"&gt;\extracolsep&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="k"&gt;\fill&lt;/span&gt;&lt;span class="p"&gt;}}&lt;/span&gt;r@&lt;span class="p"&gt;{}}&lt;/span&gt;&lt;span class="c"&gt;%&lt;/span&gt;
  #1 &lt;span class="p"&gt;&amp;amp;&lt;/span&gt; #2&lt;span class="k"&gt;\\&lt;/span&gt;&lt;span class="nt"&gt;\end{tabular*}&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That’s the power of LaTeX → &lt;strong&gt;precision control&lt;/strong&gt; while keeping the output &lt;strong&gt;clean and consistent&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 How to Use the Template from GitHub on Overleaf
&lt;/h2&gt;

&lt;p&gt;This template works &lt;strong&gt;out of the box&lt;/strong&gt; on &lt;a href="https://www.overleaf.com/" rel="noopener noreferrer"&gt;Overleaf&lt;/a&gt;, so you don’t need to install LaTeX locally.&lt;/p&gt;

&lt;p&gt;Here’s the step-by-step:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Go to the GitHub Repo&lt;/strong&gt; → &lt;a href="https://dev.toYOUR_TEMPLATE_LINK_HERE"&gt;ASG ATS Resume Template&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Download as ZIP&lt;/strong&gt; → Click the green “Code” button → &lt;em&gt;Download ZIP&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Open Overleaf&lt;/strong&gt; → Log into &lt;a href="https://www.overleaf.com/" rel="noopener noreferrer"&gt;overleaf.com&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Upload Project&lt;/strong&gt; → New Project → Upload ZIP.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Switch Compiler&lt;/strong&gt; → In Overleaf menu → &lt;em&gt;Menu &amp;gt; Compiler &amp;gt; XeLaTeX&lt;/em&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;⚠️ Important: The template uses &lt;code&gt;fontspec&lt;/code&gt;, which only works with &lt;strong&gt;XeLaTeX/LuaLaTeX&lt;/strong&gt; (not pdfLaTeX).

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Edit &lt;code&gt;main.tex&lt;/code&gt;&lt;/strong&gt; → Replace name, work experience, projects, etc.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Recompile&lt;/strong&gt; → Click “Recompile” and download your PDF.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;✅ That’s it – your ATS-optimized resume is ready.&lt;/p&gt;




&lt;h2&gt;
  
  
  Who Should Use This Template?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;🎓 &lt;strong&gt;Students/freshers&lt;/strong&gt; → Swap “Experience” with “Projects”&lt;/li&gt;
&lt;li&gt;👨‍💻 &lt;strong&gt;Software developers&lt;/strong&gt; → ATS loves tech keywords, this layout handles them well&lt;/li&gt;
&lt;li&gt;📈 &lt;strong&gt;Early-career professionals (1–5 years)&lt;/strong&gt; → Perfect for a one-pager resume&lt;/li&gt;
&lt;li&gt;🚀 &lt;strong&gt;Anyone applying online&lt;/strong&gt; → ATS parsing guaranteed&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Your resume isn’t about looking pretty – it’s about getting &lt;strong&gt;seen and understood quickly&lt;/strong&gt;.&lt;br&gt;
With a &lt;strong&gt;plain, ATS-friendly template&lt;/strong&gt;, you instantly improve your odds of making it past the automated filters and into the hands of a recruiter.&lt;/p&gt;

&lt;p&gt;That’s why I built the &lt;strong&gt;ASG ATS Resume Template&lt;/strong&gt; → &lt;a href="https://github.com/AnkushSinghGandhi/ats-resume-template" rel="noopener noreferrer"&gt;Grab it here&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;💬 I’d love to hear from you:&lt;br&gt;
👉 What’s the &lt;strong&gt;biggest mistake&lt;/strong&gt; you’ve seen people make on resumes?&lt;/p&gt;




&lt;p&gt;✍️ &lt;em&gt;PS: This template is free to use and customize. If it helps you land an interview, let me know!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>resume</category>
      <category>career</category>
      <category>programming</category>
      <category>webdev</category>
    </item>
    <item>
      <title>💡 TIME COMPLEXITY PRIMER – Understand Big O Like a Kid With Candies 🍬</title>
      <dc:creator>Ankush Singh Gandhi</dc:creator>
      <pubDate>Sun, 29 Jun 2025 18:38:29 +0000</pubDate>
      <link>https://forem.com/ankushsinghgandhi/time-complexity-primer-understand-big-o-like-a-kid-with-candies-2ih0</link>
      <guid>https://forem.com/ankushsinghgandhi/time-complexity-primer-understand-big-o-like-a-kid-with-candies-2ih0</guid>
      <description>&lt;h2&gt;
  
  
  🧠 What is Time Complexity?
&lt;/h2&gt;

&lt;p&gt;Think of time complexity like asking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"How many steps will my program take as the input gets bigger?"&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Imagine you're:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🧸 Putting LEGO blocks one by one (&lt;code&gt;O(n)&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;🎲 Checking only the first one (&lt;code&gt;O(1)&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;📚 Flipping every page of a big book to find a word (&lt;code&gt;O(n)&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;🕵️ Searching in a sorted drawer by cutting it in half every time (&lt;code&gt;O(log n)&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🍭 Big O Notation – Like Candy Boxes!
&lt;/h2&gt;

&lt;p&gt;Let’s say you have &lt;strong&gt;n candies&lt;/strong&gt;:&lt;/p&gt;

&lt;h3&gt;
  
  
  ✅ O(1) — &lt;strong&gt;"I take 1 candy, no matter how many I have"&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;get_first&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;candies&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;candies&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;No matter if you have 10 or 10,000 candies — you &lt;strong&gt;just grab the first one&lt;/strong&gt;. 🎯&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  ✅ O(n) — &lt;strong&gt;"I check every candy"&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;find_sour_candy&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;candies&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;candy&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;candies&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;candy&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;sour&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;If there are 5 candies, you may look 5 times. If there are 100? You might look 100 times!&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  ✅ O(n²) — &lt;strong&gt;"I compare every candy with every other candy"&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;find_duplicates&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;candies&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;candies&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;j&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;candies&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="n"&gt;j&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="n"&gt;j&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Imagine you’re checking every candy against every other candy — it gets &lt;strong&gt;super slow&lt;/strong&gt; when the pile grows! 🍬🍬🍬&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  ✅ O(log n) — &lt;strong&gt;"I cut the candy box in half each time!"&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;binary_search&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;candies&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;left&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;right&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;candies&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
    &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;left&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="n"&gt;right&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;mid&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;left&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;right&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;candies&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;mid&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;
        &lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="n"&gt;candies&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;mid&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;target&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;left&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;mid&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
        &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;right&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;mid&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Smart search! Cut your pile in half every time until you find the candy 🍭&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  ✅ O(n log n) — &lt;strong&gt;"Sort candies smartly!"&lt;/strong&gt;
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Merge sort, quicksort — faster than checking every pair like O(n²), but slower than O(n)&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🍕 Analogy Recap:
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Big O&lt;/th&gt;
&lt;th&gt;Like this...&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;O(1)&lt;/td&gt;
&lt;td&gt;Grab the first candy 🍬&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;O(n)&lt;/td&gt;
&lt;td&gt;Taste every candy one by one 😋&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;O(n²)&lt;/td&gt;
&lt;td&gt;Compare every candy with every other candy 😵&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;O(log n)&lt;/td&gt;
&lt;td&gt;Smart guess by cutting box in half each time 🔪&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;O(n log n)&lt;/td&gt;
&lt;td&gt;Smart sorting like organizing Lego blocks fast 🧱&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  🧩 Exercise 1: Candy Basket 🍬
&lt;/h2&gt;

&lt;p&gt;You have a basket of &lt;code&gt;n&lt;/code&gt; candies. You want to find if there's &lt;strong&gt;any red candy&lt;/strong&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;has_red&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;candies&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;candy&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;candies&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;candy&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;red&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  ❓ What's the time complexity?
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;✅ &lt;strong&gt;Answer: &lt;code&gt;O(n)&lt;/code&gt;&lt;/strong&gt; — you may need to check all the candies!&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🧩 Exercise 2: Toy Shelf 🧸
&lt;/h2&gt;

&lt;p&gt;You have a list of 10 toys. You always play with the &lt;strong&gt;first one&lt;/strong&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;play_with_toy&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;toys&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;toys&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  ❓ Time complexity?
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;✅ &lt;strong&gt;Answer: &lt;code&gt;O(1)&lt;/code&gt;&lt;/strong&gt; — always 1 step, no matter how many toys!&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🧩 Exercise 3: Checking Every Friend's Name 👧👦
&lt;/h2&gt;

&lt;p&gt;You want to say hi to every friend at the party.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;say_hi&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;friends&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;friend&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;friends&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Hi&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;friend&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  ❓ Time complexity?
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;✅ &lt;strong&gt;Answer: &lt;code&gt;O(n)&lt;/code&gt;&lt;/strong&gt; — say "Hi" once per friend!&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🧩 Exercise 4: Double Trouble 🎭
&lt;/h2&gt;

&lt;p&gt;You want to check every pair of kids to see if they’re best friends.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;check_best_friends&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;kids&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;kid1&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;kids&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;kid2&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;kids&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;kid1&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="n"&gt;kid2&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;kid1&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; and &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;kid2&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; might be besties!&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  ❓ Time complexity?
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;✅ &lt;strong&gt;Answer: &lt;code&gt;O(n²)&lt;/code&gt;&lt;/strong&gt; — for each kid, check with every other kid.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🧩 Exercise 5: Magic Box 📦
&lt;/h2&gt;

&lt;p&gt;You have a &lt;strong&gt;sorted&lt;/strong&gt; list of stickers. You want to find "Unicorn" using binary search.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;find_unicorn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;stickers&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;left&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;right&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;stickers&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
    &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;left&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="n"&gt;right&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;mid&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;left&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;right&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;stickers&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;mid&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Unicorn&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;
        &lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="n"&gt;stickers&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;mid&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Unicorn&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;left&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;mid&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
        &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;right&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;mid&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  ❓ Time complexity?
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;✅ &lt;strong&gt;Answer: &lt;code&gt;O(log n)&lt;/code&gt;&lt;/strong&gt; — cut the box in half each time!&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  ✨ Challenge Yourself:
&lt;/h2&gt;

&lt;p&gt;Try to guess the Big O for these:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Reversing a list of &lt;code&gt;n&lt;/code&gt; items&lt;/li&gt;
&lt;li&gt;Adding an item to a dictionary&lt;/li&gt;
&lt;li&gt;Looping twice one after the other (not nested)&lt;/li&gt;
&lt;li&gt;Creating all possible pairs in a list&lt;/li&gt;
&lt;li&gt;Looping inside a loop inside a loop (3 levels!)&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Big-O Time Complexities Cheat Sheet
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Category&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Operation / Pattern&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Time Complexity&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Arrays&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Traversal, updates&lt;/td&gt;
&lt;td&gt;O(n)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Merge Sort&lt;/td&gt;
&lt;td&gt;O(n log n)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Quick Sort (average)&lt;/td&gt;
&lt;td&gt;O(n log n)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Quick Sort (worst case)&lt;/td&gt;
&lt;td&gt;O(n²)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Binary Search&lt;/td&gt;
&lt;td&gt;O(log n)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Two-pointer / Sliding Window&lt;/td&gt;
&lt;td&gt;O(n)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Prefix Sum construction&lt;/td&gt;
&lt;td&gt;O(n)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Strings&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Reverse / Palindrome check&lt;/td&gt;
&lt;td&gt;O(n)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Hashmap-based Anagram check&lt;/td&gt;
&lt;td&gt;O(n)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Sorting-based Anagram check&lt;/td&gt;
&lt;td&gt;O(n log n)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Linked List&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Reverse (iterative / recursive)&lt;/td&gt;
&lt;td&gt;O(n)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Detect Cycle (Floyd’s)&lt;/td&gt;
&lt;td&gt;O(n)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Merge Two Sorted Lists&lt;/td&gt;
&lt;td&gt;O(n)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Find Middle Node&lt;/td&gt;
&lt;td&gt;O(n)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Stack / Queue&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Push / Pop / Enqueue / Dequeue&lt;/td&gt;
&lt;td&gt;O(1)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Valid Parentheses&lt;/td&gt;
&lt;td&gt;O(n)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Next Greater Element (Monotonic Stack)&lt;/td&gt;
&lt;td&gt;O(n)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Hashing&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Insert / Search / Delete (average)&lt;/td&gt;
&lt;td&gt;O(1)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Count Frequencies&lt;/td&gt;
&lt;td&gt;O(n)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Subarray with Sum / No Repeats&lt;/td&gt;
&lt;td&gt;O(n)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Recursion / Backtracking&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Subsets / Permutations&lt;/td&gt;
&lt;td&gt;O(2^n * n)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Trees (Binary)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Traversals (Inorder / Pre / Post / Level)&lt;/td&gt;
&lt;td&gt;O(n)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Height, LCA, Validate BST&lt;/td&gt;
&lt;td&gt;O(n)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Heaps&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Insert / Delete (Min / Max heap)&lt;/td&gt;
&lt;td&gt;O(log n)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Build heap (heapify array)&lt;/td&gt;
&lt;td&gt;O(n)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Dynamic Programming&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;0/1 Knapsack&lt;/td&gt;
&lt;td&gt;O(n * W)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Fibonacci (memoized)&lt;/td&gt;
&lt;td&gt;O(n)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Longest Common Subsequence (LCS)&lt;/td&gt;
&lt;td&gt;O(n * m)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Graphs&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;DFS / BFS traversal&lt;/td&gt;
&lt;td&gt;O(V + E)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Detect Cycle (undirected)&lt;/td&gt;
&lt;td&gt;O(V + E)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Topological Sort&lt;/td&gt;
&lt;td&gt;O(V + E)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

</description>
      <category>datastructures</category>
      <category>algorithms</category>
      <category>interview</category>
      <category>python</category>
    </item>
    <item>
      <title>Mastering Development Craftsmanship: A Comprehensive Guide to Essential Coding Practices</title>
      <dc:creator>Ankush Singh Gandhi</dc:creator>
      <pubDate>Wed, 28 Feb 2024 01:08:04 +0000</pubDate>
      <link>https://forem.com/ankushsinghgandhi/mastering-development-craftsmanship-a-comprehensive-guide-to-essential-coding-practices-3bhh</link>
      <guid>https://forem.com/ankushsinghgandhi/mastering-development-craftsmanship-a-comprehensive-guide-to-essential-coding-practices-3bhh</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Welcome to the world of software development, where coding excellence is just the starting point. To truly thrive, developers must embrace a set of best practices that extend beyond functional code. In this comprehensive guide, we will explore a myriad of essential topics that every developer should focus on to build high-quality, maintainable, and efficient software.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcfnoija49twkavcoqa7z.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcfnoija49twkavcoqa7z.gif" alt="Image description" width="480" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  1) Continuous Integration and Continuous Deployment (CICD)🔽
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Implement tools like Jenkins or GitHub Actions for automated build, test, and deployment processes.&lt;/li&gt;
&lt;li&gt;Accelerate development cycles by reducing manual intervention and minimizing the risk of errors.&lt;/li&gt;
&lt;li&gt;CI/CD ensures changes are automatically tested and deployed in web applications, promoting collaboration.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  2) Style Guide🔽
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Follow coding style guides like PEP 8 for Python or Airbnb JavaScript Style Guide.&lt;/li&gt;
&lt;li&gt;Consistent coding style enhances readability and maintainability.&lt;/li&gt;
&lt;li&gt;Adherence to a style guide promotes code consistency across the entire codebase.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  3) Document Code🔽
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Utilize inline comments or tools like Sphinx and Javadoc for clear and concise documentation.&lt;/li&gt;
&lt;li&gt;Documentation aids in understanding, maintaining, and extending code effectively.&lt;/li&gt;
&lt;li&gt;Documenting REST API endpoints facilitates integration and helps in creating comprehensive API documentation.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  4) Directory Structure🔽
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Establish an organized directory structure for a well-maintained codebase.&lt;/li&gt;
&lt;li&gt;Logical and consistent structure facilitates scalability and collaboration.&lt;/li&gt;
&lt;li&gt;Group templates, static files, and views in separate directories for enhanced code readability in frameworks like Django.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  5) Variable Naming🔽
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Choose meaningful and descriptive variable names for improved readability.&lt;/li&gt;
&lt;li&gt;Descriptive names reduce ambiguity and help developers understand the intent behind each variable.&lt;/li&gt;
&lt;li&gt;Examples: &lt;code&gt;userInput&lt;/code&gt;, &lt;code&gt;totalRevenue&lt;/code&gt;, &lt;code&gt;customerName&lt;/code&gt; instead of &lt;code&gt;cname&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  6) Comments🔽
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Strive for self-explanatory code, but use comments for additional context.&lt;/li&gt;
&lt;li&gt;Comments should be concise, accurate, and focused on explaining the "why" rather than the "what."&lt;/li&gt;
&lt;li&gt;Commenting on complex algorithms or implementation choices enhances code clarity.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  7) Justified File Names🔽
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Use intuitive file names that reflect the content within, such as &lt;code&gt;UserCard.jsx&lt;/code&gt; or &lt;code&gt;apiService.js&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Meaningful file names contribute to overall code organization and facilitate navigation.&lt;/li&gt;
&lt;li&gt;File names should not be arbitrary; they should provide a roadmap for fellow developers.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  8) Keep it DRY (Don't Repeat Yourself)🔽
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Reduce redundancy in code by encapsulating reusable logic in functions, classes, or modules.&lt;/li&gt;
&lt;li&gt;DRY improves maintainability, consistency, and reduces the chance of errors.&lt;/li&gt;
&lt;li&gt;Create utility functions for common calculations to ensure consistency.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  9) KISS (Keep It Simple, Stupid)🔽
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Strive for straightforward solutions that are easy to understand and maintain.&lt;/li&gt;
&lt;li&gt;Choosing a simple, well-designed solution over unnecessary complexity enhances collaboration.&lt;/li&gt;
&lt;li&gt;Opt for straightforward algorithms to improve readability and reduce the likelihood of introducing bugs.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  10) Version Control🔽
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Proper use of version control systems like Git is crucial for collaborative development.&lt;/li&gt;
&lt;li&gt;Adopt branching strategies like Git Flow and follow commit best practices for a well-organized version history.&lt;/li&gt;
&lt;li&gt;Resolve merge conflicts promptly and communicate changes effectively for a coherent version control history.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  11) Testing🔽
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Implement comprehensive testing, including unit tests, integration tests, and end-to-end tests.&lt;/li&gt;
&lt;li&gt;Use tools like Jest for JavaScript or pytest for Python to ensure thorough test coverage.&lt;/li&gt;
&lt;li&gt;A robust test suite acts as a safety net, catching bugs early and providing confidence for code changes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  12) Code Reviews🔽
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Conduct effective code reviews with constructive feedback to maintain code quality.&lt;/li&gt;
&lt;li&gt;Automated tools like linters complement manual code reviews, enhancing overall code quality.&lt;/li&gt;
&lt;li&gt;Use a code review checklist to ensure thorough and consistent reviews across the team.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  13) Security Best Practices🔽
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Implement input validation, encryption, and regular security scanning to safeguard against vulnerabilities.&lt;/li&gt;
&lt;li&gt;Prioritize security in the development lifecycle for building robust and secure applications.&lt;/li&gt;
&lt;li&gt;Validate user inputs to prevent common security threats like SQL injection.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  14) Performance Optimization🔽
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Profile code using tools like cProfile or Chrome DevTools to identify bottlenecks.&lt;/li&gt;
&lt;li&gt;Implement caching and select efficient algorithms for a responsive and scalable application.&lt;/li&gt;
&lt;li&gt;Caching frequently accessed data reduces the load on databases and improves overall performance.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  15) Error Handling🔽
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Implement graceful error handling, logging, and monitoring with tools like Sentry or New Relic.&lt;/li&gt;
&lt;li&gt;Maintain a robust error-handling strategy for enhanced user experience and simplified debugging.&lt;/li&gt;
&lt;li&gt;Logging detailed error messages and stack traces aids in diagnosing issues quickly.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  16) Dependency Management🔽
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Effectively manage project dependencies for stability and security.&lt;/li&gt;
&lt;li&gt;Specify version ranges, conduct security scanning, and consider license compatibility with tools like npm audit or FOSSA.&lt;/li&gt;
&lt;li&gt;Regularly update dependencies to address security vulnerabilities for a secure codebase.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  17) Code Refactoring🔽
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Regularly refactor code to improve maintainability.&lt;/li&gt;
&lt;li&gt;Identify code smells, apply refactoring techniques, and maintain test coverage during refactoring.&lt;/li&gt;
&lt;li&gt;Tools like SonarQube assist in identifying areas for improvement.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  18) Cross-Browser Compatibility🔽
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Ensure web applications work across different browsers through comprehensive browser testing.&lt;/li&gt;
&lt;li&gt;Use polyfills and responsive design techniques with tools like BrowserStack and Modernizr.&lt;/li&gt;
&lt;li&gt;Testing on different browsers and devices guarantees a consistent user experience.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  19) Accessibility🔽
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Create accessible software using semantic HTML and ensuring keyboard accessibility.&lt;/li&gt;
&lt;li&gt;Test with accessibility tools like Axe or Lighthouse for inclusivity.&lt;/li&gt;
&lt;li&gt;Providing alternative text for images and ensuring proper focus order enhances accessibility.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  20) Build Automation🔽
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Automate the build process with tools like Gradle, Maven, or webpack.&lt;/li&gt;
&lt;li&gt;Integrate build automation into continuous integration workflows for standardized development processes.&lt;/li&gt;
&lt;li&gt;Automation streamlines tasks like compilation, minification, and packaging for a reliable build pipeline.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  ❤️ SPONSER ME ON GITHUB ❤️
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://github.com/sponsors/AnkushSinghGandhi"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa08qh0s78ncyxcuse3sz.png" alt="Image description" width="800" height="309"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;By incorporating these essential coding practices into your development workflow, you are not just writing code; you are crafting software that is scalable, maintainable, and efficient. Continuously improving and adhering to these practices will not only benefit your current projects but will also elevate your skills as a proficient and sought-after developer in the ever-evolving landscape of software development. Remember, the journey to mastery is ongoing, and each best practice adopted is a step towards becoming a true development craftsman.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Python Roadmap 2024 🐍</title>
      <dc:creator>Ankush Singh Gandhi</dc:creator>
      <pubDate>Fri, 09 Feb 2024 18:37:35 +0000</pubDate>
      <link>https://forem.com/ankushsinghgandhi/from-basics-to-mastery-python-development-roadmap-2024-4c1h</link>
      <guid>https://forem.com/ankushsinghgandhi/from-basics-to-mastery-python-development-roadmap-2024-4c1h</guid>
      <description>&lt;h1&gt;
  
  
  Python Developer Roadmap 2024
&lt;/h1&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;📌Step 1: Introduction🔽&lt;/strong&gt;
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Introduction to Python&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Brief history and origin of Python&lt;/li&gt;
&lt;li&gt;Guido van Rossum's role in Python's development&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Python Environment Setup&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Installation of Python using different methods (Anaconda, virtual environments)&lt;/li&gt;
&lt;li&gt;Setting up an Integrated Development Environment (IDE) like VS Code, PyCharm&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Features of Python&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Dynamic typing, simplicity, readability&lt;/li&gt;
&lt;li&gt;High-level programming language features&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Basic Python Syntax&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Variables, data types, and expressions&lt;/li&gt;
&lt;li&gt;Understanding indentation and white space&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Statements, Indentation, and Comments&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Proper use of indentation&lt;/li&gt;
&lt;li&gt;Comments and their importance&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;7 Reasons to Learn Python&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Versatility, community support, ease of learning&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Benefits and Limitations of Python&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Use cases, strengths, and potential drawbacks&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;A Career in Python&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Job roles, industries, and demand for Python developers&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Python vs Other Languages (Java, Scala, R)&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Comparison in terms of syntax, performance, and use cases&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Applications of Python&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Web development, data science, artificial intelligence, automation&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Compilers and Interpreters Available&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;CPython, Jython, IronPython, PyPy&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Getting to Know the Python Interpreter&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Basics of running Python code in the interpreter&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Flavors of Python&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;MicroPython, CircuitPython, IronPython&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Step 2: Basics🔽&lt;/strong&gt;
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Python Variables&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Naming conventions, variable assignment&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Python Variable Scope&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Local, global, and nonlocal scopes&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Data Types in Python&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Integers, floats, strings, booleans&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Python Operators&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Arithmetic, comparison, logical operators&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Bitwise Operators&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Binary manipulation&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Comparison Operators&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Detailed understanding of equality, inequality&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Operator Precedence&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Order of execution in complex expressions&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Ternary Operators&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Shorthand for conditional statements&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Python Decision Making&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;if&lt;/code&gt;, &lt;code&gt;elif&lt;/code&gt;, &lt;code&gt;else&lt;/code&gt; statements&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Switch-case in Python&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Implementing switch-case using dictionaries&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Loops in Python&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;for&lt;/code&gt; and &lt;code&gt;while&lt;/code&gt; loops&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Numbers with Python&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Math module and its functions&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Python Strings&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;String manipulation, indexing, slicing&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;String Formatters and Escape Sequences&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Formatted strings, escape characters&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;String Functions and Operations&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Common string methods&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;The &lt;code&gt;repr()&lt;/code&gt; Function&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Understanding the &lt;code&gt;repr()&lt;/code&gt; function and its use&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Step 3: Data Structures🔽&lt;/strong&gt;
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Python Lists&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;List operations, methods, and built-in functions&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;List Comprehension&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Creating concise lists in a single line&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;The &lt;code&gt;array&lt;/code&gt; Module&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Numeric arrays in Python&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Python Tuples&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Immutable sequences and use cases&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;The &lt;code&gt;zip()&lt;/code&gt; Function&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Merging multiple iterables&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Tuples vs Lists&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Choosing the right data structure&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Slicing in Python&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Extracting portions of sequences&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Binary Sequence Types: &lt;code&gt;bytes&lt;/code&gt;, &lt;code&gt;bytearray&lt;/code&gt;, &lt;code&gt;memoryview&lt;/code&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Dealing with binary data&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Dictionaries in Python&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Key-value pairs, dictionary methods&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Sets in Python&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Unordered collections with unique elements&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Booleans in Python&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Logical data type&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h1&gt;
  
  
  ❤️ SPONSER ME ON GITHUB ❤️
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://github.com/sponsors/AnkushSinghGandhi" rel="noopener noreferrer"&gt;&lt;img src="https://media.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%2Fa08qh0s78ncyxcuse3sz.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Step 4: Functional Programming🔽&lt;/strong&gt;
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Functions in Python&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Defining functions, arguments, return values&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Lambda Expressions&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Anonymous functions for concise code&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Function Arguments&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Positional arguments, keyword arguments, default values&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Function Recursion&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Solving problems using recursive functions&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Built-in Functions&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Commonly used built-in functions&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;&lt;code&gt;range()&lt;/code&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Generating sequences of numbers&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;&lt;code&gt;eval()&lt;/code&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Evaluating dynamically created expressions&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;&lt;code&gt;exec()&lt;/code&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Executing dynamic Python code&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Decorators in Python&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Enhancing functions with decorators&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Closure in Python&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Understanding closures and their applications&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Working with &lt;code&gt;itertools&lt;/code&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Powerful functions for iterators&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Step 5: Modules and Packages🔽&lt;/strong&gt;
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Modules&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Creating and importing modules&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;&lt;code&gt;Counter&lt;/code&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Counting occurrences in sequences&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;&lt;code&gt;Defaultdict&lt;/code&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Default values for missing keys in dictionaries&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;&lt;code&gt;OrderedDict&lt;/code&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Preserving order of dictionary items&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;&lt;code&gt;namedtuple&lt;/code&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Creating named tuples for clearer code&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Numeric Modules: &lt;code&gt;math&lt;/code&gt;, &lt;code&gt;decimal&lt;/code&gt;, &lt;code&gt;random&lt;/code&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Mathematical operations, precision, random number generation&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;&lt;code&gt;sys&lt;/code&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Accessing Python interpreter internals&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Generating Random Numbers&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Using &lt;code&gt;random&lt;/code&gt; module&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Packages&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Creating and structuring packages&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;&lt;code&gt;pip&lt;/code&gt; and PyPI&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Package management and external libraries&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Modules vs Packages&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Differences and use cases&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Step 6: Miscellany🔽&lt;/strong&gt;
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Regular Expressions with Python&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Pattern matching and manipulation&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Multithreading in Python&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Parallel execution for improved performance&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Working with Date and Time&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;datetime&lt;/code&gt; module, formatting, time zones&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Namespace and Scope&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Understanding variable scope and namespaces&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Virtual Environments and Packages&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Managing dependencies with virtual environments&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;The &lt;code&gt;datetime&lt;/code&gt; Module (Part I and II)&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;In-depth exploration of date and time functions&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;The &lt;code&gt;calendar&lt;/code&gt; Module&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Working with calendars and scheduling&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;The Python Debugger (&lt;code&gt;pdb&lt;/code&gt;)&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Debugging tools and techniques&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;CGI Programming with Python&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Basics of Common Gateway Interface (CGI)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Understanding &lt;code&gt;urllib&lt;/code&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Working with URLs and web requests&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Terminologies in Python&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Glossary of key Python terms&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;What's new in Python 3.7?&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Updates and features introduced in Python 3.7&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Deep Copy vs Shallow Copy&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Differences and use cases&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Assert Statements in Python&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Using assertions for testing&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Pretty-Printing with &lt;code&gt;pprint&lt;/code&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Improved printing for complex data structures&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h1&gt;
  
  
  Step 7: Object-Oriented Programming🔽
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Methods in Python&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Defining methods within classes&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Methods vs Functions&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Differences and use cases&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Magic (Dunder) Methods&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Special methods for customization&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Classes in Python&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Creating and using classes&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Abstract class&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Defining abstract classes for inheritance&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Concrete class&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Instantiating concrete classes&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Python Objects&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Instances, attributes, and methods&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Inheritance in Python&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Extending classes and reusing code&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Multiple Inheritance&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Managing complexity with multiple base classes&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Python Operator Overloading&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Customizing behavior for operators&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Generators in Python&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Lazy evaluation for memory-efficient code&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Iterators in Python&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Creating iterable objects&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Generators vs Iterators&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Differences and use cases&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Serialization with &lt;code&gt;pickle&lt;/code&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Serializing and deserializing Python objects&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;The &lt;code&gt;property&lt;/code&gt; Decorator&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Creating read-only and calculated attributes&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fsvb50jcxukyfwzb17omk.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fsvb50jcxukyfwzb17omk.gif" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Step 8: File Handling🔽&lt;/strong&gt;
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Reading and Writing Files&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Opening, reading, and writing to files&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Managing Directories and Files&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Operations on directories and file paths&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;The &lt;code&gt;os&lt;/code&gt; Module&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Interacting with the operating system&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;The &lt;code&gt;shutil&lt;/code&gt; Module&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;High-level file operations&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Copying Files with Python&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Copying files and directories&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Renaming Files with Python&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Changing file names programmatically&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Zipping Files with Python&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Creating and extracting zip archives&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Step 9: Exception Handling🔽&lt;/strong&gt;
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Errors and Exceptions&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Different types of errors in Python&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Exception Handling&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Using &lt;code&gt;try&lt;/code&gt;, &lt;code&gt;except&lt;/code&gt;, &lt;code&gt;finally&lt;/code&gt; blocks&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Testing with &lt;code&gt;unittest&lt;/code&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Unit testing for robust code&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Step 10: Important Libraries🔽&lt;/strong&gt;
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Python Libraries&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Overview of key Python libraries and their applications&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;&lt;code&gt;NumPy&lt;/code&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Numerical computing in Python&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;&lt;code&gt;SciPy&lt;/code&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Scientific computing with additional functionality&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;&lt;code&gt;pandas&lt;/code&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Data manipulation and analysis&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Visualizing with &lt;code&gt;matplotlib&lt;/code&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Creating various types of plots and visualizations&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;&lt;code&gt;PyQT&lt;/code&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Developing desktop applications with Python&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;&lt;code&gt;PyGTK&lt;/code&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;GTK+ toolkit integration for Python&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;&lt;code&gt;PyTorch&lt;/code&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Deep learning library&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;&lt;code&gt;Altair&lt;/code&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Declarative statistical visualization library&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Web Scraping with &lt;code&gt;Scrapy&lt;/code&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Extracting data from websites&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Data access mechanisms&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Connecting to databases, data storage&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;&lt;code&gt;Spacy&lt;/code&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Natural Language Processing (NLP) library&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;&lt;code&gt;pygame&lt;/code&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Game development with Python&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;&lt;code&gt;tkinter&lt;/code&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;GUI development toolkit&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h1&gt;
  
  
  ❤️ SPONSER ME ON GITHUB ❤️
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://github.com/sponsors/AnkushSinghGandhi" rel="noopener noreferrer"&gt;&lt;img src="https://media.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%2Fa08qh0s78ncyxcuse3sz.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Step 11: Other Functionality🔽&lt;/strong&gt;
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;XML Processing&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reading and writing XML files&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Sending Mail with Python&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sending emails programmatically&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Networking&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Basics of network programming&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Processing Images&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Working with images in Python&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;GUI Programming&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Developing graphical user interfaces&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Forensics&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Basics of digital forensics with Python&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Extensions to Python&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Exploring Python extension modules&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Tools&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Popular Python development tools and IDEs&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Accessing the Database&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Database connectivity and querying&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Logging with Python&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Implementing logging for debugging and monitoring&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Descriptors&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Understanding descriptors in Python&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Buffering Protocol&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Managing input/output buffering&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;WSGI Protocol&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Web Server Gateway Interface for web applications&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Context Managers&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Implementing and using context managers&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Design Patterns&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Common design patterns in Python&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Async.io&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Asynchronous I/O for concurrent programming&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Metaprogramming&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Techniques for writing code that manipulates code&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Project-Based Learning&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Introduce project-based learning with practical Python projects.&lt;/li&gt;
&lt;li&gt;Provide examples in web development, data analysis, and machine learning.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Best Practices and Code Style&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Discuss Python best practices and adherence to coding standards.&lt;/li&gt;
&lt;li&gt;Emphasize the importance of following PEP 8.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Testing and Test-Driven Development (TDD)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Introduce testing principles and the use of unittest and pytest.&lt;/li&gt;
&lt;li&gt;Encourage the adoption of test-driven development.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Continuous Integration and Deployment (CI/CD)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Guide developers on setting up CI/CD pipelines using Jenkins, Travis CI, or GitHub Actions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Containerization and Docker&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Explore containerization with Docker for Python applications.&lt;/li&gt;
&lt;li&gt;Cover Docker images, Docker Compose, and container orchestration.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Web Development Frameworks Beyond Django and Flask&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Explore other web development frameworks like FastAPI, Tornado, and Pyramid.&lt;/li&gt;
&lt;li&gt;Provide tutorials on building applications with these frameworks.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Database Connectivity and ORM&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Extend the section on database access to include ORM with SQLAlchemy.&lt;/li&gt;
&lt;li&gt;Discuss connecting to various databases and performing CRUD operations.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Advanced Topics in Data Science and Machine Learning&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Dive deeper into advanced topics like deep learning with TensorFlow or PyTorch.&lt;/li&gt;
&lt;li&gt;Explore NLP with spaCy and reinforcement learning.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cloud Services and Deployment&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Guide developers on deploying Python applications to cloud platforms (AWS, Azure, Google Cloud).&lt;/li&gt;
&lt;li&gt;Discuss serverless computing, container orchestration, and cloud-native development.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Security Best Practices&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Emphasize security best practices for Python applications.&lt;/li&gt;
&lt;li&gt;Discuss common vulnerabilities, secure coding techniques, and code analysis tools.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Performance Optimization&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Provide tips and techniques for optimizing Python application performance.&lt;/li&gt;
&lt;li&gt;Discuss profiling tools, caching strategies, and code optimization.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Collaboration and Version Control&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Discuss collaboration tools like Git and platforms such as GitHub or GitLab.&lt;/li&gt;
&lt;li&gt;Explain branching strategies, pull requests, and code review best practices.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Community Engagement&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Encourage readers to engage with the Python community.&lt;/li&gt;
&lt;li&gt;Discuss participating in open-source projects, attending conferences, and joining forums.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Interview Preparation&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Include a section on preparing for Python developer interviews.&lt;/li&gt;
&lt;li&gt;Provide common interview questions, coding challenges, and tips for technical interviews.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Updates on Latest Python Releases&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Regularly update the blog with information on the latest Python releases.&lt;/li&gt;
&lt;li&gt;Highlight new features, improvements, and changes in best practices.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Step 12: Popular Frameworks🔽&lt;/strong&gt;
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Selenium&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Automation testing and web scraping&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Web Frameworks&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Overview of various web frameworks

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Django&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Full-stack web development framework&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Flask&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Lightweight web framework for small to medium-sized applications&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;/li&gt;

&lt;/ul&gt;

&lt;/li&gt;

&lt;/ul&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Step 13: Specializations🔽&lt;/strong&gt;
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Learn advanced Data Structures and Algorithms&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Advanced data structures (trees, graphs), algorithmic complexity&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Metaprogramming&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Advanced techniques for code manipulation&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Blockchain&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Understanding and implementing blockchain concepts&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Quantum Programming&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Basics of quantum computing and programming&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Artificial Intelligence &amp;amp; Deep Learning&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Neural networks, deep learning frameworks&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Machine Learning&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Machine learning algorithms, model training&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Data Science&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Exploratory data analysis, machine learning in data science&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Ethical Hacking&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Cybersecurity, ethical hacking techniques&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Step 14: Continuous Learning🔽&lt;/strong&gt;
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Stay updated with the latest Python versions and features&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Regularly check Python official documentation and release notes&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Contribute to open-source projects&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Collaborate with the Python community on GitHub&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Join developer communities&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Participate in forums, attend meetups and conferences&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Attend conferences and webinars&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Stay informed about industry trends and best practices&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Read Python-related blogs and articles&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Follow reputable sources for Python-related content&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Step 15: Soft Skills Development🔽&lt;/strong&gt;
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Emphasize the importance of soft skills for Python developers.&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Effective communication, teamwork, and problem-solving skills&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Discuss collaboration within development teams.&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Resources for improving teamwork and interpersonal skills&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Provide resources for soft skills improvement.&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Books, courses, and workshops for enhancing communication and collaboration&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Encourage community involvement.&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Engaging with local tech communities and online forums&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Step 16: Version Control Systems Beyond Git🔽&lt;/strong&gt;
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Introduce other version control systems.&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Mercurial, SVN, and their use cases&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Discuss strengths and weaknesses.&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;When to prefer each version control system&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Explore alternative workflows.&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Diverging and converging strategies in version control&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Step 17: Python Design Patterns🔽&lt;/strong&gt;
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Dive into common design patterns in Python.&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Singleton, Factory, Observer, and more&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Provide examples and use cases.&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Practical applications of each design pattern&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Discuss best practices in design.&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Creating scalable and maintainable code&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Step 18: Advanced Web Development🔽&lt;/strong&gt;
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Explore advanced web development concepts.&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Asynchronous web frameworks like FastAPI and Tornado&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Introduce WebSocket communication.&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Real-time communication in web applications&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Discuss server-sent events.&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Implementing real-time updates in web applications&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Step 19: Real-time Applications with Python🔽&lt;/strong&gt;
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Explore building real-time applications.&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Technologies like WebSockets and asynchronous programming&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Discuss frameworks suitable for real-time use cases.&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Applications in chat, notifications, and live updates&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Step 20: Microservices Architecture🔽&lt;/strong&gt;
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Discuss the principles of microservices architecture.&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Decoupling and scalability in modern applications&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Explore Python frameworks for microservices.&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Flask, FastAPI, and tools for building microservices&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Discuss containerization and orchestration.&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Docker, Kubernetes, and managing microservices&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Step 21: DevOps Practices🔽&lt;/strong&gt;
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Introduce DevOps practices relevant to Python development.&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Infrastructure as code (IaC), configuration management&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Discuss continuous deployment.&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Implementing CI/CD pipelines with Jenkins, Travis CI, or GitHub Actions&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Step 22: Advanced Data Processing🔽&lt;/strong&gt;
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Dive into advanced data processing techniques.&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Distributed computing with Apache Spark and Dask&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Explore big data solutions.&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Handling large datasets efficiently&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Step 23: IoT (Internet of Things) with Python🔽&lt;/strong&gt;
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Explore using Python for IoT projects.&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Connecting devices, data processing, and visualization&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Discuss IoT libraries and frameworks.&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;MicroPython, CircuitPython, and IoT platforms&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Step 24: Quantum Computing with Python🔽&lt;/strong&gt;
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Provide an introduction to quantum computing principles.&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Basic concepts and principles of quantum programming&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Explore Python libraries for quantum programming.&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Qiskit, Cirq, and tools for quantum computing&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Step 25: Python for Automation and Robotics🔽&lt;/strong&gt;
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Discuss Python's role in automation and robotics.&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Libraries and frameworks for controlling robots and automating tasks&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Explore real-world applications.&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Building automation scripts and controlling robots with Python&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Step 26: Accessibility in Python Applications🔽&lt;/strong&gt;
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Highlight the importance of creating accessible software.&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Principles of accessibility and inclusivity&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Discuss best practices for accessibility in Python applications.&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Implementing accessible user interfaces and content&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Step 27: Contributing to Open Source🔽&lt;/strong&gt;
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Guide developers on how to contribute to open-source Python projects.&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Finding projects, submitting pull requests, and collaborating&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Discuss the benefits of contributing to the community.&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Skill development, networking, and giving back&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Step 28: Building a Portfolio🔽&lt;/strong&gt;
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Offer guidance on building a strong portfolio for Python developers.&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Showcasing projects, contributions, and skills effectively&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Discuss the importance of a portfolio in job applications.&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Attracting employers and demonstrating expertise&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Step 29: Python Career Paths🔽&lt;/strong&gt;
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Explore various career paths for Python developers.&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Roles in web development, data science, machine learning, DevOps, etc.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Discuss specialization and niche areas.&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Choosing a career path based on interests and skills&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Step 30: Staying Current in Tech🔽&lt;/strong&gt;
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Provide tips on staying updated with the latest trends and technologies.&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Subscribing to newsletters, following industry blogs, and participating in online communities&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Discuss the importance of continuous learning.&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Embracing a mindset of lifelong learning for career success&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h1&gt;
  
  
  ❤️ SPONSER ME ON GITHUB ❤️
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://github.com/sponsors/AnkushSinghGandhi" rel="noopener noreferrer"&gt;&lt;img src="https://media.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%2Fa08qh0s78ncyxcuse3sz.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Remember to adapt this roadmap based on your interests and career goals. The world of technology is constantly evolving, so staying curious and embracing a mindset of continuous learning is crucial for success. Happy coding!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>python</category>
      <category>devops</category>
      <category>github</category>
    </item>
    <item>
      <title>Flutter With Python 😮😮</title>
      <dc:creator>Ankush Singh Gandhi</dc:creator>
      <pubDate>Fri, 09 Feb 2024 17:25:40 +0000</pubDate>
      <link>https://forem.com/ankushsinghgandhi/building-cross-platform-apps-with-flutter-and-python-a-short-guide-using-flet-epa</link>
      <guid>https://forem.com/ankushsinghgandhi/building-cross-platform-apps-with-flutter-and-python-a-short-guide-using-flet-epa</guid>
      <description>&lt;p&gt;In the dynamic landscape of mobile app development, the combination of Flutter and Python has gained considerable traction. This synergy allows developers to create cross-platform applications that marry the expressive UI capabilities of Flutter with the versatility and power of Python. In this guide, we'll delve into the integration of Flutter and Python using the Flet library, providing a detailed walkthrough from installation to creating a sample app and exploring more advanced scenarios.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fbp3v3knl397jct9uge54.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fbp3v3knl397jct9uge54.gif" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction to Flutter and Python Integration
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. &lt;strong&gt;Flutter: A Brief Overview:&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What is Flutter?&lt;/strong&gt; Flutter is an open-source UI software development toolkit created by Google. It enables developers to build natively compiled applications for mobile, web, and desktop from a single codebase.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Why Flutter?&lt;/strong&gt; Flutter is known for its expressive UI, fast development cycles, and the ability to create beautiful, performant applications across multiple platforms.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. &lt;strong&gt;Python in Mobile App Development:&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Why Python?&lt;/strong&gt; Python is renowned for its readability, ease of learning, and extensive libraries. Integrating Python into mobile app development allows developers to leverage its capabilities for data processing, machine learning, and more.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Getting Started with Flet
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. &lt;strong&gt;What is Flet?&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Flet is a Python package that acts as a bridge between Flutter and Python. It facilitates seamless communication, enabling data exchange and method invocation.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. &lt;strong&gt;Installing Flet:&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Use pip to install Flet in your Python environment:
 &lt;code&gt;bash
 pip install flet
&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. &lt;strong&gt;Setting Up a Flutter Project:&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Install Flutter by following the official documentation: &lt;a href="https://flutter.dev/docs/get-started/install" rel="noopener noreferrer"&gt;Flutter Installation Guide&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Create a new Flutter project using:
 &lt;code&gt;bash
 flutter create my_flutter_project
&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. &lt;strong&gt;Connecting Flutter with Python using Flet:&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Initialize Flet in your Flutter project by adding the Flet dependency in your &lt;code&gt;pubspec.yaml&lt;/code&gt; file:
 &lt;code&gt;yaml
 dependencies:
   flet: ^0.2.1
&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Creating a Sample Flutter-Python App
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. &lt;strong&gt;Building the Flutter UI:&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Create a simple Flutter UI with a button that triggers a Python function.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Example Flutter code (&lt;code&gt;lib/main.dart&lt;/code&gt;):&lt;/p&gt;
&lt;pre class="highlight dart"&gt;&lt;code&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="s"&gt;'package:flutter/material.dart'&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
 &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="s"&gt;'package:flet/flet.dart'&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

 &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="n"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
   &lt;span class="n"&gt;runApp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;MyApp&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
 &lt;span class="p"&gt;}&lt;/span&gt;

 &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;MyApp&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="n"&gt;StatelessWidget&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
   &lt;span class="nd"&gt;@override&lt;/span&gt;
   &lt;span class="n"&gt;Widget&lt;/span&gt; &lt;span class="n"&gt;build&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;BuildContext&lt;/span&gt; &lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
     &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;MaterialApp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
       &lt;span class="nl"&gt;home:&lt;/span&gt; &lt;span class="n"&gt;MyHomePage&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
     &lt;span class="p"&gt;);&lt;/span&gt;
   &lt;span class="p"&gt;}&lt;/span&gt;
 &lt;span class="p"&gt;}&lt;/span&gt;

 &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;MyHomePage&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="n"&gt;StatelessWidget&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
   &lt;span class="nd"&gt;@override&lt;/span&gt;
   &lt;span class="n"&gt;Widget&lt;/span&gt; &lt;span class="n"&gt;build&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;BuildContext&lt;/span&gt; &lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
     &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;Scaffold&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
       &lt;span class="nl"&gt;appBar:&lt;/span&gt; &lt;span class="n"&gt;AppBar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
         &lt;span class="nl"&gt;title:&lt;/span&gt; &lt;span class="n"&gt;Text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'Flutter with Python'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
       &lt;span class="p"&gt;),&lt;/span&gt;
       &lt;span class="nl"&gt;body:&lt;/span&gt; &lt;span class="n"&gt;Center&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
         &lt;span class="nl"&gt;child:&lt;/span&gt; &lt;span class="n"&gt;ElevatedButton&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
           &lt;span class="nl"&gt;onPressed:&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
             &lt;span class="n"&gt;Flet&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;callPythonFunction&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'my_python_function'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s"&gt;'param'&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s"&gt;'Hello from Flutter!'&lt;/span&gt;&lt;span class="p"&gt;});&lt;/span&gt;
           &lt;span class="p"&gt;},&lt;/span&gt;
           &lt;span class="nl"&gt;child:&lt;/span&gt; &lt;span class="n"&gt;Text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'Invoke Python Function'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
         &lt;span class="p"&gt;),&lt;/span&gt;
       &lt;span class="p"&gt;),&lt;/span&gt;
     &lt;span class="p"&gt;);&lt;/span&gt;
   &lt;span class="p"&gt;}&lt;/span&gt;
 &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. &lt;strong&gt;Handling Python Function in Flutter:&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Implement the corresponding Python function using Flet.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Example Python code (&lt;code&gt;my_python_script.py&lt;/code&gt;):&lt;/p&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt; &lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;flet&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Flet&lt;/span&gt;

 &lt;span class="nd"&gt;@Flet.register_function&lt;/span&gt;
 &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;my_python_function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;param&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
     &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Received from Flutter: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;param&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
     &lt;span class="c1"&gt;# Add your Python logic here
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. &lt;strong&gt;Running the Flutter App:&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Launch your Flutter app using:
 &lt;code&gt;bash
 flutter run
&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. &lt;strong&gt;Running the Python Script:&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Run your Python script using:
 &lt;code&gt;bash
 python my_python_script.py
&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Advanced Integration: Using Python for Data Processing
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. &lt;strong&gt;Integrating Python Data Processing:&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Leverage Python's data processing capabilities within your Flutter app.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Example Python code (&lt;code&gt;my_data_processing.py&lt;/code&gt;):&lt;/p&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt; &lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;flet&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Flet&lt;/span&gt;

 &lt;span class="nd"&gt;@Flet.register_function&lt;/span&gt;
 &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;process_data&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
     &lt;span class="c1"&gt;# Add your data processing logic here
&lt;/span&gt;     &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;item&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;upper&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;item&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
     &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. &lt;strong&gt;Handling Data Processing in Flutter:&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Modify your Flutter app to handle data processing using Python.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Example Flutter code (&lt;code&gt;lib/main.dart&lt;/code&gt;):&lt;/p&gt;
&lt;pre class="highlight dart"&gt;&lt;code&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;MyHomePage&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="n"&gt;StatelessWidget&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
   &lt;span class="kt"&gt;List&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kt"&gt;String&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;items&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;'apple'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;'banana'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;'orange'&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;

   &lt;span class="nd"&gt;@override&lt;/span&gt;
   &lt;span class="n"&gt;Widget&lt;/span&gt; &lt;span class="n"&gt;build&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;BuildContext&lt;/span&gt; &lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
     &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;Scaffold&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
       &lt;span class="nl"&gt;appBar:&lt;/span&gt; &lt;span class="n"&gt;AppBar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
         &lt;span class="nl"&gt;title:&lt;/span&gt; &lt;span class="n"&gt;Text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'Flutter with Python'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
       &lt;span class="p"&gt;),&lt;/span&gt;
       &lt;span class="nl"&gt;body:&lt;/span&gt; &lt;span class="n"&gt;Center&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
         &lt;span class="nl"&gt;child:&lt;/span&gt; &lt;span class="n"&gt;Column&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
           &lt;span class="nl"&gt;mainAxisAlignment:&lt;/span&gt; &lt;span class="n"&gt;MainAxisAlignment&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;center&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
           &lt;span class="nl"&gt;children:&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;Widget&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;[&lt;/span&gt;
             &lt;span class="n"&gt;ElevatedButton&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
               &lt;span class="nl"&gt;onPressed:&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="kd"&gt;async&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                 &lt;span class="kt"&gt;List&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kd"&gt;dynamic&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;processedData&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;
                     &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;Flet&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;callPythonFunction&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'process_data'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s"&gt;'data'&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;items&lt;/span&gt;&lt;span class="p"&gt;});&lt;/span&gt;
                 &lt;span class="n"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'Processed Data: &lt;/span&gt;&lt;span class="si"&gt;$processedData&lt;/span&gt;&lt;span class="s"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
               &lt;span class="p"&gt;},&lt;/span&gt;
               &lt;span class="nl"&gt;child:&lt;/span&gt; &lt;span class="n"&gt;Text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'Process Data with Python'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
             &lt;span class="p"&gt;),&lt;/span&gt;
           &lt;span class="p"&gt;],&lt;/span&gt;
         &lt;span class="p"&gt;),&lt;/span&gt;
       &lt;span class="p"&gt;),&lt;/span&gt;
     &lt;span class="p"&gt;);&lt;/span&gt;
   &lt;span class="p"&gt;}&lt;/span&gt;
 &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  ❤️ SPONSER ME ON GITHUB ❤️
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://github.com/sponsors/AnkushSinghGandhi" rel="noopener noreferrer"&gt;&lt;img src="https://media.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%2Fa08qh0s78ncyxcuse3sz.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;Integrating Flutter with Python using the Flet library provides developers with a flexible and powerful solution for cross-platform development. From invoking Python functions to leveraging Python's data processing capabilities within your Flutter app, this integration opens up a world of possibilities. As you explore and apply these techniques in your projects, you'll find that the combination of Flutter and Python brings together the best of both worlds. Happy coding!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>tutorial</category>
      <category>python</category>
      <category>mobile</category>
    </item>
    <item>
      <title>Financial Data with Python 🤑🤑</title>
      <dc:creator>Ankush Singh Gandhi</dc:creator>
      <pubDate>Fri, 09 Feb 2024 16:59:25 +0000</pubDate>
      <link>https://forem.com/ankushsinghgandhi/mastering-global-data-feeds-websocket-api-with-python-for-real-time-financial-data-1bj3</link>
      <guid>https://forem.com/ankushsinghgandhi/mastering-global-data-feeds-websocket-api-with-python-for-real-time-financial-data-1bj3</guid>
      <description>&lt;p&gt;&lt;a href="https://media.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%2F17zpwdtyucetvh8c0i16.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2F17zpwdtyucetvh8c0i16.gif" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the fast-paced world of finance, having access to real-time market data is crucial for making informed decisions. Global Data Feeds (GDF) provides a powerful WebSocket API that enables developers to tap into a continuous stream of financial data. In this blog, we'll explore how to use the GDF WebSocket API with Python to fetch and process real-time financial information.&lt;/p&gt;

&lt;h2&gt;
  
  
  Understanding Global Data Feeds WebSocket API
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. &lt;strong&gt;Introduction to Global Data Feeds:&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Global Data Feeds Platform:&lt;/strong&gt; A comprehensive platform offering financial market data from various exchanges.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;WebSocket API:&lt;/strong&gt; A real-time communication protocol for efficient and continuous data updates.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. &lt;strong&gt;Key Features of GDF WebSocket API:&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Real-Time Price Updates:&lt;/strong&gt; Receive live updates on stock prices, indices, and other financial instruments.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Market Depth Information:&lt;/strong&gt; Access detailed market depth information for better analysis.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Trade Execution Updates:&lt;/strong&gt; Stay informed about trade executions and transactions.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Getting Started with Python and GDF WebSocket API
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. &lt;strong&gt;Setting Up Your GDF Account:&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Register on GDF:&lt;/strong&gt; Sign up for an account on the Global Data Feeds platform.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;API Access Credentials:&lt;/strong&gt; Obtain API access credentials (API key, secret key).&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. &lt;strong&gt;Installing Required Python Libraries:&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Use &lt;code&gt;pip&lt;/code&gt; to install necessary libraries:
 &lt;code&gt;bash
 pip install websocket-client requests
&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. &lt;strong&gt;Connecting to GDF WebSocket API:&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Use the &lt;code&gt;websocket-client&lt;/code&gt; library to establish a WebSocket connection.&lt;/li&gt;
&lt;li&gt;Implement authentication using your GDF API key.&lt;/li&gt;
&lt;/ul&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;   &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;websocket&lt;/span&gt;&lt;br&gt;
   &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;

&lt;p&gt;&lt;span class="c1"&gt;# Replace with your GDF API key&lt;br&gt;
&lt;/span&gt;   &lt;span class="n"&gt;API_KEY&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;your_api_key&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;on_message&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ws&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;&lt;br&gt;
       &lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;loads&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br&gt;
       &lt;span class="c1"&gt;# Process incoming data as per your requirements&lt;br&gt;
&lt;/span&gt;       &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;on_error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ws&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;error&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;&lt;br&gt;
       &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Error: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;error&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;on_close&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ws&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;close_status_code&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;close_msg&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;&lt;br&gt;
       &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Closed&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;on_open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ws&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;&lt;br&gt;
       &lt;span class="n"&gt;auth_payload&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;event&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;auth&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;apiKey&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;API_KEY&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;br&gt;
       &lt;span class="n"&gt;ws&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;dumps&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;auth_payload&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;&lt;strong&gt;name&lt;/strong&gt;&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;&lt;strong&gt;main&lt;/strong&gt;&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;br&gt;
       &lt;span class="n"&gt;ws_url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;wss://api.gdf.com/ws&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;br&gt;
       &lt;span class="n"&gt;ws&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;websocket&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;WebSocketApp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ws_url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;on_message&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;on_message&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;on_error&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;on_error&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;on_close&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;on_close&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br&gt;
       &lt;span class="n"&gt;ws&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;on_open&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;on_open&lt;/span&gt;&lt;br&gt;
       &lt;span class="n"&gt;ws&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;run_forever&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;br&gt;
&lt;/p&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
&lt;br&gt;
  &lt;br&gt;
  &lt;br&gt;
  Exploring Real-Time Financial Data&lt;br&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. &lt;strong&gt;Receiving Price Updates:&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Subscribe to specific instruments to receive real-time price updates.&lt;/li&gt;
&lt;li&gt;Extract and process price information for analysis.&lt;/li&gt;
&lt;/ul&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;   &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;on_open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ws&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;&lt;br&gt;
       &lt;span class="c1"&gt;# Subscribe to real-time updates for AAPL and MSFT stocks&lt;br&gt;
&lt;/span&gt;       &lt;span class="n"&gt;subscribe_payload&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;event&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;subscribe&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ticker&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;AAPL&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;MSFT&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]}&lt;/span&gt;&lt;br&gt;
       &lt;span class="n"&gt;ws&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;dumps&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;subscribe_payload&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

&lt;p&gt;&lt;span class="c1"&gt;# ...&lt;br&gt;
&lt;/span&gt;&lt;br&gt;
   &lt;span class="c1"&gt;# Process real-time price updates&lt;br&gt;
&lt;/span&gt;   &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;process_price_update&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;&lt;br&gt;
       &lt;span class="n"&gt;instrument&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ticker&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;br&gt;
       &lt;span class="n"&gt;price&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;price&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;br&gt;
       &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Price Update for &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;instrument&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;: $&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;price&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br&gt;
&lt;/p&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h3&gt;
&lt;br&gt;
  &lt;br&gt;
  

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Accessing Market Depth Information:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/h3&gt;


&lt;ul&gt;
&lt;li&gt;Subscribe to market depth updates for a specific instrument.&lt;/li&gt;
&lt;li&gt;Extract and analyze market depth data for better insights.&lt;/li&gt;
&lt;/ul&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;   &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;on_open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ws&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;&lt;br&gt;
       &lt;span class="c1"&gt;# Subscribe to market depth updates for AAPL stock&lt;br&gt;
&lt;/span&gt;       &lt;span class="n"&gt;depth_subscribe_payload&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;event&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;subscribe&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ticker&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;AAPL&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;depth&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;br&gt;
       &lt;span class="n"&gt;ws&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;dumps&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;depth_subscribe_payload&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

&lt;p&gt;&lt;span class="c1"&gt;# ...&lt;br&gt;
&lt;/span&gt;&lt;br&gt;
   &lt;span class="c1"&gt;# Process market depth updates&lt;br&gt;
&lt;/span&gt;   &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;process_market_depth&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;&lt;br&gt;
       &lt;span class="n"&gt;instrument&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ticker&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;br&gt;
       &lt;span class="n"&gt;bids&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;bids&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;br&gt;
       &lt;span class="n"&gt;asks&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;asks&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;br&gt;
       &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Market Depth for &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;instrument&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; - Bids: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;bids&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;, Asks: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;asks&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br&gt;
&lt;/p&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h3&gt;
&lt;br&gt;
  &lt;br&gt;
  

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Handling Trade Execution Updates:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/h3&gt;


&lt;ul&gt;
&lt;li&gt;Subscribe to trade execution updates for a specific instrument.&lt;/li&gt;
&lt;li&gt;Capture and process trade execution data for timely information.&lt;/li&gt;
&lt;/ul&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;   &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;on_open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ws&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;&lt;br&gt;
       &lt;span class="c1"&gt;# Subscribe to trade execution updates for AAPL stock&lt;br&gt;
&lt;/span&gt;       &lt;span class="n"&gt;trade_subscribe_payload&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;event&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;subscribe&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ticker&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;AAPL&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;trades&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;br&gt;
       &lt;span class="n"&gt;ws&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;dumps&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;trade_subscribe_payload&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

&lt;p&gt;&lt;span class="c1"&gt;# ...&lt;br&gt;
&lt;/span&gt;&lt;br&gt;
   &lt;span class="c1"&gt;# Process trade execution updates&lt;br&gt;
&lt;/span&gt;   &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;process_trade_execution&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;&lt;br&gt;
       &lt;span class="n"&gt;instrument&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ticker&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;br&gt;
       &lt;span class="n"&gt;price&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;price&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;br&gt;
       &lt;span class="n"&gt;quantity&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;quantity&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;br&gt;
       &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Trade Executed for &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;instrument&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; - Price: $&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;price&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;, Quantity: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;quantity&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br&gt;
&lt;/p&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
&lt;br&gt;
  &lt;br&gt;
  &lt;br&gt;
  Advanced Usage of Global Data Feeds WebSocket API&lt;br&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. &lt;strong&gt;Fetching Last Quotes for Multiple Instruments:&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Extend the WebSocket subscription to receive last quotes for multiple instruments simultaneously.&lt;/li&gt;
&lt;li&gt;Parse and process the last quote data for detailed insights.&lt;/li&gt;
&lt;/ul&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;   &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;on_open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ws&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;&lt;br&gt;
       &lt;span class="c1"&gt;# Subscribe to last quotes for AAPL, MSFT, and GOOGL stocks&lt;br&gt;
&lt;/span&gt;       &lt;span class="n"&gt;last_quote_subscribe_payload&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;event&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;subscribe&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ticker&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;AAPL&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;MSFT&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;GOOGL&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;lastquote&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;br&gt;
       &lt;span class="n"&gt;ws&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;dumps&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;last_quote_subscribe_payload&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

&lt;p&gt;&lt;span class="c1"&gt;# ...&lt;br&gt;
&lt;/span&gt;&lt;br&gt;
   &lt;span class="c1"&gt;# Process last quote updates&lt;br&gt;
&lt;/span&gt;   &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;process_last_quote&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;&lt;br&gt;
       &lt;span class="n"&gt;instrument&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ticker&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;br&gt;
       &lt;span class="n"&gt;bid_price&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;bid&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;br&gt;
       &lt;span class="n"&gt;ask_price&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ask&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;br&gt;
       &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Last Quote for &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;instrument&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; - Bid: $&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;bid_price&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;, Ask: $&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;ask_price&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br&gt;
&lt;/p&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h3&gt;
&lt;br&gt;
  &lt;br&gt;
  

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Fetching Strike Prices for Options:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/h3&gt;


&lt;ul&gt;
&lt;li&gt;Subscribe to receive information about strike prices for options on a particular underlying instrument.&lt;/li&gt;
&lt;li&gt;Analyze and utilize strike price data for option trading strategies.&lt;/li&gt;
&lt;/ul&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;   &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;on_open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ws&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;&lt;br&gt;
       &lt;span class="c1"&gt;# Subscribe to strike prices for options on AAPL&lt;br&gt;
&lt;/span&gt;       &lt;span class="n"&gt;strike_price_subscribe_payload&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;event&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;subscribe&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ticker&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;AAPL&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;strikeprices&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;br&gt;
       &lt;span class="n"&gt;ws&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;dumps&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;strike_price_subscribe_payload&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

&lt;p&gt;&lt;span class="c1"&gt;# ...&lt;br&gt;
&lt;/span&gt;&lt;br&gt;
   &lt;span class="c1"&gt;# Process strike price updates&lt;br&gt;
&lt;/span&gt;   &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;process_strike_price&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;&lt;br&gt;
       &lt;span class="n"&gt;instrument&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ticker&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;br&gt;
       &lt;span class="n"&gt;strike_prices&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;strikeprices&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;br&gt;
       &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Strike Prices for Options on &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;instrument&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;strike_prices&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br&gt;
&lt;/p&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h3&gt;
&lt;br&gt;
  &lt;br&gt;
  

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Fetching Instrument Details:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/h3&gt;


&lt;ul&gt;
&lt;li&gt;Retrieve detailed information about a specific financial instrument.&lt;/li&gt;
&lt;li&gt;Utilize instrument details for comprehensive market analysis.&lt;/li&gt;
&lt;/ul&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;   &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;on_open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ws&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;&lt;br&gt;
       &lt;span class="c1"&gt;# Subscribe to instrument details for AAPL&lt;br&gt;
&lt;/span&gt;       &lt;span class="n"&gt;instrument_details_subscribe_payload&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;event&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;subscribe&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ticker&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;AAPL&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;instrumentdetails&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;br&gt;
       &lt;span class="n"&gt;ws&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;dumps&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;instrument_details_subscribe_payload&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

&lt;p&gt;&lt;span class="c1"&gt;# ...&lt;br&gt;
&lt;/span&gt;&lt;br&gt;
   &lt;span class="c1"&gt;# Process instrument details&lt;br&gt;
&lt;/span&gt;   &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;process_instrument_details&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;&lt;br&gt;
       &lt;span class="n"&gt;instrument&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ticker&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;br&gt;
       &lt;span class="n"&gt;details&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;instrumentdetails&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;br&gt;
       &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Instrument Details for &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;instrument&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;details&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br&gt;
&lt;/p&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h3&gt;
&lt;br&gt;
  &lt;br&gt;
  

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Fetching Last Quote Array:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/h3&gt;


&lt;ul&gt;
&lt;li&gt;Subscribe to receive an array of last quotes for multiple instruments.&lt;/li&gt;
&lt;li&gt;Handle and process the array of last quotes for efficient data analysis.&lt;/li&gt;
&lt;/ul&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;   &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;on_open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ws&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;&lt;br&gt;
       &lt;span class="c1"&gt;# Subscribe to last quotes array for AAPL, MSFT, and GOOGL stocks&lt;br&gt;
&lt;/span&gt;       &lt;span class="n"&gt;last_quote_array_subscribe_payload&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;event&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;subscribe&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ticker&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;AAPL&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;MSFT&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;GOOGL&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;lastquotearray&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;br&gt;
       &lt;span class="n"&gt;ws&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;dumps&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;last_quote_array_subscribe_payload&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

&lt;p&gt;&lt;span class="c1"&gt;# ...&lt;br&gt;
&lt;/span&gt;&lt;br&gt;
   &lt;span class="c1"&gt;# Process last quote array updates&lt;br&gt;
&lt;/span&gt;   &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;process_last_quote_array&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;&lt;br&gt;
       &lt;span class="n"&gt;quotes_array&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;lastquotes&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;br&gt;
       &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;quote&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;quotes_array&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;br&gt;
           &lt;span class="n"&gt;instrument&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;quote&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ticker&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;br&gt;
           &lt;span class="n"&gt;bid_price&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;quote&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;bid&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;br&gt;
           &lt;span class="n"&gt;ask_price&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;quote&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ask&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;br&gt;
           &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Last Quote for &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;instrument&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; - Bid: $&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;bid_price&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;, Ask: $&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;ask_price&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br&gt;
&lt;/p&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h3&gt;
&lt;br&gt;
  &lt;br&gt;
  

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Fetching Expiry Dates for Options:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/h3&gt;


&lt;ul&gt;
&lt;li&gt;Subscribe to receive expiration dates for options on a particular underlying instrument.&lt;/li&gt;
&lt;li&gt;Leverage expiration date information for options trading strategies.&lt;/li&gt;
&lt;/ul&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;   &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;on_open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ws&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;&lt;br&gt;
       &lt;span class="c1"&gt;# Subscribe to expiration dates for options on AAPL&lt;br&gt;
&lt;/span&gt;       &lt;span class="n"&gt;expiry_dates_subscribe_payload&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;event&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;subscribe&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ticker&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;AAPL&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;expirydates&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;br&gt;
       &lt;span class="n"&gt;ws&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;dumps&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;expiry_dates_subscribe_payload&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

&lt;p&gt;&lt;span class="c1"&gt;# ...&lt;br&gt;
&lt;/span&gt;&lt;br&gt;
   &lt;span class="c1"&gt;# Process expiry date updates&lt;br&gt;
&lt;/span&gt;   &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;process_expiry_dates&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;&lt;br&gt;
       &lt;span class="n"&gt;instrument&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ticker&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;br&gt;
       &lt;span class="n"&gt;expiry_dates&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;expirydates&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;br&gt;
       &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Expiry Dates for Options on &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;instrument&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;expiry_dates&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br&gt;
&lt;/p&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h3&gt;
&lt;br&gt;
  &lt;br&gt;
  

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Fetching Option Chain Data:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/h3&gt;


&lt;ul&gt;
&lt;li&gt;Subscribe to receive the option chain data for a specific underlying instrument.&lt;/li&gt;
&lt;li&gt;Analyze the option chain for various strike prices, expirations, and Greeks.&lt;/li&gt;
&lt;/ul&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;   &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;on_open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ws&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;&lt;br&gt;
       &lt;span class="c1"&gt;# Subscribe to option chain data for AAPL&lt;br&gt;
&lt;/span&gt;       &lt;span class="n"&gt;option_chain_subscribe_payload&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;event&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;subscribe&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ticker&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;AAPL&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;optionchain&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;br&gt;
       &lt;span class="n"&gt;ws&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;dumps&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;option_chain_subscribe_payload&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

&lt;p&gt;&lt;span class="c1"&gt;# ...&lt;br&gt;
&lt;/span&gt;&lt;br&gt;
   &lt;span class="c1"&gt;# Process option chain updates&lt;br&gt;
&lt;/span&gt;   &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;process_option_chain&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;&lt;br&gt;
       &lt;span class="n"&gt;instrument&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ticker&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;br&gt;
       &lt;span class="n"&gt;option_chain&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;optionchain&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;br&gt;
       &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Option Chain for &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;instrument&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;option_chain&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br&gt;
&lt;/p&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h3&gt;
&lt;br&gt;
  &lt;br&gt;
  

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Fetching Greeks for Options:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/h3&gt;


&lt;ul&gt;
&lt;li&gt;Subscribe to receive Greeks (Delta, Gamma, Theta, Vega) for options on a specific underlying instrument.&lt;/li&gt;
&lt;li&gt;Utilize Greeks data for risk management and option pricing strategies.&lt;/li&gt;
&lt;/ul&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;

&lt;p&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;on_open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ws&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;&lt;br&gt;
       &lt;span class="c1"&gt;# Subscribe to Greeks for options on AAPL&lt;br&gt;
&lt;/span&gt;       &lt;span class="n"&gt;greeks_subscribe_payload&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;event&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;subscribe&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ticker&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;AAPL&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;greeks&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;br&gt;
       &lt;span class="n"&gt;ws&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;dumps&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;greeks_subscribe_payload&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;span class="c1"&gt;# ...&lt;br&gt;
&lt;/span&gt;&lt;br&gt;
   &lt;span class="c1"&gt;# Process Greeks updates&lt;br&gt;
&lt;/span&gt;   &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;process_greeks&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;&lt;br&gt;
       &lt;span class="n"&gt;instrument&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ticker&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;br&gt;
       &lt;span class="n"&gt;greeks_data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;greeks&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;br&gt;
       &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Greeks for Options on &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;instrument&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;greeks_data&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br&gt;
&lt;/p&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
&lt;br&gt;
  &lt;br&gt;
  &lt;br&gt;
  Best Practices and Considerations&lt;br&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. &lt;strong&gt;Error Handling and Reconnection:&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Implement robust error handling to manage unexpected scenarios.&lt;/li&gt;
&lt;li&gt;Set up reconnection mechanisms to ensure continuous data flow.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. &lt;strong&gt;Data Processing and Analysis:&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Use appropriate data structures to efficiently process and store real-time data.&lt;/li&gt;
&lt;li&gt;Implement algorithms for analyzing price trends, market depth, and trade executions.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. &lt;strong&gt;Throttling and Rate Limiting:&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Adhere to GDF's API usage policies, including any rate limits imposed.&lt;/li&gt;
&lt;li&gt;Implement throttling mechanisms to avoid exceeding rate limits.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Advanced Real-Time Financial Applications
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fcgfbhuw9tae4f84ni1f0.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fcgfbhuw9tae4f84ni1f0.gif" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  1. &lt;strong&gt;Building an Advanced Options Trading Dashboard:&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Utilize option chain data, strike prices, and Greeks for creating a comprehensive options trading dashboard.&lt;/li&gt;
&lt;li&gt;Implement real-time updates for efficient decision-making.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. &lt;strong&gt;Implementing Algorithmic Trading Strategies:&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Leverage real-time data, last quotes, and instrument details to implement algorithmic trading strategies.&lt;/li&gt;
&lt;li&gt;Integrate decision-making logic based on advanced financial data.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. &lt;strong&gt;Developing a Real-Time Stock Ticker:&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Utilize GDF WebSocket API to create a dynamic stock ticker application.&lt;/li&gt;
&lt;li&gt;Display real-time price updates for selected instruments.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. &lt;strong&gt;Building a Market Depth Analyzer:&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Implement a tool to visualize and analyze market depth data.&lt;/li&gt;
&lt;li&gt;Use graphical representations to enhance understanding.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  ❤️ SPONSER ME ON GITHUB ❤️
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://github.com/sponsors/AnkushSinghGandhi" rel="noopener noreferrer"&gt;&lt;img src="https://media.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%2Fa08qh0s78ncyxcuse3sz.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;Congratulations! You've explored advanced features of the Global Data Feeds WebSocket API with Python, enabling you to build sophisticated financial applications. By incorporating last quotes, strike prices, instrument details, option chain data, and Greeks into your analysis, you can take your financial insights to the next level. Happy coding and profitable trading!&lt;/p&gt;

&lt;h2&gt;
  
  
  Part 2 Coming Soon.......
&lt;/h2&gt;

</description>
      <category>webdev</category>
      <category>python</category>
      <category>api</category>
      <category>frontend</category>
    </item>
    <item>
      <title>Creat Algorithm Complexity Chrome Extension</title>
      <dc:creator>Ankush Singh Gandhi</dc:creator>
      <pubDate>Sat, 01 Oct 2022 14:53:33 +0000</pubDate>
      <link>https://forem.com/ankushsinghgandhi/creat-your-first-chrome-extension-mk</link>
      <guid>https://forem.com/ankushsinghgandhi/creat-your-first-chrome-extension-mk</guid>
      <description>&lt;h2&gt;
  
  
  If you are a Google Chrome user, you've probably used some extensions in the browser.
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/ojJsHKUFHRaAU/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/ojJsHKUFHRaAU/giphy.gif" alt="img"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Have you ever considered building one yourself? In this tutorial, I'll show you how to build a Chrome extension from the ground up.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is a Chrome Extension?
&lt;/h2&gt;

&lt;p&gt;A chrome extension is an application that is installed in the Chrome browser to improve the browser's capabilities. You can easily create one by utilising web technologies like as HTML, CSS, and JavaScript.&lt;/p&gt;

&lt;p&gt;Developing a chrome extension is similar to creating a web application, but it requires a &lt;u&gt;manifest.json&lt;/u&gt; file, which we will go over in the last of this post.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Will our Chrome Extension Look Like?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F55637484%2F136690307-603b0ac4-b11c-467f-b8e3-9266a178fb24.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F55637484%2F136690307-603b0ac4-b11c-467f-b8e3-9266a178fb24.png" alt="img"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The complete source code of this project can be found on &lt;a href="https://github.com/AnkushSinghGandhi/algorithm-complexity-extension" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Create a Chrome Extension?
&lt;/h2&gt;

&lt;p&gt;Let's dive into the step-by-step process:&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Create Project Folder and HTML File
&lt;/h2&gt;

&lt;p&gt;Start by creating an empty folder for your project. Inside it, create an index.html file with the following HTML boilerplate:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html lang="en"&amp;gt;

&amp;lt;head&amp;gt;
    &amp;lt;meta charset="UTF-8"&amp;gt;
    &amp;lt;meta http-equiv="X-UA-Compatible" content="IE=edge"&amp;gt;
    &amp;lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&amp;gt;

    &amp;lt;link rel="stylesheet" href="popup.css"&amp;gt;

    &amp;lt;title&amp;gt;Algoritm Complexity Extension&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;

&amp;lt;body&amp;gt;
&amp;lt;/body&amp;gt;

&amp;lt;script src="popup.js"&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  2. Design Your Extension Popup
&lt;/h2&gt;

&lt;p&gt;In the popup.html file, structure your extension's popup:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;body&amp;gt;
    &amp;lt;h1 class="ml title"&amp;gt;Algoritm Complexity Extension&amp;lt;/h1&amp;gt;

    &amp;lt;div class="container"&amp;gt;
        &amp;lt;h3 class="algo" id="algorithm"&amp;gt;&amp;lt;/h3&amp;gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Best time complexity: &amp;lt;/b&amp;gt;&amp;lt;div id="best"&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/p&amp;gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Average time complexity: &amp;lt;/b&amp;gt;&amp;lt;div id="avg"&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/h4&amp;gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Worst time complexity: &amp;lt;/b&amp;gt;&amp;lt;p id="worst"&amp;gt;&amp;lt;/p&amp;gt;&amp;lt;/h4&amp;gt;
        &amp;lt;div class="al-auto"&amp;gt;
            &amp;lt;button id="algo" class="button"&amp;gt;Next&amp;lt;/button&amp;gt;
        &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;p class="ml"&amp;gt;
        &amp;amp;copy; &amp;lt;a href="https://github.com/ankushsinghgandhi" style="text-decoration: none; color:blue;"&amp;gt;Ankush Singh Gandhi&amp;lt;/a&amp;gt; 2021
    &amp;lt;/p&amp;gt;
&amp;lt;/body&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  3. Style Your Popup
&lt;/h2&gt;

&lt;p&gt;In popup.css, style your popup to make it visually appealing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
body {
    width: 300px;
    background-color:cornsilk;
}
.ml {
    margin: auto;
    text-align: center;
}
.title {
    text-align: center;
}
.container {
    height: 280px;
    position: relative;
    border: 3px solid green;
}
.al-auto {
    margin: 0;
    position: absolute;
    bottom: 10%;
    left: 50%;
    -ms-transform: translate(-50%, -50%);
    transform: translate(-50%, -50%);
}

.button {
    background-color: #4CAF50; /* Green */
    border: none;
    color: white;
    padding: 5px;
    text-align: center;
    text-decoration: none;
    display: inline-block;
    font-size: 16px;
    font-weight: bold;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  4. Implement JavaScript Logic
&lt;/h2&gt;

&lt;p&gt;In popup.js, add JavaScript code to handle button clicks and display algorithm complexities:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;var algorithms = ['Linear Search','Binary Search', 'Bubble Sort', 'Selection Sort', 'Insertion Sort', 'Merge Sort', 'Quick Sort', 'Heap Sort', 'Bucket Sort', 'Radix Sort', 'Tim Sort', 'Shell Sort']
var besttime = ['O(1)', 'O(1)', 'O(n)', 'O(n^2)', 'O(n)', 'O(nlogn)', 'O(nlogn)', 'O(nlogn)', 'O(n+k)', 'O(nk)', 'O(n)', 'O(n)']
var avgtime = ['O(n)', 'O(logn)', 'O(n^2)', 'O(n^2)', 'O(n^2)', 'O(nlogn)', 'O(nlogn)', 'O(nlogn)', 'O(n+k)', 'O(nk)', 'O((nlogn)^2)']
var worsttime = ['O(n)', 'O(logn)', 'O(n^2)', 'O(n^2)', 'O(n^2)', 'O(nlogn)', 'O(n^2)', 'O(nlogn)', 'O(n^2)', 'O(nk)', 'O((nlogn)^2)']

document.getElementById("algo").addEventListener("click", newComplexity);

function newComplexity() {
    var random = Math.floor(Math.random() * (algorithms.length));
    document.getElementById('algorithm').innerText = algorithms[random];
    document.getElementById('best').innerHTML = besttime[random];
    document.getElementById('avg').innerHTML = avgtime[random];
    document.getElementById('worst').innerHTML = worsttime[random];
}

newComplexity()
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  5. Create manifest.json
&lt;/h2&gt;

&lt;p&gt;In the root folder, create a manifest.json file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
    "manifest_version": 3,
    "name": "Algoritm Complexity Extension",
    "version": "1.0.0",
    "description": "Shows complexities of random algorithms",
    "action": {
        "default_popup": "popup.html",
        "default_icon": "algo-icon.png"
    },
    "icons": {
        "16": "algo-icon.png",
        "32": "algo-icon.png",
        "48": "algo-icon.png",
        "128": "algo-icon.png"
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And add the following code inside the file and save.&lt;/p&gt;

&lt;p&gt;Name, version, description, manifest version (3 in this example, which is the most recent manifest version), author, and action columns are all included in our manifest.json file. The value for default popup in the action field contains the location to the HTML file, which in this example is index.html.&lt;/p&gt;

&lt;p&gt;You can examine all of the manifest.json file configurations &lt;a href="https://developer.chrome.com/docs/extensions/mv3/manifest/" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Load the Extension in Chrome
&lt;/h2&gt;

&lt;p&gt;We need to go to Select More Tools and then choose Extensions from the browser menu as shown in the picture below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F55637484%2F135705139-dad510e2-6109-46f5-acaa-1b82da1fc5bb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F55637484%2F135705139-dad510e2-6109-46f5-acaa-1b82da1fc5bb.png" alt="img"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After choosing Extensions, it redirects to the extensions page in Chrome. Make sure to enable the Developer mode here.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F55637484%2F136553728-082dfb4f-ceaf-42be-9dfa-4375708c4188.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F55637484%2F136553728-082dfb4f-ceaf-42be-9dfa-4375708c4188.png" alt="img"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once that's done, you need to click the Load unpacked button which will allow us to load our project in the Chrome extension store.&lt;/p&gt;

&lt;p&gt;Now, the extension is available in our Chrome extension store. You can also pin the extension in the browser.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F55637484%2F136690307-603b0ac4-b11c-467f-b8e3-9266a178fb24.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F55637484%2F136690307-603b0ac4-b11c-467f-b8e3-9266a178fb24.png" alt="img"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This extension works only in your browser. If you want to publish it on the Chrome Web Store, you can follow this &lt;a href="https://developer.chrome.com/docs/webstore/register/" rel="noopener noreferrer"&gt;link&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;CONGRATULATIONS, we just created our very first chrome extension.&lt;/p&gt;

&lt;p&gt;The entire code for this project is available on &lt;a href="https://github.com/AnkushSinghGandhi/algorithm-complexity-extension" rel="noopener noreferrer"&gt;Github&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I hope this post help you get your first chrome extension up and running. if you need help in creating a chrome extension, or need help with any other project you can DM me on &lt;a href="https://twitter.com/ankushsgandhi" rel="noopener noreferrer"&gt;twitter&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There more similar projects available on my &lt;a href="https://github.com/ankushsinghgandhi" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>webdev</category>
      <category>programming</category>
      <category>hacktoberfest</category>
    </item>
    <item>
      <title>Understanding Software Engineering</title>
      <dc:creator>Ankush Singh Gandhi</dc:creator>
      <pubDate>Thu, 20 May 2021 06:10:21 +0000</pubDate>
      <link>https://forem.com/ankushsinghgandhi/software-engineering-3gbm</link>
      <guid>https://forem.com/ankushsinghgandhi/software-engineering-3gbm</guid>
      <description>&lt;h1&gt;
  
  
  &lt;strong&gt;Software Engineering🔽&lt;/strong&gt;
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;It is a systematic, disciplined, cost-effective technique for software development.&lt;/li&gt;
&lt;li&gt;It is an Engineering approach to develop software.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🟢Software Engineering Process
&lt;/h3&gt;

&lt;p&gt;1) Software Development Lifecycle&lt;br&gt;
2) Requirements &amp;amp; Specification (SRS)&lt;br&gt;
3) Architecture&lt;br&gt;
4) Software Design Process&lt;br&gt;
5) Implementation&lt;br&gt;
6) Development&lt;br&gt;
7) Testing&lt;/p&gt;
&lt;h1&gt;
  
  
  &lt;strong&gt;Software Development Lifecycle🔽&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;It is a process used by the software engineering industry to design develop and test high-quality software SDLC tends to produce high-quality software that meets customer expectations.&lt;/p&gt;
&lt;h3&gt;
  
  
  🟢SDLC Models
&lt;/h3&gt;

&lt;p&gt;There are processes, methodologies and frameworks range from specific prescriptive steps that can be used by the organization there are many SDLC models that have been developed to achieve the different required objective the model specifies various stages of the process and the order in which they are carried out.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Waterfall Model&lt;/li&gt;
&lt;li&gt;V Model&lt;/li&gt;
&lt;li&gt;Incremental Model&lt;/li&gt;
&lt;li&gt;Iterative Model&lt;/li&gt;
&lt;li&gt;Spiral Model&lt;/li&gt;
&lt;li&gt;RAD Model&lt;/li&gt;
&lt;li&gt;Prototype Model&lt;/li&gt;
&lt;li&gt;Agile Model&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  🟢Waterfall Model
&lt;/h3&gt;

&lt;p&gt;It is a breakdown of project activities into linear sequential phases where each face depends on the deliverables of the previous one.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2F5yat5l6scectuaiijpos.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2F5yat5l6scectuaiijpos.jpg" alt="Software Engineering"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  🟢Incremental Model
&lt;/h3&gt;

&lt;p&gt;The incremental build model is a method of software development where the model is designed, implemented, and tested incrementally (a little more is added each time) until the product is finished the product defined finished when it satisfies all requirements&lt;/p&gt;

&lt;p&gt;Each iteration passes through the requirement, design, coding, and testing phase and each subsequent release of the system adds function to the previous release until all designed functionality has been implemented.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Febu7xt0vb2isu5fixbyh.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Febu7xt0vb2isu5fixbyh.jpg" alt="Software Engineering"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  🟢Iterative Model
&lt;/h3&gt;

&lt;p&gt;The iterative model is a particular implementation of a software development life cycle (SDLC) that focuses on an initial, simplified implementation, which then progressively gains more complexity and a broader feature set until the final system is complete. When discussing the iterative method, the concept of incremental development will also often be used liberally and interchangeably, which describes the incremental alterations made during the design and implementation of each new iteration.&lt;/p&gt;

&lt;p&gt;Unlike the more traditional waterfall model, which focuses on a stringent step-by-step process of development stages, the iterative model is best thought of as a cyclical process. After an initial planning phase, a small handful of stages are repeated over and over, with each completion of the cycle incrementally improving and iterating on the software. Enhancements can quickly be recognized and implemented throughout each iteration, allowing the next iteration to be at least marginally better than the last.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fm7xglfglflwwstaxnfrv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fm7xglfglflwwstaxnfrv.png" alt="Software Engineering"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  🟢Spiral Model
&lt;/h3&gt;

&lt;p&gt;The spiral model combines the idea of iterative development with the systematic, controlled aspects of the waterfall model. This Spiral model is a combination of the iterative development process model and sequential linear development model i.e. the waterfall model with a very high emphasis on risk analysis. It allows incremental releases of the product or incremental refinement through each iteration around the spiral.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fqtf8ji9nvv7ibhmzghin.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fqtf8ji9nvv7ibhmzghin.jpg" alt="Software Engineering"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  🟢Agile Model
&lt;/h3&gt;

&lt;p&gt;The meaning of Agile is swift or versatile." Agile process model" refers to a software development approach based on iterative development. Agile methods break tasks into smaller iterations or parts that do not directly involve long-term planning. The project scope and requirements are laid down at the beginning of the development process. Plans regarding the number of iterations, the duration, and the scope of each iteration are clearly defined in advance.&lt;/p&gt;

&lt;p&gt;Each iteration is considered as a short time "frame" in the Agile process model, which typically lasts from one to four weeks. The division of the entire project into smaller parts helps to minimize the project risk and to reduce the overall project delivery time requirements. Each iteration involves a team working through a full software development life cycle including planning, requirements analysis, design, coding, and testing before a working product is demonstrated to the client.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fgnmgxl3y9krunmwv4g94.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fgnmgxl3y9krunmwv4g94.jpg" alt="Software Engineering"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Agile is a methodology. It's a way of thinking. It is NOT a model in and of itself.&lt;/p&gt;

&lt;p&gt;Agile was invented because the scope of software development was changing. Waterfall methods aren't bad, they're just slow, and not built for a lot of modern problems.&lt;/p&gt;

&lt;p&gt;This is largely due to the complexity of modern systems which make them hard to plan 100%. This means at some point, a change will be required, and production will stop until all the documents are updated.&lt;/p&gt;

&lt;p&gt;With agile however, we can move a little bit quicker. We are constantly looking for and adjusting to change.&lt;/p&gt;
&lt;h3&gt;
  
  
  📌Agile Manifesto
&lt;/h3&gt;

&lt;p&gt;The agile manifesto is a set of guiding principles for agile development. They are: &lt;/p&gt;

&lt;p&gt;🔺Individuals and interactions over process and tools.&lt;/p&gt;

&lt;p&gt;🔺Working software over comprehensive documentation.&lt;/p&gt;

&lt;p&gt;🔺Customer collaboration over contract negotiation.&lt;/p&gt;

&lt;p&gt;🔺Responding to change over following a plan.&lt;/p&gt;

&lt;p&gt;With this set of rules, all agile models are created. Note, in here we aren't throwing out processes and tools, and we aren't going without a plan. We are simply just creating priorities within the development process. We want to make the piece of software that is needed. To do this, we need to keep communication channels open and collaborate with all involved.&lt;/p&gt;

&lt;p&gt;Through this manifesto, models were created that fit these rules.&lt;/p&gt;
&lt;h3&gt;
  
  
  📌Agile Models
&lt;/h3&gt;

&lt;p&gt;🔺Scrum - Scrum is focused on sprints. Sprints are these 1-4 week production cycles. We take the software, come up with a goal of where we want it to be, and then build it to there.&lt;/p&gt;

&lt;p&gt;Once we finish a sprint, we then go back to the stakeholders, show them the software, take suggestions, and move on to the next sprint.&lt;/p&gt;

&lt;p&gt;All of this allows us to stay flexible. We are communicating with the stakeholders almost every 2 weeks with this model. This means we are constantly able to take those suggestions and change the direction of development.&lt;/p&gt;
&lt;h4&gt;
  
  
  For more deeper understanding
&lt;/h4&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="/ankushsinghgandhi" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media.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%2F471579%2F0b120e45-d3a5-4605-88c5-d2eaecc00966.jpg" alt="ankushsinghgandhi"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/ankushsinghgandhi/scrum-cheat-sheet-16ab" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Scrum Cheat Sheet&lt;/h2&gt;
      &lt;h3&gt;Ankush Singh Gandhi ・ Feb 4 '21&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


&lt;p&gt;🔺Kanban - The kanban system is one of optimization. With kanban, we are trying to analyze the flow of production and figure out the slowdowns.&lt;/p&gt;

&lt;p&gt;To do this, we usually use some sort of visual flowchart. We break the project up into tasks and fill up the chart. We are then able to see if any part of production has a slowdown. Maybe for example, our review process is slowing us down, or maybe it's planning.&lt;/p&gt;

&lt;p&gt;With kanban, we are trying to make small adjustments into the right direction. We want to work with the existing process, not replace it.&lt;/p&gt;

&lt;p&gt;🔺Lean Startup - Lean startup is a way of testing out the market before spending on development. Here we create a MVP (Minimum Viable Product) to see if there is interest in the product we are developing.&lt;/p&gt;

&lt;p&gt;Production costs a lot of money. It would be really bad if we spent $500,000 on a project, just to figure out that nobody is actually interested in that product.&lt;/p&gt;

&lt;p&gt;An example of this would be to build a website that sells a certain product. Get it working to the point where people can place that item into a cart. Then when they go to purchase, have it give them a friendly message stating that this feature will be coming soon. We then track how many people are actually interested in buying products off our website.&lt;/p&gt;

&lt;p&gt;If we have a lot of interest, then we are good to go ahead with production. If we don't have as much interest, then maybe we need to rethink our design.&lt;/p&gt;

&lt;h3&gt;
  
  
  🟢Waterfall Model Example
&lt;/h3&gt;

&lt;h4&gt;
  
  
  1) Requirements
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;collecting email &amp;amp; message&lt;/li&gt;
&lt;li&gt;store in db&lt;/li&gt;
&lt;li&gt;prevent bad input&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  2) Design
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;using HTML &amp;amp; CSS for building&lt;/li&gt;
&lt;li&gt;JS for input verification&lt;/li&gt;
&lt;li&gt;MySQL for backend&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  3)Development
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;actual coding&lt;/li&gt;
&lt;li&gt;documenting&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  4) Testing
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;does form collect input&lt;/li&gt;
&lt;li&gt;does it send info. to db&lt;/li&gt;
&lt;li&gt;does it prevent bad input&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  5) Deployment
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;deploying on AWS&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  6) Maintainence
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;fixing bugs&lt;/li&gt;
&lt;li&gt;adding features&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Requirements &amp;amp; Specification🔽&lt;/strong&gt;
&lt;/h1&gt;

&lt;h3&gt;
  
  
  🟢Requirements
&lt;/h3&gt;

&lt;p&gt;A way of figuring out the exact specification of what the software should do all things that define the goal of the system.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;A non-tech definition of something the user requires from the system.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Anyone can understand.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;ex - ability to submit a request for medical treatment form.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🟢Specification
&lt;/h3&gt;

&lt;p&gt;A more technical way of figuring out exactly what the software should do we can say it is the technical aspect of requirements.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;A technical definition of what users require from the system.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Keep it simple we are not trying to design.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;ex - send AES 256 form data from the frontend to the server.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🟢Example
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Requirement
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;The tire must work on SUV automobiles.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Specification
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Must support 75,00lbs pressure.&lt;/li&gt;
&lt;li&gt;Tire must fill US DOT standards.&lt;/li&gt;
&lt;li&gt;T or greater speed quality.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🟢Types of Requirements
&lt;/h3&gt;

&lt;h4&gt;
  
  
  On the basis of functionality there are two types of requirements
&lt;/h4&gt;

&lt;p&gt;1.Functional&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;What are the functions of the program &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;what should the system do &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;2.Non-Functional&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;what goals should be met &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How should the system work&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Other than these two there are three more types of requirements
&lt;/h4&gt;

&lt;p&gt;1.Product&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;must have of the product itself&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;ex - the app must be coded in kotlin&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;2.Organizational&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;company policies, standards, style, etc&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;ex - data should be encrypted by AES 256&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;ex - project should be developed by SCRUM &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;3.External&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;external law, regulations, trends, etc&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;ex - it must use SSL due to law Xyz in the US&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Design: Architecture🔽&lt;/strong&gt;
&lt;/h1&gt;

&lt;h3&gt;
  
  
  🟢Architecture Introduction
&lt;/h3&gt;

&lt;p&gt;Architecture is the highest level of design within a system. It is the link between idea and reality. It takes our idea for the system, and creates a plan for it. We focus on only the largest areas of the system here.  We want to break it down from idea, into concrete areas to build.&lt;/p&gt;

&lt;p&gt;In software, bad architecture is something that CAN'T be fixed with good programming. It is a critical step within the development process. Once we decide on an architecture, we have to understand that it can't be changed.&lt;/p&gt;

&lt;h3&gt;
  
  
  🟢Architecture Overview
&lt;/h3&gt;

&lt;h3&gt;
  
  
  📌Bad Architecture
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fjua15xanshz5j447voj9.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fjua15xanshz5j447voj9.jpg" alt="Software Engineering"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  📌Good Architecture
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fuu5goiiz02ceps97m80q.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fuu5goiiz02ceps97m80q.jpg" alt="Software Engineering"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Software architecture is all about breaking up larger systems and ideas, into smaller focused systems. Our first step is to take the requirements, and build an initial architecture. We take this broad set of ideas and guidelines, and have to organize it into functioning areas.&lt;/p&gt;

&lt;p&gt;Each of these areas are then put through the same process to break them up into smaller and smaller pieces. Eventually we will have a blueprint for the entire system designed.&lt;/p&gt;

&lt;p&gt;Good architecture is hard. It takes a lot of resources to develop correctly. However, this upfront cost is almost always recovered from how maintainable the software is. This will reduce the amount of bugs, and the time to fix those bugs.&lt;/p&gt;

&lt;p&gt;Good architecture also helps for faster development and better resource utilization. If we break up the project into small pieces, we will understand how to have multiple developers work at the same time on it.&lt;/p&gt;

&lt;h3&gt;
  
  
  🟢Software Architecture example
&lt;/h3&gt;

&lt;p&gt;1.We are going to design an architecture of a game.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2F1eu6vj33apalrlfx4mwl.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2F1eu6vj33apalrlfx4mwl.jpg" alt="Software Engineering"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2.now we should divide these layers based on functionality.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fgikcci43x6687unmjn8z.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fgikcci43x6687unmjn8z.jpg" alt="Software Engineering"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3.now we will add another layer that controls the interaction between frontend and game logic.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2F01tf696m4wdnf0h7i8o4.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2F01tf696m4wdnf0h7i8o4.jpg" alt="Software Engineering"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  🟢Architecture Patterns
&lt;/h3&gt;

&lt;h3&gt;
  
  
  📌Pipe-and-Filter
&lt;/h3&gt;

&lt;p&gt;The pipe and filter pattern is a good pattern to use to process data through multiple different layers. The key to this pattern is the ability of each step to input, and output the same type of data. So if you send a set of numbers in one side, you will get a set of numbers out the other side.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fyu0ae7cds804rm228kn7.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fyu0ae7cds804rm228kn7.jpeg" alt="Software Engineering"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  🟢 Architecture Patterns
&lt;/h1&gt;

&lt;h2&gt;
  
  
  📌 Pipe-and-Filter
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;pipe and filter&lt;/strong&gt; pattern is a good pattern to use to process data through multiple different layers. The key to this pattern is the ability of each step to input and output the same type of data. So if you send a set of numbers in one side, you will get a set of numbers out the other side.&lt;/p&gt;

&lt;p&gt;This key constraint makes it so you can mix and match the logic in any order and still have the program work. These different filters can also be set up across multiple servers.&lt;/p&gt;

&lt;p&gt;There is definitely an added complexity with this pattern. Setting it up can be tricky to get correct. Also, if the data is lost at any step, the entire process is broken.&lt;/p&gt;

&lt;h2&gt;
  
  
  📌 Client-Server
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;client-server&lt;/strong&gt; pattern is one that is quite common today. Every single website and most phone apps use this architecture. With this pattern, there are two parts to the software, the client, and the server.&lt;/p&gt;

&lt;h3&gt;
  
  
  Software Engineering
&lt;/h3&gt;

&lt;p&gt;Let's take an iPhone app, for example. What you download in the app store is what is known as the "client software". This is the version of the app built to talk to the server. It doesn't store any of the server's data locally. It is just set up to make the appropriate server calls when necessary.&lt;/p&gt;

&lt;p&gt;The other part of this is, of course, the "server software". This is the software that is installed onto a server to receive the requests from the client. The server holds and updates the data. It also processes requests and sends the data to the clients. Servers have to be tuned correctly, as there can be a near unlimited number of clients requesting information.&lt;/p&gt;

&lt;p&gt;This is a great pattern for accessing and updating a single repository of information. It's great for keeping track of accounts and regulating which data is given automatically.&lt;/p&gt;

&lt;h2&gt;
  
  
  📌 Master-Slave
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;master-slave&lt;/strong&gt; pattern consists of two elements, the master, and the slave. The master is in full control of all slaves associated with it. This is good for a multitude of different applications.&lt;/p&gt;

&lt;h3&gt;
  
  
  Software Engineering
&lt;/h3&gt;

&lt;p&gt;One such application is with duplicate backup servers. You don't want these backup servers all acting independently of one another. This will create a bunch of different states of memory. Each server will have a different set of data. Instead, you have a master server, which is the main server of operation.&lt;/p&gt;

&lt;p&gt;The master server is the one dealing with all of the normal day-to-day operations. Then at some point during the day, it sends a signal out to all of the slave servers to tell them to begin their backup operation. The slave servers all start up, copy the data from the master server, and then go back to sleep.&lt;/p&gt;

&lt;p&gt;This pattern is also used with "multi-threading". Here we break up an operation into a bunch of small parts. Each of those parts is given a thread and fed through the CPU. If a CPU has multiple cores, it can process multiple threads at the same time.&lt;/p&gt;

&lt;p&gt;We typically have a master thread that controls the creation and tracking of all slave threads. The slaves do exactly what the master thread has told them. The master thread keeps reassessing the situation both creating and deleting slave threads. Once the operation is finished, the master thread ceases as well.&lt;/p&gt;

&lt;h2&gt;
  
  
  📌 Layered Pattern
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;layered pattern&lt;/strong&gt; consists of divvying up the program into layers of technology. These layers only communicate with adjacent layers. Let's say we have an architecture with 9 layers. In this model, 8 would only be able to communicate with 9 and 7, 4 with 3 and 5, etc.&lt;/p&gt;

&lt;h3&gt;
  
  
  Software Engineering
&lt;/h3&gt;

&lt;p&gt;This simplifies the communication channels and helps to better distinguish the areas of the program. Overall, this helps to make the program more maintainable. The downside to this is that there can be added complexity in some areas. For example, if you need to send a message from layer 1 to layer 9, there will have to be a function in each layer to pass that message along.&lt;/p&gt;

&lt;h1&gt;
  
  
  🟢 Architecture Conclusion
&lt;/h1&gt;

&lt;p&gt;There is no one-size-fits-all plan when it comes to software development. The process must be taken on a case-to-case basis. Us, as engineers, seek to find the best pattern or set of patterns that solve the problem.&lt;/p&gt;

&lt;p&gt;This process is an iterative one. We come up with an idea, get feedback, rework it, and repeat the process many times. After a series of iterations, we have the architecture that will work best for the problem.&lt;/p&gt;

&lt;h1&gt;
  
  
  Design: Modularity🔽
&lt;/h1&gt;

&lt;p&gt;The design is where we really plan out our system. We can go as detailed as possible in this step.&lt;/p&gt;

&lt;p&gt;The main focus here is to break up the project into subsystems and modules.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Subsystem:&lt;/strong&gt; Independent system that holds independent value.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Module:&lt;/strong&gt; Component of a subsystem that cannot function as a standalone.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We should slowly refine and reorganize the systems and sub-modules until they make the most sense.&lt;/p&gt;

&lt;h3&gt;
  
  
  Software Engineering
&lt;/h3&gt;

&lt;p&gt;Design is two things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Activity:&lt;/strong&gt; Working to design the software.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Product:&lt;/strong&gt; A document or set of documents detailing the design of the software.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Information Hiding -&lt;/strong&gt; Hiding the complexity of the program inside of a "black box".&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Data Encapsulation -&lt;/strong&gt; Hiding the implementation details from the user, providing only an interface.&lt;/p&gt;

&lt;p&gt;Both of these work to hide the implementation details and protect the integrity of the data. We want to control the flow of data and provide the user with an easy-to-use experience.&lt;/p&gt;

&lt;p&gt;With these ideas, we can take the most complex of code and make it accessible to anyone. Doing this at each step in the design process also helps make the code easier to maintain.&lt;/p&gt;

&lt;p&gt;With it implemented properly, we don't need to know the entire codebase to make a change. We only need to know the part of the program we are working on. The encapsulation of all the other levels of the program makes things easy to test and change.&lt;/p&gt;

&lt;h1&gt;
  
  
  🟢 Goals of Modularity
&lt;/h1&gt;

&lt;p&gt;1) &lt;strong&gt;Abstraction&lt;/strong&gt;&lt;br&gt;
2) &lt;strong&gt;Composability&lt;/strong&gt;&lt;br&gt;
3) &lt;strong&gt;Decomposability&lt;/strong&gt;&lt;br&gt;
4) &lt;strong&gt;Protectibility&lt;/strong&gt;&lt;br&gt;
5) &lt;strong&gt;Continuity&lt;/strong&gt;&lt;br&gt;
6) &lt;strong&gt;Module understandability&lt;/strong&gt;&lt;/p&gt;
&lt;h1&gt;
  
  
  🟢 Coupling Introduction
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Coupling&lt;/strong&gt; is one of the major things to look at when designing the modularity of the system. It details how dependent each module is on every other module. A set of modules with tight coupling is bad design. It creates hard-to-maintain code.&lt;/p&gt;

&lt;p&gt;We don't want our modules to be dependent on one another. We want to be able to swap one module out with another and only have to update code in the swapped module. The more dependent our program is, the more and more modules we will have to rewrite for every change.&lt;/p&gt;
&lt;h2&gt;
  
  
  📌 Tight Coupling
&lt;/h2&gt;

&lt;p&gt;This is the worst form of coupling. Tight coupling means there is a strong dependence between modules. Changes will be very hard to make, and bugs will be difficult to track down.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Content Coupling:&lt;/strong&gt; When one module modifies or relies on the internal working of another module.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Common Coupling:&lt;/strong&gt; When several modules have access to the same global data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;External Coupling:&lt;/strong&gt; When several modules have direct access to the same external Input/Output.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  📌 Medium Coupling
&lt;/h2&gt;

&lt;p&gt;Here the coupling is getting better, but we still have room for improvement.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Control Coupling:&lt;/strong&gt; This is when data is passed that influences the internal logic of another module.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data Structure Coupling:&lt;/strong&gt; This is when multiple modules share the same data-structure.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  📌 Loose Coupling
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Data Coupling:&lt;/strong&gt; This is when two modules share the same data. This is a good form of coupling.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Message Coupling:&lt;/strong&gt; This coupling is when messages or commands are passed between modules.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No Coupling:&lt;/strong&gt; No communication between modules whatsoever.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;
  
  
  🟢 Cohesion Introduction
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Cohesion&lt;/strong&gt; is the other area to focus on when we are talking about modularity. Cohesion is the measurement of how focused our module is on a single task. The more focused the module, the higher the cohesion.&lt;/p&gt;

&lt;p&gt;With cohesion, higher is better. We want modules that only do one thing and one thing only. The reason for this is with maintainability.&lt;/p&gt;

&lt;p&gt;What we want to find is the point where we can maximize the effects of both. We want to create loose coupling and high cohesion.&lt;/p&gt;
&lt;h2&gt;
  
  
  📌 Weak Cohesion
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Coincidental Cohesion:&lt;/strong&gt; The tasks within the module are only linked because they are in the same module. This is the weakest form of cohesion. Here, the modules are completely random. There is nothing linking the tasks within a module, except the fact that they were simply put into the same file.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Temporal Cohesion:&lt;/strong&gt; The tasks within the module are only linked because events happen around the same time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Logical Cohesion:&lt;/strong&gt; The tasks within the module are linked due to being in the same general category.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  📌 Medium Cohesion
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Procedural Cohesion:&lt;/strong&gt; The order of execution passes from one command to the next. Here we have a relationship of time. This is different from temporal because the tasks are both linked and essential for one another. There is an order by which these must be executed to work properly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Communicational Cohesion:&lt;/strong&gt; When all tasks support the same input and output data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sequential Cohesion:&lt;/strong&gt; A combination of the previous two. When all tasks work in which the output data for one is the input data for the next. With this, we have a procedure of tasks, and these tasks all share the same data.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  📌 Strong Cohesion
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Functional Cohesion:&lt;/strong&gt; This is when all tasks within a module support activities needed for one and only one problem-related task. In essence, the module only does a single action.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Object Cohesion:&lt;/strong&gt; This can either be lumped in with functional cohesion or by itself. Object cohesion is when all activities modify a single object.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This only works in object-oriented languages. An example might be a module that only modifies a user object. All tasks within this module update the user module in some way.&lt;/p&gt;
&lt;h1&gt;
  
  
  🟢 Cohesion Conclusion
&lt;/h1&gt;

&lt;p&gt;Cohesion is really important to make code that is easy to understand and maintain. The more focused the modules, the easier the code will be to debug.&lt;/p&gt;

&lt;p&gt;Remember, however, that this must be a balance with coupling. A group of extremely cohesive modules might also be tightly coupled together. We are looking for the balance between the two. If you remember one thing from these sections, it's that we want "loose coupling and strong cohesion".&lt;/p&gt;
&lt;h1&gt;
  
  
  Implementation &amp;amp; Deployment🔽
&lt;/h1&gt;

&lt;p&gt;Good design allows us to see our entire project before it is built. With this, we can decide which areas we want to build and which areas we want to purchase. The great thing about purchasing code is that it is almost always cheaper.&lt;/p&gt;

&lt;p&gt;It's almost always a win-win situation to purchase instead of build. Coding, however, is usually very specific. This makes it rare to find software that perfectly fits the problem. However, do some research before you begin building; you can save a lot of money.&lt;/p&gt;
&lt;h2&gt;
  
  
  🟢 Take Care of Programmers
&lt;/h2&gt;

&lt;p&gt;Implementation is where most time is spent and where a lot of time can be lost.&lt;br&gt;
Always program while alert and focused.&lt;br&gt;
35 hours of programming can be just as productive as 70.&lt;br&gt;
Programming takes focus; constant interruptions will reduce overall focus.&lt;/p&gt;
&lt;h2&gt;
  
  
  🟢 Coding Principles
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Use a style guide so all the code looks relatively the same.&lt;/li&gt;
&lt;li&gt;Code is written for people, not for computers.&lt;/li&gt;
&lt;li&gt;Make modules easy to understand.&lt;/li&gt;
&lt;li&gt;Go into everything with a plan.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  🟢 Deployment Introduction
&lt;/h2&gt;

&lt;p&gt;Deployment is a mix between testing and implementation; it mostly happens after testing but it requires implementations too.&lt;/p&gt;

&lt;p&gt;The level of planning in this space is directly related to how the deployment affects the overall project.&lt;/p&gt;

&lt;p&gt;Deployment should be built with the idea of retreat. If something goes wrong, how can we revert?&lt;/p&gt;
&lt;h2&gt;
  
  
  🟢 Deployment Planning
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Amount of planning is dependent on the size of change.&lt;/li&gt;
&lt;li&gt;We look at which areas which most likely have the biggest problems.&lt;/li&gt;
&lt;li&gt;Areas to look at:

&lt;ul&gt;
&lt;li&gt;Database&lt;/li&gt;
&lt;li&gt;Software Integration&lt;/li&gt;
&lt;li&gt;Runtime changes&lt;/li&gt;
&lt;li&gt;Training&lt;/li&gt;
&lt;li&gt;Downtimes&lt;/li&gt;
&lt;li&gt;Backups&lt;/li&gt;
&lt;li&gt;Network&lt;/li&gt;
&lt;li&gt;Memory&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Finally, we need to look at planning steps to turn back.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  🟢 Deployment Rollback
&lt;/h2&gt;

&lt;p&gt;Rollback is the act of reverting a system back to the previous working state.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Look for a point of no return.

&lt;ul&gt;
&lt;li&gt;This is a point where it takes longer to go back than it does to just continue through.&lt;/li&gt;
&lt;li&gt;Knowing this will help make a decision during deployment.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Every step of the deployment process makes a decision whether rollback is a better option.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;
  
  
  Testing Overview🔽
&lt;/h1&gt;

&lt;p&gt;Testing is the process of finding errors. These errors can either be failures within the code, or they can be failures to meet requirements. If the app doesn't do what it was set out to do, then that is a problem. In testing, we work to make sure the program works for all requirements.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Test Data:&lt;/strong&gt; Inputs that are designed to test the system.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test Cases:&lt;/strong&gt; Ways in which we operate the system with the given data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Oracle:&lt;/strong&gt; The set of "good" outcomes.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;
  
  
  🟢 Bugs
&lt;/h1&gt;

&lt;p&gt;Bugs are, in essence, a deviation from expected behavior. For example, if you have a website, a potential bug might be that the website doesn't load. The code fatally breaks during loading and results in a lack of the service. This is, of course, a deviation from the expected behavior of being able to access the website.&lt;/p&gt;

&lt;p&gt;Another bug could be if the website logged you into someone else's account by mistake. The website in this scenario is still up and functioning. However, a deviation from expected behavior, only being able to access your own account, has happened.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Failure:&lt;/strong&gt; The event by which the code deviates from expected behavior.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Error:&lt;/strong&gt; The part of the code that leads to the failure.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fault:&lt;/strong&gt; What the outcome actually was.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Testing can be used to show the presence of bugs but never to ensure the absence of them. This is because the only way to ensure this would be to test EVERY single possible test case. This could easily be in the billions to trillions for a typical system. This would be nearly impossible to do. The cost of testing alone could far exceed that of the entire rest of development times 10.&lt;/p&gt;

&lt;p&gt;So what we do instead is try to do the smallest set of test cases to cover the greatest amount of ground. We use a mixture of different testing practices to accomplish this task. There will always be bugs, but we can actively remove most of them if we are smart.&lt;/p&gt;
&lt;h2&gt;
  
  
  🟢 Verification and Validation
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Verification:&lt;/strong&gt; Are we building the thing right? Does the software work compared to the given specifications.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Validation:&lt;/strong&gt; Are we building the right thing? Does the software work compared to what the user/client needs?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A way of violating verification would be if the program accesses the wrong database. In this situation, we are not building the system correctly. It is deviating from expected behavior.&lt;/p&gt;

&lt;p&gt;A way of violating validation would be if the program calculates car payments, instead of house payments. Our car payment calculator could be the most stable calculator in the world. However, we were supposed to build a house payment calculator. We are not building the right system. We are building a system that solves problems that it was not designed to solve. (And conversely doesn't solve problems that it was designed to solve.)&lt;/p&gt;

&lt;p&gt;A more real-world example of this would be if a company has a really specific way of collecting information, and we designed a system that collects that information differently. All of the same information has been collected, but not in the right way. We aren't building the correct system.&lt;/p&gt;

&lt;p&gt;Knowing and testing both of these are important to delivering high-quality software!&lt;/p&gt;
&lt;h2&gt;
  
  
  🟢 Testing
&lt;/h2&gt;
&lt;h3&gt;
  
  
  📌 Unit Testing
&lt;/h3&gt;

&lt;p&gt;Unit testing to focus on the smallest unit of software. We are trying to isolate different areas, repeating until we test every module of the program. In this, we take a module, and we give it test cases. We then check these test cases against the oracle.&lt;/p&gt;

&lt;p&gt;Overall, we are trying to make sure that the modules are doing what they were designed to do. We don't want to have bugs from other modules ruin the module we are testing. So for unit tests, we typically supply dummy values to isolate the module. This way, we know if a bug is happening, it's happening from the area we are testing.&lt;/p&gt;
&lt;h3&gt;
  
  
  📌 Integration Testing
&lt;/h3&gt;

&lt;p&gt;Integration testing is the next step. Once we are satisfied that the modules are all working how we want them, we need to begin testing them together. With integration testing, we begin testing the architecture and the communication as a whole.&lt;/p&gt;

&lt;p&gt;Where in unit testing we came up with test cases for individual modules, with integration testing, we will come up with test cases for groups of modules. For example, we might want to test an entire form, instead of just testing each box within the form.&lt;/p&gt;
&lt;h3&gt;
  
  
  📌 Incremental Testing
&lt;/h3&gt;

&lt;p&gt;One of the issues with integration testing is that if a bug arises, it can be difficult to tell exactly what module introduced that bug. Incremental testing is one way of making this process easier.&lt;/p&gt;

&lt;p&gt;With incremental testing, we slowly add one module after the next into the testing environment. This way, if a bug arises, we know which module caused the bugs to be introduced.&lt;/p&gt;
&lt;h3&gt;
  
  
  📌 Top-Down Testing
&lt;/h3&gt;

&lt;p&gt;With Top-Down Testing, we begin testing at the highest possible level and then work our way down. To have this work, we need to have a set of dummy modules that we slowly replace with regular modules.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Stub:&lt;/strong&gt; A template of the model that will be implemented. Typically returns hard-coded values.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A stub is typically used for this. It's a module that doesn't have any logic in it. All it has are functions that return hard-coded values. Hard-coded here means nothing that was calculated, just values that we put in there. So for example, a stub might have a function "getUser(int 45)". Instead of going through and finding information about a user, it just returns a user object that we have hard-coded into it.&lt;/p&gt;

&lt;p&gt;This way, we can test our module's ability to use the user information without having to introduce another module. Once we test everything and make sure it works, we can then add in the actual module and do our next round of testing.&lt;/p&gt;
&lt;h3&gt;
  
  
  📌 Bottom-Up Testing
&lt;/h3&gt;

&lt;p&gt;Bottom-Up Testing is the opposite of Top-Down. Here we work from the bottom and use things called drivers to make our way upwards.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Driver:&lt;/strong&gt; Templates which execute commands and initialize the needed variables.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When we work from bottom up, we need the logic which calls our bottom modules. For example, if our module is the module with getUser() in it, then we need to figure out a way to properly test this. What we right is a driver, which initializes the variables and then makes multiple calls to the functions we need it to.&lt;/p&gt;

&lt;p&gt;So in this situation, the driver might call getUser() 1,000,000 times with random values. We would then look at the results to see if the function is working the way we want it. Once we are satisfied, we add another layer and keep going.&lt;/p&gt;
&lt;h3&gt;
  
  
  📌 Back to Back Testing
&lt;/h3&gt;

&lt;p&gt;Back to Back testing is good to do when you already have a working program. With this, we run a set of tests on the system before we make a change. We then make a change, by either updating, adding, or deleting a module. We then run the same set of tests.&lt;/p&gt;

&lt;p&gt;We now have two sets of data. The before and the after. We compare these two sets to make sure that there are no differences. If there is a difference, we know the change did more than we like. We can then revert or go fix the bug.&lt;/p&gt;
&lt;h3&gt;
  
  
  📌 Manual vs Automatic Testing
&lt;/h3&gt;

&lt;p&gt;There are two different ways we can set up tests. We can do it manually, where we enter values ourselves, or automatically, where we set up another system to do the test.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Automatic&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Both of these have their own merits. Automatic testing is nice because we can cover a much larger area than manual testing. We can set up a system and have it test millions of test cases. Once we set it up, we can run it every time we change our code, guaranteeing we didn't break anything with a new update.&lt;/p&gt;

&lt;p&gt;This all, however, comes with a lot more overhead. The testing system is a system itself. This means more planning and development time. On top of this, we will have to design tests which can be done from the computer and provide oracles to check their data. If we are testing out millions of test cases, the oracle will most likely have to be a complex algorithm.&lt;/p&gt;

&lt;p&gt;There also comes the issue of testing the tester. What if our tester is designed incorrectly and it gives us false positives or negatives? We then spend unnecessary time chasing down phantom bugs or deploy bad software.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Manual&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Manual testing involves a human being testing the code. They user goes in expecting to do an action. They then test to see if there is expected behavior. Bugs are noted down, and then given to developers.&lt;/p&gt;

&lt;p&gt;These testers can be developers, stakeholders, or specially trained testers. They can more easily come up with oracles and perform a wide range of tests.&lt;/p&gt;

&lt;p&gt;However, humans are very slow when compared to a computer. They can only test so much of a system. Often times, this means many parts of the system don't get properly tested.&lt;/p&gt;
&lt;h2&gt;
  
  
  Overall
&lt;/h2&gt;

&lt;p&gt;The best way to test is to combine these two. Have a good set of automatic tests and a good set of testers. This will allow the speed of automatic, and the ease and flexibility of manual.&lt;/p&gt;
&lt;h3&gt;
  
  
  📌 Black Box vs White Box Testing
&lt;/h3&gt;

&lt;p&gt;Depending on who tests can also have a large difference on testing. In the testing world, there is this idea of "white box" and "black box" testing.&lt;/p&gt;

&lt;p&gt;With black box testing, we are testing the device based on what it is supposed to do. This is what most users will do when they get the software. They will try to perform all the actions they want. Test all of the expected behavior and make sure the program is working for them. If a bug arises, it will typically be because of a failure to meet the requirements of the program.&lt;/p&gt;

&lt;p&gt;With white box testing, we are testing the system on the inside. This is where our automatic testing comes in. We test all different angles and aspects of the program to make sure it works. Here we are looking to test different combinations of different situations. For example, with a program that calculates house payments, we will want to test multiple interest rates, home prices, etc.&lt;/p&gt;

&lt;p&gt;This is the technical side of things. This allows us to test all different sides of the system.&lt;/p&gt;
&lt;h1&gt;
  
  
  Software Maintenance🔽
&lt;/h1&gt;

&lt;p&gt;Software Maintenance is the process of modifying the software after it has been delivered. In essence, it's the time after the honeymoon. This is the longest and most expensive part of the life of the software.&lt;/p&gt;

&lt;p&gt;The majority of maintenance is usually spent fixing bugs.&lt;/p&gt;
&lt;h1&gt;
  
  
  🟢 Types of Maintenance
&lt;/h1&gt;

&lt;p&gt;There are three types of maintenance:&lt;/p&gt;
&lt;h2&gt;
  
  
  📌 Corrective Maintenance
&lt;/h2&gt;

&lt;p&gt;Corrective maintenance is where we go in and fix bugs. We fix the code, so it does what it was supposed to do in the first place. This type of maintenance is a reaction to the unexpected issues that arise during use. It typically consumes a large portion of maintenance budgets.&lt;/p&gt;
&lt;h2&gt;
  
  
  📌 Adaptive Maintenance
&lt;/h2&gt;

&lt;p&gt;Adaptive maintenance is where we change the software to handle a change in the environment. This is when something in the environment changes, and we need to change our software to accommodate that.&lt;/p&gt;

&lt;p&gt;For example, let's say we are building an application that uses the Facebook API. Facebook changes their API. Now our software is no longer functioning correctly because Facebook changed. Adaptive maintenance is the process of going into our software and making sure it works again.&lt;/p&gt;
&lt;h2&gt;
  
  
  📌 Perfective Maintenance
&lt;/h2&gt;

&lt;p&gt;Perfective maintenance is where we go in and add functionality to the system. We don't fix anything, and we don't change the system to handle a new environment. Instead, we go in and make the system better.&lt;/p&gt;

&lt;p&gt;For example, we have a program that calculates house payments. We might add functionality that lets us calculate car payments as well. This is now additional functionality that we have added. This is now what we will be doing the majority of the time. A well-crafted program should be able to be easily maintained and expanded in the future.&lt;/p&gt;
&lt;h1&gt;
  
  
  🟢 Version Control Systems
&lt;/h1&gt;

&lt;p&gt;Version control is the means by which we track changes in our codebase over time. It's a record of all the changes we have made and is stored in a way to allow us to see exactly how we got to where we are today.&lt;/p&gt;
&lt;h2&gt;
  
  
  📌 Why Do We Use It?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Version control is important because it allows us to do a few things:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Revert to Old Versions:&lt;/strong&gt; If we ever make a mistake, we can revert back to an old version of the code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Branching:&lt;/strong&gt; We can split off from the main version of the code to add a feature or try something new.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Collaboration:&lt;/strong&gt; Multiple people can be working on the same code at the same time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;History:&lt;/strong&gt; Every change is recorded, along with who made the change and why.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  📌 Basic Concepts
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Repository:&lt;/strong&gt; This is the record of all of the different versions of the code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Commit:&lt;/strong&gt; This is when a user decides that they want to record the changes that have been made to the code. This is like a save point in a game.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Branch:&lt;/strong&gt; A separate path of the code that isn't the main version.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Merge:&lt;/strong&gt; When you take the changes that you have made in a separate branch and add them to the main branch.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pull Request:&lt;/strong&gt; This is when you have made a branch, made changes, and then asked for those changes to be merged into the main version of the code.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;
  
  
  🟢 Conclusion
&lt;/h1&gt;

&lt;p&gt;We've covered a lot of ground in this guide, from the fundamentals of software engineering to various architecture patterns, design principles, and the importance of modularity, coupling, cohesion, implementation, deployment, testing, and software maintenance. Additionally, we explored version control systems as a crucial tool for managing code changes and collaboration.&lt;/p&gt;

&lt;p&gt;Remember, software engineering is an ever-evolving field, and staying curious, open to learning, and adaptable will serve you well in navigating the dynamic landscape of technology. Whether you are a seasoned developer or just starting on your software engineering journey, continue to explore, experiment, and build as you contribute to the exciting world of software development.&lt;/p&gt;
&lt;h3&gt;
  
  
  My Other Blogs
&lt;/h3&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="/ankushsinghgandhi" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media.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%2F471579%2F0b120e45-d3a5-4605-88c5-d2eaecc00966.jpg" alt="ankushsinghgandhi"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/ankushsinghgandhi/steps-to-master-python-1p06" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Complete Python Roadmap 2023&lt;/h2&gt;
      &lt;h3&gt;Ankush Singh Gandhi ・ Sep 27 '20&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#python&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#showdev&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#beginners&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#tutorial&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;div class="ltag__link"&gt;
  &lt;a href="/ankushsinghgandhi" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media.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%2F471579%2F0b120e45-d3a5-4605-88c5-d2eaecc00966.jpg" alt="ankushsinghgandhi"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/ankushsinghgandhi/markdown-cheat-sheet-1il5" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Markdown Cheat Sheet&lt;/h2&gt;
      &lt;h3&gt;Ankush Singh Gandhi ・ Oct 3 '20&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#showdev&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#github&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#beginners&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#git&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;div class="ltag__link"&gt;
  &lt;a href="/ankushsinghgandhi" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media.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%2F471579%2F0b120e45-d3a5-4605-88c5-d2eaecc00966.jpg" alt="ankushsinghgandhi"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/ankushsinghgandhi/git-github-cheat-sheet-71b" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Git &amp;amp; Github Cheat Sheet 2022&lt;/h2&gt;
      &lt;h3&gt;Ankush Singh Gandhi ・ Oct 8 '20&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#github&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#git&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#showdev&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#opensource&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>computerscience</category>
      <category>siliconvalley</category>
      <category>beginners</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
